summaryrefslogtreecommitdiffstats
path: root/taskcluster
diff options
context:
space:
mode:
Diffstat (limited to 'taskcluster')
-rw-r--r--taskcluster/.yamllint15
-rw-r--r--taskcluster/ci/addon/kind.yml37
-rw-r--r--taskcluster/ci/are-we-esmified-yet/kind.yml42
-rw-r--r--taskcluster/ci/artifact-build/kind.yml54
-rw-r--r--taskcluster/ci/attribution-l10n/kind.yml130
-rw-r--r--taskcluster/ci/attribution/kind.yml125
-rw-r--r--taskcluster/ci/balrog/kind.yml31
-rw-r--r--taskcluster/ci/beetmover-apt/kind.yml26
-rw-r--r--taskcluster/ci/beetmover-checksums/kind.yml26
-rw-r--r--taskcluster/ci/beetmover-geckoview/kind.yml64
-rw-r--r--taskcluster/ci/beetmover-repackage/kind.yml67
-rw-r--r--taskcluster/ci/beetmover-source/kind.yml19
-rw-r--r--taskcluster/ci/bootstrap/kind.yml80
-rw-r--r--taskcluster/ci/bouncer-locations/kind.yml52
-rw-r--r--taskcluster/ci/build-fat-aar/kind.yml167
-rw-r--r--taskcluster/ci/build-mac-notarization/kind.yml29
-rw-r--r--taskcluster/ci/build-mac-signing/kind.yml28
-rw-r--r--taskcluster/ci/build-signing/kind.yml33
-rw-r--r--taskcluster/ci/build/android-asan.yml75
-rw-r--r--taskcluster/ci/build/android-stuff.yml53
-rw-r--r--taskcluster/ci/build/android.yml641
-rw-r--r--taskcluster/ci/build/kind.yml85
-rw-r--r--taskcluster/ci/build/linux-base-toolchains.yml160
-rw-r--r--taskcluster/ci/build/linux.yml1744
-rw-r--r--taskcluster/ci/build/macosx-native.yml145
-rw-r--r--taskcluster/ci/build/macosx.yml829
-rw-r--r--taskcluster/ci/build/windows-mingw.yml174
-rw-r--r--taskcluster/ci/build/windows.yml1831
-rw-r--r--taskcluster/ci/code-review/kind.yml41
-rw-r--r--taskcluster/ci/condprof/kind.yml135
-rw-r--r--taskcluster/ci/config.yml743
-rw-r--r--taskcluster/ci/cron-bouncer-check/kind.yml82
-rw-r--r--taskcluster/ci/diffoscope/kind.yml122
-rw-r--r--taskcluster/ci/docker-image/kind.yml215
-rw-r--r--taskcluster/ci/fetch/benchmarks.yml19
-rw-r--r--taskcluster/ci/fetch/browsertime.yml197
-rw-r--r--taskcluster/ci/fetch/chromium-fetch.yml32
-rw-r--r--taskcluster/ci/fetch/kind.yml20
-rw-r--r--taskcluster/ci/fetch/moz.build8
-rw-r--r--taskcluster/ci/fetch/resource-monitor.yml10
-rw-r--r--taskcluster/ci/fetch/toolchain-clang-tidy-external.yml13
-rw-r--r--taskcluster/ci/fetch/toolchains.yml635
-rw-r--r--taskcluster/ci/fetch/updatebot.yml33
-rw-r--r--taskcluster/ci/fuzzing/kind.yml65
-rw-r--r--taskcluster/ci/fxrecord/kind.yml42
-rw-r--r--taskcluster/ci/geckodriver-mac-notarization/kind.yml33
-rw-r--r--taskcluster/ci/geckodriver-signing/kind.yml16
-rw-r--r--taskcluster/ci/generate-profile/kind.yml251
-rw-r--r--taskcluster/ci/github-sync/kind.yml53
-rw-r--r--taskcluster/ci/hazard/kind.yml82
-rw-r--r--taskcluster/ci/instrumented-build/kind.yml319
-rw-r--r--taskcluster/ci/l10n-bump/kind.yml131
-rw-r--r--taskcluster/ci/l10n-cross-channel/kind.yml41
-rw-r--r--taskcluster/ci/l10n/kind.yml145
-rw-r--r--taskcluster/ci/mar-signing-autograph-stage/kind.yml30
-rw-r--r--taskcluster/ci/mar-signing-l10n/kind.yml35
-rw-r--r--taskcluster/ci/mar-signing/kind.yml36
-rw-r--r--taskcluster/ci/maybe-release/kind.yml48
-rw-r--r--taskcluster/ci/merge-automation/kind.yml72
-rw-r--r--taskcluster/ci/openh264-plugin/kind.yml225
-rw-r--r--taskcluster/ci/openh264-signing/kind.yml13
-rw-r--r--taskcluster/ci/packages/debian.yml136
-rw-r--r--taskcluster/ci/packages/kind.yml25
-rw-r--r--taskcluster/ci/packages/ubuntu.yml100
-rw-r--r--taskcluster/ci/partials-signing/kind.yml20
-rw-r--r--taskcluster/ci/partials/kind.yml35
-rw-r--r--taskcluster/ci/perftest/android.yml543
-rw-r--r--taskcluster/ci/perftest/kind.yml43
-rw-r--r--taskcluster/ci/perftest/linux.yml349
-rw-r--r--taskcluster/ci/perftest/macosx.yml251
-rw-r--r--taskcluster/ci/perftest/windows.yml200
-rw-r--r--taskcluster/ci/post-balrog-dummy/kind.yml21
-rw-r--r--taskcluster/ci/post-beetmover-checksums-dummy/kind.yml35
-rw-r--r--taskcluster/ci/post-beetmover-dummy/kind.yml22
-rw-r--r--taskcluster/ci/post-langpack-dummy/kind.yml33
-rw-r--r--taskcluster/ci/post-update-verify-dummy/kind.yml21
-rw-r--r--taskcluster/ci/release-balrog-scheduling/kind.yml94
-rw-r--r--taskcluster/ci/release-balrog-submit-toplevel/kind.yml80
-rw-r--r--taskcluster/ci/release-beetmover-push-to-release/kind.yml33
-rw-r--r--taskcluster/ci/release-beetmover-signed-langpacks-checksums/kind.yml19
-rw-r--r--taskcluster/ci/release-beetmover-signed-langpacks/kind.yml36
-rw-r--r--taskcluster/ci/release-beetmover-source-checksums/kind.yml19
-rw-r--r--taskcluster/ci/release-bouncer-aliases/kind.yml95
-rw-r--r--taskcluster/ci/release-bouncer-check/kind.yml76
-rw-r--r--taskcluster/ci/release-bouncer-sub/kind.yml58
-rw-r--r--taskcluster/ci/release-early-tagging/kind.yml46
-rw-r--r--taskcluster/ci/release-eme-free-repack-beetmover-checksums/kind.yml21
-rw-r--r--taskcluster/ci/release-eme-free-repack-beetmover/kind.yml27
-rw-r--r--taskcluster/ci/release-eme-free-repack-mac-notarization/kind.yml26
-rw-r--r--taskcluster/ci/release-eme-free-repack-mac-signing/kind.yml25
-rw-r--r--taskcluster/ci/release-eme-free-repack-repackage-signing/kind.yml18
-rw-r--r--taskcluster/ci/release-eme-free-repack-repackage/kind.yml56
-rw-r--r--taskcluster/ci/release-eme-free-repack/kind.yml81
-rw-r--r--taskcluster/ci/release-final-verify/kind.yml47
-rw-r--r--taskcluster/ci/release-flatpak-push/kind.yml41
-rw-r--r--taskcluster/ci/release-flatpak-repackage/kind.yml66
-rw-r--r--taskcluster/ci/release-generate-checksums-beetmover/kind.yml17
-rw-r--r--taskcluster/ci/release-generate-checksums-signing/kind.yml15
-rw-r--r--taskcluster/ci/release-generate-checksums/kind.yml86
-rw-r--r--taskcluster/ci/release-mark-as-shipped/kind.yml43
-rw-r--r--taskcluster/ci/release-msix-push/kind.yml45
-rw-r--r--taskcluster/ci/release-notify-av-announce/kind.yml42
-rw-r--r--taskcluster/ci/release-notify-promote/kind.yml38
-rw-r--r--taskcluster/ci/release-notify-push/kind.yml36
-rw-r--r--taskcluster/ci/release-notify-ship/kind.yml43
-rw-r--r--taskcluster/ci/release-notify-started/kind.yml32
-rw-r--r--taskcluster/ci/release-partner-attribution-beetmover/kind.yml23
-rw-r--r--taskcluster/ci/release-partner-attribution/kind.yml40
-rw-r--r--taskcluster/ci/release-partner-repack-beetmover/kind.yml31
-rw-r--r--taskcluster/ci/release-partner-repack-bouncer-sub/kind.yml41
-rw-r--r--taskcluster/ci/release-partner-repack-chunking-dummy/kind.yml36
-rw-r--r--taskcluster/ci/release-partner-repack-mac-notarization/kind.yml26
-rw-r--r--taskcluster/ci/release-partner-repack-mac-signing/kind.yml25
-rw-r--r--taskcluster/ci/release-partner-repack-repackage-signing/kind.yml23
-rw-r--r--taskcluster/ci/release-partner-repack-repackage/kind.yml57
-rw-r--r--taskcluster/ci/release-partner-repack/kind.yml87
-rw-r--r--taskcluster/ci/release-push-langpacks/kind.yml50
-rw-r--r--taskcluster/ci/release-secondary-balrog-scheduling/kind.yml41
-rw-r--r--taskcluster/ci/release-secondary-balrog-submit-toplevel/kind.yml46
-rw-r--r--taskcluster/ci/release-secondary-final-verify/kind.yml38
-rw-r--r--taskcluster/ci/release-secondary-flatpak-push/kind.yml37
-rw-r--r--taskcluster/ci/release-secondary-notify-ship/kind.yml36
-rw-r--r--taskcluster/ci/release-secondary-update-verify-config/kind.yml124
-rw-r--r--taskcluster/ci/release-secondary-update-verify/kind.yml77
-rw-r--r--taskcluster/ci/release-snap-repackage/kind.yml60
-rw-r--r--taskcluster/ci/release-source-checksums-signing/kind.yml16
-rw-r--r--taskcluster/ci/release-source-signing/kind.yml17
-rw-r--r--taskcluster/ci/release-source/kind.yml54
-rw-r--r--taskcluster/ci/release-update-verify-config-next/kind.yml98
-rw-r--r--taskcluster/ci/release-update-verify-config/kind.yml292
-rw-r--r--taskcluster/ci/release-update-verify-next/kind.yml73
-rw-r--r--taskcluster/ci/release-update-verify/kind.yml115
-rw-r--r--taskcluster/ci/release-version-bump/kind.yml59
-rw-r--r--taskcluster/ci/repackage-deb-l10n/kind.yml39
-rw-r--r--taskcluster/ci/repackage-deb/kind.yml49
-rw-r--r--taskcluster/ci/repackage-l10n/kind.yml78
-rw-r--r--taskcluster/ci/repackage-msi/kind.yml45
-rw-r--r--taskcluster/ci/repackage-msix/kind.yml105
-rw-r--r--taskcluster/ci/repackage-shippable-l10n-msix/kind.yml106
-rw-r--r--taskcluster/ci/repackage-signing-l10n/kind.yml25
-rw-r--r--taskcluster/ci/repackage-signing-msi/kind.yml21
-rw-r--r--taskcluster/ci/repackage-signing-msix/kind.yml13
-rw-r--r--taskcluster/ci/repackage-signing-shippable-l10n-msix/kind.yml13
-rw-r--r--taskcluster/ci/repackage-signing/kind.yml23
-rw-r--r--taskcluster/ci/repackage/kind.yml90
-rw-r--r--taskcluster/ci/repo-update/kind.yml70
-rw-r--r--taskcluster/ci/scriptworker-canary/kind.yml33
-rw-r--r--taskcluster/ci/searchfox/kind.yml184
-rw-r--r--taskcluster/ci/sentry/kind.yml34
-rw-r--r--taskcluster/ci/shippable-l10n-mac-notarization/kind.yml26
-rw-r--r--taskcluster/ci/shippable-l10n-mac-signing/kind.yml28
-rw-r--r--taskcluster/ci/shippable-l10n-signing/kind.yml30
-rw-r--r--taskcluster/ci/shippable-l10n/kind.yml199
-rw-r--r--taskcluster/ci/source-test/clang.yml116
-rw-r--r--taskcluster/ci/source-test/cram.yml21
-rw-r--r--taskcluster/ci/source-test/doc.yml72
-rw-r--r--taskcluster/ci/source-test/file-metadata.yml123
-rw-r--r--taskcluster/ci/source-test/jsshell.yml87
-rw-r--r--taskcluster/ci/source-test/kind.yml40
-rw-r--r--taskcluster/ci/source-test/mozlint-android.yml106
-rw-r--r--taskcluster/ci/source-test/mozlint.yml574
-rw-r--r--taskcluster/ci/source-test/node.yml159
-rw-r--r--taskcluster/ci/source-test/puppeteer.yml52
-rw-r--r--taskcluster/ci/source-test/python.yml622
-rw-r--r--taskcluster/ci/source-test/shadow-scheduler.yml178
-rw-r--r--taskcluster/ci/source-test/taskgraph.yml37
-rw-r--r--taskcluster/ci/source-test/vendor.yml44
-rw-r--r--taskcluster/ci/source-test/webcompat.yml37
-rw-r--r--taskcluster/ci/source-test/webidl.yml24
-rw-r--r--taskcluster/ci/source-test/wpt-manifest.yml39
-rw-r--r--taskcluster/ci/source-test/wpt-metadata.yml58
-rw-r--r--taskcluster/ci/spidermonkey/kind.yml74
-rw-r--r--taskcluster/ci/spidermonkey/linux.yml543
-rw-r--r--taskcluster/ci/spidermonkey/windows.yml118
-rw-r--r--taskcluster/ci/startup-test/kind.yml128
-rw-r--r--taskcluster/ci/static-analysis-autotest/kind.yml101
-rw-r--r--taskcluster/ci/system-symbols-reprocess/kind.yml46
-rw-r--r--taskcluster/ci/system-symbols-upload/kind.yml31
-rw-r--r--taskcluster/ci/system-symbols/kind.yml248
-rw-r--r--taskcluster/ci/test/awsy.yml75
-rw-r--r--taskcluster/ci/test/browsertime-desktop.yml721
-rw-r--r--taskcluster/ci/test/browsertime-mobile.yml380
-rw-r--r--taskcluster/ci/test/compiled.yml138
-rw-r--r--taskcluster/ci/test/firefox-ui.yml30
-rw-r--r--taskcluster/ci/test/kind.yml82
-rw-r--r--taskcluster/ci/test/marionette.yml55
-rw-r--r--taskcluster/ci/test/misc.yml272
-rw-r--r--taskcluster/ci/test/mochitest.yml1090
-rw-r--r--taskcluster/ci/test/reftest.yml260
-rw-r--r--taskcluster/ci/test/talos.yml780
-rw-r--r--taskcluster/ci/test/test-platforms.yml464
-rw-r--r--taskcluster/ci/test/test-sets.yml479
-rw-r--r--taskcluster/ci/test/variants.yml290
-rw-r--r--taskcluster/ci/test/web-platform.yml494
-rw-r--r--taskcluster/ci/test/xpcshell.yml186
-rw-r--r--taskcluster/ci/toolchain/android.yml205
-rw-r--r--taskcluster/ci/toolchain/cargo-vet.yml61
-rw-r--r--taskcluster/ci/toolchain/cbindgen.yml65
-rw-r--r--taskcluster/ci/toolchain/clang-tidy.yml127
-rw-r--r--taskcluster/ci/toolchain/clang.yml903
-rw-r--r--taskcluster/ci/toolchain/compiler-rt.yml462
-rw-r--r--taskcluster/ci/toolchain/dist-toolchains.yml40
-rw-r--r--taskcluster/ci/toolchain/dump-syms.yml62
-rw-r--r--taskcluster/ci/toolchain/fix-stacks.yml72
-rw-r--r--taskcluster/ci/toolchain/gcc.yml79
-rw-r--r--taskcluster/ci/toolchain/geckodriver.yml137
-rw-r--r--taskcluster/ci/toolchain/gn.yml49
-rw-r--r--taskcluster/ci/toolchain/grcov.yml48
-rw-r--r--taskcluster/ci/toolchain/kind.yml54
-rw-r--r--taskcluster/ci/toolchain/libunwind.yml171
-rw-r--r--taskcluster/ci/toolchain/llvm-symbolizer.yml241
-rw-r--r--taskcluster/ci/toolchain/macos-sdk.yml34
-rw-r--r--taskcluster/ci/toolchain/mingw.yml42
-rw-r--r--taskcluster/ci/toolchain/minidump-stackwalk.yml96
-rw-r--r--taskcluster/ci/toolchain/misc.yml440
-rw-r--r--taskcluster/ci/toolchain/nasm.yml87
-rw-r--r--taskcluster/ci/toolchain/node.yml92
-rw-r--r--taskcluster/ci/toolchain/pkgconf.yml56
-rw-r--r--taskcluster/ci/toolchain/python.yml66
-rw-r--r--taskcluster/ci/toolchain/resourcemonitor.yml44
-rw-r--r--taskcluster/ci/toolchain/rust-size.yml38
-rw-r--r--taskcluster/ci/toolchain/rust.yml253
-rw-r--r--taskcluster/ci/toolchain/sccache.yml88
-rw-r--r--taskcluster/ci/toolchain/sysroot.yml160
-rw-r--r--taskcluster/ci/updatebot/kind.yml92
-rw-r--r--taskcluster/ci/updatebot/moz.build8
-rw-r--r--taskcluster/ci/updatebot/tooltool-manifests/updatebot.manifest29
-rw-r--r--taskcluster/ci/upload-generated-sources-dummy/kind.yml24
-rw-r--r--taskcluster/ci/upload-generated-sources/kind.yml38
-rw-r--r--taskcluster/ci/upload-symbols-dummy/kind.yml24
-rw-r--r--taskcluster/ci/upload-symbols/kind.yml53
-rw-r--r--taskcluster/ci/valgrind/kind.yml65
-rw-r--r--taskcluster/ci/webrender/kind.yml605
-rw-r--r--taskcluster/docker/REGISTRY1
-rw-r--r--taskcluster/docker/android-build/Dockerfile45
-rw-r--r--taskcluster/docker/android-build/README.md2
-rw-r--r--taskcluster/docker/android-build/VERSION1
-rw-r--r--taskcluster/docker/condprof/Dockerfile15
-rw-r--r--taskcluster/docker/custom-car-linux/Dockerfile24
-rw-r--r--taskcluster/docker/custom-v8/Dockerfile22
-rw-r--r--taskcluster/docker/debian-base/Dockerfile66
-rw-r--r--taskcluster/docker/debian-build/Dockerfile51
-rw-r--r--taskcluster/docker/debian-packages/Dockerfile11
-rw-r--r--taskcluster/docker/debian-raw/Dockerfile62
-rwxr-xr-xtaskcluster/docker/debian-raw/gpgvnoexpkeysig52
-rwxr-xr-xtaskcluster/docker/debian-raw/taskcluster-hack.sh7
-rw-r--r--taskcluster/docker/debian-repackage/Dockerfile34
-rw-r--r--taskcluster/docker/decision/Dockerfile15
-rw-r--r--taskcluster/docker/decision/HASH1
-rw-r--r--taskcluster/docker/decision/README.md5
-rw-r--r--taskcluster/docker/decision/VERSION1
-rwxr-xr-xtaskcluster/docker/decision/comm-task-env199
-rw-r--r--taskcluster/docker/decision/system-setup.sh14
-rw-r--r--taskcluster/docker/diffoscope/Dockerfile33
-rw-r--r--taskcluster/docker/diffoscope/get_and_diffoscope103
-rw-r--r--taskcluster/docker/diffoscope/readelf13
-rwxr-xr-xtaskcluster/docker/diffoscope/report_error36
-rw-r--r--taskcluster/docker/diffoscope/test_diffoscope47
-rw-r--r--taskcluster/docker/fetch/Dockerfile36
-rw-r--r--taskcluster/docker/firefox-flatpak/Dockerfile19
-rw-r--r--taskcluster/docker/firefox-flatpak/close_range.c12
-rw-r--r--taskcluster/docker/firefox-flatpak/default-preferences.js11
-rw-r--r--taskcluster/docker/firefox-flatpak/extract_locales_from_l10n_json.py18
-rw-r--r--taskcluster/docker/firefox-flatpak/launch-script.sh3
-rw-r--r--taskcluster/docker/firefox-flatpak/org.mozilla.firefox.appdata.xml.in37
-rw-r--r--taskcluster/docker/firefox-flatpak/org.mozilla.firefox.desktop386
-rw-r--r--taskcluster/docker/firefox-flatpak/policies.json6
-rwxr-xr-xtaskcluster/docker/firefox-flatpak/runme.sh190
-rw-r--r--taskcluster/docker/firefox-snap/Dockerfile71
-rw-r--r--taskcluster/docker/firefox-snap/Makefile12
-rw-r--r--taskcluster/docker/firefox-snap/download_and_install_snap.sh27
-rw-r--r--taskcluster/docker/firefox-snap/extract_locales_from_l10n_json.py15
-rw-r--r--taskcluster/docker/firefox-snap/firefox.desktop219
-rw-r--r--taskcluster/docker/firefox-snap/firefox.snapcraft.yaml.in92
-rw-r--r--taskcluster/docker/firefox-snap/policies.json5
-rwxr-xr-xtaskcluster/docker/firefox-snap/runme.sh104
-rwxr-xr-xtaskcluster/docker/firefox-snap/tmpdir6
-rw-r--r--taskcluster/docker/funsize-update-generator/Dockerfile48
-rw-r--r--taskcluster/docker/funsize-update-generator/Makefile9
-rw-r--r--taskcluster/docker/funsize-update-generator/README7
-rw-r--r--taskcluster/docker/funsize-update-generator/dep1.pubkey14
-rw-r--r--taskcluster/docker/funsize-update-generator/nightly.pubkey14
-rw-r--r--taskcluster/docker/funsize-update-generator/release.pubkey14
-rw-r--r--taskcluster/docker/funsize-update-generator/requirements.in7
-rw-r--r--taskcluster/docker/funsize-update-generator/requirements.txt663
-rw-r--r--taskcluster/docker/funsize-update-generator/runme.sh61
-rw-r--r--taskcluster/docker/funsize-update-generator/scripts/funsize.py471
-rwxr-xr-xtaskcluster/docker/funsize-update-generator/scripts/mbsdiff_hook.sh157
-rw-r--r--taskcluster/docker/gdb-test/Dockerfile15
-rw-r--r--taskcluster/docker/github-sync/Dockerfile14
-rwxr-xr-xtaskcluster/docker/github-sync/prepare.sh31
-rw-r--r--taskcluster/docker/github-sync/requirements.txt3
-rw-r--r--taskcluster/docker/image_builder/Dockerfile99
-rw-r--r--taskcluster/docker/image_builder/VERSION1
-rw-r--r--taskcluster/docker/image_builder/apt.conf5
-rw-r--r--taskcluster/docker/image_builder/build-image/Cargo.lock1085
-rw-r--r--taskcluster/docker/image_builder/build-image/Cargo.toml23
-rw-r--r--taskcluster/docker/image_builder/build-image/src/config.rs112
-rw-r--r--taskcluster/docker/image_builder/build-image/src/main.rs182
-rw-r--r--taskcluster/docker/image_builder/build-image/src/taskcluster.rs55
-rw-r--r--taskcluster/docker/image_builder/policy.json11
-rw-r--r--taskcluster/docker/index-task/.eslintrc.js11
-rw-r--r--taskcluster/docker/index-task/Dockerfile11
-rw-r--r--taskcluster/docker/index-task/README36
-rw-r--r--taskcluster/docker/index-task/insert-indexes.js73
-rw-r--r--taskcluster/docker/index-task/package.json12
-rw-r--r--taskcluster/docker/index-task/yarn.lock326
-rw-r--r--taskcluster/docker/lint/Dockerfile36
-rw-r--r--taskcluster/docker/lint/system-setup.sh92
-rw-r--r--taskcluster/docker/partner-repack/Dockerfile20
-rw-r--r--taskcluster/docker/partner-repack/known_hosts3
-rw-r--r--taskcluster/docker/periodic-updates/.eslintrc.js70
-rw-r--r--taskcluster/docker/periodic-updates/Dockerfile11
-rw-r--r--taskcluster/docker/periodic-updates/README.md96
-rwxr-xr-xtaskcluster/docker/periodic-updates/runme.sh93
-rw-r--r--taskcluster/docker/periodic-updates/scripts/genHPKPStaticPins.js674
-rw-r--r--taskcluster/docker/periodic-updates/scripts/getHSTSPreloadList.js557
-rwxr-xr-xtaskcluster/docker/periodic-updates/scripts/periodic_file_updates.sh618
-rwxr-xr-xtaskcluster/docker/periodic-updates/setup.sh25
-rw-r--r--taskcluster/docker/push-to-try/Dockerfile22
-rw-r--r--taskcluster/docker/push-to-try/hgrc2
-rw-r--r--taskcluster/docker/push-to-try/known_hosts2
-rw-r--r--taskcluster/docker/recipes/common.sh10
-rw-r--r--taskcluster/docker/recipes/debian-test-system-setup.sh84
-rw-r--r--taskcluster/docker/recipes/dot-config/pip/pip.conf2
-rwxr-xr-xtaskcluster/docker/recipes/hgrc33
-rw-r--r--taskcluster/docker/recipes/install-node.sh15
-rwxr-xr-xtaskcluster/docker/recipes/setup_packages.sh13
-rw-r--r--taskcluster/docker/recipes/ubuntu1804-test-system-setup-base.sh163
-rw-r--r--taskcluster/docker/recipes/ubuntu1804-test-system-setup.sh24
-rw-r--r--taskcluster/docker/recipes/xvfb.sh75
-rw-r--r--taskcluster/docker/sentry/Dockerfile11
-rwxr-xr-xtaskcluster/docker/sentry/prepare.sh18
-rw-r--r--taskcluster/docker/sentry/submit_sentry_release.sh29
-rw-r--r--taskcluster/docker/static-analysis-build/Dockerfile61
-rw-r--r--taskcluster/docker/system-symbols-linux-scraper/Dockerfile28
-rw-r--r--taskcluster/docker/system-symbols-linux-scraper/SHA256SUMS.txt6
-rwxr-xr-xtaskcluster/docker/system-symbols-linux-scraper/run.sh80
-rw-r--r--taskcluster/docker/system-symbols-mac/Dockerfile37
-rw-r--r--taskcluster/docker/system-symbols-mac/requirements.txt2
-rw-r--r--taskcluster/docker/system-symbols-mac/setup.sh27
-rw-r--r--taskcluster/docker/system-symbols-win/Dockerfile26
-rw-r--r--taskcluster/docker/system-symbols-win/requirements.txt19
-rw-r--r--taskcluster/docker/toolchain-build/Dockerfile62
-rw-r--r--taskcluster/docker/ubuntu1804-base/Dockerfile70
-rw-r--r--taskcluster/docker/ubuntu1804-test-base/Dockerfile24
-rw-r--r--taskcluster/docker/ubuntu1804-test/Dockerfile86
-rw-r--r--taskcluster/docker/ubuntu1804-test/apport1
-rw-r--r--taskcluster/docker/ubuntu1804-test/autostart/deja-dup-monitor.desktop19
-rw-r--r--taskcluster/docker/ubuntu1804-test/autostart/gnome-software-service.desktop9
-rw-r--r--taskcluster/docker/ubuntu1804-test/dbus.sh7
-rw-r--r--taskcluster/docker/ubuntu1804-test/dot-files/config/user-dirs.dirs15
-rw-r--r--taskcluster/docker/ubuntu1804-test/dot-files/config/user-dirs.locale1
-rw-r--r--taskcluster/docker/ubuntu1804-test/dot-files/config/xorg/99-serverflags.conf3
-rw-r--r--taskcluster/docker/ubuntu1804-test/dot-files/pulse/client.conf1
-rw-r--r--taskcluster/docker/ubuntu1804-test/fonts.conf5
-rw-r--r--taskcluster/docker/ubuntu1804-test/motd6
-rw-r--r--taskcluster/docker/ubuntu1804-test/taskcluster-interactive-shell22
-rw-r--r--taskcluster/docker/update-verify/Dockerfile32
-rw-r--r--taskcluster/docker/update-verify/system-setup.sh29
-rw-r--r--taskcluster/docker/updatebot/Dockerfile24
-rw-r--r--taskcluster/docker/updatebot/VERSION1
-rw-r--r--taskcluster/docker/updatebot/arcanist_patch_size.patch13
-rw-r--r--taskcluster/docker/updatebot/arcanist_windows_stream.patch19
-rw-r--r--taskcluster/docker/updatebot/hgrc7
-rw-r--r--taskcluster/docker/updatebot/moz.build8
-rwxr-xr-xtaskcluster/docker/updatebot/privileged-setup.sh82
-rwxr-xr-xtaskcluster/docker/updatebot/run.py223
-rwxr-xr-xtaskcluster/docker/updatebot/setup.sh14
-rw-r--r--taskcluster/docker/updatebot/updatebot-version.sh2
-rw-r--r--taskcluster/docker/updatebot/windows-php.ini130
-rw-r--r--taskcluster/docker/updatebot/windows-setup.sh135
-rw-r--r--taskcluster/docker/valgrind-build/Dockerfile66
-rw-r--r--taskcluster/docker/webrender/Dockerfile16
-rw-r--r--taskcluster/docs/attributes.rst461
-rw-r--r--taskcluster/docs/balrog.rst45
-rw-r--r--taskcluster/docs/caches.rst98
-rw-r--r--taskcluster/docs/config.rst35
-rw-r--r--taskcluster/docs/cron.rst102
-rw-r--r--taskcluster/docs/howto/index.rst203
-rw-r--r--taskcluster/docs/img/enableSourceServer.pngbin0 -> 28002 bytes
-rw-r--r--taskcluster/docs/img/windbg-srcfix.pngbin0 -> 17238 bytes
-rw-r--r--taskcluster/docs/index.rst79
-rw-r--r--taskcluster/docs/kinds.rst796
-rw-r--r--taskcluster/docs/kinds/test.rst161
-rw-r--r--taskcluster/docs/optimization/index.rst20
-rw-r--r--taskcluster/docs/optimization/schedules.rst97
-rw-r--r--taskcluster/docs/parameters.rst262
-rw-r--r--taskcluster/docs/partials.rst123
-rw-r--r--taskcluster/docs/partner-attribution.rst121
-rw-r--r--taskcluster/docs/partner-repacks.rst255
-rw-r--r--taskcluster/docs/platforms.rst190
-rw-r--r--taskcluster/docs/reference.rst12
-rw-r--r--taskcluster/docs/release-promotion-action.rst158
-rw-r--r--taskcluster/docs/release-promotion.rst54
-rw-r--r--taskcluster/docs/signing.rst188
-rw-r--r--taskcluster/docs/taskgraph.rst140
-rw-r--r--taskcluster/docs/transforms/index.rst22
-rw-r--r--taskcluster/docs/transforms/job.rst42
-rw-r--r--taskcluster/docs/transforms/signing.rst15
-rw-r--r--taskcluster/docs/transforms/task.rst45
-rw-r--r--taskcluster/docs/transforms/test.rst15
-rw-r--r--taskcluster/docs/try.rst153
-rw-r--r--taskcluster/docs/using-the-mozilla-source-server.rst40
-rw-r--r--taskcluster/docs/versioncontrol.rst74
-rw-r--r--taskcluster/gecko_taskgraph/.ruff.toml4
-rw-r--r--taskcluster/gecko_taskgraph/__init__.py64
-rw-r--r--taskcluster/gecko_taskgraph/actions/__init__.py16
-rw-r--r--taskcluster/gecko_taskgraph/actions/add_new_jobs.py59
-rw-r--r--taskcluster/gecko_taskgraph/actions/add_talos.py59
-rw-r--r--taskcluster/gecko_taskgraph/actions/backfill.py426
-rw-r--r--taskcluster/gecko_taskgraph/actions/cancel.py36
-rw-r--r--taskcluster/gecko_taskgraph/actions/cancel_all.py60
-rw-r--r--taskcluster/gecko_taskgraph/actions/confirm_failure.py238
-rw-r--r--taskcluster/gecko_taskgraph/actions/create_interactive.py192
-rw-r--r--taskcluster/gecko_taskgraph/actions/gecko_profile.py138
-rw-r--r--taskcluster/gecko_taskgraph/actions/merge_automation.py99
-rw-r--r--taskcluster/gecko_taskgraph/actions/openh264.py33
-rw-r--r--taskcluster/gecko_taskgraph/actions/purge_caches.py34
-rw-r--r--taskcluster/gecko_taskgraph/actions/raptor_extra_options.py77
-rw-r--r--taskcluster/gecko_taskgraph/actions/rebuild_cached_tasks.py37
-rw-r--r--taskcluster/gecko_taskgraph/actions/registry.py371
-rw-r--r--taskcluster/gecko_taskgraph/actions/release_promotion.py426
-rw-r--r--taskcluster/gecko_taskgraph/actions/retrigger.py301
-rw-r--r--taskcluster/gecko_taskgraph/actions/retrigger_custom.py185
-rw-r--r--taskcluster/gecko_taskgraph/actions/run_missing_tests.py62
-rw-r--r--taskcluster/gecko_taskgraph/actions/scriptworker_canary.py45
-rw-r--r--taskcluster/gecko_taskgraph/actions/side_by_side.py189
-rw-r--r--taskcluster/gecko_taskgraph/actions/util.py433
-rw-r--r--taskcluster/gecko_taskgraph/config.py122
-rw-r--r--taskcluster/gecko_taskgraph/decision.py565
-rw-r--r--taskcluster/gecko_taskgraph/docker.py198
-rw-r--r--taskcluster/gecko_taskgraph/files_changed.py95
-rw-r--r--taskcluster/gecko_taskgraph/loader/__init__.py0
-rw-r--r--taskcluster/gecko_taskgraph/loader/multi_dep.py275
-rw-r--r--taskcluster/gecko_taskgraph/loader/single_dep.py76
-rw-r--r--taskcluster/gecko_taskgraph/loader/test.py142
-rw-r--r--taskcluster/gecko_taskgraph/loader/transform.py59
-rw-r--r--taskcluster/gecko_taskgraph/main.py765
-rw-r--r--taskcluster/gecko_taskgraph/manifests/fennec_geckoview.yml210
-rw-r--r--taskcluster/gecko_taskgraph/manifests/firefox_candidates.yml430
-rw-r--r--taskcluster/gecko_taskgraph/manifests/firefox_candidates_checksums.yml94
-rw-r--r--taskcluster/gecko_taskgraph/manifests/firefox_nightly.yml520
-rw-r--r--taskcluster/gecko_taskgraph/manifests/firefox_nightly_checksums.yml59
-rw-r--r--taskcluster/gecko_taskgraph/manifests/release_checksums.yml70
-rw-r--r--taskcluster/gecko_taskgraph/manifests/source_checksums.yml52
-rw-r--r--taskcluster/gecko_taskgraph/manifests/source_files.yml52
-rw-r--r--taskcluster/gecko_taskgraph/morph.py263
-rw-r--r--taskcluster/gecko_taskgraph/optimize/__init__.py287
-rw-r--r--taskcluster/gecko_taskgraph/optimize/backstop.py47
-rw-r--r--taskcluster/gecko_taskgraph/optimize/bugbug.py321
-rw-r--r--taskcluster/gecko_taskgraph/optimize/schema.py60
-rw-r--r--taskcluster/gecko_taskgraph/optimize/strategies.py136
-rw-r--r--taskcluster/gecko_taskgraph/parameters.py100
-rw-r--r--taskcluster/gecko_taskgraph/target_tasks.py1497
-rw-r--r--taskcluster/gecko_taskgraph/test/__init__.py0
-rw-r--r--taskcluster/gecko_taskgraph/test/automationrelevance.json358
-rw-r--r--taskcluster/gecko_taskgraph/test/conftest.py220
-rw-r--r--taskcluster/gecko_taskgraph/test/docs/kinds.rst12
-rw-r--r--taskcluster/gecko_taskgraph/test/docs/parameters.rst14
-rw-r--r--taskcluster/gecko_taskgraph/test/python.ini23
-rw-r--r--taskcluster/gecko_taskgraph/test/test_actions_util.py179
-rw-r--r--taskcluster/gecko_taskgraph/test/test_decision.py176
-rw-r--r--taskcluster/gecko_taskgraph/test/test_files_changed.py90
-rw-r--r--taskcluster/gecko_taskgraph/test/test_main.py67
-rw-r--r--taskcluster/gecko_taskgraph/test/test_morph.py108
-rw-r--r--taskcluster/gecko_taskgraph/test/test_optimize_strategies.py551
-rw-r--r--taskcluster/gecko_taskgraph/test/test_target_tasks.py371
-rw-r--r--taskcluster/gecko_taskgraph/test/test_taskcluster_yml.py145
-rw-r--r--taskcluster/gecko_taskgraph/test/test_transforms_job.py150
-rw-r--r--taskcluster/gecko_taskgraph/test/test_transforms_test.py328
-rw-r--r--taskcluster/gecko_taskgraph/test/test_try_option_syntax.py430
-rw-r--r--taskcluster/gecko_taskgraph/test/test_util_attributes.py99
-rw-r--r--taskcluster/gecko_taskgraph/test/test_util_backstop.py155
-rw-r--r--taskcluster/gecko_taskgraph/test/test_util_bugbug.py57
-rw-r--r--taskcluster/gecko_taskgraph/test/test_util_chunking.py403
-rw-r--r--taskcluster/gecko_taskgraph/test/test_util_docker.py255
-rw-r--r--taskcluster/gecko_taskgraph/test/test_util_partials.py128
-rw-r--r--taskcluster/gecko_taskgraph/test/test_util_runnable_jobs.py76
-rw-r--r--taskcluster/gecko_taskgraph/test/test_util_templates.py79
-rw-r--r--taskcluster/gecko_taskgraph/test/test_util_verify.py149
-rw-r--r--taskcluster/gecko_taskgraph/transforms/__init__.py0
-rw-r--r--taskcluster/gecko_taskgraph/transforms/artifact.py116
-rw-r--r--taskcluster/gecko_taskgraph/transforms/artifacts.yml16
-rw-r--r--taskcluster/gecko_taskgraph/transforms/attribution.py32
-rw-r--r--taskcluster/gecko_taskgraph/transforms/balrog_submit.py138
-rw-r--r--taskcluster/gecko_taskgraph/transforms/balrog_toplevel.py42
-rw-r--r--taskcluster/gecko_taskgraph/transforms/beetmover.py165
-rw-r--r--taskcluster/gecko_taskgraph/transforms/beetmover_apt.py114
-rw-r--r--taskcluster/gecko_taskgraph/transforms/beetmover_checksums.py133
-rw-r--r--taskcluster/gecko_taskgraph/transforms/beetmover_emefree_checksums.py139
-rw-r--r--taskcluster/gecko_taskgraph/transforms/beetmover_geckoview.py166
-rw-r--r--taskcluster/gecko_taskgraph/transforms/beetmover_langpack_checksums.py128
-rw-r--r--taskcluster/gecko_taskgraph/transforms/beetmover_push_to_release.py93
-rw-r--r--taskcluster/gecko_taskgraph/transforms/beetmover_repackage.py327
-rw-r--r--taskcluster/gecko_taskgraph/transforms/beetmover_repackage_l10n.py44
-rw-r--r--taskcluster/gecko_taskgraph/transforms/beetmover_repackage_partner.py326
-rw-r--r--taskcluster/gecko_taskgraph/transforms/beetmover_snap.py42
-rw-r--r--taskcluster/gecko_taskgraph/transforms/beetmover_source.py35
-rw-r--r--taskcluster/gecko_taskgraph/transforms/beetmover_source_checksums.py137
-rw-r--r--taskcluster/gecko_taskgraph/transforms/bootstrap.py132
-rw-r--r--taskcluster/gecko_taskgraph/transforms/bouncer_aliases.py108
-rw-r--r--taskcluster/gecko_taskgraph/transforms/bouncer_check.py111
-rw-r--r--taskcluster/gecko_taskgraph/transforms/bouncer_locations.py35
-rw-r--r--taskcluster/gecko_taskgraph/transforms/bouncer_submission.py335
-rw-r--r--taskcluster/gecko_taskgraph/transforms/bouncer_submission_partners.py193
-rw-r--r--taskcluster/gecko_taskgraph/transforms/build.py238
-rw-r--r--taskcluster/gecko_taskgraph/transforms/build_attrs.py50
-rw-r--r--taskcluster/gecko_taskgraph/transforms/build_fat_aar.py78
-rw-r--r--taskcluster/gecko_taskgraph/transforms/build_lints.py59
-rw-r--r--taskcluster/gecko_taskgraph/transforms/build_signing.py71
-rw-r--r--taskcluster/gecko_taskgraph/transforms/cached_tasks.py101
-rw-r--r--taskcluster/gecko_taskgraph/transforms/chunk_partners.py75
-rw-r--r--taskcluster/gecko_taskgraph/transforms/code_review.py33
-rw-r--r--taskcluster/gecko_taskgraph/transforms/condprof.py85
-rw-r--r--taskcluster/gecko_taskgraph/transforms/copy_attributes_from_dependent_task.py23
-rw-r--r--taskcluster/gecko_taskgraph/transforms/cross_channel.py44
-rw-r--r--taskcluster/gecko_taskgraph/transforms/diffoscope.py172
-rw-r--r--taskcluster/gecko_taskgraph/transforms/docker_image.py209
-rw-r--r--taskcluster/gecko_taskgraph/transforms/fetch.py387
-rw-r--r--taskcluster/gecko_taskgraph/transforms/final_verify.py35
-rw-r--r--taskcluster/gecko_taskgraph/transforms/fxrecord.py22
-rw-r--r--taskcluster/gecko_taskgraph/transforms/geckodriver_mac_notarization.py68
-rw-r--r--taskcluster/gecko_taskgraph/transforms/geckodriver_signing.py124
-rw-r--r--taskcluster/gecko_taskgraph/transforms/github_sync.py23
-rw-r--r--taskcluster/gecko_taskgraph/transforms/job/__init__.py504
-rw-r--r--taskcluster/gecko_taskgraph/transforms/job/common.py269
-rw-r--r--taskcluster/gecko_taskgraph/transforms/job/distro_package.py238
-rw-r--r--taskcluster/gecko_taskgraph/transforms/job/hazard.py66
-rw-r--r--taskcluster/gecko_taskgraph/transforms/job/mach.py83
-rw-r--r--taskcluster/gecko_taskgraph/transforms/job/mozharness.py366
-rw-r--r--taskcluster/gecko_taskgraph/transforms/job/mozharness_test.py477
-rw-r--r--taskcluster/gecko_taskgraph/transforms/job/python_test.py47
-rw-r--r--taskcluster/gecko_taskgraph/transforms/job/run_task.py308
-rw-r--r--taskcluster/gecko_taskgraph/transforms/job/spidermonkey.py109
-rw-r--r--taskcluster/gecko_taskgraph/transforms/job/toolchain.py257
-rw-r--r--taskcluster/gecko_taskgraph/transforms/l10n.py416
-rw-r--r--taskcluster/gecko_taskgraph/transforms/mac_dummy.py40
-rw-r--r--taskcluster/gecko_taskgraph/transforms/mac_notarization.py19
-rw-r--r--taskcluster/gecko_taskgraph/transforms/mar_signing.py140
-rw-r--r--taskcluster/gecko_taskgraph/transforms/maybe_release.py23
-rw-r--r--taskcluster/gecko_taskgraph/transforms/merge_automation.py81
-rw-r--r--taskcluster/gecko_taskgraph/transforms/name_sanity.py45
-rw-r--r--taskcluster/gecko_taskgraph/transforms/openh264.py26
-rw-r--r--taskcluster/gecko_taskgraph/transforms/openh264_signing.py109
-rw-r--r--taskcluster/gecko_taskgraph/transforms/partials.py172
-rw-r--r--taskcluster/gecko_taskgraph/transforms/partner_attribution.py129
-rw-r--r--taskcluster/gecko_taskgraph/transforms/partner_attribution_beetmover.py202
-rw-r--r--taskcluster/gecko_taskgraph/transforms/partner_repack.py136
-rw-r--r--taskcluster/gecko_taskgraph/transforms/partner_signing.py66
-rw-r--r--taskcluster/gecko_taskgraph/transforms/per_platform_dummy.py33
-rw-r--r--taskcluster/gecko_taskgraph/transforms/perftest.py351
-rw-r--r--taskcluster/gecko_taskgraph/transforms/python_update.py25
-rw-r--r--taskcluster/gecko_taskgraph/transforms/release.py20
-rw-r--r--taskcluster/gecko_taskgraph/transforms/release_beetmover_signed_addons.py243
-rw-r--r--taskcluster/gecko_taskgraph/transforms/release_deps.py61
-rw-r--r--taskcluster/gecko_taskgraph/transforms/release_flatpak_push.py79
-rw-r--r--taskcluster/gecko_taskgraph/transforms/release_flatpak_repackage.py42
-rw-r--r--taskcluster/gecko_taskgraph/transforms/release_generate_checksums.py53
-rw-r--r--taskcluster/gecko_taskgraph/transforms/release_generate_checksums_beetmover.py118
-rw-r--r--taskcluster/gecko_taskgraph/transforms/release_generate_checksums_signing.py86
-rw-r--r--taskcluster/gecko_taskgraph/transforms/release_mark_as_shipped.py39
-rw-r--r--taskcluster/gecko_taskgraph/transforms/release_msix_push.py88
-rw-r--r--taskcluster/gecko_taskgraph/transforms/release_notifications.py73
-rw-r--r--taskcluster/gecko_taskgraph/transforms/release_sign_and_push_langpacks.py180
-rw-r--r--taskcluster/gecko_taskgraph/transforms/release_snap_repackage.py39
-rw-r--r--taskcluster/gecko_taskgraph/transforms/release_started.py52
-rw-r--r--taskcluster/gecko_taskgraph/transforms/release_version_bump.py42
-rw-r--r--taskcluster/gecko_taskgraph/transforms/repackage.py684
-rw-r--r--taskcluster/gecko_taskgraph/transforms/repackage_l10n.py26
-rw-r--r--taskcluster/gecko_taskgraph/transforms/repackage_partner.py302
-rw-r--r--taskcluster/gecko_taskgraph/transforms/repackage_routes.py34
-rw-r--r--taskcluster/gecko_taskgraph/transforms/repackage_set_upstream_mac_kind.py39
-rw-r--r--taskcluster/gecko_taskgraph/transforms/repackage_signing.py137
-rw-r--r--taskcluster/gecko_taskgraph/transforms/repackage_signing_partner.py145
-rw-r--r--taskcluster/gecko_taskgraph/transforms/repo_update.py25
-rw-r--r--taskcluster/gecko_taskgraph/transforms/reprocess_symbols.py67
-rw-r--r--taskcluster/gecko_taskgraph/transforms/reverse_chunk_deps.py45
-rw-r--r--taskcluster/gecko_taskgraph/transforms/run_pgo_profile.py34
-rw-r--r--taskcluster/gecko_taskgraph/transforms/scriptworker.py18
-rw-r--r--taskcluster/gecko_taskgraph/transforms/scriptworker_canary.py46
-rw-r--r--taskcluster/gecko_taskgraph/transforms/sentry.py30
-rw-r--r--taskcluster/gecko_taskgraph/transforms/shippable_l10n_signing.py86
-rw-r--r--taskcluster/gecko_taskgraph/transforms/signing.py266
-rw-r--r--taskcluster/gecko_taskgraph/transforms/source_checksums_signing.py83
-rw-r--r--taskcluster/gecko_taskgraph/transforms/source_test.py270
-rw-r--r--taskcluster/gecko_taskgraph/transforms/spidermonkey.py21
-rw-r--r--taskcluster/gecko_taskgraph/transforms/split_by_locale.py79
-rw-r--r--taskcluster/gecko_taskgraph/transforms/startup_test.py40
-rw-r--r--taskcluster/gecko_taskgraph/transforms/strip_dependent_task.py17
-rw-r--r--taskcluster/gecko_taskgraph/transforms/task.py2266
-rw-r--r--taskcluster/gecko_taskgraph/transforms/test/__init__.py538
-rw-r--r--taskcluster/gecko_taskgraph/transforms/test/chunk.py262
-rw-r--r--taskcluster/gecko_taskgraph/transforms/test/other.py1081
-rw-r--r--taskcluster/gecko_taskgraph/transforms/test/raptor.py317
-rw-r--r--taskcluster/gecko_taskgraph/transforms/test/variant.py128
-rw-r--r--taskcluster/gecko_taskgraph/transforms/test/worker.py201
-rw-r--r--taskcluster/gecko_taskgraph/transforms/try_job.py18
-rw-r--r--taskcluster/gecko_taskgraph/transforms/update_verify.py58
-rw-r--r--taskcluster/gecko_taskgraph/transforms/update_verify_config.py148
-rw-r--r--taskcluster/gecko_taskgraph/transforms/upload_generated_sources.py40
-rw-r--r--taskcluster/gecko_taskgraph/transforms/upload_symbols.py95
-rw-r--r--taskcluster/gecko_taskgraph/transforms/upstream_artifact_task.py29
-rw-r--r--taskcluster/gecko_taskgraph/try_option_syntax.py755
-rw-r--r--taskcluster/gecko_taskgraph/util/__init__.py0
-rw-r--r--taskcluster/gecko_taskgraph/util/attributes.py143
-rw-r--r--taskcluster/gecko_taskgraph/util/backstop.py84
-rw-r--r--taskcluster/gecko_taskgraph/util/bugbug.py125
-rw-r--r--taskcluster/gecko_taskgraph/util/cached_tasks.py82
-rw-r--r--taskcluster/gecko_taskgraph/util/chunking.py315
-rw-r--r--taskcluster/gecko_taskgraph/util/copy_task.py40
-rw-r--r--taskcluster/gecko_taskgraph/util/declarative_artifacts.py92
-rw-r--r--taskcluster/gecko_taskgraph/util/docker.py333
-rw-r--r--taskcluster/gecko_taskgraph/util/hash.py68
-rw-r--r--taskcluster/gecko_taskgraph/util/hg.py139
-rw-r--r--taskcluster/gecko_taskgraph/util/partials.py297
-rw-r--r--taskcluster/gecko_taskgraph/util/partners.py555
-rw-r--r--taskcluster/gecko_taskgraph/util/perfile.py104
-rw-r--r--taskcluster/gecko_taskgraph/util/platforms.py58
-rw-r--r--taskcluster/gecko_taskgraph/util/scriptworker.py859
-rw-r--r--taskcluster/gecko_taskgraph/util/signed_artifacts.py198
-rw-r--r--taskcluster/gecko_taskgraph/util/taskcluster.py128
-rw-r--r--taskcluster/gecko_taskgraph/util/taskgraph.py49
-rw-r--r--taskcluster/gecko_taskgraph/util/templates.py59
-rw-r--r--taskcluster/gecko_taskgraph/util/verify.py454
-rw-r--r--taskcluster/gecko_taskgraph/util/workertypes.py105
-rw-r--r--taskcluster/mach_commands.py416
-rw-r--r--taskcluster/moz.build18
-rwxr-xr-xtaskcluster/scripts/builder/build-haz-linux.sh184
-rwxr-xr-xtaskcluster/scripts/builder/build-l10n.sh90
-rwxr-xr-xtaskcluster/scripts/builder/build-linux.sh125
-rwxr-xr-xtaskcluster/scripts/builder/build-sm-package.sh35
-rwxr-xr-xtaskcluster/scripts/builder/build-sm.sh64
-rwxr-xr-xtaskcluster/scripts/builder/repackage.sh95
-rwxr-xr-xtaskcluster/scripts/copy.sh9
-rw-r--r--taskcluster/scripts/misc/afl-nyx.patch847
-rwxr-xr-xtaskcluster/scripts/misc/android-gradle-dependencies-lite.sh21
-rwxr-xr-xtaskcluster/scripts/misc/android-gradle-dependencies.sh21
-rwxr-xr-xtaskcluster/scripts/misc/android-gradle-dependencies/after.sh32
-rwxr-xr-xtaskcluster/scripts/misc/android-gradle-dependencies/before.sh30
-rw-r--r--taskcluster/scripts/misc/android-gradle-dependencies/nexus.xml413
-rw-r--r--taskcluster/scripts/misc/are-we-esmified-yet.py193
-rwxr-xr-xtaskcluster/scripts/misc/browsertime.sh19
-rwxr-xr-xtaskcluster/scripts/misc/build-afl.sh24
-rwxr-xr-xtaskcluster/scripts/misc/build-binutils-linux.sh14
-rwxr-xr-xtaskcluster/scripts/misc/build-breakpad-injector.sh30
-rwxr-xr-xtaskcluster/scripts/misc/build-cctools-port.sh100
-rwxr-xr-xtaskcluster/scripts/misc/build-clang-mingw.sh254
-rwxr-xr-xtaskcluster/scripts/misc/build-clang-tidy-external.sh11
-rwxr-xr-xtaskcluster/scripts/misc/build-clang.sh72
-rwxr-xr-xtaskcluster/scripts/misc/build-compiler-rt-wasi.sh32
-rwxr-xr-xtaskcluster/scripts/misc/build-compiler-rt.sh39
-rwxr-xr-xtaskcluster/scripts/misc/build-cpython.sh70
-rwxr-xr-xtaskcluster/scripts/misc/build-custom-car-linux.sh65
-rw-r--r--taskcluster/scripts/misc/build-custom-car-win64.sh102
-rwxr-xr-xtaskcluster/scripts/misc/build-custom-v8.sh47
-rwxr-xr-xtaskcluster/scripts/misc/build-dist-toolchains.sh12
-rwxr-xr-xtaskcluster/scripts/misc/build-dmg-hfsplus.sh36
-rwxr-xr-xtaskcluster/scripts/misc/build-gcc-linux.sh28
-rwxr-xr-xtaskcluster/scripts/misc/build-gcc-sixgill-plugin-linux.sh80
-rwxr-xr-xtaskcluster/scripts/misc/build-geckodriver.sh60
-rwxr-xr-xtaskcluster/scripts/misc/build-gn-common.sh36
-rwxr-xr-xtaskcluster/scripts/misc/build-gn-linux.sh13
-rwxr-xr-xtaskcluster/scripts/misc/build-gn-macosx.sh23
-rwxr-xr-xtaskcluster/scripts/misc/build-gn-win64.sh16
-rwxr-xr-xtaskcluster/scripts/misc/build-hfsplus-linux.sh14
-rwxr-xr-xtaskcluster/scripts/misc/build-libunwind.sh23
-rwxr-xr-xtaskcluster/scripts/misc/build-llvm-common.sh206
-rwxr-xr-xtaskcluster/scripts/misc/build-llvm-symbolizer.sh5
-rwxr-xr-xtaskcluster/scripts/misc/build-mar-tools.sh28
-rwxr-xr-xtaskcluster/scripts/misc/build-mingw-fxc2-x86.sh25
-rwxr-xr-xtaskcluster/scripts/misc/build-mingw32-nsis.sh70
-rwxr-xr-xtaskcluster/scripts/misc/build-mkbom-linux.sh17
-rwxr-xr-xtaskcluster/scripts/misc/build-mozmake.sh66
-rwxr-xr-xtaskcluster/scripts/misc/build-msix-packaging.sh33
-rwxr-xr-xtaskcluster/scripts/misc/build-nasm.sh63
-rwxr-xr-xtaskcluster/scripts/misc/build-nsis.sh32
-rwxr-xr-xtaskcluster/scripts/misc/build-pkgconf.sh44
-rwxr-xr-xtaskcluster/scripts/misc/build-resourcemonitor.sh40
-rwxr-xr-xtaskcluster/scripts/misc/build-rust-based-toolchain.sh66
-rwxr-xr-xtaskcluster/scripts/misc/build-sysroot-wasi.sh46
-rwxr-xr-xtaskcluster/scripts/misc/build-sysroot.sh127
-rwxr-xr-xtaskcluster/scripts/misc/build-upx.sh26
-rwxr-xr-xtaskcluster/scripts/misc/build-winchecksec.sh54
-rwxr-xr-xtaskcluster/scripts/misc/build-wine.sh29
-rwxr-xr-xtaskcluster/scripts/misc/build-xar-linux.sh18
-rw-r--r--taskcluster/scripts/misc/fetch-chromium.py235
-rwxr-xr-xtaskcluster/scripts/misc/fetch-content881
-rwxr-xr-xtaskcluster/scripts/misc/get_vs.py111
-rw-r--r--taskcluster/scripts/misc/mingw-composition.patch50
-rw-r--r--taskcluster/scripts/misc/mingw-dispatchqueue.patch157
-rw-r--r--taskcluster/scripts/misc/mingw-dwrite_3.patch87
-rw-r--r--taskcluster/scripts/misc/mingw-enum.patch25
-rw-r--r--taskcluster/scripts/misc/mingw-ts_sd.patch33
-rw-r--r--taskcluster/scripts/misc/mingw-unknown.patch46
-rw-r--r--taskcluster/scripts/misc/mingw-widl.patch35
-rw-r--r--taskcluster/scripts/misc/moz.build8
-rwxr-xr-xtaskcluster/scripts/misc/osx-cross-linker8
-rwxr-xr-xtaskcluster/scripts/misc/pack-cpython.sh36
-rwxr-xr-xtaskcluster/scripts/misc/pack.sh24
-rwxr-xr-xtaskcluster/scripts/misc/private_local_toolchain.sh14
-rwxr-xr-xtaskcluster/scripts/misc/repack-android-avd-linux.sh30
-rwxr-xr-xtaskcluster/scripts/misc/repack-android-emulator-linux.sh21
-rwxr-xr-xtaskcluster/scripts/misc/repack-android-ndk-linux.sh17
-rwxr-xr-xtaskcluster/scripts/misc/repack-android-sdk-linux.sh15
-rwxr-xr-xtaskcluster/scripts/misc/repack-android-system-images-linux.sh17
-rwxr-xr-xtaskcluster/scripts/misc/repack-clang.sh52
-rwxr-xr-xtaskcluster/scripts/misc/repack-jdk-linux.sh17
-rwxr-xr-xtaskcluster/scripts/misc/repack-node.sh14
-rwxr-xr-xtaskcluster/scripts/misc/repack_rust.py647
-rwxr-xr-xtaskcluster/scripts/misc/run-profileserver-macos.sh20
-rwxr-xr-xtaskcluster/scripts/misc/run-profileserver.sh42
-rwxr-xr-xtaskcluster/scripts/misc/source-test-clang-setup.sh27
-rwxr-xr-xtaskcluster/scripts/misc/source-test-common.sh16
-rwxr-xr-xtaskcluster/scripts/misc/source-test-infer-setup.sh18
-rw-r--r--taskcluster/scripts/misc/summarize-tgdiff.py54
-rw-r--r--taskcluster/scripts/misc/tooltool-download.sh21
-rwxr-xr-xtaskcluster/scripts/misc/unify.sh42
-rw-r--r--taskcluster/scripts/misc/unpack-sdk.py87
-rw-r--r--taskcluster/scripts/misc/verify-devtools-bundle.py85
-rw-r--r--taskcluster/scripts/misc/vs-cleanup.sh13
-rw-r--r--taskcluster/scripts/misc/vs-setup.sh42
-rwxr-xr-xtaskcluster/scripts/misc/wr-cargotest-macos-build.sh24
-rwxr-xr-xtaskcluster/scripts/misc/wr-macos-cross-build-setup.sh60
-rwxr-xr-xtaskcluster/scripts/misc/wrench-android-build.sh26
-rwxr-xr-xtaskcluster/scripts/misc/wrench-deps-vendoring.sh30
-rwxr-xr-xtaskcluster/scripts/misc/wrench-macos-build.sh58
-rw-r--r--taskcluster/scripts/misc/wrench-windows-tests.sh28
-rwxr-xr-xtaskcluster/scripts/misc/zstdpy79
-rwxr-xr-xtaskcluster/scripts/run-task1005
-rwxr-xr-xtaskcluster/scripts/tester/run-wizard176
-rwxr-xr-xtaskcluster/scripts/tester/test-linux.sh287
-rw-r--r--taskcluster/test/conftest.py125
-rw-r--r--taskcluster/test/data/automationrelevance.json169
-rw-r--r--taskcluster/test/data/bugbug-push-schedules.json4632
-rw-r--r--taskcluster/test/data/pushes.json1
-rw-r--r--taskcluster/test/params/autoland-onpush.yml44
-rw-r--r--taskcluster/test/params/mb-onpush.yml43
-rw-r--r--taskcluster/test/params/mb-promote-devedition-partials.yml13210
-rw-r--r--taskcluster/test/params/mb-promote-devedition.yml42
-rw-r--r--taskcluster/test/params/mb-promote-firefox-partials.yml12103
-rw-r--r--taskcluster/test/params/mb-promote-firefox.yml109
-rw-r--r--taskcluster/test/params/mb-push-devedition.yml43
-rw-r--r--taskcluster/test/params/mb-push-firefox-partials.yml19467
-rw-r--r--taskcluster/test/params/mb-push-firefox.yml110
-rw-r--r--taskcluster/test/params/mb-ship-devedition.yml42
-rw-r--r--taskcluster/test/params/mb-ship-firefox-partials.yml19471
-rw-r--r--taskcluster/test/params/mb-ship-firefox.yml109
-rw-r--r--taskcluster/test/params/mb-ship-geckoview.yml3822
-rw-r--r--taskcluster/test/params/mc-desktop-nightly.yml6545
-rw-r--r--taskcluster/test/params/mc-onpush.yml41
-rw-r--r--taskcluster/test/params/mc-ship-geckoview.yml3822
-rw-r--r--taskcluster/test/params/me-promote-firefox.yml40
-rw-r--r--taskcluster/test/params/me-push-firefox.yml41
-rw-r--r--taskcluster/test/params/me-ship-firefox.yml40
-rw-r--r--taskcluster/test/params/mr-onpush-geckoview.yml41
-rw-r--r--taskcluster/test/params/mr-onpush.yml43
-rw-r--r--taskcluster/test/params/mr-promote-firefox-rc.yml109
-rw-r--r--taskcluster/test/params/mr-promote-firefox.yml109
-rw-r--r--taskcluster/test/params/mr-push-firefox.yml110
-rw-r--r--taskcluster/test/params/mr-ship-firefox-rc.yml109
-rw-r--r--taskcluster/test/params/mr-ship-firefox.yml109
-rw-r--r--taskcluster/test/params/mr-ship-geckoview.yml3822
-rw-r--r--taskcluster/test/params/try.yml59
-rw-r--r--taskcluster/test/python.ini8
-rw-r--r--taskcluster/test/test_autoland.py48
-rw-r--r--taskcluster/test/test_autoland_backstop.py56
-rw-r--r--taskcluster/test/test_generate_params.py57
-rw-r--r--taskcluster/test/test_mach_try_auto.py113
-rw-r--r--taskcluster/test/test_mozilla_central.py69
770 files changed, 182273 insertions, 0 deletions
diff --git a/taskcluster/.yamllint b/taskcluster/.yamllint
new file mode 100644
index 0000000000..565358489b
--- /dev/null
+++ b/taskcluster/.yamllint
@@ -0,0 +1,15 @@
+---
+ignore: |
+ *node_modules*
+
+extends: default
+
+rules:
+ document-end:
+ present: false
+ document-start:
+ present: true
+ indentation:
+ spaces: 4
+ # Checks currently failing
+ line-length: disable
diff --git a/taskcluster/ci/addon/kind.yml b/taskcluster/ci/addon/kind.yml
new file mode 100644
index 0000000000..361071e6be
--- /dev/null
+++ b/taskcluster/ci/addon/kind.yml
@@ -0,0 +1,37 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+jobs:
+ tps-xpi:
+ description: Build the TPS add-on
+ index:
+ product: firefox
+ job-name: addons.tps
+ treeherder:
+ platform: linux64/opt
+ symbol: TPS(addon)
+ kind: build
+ tier: 1
+ run-on-projects: [mozilla-central]
+ worker-type: b-linux-gcp
+ worker:
+ docker-image: {in-tree: debian11-amd64-build}
+ max-run-time: 1800
+ artifacts:
+ - type: file
+ name: public/tps.xpi
+ path: /builds/worker/checkouts/gecko/tps-out/tps.xpi
+ run:
+ using: mach
+ mach: tps-build --dest tps-out
+ sparse-profile: tps
+ when:
+ files-changed:
+ - 'services/sync/tps/extensions/tps/**'
diff --git a/taskcluster/ci/are-we-esmified-yet/kind.yml b/taskcluster/ci/are-we-esmified-yet/kind.yml
new file mode 100644
index 0000000000..f2c462f455
--- /dev/null
+++ b/taskcluster/ci/are-we-esmified-yet/kind.yml
@@ -0,0 +1,42 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - toolchain
+ - fetch
+
+transforms:
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+jobs:
+ check:
+ description: Extracts statistics on remaining JSMs in the codebase
+ run-on-projects: []
+ attributes:
+ cron: true
+ index:
+ product: firefox
+ job-name: are-we-esmified-yet
+ treeherder:
+ platform: lint/opt
+ kind: other
+ symbol: js(esm)
+ tier: 2
+ worker-type: t-linux-xlarge-source
+ worker:
+ docker-image: {in-tree: "lint"}
+ max-run-time: 3600
+ artifacts:
+ - type: file
+ name: public/are-we-esmified-yet.json
+ path: /builds/worker/artifacts/are-we-esmified-yet.json
+ run:
+ using: run-task
+ command: >-
+ mkdir -p /builds/worker/artifacts &&
+ cd ${GECKO_PATH} &&
+ python3 ./taskcluster/scripts/misc/are-we-esmified-yet.py > /builds/worker/artifacts/are-we-esmified-yet.json
diff --git a/taskcluster/ci/artifact-build/kind.yml b/taskcluster/ci/artifact-build/kind.yml
new file mode 100644
index 0000000000..77da9ea7de
--- /dev/null
+++ b/taskcluster/ci/artifact-build/kind.yml
@@ -0,0 +1,54 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - toolchain
+
+transforms:
+ - gecko_taskgraph.transforms.build_attrs:transforms
+ - gecko_taskgraph.transforms.build_lints:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.artifact:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ use-system-python: false
+
+jobs:
+ linux64-artifact/opt:
+ description: "Linux64 Opt Artifact Build"
+ index:
+ product: firefox
+ job-name: linux64-artifact-opt
+ treeherder:
+ platform: linux64/opt
+ kind: build
+ symbol: AB
+ tier: 2
+ run-on-projects: ['mozilla-central']
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 3600
+ env:
+ PERFHERDER_EXTRA_OPTIONS: artifact
+ MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE: system
+ MOZ_ARTIFACT_TASK: {task-reference: '<linux64-opt>'}
+ USE_ARTIFACT: '1'
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ tooltool-downloads: public
+ keep-artifacts: false
+ dependencies:
+ linux64-opt: build-linux64/opt
+ fetches:
+ toolchain:
+ - linux64-node
diff --git a/taskcluster/ci/attribution-l10n/kind.yml b/taskcluster/ci/attribution-l10n/kind.yml
new file mode 100644
index 0000000000..34cddec74d
--- /dev/null
+++ b/taskcluster/ci/attribution-l10n/kind.yml
@@ -0,0 +1,130 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.split_by_locale:transforms
+ - gecko_taskgraph.transforms.attribution:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ # Windows
+ - repackage-signing-l10n
+
+job-defaults:
+ description: Attribute release builds
+ shipping-phase: promote
+ # never run as part of CI
+ run-on-projects: []
+ worker-type: b-linux-gcp
+ locales-file: browser/locales/l10n-changesets.json
+ properties-with-locale:
+ - label
+ - dependencies.repackage-signing-l10n
+ - treeherder.symbol
+ - fetches.repackage-signing-l10n
+ attributes:
+ build_type: opt
+ release_artifacts:
+ - public/build/target.installer.exe
+ treeherder:
+ symbol: Attr-L10n({locale})
+ kind: other
+ tier: 1
+ fetches:
+ repackage-signing-l10n:
+ - "{locale}/target.installer.exe"
+ worker:
+ artifacts:
+ - name: public/build
+ type: directory
+ path: /builds/worker/artifacts
+ docker-image:
+ in-tree: "partner-repack"
+ chain-of-trust: true
+ # Each task only processes one installer...this should be quick.
+ max-run-time: 600
+ run:
+ using: run-task
+ cwd: "{checkout}"
+ command:
+ - ./mach
+ - python
+ - python/mozrelease/mozrelease/attribute_builds.py
+ - --attribution
+ - dlsource={attribution_code[json][dlsource]}
+ - --output
+ - /builds/worker/artifacts
+ # All jobs require attribution of target.installer.exe. Some may require
+ # attribution of other files, which they can append themselves.
+ - --input
+ - /builds/worker/fetches/target.installer.exe
+ command-context:
+ from-file: browser/installer/attribution.yml
+
+jobs:
+ win32-devedition/opt:
+ label: attribution-win32-{locale}-devedition/opt
+ shipping-product: devedition
+ attributes:
+ build_platform: win32-devedition
+ treeherder:
+ platform: win32-devedition/opt
+ dependencies:
+ repackage-signing-l10n: repackage-signing-l10n-{locale}-win32-devedition/opt
+
+ win32-shippable/opt:
+ label: attribution-win32-{locale}-shippable/opt
+ shipping-product: firefox
+ locale-file-platform: win32
+ attributes:
+ build_platform: win32-shippable
+ treeherder:
+ platform: win32-shippable/opt
+ dependencies:
+ repackage-signing-l10n: repackage-signing-l10n-{locale}-win32-shippable/opt
+
+ win64-devedition/opt:
+ label: attribution-win64-{locale}-devedition/opt
+ shipping-product: devedition
+ attributes:
+ build_platform: win64-devedition
+ treeherder:
+ platform: win64-devedition/opt
+ dependencies:
+ repackage-signing-l10n: repackage-signing-l10n-{locale}-win64-devedition/opt
+
+ win64-shippable/opt:
+ label: attribution-win64-{locale}-shippable/opt
+ shipping-product: firefox
+ locale-file-platform: win64
+ attributes:
+ build_platform: win64-shippable
+ treeherder:
+ platform: win64-shippable/opt
+ dependencies:
+ repackage-signing-l10n: repackage-signing-l10n-{locale}-win64-shippable/opt
+
+ win64-aarch64-shippable/opt:
+ label: attribution-win64-aarch64-{locale}-shippable/opt
+ shipping-product: firefox
+ locale-file-platform: win64-aarch64
+ attributes:
+ build_platform: win64-aarch64-shippable
+ treeherder:
+ platform: win64-aarch64-shippable/opt
+ dependencies:
+ repackage-signing-l10n: repackage-signing-l10n-{locale}-win64-aarch64-shippable/opt
+
+ win64-aarch64-devedition/opt:
+ label: attribution-win64-aarch64-{locale}-devedition/opt
+ shipping-product: devedition
+ attributes:
+ build_platform: win64-aarch64-devedition
+ treeherder:
+ platform: win64-aarch64-devedition/opt
+ dependencies:
+ repackage-signing-l10n: repackage-signing-l10n-{locale}-win64-aarch64-devedition/opt
diff --git a/taskcluster/ci/attribution/kind.yml b/taskcluster/ci/attribution/kind.yml
new file mode 100644
index 0000000000..3d9c903910
--- /dev/null
+++ b/taskcluster/ci/attribution/kind.yml
@@ -0,0 +1,125 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.attribution:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ # Windows
+ - repackage-signing
+
+job-defaults:
+ description: Attribute release builds
+ shipping-phase: promote
+ # never run as part of CI
+ run-on-projects: []
+ worker-type: b-linux-gcp
+ fetches:
+ repackage-signing:
+ - target.installer.exe
+ attributes:
+ release_artifacts:
+ - public/build/target.installer.exe
+ treeherder:
+ symbol: Attr
+ kind: other
+ tier: 1
+ worker:
+ artifacts:
+ - name: public/build
+ type: directory
+ path: /builds/worker/artifacts
+ docker-image:
+ in-tree: "partner-repack"
+ chain-of-trust: true
+ # Each task only processes one installer...this should be quick.
+ max-run-time: 600
+ run:
+ using: run-task
+ cwd: "{checkout}"
+ command:
+ - ./mach
+ - python
+ - python/mozrelease/mozrelease/attribute_builds.py
+ - --attribution
+ - dlsource={attribution_code[json][dlsource]}
+ - --output
+ - /builds/worker/artifacts
+ # All jobs require attribution of target.installer.exe. Some may require
+ # attribution of other files, which they can append themselves.
+ - --input
+ - /builds/worker/fetches/target.installer.exe
+ command-context:
+ from-file: browser/installer/attribution.yml
+
+jobs:
+ win32-devedition/opt:
+ label: attribution-win32-devedition/opt
+ shipping-product: devedition
+ attributes:
+ build_platform: win32-devedition
+ build_type: opt
+ treeherder:
+ platform: win32-devedition/opt
+ dependencies:
+ repackage-signing: repackage-signing-win32-devedition/opt
+
+ win32-shippable/opt:
+ label: attribution-win32-shippable/opt
+ shipping-product: firefox
+ attributes:
+ build_platform: win32-shippable
+ build_type: opt
+ treeherder:
+ platform: win32-shippable/opt
+ dependencies:
+ repackage-signing: repackage-signing-win32-shippable/opt
+
+ win64-devedition/opt:
+ label: attribution-win64-devedition/opt
+ shipping-product: devedition
+ attributes:
+ build_platform: win64-devedition
+ build_type: opt
+ treeherder:
+ platform: win64-devedition/opt
+ dependencies:
+ repackage-signing: repackage-signing-win64-devedition/opt
+
+ win64-shippable/opt:
+ label: attribution-win64-shippable/opt
+ shipping-product: firefox
+ attributes:
+ build_platform: win64-shippable
+ build_type: opt
+ treeherder:
+ platform: win64-shippable/opt
+ dependencies:
+ repackage-signing: repackage-signing-win64-shippable/opt
+
+ win64-aarch64-shippable/opt:
+ label: attribution-win64-aarch64-shippable/opt
+ shipping-product: firefox
+ attributes:
+ build_platform: win64-aarch64-shippable
+ build_type: opt
+ treeherder:
+ platform: win64-aarch64-shippable/opt
+ dependencies:
+ repackage-signing: repackage-signing-win64-aarch64-shippable/opt
+
+ win64-aarch64-devedition/opt:
+ label: attribution-win64-aarch64-devedition/opt
+ shipping-product: devedition
+ attributes:
+ build_platform: win64-aarch64-devedition
+ build_type: opt
+ treeherder:
+ platform: win64-aarch64-devedition/opt
+ dependencies:
+ repackage-signing: repackage-signing-win64-aarch64-devedition/opt
diff --git a/taskcluster/ci/balrog/kind.yml b/taskcluster/ci/balrog/kind.yml
new file mode 100644
index 0000000000..eda695f225
--- /dev/null
+++ b/taskcluster/ci/balrog/kind.yml
@@ -0,0 +1,31 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.balrog_submit:transforms
+ - gecko_taskgraph.transforms.scriptworker:add_balrog_scopes
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - beetmover-repackage
+ - startup-test
+
+only-for-attributes:
+ - nightly
+ - shippable
+
+not-for-build-platforms:
+ - android-arm-shippable/opt
+ - android-x86_64-shippable/opt
+ - android-x86-shippable/opt
+ - android-aarch64-shippable/opt
+
+job-template:
+ update-no-wnp:
+ by-release-type:
+ nightly.*: false
+ default: true
diff --git a/taskcluster/ci/beetmover-apt/kind.yml b/taskcluster/ci/beetmover-apt/kind.yml
new file mode 100644
index 0000000000..44762f49c2
--- /dev/null
+++ b/taskcluster/ci/beetmover-apt/kind.yml
@@ -0,0 +1,26 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release:run_on_releases
+ - gecko_taskgraph.transforms.beetmover_apt:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - beetmover-repackage
+
+primary-dependency:
+ - beetmover-repackage
+
+only-for-build-platforms:
+ - linux-shippable/opt
+ - linux64-shippable/opt
+ - linux-devedition/opt
+ - linux64-devedition/opt
+
+job-template:
+ run-on-releases:
+ - nightly
diff --git a/taskcluster/ci/beetmover-checksums/kind.yml b/taskcluster/ci/beetmover-checksums/kind.yml
new file mode 100644
index 0000000000..22cfecad02
--- /dev/null
+++ b/taskcluster/ci/beetmover-checksums/kind.yml
@@ -0,0 +1,26 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.beetmover_checksums:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - beetmover-repackage
+
+only-for-attributes:
+ - nightly
+ - shippable
+
+job-template:
+ shipping-phase: promote
+ attributes:
+ artifact_prefix: public
+ artifact_map:
+ by-release-type:
+ beta|release.*|esr.*: taskcluster/gecko_taskgraph/manifests/firefox_candidates_checksums.yml
+ default: taskcluster/gecko_taskgraph/manifests/firefox_nightly_checksums.yml
diff --git a/taskcluster/ci/beetmover-geckoview/kind.yml b/taskcluster/ci/beetmover-geckoview/kind.yml
new file mode 100644
index 0000000000..eab727f4ce
--- /dev/null
+++ b/taskcluster/ci/beetmover-geckoview/kind.yml
@@ -0,0 +1,64 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.beetmover_geckoview:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - build-signing
+
+only-for-attributes:
+ - nightly
+ - shippable
+
+not-for-build-platforms:
+ - linux-shippable/opt
+ - linux64-shippable/opt
+ - linux64-nightlyasrelease/opt
+ - macosx64-shippable/opt
+ - macosx64-nightlyasrelease/opt
+ - win32-shippable/opt
+ - win64-shippable/opt
+ - win64-aarch64-shippable/opt
+ - win64-nightlyasrelease/opt
+ - linux-devedition/opt
+ - linux64-devedition/opt
+ - macosx64-devedition/opt
+ - win32-devedition/opt
+ - win64-devedition/opt
+ - win64-aarch64-devedition/opt
+ - linux64-asan-reporter-shippable/opt
+ - win64-asan-reporter-shippable/opt
+
+job-template:
+ attributes:
+ artifact_map: taskcluster/gecko_taskgraph/manifests/fennec_geckoview.yml
+ run-on-projects: ['mozilla-release']
+ run-on-hg-branches:
+ by-project:
+ mozilla-release:
+ - '^GECKOVIEW_\d+_RELBRANCH$'
+ default:
+ - 'all'
+ shipping-phase:
+ by-project:
+ # Beetmoving geckoview makes it available to the official maven repo.
+ # That happens:
+ # 1. as part of the ship-geckoview graph on mozilla-central
+ # 2. as part of Firefox promote graphs on both mozilla-beta and mozilla-release
+ # 3. at every patch uplifted on the GECKOVIEW_XX_RELBRANCH on mozilla-release
+ # Reminder: There is no Android/geckoview build on ESR.
+ #
+ # The logic of point 2 is handled in target_tasks directly because it's mixing and
+ # matching 2 different shipping-products
+ mozilla-release: build
+ default: promote
+ bucket-scope:
+ by-release-level:
+ production: 'project:releng:beetmover:bucket:maven-production'
+ staging: 'project:releng:beetmover:bucket:maven-staging'
diff --git a/taskcluster/ci/beetmover-repackage/kind.yml b/taskcluster/ci/beetmover-repackage/kind.yml
new file mode 100644
index 0000000000..8d8d632408
--- /dev/null
+++ b/taskcluster/ci/beetmover-repackage/kind.yml
@@ -0,0 +1,67 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.multi_dep:loader
+
+group-by: single-locale
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.beetmover_repackage_l10n:transforms
+ - gecko_taskgraph.transforms.beetmover_repackage:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - build
+ - build-signing
+ - build-mac-signing
+ - build-mac-notarization
+ - repackage
+ - repackage-signing
+ - shippable-l10n
+ - shippable-l10n-signing
+ - shippable-l10n-mac-signing
+ - shippable-l10n-mac-notarization
+ - repackage-l10n
+ - repackage-signing-l10n
+ - partials
+ - partials-signing
+ - repackage-signing-msi
+ - repackage-signing-shippable-l10n-msix
+ - mar-signing
+ - mar-signing-l10n
+ # Windows
+ - attribution
+ # Windows
+ - attribution-l10n
+ - repackage-deb
+ - repackage-deb-l10n
+
+primary-dependency:
+ - repackage
+ - repackage-l10n
+
+only-for-build-platforms:
+ - linux-shippable/opt
+ - linux64-shippable/opt
+ - macosx64-shippable/opt
+ - win32-shippable/opt
+ - win64-shippable/opt
+ - win64-aarch64-shippable/opt
+ - linux-devedition/opt
+ - linux64-devedition/opt
+ - macosx64-devedition/opt
+ - win32-devedition/opt
+ - win64-devedition/opt
+ - win64-aarch64-devedition/opt
+ - linux64-asan-reporter-shippable/opt
+ - win64-asan-reporter-shippable/opt
+
+job-template:
+ shipping-phase: promote
+ attributes:
+ artifact_map:
+ by-release-type:
+ beta|release.*|esr.*: taskcluster/gecko_taskgraph/manifests/firefox_candidates.yml
+ default: taskcluster/gecko_taskgraph/manifests/firefox_nightly.yml
diff --git a/taskcluster/ci/beetmover-source/kind.yml b/taskcluster/ci/beetmover-source/kind.yml
new file mode 100644
index 0000000000..54e5751ff8
--- /dev/null
+++ b/taskcluster/ci/beetmover-source/kind.yml
@@ -0,0 +1,19 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.beetmover:transforms
+ - gecko_taskgraph.transforms.beetmover_source:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-source-signing
+
+job-template:
+ shipping-phase: promote
+ attributes:
+ artifact_map: taskcluster/gecko_taskgraph/manifests/source_files.yml
diff --git a/taskcluster/ci/bootstrap/kind.yml b/taskcluster/ci/bootstrap/kind.yml
new file mode 100644
index 0000000000..ce9518cc63
--- /dev/null
+++ b/taskcluster/ci/bootstrap/kind.yml
@@ -0,0 +1,80 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - toolchain
+
+transforms:
+ - gecko_taskgraph.transforms.bootstrap:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+jobs:
+ debian10:
+ image: debian:buster
+ pre-commands:
+ - apt-get update
+ - apt-get install -y --no-install-recommends curl mercurial python3-pip
+ debian11:
+ image: debian:bullseye
+ pre-commands:
+ - apt-get update
+ - apt-get install -y --no-install-recommends curl mercurial python3-pip
+ debian12:
+ image: debian:bookworm
+ pre-commands:
+ - apt-get update
+ - apt-get install -y --no-install-recommends curl mercurial python3-pip
+ ubuntu2204:
+ image: ubuntu:jammy
+ pre-commands:
+ - apt-get update
+ - apt-get install -y --no-install-recommends curl mercurial python3-pip
+ ubuntu2210:
+ image: ubuntu:kinetic
+ pre-commands:
+ - apt-get update
+ - apt-get install -y --no-install-recommends curl mercurial python3-pip
+ fedora36:
+ image: fedora:36
+ pre-commands:
+ - dnf install -y mercurial python3-pip
+ fedora37:
+ image: fedora:37
+ pre-commands:
+ - dnf install -y mercurial python3-pip
+ # Work around https://bz.mercurial-scm.org/show_bug.cgi?id=6761
+ - mkdir -p /etc/mercurial/hgrc.d
+ - (echo "[devel]"; echo discovery.randomize=false) > /etc/mercurial/hgrc.d/workaround.rc
+ rockylinux8:
+ image: rockylinux:8
+ pre-commands:
+ - dnf install -y mercurial python38-pip
+ opensuse-leap:
+ image: opensuse/leap
+ pre-commands:
+ - zypper install -y mercurial python39-pip python39-curses gzip
+ - ln -s /usr/bin/pip3.9 /usr/bin/pip3
+ opensuse-tumbleweed:
+ image: opensuse/tumbleweed
+ pre-commands:
+ - zypper install -y mercurial python3-pip
+ gentoo:
+ image: gentoo/stage3
+ pre-commands:
+ - emerge --sync
+ - emerge mercurial dev-python/pip
+ archlinux:
+ image: archlinux
+ pre-commands:
+ - pacman -Sy --noconfirm mercurial python-pip
+ voidlinux:
+ image: voidlinux/voidlinux
+ pre-commands:
+ - xbps-install -Suyv xbps
+ - xbps-install -Suyv curl mercurial python3-pip
+ # Work around https://bz.mercurial-scm.org/show_bug.cgi?id=6761
+ - mkdir -p /etc/mercurial/hgrc.d
+ - (echo "[devel]"; echo discovery.randomize=false) > /etc/mercurial/hgrc.d/workaround.rc
diff --git a/taskcluster/ci/bouncer-locations/kind.yml b/taskcluster/ci/bouncer-locations/kind.yml
new file mode 100644
index 0000000000..4234939369
--- /dev/null
+++ b/taskcluster/ci/bouncer-locations/kind.yml
@@ -0,0 +1,52 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - post-beetmover-dummy
+
+transforms:
+ - gecko_taskgraph.transforms.bouncer_locations:transforms
+ - gecko_taskgraph.transforms.release:run_on_releases
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ description: nightly bouncer locations job
+ attributes:
+ shippable: true
+ worker-type: bouncer
+ worker:
+ implementation: bouncer-locations
+ scopes:
+ by-project:
+ mozilla-central:
+ - project:releng:bouncer:action:locations
+ - project:releng:bouncer:server:production
+ default:
+ - project:releng:bouncer:action:locations
+ - project:releng:bouncer:server:staging
+ shipping-phase: ship
+ treeherder:
+ symbol: BncLoc
+ kind: other
+ tier: 1
+
+jobs:
+ firefox:
+ run-on-releases: ['nightly']
+ run-on-projects: ['mozilla-central']
+ shipping-product: firefox
+ bouncer-products:
+ - firefox-nightly-latest
+ - firefox-nightly-latest-ssl
+ - firefox-nightly-latest-l10n
+ - firefox-nightly-latest-l10n-ssl
+ - firefox-nightly-msi-latest-ssl
+ - firefox-nightly-msi-latest-l10n-ssl
+ - firefox-nightly-pkg-latest-ssl
+ - firefox-nightly-pkg-latest-l10n-ssl
+ treeherder:
+ platform: firefox-release/opt
diff --git a/taskcluster/ci/build-fat-aar/kind.yml b/taskcluster/ci/build-fat-aar/kind.yml
new file mode 100644
index 0000000000..ede0b4df1d
--- /dev/null
+++ b/taskcluster/ci/build-fat-aar/kind.yml
@@ -0,0 +1,167 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - build
+ - toolchain
+
+transforms:
+ - gecko_taskgraph.transforms.build:transforms
+ - gecko_taskgraph.transforms.build_attrs:transforms
+ - gecko_taskgraph.transforms.build_lints:transforms
+ - gecko_taskgraph.transforms.build_fat_aar:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.artifact:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ attributes:
+ artifact_map: taskcluster/gecko_taskgraph/manifests/fennec_geckoview.yml
+ index:
+ product: mobile
+ worker-type: b-linux-gcp
+ use-system-python: false
+ worker:
+ docker-image: {in-tree: android-build}
+ max-run-time: 7200
+ env:
+ # Online in order to download the per-architecture AARs.
+ GRADLE_USER_HOME: "/builds/worker/checkouts/build/gecko/mobile/android/gradle/dotgradle-online"
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest"
+ MOZ_ANDROID_FAT_AAR_ARCHITECTURES: "armeabi-v7a,arm64-v8a,x86,x86_64"
+ MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE: system
+ artifacts:
+ - name: public/build/maven
+ path: /builds/worker/workspace/obj-build/gradle/maven/
+ type: directory
+ - name: public/build
+ path: /builds/worker/artifacts/
+ type: directory
+ - name: public/build/geckoview-androidTest.apk
+ path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview/outputs/apk/androidTest/withGeckoBinaries/debug/geckoview-withGeckoBinaries-debug-androidTest.apk
+ type: file
+ - name: public/build/geckoview-test_runner.apk
+ path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/test_runner/outputs/apk/withGeckoBinaries/debug/test_runner-withGeckoBinaries-debug.apk
+ type: file
+ - name: public/build/geckoview-test_runner.aab
+ path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/test_runner/outputs/bundle/withGeckoBinariesDebug/test_runner-withGeckoBinaries-debug.aab
+ type: file
+ - name: public/build/geckoview_example.apk
+ path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview_example/outputs/apk/withGeckoBinaries/debug/geckoview_example-withGeckoBinaries-debug.apk
+ type: file
+ - name: public/build/geckoview_example.aab
+ path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview_example/outputs/bundle/withGeckoBinariesDebug/geckoview_example-withGeckoBinaries-debug.aab
+ type: file
+ run:
+ using: mozharness
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ mozconfig-variant: null
+ tooltool-downloads: internal
+ # Note: These settings are only honored by nightly (i.e. shipping) builds
+ update-channel:
+ by-release-type:
+ nightly: nightly
+ nightly-oak: nightly-oak
+ beta:
+ by-shipping-product:
+ devedition: aurora
+ default: beta
+ release.*: release
+ esr.*: esr
+ default:
+ by-project:
+ try: nightly-try
+ default: null
+ fetches:
+ toolchain:
+ - android-ndk-linux
+ - android-sdk-linux
+ - linux64-binutils
+ - linux64-clang
+ - linux64-jdk
+ - linux64-rust-android
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-nasm
+ - linux64-node
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+jobs:
+ android-geckoview-fat-aar-shippable/opt:
+ description: "Android GeckoView multi-architecture fat AAR Shippable"
+ attributes:
+ shippable: true
+ enable-full-crashsymbols: true
+ disable-push-apk: true
+ maven_packages:
+ - geckoview
+ shipping-phase: build
+ shipping-product: fennec
+ index:
+ job-name: android-geckoview-fat-aar-opt
+ type: shippable-with-multi-l10n
+ treeherder:
+ platform: android-5-0-geckoview-fat-aar-shippable/opt
+ symbol: Bgv
+ dependencies:
+ android-x86-shippable: build-android-x86-shippable/opt
+ android-x86_64-shippable: build-android-x86_64-shippable/opt
+ android-arm-shippable: build-android-arm-shippable/opt
+ android-aarch64-shippable: build-android-aarch64-shippable/opt
+ worker:
+ env:
+ PERFHERDER_EXTRA_OPTIONS: android-geckoview-fat-aar-nightly
+ run:
+ actions: [get-secrets, build, multi-l10n]
+ config:
+ - builds/releng_base_android_64_builds.py
+ - taskcluster_nightly.py
+ custom-build-variant-cfg: arm
+ fetches:
+ toolchain:
+ - android-gradle-dependencies
+ optimization:
+ skip-unless-backstop: null
+
+ android-geckoview-fat-aar-shippable-lite/opt:
+ description: "Android GeckoView Lite multi-architecture fat AAR Shippable"
+ attributes:
+ shippable: true
+ enable-full-crashsymbols: true
+ disable-push-apk: true
+ maven_packages:
+ - geckoview
+ - geckoview-exoplayer2
+ shipping-phase: build
+ shipping-product: fennec
+ index:
+ job-name: android-geckoview-fat-aar-opt-lite
+ type: shippable-with-multi-l10n
+ treeherder:
+ platform: android-4-1-geckoview-fat-aar-shippable/opt
+ symbol: Bgvl
+ dependencies:
+ android-x86-shippable-lite: build-android-x86-shippable-lite/opt
+ android-x86_64-shippable-lite: build-android-x86_64-shippable-lite/opt
+ android-arm-shippable-lite: build-android-arm-shippable-lite/opt
+ android-aarch64-shippable-lite: build-android-aarch64-shippable-lite/opt
+ worker:
+ env:
+ PERFHERDER_EXTRA_OPTIONS: android-geckoview-fat-aar-nightly-lite
+ run:
+ actions: [get-secrets, build, multi-l10n]
+ config:
+ - builds/releng_base_android_64_builds.py
+ - taskcluster_nightly.py
+ custom-build-variant-cfg: arm-lite
+ fetches:
+ toolchain:
+ - android-gradle-dependencies-lite
+ optimization:
+ skip-unless-backstop: null
diff --git a/taskcluster/ci/build-mac-notarization/kind.yml b/taskcluster/ci/build-mac-notarization/kind.yml
new file mode 100644
index 0000000000..fd20f843e4
--- /dev/null
+++ b/taskcluster/ci/build-mac-notarization/kind.yml
@@ -0,0 +1,29 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.mac_notarization:transforms
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.signing:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - build-mac-signing
+
+only-for-attributes:
+ - shippable
+
+job-template:
+ treeherder:
+ symbol: BMN
+ upstream-artifacts:
+ - taskType: signing
+ paths:
+ - public/build/target.tar.gz
+ - public/build/target.pkg
+ formats: ["apple_notarization"]
+ taskId:
+ task-reference: <build-mac-signing>
diff --git a/taskcluster/ci/build-mac-signing/kind.yml b/taskcluster/ci/build-mac-signing/kind.yml
new file mode 100644
index 0000000000..2708396073
--- /dev/null
+++ b/taskcluster/ci/build-mac-signing/kind.yml
@@ -0,0 +1,28 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.build_signing:transforms
+ - gecko_taskgraph.transforms.signing:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - build
+
+only-for-attributes:
+ - enable-build-signing
+
+only-for-build-platforms:
+ - macosx64-shippable/opt
+ - macosx64-devedition/opt
+ - macosx64/opt
+ - macosx64/debug
+
+job-template:
+ treeherder:
+ symbol: BMS
+ enable-signing-routes: false
diff --git a/taskcluster/ci/build-signing/kind.yml b/taskcluster/ci/build-signing/kind.yml
new file mode 100644
index 0000000000..c7248258c6
--- /dev/null
+++ b/taskcluster/ci/build-signing/kind.yml
@@ -0,0 +1,33 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.multi_dep:loader
+
+group-by: platform
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.upstream_artifact_task:transforms
+ - gecko_taskgraph.transforms.build_signing:transforms
+ - gecko_taskgraph.transforms.signing:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - build
+ - build-fat-aar
+
+primary-dependency:
+ - build
+ - build-fat-aar
+
+only-for-attributes:
+ - nightly
+ - shippable
+ - enable-build-signing
+
+not-for-build-platforms:
+ - macosx64-shippable/opt
+ - macosx64-devedition/opt
+ - macosx64/opt
+ - macosx64/debug
diff --git a/taskcluster/ci/build/android-asan.yml b/taskcluster/ci/build/android-asan.yml
new file mode 100644
index 0000000000..4cc846dece
--- /dev/null
+++ b/taskcluster/ci/build/android-asan.yml
@@ -0,0 +1,75 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ attributes:
+ artifact_map: taskcluster/gecko_taskgraph/manifests/fennec_geckoview.yml
+ maven_packages:
+ - geckoview
+ index:
+ product: mobile
+ worker:
+ docker-image: {in-tree: android-build}
+ max-run-time: 7200
+ env:
+ GRADLE_USER_HOME: "/builds/worker/checkouts/gecko/mobile/android/gradle/dotgradle-offline"
+ artifacts:
+ - name: public/build/maven
+ path: /builds/worker/workspace/obj-build/gradle/maven/
+ type: directory
+ - name: public/build/geckoview-androidTest.apk
+ path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview/outputs/apk/androidTest/withGeckoBinaries/debug/geckoview-withGeckoBinaries-debug-androidTest.apk
+ type: file
+ - name: public/build/geckoview-test_runner.apk
+ path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/test_runner/outputs/apk/withGeckoBinaries/debug/test_runner-withGeckoBinaries-debug.apk
+ type: file
+ - name: public/build/geckoview_example.apk
+ path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview_example/outputs/apk/withGeckoBinaries/debug/geckoview_example-withGeckoBinaries-debug.apk
+ type: file
+ - name: public/build
+ path: /builds/worker/artifacts/
+ type: directory
+ run:
+ using: mozharness
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ mozconfig-variant: null
+ tooltool-downloads: internal
+ fetches:
+ toolchain:
+ - android-ndk-linux
+ - android-sdk-linux
+ - linux64-jdk
+ - linux64-rust-android
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-nasm
+ - linux64-node
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+android-x86_64-asan-fuzzing/opt:
+ description: "Android 5.0 x86-64 Fuzzing Opt ASAN"
+ index:
+ job-name: android-x86_64-fuzzing-asan
+ treeherder:
+ platform: android-5-0-x86_64/asan
+ symbol: Bof
+ worker-type: b-linux-large-gcp
+ worker:
+ env:
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android-x86/releng.manifest"
+ run:
+ actions: [get-secrets, build]
+ config: ["builds/releng_base_android_64_builds.py"]
+ custom-build-variant-cfg: fuzzing-asan-tc
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-sccache
+ - android-gradle-dependencies
+ optimization:
+ skip-unless-expanded: null
diff --git a/taskcluster/ci/build/android-stuff.yml b/taskcluster/ci/build/android-stuff.yml
new file mode 100644
index 0000000000..52bed7b18f
--- /dev/null
+++ b/taskcluster/ci/build/android-stuff.yml
@@ -0,0 +1,53 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ tags:
+ android-stuff: "true"
+ run:
+ mozconfig-variant: null
+
+android-geckoview-docs/opt:
+ description: "Android GeckoView docs"
+ index:
+ product: mobile
+ job-name: android-geckoview-docs
+ treeherder:
+ platform: android-4-1-armv7/opt
+ kind: build
+ tier: 2
+ symbol: A(gv-docs)
+ run-on-projects: [mozilla-central-only]
+ worker-type: b-linux-gcp
+ worker:
+ docker-image: {in-tree: android-build}
+ env:
+ GRADLE_USER_HOME: "/builds/worker/checkouts/gecko/mobile/android/gradle/dotgradle-offline"
+ PERFHERDER_EXTRA_OPTIONS: android-geckoview-docs
+ GECKOVIEW_DOCS_UPLOAD_SECRET: "project/releng/gecko/build/level-{level}/geckoview-docs-upload"
+ artifacts:
+ - name: public/android/geckoview-docs/geckoview-javadoc.jar
+ path: /builds/worker/workspace/obj-build/mobile/android/geckoview/docs/javadoc/withGeckoBinaries-debug/geckoview-javadoc.jar
+ type: file
+ max-run-time: 7200
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_android_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: android-geckoview-docs
+ tooltool-downloads: internal
+ fetches:
+ toolchain:
+ - android-gradle-dependencies
+ - android-sdk-linux
+ - linux64-jdk
+ - linux64-node
+ optimization:
+ skip-unless-changed:
+ - "mobile/android/**/*.java"
+ - "mobile/android/gradle.configure"
+ - "**/*.gradle"
diff --git a/taskcluster/ci/build/android.yml b/taskcluster/ci/build/android.yml
new file mode 100644
index 0000000000..74d2be208a
--- /dev/null
+++ b/taskcluster/ci/build/android.yml
@@ -0,0 +1,641 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ attributes:
+ artifact_map: taskcluster/gecko_taskgraph/manifests/fennec_geckoview.yml
+ maven_packages:
+ - geckoview
+ index:
+ product: mobile
+ worker:
+ docker-image: {in-tree: android-build}
+ max-run-time: 7200
+ env:
+ GRADLE_USER_HOME: "/builds/worker/checkouts/gecko/mobile/android/gradle/dotgradle-offline"
+ artifacts:
+ - name: public/build/maven
+ path: /builds/worker/workspace/obj-build/gradle/maven/
+ type: directory
+ - name: public/build/geckoview-androidTest.apk
+ path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview/outputs/apk/androidTest/withGeckoBinaries/debug/geckoview-withGeckoBinaries-debug-androidTest.apk
+ type: file
+ - name: public/build/geckoview-test_runner.apk
+ path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/test_runner/outputs/apk/withGeckoBinaries/debug/test_runner-withGeckoBinaries-debug.apk
+ type: file
+ - name: public/build/geckoview-test_runner.aab
+ path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/test_runner/outputs/bundle/withGeckoBinariesDebug/test_runner-withGeckoBinaries-debug.aab
+ type: file
+ - name: public/build/geckoview_example.apk
+ path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview_example/outputs/apk/withGeckoBinaries/debug/geckoview_example-withGeckoBinaries-debug.apk
+ type: file
+ - name: public/build/geckoview_example.aab
+ path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview_example/outputs/bundle/withGeckoBinariesDebug/geckoview_example-withGeckoBinaries-debug.aab
+ type: file
+ - name: public/build
+ path: /builds/worker/artifacts/
+ type: directory
+ run:
+ using: mozharness
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ mozconfig-variant: null
+ tooltool-downloads: internal
+ fetches:
+ toolchain:
+ - android-ndk-linux
+ - android-sdk-linux
+ - linux64-binutils
+ - linux64-jdk
+ - linux64-rust-android
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-nasm
+ - linux64-node
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+android-arm/debug:
+ description: "Android 5.0 Arm Debug"
+ index:
+ job-name: android-arm-debug
+ attributes:
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: android-5-0-armv7/debug
+ symbol: B
+ worker-type: b-linux-gcp
+ worker:
+ env:
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest"
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ actions: [get-secrets, build]
+ config: ["builds/releng_base_android_64_builds.py"]
+ custom-build-variant-cfg: arm-debug
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-sccache
+ - android-gradle-dependencies
+
+android-x86/opt:
+ description: "Android 5.0 x86 Opt"
+ index:
+ job-name: android-x86-opt
+ attributes:
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: android-5-0-x86/opt
+ symbol: B
+ run-on-projects: ['integration']
+ worker-type: b-linux-gcp
+ worker:
+ env:
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android-x86/releng.manifest"
+ run:
+ actions: [get-secrets, build]
+ config: ["builds/releng_base_android_64_builds.py"]
+ custom-build-variant-cfg: x86
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-sccache
+ - android-gradle-dependencies
+
+android-x86-lite/opt:
+ description: "Android 4.1 x86 Opt"
+ index:
+ job-name: android-x86-lite-opt
+ attributes:
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: android-4-1-x86/opt
+ symbol: Bl
+ run-on-projects: ['integration']
+ worker-type: b-linux-gcp
+ worker:
+ env:
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android-x86/releng.manifest"
+ PERFHERDER_EXTRA_OPTIONS: lite
+ run:
+ actions: [get-secrets, build]
+ config: ["builds/releng_base_android_64_builds.py"]
+ custom-build-variant-cfg: x86-lite
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-sccache
+ - android-gradle-dependencies-lite
+
+android-x86-shippable/opt:
+ description: "Android 5.0 x86 Shippable"
+ use-pgo: true
+ attributes:
+ enable-full-crashsymbols: true
+ shippable: true
+ shipping-phase: build
+ shipping-product: fennec
+ index:
+ job-name: android-x86-opt
+ type: android-shippable
+ treeherder:
+ platform: android-5-0-x86-shippable/opt
+ symbol: B
+ run-on-projects: ['release']
+ worker-type: b-linux-gcp
+ worker:
+ env:
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android-x86/releng.manifest"
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ actions: [get-secrets, build, multi-l10n]
+ config:
+ - builds/releng_base_android_64_builds.py
+ - taskcluster_nightly.py
+ custom-build-variant-cfg: x86
+ fetches:
+ toolchain:
+ - linux64-clang
+ - android-gradle-dependencies
+
+android-x86-shippable-lite/opt:
+ description: "Android 4.1 x86 Shippable Lite"
+ use-pgo: android-x86-shippable/opt
+ attributes:
+ enable-full-crashsymbols: true
+ shippable: true
+ shipping-phase: build
+ shipping-product: fennec
+ index:
+ job-name: android-x86-lite-opt
+ type: android-shippable
+ treeherder:
+ platform: android-4-1-x86-shippable-lite/opt
+ symbol: Bl
+ run-on-projects: ['release']
+ worker-type: b-linux-gcp
+ worker:
+ env:
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android-x86/releng.manifest"
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ actions: [get-secrets, build, multi-l10n]
+ config:
+ - builds/releng_base_android_64_builds.py
+ - taskcluster_nightly.py
+ custom-build-variant-cfg: x86-lite
+ fetches:
+ toolchain:
+ - linux64-clang
+ - android-gradle-dependencies-lite
+
+android-arm/opt:
+ description: "Android 5.0 Arm Opt"
+ index:
+ job-name: android-arm-opt
+ attributes:
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: android-5-0-armv7/opt
+ symbol: B
+ run-on-projects: ['integration']
+ worker-type: b-linux-gcp
+ worker:
+ env:
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest"
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ actions: [get-secrets, build]
+ config: ["builds/releng_base_android_64_builds.py"]
+ custom-build-variant-cfg: arm
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - android-gradle-dependencies
+ - linux64-sccache
+
+android-arm-lite/opt:
+ description: "Android 4.1 Arm Opt Lite"
+ index:
+ job-name: android-arm-lite-opt
+ attributes:
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: android-4-1-armv7/opt
+ symbol: Bl
+ run-on-projects: ['integration']
+ worker-type: b-linux-gcp
+ worker:
+ env:
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest"
+ run:
+ actions: [get-secrets, build]
+ config: ["builds/releng_base_android_64_builds.py"]
+ custom-build-variant-cfg: arm-lite
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-sccache
+ - android-gradle-dependencies-lite
+
+android-arm-shippable/opt:
+ description: "Android 5.0 Arm Shippable"
+ use-pgo: android-x86-shippable/opt
+ attributes:
+ enable-full-crashsymbols: true
+ shippable: true
+ shipping-phase: build
+ shipping-product: fennec
+ index:
+ job-name: android-arm-opt
+ type: android-shippable-with-multi-l10n
+ treeherder:
+ platform: android-5-0-armv7-shippable/opt
+ symbol: Bpgo(B)
+ run-on-projects: ['release']
+ worker-type: b-linux-gcp
+ worker:
+ env:
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest"
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ actions: [get-secrets, build, multi-l10n]
+ config:
+ - builds/releng_base_android_64_builds.py
+ - taskcluster_nightly.py
+ custom-build-variant-cfg: arm
+ fetches:
+ toolchain:
+ - linux64-clang
+ - android-gradle-dependencies
+
+android-arm-shippable-lite/opt:
+ description: "Android 4.1 Arm Shippable Lite"
+ use-pgo: android-x86-shippable/opt
+ attributes:
+ enable-full-crashsymbols: true
+ shippable: true
+ shipping-phase: build
+ shipping-product: fennec
+ index:
+ job-name: android-arm-lite-opt
+ type: android-shippable-with-multi-l10n
+ treeherder:
+ platform: android-4-1-armv7-shippable-lite/opt
+ symbol: Bpgo(Bl)
+ run-on-projects: ['release']
+ worker-type: b-linux-gcp
+ worker:
+ env:
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest"
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ actions: [get-secrets, build, multi-l10n]
+ config:
+ - builds/releng_base_android_64_builds.py
+ - taskcluster_nightly.py
+ custom-build-variant-cfg: arm-lite
+ fetches:
+ toolchain:
+ - linux64-clang
+ - android-gradle-dependencies-lite
+
+android-aarch64/opt:
+ description: "Android 5.0 AArch64 Opt"
+ index:
+ job-name: android-aarch64-opt
+ attributes:
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: android-5-0-aarch64/opt
+ symbol: B
+ run-on-projects: ['integration']
+ worker-type: b-linux-gcp
+ worker:
+ env:
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest"
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ actions: [get-secrets, build]
+ config: ["builds/releng_base_android_64_builds.py"]
+ custom-build-variant-cfg: aarch64
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-sccache
+ - android-gradle-dependencies
+
+android-aarch64-lite/opt:
+ description: "Android 5.0 AArch64 Opt Lite"
+ index:
+ job-name: android-aarch64-lite-opt
+ attributes:
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: android-5-0-aarch64/opt
+ symbol: Bl
+ run-on-projects: ['integration']
+ worker-type: b-linux-gcp
+ worker:
+ env:
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest"
+ PERFHERDER_EXTRA_OPTIONS: lite
+ run:
+ actions: [get-secrets, build]
+ config: ["builds/releng_base_android_64_builds.py"]
+ custom-build-variant-cfg: aarch64-lite
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-sccache
+ - android-gradle-dependencies-lite
+
+android-aarch64/debug:
+ description: "Android 5.0 AArch64 Debug"
+ index:
+ job-name: android-aarch64-debug
+ attributes:
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: android-5-0-aarch64/debug
+ symbol: B
+ worker-type: b-linux-gcp
+ worker:
+ env:
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest"
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ actions: [get-secrets, build]
+ config: ["builds/releng_base_android_64_builds.py"]
+ custom-build-variant-cfg: aarch64-debug
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-sccache
+ - android-gradle-dependencies
+
+android-aarch64-shippable/opt:
+ description: "Android 5.0 AArch64 Shippable"
+ use-pgo: android-x86_64-shippable/opt
+ attributes:
+ enable-full-crashsymbols: true
+ shippable: true
+ shipping-phase: build
+ shipping-product: fennec
+ index:
+ job-name: android-aarch64-opt
+ type: android-shippable
+ treeherder:
+ platform: android-5-0-aarch64-shippable/opt
+ symbol: Bpgo(B)
+ run-on-projects: ['release']
+ worker-type: b-linux-gcp
+ worker:
+ env:
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest"
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ actions: [get-secrets, build, multi-l10n]
+ config:
+ - builds/releng_base_android_64_builds.py
+ - taskcluster_nightly.py
+ custom-build-variant-cfg: aarch64
+ fetches:
+ toolchain:
+ - linux64-clang
+ - android-gradle-dependencies
+
+android-aarch64-shippable-lite/opt:
+ description: "Android 5.0 AArch64 Shippable Lite"
+ use-pgo: android-x86_64-shippable/opt
+ attributes:
+ enable-full-crashsymbols: true
+ shippable: true
+ shipping-phase: build
+ shipping-product: fennec
+ index:
+ job-name: android-aarch64-lite-opt
+ type: android-shippable
+ treeherder:
+ platform: android-5-0-aarch64-shippable-lite/opt
+ symbol: Bpgo(Bl)
+ run-on-projects: ['release']
+ worker-type: b-linux-gcp
+ worker:
+ env:
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest"
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ PERFHERDER_EXTRA_OPTIONS: lite
+ run:
+ actions: [get-secrets, build, multi-l10n]
+ config:
+ - builds/releng_base_android_64_builds.py
+ - taskcluster_nightly.py
+ custom-build-variant-cfg: aarch64-lite
+ fetches:
+ toolchain:
+ - linux64-clang
+ - android-gradle-dependencies-lite
+
+android-x86_64/opt:
+ description: "Android 5.0 x86-64 Opt"
+ index:
+ job-name: android-x86_64-opt
+ attributes:
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: android-5-0-x86_64/opt
+ symbol: B
+ run-on-projects: ['integration']
+ worker-type: b-linux-gcp
+ worker:
+ env:
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android-x86/releng.manifest"
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ actions: [get-secrets, build]
+ config: ["builds/releng_base_android_64_builds.py"]
+ custom-build-variant-cfg: x86_64
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-sccache
+ - android-gradle-dependencies
+
+android-x86_64-lite/opt:
+ description: "Android 5.0 x86-64 Opt Lite"
+ index:
+ job-name: android-x86_64-lite-opt
+ attributes:
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: android-5-0-x86_64/opt
+ symbol: Bl
+ run-on-projects: ['integration']
+ worker-type: b-linux-gcp
+ worker:
+ env:
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android-x86/releng.manifest"
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ PERFHERDER_EXTRA_OPTIONS: lite
+ run:
+ actions: [get-secrets, build]
+ config: ["builds/releng_base_android_64_builds.py"]
+ custom-build-variant-cfg: x86_64-lite
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-sccache
+ - android-gradle-dependencies-lite
+
+android-x86_64-fuzzing/debug:
+ description: "Android x86_64 Fuzzing Debug"
+ index:
+ job-name: android-x86_64-fuzzing-debug
+ treeherder:
+ platform: android-5-0-x86_64/debug
+ symbol: Bf
+ worker-type: b-linux-gcp
+ worker:
+ env:
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android-x86/releng.manifest"
+ PERFHERDER_EXTRA_OPTIONS: fuzzing
+ run:
+ actions: [get-secrets, build]
+ config: ["builds/releng_base_android_64_builds.py"]
+ custom-build-variant-cfg: fuzzing-debug
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-sccache
+ - android-gradle-dependencies
+ optimization:
+ skip-unless-expanded: null
+
+android-x86_64-shippable/opt:
+ description: "Android 5.0 x86-64 Shippable"
+ use-pgo: true
+ attributes:
+ enable-full-crashsymbols: true
+ shippable: true
+ shipping-phase: build
+ shipping-product: fennec
+ index:
+ job-name: android-x86_64-opt
+ type: android-shippable
+ treeherder:
+ platform: android-5-0-x86_64-shippable/opt
+ symbol: B
+ run-on-projects: ['release']
+ worker-type: b-linux-gcp
+ worker:
+ env:
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android-x86/releng.manifest"
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ actions: [get-secrets, build, multi-l10n]
+ config:
+ - builds/releng_base_android_64_builds.py
+ - taskcluster_nightly.py
+ custom-build-variant-cfg: x86_64
+ fetches:
+ toolchain:
+ - linux64-clang
+ - android-gradle-dependencies
+
+android-x86_64-shippable-lite/opt:
+ description: "Android 5.0 x86-64 Shippable Lite"
+ use-pgo: android-x86_64-shippable/opt
+ attributes:
+ enable-full-crashsymbols: true
+ shippable: true
+ shipping-phase: build
+ shipping-product: fennec
+ index:
+ job-name: android-x86_64-lite-opt
+ type: android-shippable
+ treeherder:
+ platform: android-5-0-x86_64-shippable-lite/opt
+ symbol: Bl
+ run-on-projects: ['release']
+ worker-type: b-linux-gcp
+ worker:
+ env:
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android-x86/releng.manifest"
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ PERFHERDER_EXTRA_OPTIONS: lite
+ run:
+ actions: [get-secrets, build, multi-l10n]
+ config:
+ - builds/releng_base_android_64_builds.py
+ - taskcluster_nightly.py
+ custom-build-variant-cfg: x86_64-lite
+ fetches:
+ toolchain:
+ - linux64-clang
+ - android-gradle-dependencies-lite
+
+android-x86_64/debug:
+ description: "Android 5.0 x86-64 Debug"
+ index:
+ job-name: android-x86_64-debug
+ attributes:
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: android-5-0-x86_64/debug
+ symbol: B
+ worker-type: b-linux-gcp
+ worker:
+ env:
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android-x86/releng.manifest"
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ actions: [get-secrets, build]
+ config: ["builds/releng_base_android_64_builds.py"]
+ custom-build-variant-cfg: x86_64-debug
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-sccache
+ - android-gradle-dependencies
+
+android-x86_64/debug-isolated-process:
+ description: "Android 5.0 x86-64 Debug with Isolated Process"
+ index:
+ job-name: android-x86_64-debug-isolated-process
+ attributes:
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: android-5-0-x86_64/debug-isolated-process
+ symbol: Bip
+ worker-type: b-linux-gcp
+ worker:
+ env:
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android-x86/releng.manifest"
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ PERFHERDER_EXTRA_OPTIONS: isolated-process
+ run:
+ actions: [get-secrets, build]
+ config: ["builds/releng_base_android_64_builds.py"]
+ custom-build-variant-cfg: x86_64-debug-isolated-process
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-sccache
+ - android-gradle-dependencies
diff --git a/taskcluster/ci/build/kind.yml b/taskcluster/ci/build/kind.yml
new file mode 100644
index 0000000000..c87d17428d
--- /dev/null
+++ b/taskcluster/ci/build/kind.yml
@@ -0,0 +1,85 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - toolchain
+ - fetch
+ - generate-profile
+
+transforms:
+ - gecko_taskgraph.transforms.build:transforms
+ - gecko_taskgraph.transforms.build_attrs:transforms
+ - gecko_taskgraph.transforms.build_lints:transforms
+ - gecko_taskgraph.transforms.release_notifications:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.artifact:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+jobs-from:
+ - android.yml
+ - android-asan.yml
+ - android-stuff.yml
+ - linux.yml
+ - linux-base-toolchains.yml
+ - macosx.yml
+ - macosx-native.yml
+ - windows.yml
+ - windows-mingw.yml
+
+job-defaults:
+ worker:
+ env:
+ MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE: system
+ use-system-python: false
+ run:
+ mozconfig-variant:
+ by-release-type:
+ beta: beta
+ release.*: release
+ # We keep using the release configs as the beta and release configs are
+ # identical except for
+ # https://searchfox.org/mozilla-central/rev/ce9ff94ffed34dc17ec0bfa406156d489eaa8ee1/browser/config/mozconfigs/linux32/release#1 # noqa
+ esr.*: release
+ default: nightly
+ # Note: These settings are only honored by nightly (i.e. shipping) builds
+ update-channel:
+ by-release-type:
+ nightly: nightly
+ nightly-oak: nightly-oak
+ beta:
+ by-shipping-product:
+ devedition: aurora
+ default: beta
+ release.*: release
+ esr.*: esr
+ default:
+ by-project:
+ try: nightly-try
+ default: null
+ # ACCEPTED_MAR_CHANNEL_IDS should usually be the same as the value MAR_CHANNEL_ID.
+ # If more than one ID is needed, then you should use a comma separated list
+ # of values.
+ # The MAR_CHANNEL_ID must not contain the following 3 characters: ",\t "
+ mar-channel-id:
+ by-release-type:
+ nightly.*: firefox-mozilla-central
+ beta:
+ by-shipping-product:
+ devedition: firefox-mozilla-aurora
+ default: firefox-mozilla-beta
+ release.*: firefox-mozilla-release
+ esr.*: firefox-mozilla-esr
+ default: firefox-mozilla-central
+ accepted-mar-channel-ids:
+ by-release-type:
+ nightly.*: firefox-mozilla-central
+ beta:
+ by-shipping-product:
+ devedition: firefox-mozilla-aurora
+ default: firefox-mozilla-beta,firefox-mozilla-release
+ release.*: firefox-mozilla-release
+ esr.*: firefox-mozilla-esr
+ default: firefox-mozilla-central
diff --git a/taskcluster/ci/build/linux-base-toolchains.yml b/taskcluster/ci/build/linux-base-toolchains.yml
new file mode 100644
index 0000000000..c52bcec67b
--- /dev/null
+++ b/taskcluster/ci/build/linux-base-toolchains.yml
@@ -0,0 +1,160 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# We have these build jobs in a separate file because their definitions are
+# different enough from the main Linux build jobs that their presence in
+# linux.yml would make using job-defaults there significantly less useful.
+---
+job-defaults:
+ worker-type: b-linux-gcp
+
+linux64-base-toolchains/opt:
+ description: "Linux64 base toolchains Opt"
+ index:
+ product: firefox
+ job-name: linux64-base-toolchains-opt
+ treeherder:
+ platform: linux64/opt
+ symbol: Bb
+ run-on-projects: ['mozilla-central']
+ worker:
+ max-run-time: 7200
+ env:
+ PERFHERDER_EXTRA_OPTIONS: base-toolchains
+ FORCE_GCC: '1'
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ tooltool-downloads: public
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-binutils-2.31.1
+ - linux64-clang-base
+ - linux64-gcc-base
+ - linux64-rust-base
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-sccache
+ - linux64-nasm-2.14.02
+ - linux64-node-12
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+
+linux64-base-toolchains/debug:
+ description: "Linux64 base toolchains Debug"
+ index:
+ product: firefox
+ job-name: linux64-base-toolchains-debug
+ treeherder:
+ platform: linux64/debug
+ symbol: Bb
+ optimization:
+ skip-unless-expanded: null
+ worker:
+ max-run-time: 7200
+ env:
+ PERFHERDER_EXTRA_OPTIONS: base-toolchains
+ FORCE_GCC: '1'
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: debug
+ mozconfig-variant: debug
+ tooltool-downloads: public
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-binutils-2.31.1
+ - linux64-clang-base
+ - linux64-gcc-base
+ - linux64-rust-base
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-sccache
+ - linux64-nasm-2.14.02
+ - linux64-node-12
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+
+linux64-base-toolchains-clang/opt:
+ description: "Linux64 base toolchains clang Opt"
+ index:
+ product: firefox
+ job-name: linux64-base-toolchains-clang-opt
+ treeherder:
+ platform: linux64/opt
+ symbol: Bbc
+ run-on-projects: ['mozilla-central']
+ worker:
+ max-run-time: 7200
+ env:
+ PERFHERDER_EXTRA_OPTIONS: base-toolchains-clang
+ DISABLE_CLANG_PLUGIN: '1'
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ tooltool-downloads: public
+ fetches:
+ toolchain:
+ - linux64-clang-base
+ - linux64-rust-base
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-nasm-2.14.02
+ - linux64-node-12
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+
+linux64-base-toolchains-clang/debug:
+ description: "Linux64 base toolchains clang Debug"
+ index:
+ product: firefox
+ job-name: linux64-base-toolchains-clang-debug
+ treeherder:
+ platform: linux64/debug
+ symbol: Bbc
+ optimization:
+ skip-unless-expanded: null
+ worker:
+ max-run-time: 5400
+ env:
+ PERFHERDER_EXTRA_OPTIONS: base-toolchains-clang
+ DISABLE_CLANG_PLUGIN: '1'
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: debug
+ mozconfig-variant: debug
+ tooltool-downloads: public
+ fetches:
+ toolchain:
+ - linux64-clang-base
+ - linux64-rust-base
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-nasm-2.14.02
+ - linux64-node-12
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
diff --git a/taskcluster/ci/build/linux.yml b/taskcluster/ci/build/linux.yml
new file mode 100644
index 0000000000..e34d5660a5
--- /dev/null
+++ b/taskcluster/ci/build/linux.yml
@@ -0,0 +1,1744 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ worker-type: b-linux-gcp
+
+linux64/opt:
+ description: "Linux64 Opt"
+ index:
+ product: firefox
+ job-name: linux64-opt
+ attributes:
+ enable-build-signing: true
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: linux64/opt
+ symbol: B
+ worker:
+ max-run-time: 7200
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ # bug 1690154 - enable full symbols on all branches, but only
+ # upload them on the official set. In conjunction with
+ # `enable-full-crashsymbols`.
+ MOZ_ENABLE_FULL_SYMBOLS: "1"
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ tooltool-downloads: public
+ run-on-projects: ['integration']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-sccache
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+linux64-x11/opt:
+ description: "Linux64 Opt (X11-only)"
+ index:
+ product: firefox
+ job-name: linux64-x11-opt
+ treeherder:
+ platform: linux64/opt
+ symbol: Bx
+ tier: 2
+ worker:
+ max-run-time: 7200
+ env:
+ PERFHERDER_EXTRA_OPTIONS: x11
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ run-on-projects: ['integration']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-sccache
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu-x11
+ - sysroot-wasm32-wasi
+
+linux64-plain/opt:
+ description: "Linux64 Opt Plain"
+ index:
+ product: firefox
+ job-name: linux64-plain-opt
+ treeherder:
+ platform: linux64/opt
+ symbol: Bp
+ tier: 1
+ worker:
+ max-run-time: 5400
+ env:
+ PERFHERDER_EXTRA_OPTIONS: plain
+ run:
+ using: mozharness
+ actions: [build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: mozharness/scripts/fx_desktop_build.py
+ tooltool-downloads: public
+ extra-config:
+ disable_package_metrics: true
+ mozconfig-variant: plain-opt
+ run-on-projects: ['mozilla-central']
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ optimization:
+ skip-unless-expanded: null
+
+linux64-non-unified/plain:
+ description: "Linux64 Plain Hybrid"
+ index:
+ product: firefox
+ job-name: linux64-non-unified-plain
+ treeherder:
+ platform: linux64/plain
+ symbol: Bp-nu
+ tier: 1
+ worker:
+ max-run-time: 5400
+ env:
+ PERFHERDER_EXTRA_OPTIONS: non-unified
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ tooltool-downloads: public
+ extra-config:
+ disable_package_metrics: true
+ mozconfig-variant: non-unified
+ run-on-projects: ['integration']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-sccache
+ - linux64-dump_syms
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+linux64-gcc/opt:
+ description: "Linux64 GCC Opt"
+ index:
+ product: firefox
+ job-name: linux64-gcc-opt
+ treeherder:
+ platform: linux64/opt
+ symbol: Bgcc
+ tier: 2
+ run-on-projects: ['mozilla-central']
+ worker:
+ max-run-time: 7200
+ env:
+ PERFHERDER_EXTRA_OPTIONS: gcc
+ FORCE_GCC: '1'
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ tooltool-downloads: public
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-binutils
+ - linux64-clang
+ - linux64-gcc-11
+ - linux64-rust
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-sccache
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+linux64-plain-clang-trunk/opt:
+ description: "Linux64 Opt Plain with clang trunk"
+ index:
+ product: firefox
+ job-name: linux64-plain-opt-ct
+ treeherder:
+ platform: linux64/opt
+ symbol: Bp-clang-trunk
+ tier: 2
+ worker:
+ max-run-time: 5400
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ PERFHERDER_EXTRA_OPTIONS: plain-clang-trunk
+ run:
+ using: mozharness
+ actions: [build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: mozharness/scripts/fx_desktop_build.py
+ tooltool-downloads: public
+ extra-config:
+ disable_package_metrics: true
+ mozconfig-variant: plain-opt-trunk
+ run-on-projects: []
+ fetches:
+ toolchain:
+ - linux64-clang-trunk
+ - linux64-rust
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-toolchain-sysroot
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ optimization:
+ skip-unless-expanded: null
+
+linux64-fuzzing/debug:
+ description: "Linux64 Fuzzing Debug"
+ index:
+ product: firefox
+ job-name: linux64-fuzzing-debug
+ attributes:
+ # The gtest libxul contains libFuzzer targets
+ skip-verify-test-packaging: true
+ treeherder:
+ platform: linux64/debug
+ symbol: Bf
+ worker:
+ max-run-time: 5400
+ env:
+ PERFHERDER_EXTRA_OPTIONS: fuzzing
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: fuzzing-debug
+ mozconfig-variant: debug-fuzzing
+ tooltool-downloads: public
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-llvm-symbolizer
+ - linux64-sccache
+ - linux64-rust
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ optimization:
+ skip-unless-expanded: null
+
+linux64-fuzzing-noopt/debug:
+ description: "Linux64 Fuzzing No-optimize Debug"
+ index:
+ product: firefox
+ job-name: linux64-fuzzing-noopt-debug
+ attributes:
+ # The gtest libxul contains libFuzzer targets
+ skip-verify-test-packaging: true
+ treeherder:
+ platform: linux64-noopt/debug
+ symbol: Bf
+ worker:
+ max-run-time: 5400
+ env:
+ PERFHERDER_EXTRA_OPTIONS: fuzzing-noopt-debug
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: fuzzing-debug
+ mozconfig-variant: debug-fuzzing-noopt
+ tooltool-downloads: public
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-llvm-symbolizer
+ - linux64-sccache
+ - linux64-rust
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ optimization:
+ skip-unless-expanded: null
+
+linux64/debug:
+ description: "Linux64 Debug"
+ index:
+ product: firefox
+ job-name: linux64-debug
+ attributes:
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: linux64/debug
+ symbol: B
+ worker:
+ max-run-time: 5400
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ # bug 1690154 - enable full symbols on all branches, but only
+ # upload them on the official set. In conjunction with
+ # `enable-full-crashsymbols`.
+ MOZ_ENABLE_FULL_SYMBOLS: "1"
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: debug
+ mozconfig-variant: debug
+ tooltool-downloads: public
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-sccache
+ - linux64-rust
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+linux64-plain/debug:
+ description: "Linux64 Debug Plain"
+ index:
+ product: firefox
+ job-name: linux64-plain-debug
+ treeherder:
+ platform: linux64/debug
+ symbol: Bp
+ tier: 1
+ worker:
+ max-run-time: 5400
+ env:
+ PERFHERDER_EXTRA_OPTIONS: plain
+ run:
+ using: mozharness
+ actions: [build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ extra-config:
+ disable_package_metrics: true
+ mozconfig-variant: plain-debug
+ script: mozharness/scripts/fx_desktop_build.py
+ tooltool-downloads: public
+ run-on-projects: [trunk]
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ optimization:
+ skip-unless-expanded: null
+
+linux64-devedition/opt:
+ description: "Linux64 devedition (shippable)"
+ use-pgo: linux64-shippable/opt
+ attributes:
+ shippable: true
+ enable-full-crashsymbols: true
+ shipping-phase: build
+ shipping-product: devedition
+ index:
+ product: devedition
+ job-name: linux64-opt
+ type: shippable
+ treeherder:
+ platform: linux64-devedition/opt
+ symbol: B
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ # bug 1690154 - enable full symbols on all branches, but only
+ # upload them on the official set. In conjunction with
+ # `enable-full-crashsymbols`.
+ MOZ_ENABLE_FULL_SYMBOLS: "1"
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ - taskcluster_nightly.py
+ extra-config:
+ stage_platform: 'linux64-devedition'
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ tooltool-downloads: public
+ mozconfig-variant: devedition
+ run-on-projects: ['mozilla-beta']
+ fetches:
+ toolchain:
+ - linux64-binutils
+ - linux64-clang
+ - linux64-rust
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+linux/opt:
+ description: "Linux32 Opt"
+ index:
+ product: firefox
+ job-name: linux-opt
+ attributes:
+ enable-build-signing: true
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: linux32/opt
+ symbol: B
+ worker:
+ max-run-time: 7200
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_32_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ tooltool-downloads: public
+ run-on-projects:
+ - 'mozilla-beta'
+ - 'mozilla-release'
+ - 'mozilla-esr102'
+ - 'mozilla-esr115'
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-sccache
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-i686-linux-gnu
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+linux-fuzzing/debug:
+ description: "Linux32 Fuzzing Debug"
+ index:
+ product: firefox
+ job-name: linux-fuzzing-debug
+ attributes:
+ # The gtest libxul contains libFuzzer targets
+ skip-verify-test-packaging: true
+ treeherder:
+ platform: linux32/debug
+ symbol: Bf
+ worker:
+ max-run-time: 5400
+ env:
+ PERFHERDER_EXTRA_OPTIONS: fuzzing
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_32_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: fuzzing-debug
+ mozconfig-variant: debug-fuzzing
+ tooltool-downloads: public
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux32-llvm-symbolizer
+ - linux64-sccache
+ - linux64-rust
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-i686-linux-gnu
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ optimization:
+ skip-unless-expanded: null
+
+linux/debug:
+ description: "Linux32 Debug"
+ index:
+ product: firefox
+ job-name: linux-debug
+ attributes:
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: linux32/debug
+ symbol: B
+ worker:
+ max-run-time: 5400
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_32_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: debug
+ mozconfig-variant: debug
+ tooltool-downloads: public
+ run-on-projects: ['release']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-sccache
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-i686-linux-gnu
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+linux-rusttests/opt:
+ description: "Linux32 Rust Tests Opt"
+ index:
+ product: firefox
+ job-name: linux-rusttests-opt
+ treeherder:
+ platform: linux32/opt
+ symbol: BR
+ tier: 1
+ worker:
+ max-run-time: 2700
+ env:
+ PERFHERDER_EXTRA_OPTIONS: rusttests
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_32_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: rusttests
+ mozconfig-variant: rusttests
+ tooltool-downloads: public
+ keep-artifacts: false
+ run-on-projects: ['mozilla-central']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-sccache
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-i686-linux-gnu
+ - sysroot-x86_64-linux-gnu
+ optimization:
+ test-inclusive: [rusttests]
+
+linux-rusttests/debug:
+ description: "Linux32 Rust Tests Debug"
+ index:
+ product: firefox
+ job-name: linux-rusttests-debug
+ treeherder:
+ platform: linux32/debug
+ symbol: BR
+ tier: 1
+ worker:
+ max-run-time: 2700
+ env:
+ PERFHERDER_EXTRA_OPTIONS: rusttests
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_32_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: rusttests-debug
+ mozconfig-variant: rusttests-debug
+ tooltool-downloads: public
+ keep-artifacts: false
+ run-on-projects: ['mozilla-central']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-sccache
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-i686-linux-gnu
+ - sysroot-x86_64-linux-gnu
+ optimization:
+ test-inclusive: [rusttests]
+
+linux-devedition/opt:
+ description: "Linux32 devedition (shippable)"
+ use-pgo: linux-shippable/opt
+ attributes:
+ shippable: true
+ enable-full-crashsymbols: true
+ shipping-phase: build
+ shipping-product: devedition
+ index:
+ product: devedition
+ job-name: linux-opt
+ type: shippable
+ treeherder:
+ platform: linux32-devedition/opt
+ symbol: B
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_32_builds.py
+ - taskcluster_nightly.py
+ extra-config:
+ stage_platform: linux-devedition
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ tooltool-downloads: public
+ mozconfig-variant: devedition
+ run-on-projects: ['mozilla-beta']
+ fetches:
+ toolchain:
+ - linux64-binutils
+ - linux64-clang
+ - linux64-rust
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-i686-linux-gnu
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+linux-shippable/opt:
+ description: "Linux32 Shippable"
+ use-pgo: true
+ attributes:
+ shippable: true
+ enable-full-crashsymbols: true
+ shipping-phase: build
+ shipping-product: firefox
+ index:
+ product: firefox
+ job-name: linux-opt
+ type: shippable
+ treeherder:
+ platform: linux32-shippable/opt
+ symbol: Bpgo(B)
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 9000
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_32_builds.py
+ - taskcluster_nightly.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ tooltool-downloads: public
+ run-on-projects: ['release']
+ fetches:
+ toolchain:
+ - linux64-binutils
+ - linux64-clang
+ - linux64-rust
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-i686-linux-gnu
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+linux-reproduced/opt:
+ description: "Linux32 Reproduced"
+ use-pgo: linux-shippable/opt
+ shipping-phase: build
+ shipping-product: firefox
+ index:
+ product: firefox
+ job-name: linux-reproduced-opt
+ treeherder:
+ platform: linux32-shippable/opt
+ symbol: Bpgo(repr)
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 9000
+ env:
+ PERFHERDER_EXTRA_OPTIONS: repr
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_32_builds.py
+ - taskcluster_nightly.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ tooltool-downloads: public
+ # Original comment: Limited to trunk until bug 1596350 is fixed.
+ # Addendum: Do not run on autoland, Bug 1599197
+ run-on-projects: ['mozilla-central', 'comm-central']
+ fetches:
+ toolchain:
+ - linux64-binutils
+ - linux64-clang
+ - linux64-rust
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-i686-linux-gnu
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+linux-asan-fuzzing/opt:
+ description: "Linux32 Fuzzing Opt ASAN"
+ index:
+ product: firefox
+ job-name: linux-fuzzing-asan-opt
+ attributes:
+ # The gtest libxul contains libFuzzer targets
+ skip-verify-test-packaging: true
+ treeherder:
+ platform: linux32/asan
+ symbol: Bof
+ worker:
+ env:
+ PERFHERDER_EXTRA_OPTIONS: asan-fuzzing
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ max-run-time: 5400
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_32_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: fuzzing-asan-tc
+ mozconfig-variant: nightly-fuzzing-asan
+ tooltool-downloads: public
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux32-llvm-symbolizer
+ - linux64-sccache
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-i686-linux-gnu
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ optimization:
+ skip-unless-expanded: null
+
+linux64-reproduced/opt:
+ description: "Linux64 Reproduced"
+ use-pgo: linux64-shippable/opt
+ shipping-phase: build
+ shipping-product: firefox
+ index:
+ product: firefox
+ job-name: linux64-reproduced-opt
+ treeherder:
+ platform: linux64-shippable/opt
+ symbol: Bpgo(repr)
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 9000
+ env:
+ PERFHERDER_EXTRA_OPTIONS: repr
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ - taskcluster_nightly.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ tooltool-downloads: public
+ # Original comment: Limited to trunk until bug 1596350 is fixed.
+ # Addendum: Do not run on autoland, Bug 1599197
+ run-on-projects: ['mozilla-central', 'comm-central']
+ fetches:
+ toolchain:
+ - linux64-binutils
+ - linux64-clang
+ - linux64-rust
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+linux64-asan/opt:
+ description: "Linux64 Opt ASAN"
+ index:
+ product: firefox
+ job-name: linux64-asan-opt
+ treeherder:
+ platform: linux64/asan
+ symbol: Bo
+ worker:
+ env:
+ PERFHERDER_EXTRA_OPTIONS: "opt asan"
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ max-run-time: 5400
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: asan-tc
+ mozconfig-variant: nightly-asan
+ tooltool-downloads: public
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-dev
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-llvm-symbolizer
+ - linux64-sccache
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+linux64-tsan/opt:
+ description: "Linux64 Opt TSAN"
+ index:
+ product: firefox
+ job-name: linux64-tsan-opt
+ treeherder:
+ platform: linux64/tsan
+ symbol: Bo
+ worker:
+ env:
+ PERFHERDER_EXTRA_OPTIONS: "opt tsan"
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ max-run-time: 5400
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: tsan-tc
+ mozconfig-variant: tsan
+ tooltool-downloads: public
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-dev
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-llvm-symbolizer
+ - linux64-sccache
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+linux64-tsan-fuzzing/opt:
+ description: "Linux64 Fuzzing Opt TSAN"
+ index:
+ product: firefox
+ job-name: linux64-fuzzing-tsan-opt
+ attributes:
+ # The gtest libxul contains libFuzzer targets
+ skip-verify-test-packaging: true
+ treeherder:
+ platform: linux64/tsan
+ symbol: Bof
+ worker:
+ env:
+ PERFHERDER_EXTRA_OPTIONS: tsan-fuzzing
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ max-run-time: 5400
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: fuzzing-tsan-tc
+ mozconfig-variant: tsan-fuzzing
+ tooltool-downloads: public
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-dev
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-llvm-symbolizer
+ - linux64-sccache
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ optimization:
+ skip-unless-expanded: null
+
+linux64-asan-fuzzing/noopt:
+ description: "Linux64 Fuzzing No-optimize ASAN"
+ index:
+ product: firefox
+ job-name: linux64-fuzzing-asan-noopt
+ attributes:
+ # The gtest libxul contains libFuzzer targets
+ skip-verify-test-packaging: true
+ treeherder:
+ platform: linux64-noopt/asan
+ symbol: Bf
+ worker:
+ env:
+ PERFHERDER_EXTRA_OPTIONS: asan-fuzzing-noopt
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ max-run-time: 5400
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: fuzzing-asan-tc
+ mozconfig-variant: nightly-fuzzing-asan-noopt
+ tooltool-downloads: public
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-dev
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-llvm-symbolizer
+ - linux64-sccache
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ optimization:
+ skip-unless-expanded: null
+
+linux64-asan-fuzzing-nyx/opt:
+ description: "Linux64 Fuzzing Opt ASAN NYX"
+ index:
+ product: firefox
+ job-name: linux64-fuzzing-asan-nyx-opt
+ attributes:
+ # The gtest libxul contains libFuzzer targets
+ skip-verify-test-packaging: true
+ treeherder:
+ platform: linux64/asan
+ symbol: Bonf
+ worker:
+ env:
+ PERFHERDER_EXTRA_OPTIONS: asan-fuzzing-nyx
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ AFL_CC: /builds/worker/fetches/clang/bin/clang
+ AFL_CXX: /builds/worker/fetches/clang/bin/clang++
+ max-run-time: 7200
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: fuzzing-asan-tc
+ mozconfig-variant: nightly-fuzzing-asan-nyx
+ tooltool-downloads: public
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-afl-instrumentation
+ - linux64-clang
+ - linux64-rust-dev
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-llvm-symbolizer
+ - linux64-sccache
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ optimization:
+ skip-unless-expanded: null
+
+linux64-asan-fuzzing/opt:
+ description: "Linux64 Fuzzing Opt ASAN"
+ index:
+ product: firefox
+ job-name: linux64-fuzzing-asan-opt
+ attributes:
+ # The gtest libxul contains libFuzzer targets
+ skip-verify-test-packaging: true
+ treeherder:
+ platform: linux64/asan
+ symbol: Bof
+ worker:
+ env:
+ PERFHERDER_EXTRA_OPTIONS: asan-fuzzing
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ max-run-time: 5400
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: fuzzing-asan-tc
+ mozconfig-variant: nightly-fuzzing-asan
+ tooltool-downloads: public
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-dev
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-llvm-symbolizer
+ - linux64-sccache
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ optimization:
+ skip-unless-expanded: null
+
+linux64-asan-fuzzing-ccov/opt:
+ description: "Linux64 Fuzzing Opt ASAN w/ Coverage"
+ index:
+ product: firefox
+ job-name: linux64-ccov-fuzzing-asan-opt
+ attributes:
+ # The gtest libxul contains libFuzzer targets
+ skip-verify-test-packaging: true
+ treeherder:
+ platform: linux64/asan
+ symbol: Bocf
+ run-on-projects: ['mozilla-central']
+ worker:
+ env:
+ PERFHERDER_EXTRA_OPTIONS: asan-fuzzing-ccov
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ max-run-time: 5400
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ mozconfig-variant: asan-fuzzing-ccov
+ tooltool-downloads: public
+ use-sccache: false
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-llvm-symbolizer
+ - linux64-sccache
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+linux64-fuzzing-ccov/opt:
+ description: "Linux64 Fuzzing Opt w/ Coverage"
+ index:
+ product: firefox
+ job-name: linux64-ccov-fuzzing-opt
+ treeherder:
+ platform: linux64/opt
+ symbol: Bocf
+ run-on-projects: ['mozilla-central']
+ worker:
+ max-run-time: 5400
+ env:
+ PERFHERDER_EXTRA_OPTIONS: fuzzing-ccov
+ RUSTC_BOOTSTRAP: '1'
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ mozconfig-variant: fuzzing-ccov
+ tooltool-downloads: public
+ use-sccache: false
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-llvm-symbolizer
+ - linux64-rust
+ - linux64-rust-size
+ - linux64-sccache
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ optimization:
+ skip-unless-expanded: null
+
+linux64-asan-reporter-shippable/opt:
+ description: "Linux64 Opt ASAN Reporter (Shippable)"
+ attributes:
+ shippable: true
+ shipping-product:
+ by-release-type:
+ nightly: firefox
+ default: null
+ index:
+ product: firefox
+ job-name: linux64-asan-reporter-opt
+ type: shippable
+ treeherder:
+ platform: linux64-asan-reporter/opt
+ symbol: BoR
+ run-on-projects: ['mozilla-central']
+ worker-type: b-linux-gcp
+ worker:
+ env:
+ PERFHERDER_EXTRA_OPTIONS: asan-reporter
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ max-run-time: 3600
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ - taskcluster_nightly.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: asan-reporter-tc
+ mozconfig-variant: nightly-asan-reporter
+ tooltool-downloads: public
+ mar-channel-id:
+ firefox-mozilla-central-asan
+ accepted-mar-channel-ids:
+ firefox-mozilla-central-asan
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-llvm-symbolizer
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+linux64-asan/debug:
+ description: "Linux64 Debug ASAN"
+ index:
+ product: firefox
+ job-name: linux64-asan-debug
+ treeherder:
+ platform: linux64/asan
+ symbol: Bd
+ worker:
+ env:
+ PERFHERDER_EXTRA_OPTIONS: "debug asan"
+ max-run-time: 5400
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: asan-tc-and-debug
+ mozconfig-variant: debug-asan
+ tooltool-downloads: public
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-dev
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-llvm-symbolizer
+ - linux64-sccache
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ optimization:
+ skip-unless-expanded: null
+
+linux64-shippable/opt:
+ description: "Linux64 Shippable"
+ use-pgo: true
+ attributes:
+ shippable: true
+ enable-full-crashsymbols: true
+ shipping-phase: build
+ shipping-product: firefox
+ index:
+ product: firefox
+ job-name: linux64-opt
+ type: shippable
+ treeherder:
+ platform: linux64-shippable/opt
+ symbol: Bpgo(B)
+ run-on-projects: ['release']
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 9000
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ # bug 1690154 - enable full symbols on all branches, but only
+ # upload them on the official set. In conjunction with
+ # `enable-full-crashsymbols`.
+ MOZ_ENABLE_FULL_SYMBOLS: "1"
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ - taskcluster_nightly.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ tooltool-downloads: public
+ fetches:
+ toolchain:
+ - linux64-binutils
+ - linux64-clang
+ - linux64-rust
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+linux64-nightlyasrelease/opt:
+ description: "Linux64 Nightly-As-Release"
+ use-pgo: linux64-shippable/opt
+ attributes:
+ enable-full-crashsymbols: true
+ index:
+ product: firefox
+ job-name: linux64-nightlyasrelease-opt
+ treeherder:
+ platform: linux64-nightlyasrelease/opt
+ symbol: Bpgo(Bnar)
+ run-on-projects: [trunk-only]
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 9000
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ # bug 1690154 - enable full symbols on all branches, but only
+ # upload them on the official set. In conjunction with
+ # `enable-full-crashsymbols`.
+ MOZ_ENABLE_FULL_SYMBOLS: "1"
+ PERFHERDER_EXTRA_OPTIONS: nightly-as-release
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ - taskcluster_nightly.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ mozconfig-variant: nightly-as-release
+ secrets: true
+ tooltool-downloads: public
+ fetches:
+ toolchain:
+ - linux64-binutils
+ - linux64-clang
+ - linux64-rust
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+linux64-noopt/debug:
+ description: "Linux64 No-optimize Debug"
+ index:
+ product: firefox
+ job-name: linux64-noopt-debug
+ treeherder:
+ platform: linux64-noopt/debug
+ symbol: B
+ tier: 2
+ attributes:
+ enable-full-crashsymbols: true
+ worker:
+ max-run-time: 5400
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: noopt-debug
+ mozconfig-variant: noopt-debug
+ tooltool-downloads: public
+ keep-artifacts: false
+ run-on-projects: ['mozilla-central']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-sccache
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+linux64-rusttests/opt:
+ description: "Linux64 Rust Tests Opt"
+ index:
+ product: firefox
+ job-name: linux64-rusttests-opt
+ treeherder:
+ platform: linux64/opt
+ symbol: BR
+ tier: 1
+ worker:
+ max-run-time: 2700
+ env:
+ PERFHERDER_EXTRA_OPTIONS: rusttests
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: rusttests
+ mozconfig-variant: rusttests
+ tooltool-downloads: public
+ keep-artifacts: false
+ run-on-projects: ['mozilla-central']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-sccache
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ optimization:
+ test-inclusive: [rusttests]
+
+linux64-rusttests/debug:
+ description: "Linux64 Rust Tests Debug"
+ index:
+ product: firefox
+ job-name: linux64-rusttests-debug
+ treeherder:
+ platform: linux64/debug
+ symbol: BR
+ tier: 1
+ worker:
+ max-run-time: 2700
+ env:
+ PERFHERDER_EXTRA_OPTIONS: rusttests
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: rusttests-debug
+ mozconfig-variant: rusttests-debug
+ tooltool-downloads: public
+ keep-artifacts: false
+ run-on-projects: ['trunk']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-sccache
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ optimization:
+ test-inclusive: [rusttests]
+
+linux64-ccov/opt:
+ description: "Linux64-CCov Opt"
+ index:
+ product: firefox
+ job-name: linux64-ccov-opt
+ treeherder:
+ platform: linux64-ccov/opt
+ symbol: B
+ tier: 2
+ run-on-projects: ['mozilla-central']
+ worker:
+ artifacts:
+ - name: public/code-coverage-grcov.zip
+ path: /builds/worker/workspace/obj-build/code-coverage-grcov.zip
+ type: file
+ max-run-time: 7200
+ env:
+ RUSTC_BOOTSTRAP: '1'
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: code-coverage-opt
+ mozconfig-variant: code-coverage-opt
+ tooltool-downloads: public
+ use-sccache: false
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-sccache
+ - linux64-nasm
+ - linux64-node
+ - linux64-grcov
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+linux64-ccov/debug:
+ description: "Linux64-CCov Debug"
+ index:
+ product: firefox
+ job-name: linux64-ccov-debug
+ treeherder:
+ platform: linux64-ccov/debug
+ symbol: B
+ tier: 2
+ run-on-projects: []
+ worker:
+ max-run-time: 7200
+ env:
+ RUSTC_BOOTSTRAP: '1'
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: code-coverage-debug
+ mozconfig-variant: code-coverage-debug
+ tooltool-downloads: public
+ use-sccache: false
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-sccache
+ - linux64-nasm
+ - linux64-node
+ - linux64-grcov
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+linux64-add-on-devel/opt:
+ description: "Linux64 add-on-devel"
+ index:
+ product: firefox
+ job-name: linux64-add-on-devel
+ treeherder:
+ platform: linux64-add-on-devel/opt
+ symbol: B
+ tier: 2
+ worker:
+ max-run-time: 3600
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: add-on-devel
+ mozconfig-variant: add-on-devel
+ tooltool-downloads: public
+ run-on-projects: ['mozilla-beta', 'mozilla-release']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-sccache
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+linux64-aarch64/opt:
+ description: "Linux64 aarch64 Opt"
+ use-pgo: linux64-shippable/opt
+ index:
+ product: firefox
+ job-name: linux64-aarch64-opt
+ attributes:
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: linux64-aarch64/opt
+ symbol: B
+ tier: 2
+ worker:
+ max-run-time: 7200
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ extra-config:
+ mozconfig_platform: linux64-aarch64
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ mozconfig-variant: opt
+ tooltool-downloads: public
+ run-on-projects: ['integration']
+ fetches:
+ toolchain:
+ - linux64-binutils
+ - linux64-clang
+ - linux64-rust
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-aarch64-linux-gnu
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ optimization:
+ skip-unless-expanded: null
diff --git a/taskcluster/ci/build/macosx-native.yml b/taskcluster/ci/build/macosx-native.yml
new file mode 100644
index 0000000000..ad77b6e5aa
--- /dev/null
+++ b/taskcluster/ci/build/macosx-native.yml
@@ -0,0 +1,145 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ index:
+ product: firefox
+ worker-type: b-osx-1015
+ worker:
+ max-run-time: 7200
+ run:
+ using: mozharness
+ script: "mozharness/scripts/fx_desktop_build.py"
+
+macosx64-plain/opt:
+ description: "MacOS X x64 Opt Plain"
+ index:
+ job-name: macosx64-plain-opt
+ treeherder:
+ symbol: Bp
+ platform: osx/opt
+ tier: 1
+ worker:
+ env:
+ PERFHERDER_EXTRA_OPTIONS: plain
+ run:
+ actions: [build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/taskcluster_base_macosx.py
+ extra-config:
+ disable_package_metrics: true
+ stage_platform: macosx64
+ mozconfig_platform: macosx64
+ mozconfig-variant: plain-opt
+ run-on-projects: ['mozilla-central']
+ fetches:
+ toolchain:
+ - macosx64-clang
+ - macosx64-cbindgen
+ - macosx64-nasm
+ - macosx64-node
+ - macosx64-rust
+ - macosx64-sdk
+ - sysroot-wasm32-wasi
+ optimization:
+ skip-unless-expanded: null
+
+macosx64-plain/debug:
+ description: "MacOS X x64 Debug Plain"
+ index:
+ job-name: macosx64-plain-debug
+ treeherder:
+ symbol: Bp
+ platform: osx/debug
+ tier: 1
+ worker:
+ env:
+ PERFHERDER_EXTRA_OPTIONS: plain
+ run:
+ actions: [build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/taskcluster_base_macosx.py
+ extra-config:
+ disable_package_metrics: true
+ stage_platform: macosx64
+ mozconfig_platform: macosx64
+ mozconfig-variant: plain-debug
+ run-on-projects: ['trunk']
+ fetches:
+ toolchain:
+ - macosx64-clang
+ - macosx64-cbindgen
+ - macosx64-nasm
+ - macosx64-node
+ - macosx64-rust
+ - macosx64-sdk
+ - sysroot-wasm32-wasi
+ optimization:
+ skip-unless-expanded: null
+
+macosx64-rusttests/opt:
+ description: "MacOS X x64 Rust Tests Opt"
+ index:
+ job-name: macosx64-rusttests-opt
+ treeherder:
+ platform: macosx64/opt
+ symbol: BR
+ tier: 1
+ worker:
+ env:
+ PERFHERDER_EXTRA_OPTIONS: rusttests
+ run:
+ actions: [build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/taskcluster_base_macosx.py
+ - builds/releng_sub_mac_configs/rusttests.py
+ extra-config:
+ mozconfig_platform: macosx64
+ mozconfig-variant: rusttests
+ run-on-projects: ['mozilla-central']
+ fetches:
+ toolchain:
+ - macosx64-clang
+ - macosx64-rust
+ - macosx64-cbindgen
+ - macosx64-nasm
+ - macosx64-node
+ - macosx64-sdk
+ optimization:
+ test-inclusive: [rusttests]
+
+macosx64-rusttests/debug:
+ description: "MacOS X x64 Rust Tests Debug"
+ index:
+ job-name: macosx64-rusttests-debug
+ treeherder:
+ platform: macosx64/debug
+ symbol: BR
+ tier: 1
+ worker:
+ env:
+ PERFHERDER_EXTRA_OPTIONS: rusttests
+ run:
+ actions: [build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/taskcluster_base_macosx.py
+ - builds/releng_sub_mac_configs/rusttests.py
+ extra-config:
+ mozconfig_platform: macosx64
+ mozconfig-variant: rusttests-debug
+ run-on-projects: ['trunk']
+ fetches:
+ toolchain:
+ - macosx64-clang
+ - macosx64-rust
+ - macosx64-cbindgen
+ - macosx64-nasm
+ - macosx64-node
+ - macosx64-sdk
+ optimization:
+ test-inclusive: [rusttests]
diff --git a/taskcluster/ci/build/macosx.yml b/taskcluster/ci/build/macosx.yml
new file mode 100644
index 0000000000..b8c2325893
--- /dev/null
+++ b/taskcluster/ci/build/macosx.yml
@@ -0,0 +1,829 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ index:
+ product: firefox
+ worker-type: b-linux-gcp
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ secrets: true
+ script: "mozharness/scripts/fx_desktop_build.py"
+ fetches:
+ toolchain:
+ - linux64-dump_syms
+ - linux64-hfsplus
+ - linux64-libdmg
+ - linux64-rust-macos
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-nasm
+ - linux64-node
+ - sysroot-x86_64-linux-gnu
+
+macosx64/debug:
+ description: "MacOS X x64 Cross-compile"
+ index:
+ job-name: macosx64-debug
+ attributes:
+ enable-build-signing: true
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: osx-cross/debug
+ symbol: B
+ tier: 1
+ worker:
+ max-run-time: 5400
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_mac_64_cross_builds.py
+ custom-build-variant-cfg: cross-debug
+ mozconfig-variant: debug
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - linux64-clang
+ - linux64-sccache
+ - macosx64-sdk
+ - sysroot-wasm32-wasi
+
+macosx64-non-unified/plain:
+ description: "MacOS X x64 Hybrid Cross-compile"
+ index:
+ job-name: macosx64-non-unified
+ treeherder:
+ platform: osx-cross/plain
+ symbol: Bp-nu
+ tier: 1
+ worker:
+ max-run-time: 5400
+ env:
+ PERFHERDER_EXTRA_OPTIONS: non-unified
+ run:
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_mac_64_cross_builds.py
+ mozconfig-variant: non-unified
+ extra-config:
+ disable_package_metrics: true
+ use-sccache: true
+ run-on-projects: ['integration']
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - linux64-clang
+ - linux64-sccache
+ - macosx64-sdk
+ - sysroot-wasm32-wasi
+
+macosx64/opt:
+ description: "MacOS X x64 Cross-compile"
+ index:
+ job-name: macosx64-opt
+ attributes:
+ enable-build-signing: true
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: osx-cross/opt
+ symbol: B
+ tier: 1
+ worker:
+ max-run-time: 7200
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_mac_64_cross_builds.py
+ run-on-projects: ['integration']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - linux64-clang
+ - linux64-sccache
+ - macosx64-sdk
+ - sysroot-wasm32-wasi
+
+macosx64-asan-fuzzing/opt:
+ description: "MacOS X x64 Cross-compile Fuzzing ASAN"
+ index:
+ job-name: macosx64-fuzzing-asan-opt
+ attributes:
+ # The gtest libxul contains libFuzzer targets
+ skip-verify-test-packaging: true
+ treeherder:
+ platform: osx-cross/asan
+ symbol: Bof
+ worker:
+ max-run-time: 5400
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ PERFHERDER_EXTRA_OPTIONS: asan-fuzzing
+ run:
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_mac_64_cross_builds.py
+ custom-build-variant-cfg: cross-fuzzing-asan
+ mozconfig-variant: nightly-fuzzing-asan
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - linux64-clang
+ - linux64-sccache
+ - macosx64-llvm-symbolizer
+ - macosx64-sdk
+ - sysroot-wasm32-wasi
+ optimization:
+ skip-unless-expanded: null
+
+macosx64-fuzzing/debug:
+ description: "MacOS X x64 Cross-compile Fuzzing Debug"
+ index:
+ job-name: macosx64-fuzzing-debug
+ attributes:
+ enable-full-crashsymbols: true
+ # The gtest libxul contains libFuzzer targets
+ skip-verify-test-packaging: true
+ treeherder:
+ platform: osx-cross/debug
+ symbol: Bf
+ worker:
+ max-run-time: 5400
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ PERFHERDER_EXTRA_OPTIONS: fuzzing
+ run:
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_mac_64_cross_builds.py
+ custom-build-variant-cfg: cross-fuzzing-debug
+ mozconfig-variant: debug-fuzzing
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - linux64-clang
+ - linux64-sccache
+ - macosx64-sdk
+ - sysroot-wasm32-wasi
+ optimization:
+ skip-unless-expanded: null
+
+macosx64-aarch64-asan-fuzzing/opt:
+ description: "MacOS X Aarch64 Cross-compile Fuzzing ASAN"
+ index:
+ job-name: macosx64-aarch64-fuzzing-asan-opt
+ attributes:
+ # The gtest libxul contains libFuzzer targets
+ skip-verify-test-packaging: true
+ treeherder:
+ platform: osx-cross/asan
+ symbol: Bofaarch64
+ worker:
+ max-run-time: 5400
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ PERFHERDER_EXTRA_OPTIONS: aarch64-asan-fuzzing
+ run:
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_mac_64_cross_builds.py
+ custom-build-variant-cfg: cross-fuzzing-asan
+ mozconfig-variant: nightly-fuzzing-asan
+ extra-config:
+ mozconfig_platform: macosx64-aarch64
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - linux64-clang
+ - linux64-sccache
+ - macosx64-aarch64-llvm-symbolizer
+ - macosx64-sdk
+ - sysroot-wasm32-wasi
+ optimization:
+ skip-unless-expanded: null
+
+macosx64-aarch64-fuzzing/debug:
+ description: "MacOS X Aarch64 Cross-compile Fuzzing Debug"
+ index:
+ job-name: macosx64-aarch64-fuzzing-debug
+ attributes:
+ enable-full-crashsymbols: true
+ # The gtest libxul contains libFuzzer targets
+ skip-verify-test-packaging: true
+ treeherder:
+ platform: osx-cross/debug
+ symbol: Bfaarch64
+ worker:
+ max-run-time: 5400
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ PERFHERDER_EXTRA_OPTIONS: aarch64-fuzzing
+ run:
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_mac_64_cross_builds.py
+ custom-build-variant-cfg: cross-fuzzing-debug
+ mozconfig-variant: debug-fuzzing
+ extra-config:
+ mozconfig_platform: macosx64-aarch64
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - linux64-clang
+ - linux64-sccache
+ - macosx64-aarch64-llvm-symbolizer
+ - macosx64-sdk
+ - sysroot-wasm32-wasi
+ optimization:
+ skip-unless-expanded: null
+
+macosx64-x64-devedition/opt:
+ description: "MacOS X Dev Edition x64 (shippable)"
+ worker-type: b-linux-gcp
+ use-pgo: macosx64-shippable/opt
+ attributes:
+ enable-full-crashsymbols: true
+ skip-verify-test-packaging: true
+ upload-generated-sources: true
+ shipping-phase: build
+ shipping-product: devedition
+ index:
+ product: devedition
+ job-name: macosx64-x64-opt
+ type: shippable
+ treeherder:
+ platform: osx-cross-devedition/opt
+ symbol: Bx
+ tier: 1
+ worker:
+ max-run-time: 7200
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_mac_64_cross_builds.py
+ - taskcluster_nightly.py
+ extra-config:
+ stage_platform: macosx64-devedition
+ mozconfig-variant: devedition
+ run-on-projects: ['mozilla-beta']
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - linux64-clang
+ - macosx64-sdk
+ - sysroot-wasm32-wasi
+
+macosx64-aarch64-devedition/opt:
+ description: "MacOS X Dev Edition Aarch64 (shippable)"
+ worker-type: b-linux-gcp
+ use-pgo: macosx64-shippable/opt
+ attributes:
+ enable-full-crashsymbols: true
+ skip-verify-test-packaging: true
+ upload-generated-sources: true
+ shipping-phase: build
+ shipping-product: devedition
+ index:
+ product: devedition
+ job-name: macosx64-aarch64-opt
+ type: shippable
+ treeherder:
+ platform: osx-aarch64-devedition/opt
+ symbol: B
+ tier: 1
+ worker:
+ max-run-time: 7200
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ PERFHERDER_EXTRA_OPTIONS: aarch64
+ run:
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_mac_64_cross_builds.py
+ - taskcluster_nightly.py
+ extra-config:
+ stage_platform: macosx64-aarch64-devedition
+ mozconfig_platform: macosx64-aarch64
+ mozconfig-variant: devedition
+ run-on-projects: ['mozilla-beta']
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - linux64-clang
+ - macosx64-sdk
+ - sysroot-wasm32-wasi
+
+macosx64-devedition/opt:
+ description: "MacOS X Dev Edition Universal"
+ worker-type: b-linux-gcp
+ attributes:
+ shippable: true
+ enable-build-signing: true
+ skip-upload-crashsymbols: true
+ skip-verify-test-packaging: true
+ shipping-phase: build
+ shipping-product: devedition
+ index:
+ product: devedition
+ job-name: macosx64-opt
+ type: shippable
+ treeherder:
+ platform: osx-cross-devedition/opt
+ symbol: B
+ tier: 1
+ run-on-projects: ['mozilla-beta']
+ worker:
+ max-run-time: 1800
+ run:
+ job-script: taskcluster/scripts/misc/unify.sh
+ config:
+ - builds/releng_base_firefox.py
+ dependencies:
+ macosx64-x64-devedition-opt: build-macosx64-x64-devedition/opt
+ macosx64-aarch64-devedition-opt: build-macosx64-aarch64-devedition/opt
+ fetches:
+ macosx64-x64-devedition-opt:
+ - artifact: target.dmg
+ extract: false
+ dest: x64
+ - artifact: buildhub.json
+ extract: false
+ dest: ../artifacts
+ - artifact: host/bin/mar
+ extract: false
+ dest: ../artifacts/host/bin
+ - artifact: host/bin/mbsdiff
+ extract: false
+ dest: ../artifacts/host/bin
+ - artifact: target.txt
+ extract: false
+ dest: ../artifacts
+ - artifact: target_info.txt
+ extract: false
+ dest: ../artifacts
+ - artifact: target.json
+ extract: false
+ dest: ../artifacts
+ - artifact: target.mozinfo.json
+ extract: false
+ dest: ../artifacts
+ - artifact: target.test_packages.json
+ extract: false
+ dest: ../artifacts
+ - artifact: target.perftests.tests.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.xpt_artifacts.zip
+ extract: false
+ dest: ../artifacts
+ - artifact: target.common.tests.tar.gz
+ dest: x64/common
+ - artifact: target.cppunittest.tests.tar.gz
+ dest: x64/cppunittest
+ - artifact: target.gtest.tests.tar.gz
+ dest: x64/gtest
+ - artifact: target.jittest.tests.tar.gz
+ dest: x64/jittest
+ - artifact: target.jsreftest.tests.tar.gz
+ dest: x64/jsreftest
+ - artifact: target.mochitest.tests.tar.gz
+ dest: x64/mochitest
+ - artifact: target.reftest.tests.tar.gz
+ dest: x64/reftest
+ - artifact: target.talos.tests.tar.gz
+ dest: x64/talos
+ - artifact: target.raptor.tests.tar.gz
+ dest: x64/raptor
+ - artifact: target.condprof.tests.tar.gz
+ dest: x64/confprof
+ - artifact: target.awsy.tests.tar.gz
+ dest: x64/awsy
+ - artifact: target.xpcshell.tests.tar.gz
+ dest: x64/xpcshell
+ - artifact: target.web-platform.tests.tar.gz
+ dest: x64/web-platform
+ - artifact: target.updater-dep.tests.tar.gz
+ dest: x64/updater-dep
+ - artifact: target.crashreporter-symbols.zip
+ dest: x64/crashreporter-symbols
+ - artifact: target.jsshell.zip
+ dest: x64/jsshell
+ - artifact: target.generated-files.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.langpack.xpi
+ extract: false
+ dest: ../artifacts
+ - artifact: mozharness.zip
+ extract: false
+ dest: ../artifacts
+ macosx64-aarch64-devedition-opt:
+ - artifact: target.dmg
+ extract: false
+ dest: aarch64
+ - artifact: target.common.tests.tar.gz
+ dest: aarch64/common
+ - artifact: target.cppunittest.tests.tar.gz
+ dest: aarch64/cppunittest
+ - artifact: target.gtest.tests.tar.gz
+ dest: aarch64/gtest
+ - artifact: target.jittest.tests.tar.gz
+ dest: aarch64/jittest
+ - artifact: target.jsreftest.tests.tar.gz
+ dest: aarch64/jsreftest
+ - artifact: target.mochitest.tests.tar.gz
+ dest: aarch64/mochitest
+ - artifact: target.reftest.tests.tar.gz
+ dest: aarch64/reftest
+ - artifact: target.talos.tests.tar.gz
+ dest: aarch64/talos
+ - artifact: target.raptor.tests.tar.gz
+ dest: aarch64/raptor
+ - artifact: target.condprof.tests.tar.gz
+ dest: aarch64/confprof
+ - artifact: target.awsy.tests.tar.gz
+ dest: aarch64/awsy
+ - artifact: target.xpcshell.tests.tar.gz
+ dest: aarch64/xpcshell
+ - artifact: target.web-platform.tests.tar.gz
+ dest: aarch64/web-platform
+ - artifact: target.updater-dep.tests.tar.gz
+ dest: aarch64/updater-dep
+ - artifact: target.crashreporter-symbols.zip
+ dest: aarch64/crashreporter-symbols
+ - artifact: target.jsshell.zip
+ dest: aarch64/jsshell
+ toolchain:
+ - linux64-cctools-port
+
+macosx64-noopt/debug:
+ description: "MacOS X x64 No-optimize Debug"
+ index:
+ job-name: macosx64-noopt-debug
+ treeherder:
+ platform: osx-cross-noopt/debug
+ symbol: B
+ tier: 2
+ worker:
+ max-run-time: 3600
+ run:
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_mac_64_cross_builds.py
+ custom-build-variant-cfg: cross-noopt-debug
+ mozconfig-variant: cross-noopt-debug
+ keep-artifacts: false
+ run-on-projects: ['mozilla-central']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - linux64-clang
+ - linux64-sccache
+ - macosx64-sdk
+ - sysroot-wasm32-wasi
+
+macosx64-aarch64-noopt/debug:
+ description: "MacOS X aarch64 No-optimize Debug"
+ index:
+ job-name: macosx64-aarch64-noopt-debug
+ treeherder:
+ platform: osx-cross-noopt/debug
+ symbol: Baarch64
+ tier: 2
+ worker:
+ max-run-time: 3600
+ env:
+ PERFHERDER_EXTRA_OPTIONS: aarch64
+ run:
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_mac_64_cross_builds.py
+ custom-build-variant-cfg: cross-noopt-debug
+ mozconfig-variant: cross-noopt-debug
+ keep-artifacts: false
+ extra-config:
+ mozconfig_platform: macosx64-aarch64
+ run-on-projects: ['mozilla-central']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - linux64-clang
+ - linux64-sccache
+ - macosx64-sdk
+ - sysroot-wasm32-wasi
+
+macosx64-add-on-devel/opt:
+ description: "MacOS X x64 add-on-devel"
+ index:
+ job-name: macosx64-add-on-devel
+ treeherder:
+ platform: osx-cross-add-on-devel/opt
+ symbol: B
+ tier: 2
+ worker:
+ max-run-time: 3600
+ run:
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_mac_64_cross_builds.py
+ custom-build-variant-cfg: add-on-devel
+ mozconfig-variant: add-on-devel
+ run-on-projects: ['mozilla-beta', 'mozilla-release']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - linux64-clang
+ - linux64-sccache
+ - macosx64-sdk
+ - sysroot-wasm32-wasi
+
+macosx64-nightlyasrelease/opt:
+ description: "MacOS X Nightly-As-Release"
+ worker-type: b-linux-gcp
+ use-pgo: macosx64-shippable/opt
+ attributes:
+ enable-full-crashsymbols: true
+ skip-verify-test-packaging: true
+ upload-generated-sources: true
+ index:
+ job-name: macosx64-nightlyasrelease-opt
+ treeherder:
+ platform: osx-nightlyasrelease/opt
+ symbol: Bpgo(Bnar)
+ tier: 1
+ run-on-projects: [trunk-only]
+ worker:
+ max-run-time: 7200
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ PERFHERDER_EXTRA_OPTIONS: nightly-as-release
+ run:
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_mac_64_cross_builds.py
+ - taskcluster_nightly.py
+ mozconfig-variant: nightly-as-release
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - linux64-clang
+ - macosx64-sdk
+ - sysroot-wasm32-wasi
+
+macosx64-x64-shippable/opt:
+ description: "MacOS X x64 Cross-compile"
+ worker-type: b-linux-gcp
+ use-pgo: macosx64-shippable/opt
+ attributes:
+ enable-full-crashsymbols: true
+ skip-verify-test-packaging: true
+ upload-generated-sources: true
+ shipping-phase: build
+ shipping-product: firefox
+ index:
+ job-name: macosx64-x64-opt
+ type: shippable
+ treeherder:
+ platform: osx-shippable/opt
+ symbol: Bpgo(Bx)
+ tier: 1
+ run-on-projects: ['release']
+ worker:
+ max-run-time: 7200
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_mac_64_cross_builds.py
+ - taskcluster_nightly.py
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - linux64-clang
+ - macosx64-sdk
+ - sysroot-wasm32-wasi
+
+macosx64-aarch64-shippable/opt:
+ description: "MacOS X aarch64 Cross-compile"
+ worker-type: b-linux-gcp
+ use-pgo: macosx64-shippable/opt
+ attributes:
+ enable-full-crashsymbols: true
+ skip-verify-test-packaging: true
+ upload-generated-sources: true
+ shipping-phase: build
+ shipping-product: firefox
+ index:
+ job-name: macosx64-aarch64-opt
+ type: shippable
+ treeherder:
+ platform: osx-aarch64-shippable/opt
+ symbol: Bpgo(B)
+ tier: 1
+ run-on-projects: ['release']
+ worker:
+ max-run-time: 7200
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ PERFHERDER_EXTRA_OPTIONS: aarch64
+ run:
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_mac_64_cross_builds.py
+ - taskcluster_nightly.py
+ extra-config:
+ mozconfig_platform: macosx64-aarch64
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - linux64-clang
+ - macosx64-sdk
+ - sysroot-wasm32-wasi
+
+macosx64-shippable/opt:
+ description: "MacOS X Universal"
+ worker-type: b-linux-gcp
+ attributes:
+ shippable: true
+ enable-build-signing: true
+ skip-upload-crashsymbols: true
+ skip-verify-test-packaging: true
+ shipping-phase: build
+ shipping-product: firefox
+ index:
+ job-name: macosx64-opt
+ type: shippable
+ treeherder:
+ platform: osx-shippable/opt
+ symbol: Bpgo(B)
+ tier: 1
+ run-on-projects: ['release']
+ worker:
+ max-run-time: 1800
+ run:
+ job-script: taskcluster/scripts/misc/unify.sh
+ config:
+ - builds/releng_base_firefox.py
+ dependencies:
+ macosx64-x64-shippable-opt: build-macosx64-x64-shippable/opt
+ macosx64-aarch64-shippable-opt: build-macosx64-aarch64-shippable/opt
+ fetches:
+ macosx64-x64-shippable-opt:
+ - artifact: target.dmg
+ extract: false
+ dest: x64
+ - artifact: buildhub.json
+ extract: false
+ dest: ../artifacts
+ - artifact: host/bin/mar
+ extract: false
+ dest: ../artifacts/host/bin
+ - artifact: host/bin/mbsdiff
+ extract: false
+ dest: ../artifacts/host/bin
+ - artifact: target.txt
+ extract: false
+ dest: ../artifacts
+ - artifact: target_info.txt
+ extract: false
+ dest: ../artifacts
+ - artifact: target.json
+ extract: false
+ dest: ../artifacts
+ - artifact: target.mozinfo.json
+ extract: false
+ dest: ../artifacts
+ - artifact: target.test_packages.json
+ extract: false
+ dest: ../artifacts
+ - artifact: target.perftests.tests.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.xpt_artifacts.zip
+ extract: false
+ dest: ../artifacts
+ - artifact: target.common.tests.tar.gz
+ dest: x64/common
+ - artifact: target.cppunittest.tests.tar.gz
+ dest: x64/cppunittest
+ - artifact: target.gtest.tests.tar.gz
+ dest: x64/gtest
+ - artifact: target.jittest.tests.tar.gz
+ dest: x64/jittest
+ - artifact: target.jsreftest.tests.tar.gz
+ dest: x64/jsreftest
+ - artifact: target.mochitest.tests.tar.gz
+ dest: x64/mochitest
+ - artifact: target.reftest.tests.tar.gz
+ dest: x64/reftest
+ - artifact: target.talos.tests.tar.gz
+ dest: x64/talos
+ - artifact: target.raptor.tests.tar.gz
+ dest: x64/raptor
+ - artifact: target.condprof.tests.tar.gz
+ dest: x64/confprof
+ - artifact: target.awsy.tests.tar.gz
+ dest: x64/awsy
+ - artifact: target.xpcshell.tests.tar.gz
+ dest: x64/xpcshell
+ - artifact: target.web-platform.tests.tar.gz
+ dest: x64/web-platform
+ - artifact: target.updater-dep.tests.tar.gz
+ dest: x64/updater-dep
+ - artifact: target.crashreporter-symbols.zip
+ dest: x64/crashreporter-symbols
+ - artifact: target.jsshell.zip
+ dest: x64/jsshell
+ - artifact: target.generated-files.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.langpack.xpi
+ extract: false
+ dest: ../artifacts
+ - artifact: mozharness.zip
+ extract: false
+ dest: ../artifacts
+ macosx64-aarch64-shippable-opt:
+ - artifact: target.dmg
+ extract: false
+ dest: aarch64
+ - artifact: target.common.tests.tar.gz
+ dest: aarch64/common
+ - artifact: target.cppunittest.tests.tar.gz
+ dest: aarch64/cppunittest
+ - artifact: target.gtest.tests.tar.gz
+ dest: aarch64/gtest
+ - artifact: target.jittest.tests.tar.gz
+ dest: aarch64/jittest
+ - artifact: target.jsreftest.tests.tar.gz
+ dest: aarch64/jsreftest
+ - artifact: target.mochitest.tests.tar.gz
+ dest: aarch64/mochitest
+ - artifact: target.reftest.tests.tar.gz
+ dest: aarch64/reftest
+ - artifact: target.talos.tests.tar.gz
+ dest: aarch64/talos
+ - artifact: target.raptor.tests.tar.gz
+ dest: aarch64/raptor
+ - artifact: target.condprof.tests.tar.gz
+ dest: aarch64/confprof
+ - artifact: target.awsy.tests.tar.gz
+ dest: aarch64/awsy
+ - artifact: target.xpcshell.tests.tar.gz
+ dest: aarch64/xpcshell
+ - artifact: target.web-platform.tests.tar.gz
+ dest: aarch64/web-platform
+ - artifact: target.updater-dep.tests.tar.gz
+ dest: aarch64/updater-dep
+ - artifact: target.crashreporter-symbols.zip
+ dest: aarch64/crashreporter-symbols
+ - artifact: target.jsshell.zip
+ dest: aarch64/jsshell
+ toolchain:
+ - linux64-cctools-port
+
+macosx64-ccov/opt:
+ description: "MacOS X x64 Cross-compile Code Coverage"
+ index:
+ job-name: macosx64-ccov-opt
+ treeherder:
+ platform: osx-cross-ccov/opt
+ symbol: B
+ tier: 1
+ worker:
+ max-run-time: 7200
+ env:
+ RUSTC_BOOTSTRAP: '1'
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_mac_64_cross_builds.py
+ custom-build-variant-cfg: code-coverage-opt
+ mozconfig-variant: code-coverage
+ run-on-projects: ['mozilla-central']
+ use-sccache: false
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - linux64-clang
+ - linux64-sccache
+ - macosx64-sdk
+ - sysroot-wasm32-wasi
diff --git a/taskcluster/ci/build/windows-mingw.yml b/taskcluster/ci/build/windows-mingw.yml
new file mode 100644
index 0000000000..4927499e1f
--- /dev/null
+++ b/taskcluster/ci/build/windows-mingw.yml
@@ -0,0 +1,174 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ run:
+ using: mozharness
+ actions: [build]
+ script: mozharness/scripts/fx_desktop_build.py
+ optimization:
+ skip-unless-expanded: null
+
+win32-mingwclang/opt:
+ description: "Win32 MinGW-Clang Opt"
+ index:
+ product: firefox
+ job-name: win32-mingwclang-opt
+ treeherder:
+ platform: windows-mingw32/all
+ symbol: WMC32(Bo)
+ tier: 2
+ worker:
+ env:
+ PERFHERDER_EXTRA_OPTIONS: "opt 32 clang"
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_windows_32_mingw_builds.py
+ - builds/releng_sub_windows_configs/32_mingwclang.py
+ mozconfig-variant: mingwclang
+ run-on-projects:
+ - 'mozilla-central'
+ - 'mozilla-esr102'
+ - 'mozilla-esr115'
+ use-sccache: true
+ fetches:
+ toolchain:
+ - mingw32-rust
+ - linux64-upx
+ - linux64-wine
+ - linux64-sccache
+ - linux64-cbindgen
+ - linux64-nasm
+ - linux64-node
+ - linux64-clang-mingw-x86
+ - linux64-mingw32-nsis
+ - linux64-mingw-fxc2-x86
+ - linux64-dump_syms
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+win32-mingwclang/debug:
+ description: "Win32 MinGW-Clang Debug"
+ index:
+ product: firefox
+ job-name: win32-mingwclang-debug
+ treeherder:
+ platform: windows-mingw32/all
+ symbol: WMC32(Bd)
+ tier: 2
+ worker:
+ env:
+ PERFHERDER_EXTRA_OPTIONS: "debug 32 clang"
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_windows_32_mingw_builds.py
+ - builds/releng_sub_windows_configs/32_mingwclang.py
+ mozconfig-variant: mingwclang-debug
+ run-on-projects:
+ - 'mozilla-central'
+ - 'mozilla-esr102'
+ - 'mozilla-esr115'
+ use-sccache: true
+ fetches:
+ toolchain:
+ - mingw32-rust
+ - linux64-upx
+ - linux64-wine
+ - linux64-sccache
+ - linux64-cbindgen
+ - linux64-nasm
+ - linux64-node
+ - linux64-clang-mingw-x86
+ - linux64-mingw32-nsis
+ - linux64-mingw-fxc2-x86
+ - linux64-dump_syms
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+win64-mingwclang/opt:
+ description: "Win64 MinGW-Clang Opt"
+ index:
+ product: firefox
+ job-name: win64-mingwclang-opt
+ treeherder:
+ platform: windows-mingw32/all
+ symbol: WMC64(Bo)
+ tier: 2
+ worker:
+ env:
+ PERFHERDER_EXTRA_OPTIONS: "opt 64 clang"
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_windows_64_mingw_builds.py
+ - builds/releng_sub_windows_configs/64_mingwclang.py
+ mozconfig-variant: mingwclang
+ run-on-projects:
+ - 'mozilla-central'
+ - 'mozilla-esr102'
+ - 'mozilla-esr115'
+ use-sccache: true
+ fetches:
+ toolchain:
+ - mingw32-rust
+ - linux64-upx
+ - linux64-wine
+ - linux64-sccache
+ - linux64-cbindgen
+ - linux64-nasm
+ - linux64-node
+ - linux64-clang-mingw-x64
+ - linux64-mingw32-nsis
+ - linux64-mingw-fxc2-x86
+ - linux64-dump_syms
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+win64-mingwclang/debug:
+ description: "Win64 MinGW-Clang Debug"
+ index:
+ product: firefox
+ job-name: win64-mingwclang-debug
+ treeherder:
+ platform: windows-mingw32/all
+ symbol: WMC64(Bd)
+ tier: 2
+ worker:
+ env:
+ PERFHERDER_EXTRA_OPTIONS: "debug 64 clang"
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_windows_64_mingw_builds.py
+ - builds/releng_sub_windows_configs/64_mingwclang.py
+ mozconfig-variant: mingwclang-debug
+ run-on-projects:
+ - 'mozilla-central'
+ - 'mozilla-esr102'
+ - 'mozilla-esr115'
+ use-sccache: true
+ fetches:
+ toolchain:
+ - mingw32-rust
+ - linux64-upx
+ - linux64-wine
+ - linux64-sccache
+ - linux64-cbindgen
+ - linux64-nasm
+ - linux64-node
+ - linux64-clang-mingw-x64
+ - linux64-mingw32-nsis
+ - linux64-mingw-fxc2-x86
+ - linux64-dump_syms
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
diff --git a/taskcluster/ci/build/windows.yml b/taskcluster/ci/build/windows.yml
new file mode 100644
index 0000000000..cdcaf9ccb3
--- /dev/null
+++ b/taskcluster/ci/build/windows.yml
@@ -0,0 +1,1831 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ run:
+ using: mozharness
+
+win32/debug:
+ description: "Win32 Debug"
+ index:
+ product: firefox
+ job-name: win32-debug
+ attributes:
+ enable-build-signing: true
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: windows2012-32/debug
+ symbol: B
+ tier: 1
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ options: [append-env-variables-from-configs]
+ actions: [get-secrets, build]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ - builds/taskcluster_sub_win32/debug.py
+ mozconfig-variant: debug
+ extra-config:
+ mozconfig_platform: win32
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-sccache
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - vs
+ fetch:
+ - upx-3.95-win
+
+win32/opt:
+ description: "Win32 Opt"
+ index:
+ product: firefox
+ job-name: win32-opt
+ attributes:
+ enable-build-signing: true
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: windows2012-32/opt
+ symbol: B
+ tier: 1
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ options: [append-env-variables-from-configs]
+ actions: [get-secrets, build]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ extra-config:
+ stage_platform: win32
+ mozconfig_platform: win32
+ run-on-projects: ['integration']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-sccache
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - vs
+ fetch:
+ - upx-3.95-win
+
+win32-fuzzing/debug:
+ description: "Win32 Fuzzing Debug"
+ index:
+ product: firefox
+ job-name: win32-fuzzing-debug
+ attributes:
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: windows2012-32/debug
+ symbol: Bf
+ tier: 1
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ env:
+ PERFHERDER_EXTRA_OPTIONS: fuzzing
+ run:
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ - builds/taskcluster_sub_win32/debug.py
+ extra-config:
+ stage_platform: win32
+ mozconfig_platform: win32
+ mozconfig-variant: debug-fuzzing
+ run-on-projects: ['trunk']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-sccache
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - vs
+ fetch:
+ - upx-3.95-win
+ optimization:
+ skip-unless-expanded: null
+
+win64/debug:
+ description: "Win64 Debug"
+ index:
+ product: firefox
+ job-name: win64-debug
+ attributes:
+ enable-build-signing: true
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: windows2012-64/debug
+ symbol: B
+ tier: 1
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ options: [append-env-variables-from-configs]
+ actions: [get-secrets, build]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ - builds/taskcluster_sub_win64/debug.py
+ mozconfig-variant: debug
+ extra-config:
+ mozconfig_platform: win64
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-sccache
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - vs
+ fetch:
+ - upx-3.95-win
+
+win64-non-unified/plain:
+ description: "Win64 Hybrid Plain"
+ index:
+ product: firefox
+ job-name: win64-non-unified-plain
+ treeherder:
+ platform: windows2012-64/debug
+ symbol: Bp-nu
+ tier: 1
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ env:
+ PERFHERDER_EXTRA_OPTIONS: non-unified
+ run:
+ options: [append-env-variables-from-configs]
+ actions: [get-secrets, build]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ mozconfig-variant: non-unified
+ extra-config:
+ mozconfig_platform: win64
+ use-sccache: true
+ run-on-projects: ['integration']
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-sccache
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - vs
+ fetch:
+ - upx-3.95-win
+
+win64-fuzzing/debug:
+ description: "Win64 Fuzzing Debug"
+ index:
+ product: firefox
+ job-name: win64-fuzzing-debug
+ attributes:
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: windows2012-64/debug
+ symbol: Bf
+ tier: 1
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ env:
+ PERFHERDER_EXTRA_OPTIONS: fuzzing
+ run:
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ - builds/taskcluster_sub_win64/debug.py
+ extra-config:
+ mozconfig_platform: win64
+ mozconfig-variant: debug-fuzzing
+ run-on-projects: ['trunk']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-sccache
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - vs
+ fetch:
+ - upx-3.95-win
+ optimization:
+ skip-unless-expanded: null
+
+win64-plain/debug:
+ description: "Win64 Debug Plain"
+ index:
+ product: firefox
+ job-name: win64-plain-debug
+ treeherder:
+ platform: windows2012-64/debug
+ symbol: Bp
+ tier: 1
+ worker-type: b-win2012
+ worker:
+ max-run-time: 7200
+ env:
+ PERFHERDER_EXTRA_OPTIONS: plain
+ run:
+ actions: [build]
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ config:
+ - builds/releng_base_firefox.py
+ - builds/taskcluster_base_windows.py
+ - builds/taskcluster_base_win64.py
+ extra-config:
+ disable_package_metrics: true
+ stage_platform: win64
+ mozconfig-variant: plain-debug
+ run-on-projects: ['trunk']
+ fetches:
+ toolchain:
+ - win64-clang
+ - win64-rust
+ - win64-node
+ - win64-nasm
+ - win64-cbindgen
+ - win64-winchecksec
+ - win64-mozmake
+ - win64-dump_syms
+ - vs
+ - nsis
+ - sysroot-wasm32-wasi
+ optimization:
+ skip-unless-expanded: null
+
+win64/opt:
+ description: "Win64 Opt"
+ index:
+ product: firefox
+ job-name: win64-opt
+ attributes:
+ enable-build-signing: true
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: windows2012-64/opt
+ symbol: B
+ tier: 1
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ options: [append-env-variables-from-configs]
+ actions: [get-secrets, build]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ extra-config:
+ stage_platform: win64
+ mozconfig_platform: win64
+ run-on-projects: ['integration']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-sccache
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - vs
+ fetch:
+ - upx-3.95-win
+
+win64-plain/opt:
+ description: "Win64 Opt Plain"
+ index:
+ product: firefox
+ job-name: win64-plain-opt
+ treeherder:
+ platform: windows2012-64/opt
+ symbol: Bp
+ tier: 1
+ worker-type: b-win2012
+ worker:
+ max-run-time: 7200
+ env:
+ PERFHERDER_EXTRA_OPTIONS: plain
+ run:
+ actions: [build]
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ config:
+ - builds/releng_base_firefox.py
+ - builds/taskcluster_base_windows.py
+ - builds/taskcluster_base_win64.py
+ extra-config:
+ disable_package_metrics: true
+ stage_platform: win64
+ mozconfig-variant: plain-opt
+ run-on-projects: ['mozilla-central']
+ fetches:
+ toolchain:
+ - win64-clang
+ - win64-rust
+ - win64-nasm
+ - win64-node
+ - win64-cbindgen
+ - win64-winchecksec
+ - win64-mozmake
+ - win64-dump_syms
+ - vs
+ - nsis
+ - sysroot-wasm32-wasi
+ optimization:
+ skip-unless-expanded: null
+
+win32-shippable/opt:
+ description: "Win32 Opt Shippable"
+ use-pgo: true
+ index:
+ product: firefox
+ job-name: win32-opt
+ type: shippable
+ attributes:
+ shippable: true
+ enable-full-crashsymbols: true
+ stub-installer:
+ by-release-type:
+ nightly: true
+ beta: true
+ release.*: true
+ esr.*: false
+ default:
+ by-project:
+ # browser/confvars.sh looks for nightly-try
+ try: true
+ default: false
+ shipping-phase: build
+ shipping-product: firefox
+ treeherder:
+ platform: windows2012-32-shippable/opt
+ symbol: Bpgo(B)
+ tier: 1
+ run-on-projects: ['release']
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 10800
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ builds/releng_base_linux_64_builds.py
+ - taskcluster_nightly.py
+ extra-config:
+ stage_platform: win32
+ mozconfig_platform: win32
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - vs
+ fetch:
+ - upx-3.95-win
+
+win64-shippable/opt:
+ description: "Win64 Shippable"
+ use-pgo: true
+ index:
+ product: firefox
+ job-name: win64-opt
+ type: shippable
+ attributes:
+ shippable: true
+ enable-full-crashsymbols: true
+ shipping-phase: build
+ shipping-product: firefox
+ treeherder:
+ platform: windows2012-64-shippable/opt
+ symbol: Bpgo(B)
+ tier: 1
+ run-on-projects: ['release']
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 10800
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ - taskcluster_nightly.py
+ extra-config:
+ stage_platform: win64
+ mozconfig_platform: win64
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - vs
+ fetch:
+ - upx-3.95-win
+
+win64-nightlyasrelease/opt:
+ description: "Win64 Opt Nightly-As-Release"
+ use-pgo: win64-shippable/opt
+ attributes:
+ enable-full-crashsymbols: true
+ index:
+ product: firefox
+ job-name: win64-nightlyasrelease-opt
+ treeherder:
+ platform: win64-nightlyasrelease/opt
+ symbol: Bpgo(Bnar)
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 10800
+ env:
+ PERFHERDER_EXTRA_OPTIONS: "nightly-as-release"
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ - taskcluster_nightly.py
+ extra-config:
+ stage_platform: win64
+ mozconfig_platform: win64
+ mozconfig-variant: nightly-as-release
+ run-on-projects: [trunk-only]
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - vs
+ fetch:
+ - upx-3.95-win
+
+win32-add-on-devel/opt:
+ description: "Windows32 add-on-devel"
+ index:
+ product: firefox
+ job-name: win32-add-on-devel
+ treeherder:
+ platform: windows2012-32-add-on-devel/opt
+ symbol: B
+ tier: 2
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 10800
+ run:
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ extra-config:
+ stage_platform: win32-add-on-devel
+ mozconfig_platform: win32
+ mozconfig-variant: add-on-devel
+ run-on-projects: ['mozilla-beta', 'mozilla-release']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-sccache
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - vs
+ fetch:
+ - upx-3.95-win
+
+win64-add-on-devel/opt:
+ description: "Windows64 add-on-devel"
+ index:
+ product: firefox
+ job-name: win64-add-on-devel
+ treeherder:
+ platform: windows2012-64-add-on-devel/opt
+ symbol: B
+ tier: 2
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 10800
+ run:
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ extra-config:
+ stage_platform: win64-on-devel
+ mozconfig_platform: win64
+ mozconfig-variant: add-on-devel
+ run-on-projects: ['mozilla-beta', 'mozilla-release']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-sccache
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - vs
+ fetch:
+ - upx-3.95-win
+
+win64-noopt/debug:
+ description: "Win64 No-optimize Debug"
+ index:
+ product: firefox
+ job-name: win64-noopt-debug
+ treeherder:
+ platform: windows2012-64-noopt/debug
+ symbol: B
+ tier: 2
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ run:
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ - builds/taskcluster_sub_win64/noopt_debug.py
+ mozconfig-variant: noopt-debug
+ extra-config:
+ mozconfig_platform: win64
+ run-on-projects: ['mozilla-central']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-sccache
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - vs
+ fetch:
+ - upx-3.95-win
+
+win32-noopt/debug:
+ description: "Win32 No-optimize Debug"
+ index:
+ product: firefox
+ job-name: win32-noopt-debug
+ treeherder:
+ platform: windows2012-32-noopt/debug
+ symbol: B
+ tier: 2
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ run:
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ - builds/taskcluster_sub_win32/noopt_debug.py
+ mozconfig-variant: noopt-debug
+ extra-config:
+ mozconfig_platform: win32
+ run-on-projects: ['mozilla-central']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-sccache
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - vs
+ fetch:
+ - upx-3.95-win
+
+win32-rusttests/opt:
+ description: "Win32 Rust Tests Opt"
+ index:
+ product: firefox
+ job-name: win32-rusttests-opt
+ treeherder:
+ platform: windows2012-32/opt
+ symbol: BR
+ tier: 1
+ worker-type: b-win2012
+ worker:
+ max-run-time: 5400
+ env:
+ PERFHERDER_EXTRA_OPTIONS: rusttests
+ run:
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/taskcluster_base_windows.py
+ - builds/taskcluster_base_win32.py
+ extra-config:
+ stage_platform: win32-rusttests
+ app_name: tools/rusttests
+ disable_package_metrics: true
+ mozconfig-variant: rusttests
+ run-on-projects: ['mozilla-central']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - win64-clang
+ - win64-rust
+ - win64-cbindgen
+ - win64-sccache
+ - win64-nasm
+ - win64-node
+ - win64-winchecksec
+ - win64-mozmake
+ - win64-dump_syms
+ - vs
+ optimization:
+ test-inclusive: [rusttests]
+
+win32-rusttests/debug:
+ description: "Win32 Rust Tests Debug"
+ index:
+ product: firefox
+ job-name: win32-rusttests-debug
+ treeherder:
+ platform: windows2012-32/debug
+ symbol: BR
+ tier: 1
+ worker-type: b-win2012
+ worker:
+ max-run-time: 5400
+ env:
+ PERFHERDER_EXTRA_OPTIONS: rusttests
+ run:
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/taskcluster_base_windows.py
+ - builds/taskcluster_base_win32.py
+ extra-config:
+ stage_platform: win32-rusttests
+ app_name: tools/rusttests
+ disable_package_metrics: true
+ mozconfig-variant: rusttests-debug
+ run-on-projects: ['mozilla-central']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - win64-clang
+ - win64-rust
+ - win64-cbindgen
+ - win64-sccache
+ - win64-nasm
+ - win64-node
+ - win64-winchecksec
+ - win64-mozmake
+ - win64-dump_syms
+ - vs
+ optimization:
+ test-inclusive: [rusttests]
+
+win64-rusttests/opt:
+ description: "Win64 Rust Tests Opt"
+ index:
+ product: firefox
+ job-name: win64-rusttests-opt
+ treeherder:
+ platform: windows2012-64/opt
+ symbol: BR
+ tier: 1
+ worker-type: b-win2012
+ worker:
+ max-run-time: 5400
+ env:
+ PERFHERDER_EXTRA_OPTIONS: rusttests
+ run:
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/taskcluster_base_windows.py
+ - builds/taskcluster_base_win64.py
+ - builds/taskcluster_sub_win64/rusttests_opt.py
+ mozconfig-variant: rusttests
+ run-on-projects: ['mozilla-central']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - win64-clang
+ - win64-rust
+ - win64-cbindgen
+ - win64-sccache
+ - win64-nasm
+ - win64-node
+ - win64-winchecksec
+ - win64-mozmake
+ - win64-dump_syms
+ - vs
+ optimization:
+ test-inclusive: [rusttests]
+
+win64-rusttests/debug:
+ description: "Win64 Rust Tests Debug"
+ index:
+ product: firefox
+ job-name: win64-rusttests-debug
+ treeherder:
+ platform: windows2012-64/debug
+ symbol: BR
+ tier: 1
+ worker-type: b-win2012
+ worker:
+ max-run-time: 5400
+ env:
+ PERFHERDER_EXTRA_OPTIONS: rusttests
+ run:
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/taskcluster_base_windows.py
+ - builds/taskcluster_base_win64.py
+ - builds/taskcluster_sub_win64/rusttests_opt.py
+ mozconfig-variant: rusttests-debug
+ run-on-projects: ['trunk']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - win64-clang
+ - win64-rust
+ - win64-cbindgen
+ - win64-sccache
+ - win64-nasm
+ - win64-node
+ - win64-winchecksec
+ - win64-mozmake
+ - win64-dump_syms
+ - vs
+ optimization:
+ test-inclusive: [rusttests]
+
+win64-ccov/opt:
+ description: "Win64 Opt Code Coverage"
+ index:
+ product: firefox
+ job-name: win64-ccov-opt
+ attributes:
+ enable-build-signing: true
+ treeherder:
+ platform: windows2012-64/ccov
+ symbol: B
+ tier: 2
+ worker-type: b-win2012
+ worker:
+ artifacts:
+ - name: public/code-coverage-grcov.zip
+ path: workspace\obj-build\code-coverage-grcov.zip
+ type: file
+ max-run-time: 9000
+ env:
+ RUSTC_BOOTSTRAP: '1'
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/taskcluster_base_windows.py
+ - builds/taskcluster_base_win64.py
+ - builds/taskcluster_sub_win64/ccov_opt.py
+ mozconfig-variant: code-coverage
+ run-on-projects: ['mozilla-central']
+ use-sccache: false
+ fetches:
+ toolchain:
+ - win64-clang
+ - win64-rust
+ - win64-rust-size
+ - win64-cbindgen
+ - win64-grcov
+ - win64-sccache
+ - win64-nasm
+ - win64-node
+ - win64-winchecksec
+ - win64-mozmake
+ - win64-dump_syms
+ - vs
+ - nsis
+ - sysroot-wasm32-wasi
+
+win64-fuzzing-ccov/opt:
+ description: "Win64 Fuzzing Opt w/ Coverage"
+ index:
+ product: firefox
+ job-name: win64-ccov-fuzzing-opt
+ treeherder:
+ platform: windows2012-64/ccov
+ symbol: Bocf
+ worker-type: b-win2012
+ worker:
+ artifacts:
+ - name: public/code-coverage-grcov.zip
+ path: workspace\obj-build\code-coverage-grcov.zip
+ type: file
+ max-run-time: 9000
+ env:
+ RUSTC_BOOTSTRAP: '1'
+ PERFHERDER_EXTRA_OPTIONS: "fuzzing-ccov"
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/taskcluster_base_windows.py
+ - builds/taskcluster_base_win64.py
+ - builds/taskcluster_sub_win64/ccov_opt.py
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ mozconfig-variant: fuzzing-ccov
+ tooltool-downloads: public
+ run-on-projects: ['mozilla-central']
+ use-sccache: false
+ fetches:
+ toolchain:
+ - win64-clang
+ - win64-rust
+ - win64-rust-size
+ - win64-cbindgen
+ - win64-grcov
+ - win64-sccache
+ - win64-nasm
+ - win64-node
+ - win64-winchecksec
+ - win64-mozmake
+ - win64-dump_syms
+ - vs
+ - nsis
+ - sysroot-wasm32-wasi
+
+win64-asan/debug:
+ description: "Win64 Debug ASAN"
+ index:
+ product: firefox
+ job-name: win64-asan-debug
+ treeherder:
+ platform: windows2012-64/asan
+ symbol: Bd
+ tier: 1
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ env:
+ PERFHERDER_EXTRA_OPTIONS: "debug asan"
+ run:
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ - builds/taskcluster_sub_win64/asan_debug.py
+ extra-config:
+ mozconfig_platform: win64
+ mozconfig-variant: debug-asan
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-sccache
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - win64-llvm-symbolizer
+ - vs
+ fetch:
+ - upx-3.95-win
+ optimization:
+ skip-unless-expanded: null
+
+win64-asan/opt:
+ description: "Win64 Opt ASAN"
+ index:
+ product: firefox
+ job-name: win64-asan-opt
+ treeherder:
+ platform: windows2012-64/asan
+ symbol: Bo
+ tier: 1
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ env:
+ PERFHERDER_EXTRA_OPTIONS: "opt asan"
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ extra-config:
+ stage_platform: win64-asan
+ mozconfig_platform: win64
+ mozconfig-variant: nightly-asan
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-sccache
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - win64-llvm-symbolizer
+ - vs
+ fetch:
+ - upx-3.95-win
+
+win64-asan-reporter-shippable/opt:
+ description: "Win64 Opt ASAN Reporter (Shippable)"
+ attributes:
+ shippable: true
+ shipping-product:
+ by-release-type:
+ nightly: firefox
+ default: null
+ index:
+ product: firefox
+ job-name: win64-asan-reporter-opt
+ type: shippable
+ treeherder:
+ platform: win64-asan-reporter/opt
+ symbol: BoR
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ env:
+ PERFHERDER_EXTRA_OPTIONS: "asan-reporter"
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ - builds/taskcluster_sub_win64/asan_reporter_opt.py
+ - taskcluster_nightly.py
+ extra-config:
+ stage_platform: win64-asan-reporter
+ mozconfig_platform: win64
+ mozconfig-variant: nightly-asan-reporter
+ mar-channel-id:
+ firefox-mozilla-central-asan
+ accepted-mar-channel-ids:
+ firefox-mozilla-central-asan
+ run-on-projects: ['mozilla-central']
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - win64-llvm-symbolizer
+ - vs
+ fetch:
+ - upx-3.95-win
+
+win64-asan-fuzzing/opt:
+ description: "Win64 Fuzzing Opt ASAN"
+ index:
+ product: firefox
+ job-name: win64-fuzzing-asan-opt
+ treeherder:
+ platform: windows2012-64/asan
+ symbol: Bof
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ env:
+ PERFHERDER_EXTRA_OPTIONS: fuzzing-asan
+ run:
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ extra-config:
+ stage_platform: win64-fuzzing-asan
+ mozconfig_platform: win64
+ mozconfig-variant: nightly-fuzzing-asan
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-sccache
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - win64-llvm-symbolizer
+ - vs
+ fetch:
+ - upx-3.95-win
+ optimization:
+ skip-unless-expanded: null
+
+win32-devedition/opt:
+ description: "Win32 Dev Edition (shippable)"
+ use-pgo: win32-shippable/opt
+ index:
+ product: devedition
+ job-name: win32-opt
+ type: shippable
+ attributes:
+ shippable: true
+ enable-full-crashsymbols: true
+ stub-installer:
+ by-release-type:
+ nightly: true
+ beta: true
+ release.*: true
+ default:
+ by-project:
+ # browser/confvars.sh looks for nightly-try
+ try: true
+ default: false
+ shipping-phase: build
+ shipping-product: devedition
+ treeherder:
+ platform: windows2012-32-devedition/opt
+ symbol: B
+ tier: 1
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 10800
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ actions: [get-secrets, build]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ options: [append-env-variables-from-configs]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ - taskcluster_nightly.py
+ extra-config:
+ stage_platform: win32-devedition
+ mozconfig_platform: win32
+ mozconfig-variant: devedition
+ run-on-projects: ['mozilla-beta']
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - vs
+ fetch:
+ - upx-3.95-win
+
+win64-devedition/opt:
+ description: "Win64 Dev Edition (shippable)"
+ use-pgo: win64-shippable/opt
+ index:
+ product: devedition
+ job-name: win64-opt
+ type: shippable
+ attributes:
+ shippable: true
+ enable-full-crashsymbols: true
+ shipping-phase: build
+ shipping-product: devedition
+ treeherder:
+ platform: windows2012-64-devedition/opt
+ symbol: B
+ tier: 1
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 10800
+ env:
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ - taskcluster_nightly.py
+ extra-config:
+ stage_platform: win64-devedition
+ mozconfig_platform: win64
+ mozconfig-variant: devedition
+ run-on-projects: ['mozilla-beta']
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - vs
+ fetch:
+ - upx-3.95-win
+
+win64-aarch64/debug:
+ description: "AArch64 Win64 Debug"
+ index:
+ product: firefox
+ job-name: win64-aarch64-debug
+ attributes:
+ enable-full-crashsymbols: true
+ treeherder:
+ platform: windows2012-aarch64/debug
+ symbol: B
+ tier: 1
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ env:
+ PERFHERDER_EXTRA_OPTIONS: aarch64
+ run:
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ - builds/taskcluster_sub_win64/debug.py
+ extra-config:
+ mozconfig_platform: win64-aarch64
+ mozconfig-variant: debug
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-sccache
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - vs
+ fetch:
+ - upx-3.95-win
+ optimization:
+ skip-unless-expanded: null
+
+win64-aarch64/opt:
+ description: "AArch64 Win64 Opt"
+ index:
+ product: firefox
+ job-name: win64-aarch64-opt
+ attributes:
+ enable-build-signing: true
+ enable-full-crashsymbols: true
+ # We need to package tests in order for the win64-aarch64-eme artifact
+ # build to fetch them, even though no tests run against this task
+ # directly.
+ skip-verify-test-packaging: true
+ treeherder:
+ platform: windows2012-aarch64/opt
+ symbol: B
+ tier: 1
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ env:
+ PERFHERDER_EXTRA_OPTIONS: aarch64
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ extra-config:
+ stage_platform: win64-aarch64
+ mozconfig_platform: win64-aarch64
+ run-on-projects: ['integration']
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-sccache
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - vs
+ fetch:
+ - upx-3.95-win
+ optimization:
+ skip-unless-expanded: null
+
+win64-aarch64-eme/opt:
+ description: "AArch64 Win64 Opt w/ EME"
+ index:
+ product: firefox
+ job-name: win64-aarch64-eme-opt
+ treeherder:
+ platform: windows2012-aarch64/opt
+ symbol: Be
+ tier: 1
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ env:
+ PERFHERDER_EXTRA_OPTIONS: aarch64-eme
+ MOZ_ARTIFACT_TASK: {task-reference: '<win64-aarch64-opt>'}
+ MOZ_ARTIFACT_TASK_WIN32_OPT: {task-reference: '<win32-opt>'}
+ USE_ARTIFACT: '1'
+ run:
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ extra-config:
+ stage_platform: win64-aarch64
+ mozconfig_platform: win64-aarch64
+ dependencies:
+ win32-opt: build-win32/opt
+ win64-aarch64-opt: build-win64-aarch64/opt
+ fetches:
+ toolchain:
+ - linux64-node
+ - linux64-wine
+ - nsis
+ fetch:
+ - upx-3.95-win
+ optimization:
+ skip-unless-expanded: null
+
+win64-aarch64-shippable/opt:
+ description: "AArch64 Win64 Shippable"
+ index:
+ product: firefox
+ job-name: win64-aarch64-opt
+ type: shippable
+ attributes:
+ shippable: true
+ enable-full-crashsymbols: true
+ # Skip the test packaging check because we copy test packages from
+ # another build task rather than generating them in this task.
+ skip-verify-test-packaging: true
+ shipping-phase: build
+ shipping-product: firefox
+ treeherder:
+ platform: windows2012-aarch64-shippable/opt
+ symbol: B
+ tier: 1
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ env:
+ PERFHERDER_EXTRA_OPTIONS: aarch64
+ MOZ_ARTIFACT_TASK: {task-reference: '<win64-aarch64-opt>'}
+ MOZ_ARTIFACT_TASK_WIN32_OPT: {task-reference: '<win32-opt>'}
+ USE_ARTIFACT: '1'
+ run:
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ - taskcluster_nightly.py
+ extra-config:
+ stage_platform: win64-aarch64
+ mozconfig_platform: win64-aarch64
+ dependencies:
+ win32-opt: build-win32-shippable/opt
+ win64-aarch64-opt: build-win64-aarch64-shippable-no-eme/opt
+ fetches:
+ # Abuse fetches to copy the generated-files, langpack, and test
+ # artifacts from the non-eme build directly to the artifacts directory
+ # of this build.
+ win64-aarch64-opt:
+ - artifact: target.test_packages.json
+ extract: false
+ dest: ../artifacts
+ - artifact: target.common.tests.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.cppunittest.tests.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.mochitest.tests.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.reftest.tests.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.talos.tests.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.raptor.tests.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.condprof.tests.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.awsy.tests.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.xpcshell.tests.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.web-platform.tests.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.updater-dep.tests.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.generated-files.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.langpack.xpi
+ extract: false
+ dest: ../artifacts
+ toolchain:
+ - linux64-node
+ - linux64-wine
+ - nsis
+ fetch:
+ - upx-3.95-win
+ optimization:
+ skip-unless-expanded: null
+
+win64-aarch64-shippable-no-eme/opt:
+ description: "AArch64 Win64 Shippable w/o EME"
+ use-pgo: win64-shippable/opt
+ index:
+ product: firefox
+ job-name: win64-aarch64-no-eme-opt
+ type: shippable
+ attributes:
+ enable-full-crashsymbols: true
+ # We need to package tests in order for the actual
+ # win64-aarch64-shippable/opt build to copy them from this task, even
+ # though no tests run against this task directly.
+ skip-verify-test-packaging: true
+ shipping-phase: build
+ shipping-product: firefox
+ treeherder:
+ platform: windows2012-aarch64/opt
+ symbol: Nn
+ tier: 1
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ env:
+ PERFHERDER_EXTRA_OPTIONS: aarch64-no-eme
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ - taskcluster_nightly.py
+ extra-config:
+ stage_platform: win64-aarch64
+ mozconfig_platform: win64-aarch64
+ run-on-projects: ['all']
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - vs
+ fetch:
+ - upx-3.95-win
+ optimization:
+ skip-unless-expanded: null
+
+win64-aarch64-devedition/opt:
+ description: "AArch64 Win64 Dev Edition (shippable)"
+ index:
+ product: devedition
+ job-name: win64-aarch64-opt
+ type: shippable
+ attributes:
+ shippable: true
+ enable-full-crashsymbols: true
+ # Skip the test packaging check because we copy test packages from
+ # another build task rather than generating them in this task.
+ skip-verify-test-packaging: true
+ shipping-phase: build
+ shipping-product: devedition
+ treeherder:
+ platform: windows2012-aarch64-devedition/opt
+ symbol: B
+ tier: 1
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ env:
+ MOZ_ARTIFACT_TASK: {task-reference: '<win64-aarch64-opt>'}
+ MOZ_ARTIFACT_TASK_WIN32_OPT: {task-reference: '<win32-opt>'}
+ USE_ARTIFACT: '1'
+ run:
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ - taskcluster_nightly.py
+ extra-config:
+ stage_platform: win64-aarch64-devedition
+ mozconfig_platform: win64-aarch64
+ mozconfig-variant: devedition
+ run-on-projects: ['mozilla-beta']
+ dependencies:
+ win32-opt: build-win32-devedition/opt
+ win64-aarch64-opt: build-win64-aarch64-devedition-no-eme/opt
+ fetches:
+ # Abuse fetches to copy the generated-files, langpack, and test
+ # artifacts from the non-eme build directly to the artifacts directory
+ # of this build.
+ win64-aarch64-opt:
+ - artifact: target.test_packages.json
+ extract: false
+ dest: ../artifacts
+ - artifact: target.common.tests.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.cppunittest.tests.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.mochitest.tests.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.reftest.tests.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.talos.tests.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.raptor.tests.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.condprof.tests.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.awsy.tests.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.xpcshell.tests.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.web-platform.tests.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.updater-dep.tests.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.generated-files.tar.gz
+ extract: false
+ dest: ../artifacts
+ - artifact: target.langpack.xpi
+ extract: false
+ dest: ../artifacts
+ toolchain:
+ - linux64-node
+ - linux64-wine
+ - nsis
+ fetch:
+ - upx-3.95-win
+
+win64-aarch64-devedition-no-eme/opt:
+ description: "AArch64 Win64 Dev Edition w/o EME"
+ use-pgo: win64-shippable/opt
+ index:
+ product: devedition
+ job-name: win64-aarch64-no-eme-opt
+ type: shippable
+ attributes:
+ enable-full-crashsymbols: true
+ # We need to package tests in order for the actual
+ # win64-aarch64-devedition/opt build to copy them from this task, even
+ # though no tests run against this task directly.
+ skip-verify-test-packaging: true
+ shipping-phase: build
+ shipping-product: devedition
+ treeherder:
+ platform: windows2012-aarch64-devedition/opt
+ symbol: Nn
+ tier: 1
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ env:
+ PERFHERDER_EXTRA_OPTIONS: aarch64-no-eme
+ MOZ_AUTOMATION_PACKAGE_TESTS: "1"
+ run:
+ actions: [get-secrets, build]
+ options: [append-env-variables-from-configs]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ - taskcluster_nightly.py
+ extra-config:
+ stage_platform: win64-aarch64
+ mozconfig_platform: win64-aarch64
+ mozconfig-variant: devedition
+ run-on-projects: ['mozilla-beta']
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - vs
+ fetch:
+ - upx-3.95-win
diff --git a/taskcluster/ci/code-review/kind.yml b/taskcluster/ci/code-review/kind.yml
new file mode 100644
index 0000000000..da76da0260
--- /dev/null
+++ b/taskcluster/ci/code-review/kind.yml
@@ -0,0 +1,41 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.code_review:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - source-test
+
+jobs:
+ issues:
+ label: code-review-issues
+ description: List all issues found in static analysis and linting tasks
+ worker-type: b-linux-gcp
+
+ # Only run by using the code-review target_tasks_method
+ run-on-projects: []
+
+ # This option permits to run the task
+ # regardless of the soft-dependencies tasks exit status
+ # as we are interested in the task failures
+ requires: all-resolved
+
+ # Publish on pulse
+ routes:
+ - project.relman.codereview.v1.try_ending
+
+ # Dummy execution for now, we only need the pulse message
+ worker:
+ docker-image:
+ in-tree: debian11-amd64-build
+ max-run-time: 600
+ run:
+ using: run-task
+ checkout: false
+ command: /bin/true
diff --git a/taskcluster/ci/condprof/kind.yml b/taskcluster/ci/condprof/kind.yml
new file mode 100644
index 0000000000..2c71dcd6ea
--- /dev/null
+++ b/taskcluster/ci/condprof/kind.yml
@@ -0,0 +1,135 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - build
+ - toolchain
+
+transforms:
+ - gecko_taskgraph.transforms.condprof:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ treeherder:
+ kind: other
+ tier: 2
+ scenarios:
+ - settled
+ run:
+ using: run-task
+ cwd: fetches/condprofile
+ checkout: false
+ tooltool-downloads: public
+ scopes:
+ - secrets:get:project/releng/gecko/build/level-{level}/conditioned-profiles
+ worker:
+ taskcluster-proxy: true
+ max-run-time: 10800
+jobs:
+ windows2012-64-firefox:
+ worker-type: b-win2012
+ description: Creates or updates conditioned profiles on Win64
+ run-on-projects: ['mozilla-central']
+ treeherder:
+ symbol: condprof(firefox)
+ platform: windows2012-64/opt
+ index:
+ product: firefox
+ job-name: condprof-win64
+ dependencies:
+ build: build-win64-shippable/opt
+ scenarios:
+ - settled
+ - full
+ fetches:
+ build:
+ - artifact: target.condprof.tests.tar.gz
+ - artifact: target.zip
+ toolchain:
+ - win64-geckodriver
+ run:
+ command: >-
+ python3.exe condprof/main.py
+ ${EXTRA_ARGS}
+ --geckodriver ${MOZ_FETCHES_DIR}/geckodriver.exe
+ --firefox ${MOZ_FETCHES_DIR}/firefox/firefox.exe
+ --scenario ${SCENARIO}
+ ../../archive
+ worker:
+ artifacts:
+ - name: public/condprof
+ path: archive
+ type: directory
+ linux64-firefox:
+ worker-type: b-linux-gcp
+ description: Creates or updates conditioned profiles on Linux
+ run-on-projects: ['mozilla-central']
+ treeherder:
+ symbol: condprof(firefox)
+ platform: linux64/opt
+ index:
+ product: firefox
+ job-name: condprof-linux64
+ dependencies:
+ build: build-linux64-shippable/opt
+ scenarios:
+ - settled
+ - full
+ fetches:
+ build:
+ - artifact: target.condprof.tests.tar.gz
+ - artifact: target.tar.bz2
+ toolchain:
+ - linux64-geckodriver
+ run:
+ command: >-
+ python3.7 -m venv . &&
+ bin/python3.7 condprof/main.py
+ ${EXTRA_ARGS}
+ --geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --firefox ${MOZ_FETCHES_DIR}/firefox/firefox-bin
+ --scenario ${SCENARIO}
+ ../../archive
+ worker:
+ docker-image: {in-tree: condprof}
+ artifacts:
+ - name: public/condprof
+ path: /builds/worker/archive
+ type: directory
+ macosx64-firefox:
+ worker-type: t-osx-1015-r8
+ description: Creates or updates conditioned profiles on macOS
+ run-on-projects: ['mozilla-central']
+ treeherder:
+ symbol: condprof(firefox)
+ platform: macosx1015-64-qr/opt
+ index:
+ product: firefox
+ job-name: condprof-macosx64
+ dependencies:
+ build: build-macosx64-shippable/opt
+ fetches:
+ build:
+ - artifact: target.condprof.tests.tar.gz
+ - artifact: target.dmg
+ extract: false
+ toolchain:
+ - macosx64-geckodriver
+ run:
+ command: >-
+ python3 -m venv . &&
+ bin/python3 condprof/main.py
+ ${EXTRA_ARGS}
+ --geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --firefox ${MOZ_FETCHES_DIR}/target.dmg
+ --scenario ${SCENARIO}
+ ../../archive
+ worker:
+ artifacts:
+ - name: public/condprof
+ path: archive
+ type: directory
diff --git a/taskcluster/ci/config.yml b/taskcluster/ci/config.yml
new file mode 100644
index 0000000000..7be6ba9a28
--- /dev/null
+++ b/taskcluster/ci/config.yml
@@ -0,0 +1,743 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+trust-domain: gecko
+project-repo-param-prefix: ''
+product-dir: 'browser'
+treeherder:
+ group-names:
+ 'cram': 'Cram tests'
+ 'js-bench-sm': 'JavaScript shell benchmarks with Spidermonkey'
+ 'js-bench-v8': 'JavaScript shell benchmarks with Google V8'
+ 'node': 'Node tests'
+ 'py3': 'Python 3 unit tests'
+ 'A': 'Android Gradle tests'
+ 'Bpgo': 'Profile-guided optimization builds'
+ 'Btime': 'Browsertime performance tests on Firefox'
+ 'Btime-cache': 'Browsertime performance tests on Firefox with populated bytecode cache.'
+ 'Btime-1proc': 'Browsertime performance tests on Firefox without e10s'
+ 'Btime-fis': 'Browsertime performance tests on Firefox with fission enabled'
+ 'Btime-nofis': 'Browsertime tests on Firefox without fission enabled'
+ 'Btime-P-nofis': 'Browsertime power tests on Firefox without fission enabled'
+ 'Btime-Prof-nofis': 'Browsertime tests on Firefox with profiling and without fission enabled'
+ 'Btime-P-nofis-refbrow': 'Browsertime Power Usage Tests on reference browser without fission enabled'
+ 'Btime-P-nofis-fenix': 'Browsertime Power Usage Tests on Fenix without fission enabled'
+ 'Btime-live-nofis-fenix': 'Browsertime tests on Fenix without fission enabled using live sites'
+ 'Btime-nofis-fenix': 'Browsertime tests on Fenix without fission enabled'
+ 'Btime-live-nofis': 'Browsertime tests on Firefox without fission enabled using live sites'
+ 'Btime-nofis-refbrow': 'Browsertime tests on reference browser without fission enabled'
+ 'Btime-live-nofis-ChR': 'Browsertime tests on Chrome without fission enabled using live sites'
+ 'Btime-Prof': 'Browsertime performance tests on Firefox with Gecko Profiling'
+ 'Btime-Prof-fis': 'Browsertime performance tests on Firefox with Gecko Profiling, fission enabled'
+ 'Btime-Prof-1proc': 'Browsertime performance tests on Firefox with Gecko Profiling and without e10s'
+ 'Btime-live': 'Browsertime performance tests on Firefox'
+ 'Btime-live-fis': 'Browsertime performance tests on Firefox with fission enabled'
+ 'Btime-live-fenix': 'Browsertime performance tests on Firefox'
+ 'Btime-live-ChR': 'Browsertime performance tests on Firefox'
+ 'Btime-live-Cr': 'Browsertime performance tests on Google Chromium'
+ 'Btime-live-Saf': 'Browsertime performance tests on Safari'
+ 'Btime-ChR': 'Browsertime performance tests on Google Chrome Release'
+ 'Btime-nofis-ChR': 'Browsertime performance tests on Google Chrome Release without fission enabled'
+ 'Btime-Cr': 'Browsertime performance tests on Google Chromium'
+ 'Btime-P': 'Browsertime power tests on Firefox/Geckoview'
+ 'Btime-P-fenix': 'Browsertime power tests on Fenix'
+ 'Btime-P-refbrow': 'Browsertime power tests on reference browser'
+ 'Btime-fenix': 'Browsertime performance tests on Fenix'
+ 'Btime-refbrow': 'Browsertime performance tests on the reference browser'
+ 'Btime-Saf': 'Browsertime performance tests on Safari'
+ 'Btime-CaR': 'Browsertime performance tests on Chromium-as-Release'
+ 'Fetch': 'Fetch and store content'
+ 'Fxfn': 'Firefox functional tests'
+ 'Fxfn-nofis': 'Firefox functional tests without fission enabled'
+ 'Fxfn-fis': 'Firefox functional tests with fission enabled'
+ 'l10n-bump': 'L10n Bumper'
+ 'M': 'Mochitests'
+ 'M-condprof': "Mochitests with conditioned profile"
+ 'M-headless': 'Headless Mochitests'
+ 'M-headless-nofis': 'Headless Mochitests without fission enabled.'
+ 'M-headless-spi-nw': 'Headless Mochitests with fission and socketprocess networking.'
+ 'M-headless-spi-nw-nofis': 'Headless Mochitests with fission and socketprocess networking without fission enabled.'
+ 'M-http3': 'Mochitests with Http/3 server'
+ 'M-aab': 'Mochitests with AAB test_runner.'
+ 'M-aab-nofis': 'Mochitests with AAB test_runner without fission enabled.'
+ 'M-1proc': 'Mochitests without e10s or fission'
+ 'M-a11y-checks': 'Mochitests with accessibility checks enabled'
+ 'M-a11y-checks-nofis': 'Mochitests with accessibility checks enabled and without fission enabled'
+ 'M-xorig': 'Mochitests with cross-origin and fission enabled'
+ 'M-gli': 'Mochitests with WebGL over IPC'
+ 'M-gli-nofis': 'Mochitests with WebGL over IPC without fission enabled'
+ 'M-nofis': 'Mochitests without fission enabled'
+ 'M-spi': 'Mochitests with socket process'
+ 'M-spi-nofis': 'Mochitests with socket process without fission enabled'
+ 'M-spi-nw': 'Mochitests with networking on socket process'
+ 'M-spi-nw-nofis': 'Mochitests with networking on socket process without fission enabled'
+ 'M-spi-nw-1proc': 'Mochitests with networking on socket process without e10s'
+ 'M-swr': 'Mochitests with software webrender enabled'
+ 'M-swr-a11y-checks': 'Mochitests with software webrender and accessibility checks enabled'
+ 'M-swr-a11y-checks-nofis': 'Mochitests with software webrender and accessibility checks enabled without fission enabled'
+ 'M-swr-1proc': 'Mochitests with software webrender enabled without e10s'
+ 'M-swr-nofis': 'Mochitests with software webrender without fission enabled'
+ 'M-wmfme': 'Mochitests with Windows Media Foundation media engine enabled'
+ 'M-f': 'Mochitest failures'
+ 'M-dt-no-eft-nofis': 'DevTools Mochitests with EFT without fission enabled'
+ 'M-msix': 'Mochitests from MSIX builds'
+ 'M-editor-legacy-dir': 'Mochitests within the legacy join/split node direction mode of the editor'
+ 'MSI': 'Repack installers into MSIs'
+ 'MSIs': 'Signing of Repacked installers of MSIs'
+ 'MSIX': 'Repack into MSIX package'
+ 'MSIXs': 'Signing of Repack into MSIX package'
+ 'Pup': "Puppeteer tests"
+ 'R': 'Reftests'
+ 'R-fis': 'Reftests with fission enabled'
+ 'R-nofis': 'Reftests without fission enabled'
+ 'R-swr': 'Reftests with software webrender enabled'
+ 'R-swr-nofis': 'Reftests with software webrender enabled without fission enabled'
+ 'R-swr-fis': 'Reftests with software webrender with fission enabled'
+ 'R-wr-dc0': 'Reftests with dcomp disabled'
+ 'R-wr-dc1-p': 'Reftests with dcomp present but not overlays'
+ 'R-wr-dc2-o': 'Reftests with dcomp overlays but not compositing'
+ 'R-wr-dc3-c': 'Reftests with dcomp compositing'
+ 'R-editor-legacy-dir': 'Reftests within the legacy join/split node direction mode of the editor'
+ 'Rap': 'Raptor performance tests on Firefox'
+ 'Rap-live': 'Raptor performance tests on Firefox with live sites'
+ 'Rap-fis': 'Raptor performance tests on Firefox with fission enabled'
+ 'Rap-Prof': 'Raptor performance tests on Firefox with Gecko Profiling'
+ 'Rap-Prof-fis': 'Raptor performance tests on Firefox with Gecko Profiling'
+ 'Rap-ChR': 'Raptor performance tests on Google Chrome Release'
+ 'Rap-Cr': 'Raptor performance tests on Google Chromium'
+ 'Rap-refbrow': 'Raptor performance tests on the reference browser'
+ 'T': 'Talos performance tests'
+ 'T-fis': 'Talos performance tests with fission enabled'
+ 'T-gli': 'Talos performance tests with WebGL over IPC'
+ 'T-gli-fis': 'Talos performance tests with WebGL over IPC with fission enabled'
+ 'T-Prof': 'Talos performance tests on Firefox with Gecko Profiling'
+ 'T-Prof-fis': 'Talos performance tests on Firefox with fission and Gecko Profiling'
+ 'T-Prof-gli': 'Talos performance tests with WebGL over IPC and Gecko Profiling'
+ 'T-Prof-gli-fis': 'Talos performance tests with WebGL over IPC and Gecko Profiling and fission enabled'
+ 'T-swr': 'Talos performance tests with software webrender enabled'
+ 'T-swr-fis': 'Talos performance tests with software webrender enabled'
+ 'tt': 'Telemetry tests'
+ 'tt-nofis': 'Telemetry tests without fission enabled'
+ 'tt-fis': 'Telemetry tests with fission enabled'
+ 'SY': 'Are we slim yet tests by TaskCluster'
+ 'SY-fis': 'Are we slim yet tests by TaskCluster, fission enabled'
+ 'W': 'Web platform tests'
+ 'W-fis': 'Web platform tests with fission enabled'
+ 'W-nofis': 'Web platform tests without fission enabled'
+ 'W-headless-nofis': 'Headless web platform tests without fission enabled'
+ 'W-headless': 'Headless web platform tests'
+ 'W-swr-nofis': 'Web platform tests with software webrender enabled without fission enabled'
+ 'W-swr': 'Web platform tests with software webrender enabled'
+ 'W-b': 'Web platform tests (backlog)'
+ 'W-b-nofis': 'Web platform tests (backlog) without fission enabled'
+ 'W-editor-legacy-dir': 'Web platform tests within the legacy join/split node direction mode of the editor'
+ 'X': 'Xpcshell tests'
+ 'X-condprof': 'Xpcshell tests with a conditioned profile'
+ 'X-nofis': 'Xpcshell tests without fission enabled'
+ 'X-fis': 'Xpcshell tests with fission enabled'
+ 'X-spi-nw': 'Xpcshell tests with networking on socket process'
+ 'X-spi-nw-fis': 'Xpcshell tests with networking on socket process'
+ 'X-spi-nw-nofis': 'Xpcshell tests with networking on socket process without fission enabled'
+ 'X-f': 'Xpcshell tests that fail on a given config'
+ 'X-f-spi-nw': 'Xpcshell tests that fail on a given config w/socket process'
+ 'X-msix': 'Xpcshell tests on msix packages'
+ 'L10n': 'Localised Repacks'
+ 'L10n-Rpk': 'Localized Repackaged Repacks'
+ 'deb-L10n': 'Localized Debian Repacks'
+ 'BM': 'Beetmover'
+ 'BMR': 'Beetmover repackages'
+ 'BM-apt': 'Beetmover .deb packages'
+ 'c-Up': 'Balrog submission of complete updates'
+ 'css': 'Checksum signing for source'
+ 'rs': 'Repackage signing'
+ 'BMcs': 'Beetmover checksums'
+ 'BMcslang': 'Beetmover checksums for language packs'
+ 'BMcss': 'Beetmover checksums for source'
+ 'Deb8': 'Packages for Debian 8'
+ 'Deb8-32': 'Packages for Debian 8 32-bits'
+ 'Deb9': 'Packages for Debian 9'
+ 'Deb10': 'Packages for Debian 10'
+ 'Deb11': 'Packages for Debian 11'
+ 'Ub18': 'Packages for Ubuntu 18.04'
+ 'Ub20': 'Packages for Ubuntu 20.04'
+ 'I': 'Docker Image Builds'
+ 'TA': 'Toolchain builds for Android'
+ 'TL': 'Toolchain builds for Linux 64-bits'
+ 'TL32': 'Toolchain builds for Linux 32-bits'
+ 'TM': 'Toolchain builds for OSX'
+ 'TMW': 'Toolchain builds for Windows MinGW'
+ 'TW32': 'Toolchain builds for Windows 32-bits'
+ 'TW64': 'Toolchain builds for Windows 64-bits'
+ 'WMC32': 'MinGW-Clang builds for Windows 32-bits'
+ 'WMC64': 'MinGW-Clang builds for Windows 64-bits'
+ 'Searchfox': 'Searchfox builds'
+ 'SM': 'Spidermonkey builds'
+ 'p': 'Partial generation'
+ 'ps': 'Partials signing'
+ 'ms': 'Complete MAR signing'
+ 'ms-stage': 'Autograph-stage MAR signing test'
+ 'Rel': 'Release promotion'
+ 'Snap': 'Snap image generation'
+ 'Flatpak': 'Flatpak image generation'
+ 'langpack': 'Langpack sigatures and uploads'
+ 'TPS': 'Sync tests'
+ 'UV': 'Update verify'
+ 'UVnext': 'Update verify for esr-next'
+ 'pydep': 'python dependency update'
+ 'WR': 'WebRender standalone'
+ 'Wgpu': 'WebGPU standalone'
+ 'cpp': 'C/C++ checks'
+ 'pedantic': 'pedantic checks'
+ 'text': 'Check on texts'
+ 'misc': 'Misc checks'
+ 'js': 'JavaScript checks'
+ 'py': 'Python checks'
+ 'java': 'Java checks'
+ 'rust': 'Rust checks'
+ 'Static-Analysis': 'Full tree static-analysis'
+ 'SS': 'Shadow scheduler'
+ 'Sentry': 'Sentry synchronization'
+ 'test-info': 'Test manifest skip/fail information'
+ 'condprof': 'Conditioned Profile Builder'
+ 'doc': 'Documentation'
+ 'GhS': 'GitHub Synchronization'
+ 'perftest': 'Performance tests'
+ 'perftest-detect': 'Performance regression detection tooling'
+ 'perftest-chrome': 'Performance tests using Chrone'
+ 'perftest-http3': 'Performance tests with HTTP/3'
+ 'l10n': 'Localization checks'
+ 'fxrec': 'Desktop startup recorder (fxrecord)'
+ 'wc': 'webcompat'
+ 'Boot': 'Bootstrap'
+ 'Attr-L10n': 'Build Attribution'
+
+index:
+ products:
+ - 'firefox'
+ - 'fennec'
+ - 'mobile'
+ - 'static-analysis'
+ - 'devedition'
+ - 'source'
+ - 'system-symbols'
+ - 'geckodriver'
+
+try:
+ # We have a few platforms for which we want to do some "extra" builds, or at
+ # least build-ish things. Sort of. Anyway, these other things are implemented
+ # as different "platforms". These do *not* automatically ride along with "-p
+ # all"
+ ridealong-builds:
+ 'linux':
+ - 'sm-plain-linux32'
+ - 'sm-arm-sim-linux32'
+ 'linux64':
+ - 'sm-plain-linux64'
+ - 'sm-nojit-linux64'
+ - 'sm-nonunified-linux64'
+ - 'sm-arm-sim-linux32'
+ - 'sm-arm64-sim-linux64'
+ - 'sm-compacting-linux64'
+ - 'sm-rootanalysis-linux64'
+ - 'sm-package-linux64'
+ - 'sm-tsan-linux64'
+ - 'sm-asan-linux64'
+ - 'sm-msan-linux64'
+ - 'sm-fuzzing-linux64'
+ 'win32':
+ - 'sm-plain-win32'
+ - 'sm-compacting-win32'
+
+release-promotion:
+ products:
+ - 'devedition'
+ - 'fennec'
+ - 'firefox'
+ flavors:
+ promote_devedition:
+ product: devedition
+ target-tasks-method: promote_desktop
+ partial-updates: true
+ promote_firefox:
+ product: firefox
+ target-tasks-method: promote_desktop
+ partial-updates: true
+ promote_firefox_partner_repack:
+ product: firefox
+ rebuild-kinds:
+ - release-partner-repack
+ - release-partner-repack-chunking-dummy
+ - release-partner-repack-signing
+ - release-partner-repack-mac-signing
+ - release-partner-repack-mac-notarization
+ - release-partner-repack-repackage
+ - release-partner-repack-repackage-signing
+ - release-partner-repack-beetmover
+ target-tasks-method: promote_desktop
+ promote_firefox_partner_attribution:
+ product: firefox
+ rebuild-kinds:
+ - release-partner-attribution
+ - release-partner-attribution-beetmover
+ target-tasks-method: promote_desktop
+ promote_firefox_rc:
+ product: firefox
+ is-rc: true
+ target-tasks-method: promote_desktop
+ partial-updates: true
+ push_devedition:
+ product: devedition
+ target-tasks-method: push_desktop
+ partial-updates: true
+ push_firefox:
+ product: firefox
+ target-tasks-method: push_desktop
+ partial-updates: true
+ ship_devedition:
+ product: devedition
+ target-tasks-method: ship_desktop
+ version-bump: true
+ partial-updates: true
+ ship_firefox:
+ product: firefox
+ target-tasks-method: ship_desktop
+ version-bump: true
+ partial-updates: true
+ ship_firefox_rc:
+ product: firefox
+ is-rc: true
+ target-tasks-method: ship_desktop
+ partial-updates: true
+
+
+merge-automation:
+ behaviors:
+ central-to-beta:
+ fetch-version-from: "browser/config/version.txt"
+ version-files:
+ - filename: "config/milestone.txt"
+ new-suffix: ''
+ - filename: "browser/config/version.txt"
+ new-suffix: ''
+ - filename: "browser/config/version_display.txt"
+ new-suffix: 'b1'
+ replacements:
+ - - browser/config/mozconfigs/linux32/l10n-mozconfig
+ - ac_add_options --with-branding=browser/branding/nightly
+ - ac_add_options --enable-official-branding
+ - - browser/config/mozconfigs/linux64/l10n-mozconfig
+ - ac_add_options --with-branding=browser/branding/nightly
+ - ac_add_options --enable-official-branding
+ - - browser/config/mozconfigs/win32/l10n-mozconfig
+ - ac_add_options --with-branding=browser/branding/nightly
+ - ac_add_options --enable-official-branding
+ - - browser/config/mozconfigs/win64/l10n-mozconfig
+ - ac_add_options --with-branding=browser/branding/nightly
+ - ac_add_options --enable-official-branding
+ - - browser/config/mozconfigs/win64-aarch64/l10n-mozconfig
+ - ac_add_options --with-branding=browser/branding/nightly
+ - ac_add_options --enable-official-branding
+ - - browser/config/mozconfigs/macosx64/l10n-mozconfig
+ - ac_add_options --with-branding=browser/branding/nightly
+ - ac_add_options --enable-official-branding
+ merge-old-head: true
+ base-tag: 'FIREFOX_BETA_{major_version}_BASE'
+ end-tag: 'FIREFOX_BETA_{major_version}_END'
+ from-repo: 'https://hg.mozilla.org/mozilla-central'
+ from-branch: 'central'
+ to-repo: 'https://hg.mozilla.org/releases/mozilla-beta'
+ to-branch: 'beta'
+ early-to-late-beta:
+ fetch-version-from: "browser/config/version.txt"
+ version-files: []
+ replacements:
+ - - build/defines.sh
+ - EARLY_BETA_OR_EARLIER=1
+ - EARLY_BETA_OR_EARLIER=
+ merge-old-head: false
+ to-repo: 'https://hg.mozilla.org/releases/mozilla-beta'
+ to-branch: 'beta'
+ beta-to-release:
+ fetch-version-from: "browser/config/version.txt"
+ version-files:
+ - filename: "browser/config/version_display.txt"
+ new-suffix: ''
+ replacements: []
+ merge-old-head: true
+ base-tag: 'FIREFOX_RELEASE_{major_version}_BASE'
+ end-tag: 'FIREFOX_RELEASE_{major_version}_END'
+ from-repo: 'https://hg.mozilla.org/releases/mozilla-beta'
+ from-branch: 'beta'
+ to-repo: 'https://hg.mozilla.org/releases/mozilla-release'
+ to-branch: 'release'
+ release-to-esr:
+ fetch-version-from: "browser/config/version.txt"
+ version-files:
+ - filename: "browser/config/version_display.txt"
+ new-suffix: 'esr'
+ replacements: []
+ merge-old-head: false
+ end-tag: "FIREFOX_ESR_{major_version}_BASE"
+ to-repo: 'https://hg.mozilla.org/releases/mozilla-esr115'
+ to-branch: 'esr115'
+ bump-central:
+ fetch-version-from: "browser/config/version.txt"
+ version-files:
+ - filename: "config/milestone.txt"
+ version-bump: "major"
+ new-suffix: 'a1'
+ - filename: "browser/config/version.txt"
+ version-bump: "major"
+ new-suffix: 'a1'
+ - filename: "browser/config/version_display.txt"
+ version-bump: "major"
+ new-suffix: 'a1'
+ replacements:
+ - - "services/sync/modules/constants.sys.mjs"
+ - 'WEAVE_VERSION = "1.{current_weave_version}.0"'
+ - 'WEAVE_VERSION = "1.{next_weave_version}.0"'
+ merge-old-head: false
+ end-tag: 'FIREFOX_NIGHTLY_{major_version}_END'
+ to-repo: 'https://hg.mozilla.org/mozilla-central'
+ to-branch: 'central'
+ bump-esr102:
+ fetch-version-from: "browser/config/version.txt"
+ version-files:
+ - filename: "config/milestone.txt"
+ version-bump: "minor"
+ - filename: "browser/config/version.txt"
+ version-bump: "minor"
+ - filename: "browser/config/version_display.txt"
+ version-bump: "minor"
+ replacements: []
+ merge-old-head: false
+ to-repo: 'https://hg.mozilla.org/releases/mozilla-esr102'
+ to-branch: 'esr102'
+ bump-esr115:
+ fetch-version-from: "browser/config/version.txt"
+ version-files:
+ - filename: "config/milestone.txt"
+ version-bump: "minor"
+ - filename: "browser/config/version.txt"
+ version-bump: "minor"
+ - filename: "browser/config/version_display.txt"
+ version-bump: "minor"
+ replacements: []
+ merge-old-head: false
+ to-repo: 'https://hg.mozilla.org/releases/mozilla-esr115'
+ to-branch: 'esr115'
+
+scriptworker:
+ # See additional configuration in taskcluster/gecko_taskgraph/util/scriptworker.py
+ scope-prefix: 'project:releng'
+
+partner-urls:
+ release-partner-repack:
+ by-release-product:
+ default: null
+ firefox:
+ by-release-type:
+ default: null
+ beta|release.*:
+ by-release-level:
+ production: 'git@github.com:mozilla-partners/repack-manifests.git'
+ staging: 'git@github.com:moz-releng-automation-stage/repack-manifests.git'
+ esr.*:
+ by-release-level:
+ production: 'git@github.com:mozilla-partners/esr-repack-manifests.git'
+ staging: 'git@github.com:moz-releng-automation-stage/esr-repack-manifests.git'
+ release-partner-attribution:
+ by-release-product:
+ default: null
+ firefox:
+ by-release-type:
+ default: null
+ beta|release.*:
+ by-release-level:
+ production: 'git@github.com:mozilla-partners/repack-manifests.git'
+ staging: 'git@github.com:moz-releng-automation-stage/repack-manifests.git'
+ esr.*:
+ by-release-level:
+ production: 'git@github.com:mozilla-partners/esr-repack-manifests.git'
+ staging: 'git@github.com:moz-releng-automation-stage/esr-repack-manifests.git'
+ release-eme-free-repack:
+ by-release-product:
+ default: null
+ firefox:
+ by-release-type:
+ default: null
+ beta|release.*:
+ by-release-level:
+ production: 'git@github.com:mozilla-partners/mozilla-EME-free-manifest.git'
+ staging: 'git@github.com:moz-releng-automation-stage/mozilla-EME-free-manifest.git'
+
+
+task-priority:
+ by-project:
+ 'mozilla-release': 'highest'
+ 'mozilla-esr.*': 'very-high'
+ 'mozilla-beta': 'high'
+ 'mozilla-central': 'medium'
+ 'autoland': 'low'
+ 'mozilla-inbound': 'low'
+ 'default': 'very-low'
+
+taskgraph:
+ register: gecko_taskgraph:register
+
+workers:
+ aliases:
+ b-linux.*:
+ provisioner: '{trust-domain}-{level}'
+ implementation: docker-worker
+ os: linux
+ worker-type: '{alias}'
+ b-win2012:
+ provisioner: '{trust-domain}-{level}'
+ implementation: generic-worker
+ os: windows
+ worker-type: '{alias}-azure'
+ image:
+ provisioner: '{trust-domain}-{level}'
+ implementation: docker-worker
+ os: linux
+ worker-type: '{alias}'
+ images:
+ provisioner: '{trust-domain}-{level}'
+ implementation: docker-worker
+ os: linux
+ worker-type: '{alias}'
+ images-gcp:
+ provisioner: '{trust-domain}-{level}'
+ implementation: docker-worker
+ os: linux
+ worker-type: '{alias}'
+ addon:
+ provisioner: scriptworker-k8s
+ implementation: push-addons
+ os: scriptworker
+ worker-type:
+ by-release-level:
+ production: '{trust-domain}-3-addon'
+ staging: '{trust-domain}-1-addon'
+ balrog:
+ provisioner: scriptworker-k8s
+ implementation: balrog
+ os: scriptworker
+ worker-type:
+ by-release-level:
+ production: '{trust-domain}-3-balrog'
+ staging: '{trust-domain}-1-balrog'
+ bouncer:
+ provisioner: scriptworker-k8s
+ # Note that this implementation doesn't correspond with an
+ # payload_builder, there are several `bouncer-*` implemenations.
+ implementation: bouncer
+ os: scriptworker
+ worker-type:
+ by-release-level:
+ production: '{trust-domain}-3-bouncer'
+ staging: '{trust-domain}-1-bouncer'
+ beetmover:
+ provisioner: scriptworker-k8s
+ implementation: beetmover
+ os: scriptworker
+ worker-type:
+ by-release-level:
+ production: '{trust-domain}-3-beetmover'
+ staging: '{trust-domain}-1-beetmover'
+ linux-depsigning:
+ provisioner: scriptworker-k8s
+ implementation: scriptworker-signing
+ os: linux
+ worker-type: '{trust-domain}-t-signing'
+ linux-signing:
+ provisioner: scriptworker-k8s
+ implementation: scriptworker-signing
+ os: linux
+ worker-type:
+ by-release-level:
+ production: '{trust-domain}-3-signing'
+ staging: '{trust-domain}-t-signing'
+ mac-depsigning:
+ provisioner: scriptworker-prov-v1
+ implementation: scriptworker-signing
+ os: macosx
+ worker-type: depsigning-mac-v1
+ mac-signing:
+ provisioner: scriptworker-prov-v1
+ implementation: scriptworker-signing
+ os: macosx
+ worker-type:
+ by-release-level:
+ production: signing-mac-v1
+ staging: depsigning-mac-v1
+ tree:
+ provisioner: scriptworker-k8s
+ implementation: treescript
+ os: scriptworker
+ worker-type:
+ by-release-level:
+ production: '{trust-domain}-3-tree'
+ staging:
+ by-project:
+ autoland: '{trust-domain}-3-tree'
+ default: '{trust-domain}-1-tree'
+ tree-dev:
+ provisioner: scriptworker-k8s
+ implementation: treescript
+ os: scriptworker
+ worker-type: '{trust-domain}-1-tree-dev'
+ t-bitbar-gw.*:
+ provisioner: proj-autophone
+ implementation: generic-worker
+ os: linux-bitbar
+ worker-type: 'gecko-{alias}'
+ t-linux(-large|-xlarge|-xlarge-source):
+ provisioner: '{trust-domain}-t'
+ implementation: docker-worker
+ os: linux
+ worker-type: '{alias}-gcp'
+ t-linux-kvm:
+ provisioner: '{trust-domain}-t'
+ implementation: docker-worker
+ os: linux
+ worker-type: 't-linux-kvm-gcp'
+ t-linux-kvm-aws:
+ provisioner: '{trust-domain}-t'
+ implementation: docker-worker
+ os: linux
+ worker-type: 't-linux-metal'
+ t-linux-talos:
+ provisioner: releng-hardware
+ implementation: generic-worker
+ os: linux
+ worker-type: 'gecko-{alias}'
+ t-linux-talos-1804:
+ provisioner: releng-hardware
+ implementation: generic-worker
+ os: linux
+ worker-type: 'gecko-{alias}'
+ t-linux-wayland:
+ provisioner: '{trust-domain}-t'
+ implementation: generic-worker
+ os: linux
+ worker-type: 't-linux-vm-2204-wayland'
+ t-osx-1015-r8:
+ provisioner: releng-hardware
+ implementation: generic-worker
+ os: macosx
+ worker-type: 'gecko-{alias}'
+ t-osx-1100-m1:
+ provisioner: releng-hardware
+ implementation: generic-worker
+ os: macosx
+ worker-type: 'gecko-{alias}'
+ t-osx-1015-power:
+ provisioner: releng-hardware
+ implementation: generic-worker
+ os: macosx
+ worker-type: 'gecko-{alias}'
+ t-linux-xlarge-pgo:
+ provisioner:
+ by-level:
+ '3': '{trust-domain}-{level}'
+ default: '{trust-domain}-t'
+ implementation: docker-worker
+ os: linux
+ worker-type: 't-linux-xlarge-gcp'
+ b-osx-1015:
+ provisioner: releng-hardware
+ implementation: generic-worker
+ os: macosx
+ worker-type:
+ by-level:
+ '3': 'gecko-3-b-osx-1015'
+ default: 'gecko-1-b-osx-1015'
+ t-win10-64(|-gpu-s|-source):
+ provisioner: '{trust-domain}-t'
+ implementation: generic-worker
+ os: windows
+ worker-type: '{alias}'
+ t-win10-64(-hw|-ref-hw|-1803-hw):
+ provisioner: releng-hardware
+ implementation: generic-worker
+ os: windows
+ worker-type: 'gecko-{alias}'
+ win10-64-2009(|-gpu|-ssd|-source|-ssd-gpu):
+ provisioner: 'gecko-t'
+ implementation: generic-worker
+ os: windows
+ worker-type: '{alias}'
+ t-win11-64(|-gpu-s|-source):
+ provisioner: '{trust-domain}-t'
+ implementation: generic-worker
+ os: windows
+ worker-type: '{alias}'
+ win11-64-2009(|-gpu|-ssd|-source|-ssd-gpu):
+ provisioner: 'gecko-t'
+ implementation: generic-worker
+ os: windows
+ worker-type: '{alias}'
+ t-win7-32-gpu:
+ provisioner: '{trust-domain}-t'
+ implementation: generic-worker
+ os: windows
+ worker-type: '{alias}'
+ t-win7-32:
+ provisioner: releng-hardware
+ implementation: generic-worker
+ os: windows
+ worker-type: 'gecko-{alias}-hw'
+ t-win64-aarch64-laptop:
+ provisioner: bitbar
+ implementation: generic-worker
+ os: windows
+ worker-type: 'gecko-{alias}'
+ succeed:
+ provisioner: built-in
+ implementation: succeed
+ os: none
+ worker-type: succeed
+ misc:
+ provisioner: '{trust-domain}-t'
+ implementation: docker-worker
+ os: linux
+ worker-type: misc-gcp
+
+
+mac-notarization:
+ mac-entitlements:
+ by-platform:
+ macosx64.*:
+ by-release-level:
+ production: security/mac/hardenedruntime/production.entitlements.xml
+ default: security/mac/hardenedruntime/developer.entitlements.xml
+ default: ''
+ mac-requirements:
+ by-platform:
+ macosx64.*: build/package/mac_osx/requirements.plist
+ default: ''
+
+expiration-policy:
+ by-project:
+ try:
+ default: 1 month
+ shortest: 7 days
+ short: 14 days
+ medium: 1 month
+ long: 1 month
+ autoland:
+ default: 1 year
+ shortest: 14 days
+ short: 3 months
+ medium: 1 year
+ # To avoid keeping shippable builds for over a year
+ long: 1 year
+ default:
+ default: 3 months
+ shortest: 7 days
+ short: 1 month
+ medium: 1 year
+ long: 1 year
diff --git a/taskcluster/ci/cron-bouncer-check/kind.yml b/taskcluster/ci/cron-bouncer-check/kind.yml
new file mode 100644
index 0000000000..62d2c80960
--- /dev/null
+++ b/taskcluster/ci/cron-bouncer-check/kind.yml
@@ -0,0 +1,82 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.bouncer_check:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ name: bouncer-check
+ description: bouncer check
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1200
+ docker-image: {in-tree: "update-verify"}
+ run:
+ sparse-profile: mozharness
+ extra-config:
+ bouncer_prefix: "https://download.mozilla.org/"
+ attributes:
+ build_platform: linux64
+ build_type: opt
+ cron: true
+ treeherder:
+ symbol: Rel(ckbouncer)
+ kind: test
+ tier: 1
+
+jobs:
+ firefox:
+ shipping-product: firefox
+ index:
+ product: firefox
+ job-name: firefox-bouncer-check
+ run:
+ config:
+ by-release-type:
+ nightly:
+ - releases/bouncer_firefox_nightly.py
+ beta:
+ - releases/bouncer_firefox_beta.py
+ release:
+ - releases/bouncer_firefox_release.py
+ esr.*:
+ - releases/bouncer_firefox_esr.py
+ default:
+ - releases/bouncer_firefox_beta.py
+ product-field:
+ by-project:
+ mozilla-central: FIREFOX_NIGHTLY
+ mozilla-beta: LATEST_FIREFOX_RELEASED_DEVEL_VERSION
+ mozilla-release: LATEST_FIREFOX_VERSION
+ mozilla-esr115: FIREFOX_ESR
+ # mozilla-esrXX: FIREFOX_ESR_NEXT
+ default: LATEST_FIREFOX_DEVEL_VERSION
+ products-url: https://product-details.mozilla.org/1.0/firefox_versions.json
+ treeherder:
+ platform: firefox-release/opt
+
+ devedition:
+ shipping-product: devedition
+ run-on-projects: [mozilla-beta]
+ index:
+ product: devedition
+ job-name: devedition-bouncer-check
+ run:
+ config:
+ by-project:
+ mozilla-beta:
+ - releases/bouncer_firefox_devedition.py
+ default:
+ - releases/dev_bouncer_firefox_devedition.py
+ product-field:
+ by-project:
+ mozilla-beta: LATEST_FIREFOX_RELEASED_DEVEL_VERSION
+ default: LATEST_FIREFOX_DEVEL_VERSION
+ products-url: https://product-details.mozilla.org/1.0/firefox_versions.json
+ treeherder:
+ platform: devedition-release/opt
diff --git a/taskcluster/ci/diffoscope/kind.yml b/taskcluster/ci/diffoscope/kind.yml
new file mode 100644
index 0000000000..ba2b609b2c
--- /dev/null
+++ b/taskcluster/ci/diffoscope/kind.yml
@@ -0,0 +1,122 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - build
+ - toolchain
+
+transforms:
+ - gecko_taskgraph.transforms.diffoscope:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+# Note: --exclude-command .--line-numbers is because of
+# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=879003
+# That skips `objdump --disassemble --line-numbers` and falls back to
+# `objdump --disassemble`
+# Note: the .chk excludes are for files that are known to differ between
+# builds because they are signed with an ephemeral private key that is
+# generated for each build.
+job-defaults:
+ tier: 2
+ args: >-
+ --output-empty
+ --no-default-limits
+ --max-page-size 100000000
+ --max-page-diff-block-lines 10000
+ --exclude-directory-metadata=yes
+ --exclude-command .--line-numbers
+
+jobs:
+ artifact-win64-aarch64-eme-validation:
+ symbol: DWE
+ new: build-win64-aarch64-eme/opt
+ original: build-win64-aarch64/opt
+ unpack: true
+ fail-on-diff: true
+ pre-diff-commands:
+ # The EME version has extra files under i686/.
+ - rm -rf b/firefox/i686
+ # The i686/ files appear in precomplete, so after removing those references,
+ # we expect the same content as the non-EME build.
+ - sed -i '/i686\//d' b/firefox/precomplete
+ # Remove noise from differences in line numbers in preprocessor output
+ # due to #if/#else branches.
+ - sed -i '/^\/\/@line /d' {a,b}/firefox/browser/defaults/preferences/firefox.js
+ # Removing media.gmp-widevinecdm.* preferences, and setting
+ # browser.eme.ui.enabled to false should give us the same preferences as
+ # the non-EME build.
+ - sed -i '/browser\.eme\.ui\.enabled/s/true/false/;/media\.gmp-widevinecdm\./d' b/firefox/browser/defaults/preferences/firefox.js
+ # bug 1825141 - telemetry.fog.artifact_build isn't stable between
+ # artifact and not-artifact builds, so remove its line if present.
+ - sed -i '/telemetry\.fog\.artifact\_build/d' b/firefox/browser/defaults/preferences/firefox.js
+ # Extra diffoscope arguments to account for:
+ # - about:buildconfig being expectedly different.
+ # - There are some differences in PE metadata in helper.exe because
+ # it's (re)built in the EME build, and that part of the build is
+ # not reproducible.
+ extra-args: >-
+ --exclude-directory-metadata=recursive
+ --exclude b/firefox/chrome/toolkit/content/global/buildconfig.html
+ --exclude b/firefox/uninstall/helper.exe
+ # This is necessary to avoid building `build-win64-aarch64` on every push on autoland
+ # A more robust fix for this is https://bugzilla.mozilla.org/show_bug.cgi?id=1643346
+ optimization:
+ skip-unless-expanded: null
+
+ reproducible-linux32:
+ symbol: Linux32
+ new: build-linux-reproduced/opt
+ original: build-linux-shippable/opt
+ fail-on-diff: true
+ run-on-projects: ['mozilla-central'] # Do not run linux32 on autoland, Bug 1599197
+
+ reproducible-linux32-generated-files:
+ symbol: Linux32g
+ artifact: target.generated-files.tar.gz
+ new: build-linux-reproduced/opt
+ original: build-linux-shippable/opt
+ fail-on-diff: true
+ run-on-projects: ['mozilla-central'] # Do not run linux32 on autoland, Bug 1599197
+
+ reproducible-linux64:
+ symbol: Linux64
+ new: build-linux64-reproduced/opt
+ original: build-linux64-shippable/opt
+ fail-on-diff: true
+ run-on-projects: ['mozilla-central']
+
+ reproducible-linux64-generated-files:
+ symbol: Linux64g
+ artifact: target.generated-files.tar.gz
+ new: build-linux64-reproduced/opt
+ original: build-linux64-shippable/opt
+ fail-on-diff: true
+ run-on-projects: ['mozilla-central']
+
+# Make a task for each diff we might want. The following are just examples,
+# Both original and new can point to builds from the full set of tasks or
+# from other sets through an index-search. Other kinds than `build` can be
+# compared (for example, static-analysis), provided you adjust the
+# kind-dependencies above.
+# android-build-vs-previous-try:
+# symbol: A
+# new: build-android-arm/opt
+# original: {index-search: gecko.v2.try.revision.aabd5deb0156f9b55ab60ad6a01ebfc4580bf2e1.mobile.android-arm-opt}
+# linux64-build-vs-previous-try:
+# symbol: L
+# new: build-linux64/opt
+# original: {index-search: gecko.v2.try.revision.aabd5deb0156f9b55ab60ad6a01ebfc4580bf2e1.firefox.linux64-opt}
+# extra-args: >-
+# --exclude-command .--hex-dump=.gnu_debuglink
+# macosx-build-vs-previous-try:
+# symbol: M
+# new: build-macosx64/opt
+# original: {index-search: gecko.v2.try.revision.aabd5deb0156f9b55ab60ad6a01ebfc4580bf2e1.firefox.macosx64-opt}
+# win32-build-vs-previous-try:
+# symbol: W
+# new: build-win32/opt
+# original: {index-search: gecko.v2.try.revision.aabd5deb0156f9b55ab60ad6a01ebfc4580bf2e1.firefox.win32-opt}
diff --git a/taskcluster/ci/docker-image/kind.yml b/taskcluster/ci/docker-image/kind.yml
new file mode 100644
index 0000000000..1b00918a74
--- /dev/null
+++ b/taskcluster/ci/docker-image/kind.yml
@@ -0,0 +1,215 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - packages
+
+transforms:
+ - gecko_taskgraph.transforms.docker_image:transforms
+ - gecko_taskgraph.transforms.cached_tasks:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+# make a task for each docker-image we might want. For the moment, since we
+# write artifacts for each, these are whitelisted, but ideally that will change
+# (to use subdirectory clones of the proper directory), at which point we can
+# generate tasks for every docker image in the directory, secure in the
+# knowledge that unnecessary images will be omitted from the target task graph
+jobs:
+ image_builder:
+ symbol: I(ib)
+ # Neither the ubuntu1804-*raw nor the ubuntu1804-*packages images can have
+ # packages dependencies.
+ ubuntu1804-raw:
+ symbol: I(ub18-raw)
+ definition: debian-raw
+ args:
+ BASE_IMAGE: ubuntu:bionic
+ ubuntu1804-packages:
+ symbol: I(ub18-pkg)
+ definition: debian-packages
+ parent: ubuntu1804-raw
+ ubuntu1804-i386-raw:
+ symbol: I(ub18-32-raw)
+ definition: debian-raw
+ args:
+ BASE_IMAGE: i386/ubuntu:bionic
+ ubuntu1804-i386-packages:
+ symbol: I(ub18-32-pkg)
+ definition: debian-packages
+ parent: ubuntu1804-i386-raw
+ ubuntu1804-base:
+ symbol: I(ub18-base)
+ parent: ubuntu1804-raw
+ packages:
+ - ub18-mercurial
+ - ub18-python-zstandard
+ - ub18-python-psutil
+ ubuntu1804-test-base:
+ symbol: I(ub18-test-base)
+ parent: ubuntu1804-base
+ packages:
+ - ub18-libc6
+ - ub18-32-libc6
+ ubuntu1804-test:
+ symbol: I(ub18-test)
+ parent: ubuntu1804-test-base
+ # Neither the ubuntu1804-*raw nor the ubuntu1804-*packages images can have
+ # packages dependencies.
+ ubuntu2004-raw:
+ symbol: I(ub20-raw)
+ definition: debian-raw
+ args:
+ BASE_IMAGE: ubuntu:focal
+ ubuntu2004-packages:
+ symbol: I(ub20-pkg)
+ definition: debian-packages
+ parent: ubuntu2004-raw
+ ubuntu2004-base:
+ symbol: I(ub20-base)
+ definition: debian-base
+ parent: ubuntu2004-raw
+ packages:
+ - ub20-mercurial
+ - ub20-python-zstandard
+ # Neither the debian8-*raw nor the debian8-*packages images can have
+ # packages dependencies.
+ debian8-raw:
+ symbol: I(deb8-raw)
+ definition: debian-raw
+ args:
+ BASE_IMAGE: debian:jessie-20210208
+ DIST: jessie
+ debian8-packages:
+ symbol: I(deb8-pkg)
+ definition: debian-packages
+ parent: debian8-raw
+ debian8-i386-raw:
+ symbol: I(deb8-32-raw)
+ definition: debian-raw
+ args:
+ BASE_IMAGE: i386/debian:jessie-20210208
+ DIST: jessie
+ debian8-i386-packages:
+ symbol: I(deb8-32-pkg)
+ definition: debian-packages
+ parent: debian8-i386-raw
+ custom-v8:
+ symbol: I(custom-v8)
+ parent: debian11-base
+ # Chromium-as-Release
+ custom-car-linux:
+ symbol: I(custom-car-linux)
+ parent: debian11-base
+ valgrind-build:
+ symbol: I(vb)
+ parent: debian11-amd64-build
+ packages:
+ - deb11-valgrind
+ lint:
+ symbol: I(lnt)
+ parent: debian11-base
+ # Neither the debian11-raw nor the debian11-packages images can have
+ # packages dependencies.
+ debian11-raw:
+ symbol: I(deb11-raw)
+ definition: debian-raw
+ args:
+ BASE_IMAGE: debian:bullseye-20221205
+ DIST: bullseye
+ SNAPSHOT: '20221204T212138Z'
+ debian11-packages:
+ symbol: I(deb11-pkg)
+ definition: debian-packages
+ parent: debian11-raw
+ debian11-base:
+ symbol: I(deb11-base)
+ definition: debian-base
+ parent: debian11-raw
+ packages:
+ - deb11-mercurial
+ - deb11-python-zstandard
+ debian11-amd64-build:
+ symbol: I(deb11)
+ parent: debian11-base
+ definition: debian-build
+ debian11-repackage:
+ symbol: I(deb11-rpk)
+ parent: debian11-base
+ definition: debian-repackage
+ packages:
+ - deb11-mercurial
+ deb11-toolchain-build:
+ symbol: I(deb11-toolchain)
+ parent: debian11-base
+ definition: toolchain-build
+ packages:
+ - deb11-cmake
+ android-build:
+ symbol: I(agb)
+ parent: debian11-base
+ fetch:
+ symbol: I(fetch)
+ parent: debian11-raw
+ packages:
+ - deb11-python-zstandard
+ static-analysis-build:
+ symbol: I(static-analysis-build)
+ parent: debian11-base
+ gdb-test:
+ symbol: I(gdb)
+ parent: debian11-amd64-build
+ definition: gdb-test
+ index-task:
+ symbol: I(idx)
+ funsize-update-generator:
+ symbol: I(pg)
+ update-verify:
+ symbol: I(uv)
+ parent: ubuntu2004-base
+ diffoscope:
+ symbol: I(diff)
+ parent: debian11-base
+ partner-repack:
+ symbol: I(PR)
+ parent: debian11-base
+ definition: partner-repack
+ updatebot:
+ symbol: I(3rdp)
+ parent: push-to-try
+ periodic-updates:
+ symbol: I(file)
+ parent: debian11-base
+ firefox-snap:
+ symbol: I(snap)
+ firefox-flatpak:
+ symbol: I(flatpak)
+ webrender:
+ symbol: I(webrender)
+ parent: debian11-base
+ condprof:
+ symbol: I(condprof)
+ parent: ubuntu1804-test
+ github-sync:
+ symbol: I(github-sync)
+ parent: debian11-base
+ sentry:
+ symbol: I(sentry)
+ parent: debian11-base
+ system-symbols-mac:
+ symbol: I(system-symbols-mac)
+ parent: debian11-base
+ system-symbols-win:
+ symbol: I(system-symbols-win)
+ parent: debian11-base
+ system-symbols-linux-scraper:
+ symbol: I(system-symbols-linux)
+ parent: debian11-base
+ push-to-try:
+ symbol: I(push-to-try)
+ parent: debian11-base
+ decision:
+ symbol: I(decision)
+ parent: ubuntu2004-base
diff --git a/taskcluster/ci/fetch/benchmarks.yml b/taskcluster/ci/fetch/benchmarks.yml
new file mode 100644
index 0000000000..7e31470baf
--- /dev/null
+++ b/taskcluster/ci/fetch/benchmarks.yml
@@ -0,0 +1,19 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+octane:
+ description: Octane benchmark
+ fetch:
+ type: static-url
+ url: https://github.com/mozilla/perf-automation/releases/download/octane-v1/octane-0f5b8d48d4a9.zip
+ sha256: 38425ee1abfc5feca178b2f60fbd82b5873897c345112a85359be00024402f9f
+ size: 1816138
+
+web-tooling-benchmark:
+ description: Web Tooling Benchmark
+ fetch:
+ type: static-url
+ url: https://github.com/mozilla/perf-automation/releases/download/V1/web-tooling-benchmark-b2ac25c897c9.zip
+ sha256: 93b0b51df0cec3ca9bfa0bdf81d782306dcf18532e39b3ff3180409125daaff1
+ size: 5444135
diff --git a/taskcluster/ci/fetch/browsertime.yml b/taskcluster/ci/fetch/browsertime.yml
new file mode 100644
index 0000000000..e11b3ca391
--- /dev/null
+++ b/taskcluster/ci/fetch/browsertime.yml
@@ -0,0 +1,197 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+win64-ffmpeg-4.4.1:
+ description: 'Win64 ffmpeg'
+ fetch:
+ type: static-url
+ # url: https://github.com/GyanD/codexffmpeg/releases/tag/4.4.1
+ url: https://github.com/mozilla/perf-automation/releases/download/FFMPEG-v4.4.1/ffmpeg-4.4.1-full_build.zip
+ sha256: f0f407041f82905c310b79f4f76973815700d1e438a10c3cbce66a345ff4f457
+ size: 134760541
+
+linux64-ffmpeg-4.4.1:
+ description: 'Linux64 ffmpeg'
+ fetch:
+ type: static-url
+ # url: https://www.johnvansickle.com/ffmpeg/old-releases/
+ url: https://github.com/mozilla/perf-automation/releases/download/FFMPEG-v4.4.1/ffmpeg-4.4.1-i686-static.tar.xz
+ sha256: 1f38d1c99b6eb3d36f709a481f5a5526448567a800ee9cddcfe4be54f8b68e62
+ size: 17592088
+
+mac64-ffmpeg-4.4.1:
+ description: 'Mac64 ffmpeg'
+ fetch:
+ type: static-url
+ # url: https://evermeet.cx/pub/ffmpeg/
+ url: https://github.com/mozilla/perf-automation/releases/download/FFMPEG-v4.4.1/ffmpeg-macos.zip
+ sha256: 9d07411bce176f56314cc5624f5df51f9cffa76a59e3e81abe2175d4ebaf87ae
+ size: 49100208
+
+linux64-chromedriver:
+ description: 'Linux64 chromedriver'
+ fetch:
+ type: static-url
+ url: https://chromedriver.storage.googleapis.com/2.46/chromedriver_linux64.zip
+ sha256: 461919e080e19335a34224e2d353b96b07c7d068621aa940f9c136e86d090047
+ size: 5404417
+
+linux64-chromedriver-109:
+ description: "Linux64 chromedriver v109"
+ fetch:
+ type: static-url
+ artifact-name: chromedriver_linux64_109.tar.zst
+ add-prefix: "109"
+ url: https://chromedriver.storage.googleapis.com/109.0.5414.25/chromedriver_linux64.zip
+ sha256: 8f46097124424370c532142d799f5852a960f3c428a1a05934490ae66d82cbbf
+ size: 7068129
+
+mac64-chromedriver-109:
+ description: "Mac64 chromedriver v109"
+ fetch:
+ type: static-url
+ artifact-name: chromedriver_mac64_109.tar.zst
+ add-prefix: "109"
+ url: https://chromedriver.storage.googleapis.com/109.0.5414.25/chromedriver_mac64.zip
+ sha256: e1fcfd4d75b38ec147493595757e72bf13803138a8cb3f3917394ed975fa7af0
+ size: 9186656
+
+linux64-chromedriver-110:
+ description: "Linux64 chromedriver v110"
+ fetch:
+ type: static-url
+ artifact-name: chromedriver_linux64_110.tar.zst
+ add-prefix: "110"
+ url: https://chromedriver.storage.googleapis.com/110.0.5481.30/chromedriver_linux64.zip
+ sha256: bc5af03f72ed19a20c3945b0ed85db344ed27658a832788caf8f42e5a1424222
+ size: 7386948
+
+mac64-chromedriver-110:
+ description: "Mac64 chromedriver v110"
+ fetch:
+ type: static-url
+ artifact-name: chromedriver_mac64_110.tar.zst
+ add-prefix: "110"
+ url: https://chromedriver.storage.googleapis.com/110.0.5481.30/chromedriver_mac64.zip
+ sha256: c476ed24f76b23da77726a3800c5d8ea8cbc6e9f8e61ed4ddbbe8497a2039876
+ size: 9259405
+
+linux64-chromedriver-111:
+ description: "Linux64 chromedriver v111"
+ fetch:
+ type: static-url
+ artifact-name: chromedriver_linux64_111.tar.zst
+ add-prefix: "111"
+ url: https://chromedriver.storage.googleapis.com/111.0.5563.41/chromedriver_linux64.zip
+ sha256: a2723ab3e92147ddf73fb9030f28ced0e483fae254edb9cb7e899b4e14871398
+ size: 7398382
+
+mac64-chromedriver-111:
+ description: "Mac64 chromedriver v111"
+ fetch:
+ type: static-url
+ artifact-name: chromedriver_mac64_111.tar.zst
+ add-prefix: "111"
+ url: https://chromedriver.storage.googleapis.com/111.0.5563.41/chromedriver_mac64.zip
+ sha256: 868a03de57d75f0bab6e9b13ec678377ec3df19bf9fb749a67aa3499464eb87c
+ size: 9125393
+
+win32-chromedriver-112:
+ description: "Win32 chromedriver v112"
+ fetch:
+ type: static-url
+ artifact-name: chromedriver_win32_112.tar.zst
+ add-prefix: "112"
+ url: https://chromedriver.storage.googleapis.com/112.0.5615.28/chromedriver_win32.zip
+ sha256: 0b19ddf77da29b391bdacab4883e39b97277b08b7c8c759a4e713d1ebf3d6aae
+ size: 7175657
+
+linux64-chromedriver-112:
+ description: "Linux64 chromedriver v112"
+ fetch:
+ type: static-url
+ artifact-name: chromedriver_linux64_112.tar.zst
+ add-prefix: "112"
+ url: https://chromedriver.storage.googleapis.com/112.0.5615.28/chromedriver_linux64.zip
+ sha256: 285d72fc1f19237aa857ed588dc00b94f68ede03a0965392deb2b7d17ef0228e
+ size: 7902470
+
+mac64-chromedriver-112:
+ description: "Mac64 chromedriver v112"
+ fetch:
+ type: static-url
+ artifact-name: chromedriver_mac64_112.tar.zst
+ add-prefix: "112"
+ url: https://chromedriver.storage.googleapis.com/112.0.5615.28/chromedriver_mac64.zip
+ sha256: 8e983d374af3e9795d4053593369f0b2192815183c8c23053bce0226e3818857
+ size: 9289541
+
+win32-chromedriver-113:
+ description: "Win32 chromedriver v113"
+ fetch:
+ type: static-url
+ artifact-name: chromedriver_win32_113.tar.zst
+ add-prefix: "113"
+ url: https://chromedriver.storage.googleapis.com/113.0.5672.63/chromedriver_win32.zip
+ sha256: d75eecc9f4667326260e883b902e585d0597372e8d6f4b414564a63fdd75b9f5
+ size: 7141014
+
+linux64-chromedriver-113:
+ description: "Linux64 chromedriver v113"
+ fetch:
+ type: static-url
+ artifact-name: chromedriver_linux64_113.tar.zst
+ add-prefix: "113"
+ url: https://chromedriver.storage.googleapis.com/113.0.5672.63/chromedriver_linux64.zip
+ sha256: 126151e17b5e42a39d6945f1df2b675d08ad2c79b469a84ecca3aa32f9b9a127
+ size: 7315061
+
+mac64-chromedriver-113:
+ description: "Mac64 chromedriver v113"
+ fetch:
+ type: static-url
+ artifact-name: chromedriver_mac64_113.tar.zst
+ add-prefix: "113"
+ url: https://chromedriver.storage.googleapis.com/113.0.5672.63/chromedriver_mac64.zip
+ sha256: 26c6be21536fe91e8972b5ddf1e8fccee6f07792f74270c599d0457a663d6dc1
+ size: 9237503
+
+win32-chromedriver-114:
+ description: "Win32 chromedriver v114"
+ fetch:
+ type: static-url
+ artifact-name: chromedriver_win32_114.tar.zst
+ add-prefix: "114"
+ url: https://chromedriver.storage.googleapis.com/114.0.5735.16/chromedriver_win32.zip
+ sha256: 9dcad58796e1319cd942575ea8a38b1c9a720170aaf79f3a1451458c1bd485d1
+ size: 6604629
+
+linux64-chromedriver-114:
+ description: "Linux64 chromedriver v114"
+ fetch:
+ type: static-url
+ artifact-name: chromedriver_linux64_114.tar.zst
+ add-prefix: "114"
+ url: https://chromedriver.storage.googleapis.com/114.0.5735.16/chromedriver_linux64.zip
+ sha256: 87472593a65e09b700c0e9f54451e4b8ae49bbf92e13a37dcf60e5eb93235875
+ size: 7399878
+
+mac64-chromedriver-114:
+ description: "Mac64 chromedriver v114"
+ fetch:
+ type: static-url
+ artifact-name: chromedriver_mac64_114.tar.zst
+ add-prefix: "114"
+ url: https://chromedriver.storage.googleapis.com/114.0.5735.16/chromedriver_mac64.zip
+ sha256: 80f1e41949c017d897d8076e400521691cc018aa2276157c35e44a1e1f984b69
+ size: 8609836
+
+upload-speed-test-file:
+ description: "File used for the upload speed performance test"
+ fetch:
+ type: static-url
+ artifact-name: upload-test-32MB.dat
+ url: https://github.com/mozilla/perf-automation/raw/master/test_files/upload-test-32MB.dat
+ sha256: 72caa47a951e9f37d1e1be2119a64b1fbc6348c4f37d574bee4587e02b8f96a5
+ size: 32000000
diff --git a/taskcluster/ci/fetch/chromium-fetch.yml b/taskcluster/ci/fetch/chromium-fetch.yml
new file mode 100644
index 0000000000..f6b9cad8f3
--- /dev/null
+++ b/taskcluster/ci/fetch/chromium-fetch.yml
@@ -0,0 +1,32 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ fetch:
+ type: chromium-fetch
+ script: /builds/worker/bin/fetch-chromium.py
+
+linux64-chromium:
+ description: 'Linux64 Chromium Fetch'
+ fetch:
+ platform: linux
+ artifact-name: chromium-linux.tar.bz2
+
+win32-chromium:
+ description: 'Windows32 Chromium Fetch'
+ fetch:
+ platform: win32
+ artifact-name: chromium-win32.tar.bz2
+
+win64-chromium:
+ description: 'Windows64 Chromium Fetch'
+ fetch:
+ platform: win64
+ artifact-name: chromium-win64.tar.bz2
+
+mac-chromium:
+ description: 'MacOSX Chromium Fetch'
+ fetch:
+ platform: mac
+ artifact-name: chromium-mac.tar.bz2
diff --git a/taskcluster/ci/fetch/kind.yml b/taskcluster/ci/fetch/kind.yml
new file mode 100644
index 0000000000..027ab7f1eb
--- /dev/null
+++ b/taskcluster/ci/fetch/kind.yml
@@ -0,0 +1,20 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.fetch:transforms
+ - gecko_taskgraph.transforms.try_job:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+jobs-from:
+ - benchmarks.yml
+ - browsertime.yml
+ - chromium-fetch.yml
+ - resource-monitor.yml
+ - toolchain-clang-tidy-external.yml
+ - toolchains.yml
+ - updatebot.yml
diff --git a/taskcluster/ci/fetch/moz.build b/taskcluster/ci/fetch/moz.build
new file mode 100644
index 0000000000..28b8003edf
--- /dev/null
+++ b/taskcluster/ci/fetch/moz.build
@@ -0,0 +1,8 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+with Files("updatebot.yml"):
+ BUG_COMPONENT = ("Developer Infrastructure", "Mach Vendor & Updatebot")
diff --git a/taskcluster/ci/fetch/resource-monitor.yml b/taskcluster/ci/fetch/resource-monitor.yml
new file mode 100644
index 0000000000..2fe94cb4f9
--- /dev/null
+++ b/taskcluster/ci/fetch/resource-monitor.yml
@@ -0,0 +1,10 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+resource-monitor:
+ description: Resource monitoring tools
+ fetch:
+ type: git
+ repo: https://github.com/mozilla-releng/resource-monitor
+ revision: 17371502a3b04579375d707844e6bf08dee95d22
diff --git a/taskcluster/ci/fetch/toolchain-clang-tidy-external.yml b/taskcluster/ci/fetch/toolchain-clang-tidy-external.yml
new file mode 100644
index 0000000000..d71058c06b
--- /dev/null
+++ b/taskcluster/ci/fetch/toolchain-clang-tidy-external.yml
@@ -0,0 +1,13 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+civet-source:
+ description: Repository for external static analysis checks
+ artifact-prefix: project/civet
+ fetch:
+ type: git
+ repo: git@github.com:mozilla-services/civet.git
+ revision: fa787d2047a5c3759e67f0df58415a984dcc8777
+ ssh-key: project/civet/github-deploy-key
+ artifact-name: civet-source.tar.zst
diff --git a/taskcluster/ci/fetch/toolchains.yml b/taskcluster/ci/fetch/toolchains.yml
new file mode 100644
index 0000000000..76c6cf04fc
--- /dev/null
+++ b/taskcluster/ci/fetch/toolchains.yml
@@ -0,0 +1,635 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+binutils-2.31.1:
+ description: binutils 2.31.1 source code
+ fetch:
+ type: static-url
+ url: https://ftp.gnu.org/gnu/binutils/binutils-2.31.1.tar.xz
+ sha256: 5d20086ecf5752cc7d9134246e9588fa201740d540f7eb84d795b1f7a93bca86
+ size: 20467996
+ gpg-signature:
+ sig-url: "{url}.sig"
+ key-path: build/unix/build-binutils/3A24BC1E8FB409FA9F14371813FCEF89DD9E3C4F.key
+ artifact-name: binutils-source.tar.zst
+ strip-components: 1
+ add-prefix: binutils-source/
+
+binutils-2.36.1:
+ description: binutils 2.36.1 source code
+ fetch:
+ type: static-url
+ url: https://ftp.gnu.org/gnu/binutils/binutils-2.36.1.tar.xz
+ sha256: e81d9edf373f193af428a0f256674aea62a9d74dfe93f65192d4eae030b0f3b0
+ size: 22772248
+ gpg-signature:
+ sig-url: "{url}.sig"
+ key-path: build/unix/build-binutils/3A24BC1E8FB409FA9F14371813FCEF89DD9E3C4F.key
+ artifact-name: binutils-source.tar.zst
+ strip-components: 1
+ add-prefix: binutils-source/
+
+gcc-8.5.0:
+ description: GCC 8.5.0 source code
+ fetch:
+ type: static-url
+ url: https://ftp.gnu.org/gnu/gcc/gcc-8.5.0/gcc-8.5.0.tar.xz
+ sha256: d308841a511bb830a6100397b0042db24ce11f642dab6ea6ee44842e5325ed50
+ size: 63841008
+ gpg-signature:
+ sig-url: "{url}.sig"
+ key-path: build/unix/build-gcc/D3A93CAD751C2AF4F8C7AD516C35B99309B5FA62.key
+ artifact-name: gcc-source.tar.zst
+ strip-components: 1
+ add-prefix: gcc-source/
+
+gcc-9.5.0:
+ description: GCC 9.5.0 source code
+ fetch:
+ type: static-url
+ url: https://ftp.gnu.org/gnu/gcc/gcc-9.5.0/gcc-9.5.0.tar.xz
+ sha256: 27769f64ef1d4cd5e2be8682c0c93f9887983e6cfd1a927ce5a0a2915a95cf8f
+ size: 72462752
+ gpg-signature:
+ sig-url: "{url}.sig"
+ key-path: build/unix/build-gcc/7F74F97C103468EE5D750B583AB00996FC26A641.key
+ artifact-name: gcc-source.tar.zst
+ strip-components: 1
+ add-prefix: gcc-source/
+
+gcc-11.4.0:
+ description: GCC 11.4.0 source code
+ fetch:
+ type: static-url
+ url: https://ftp.gnu.org/gnu/gcc/gcc-11.4.0/gcc-11.4.0.tar.xz
+ sha256: 3f2db222b007e8a4a23cd5ba56726ef08e8b1f1eb2055ee72c1402cea73a8dd9
+ size: 79837032
+ gpg-signature:
+ sig-url: "{url}.sig"
+ key-path: build/unix/build-gcc/D3A93CAD751C2AF4F8C7AD516C35B99309B5FA62.key
+ artifact-name: gcc-source.tar.zst
+ strip-components: 1
+ add-prefix: gcc-source/
+
+gmp-6.1.0:
+ description: GMP 6.1.0 source code
+ fetch:
+ type: static-url
+ url: https://ftp.gnu.org/gnu/gmp/gmp-6.1.0.tar.bz2
+ sha256: 498449a994efeba527885c10405993427995d3f86b8768d8cdf8d9dd7c6b73e8
+ size: 2383840
+ gpg-signature:
+ sig-url: "{url}.sig"
+ key-path: build/unix/build-gcc/343C2FF0FBEE5EC2EDBEF399F3599FF828C67298.key
+ artifact-name: gmp-source.tar.zst
+ strip-components: 1
+ add-prefix: gmp-source/
+
+go-1.14.4:
+ description: Golang 1.14.4 build tools
+ fetch:
+ type: static-url
+ url: https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz
+ sha256: aed845e4185a0b2a3c3d5e1d0a35491702c55889192bb9c30e67a3de6849c067
+ size: 123711003
+
+isl-0.16.1:
+ description: ISL 0.16.1 source code
+ fetch:
+ type: static-url
+ url: https://gcc.gnu.org/pub/gcc/infrastructure/isl-0.16.1.tar.bz2
+ sha256: 412538bb65c799ac98e17e8cfcdacbb257a57362acfaaff254b0fcae970126d2
+ size: 1626446
+ artifact-name: isl-source.tar.zst
+ strip-components: 1
+ add-prefix: isl-source/
+
+mpc-1.0.3:
+ description: mpc 1.0.3 source code
+ fetch:
+ type: static-url
+ url: http://www.multiprecision.org/downloads/mpc-1.0.3.tar.gz
+ sha256: 617decc6ea09889fb08ede330917a00b16809b8db88c29c31bfbb49cbf88ecc3
+ size: 669925
+ gpg-signature:
+ sig-url: "{url}.sig"
+ key-path: build/unix/build-gcc/AD17A21EF8AED8F1CC02DBD9F7D5C9BF765C61E3.key
+ artifact-name: mpc-source.tar.zst
+ strip-components: 1
+ add-prefix: mpc-source/
+
+mpfr-3.1.4:
+ description: mpfr 3.1.4 source code
+ fetch:
+ type: static-url
+ url: http://www.mpfr.org/mpfr-3.1.4/mpfr-3.1.4.tar.bz2
+ sha256: d3103a80cdad2407ed581f3618c4bed04e0c92d1cf771a65ead662cc397f7775
+ size: 1279284
+ gpg-signature:
+ sig-url: "{url}.asc"
+ key-path: build/unix/build-gcc/07F3DBBECC1A39605078094D980C197698C3739D.key
+ artifact-name: mpfr-source.tar.zst
+ strip-components: 1
+ add-prefix: mpfr-source/
+
+nasm-2.14.02:
+ description: nasm 2.14.02 source code
+ fetch:
+ type: static-url
+ url: https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.xz
+ sha256: e24ade3e928f7253aa8c14aa44726d1edf3f98643f87c9d72ec1df44b26be8f5
+ size: 827620
+
+nasm-2.15.05:
+ description: nasm 2.15.05 source code
+ fetch:
+ type: static-url
+ url: https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.xz
+ sha256: 3caf6729c1073bf96629b57cee31eeb54f4f8129b01902c73428836550b30a3f
+ size: 995732
+
+wix-3.14.0:
+ description: wix 3.14.0.2812 binary release
+ # WIX doesn't use a wrapping toplevel DIR, so we should really repackage it when
+ # Bug 1479533 and related code is ready.
+ fetch:
+ type: static-url
+ # This is a dev version of the toolset, upstream will purge over time...
+ url: http://wixtoolset.org/downloads/v3.14.0.2812/wix314-binaries.zip
+ sha256: 923892298f37514622c58cbbd9c2cadf2822d9bb53df8ee83aaeb05280777611
+ size: 34664320
+
+zlib-1.2.13:
+ description: zlib 1.2.13 source code
+ fetch:
+ type: static-url
+ url: https://zlib.net/fossils/zlib-1.2.13.tar.gz
+ sha256: b3a24de97a8fdbc835b9833169501030b8977031bcb54b3b3ac13740f846ab30
+ size: 1497445
+
+nsis-3.07:
+ description: nsis 3.07 source code
+ fetch:
+ type: static-url
+ url: https://downloads.sourceforge.net/project/nsis/NSIS%203/3.07/nsis-3.07-src.tar.bz2
+ sha256: 4dfad3388589985b4cd91d20e18e1458aa31e7d139b5b8adf25c3a9c1015efba
+ size: 1784292
+
+nsis-3.07-win:
+ description: nsis 3.07 for windows
+ fetch:
+ type: static-url
+ # Temporary: pull down our own repackage of NSIS, with its plugin DLLs signed by Mozilla
+ # See https://bugzilla.mozilla.org/show_bug.cgi?id=1751450#c38 for more details
+ # bug 1771192 tracks adding a signing task downstream of the NSIS toolchain task
+ # to fix this more robustly.
+ url: https://github.com/mozilla-releng/adhoc-signing-blobs/raw/nsis/nsis-3.07-signed.zip
+ sha256: 5856cd49b52870caa41814d71ce30c4304d5001b80c04f4eb7028ffedd91df7e
+ size: 2618390
+ artifact-name: nsis.tar.zst
+ strip-components: 1
+ add-prefix: nsis/
+
+upx-3.95-win:
+ description: upx 3.95 for windows
+ fetch:
+ type: static-url
+ url: https://hg.mozilla.org/mozilla-build/raw-file/3b8c537ca3c879551956ad47ca9f089583f647c5/upx-3.95-win64.zip
+ sha256: 5c076f87ba64d82f11513f4af0ceb07246a3540aa3c72ca3ffc2d53971fa56e3
+ size: 462820
+
+wine:
+ description: wine source code
+ fetch:
+ type: static-url
+ url: https://dl.winehq.org/wine/source/8.0/wine-8.0.tar.xz
+ sha256: 0272c20938f8721ae4510afaa8b36037457dd57661e4d664231079b9e91c792e
+ size: 29054044
+ gpg-signature:
+ sig-url: "{url}.sign"
+ key-path: build/unix/build-gcc/DA23579A74D4AD9AF9D3F945CEFAC8EAAF17519D.key
+ artifact-name: wine.tar.zst
+ strip-components: 1
+ add-prefix: wine-source/
+
+cbindgen-0.24.3:
+ description: cbindgen source code
+ fetch:
+ type: git
+ repo: https://github.com/eqrion/cbindgen
+ revision: f43ccfc047a1a160267f32355c5e5e7154a2665a
+
+cctools-port:
+ description: cctools-port source code
+ fetch:
+ type: git
+ repo: https://github.com/tpoechtrager/cctools-port
+ revision: 30518813875aed656aa7f18b6d485feee25f8f87
+
+libtapi:
+ description: libtapi source code
+ fetch:
+ type: git
+ repo: https://github.com/tpoechtrager/apple-libtapi
+ revision: b4f141a16c7c82f75973429c92242a8c7de3ddb1
+
+ldid:
+ description: ldid source code
+ fetch:
+ type: git
+ repo: https://github.com/tpoechtrager/ldid
+ revision: 4bf8f4d60384a0693dbbe2084ce62a35bfeb87ab
+
+libdmg-hfsplus:
+ description: libdmg-hfsplug source code
+ fetch:
+ type: git
+ repo: https://github.com/mozilla/libdmg-hfsplus/
+ revision: 2ee327795680101d36f9700bd0fb618362237718
+
+hfsplus-tools:
+ description: hfstools-plus source code
+ fetch:
+ type: static-url
+ # Most-upstream is https://opensource.apple.com/source/diskdev_cmds/
+ url: https://src.fedoraproject.org/repo/pkgs/hfsplus-tools/diskdev_cmds-540.1.linux3.tar.gz/0435afc389b919027b69616ad1b05709/diskdev_cmds-540.1.linux3.tar.gz
+ sha256: b01b203a97f9a3bf36a027c13ddfc59292730552e62722d690d33bd5c24f5497
+ size: 411205
+
+xar:
+ description: xar source code
+ fetch:
+ type: git
+ repo: https://github.com/gabrielesvelto/xar
+ revision: 199ff76a7463f6b6a2548b4db29cd3dd5026df69
+
+bomutils:
+ description: bomutils (mkbom) source code
+ fetch:
+ type: git
+ repo: https://github.com/hogliux/bomutils
+ revision: 0e7dc7eefefb3a0ba2ef3a432cdc1089ac40740c
+
+rust-size:
+ description: rust-size source code
+ fetch:
+ type: git
+ repo: https://github.com/luser/rust-size
+ revision: ab659d93b1faba95307df952aefe3fbed3583669
+
+gn:
+ description: GN source code
+ fetch:
+ type: git
+ repo: https://gn.googlesource.com/gn
+ revision: 7e05276308f3d49f8514ef02afe4f94487b1efb2
+
+grcov:
+ description: grcov source code
+ fetch:
+ type: git
+ repo: https://github.com/mozilla/grcov
+ revision: 6ccd61964a0ab60d193394f18c0986eb37d14b9e
+
+sccache:
+ description: sccache source code
+ fetch:
+ type: git
+ repo: https://github.com/mozilla/sccache
+ # 0.4.1 release
+ revision: d0d1beadd2739653ed878055215c0d9b7decb3b9
+
+fxc2:
+ description: fxc2 source code
+ fetch:
+ type: git
+ repo: https://github.com/mozilla/fxc2
+ revision: 63ad74b7faa7033f2c1be9cc1cd0225241a1a9a5
+
+mingw-w64:
+ description: mingw-w64 source code
+ fetch:
+ type: git
+ repo: https://git.code.sf.net/p/mingw-w64/mingw-w64
+ revision: f9500e2d85b9400c0982518663660a127e1dc61a
+
+llvm-mingw:
+ description: llvm-mingw source code
+ fetch:
+ type: git
+ repo: https://github.com/mstorsjo/llvm-mingw
+ revision: 9f8e5cebd6dbbb7546e8917e6c59284699a48d26
+
+android-ndk-rs:
+ description: android-ndk-rs source code
+ fetch:
+ type: git
+ repo: https://github.com/jamienicol/android-ndk-rs
+ revision: 595f4e14a78371e3ab59b12f7bd8131f2ec5b4a1
+
+clang-7.0:
+ description: clang 7.0.0 source code
+ fetch:
+ type: git
+ repo: https://github.com/llvm/llvm-project
+ revision: 00b161b8971bc6d3cb55f13502288b8fe0dbaa42
+
+clang-14:
+ description: clang 14.0.5 source code
+ fetch:
+ type: git
+ repo: https://github.com/llvm/llvm-project
+ revision: 4bc1d0b51c8e488d78ab69c8b19cfbcd1f7db6a4
+
+clang-16:
+ description: clang 16.0.4 source code
+ fetch:
+ type: git
+ repo: https://github.com/llvm/llvm-project
+ revision: ae42196bc493ffe877a7e3dff8be32035dea4d07
+
+clang-trunk:
+ description: clang main branch source code
+ attributes:
+ cached_task: false
+ fetch:
+ type: git
+ repo: https://github.com/llvm/llvm-project
+ branch: main
+
+# We build stable rust from source so the resulting compiler acts as a nightly
+# rust compiler, allowing to use unstable features like -Zbuild-std and
+# sanitizers.
+rust-1.69.0:
+ description: Rust 1.69.0 source code
+ fetch:
+ type: git
+ include-dot-git: true
+ repo: https://github.com/rust-lang/rust/
+ revision: 84c898d65adf2f39a5a98507f1fe0ce10a2b8dbc
+
+wasi-sdk:
+ description: wasi-sdk-20 source code
+ fetch:
+ type: git
+ repo: https://github.com/WebAssembly/wasi-sdk
+ revision: 935fe1acd2fcd7ea4aed2d5ee4527482862b6344
+
+ninja:
+ description: ninja 1.9.0
+ fetch:
+ type: static-url
+ url: https://github.com/ninja-build/ninja/releases/download/v1.9.0/ninja-win.zip
+ sha256: 2d70010633ddaacc3af4ffbd21e22fae90d158674a09e132e06424ba3ab036e9
+ size: 254497
+ artifact-name: ninja.tar.zst
+ add-prefix: ninja/bin/
+
+cmake:
+ description: cmake 3.25.1
+ fetch:
+ type: static-url
+ url: https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1-windows-x86_64.zip
+ sha256: d93958d87cc9b91983489f0b37a268b03a3c891894d11f5437fa2a5ce94aab24
+ size: 41460154
+ artifact-name: cmake.tar.zst
+ strip-components: 1
+ add-prefix: cmake/
+
+dump-syms:
+ description: dump_syms source code
+ fetch:
+ type: git
+ repo: https://github.com/mozilla/dump_syms/
+ revision: 7cb5f5243f87c562a44259ecb79675ea07842a8f
+
+rust-minidump:
+ description: rust-minidump 0.15.2 source code (for minidump-stackwalk)
+ fetch:
+ type: git
+ repo: https://github.com/rust-minidump/rust-minidump/
+ revision: 0d782e53650f4059ede143e10686c6ce9947dbc4
+
+fix-stacks:
+ description: fix-stacks source code
+ fetch:
+ type: git
+ repo: https://github.com/mozilla/fix-stacks/
+ revision: cfa7048e437c6778b066e7ecb5ce834eb8c3efe7
+
+winchecksec:
+ description: winchecksec source code
+ fetch:
+ type: git
+ repo: https://github.com/trailofbits/winchecksec/
+ revision: 93ffe67dbfc757bf6f440d80b8acf88e652ed60a
+
+sonatype-nexus:
+ description: Sonatype Nexus Maven repository service
+ fetch:
+ type: static-url
+ url: https://download.sonatype.com/nexus/oss/nexus-2.14.18-01-bundle.tar.gz
+ sha256: 350af8b270bec7fda5861a15b8a5b7870fd8903d0b9a210754113d5a966ce6a6
+ size: 83493896
+ artifact-name: sonatype-nexus.tar.zst
+ strip-components: 1
+ add-prefix: sonatype-nexus/
+
+jdk-8-linux64:
+ description: Java 8 JDK
+ fetch:
+ type: static-url
+ url: https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u312-b07/OpenJDK8U-jdk_x64_linux_hotspot_8u312b07.tar.gz
+ sha256: 699981083983b60a7eeb511ad640fae3ae4b879de5a3980fe837e8ade9c34a08
+ size: 103016010
+ artifact-name: jdk-8.tar.zst
+ strip-components: 1
+ add-prefix: jdk-8/
+
+makecab:
+ description: makecab source code
+ fetch:
+ type: git
+ repo: https://github.com/glandium/rust-makecab/
+ revision: 73a4605b97123bf7221533c671f27f234d974b02
+
+nodejs-12-linux64:
+ description: nodejs 12 for x64 linux
+ fetch:
+ type: static-url
+ url: https://nodejs.org/dist/v12.22.12/node-v12.22.12-linux-x64.tar.xz
+ sha256: e6d052364bfa2c17da92cf31794100cfd709ba147415ddaeed2222eec9ca1469
+ size: 14584388
+ artifact-name: nodejs.tar.zst
+ strip-components: 1
+ add-prefix: node/
+
+nodejs-16-linux64:
+ description: nodejs 16 for x64 linux
+ fetch:
+ type: static-url
+ url: https://nodejs.org/dist/v16.19.0/node-v16.19.0-linux-x64.tar.xz
+ sha256: c88b52497ab38a3ddf526e5b46a41270320409109c3f74171b241132984fd08f
+ size: 22492000
+ artifact-name: nodejs.tar.zst
+ strip-components: 1
+ add-prefix: node/
+
+nodejs-12-macosx64:
+ description: nodejs 12 for x64 macOS
+ fetch:
+ type: static-url
+ url: https://nodejs.org/dist/v12.22.12/node-v12.22.12-darwin-x64.tar.xz
+ sha256: 95799e1276d65b599635f839248d3b3f7d3986873da8f01902a541b9588a6c71
+ size: 13678092
+ artifact-name: nodejs.tar.zst
+ strip-components: 1
+ add-prefix: node/
+
+nodejs-16-macosx64:
+ description: nodejs 16 for x64 macOS
+ fetch:
+ type: static-url
+ url: https://nodejs.org/dist/v16.19.0/node-v16.19.0-darwin-x64.tar.xz
+ sha256: 601d1d632b9815dbb647f5cd440a95fa651110b5b4bcaf07ed3aa7886525716b
+ size: 20975524
+ artifact-name: nodejs.tar.zst
+ strip-components: 1
+ add-prefix: node/
+
+nodejs-16-macosx64-arm64:
+ description: nodejs 16 for arm64 macOS
+ fetch:
+ type: static-url
+ url: https://nodejs.org/dist/v16.19.0/node-v16.19.0-darwin-arm64.tar.xz
+ sha256: 7313c9db5f5140ece847a97f366032a10bddb6d87fa28a361ada918addcd5c73
+ size: 19363804
+ artifact-name: nodejs.tar.zst
+ strip-components: 1
+ add-prefix: node/
+
+nodejs-12-win32:
+ description: nodejs 12 for x86 Windows
+ fetch:
+ type: static-url
+ url: https://nodejs.org/dist/v12.22.12/node-v12.22.12-win-x86.zip
+ sha256: 2f7fa563c9477d5e9fddc5c22451b21b8a963c9b5004c80dd0140c3a3675a4e8
+ size: 17134607
+ artifact-name: nodejs.tar.zst
+ strip-components: 1
+ add-prefix: node/
+
+nodejs-16-win32:
+ description: nodejs 16 for x86 Windows
+ fetch:
+ type: static-url
+ url: https://nodejs.org/dist/v16.19.0/node-v16.19.0-win-x86.zip
+ sha256: 17e2bf8ed00b3d15321743104104c8b6ef55677dfc18ee2ed44de64fbf2c4def
+ size: 25424808
+ artifact-name: nodejs.tar.zst
+ strip-components: 1
+ add-prefix: node/
+
+nodejs-12-win64:
+ description: nodejs 12 for x64 Windows
+ fetch:
+ type: static-url
+ url: https://nodejs.org/dist/v12.22.12/node-v12.22.12-win-x64.zip
+ sha256: 09639bac66d4dc4dd52179968209413ad4b7360e917dcbe8834052a4b936a087
+ size: 18681823
+ artifact-name: nodejs.tar.zst
+ strip-components: 1
+ add-prefix: node/
+
+nodejs-16-win64:
+ description: nodejs 16 for x64 Windows
+ fetch:
+ type: static-url
+ url: https://nodejs.org/dist/v16.19.0/node-v16.19.0-win-x64.zip
+ sha256: 534ca7a24e999c81cec847a498cc43d47e2bb158f6edf639e5297f2718350e96
+ size: 27072850
+ artifact-name: nodejs.tar.zst
+ strip-components: 1
+ add-prefix: node/
+
+gnumake:
+ description: GNU make source
+ fetch:
+ type: static-url
+ url: https://ftp.gnu.org/gnu/make/make-4.3.tar.gz
+ sha256: e05fdde47c5f7ca45cb697e973894ff4f5d79e13b750ed57d7b66d8defc78e19
+ size: 2317073
+ artifact-name: make.tar.zst
+ strip-components: 1
+ add-prefix: make/
+
+msix-packaging:
+ description: Microsoft msix-packaging
+ fetch:
+ type: git
+ repo: https://github.com/mozilla/msix-packaging
+ revision: 8164b7ac5a67688e18fa2497fb31ba13ce9bfb15
+
+pkgconf:
+ description: pkgconf 1.8.0
+ fetch:
+ type: static-url
+ url: https://distfiles.dereferenced.org/pkgconf/pkgconf-1.8.0.tar.xz
+ sha256: ef9c7e61822b7cb8356e6e9e1dca58d9556f3200d78acab35e4347e9d4c2bbaf
+ size: 296304
+ artifact-name: pkgconf.tar.zst
+ strip-components: 1
+ add-prefix: pkgconf/
+
+afl-2.5:
+ description: AFL 2.5x source
+ fetch:
+ type: git
+ repo: https://github.com/google/AFL
+ revision: e75894a889fe854c02b9435186bd1e2927d6d490
+
+cargo-vet:
+ description: cargo-vet source
+ fetch:
+ type: git
+ repo: https://github.com/mozilla/cargo-vet
+ revision: 088586cdf13a9959ce9ca4e1321203b34e467656
+
+symbol-scrapers:
+ description: Linux distribution symbol scraper source
+ fetch:
+ type: git
+ repo: http://github.com/mozilla/symbol-scrapers
+ revision: f61d24345d27760a5c2dc8f9370368bdaa9a4e82
+
+cpython-3.8.10:
+ description: cpython 3.8.10 source code
+ fetch:
+ type: static-url
+ url: https://www.python.org/ftp/python/3.8.10/Python-3.8.10.tgz
+ sha256: b37ac74d2cbad2590e7cd0dd2b3826c29afe89a734090a87bf8c03c45066cb65
+ size: 24720640
+ artifact-name: cpython-source.tar.zst
+ strip-components: 1
+ add-prefix: cpython-source/
+
+cpython-3.8.10.exe:
+ description: cpython 3.8.10 installer
+ fetch:
+ type: static-url
+ url: https://www.python.org/ftp/python/3.8.10/python-3.8.10-amd64.exe
+ sha256: 7628244cb53408b50639d2c1287c659f4e29d3dfdb9084b11aed5870c0c6a48a
+ size: 28296784
+ artifact-name: python-3.8.10-amd64.exe
+
+cpython-3.7.15:
+ description: cpython 3.7.15 source code
+ fetch:
+ type: static-url
+ url: https://www.python.org/ftp/python/3.7.15/Python-3.7.15.tgz
+ sha256: cf2993798ae8430f3af3a00d96d9fdf320719f4042f039380dca79967c25e436
+ size: 24033532
+ artifact-name: cpython-source.tar.zst
+ strip-components: 1
+ add-prefix: cpython-source/
diff --git a/taskcluster/ci/fetch/updatebot.yml b/taskcluster/ci/fetch/updatebot.yml
new file mode 100644
index 0000000000..b757a383f8
--- /dev/null
+++ b/taskcluster/ci/fetch/updatebot.yml
@@ -0,0 +1,33 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+cloud-sql-proxy-1.25.0:
+ description: Windows executable for Google's Cloud SQL Proxy
+ fetch:
+ type: static-url
+ url: https://storage.googleapis.com/cloudsql-proxy/v1.25.0/cloud_sql_proxy_x64.exe
+ sha256: b922a8d3924499b829bfe53a25382f9b340ea804a738e2a7d8b34957a329a2dd
+ size: 16195072
+ artifact-name: cloud_sql_proxy.exe
+php-windows-7.4.24:
+ description: VC15 x64 Non Thread Safe (2021-Sep-21 16:58:34)
+ fetch:
+ type: static-url
+ url: https://windows.php.net/downloads/releases/archives/php-7.4.24-nts-Win32-vc15-x64.zip
+ sha256: 1e93fb390ab2761a47d27c97225a518759731c632c0dd87436cbf25f19582436
+ size: 26067094
+ artifact-name: php.tar.zst
+ add-prefix: php-win/
+arcanist:
+ description: checkout of arcanist for running on Windows
+ fetch:
+ type: git
+ repo: https://github.com/phacility/arcanist
+ revision: a028291f8e5e79b6446ad67ed8b0be9c5ec8f029
+depot_tools:
+ description: Google's depot_tools package
+ fetch:
+ type: git
+ repo: https://chromium.googlesource.com/chromium/tools/depot_tools.git
+ revision: 7b3351443198f4e7d068999b169385b55a43679a
diff --git a/taskcluster/ci/fuzzing/kind.yml b/taskcluster/ci/fuzzing/kind.yml
new file mode 100644
index 0000000000..02d8d09ca6
--- /dev/null
+++ b/taskcluster/ci/fuzzing/kind.yml
@@ -0,0 +1,65 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.source_test:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - fetch
+ - toolchain
+ - build
+
+job-defaults:
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 3600
+ docker-image: {in-tree: debian11-amd64-build}
+ use-system-python: false
+ treeherder:
+ kind: test
+ tier: 3
+ if-dependencies: [build]
+
+jobs:
+ simple:
+ platform: linux64/opt
+ require-build:
+ linux64/opt: build-linux64/opt
+ description: Simple Fuzzing Test
+ treeherder:
+ symbol: simple-fuzzing
+ fetches:
+ build:
+ - target.jsshell.zip
+ - target.fuzztest.tests.tar.gz
+ worker:
+ env:
+ LD_LIBRARY_PATH: /builds/worker/fetches
+ JSSHELL: ./js
+ run:
+ using: run-task
+ command: >-
+ cd $MOZ_FETCHES_DIR &&
+ python3 tools/fuzzing/smoke/smoke.py
+
+ python:
+ platform: linux64-asan-fuzzing/opt
+ require-build:
+ linux64-asan-fuzzing/opt: build-linux64-asan-fuzzing/opt
+ description: Python Fuzzing Smoke Tests
+ treeherder:
+ symbol: fuzzing-python
+ fetches:
+ build:
+ - target.tar.bz2
+ run:
+ using: run-task
+ cwd: '{checkout}'
+ command: >
+ export GECKO_BINARY_PATH=$MOZ_FETCHES_DIR/firefox/firefox &&
+ ./mach python-test --subsuite fuzzing
diff --git a/taskcluster/ci/fxrecord/kind.yml b/taskcluster/ci/fxrecord/kind.yml
new file mode 100644
index 0000000000..10bd6b3d24
--- /dev/null
+++ b/taskcluster/ci/fxrecord/kind.yml
@@ -0,0 +1,42 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+kind-dependencies:
+ - build
+
+only-for-build-platforms:
+ - win64-shippable/opt
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.fxrecord:transforms
+ - gecko_taskgraph.transforms.release_notifications:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-template:
+ name: notify-fxrecord-failure
+ description: "Desktop Startup Visual Metrics"
+ run-on-projects:
+ - "mozilla-central"
+ worker-type: performance-hardware/gecko-t-fxrecorder
+ worker:
+ implementation: generic-worker
+ max-run-time: 1800
+ os: windows
+ command: ["C:\\fxrecorder\\fxrecorder.exe --config C:\\fxrecorder\\fxrecord.toml record"]
+ treeherder:
+ symbol: fxrec(1st)
+ tier: 2
+ kind: other
+ notifications:
+ status-types:
+ - "on-failed"
+ - "on-exception"
+ subject: fxrecord run failed
+ message: fxrecord run failed
+ emails:
+ - "barret@mozilla.com"
+ - "perftest-alerts@mozilla.com"
diff --git a/taskcluster/ci/geckodriver-mac-notarization/kind.yml b/taskcluster/ci/geckodriver-mac-notarization/kind.yml
new file mode 100644
index 0000000000..89a2971d8e
--- /dev/null
+++ b/taskcluster/ci/geckodriver-mac-notarization/kind.yml
@@ -0,0 +1,33 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.mac_notarization:transforms
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.geckodriver_mac_notarization:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - geckodriver-signing
+
+only-for-build-platforms:
+ - macosx64-geckodriver/opt
+ - macosx64-aarch64-geckodriver/opt
+
+job-template:
+ worker-type: linux-signing
+ treeherder:
+ symbol: TM(gd-n)
+ worker:
+ implementation: scriptworker-signing
+ max-run-time: 3600
+ upstream-artifacts:
+ - taskType: signing
+ paths:
+ - public/build/geckodriver.tar.gz
+ formats: ["apple_notarization_geckodriver"]
+ taskId:
+ task-reference: <geckodriver-signing>
diff --git a/taskcluster/ci/geckodriver-signing/kind.yml b/taskcluster/ci/geckodriver-signing/kind.yml
new file mode 100644
index 0000000000..d918c2bfa1
--- /dev/null
+++ b/taskcluster/ci/geckodriver-signing/kind.yml
@@ -0,0 +1,16 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.geckodriver_signing:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - toolchain
+
+only-for-attributes:
+ - geckodriver
diff --git a/taskcluster/ci/generate-profile/kind.yml b/taskcluster/ci/generate-profile/kind.yml
new file mode 100644
index 0000000000..0ed67bde19
--- /dev/null
+++ b/taskcluster/ci/generate-profile/kind.yml
@@ -0,0 +1,251 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - toolchain
+ - instrumented-build
+
+transforms:
+ - gecko_taskgraph.transforms.build_attrs:transforms
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.run_pgo_profile:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+
+job-defaults:
+ treeherder:
+ symbol: Bpgo(run)
+ kind: build
+ tier: 1
+ run-on-projects: ['release']
+
+jobs:
+ linux-shippable/opt:
+ description: "Linux Profile Generation"
+ shipping-phase: build
+ shipping-product: firefox
+ index:
+ product: firefox
+ job-name: linux-profile
+ treeherder:
+ platform: linux32-shippable/opt
+ worker-type: b-linux-gcp
+ worker:
+ chain-of-trust: true
+ env:
+ NEED_XVFB: "true"
+ max-run-time: 1200
+ docker-image: {in-tree: ubuntu1804-test}
+ artifacts:
+ - type: directory
+ name: public/build
+ path: /builds/worker/artifacts/
+ run:
+ using: run-task
+ cwd: '{checkout}'
+ command: >
+ ./taskcluster/scripts/misc/run-profileserver.sh
+ run-on-projects: ['release']
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-minidump-stackwalk
+
+ linux64-shippable/opt:
+ description: "Linux64 Profile Generation"
+ shipping-phase: build
+ shipping-product: firefox
+ index:
+ product: firefox
+ job-name: linux64-profile
+ treeherder:
+ platform: linux64-shippable/opt
+ worker-type: b-linux-gcp
+ worker:
+ chain-of-trust: true
+ env:
+ NEED_XVFB: "true"
+ max-run-time: 1200
+ docker-image: {in-tree: ubuntu1804-test}
+ artifacts:
+ - type: directory
+ name: public/build
+ path: /builds/worker/artifacts/
+ run:
+ using: run-task
+ cwd: '{checkout}'
+ command: >
+ ./taskcluster/scripts/misc/run-profileserver.sh
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-minidump-stackwalk
+
+ android-x86-shippable/opt:
+ description: "Android 5.0 x86 Profile Generation"
+ shipping-phase: build
+ shipping-product: fennec
+ index:
+ product: mobile
+ job-name: android-x86-profile
+ treeherder:
+ platform: android-5-0-x86/pgo
+ worker-type: t-linux-xlarge-pgo
+ worker:
+ chain-of-trust: true
+ max-run-time: 2700
+ docker-image: {in-tree: ubuntu1804-test}
+ env:
+ WORKING_DIR: "/builds/worker"
+ MOZHARNESS_PATH: "/builds/worker/checkouts/gecko/testing/mozharness"
+ artifacts:
+ - type: directory
+ name: public/build
+ path: /builds/worker/artifacts/
+ run:
+ using: mozharness
+ job-script: taskcluster/scripts/tester/test-linux.sh
+ script: android_emulator_pgo.py
+ tooltool-downloads: internal
+ options: [installer-path=/builds/worker/fetches/geckoview-test_runner.apk]
+ config:
+ - android/android_common.py
+ - android/android-x86_64-profile-generation.py
+ - android/android_pgo.py
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-minidump-stackwalk
+ - android-sdk-linux
+ - android-system-image-x86_64-linux
+ - android-avd-x86_64-linux
+
+ android-x86_64-shippable/opt:
+ description: "Android 5.0 x86_64 Profile Generation"
+ shipping-phase: build
+ shipping-product: fennec
+ index:
+ product: mobile
+ job-name: android-x86_64-profile
+ treeherder:
+ platform: android-5-0-x86_64/pgo
+ worker-type: t-linux-xlarge-pgo
+ worker:
+ chain-of-trust: true
+ max-run-time: 2700
+ docker-image: {in-tree: ubuntu1804-test}
+ env:
+ WORKING_DIR: "/builds/worker"
+ MOZHARNESS_PATH: "/builds/worker/checkouts/gecko/testing/mozharness"
+ artifacts:
+ - type: directory
+ name: public/build
+ path: /builds/worker/artifacts/
+ run:
+ using: mozharness
+ job-script: taskcluster/scripts/tester/test-linux.sh
+ script: android_emulator_pgo.py
+ tooltool-downloads: internal
+ options: [installer-path=/builds/worker/fetches/geckoview-test_runner.apk]
+ config:
+ - android/android_common.py
+ - android/android-x86_64-profile-generation.py
+ - android/android_pgo.py
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-minidump-stackwalk
+ - android-sdk-linux
+ - android-system-image-x86_64-linux
+ - android-avd-x86_64-linux
+
+ win32-shippable/opt:
+ description: "Win32 Profile Generation"
+ shipping-phase: build
+ shipping-product: firefox
+ index:
+ product: firefox
+ job-name: win32-profile
+ treeherder:
+ platform: windows2012-32-shippable/opt
+ worker-type: b-win2012
+ worker:
+ chain-of-trust: true
+ max-run-time: 2400
+ env:
+ UPLOAD_PATH: "artifacts"
+ artifacts:
+ - type: directory
+ name: public/build
+ path: build/src/artifacts/
+ run:
+ using: run-task
+ sparse-profile: profile-generate
+ cwd: '{checkout}'
+ command: ./taskcluster/scripts/misc/run-profileserver.sh
+ fetches:
+ toolchain:
+ - win64-clang-toolchain
+ - win32-minidump-stackwalk
+
+ win64-shippable/opt:
+ description: "Win64 Profile Generation"
+ shipping-phase: build
+ shipping-product: firefox
+ index:
+ product: firefox
+ job-name: win64-profile
+ treeherder:
+ platform: windows2012-64-shippable/opt
+ worker-type: b-win2012
+ worker:
+ chain-of-trust: true
+ max-run-time: 2400
+ env:
+ UPLOAD_PATH: "artifacts"
+ artifacts:
+ - type: directory
+ name: public/build
+ path: build/src/artifacts/
+ run:
+ using: run-task
+ sparse-profile: profile-generate
+ cwd: '{checkout}'
+ command: ./taskcluster/scripts/misc/run-profileserver.sh
+ fetches:
+ toolchain:
+ - win64-clang-toolchain
+ - win32-minidump-stackwalk
+
+ macosx64-shippable/opt:
+ description: "macosx64 Profile Generation"
+ shipping-phase: build
+ shipping-product: firefox
+ index:
+ product: firefox
+ job-name: macosx64-profile
+ treeherder:
+ platform: macosx1015-64-shippable/opt
+ worker-type: b-osx-1015
+ worker:
+ chain-of-trust: true
+ max-run-time: 7200
+ env:
+ SHELL: "/bin/bash"
+ artifacts:
+ - type: directory
+ name: public/build
+ path: artifacts/
+ run:
+ using: run-task
+ sparse-profile: profile-generate
+ cwd: '{checkout}'
+ command: ./taskcluster/scripts/misc/run-profileserver-macos.sh
+ fetches:
+ toolchain:
+ - macosx64-clang
+ - macosx64-minidump-stackwalk
diff --git a/taskcluster/ci/github-sync/kind.yml b/taskcluster/ci/github-sync/kind.yml
new file mode 100644
index 0000000000..7c0b8136c4
--- /dev/null
+++ b/taskcluster/ci/github-sync/kind.yml
@@ -0,0 +1,53 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - toolchain
+ - build
+
+transforms:
+ - gecko_taskgraph.transforms.github_sync:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ attributes:
+ retrigger: true
+ run-on-projects: ['mozilla-central-only']
+ worker-type: b-linux-gcp
+ treeherder:
+ platform: other/opt
+ tier: 2
+ kind: other
+ worker:
+ max-run-time: 3600
+ docker-image: {in-tree: github-sync}
+ run:
+ sparse-profile: github-sync
+ using: run-task
+
+jobs:
+ webrender:
+ description: Sync webrender to github mirror
+ secret: gecko/gfx-github-sync/token
+ run:
+ command: '$GECKO_PATH/tools/github-sync/sync-to-github.sh webrender gfx/wr servo/webrender @bors-servo'
+ when:
+ files-changed:
+ - 'gfx/wr/**'
+ treeherder:
+ symbol: GhS(wr)
+
+ qcms:
+ description: Sync qcms to github mirror
+ secret: gecko/gfx-github-sync/token
+ run:
+ command: '$GECKO_PATH/tools/github-sync/sync-to-github.sh qcms gfx/qcms FirefoxGraphics/qcms @jrmuizel'
+ when:
+ files-changed:
+ - 'gfx/qcms/**'
+ treeherder:
+ symbol: GhS(qcms)
diff --git a/taskcluster/ci/hazard/kind.yml b/taskcluster/ci/hazard/kind.yml
new file mode 100644
index 0000000000..e2d4677702
--- /dev/null
+++ b/taskcluster/ci/hazard/kind.yml
@@ -0,0 +1,82 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - toolchain
+
+transforms:
+ - gecko_taskgraph.transforms.build_attrs:transforms
+ - gecko_taskgraph.transforms.build_lints:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ attributes:
+ retrigger: true
+ treeherder:
+ kind: build
+ tier: 1
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 10800
+ docker-image: {in-tree: debian11-amd64-build}
+
+jobs:
+ linux64-shell-haz/debug:
+ description: "JS Shell Hazard Analysis Linux"
+ index:
+ product: firefox
+ job-name: shell-haz-debug
+ treeherder:
+ platform: linux64/debug
+ symbol: SM(H)
+ run:
+ using: hazard
+ command: >
+ cd /builds/worker/checkouts/gecko/taskcluster/scripts/builder
+ && ./build-haz-linux.sh --project js $HOME/workspace
+ when:
+ files-changed:
+ - js/public/**
+ - js/src/**
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-gcc-9
+ - linux64-gcc-sixgill
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+
+ linux64-haz/debug:
+ description: "Browser Hazard Analysis Linux"
+ index:
+ product: firefox
+ job-name: browser-haz-debug
+ treeherder:
+ platform: linux64/debug
+ symbol: H
+ run:
+ using: hazard
+ command: >
+ cd /builds/worker/checkouts/gecko/taskcluster/scripts/builder
+ && ./build-haz-linux.sh --project browser $HOME/workspace
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-gcc-9
+ - linux64-gcc-sixgill
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ optimization:
+ skip-unless-backstop: null
diff --git a/taskcluster/ci/instrumented-build/kind.yml b/taskcluster/ci/instrumented-build/kind.yml
new file mode 100644
index 0000000000..c4ceb2d170
--- /dev/null
+++ b/taskcluster/ci/instrumented-build/kind.yml
@@ -0,0 +1,319 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - toolchain
+ - fetch
+
+transforms:
+ - gecko_taskgraph.transforms.build:transforms
+ - gecko_taskgraph.transforms.build_attrs:transforms
+ - gecko_taskgraph.transforms.build_lints:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.artifact:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ shipping-phase: build
+ treeherder:
+ symbol: Bpgo(instr)
+ tier: 1
+ worker:
+ max-run-time: 7200
+ env:
+ PERFHERDER_EXTRA_OPTIONS: instrumented
+ MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE: system
+ use-system-python: false
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ use-sccache:
+ by-release-level:
+ production: false
+ staging: true
+ fetches:
+ toolchain:
+ - linux64-sccache
+ run-on-projects: ['release']
+
+jobs:
+ linux-shippable/opt:
+ description: "Linux Instrumented"
+ index:
+ product: firefox
+ job-name: instrumented-linux
+ shipping-product: firefox
+ treeherder:
+ platform: linux32-shippable/opt
+ worker-type: b-linux-gcp
+ run:
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_32_builds.py
+ mozconfig-variant: profile-generate
+ tooltool-downloads: public
+ run-on-projects: ['release']
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-i686-linux-gnu
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+ linux64-shippable/opt:
+ description: "Linux64 Instrumented"
+ index:
+ product: firefox
+ job-name: instrumented-linux64
+ shipping-product: firefox
+ treeherder:
+ platform: linux64-shippable/opt
+ worker-type: b-linux-gcp
+ run:
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ mozconfig-variant: profile-generate
+ tooltool-downloads: public
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+ macosx64-shippable/opt:
+ description: "MacOS X x64 Cross-compile Instrumented"
+ shipping-phase: build
+ shipping-product: firefox
+ treeherder:
+ platform: osx-shippable/opt
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ env:
+ PERFHERDER_EXTRA_OPTIONS: instrumented
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_mac_64_cross_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ mozconfig-variant: profile-generate
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - linux64-clang
+ - linux64-hfsplus
+ - linux64-libdmg
+ - linux64-rust-macos
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-nasm
+ - linux64-node
+ - macosx64-sdk
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+ android-x86-shippable/opt:
+ description: "Android 5.0 x86 PGO instrumented"
+ index:
+ product: mobile
+ job-name: instrumented-android-x86
+ shipping-product: fennec
+ treeherder:
+ platform: android-5-0-x86/pgo
+ worker-type: b-linux-gcp
+ worker:
+ docker-image: {in-tree: android-build}
+ env:
+ GRADLE_USER_HOME: "/builds/worker/checkouts/gecko/mobile/android/gradle/dotgradle-offline"
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest"
+ artifacts:
+ - name: public/build
+ path: /builds/worker/artifacts/
+ type: directory
+ - name: public/build/geckoview-androidTest.apk
+ path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview/outputs/apk/androidTest/withGeckoBinaries/debug/geckoview-withGeckoBinaries-debug-androidTest.apk
+ type: file
+ - name: public/build/geckoview-test_runner.apk
+ path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/test_runner/outputs/apk/withGeckoBinaries/debug/test_runner-withGeckoBinaries-debug.apk
+ type: file
+ - name: public/build/geckoview-test_runner.aab
+ path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/test_runner/outputs/bundle/withGeckoBinariesDebug/test_runner-withGeckoBinaries-debug.aab
+ type: file
+ - name: public/build/geckoview_example.apk
+ path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview_example/outputs/apk/withGeckoBinaries/debug/geckoview_example-withGeckoBinaries-debug.apk
+ type: file
+ - name: public/build/geckoview_example.aab
+ path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview_example/outputs/bundle/withGeckoBinariesDebug/geckoview_example-withGeckoBinaries-debug.aab
+ type: file
+ run:
+ config:
+ - builds/releng_base_android_64_builds.py
+ custom-build-variant-cfg: x86-profile-generate
+ tooltool-downloads: internal
+ fetches:
+ toolchain:
+ - android-gradle-dependencies
+ - android-ndk-linux
+ - android-sdk-linux
+ - linux64-jdk
+ # Workaround issues in binutils from the ndk with the compiler-rt from clang-13
+ - linux64-binutils
+ - linux64-clang
+ - linux64-rust-android
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-nasm
+ - linux64-node
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+ android-x86_64-shippable/opt:
+ description: "Android 5.0 x86_64 PGO instrumented"
+ index:
+ product: mobile
+ job-name: instrumented-android-x86_64
+ shipping-product: fennec
+ treeherder:
+ platform: android-5-0-x86_64/pgo
+ worker-type: b-linux-gcp
+ worker:
+ docker-image: {in-tree: android-build}
+ env:
+ GRADLE_USER_HOME: "/builds/worker/checkouts/gecko/mobile/android/gradle/dotgradle-offline"
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest"
+ artifacts:
+ - name: public/build
+ path: /builds/worker/artifacts/
+ type: directory
+ - name: public/build/geckoview-androidTest.apk
+ path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview/outputs/apk/androidTest/withGeckoBinaries/debug/geckoview-withGeckoBinaries-debug-androidTest.apk
+ type: file
+ - name: public/build/geckoview-test_runner.apk
+ path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/test_runner/outputs/apk/withGeckoBinaries/debug/test_runner-withGeckoBinaries-debug.apk
+ type: file
+ - name: public/build/geckoview-test_runner.aab
+ path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/test_runner/outputs/bundle/withGeckoBinariesDebug/test_runner-withGeckoBinaries-debug.aab
+ type: file
+ - name: public/build/geckoview_example.apk
+ path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview_example/outputs/apk/withGeckoBinaries/debug/geckoview_example-withGeckoBinaries-debug.apk
+ type: file
+ - name: public/build/geckoview_example.aab
+ path: /builds/worker/workspace/obj-build/gradle/build/mobile/android/geckoview_example/outputs/bundle/withGeckoBinariesDebug/geckoview_example-withGeckoBinaries-debug.aab
+ type: file
+ run:
+ config:
+ - builds/releng_base_android_64_builds.py
+ custom-build-variant-cfg: x86_64-profile-generate
+ tooltool-downloads: internal
+ fetches:
+ toolchain:
+ - android-gradle-dependencies
+ - android-ndk-linux
+ - android-sdk-linux
+ - linux64-jdk
+ - linux64-clang
+ - linux64-rust-android
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-nasm
+ - linux64-node
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+ win32-shippable/opt:
+ description: "Win32 Shippable PGO Instrumented"
+ index:
+ product: firefox
+ job-name: instrumented-win32
+ shipping-product: firefox
+ treeherder:
+ platform: windows2012-32-shippable/opt
+ worker-type: b-linux-gcp
+ run:
+ options: [append-env-variables-from-configs]
+ mozconfig-variant: profile-generate
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ extra-config:
+ stage_platform: win32
+ mozconfig_platform: win32
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - vs
+ fetch:
+ - upx-3.95-win
+
+ win64-shippable/opt:
+ description: "Win64 Shippable PGO Instrumented"
+ index:
+ product: firefox
+ job-name: instrumented-win64
+ shipping-product: firefox
+ treeherder:
+ platform: windows2012-64-shippable/opt
+ worker-type: b-linux-gcp
+ run:
+ options: [append-env-variables-from-configs]
+ mozconfig-variant: profile-generate
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ extra-config:
+ stage_platform: win64
+ mozconfig_platform: win64
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - vs
+ fetch:
+ - upx-3.95-win
diff --git a/taskcluster/ci/l10n-bump/kind.yml b/taskcluster/ci/l10n-bump/kind.yml
new file mode 100644
index 0000000000..2dd21e4068
--- /dev/null
+++ b/taskcluster/ci/l10n-bump/kind.yml
@@ -0,0 +1,131 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release_version_bump:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ worker-type: tree
+ worker:
+ implementation: treescript
+ tags: []
+ bump: false
+ dontbuild:
+ by-project:
+ mozilla-beta: false
+ default: true
+ ignore-closed-tree:
+ by-project:
+ autoland: true
+ default: false
+ push:
+ by-project:
+ mozilla-(central|beta): true
+ autoland: true
+ default: false
+ source-repo:
+ by-release-type:
+ beta: https://hg.mozilla.org/releases/mozilla-beta
+ nightly: https://hg.mozilla.org/mozilla-central
+ default: https://hg.mozilla.org/integration/autoland
+ l10n-bump-info:
+ by-release-type:
+ # XXX whenever the `beta` config changes, make sure to make
+ # the corresponding change in merge-automation/kind.yml
+ beta:
+ name: Firefox l10n changesets
+ path: browser/locales/l10n-changesets.json
+ version-path: browser/config/version.txt
+ l10n-repo-url: "https://hg.mozilla.org/l10n-central/%(locale)s/json-pushes?version=2&tipsonly=1"
+ ignore-config:
+ ja:
+ - macosx64
+ - macosx64-devedition
+ ja-JP-mac:
+ - linux
+ - linux-devedition
+ - linux64
+ - linux64-devedition
+ - win32
+ - win32-devedition
+ - win64
+ - win64-devedition
+ - win64-aarch64
+ - win64-aarch64-devedition
+ platform-configs:
+ [
+ {
+ "platforms":
+ [
+ "linux",
+ "linux-devedition",
+ "linux64",
+ "linux64-devedition",
+ "macosx64",
+ "macosx64-devedition",
+ "win32",
+ "win32-devedition",
+ "win64",
+ "win64-devedition",
+ "win64-aarch64",
+ "win64-aarch64-devedition",
+ ],
+ "path": "browser/locales/shipped-locales",
+ },
+ ]
+ default:
+ name: Firefox l10n changesets
+ path: browser/locales/l10n-changesets.json
+ l10n-repo-url: "https://hg.mozilla.org/l10n-central/%(locale)s/json-pushes?version=2&tipsonly=1"
+ version-path: browser/config/version.txt
+ ignore-config:
+ ja:
+ - macosx64
+ - macosx64-devedition
+ ja-JP-mac:
+ - linux
+ - linux-devedition
+ - linux64
+ - linux64-devedition
+ - win32
+ - win32-devedition
+ - win64
+ - win64-devedition
+ - win64-aarch64
+ - win64-aarch64-devedition
+ platform-configs:
+ [
+ {
+ "platforms":
+ [
+ "linux",
+ "linux-devedition",
+ "linux64",
+ "linux64-devedition",
+ "macosx64",
+ "macosx64-devedition",
+ "win32",
+ "win32-devedition",
+ "win64",
+ "win64-devedition",
+ "win64-aarch64",
+ "win64-aarch64-devedition",
+ ],
+ "path": "browser/locales/all-locales",
+ },
+ ]
+
+jobs:
+ l10n-bumper:
+ name: l10n_bumper
+ description: l10n changesets bumper
+ run-on-projects: []
+ treeherder:
+ kind: build
+ platform: linux64/opt
+ symbol: l10n-bump(lb)
+ tier: 1
diff --git a/taskcluster/ci/l10n-cross-channel/kind.yml b/taskcluster/ci/l10n-cross-channel/kind.yml
new file mode 100644
index 0000000000..da30306599
--- /dev/null
+++ b/taskcluster/ci/l10n-cross-channel/kind.yml
@@ -0,0 +1,41 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.cross_channel:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+jobs:
+ quarantine:
+ description: Push strings from all shipping trains to the quarantine strings repo
+ run-on-projects: []
+ worker-type: b-linux-gcp
+ ssh-key-secret:
+ by-level:
+ "3": project/releng/gecko/build/level-3/l10n-cross-channel-quarantine-ssh
+ default: null
+ worker:
+ docker-image: {in-tree: push-to-try}
+ max-run-time: 3600
+ artifacts:
+ - type: directory
+ name: public/build
+ path: /builds/worker/artifacts
+ env:
+ TASK_ID: {"task-reference": "<self>"}
+ TASKCLUSTER_PROXY_URL: http://taskcluster
+ treeherder:
+ platform: firefox-release/opt
+ tier: 1
+ kind: build
+ symbol: Rel(l10n-cross-channel)
+ run:
+ using: mach
+ actions:
+ by-level:
+ "3": ["prep", "create", "push", "clean"]
+ default: ["prep", "create", "clean"]
diff --git a/taskcluster/ci/l10n/kind.yml b/taskcluster/ci/l10n/kind.yml
new file mode 100644
index 0000000000..f2d7395728
--- /dev/null
+++ b/taskcluster/ci/l10n/kind.yml
@@ -0,0 +1,145 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.multi_dep:loader
+
+group-by: platform
+
+transforms:
+ - gecko_taskgraph.transforms.l10n:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - build
+ - build-signing
+ - fetch
+ - repackage
+ - toolchain
+
+primary-dependency: build
+
+only-for-build-platforms:
+ - linux64-shippable/opt
+ - linux-shippable/opt
+ - macosx64-shippable/opt
+ - win32-shippable/opt
+ - win64-shippable/opt
+
+job-template:
+ description: Localization
+ locales-file: browser/locales/l10n-onchange-changesets.json
+ ignore-locales:
+ by-build-platform:
+ # OSX has a special locale for japanese
+ macosx64.*: [ja]
+ default: [ja-JP-mac]
+ run-time:
+ by-build-platform:
+ default: 900
+ win.*: 1800
+ secrets: false
+ fetches:
+ toolchain:
+ by-build-platform:
+ default: []
+ macosx64.*:
+ - linux64-libdmg
+ - linux64-hfsplus
+ win.*:
+ - linux64-wine
+ - nsis
+ fetch:
+ by-build-platform:
+ default: []
+ win.*:
+ - upx-3.95-win
+ tooltool:
+ by-build-platform:
+ default: internal
+ linux.*: public
+ index:
+ type: l10n
+ product: firefox
+ job-name:
+ by-build-platform:
+ linux(?!64).*: linux-opt
+ linux64.*: linux64-opt
+ macosx64.*: macosx64-opt
+ win32.*: win32-opt
+ win64.*: win64-opt
+ run-on-projects:
+ by-build-platform:
+ linux-shippable.*: ['release'] # Do not run on autoland - Bug 1599197
+ default: ['all']
+ worker-type: b-linux-gcp
+ treeherder:
+ symbol: L10n
+ tier: 1
+ platform:
+ by-build-platform:
+ linux64: linux64/opt
+ linux64-shippable: linux64-shippable/opt
+ linux: linux32/opt
+ linux-shippable: linux32-shippable/opt
+ macosx64: osx-cross/opt
+ macosx64-shippable: osx-shippable/opt
+ win32: windows2012-32/opt
+ win32-shippable: windows2012-32-shippable/opt
+ win64: windows2012-64/opt
+ win64-shippable: windows2012-64-shippable/opt
+ env:
+ by-build-platform:
+ linux.*: # linux64 and 32 get same treatment here
+ EN_US_PACKAGE_NAME: target.tar.bz2
+ EN_US_BINARY_URL:
+ artifact-reference: <build-signing/{artifact_prefix}>
+ macosx64.*:
+ EN_US_PACKAGE_NAME: target.dmg
+ EN_US_BINARY_URL:
+ artifact-reference: <repackage/{artifact_prefix}>
+ win.*:
+ EN_US_PACKAGE_NAME: target.zip
+ EN_US_BINARY_URL:
+ artifact-reference: <build-signing/{artifact_prefix}>
+ mozharness:
+ config:
+ by-build-platform:
+ linux(?!64).*:
+ - single_locale/firefox.py
+ - single_locale/linux32.py
+ - single_locale/tc_common.py
+ - single_locale/tc_linux_common.py
+ linux64.*:
+ - single_locale/firefox.py
+ - single_locale/linux64.py
+ - single_locale/tc_common.py
+ - single_locale/tc_linux_common.py
+ macosx64.*:
+ - single_locale/firefox.py
+ - single_locale/macosx64.py
+ - single_locale/tc_common.py
+ - single_locale/tc_macosx64.py
+ win32.*:
+ - single_locale/firefox.py
+ - single_locale/win32.py
+ - single_locale/tc_common.py
+ - single_locale/tc_win32.py
+ win64.*:
+ - single_locale/firefox.py
+ - single_locale/win64.py
+ - single_locale/tc_common.py
+ - single_locale/tc_win64.py
+ # no default, so we fail on new entries
+ actions: ['clone-locales', 'list-locales', 'setup', 'repack', 'summary']
+ script: mozharness/scripts/desktop_l10n.py
+ when:
+ files-changed:
+ - browser/locales/l10n-onchange-changesets.json
+ - testing/mozharness/configs/single_locale/**
+ - testing/mozharness/mozharness/mozilla/l10n/locales.py
+ - testing/mozharness/scripts/desktop_l10n.py
+ - third_party/python/compare-locales/**
+ - toolkit/locales/**
+ - toolkit/mozapps/installer/**
diff --git a/taskcluster/ci/mar-signing-autograph-stage/kind.yml b/taskcluster/ci/mar-signing-autograph-stage/kind.yml
new file mode 100644
index 0000000000..d927485a99
--- /dev/null
+++ b/taskcluster/ci/mar-signing-autograph-stage/kind.yml
@@ -0,0 +1,30 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.mar_signing:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - repackage
+
+only-for-build-platforms:
+ - linux64-shippable/opt
+
+job-template:
+ shipping-phase: null
+ treeherder-group: ms-stage
+ treeherder:
+ tier: 3
+ description-suffix: 'autograph-stage mar signing test'
+ required_signoffs:
+ - mar-signing
+ run-on-projects: []
+ shippable: false
+ attributes:
+ retrigger: true
+ worker-type: linux-depsigning
diff --git a/taskcluster/ci/mar-signing-l10n/kind.yml b/taskcluster/ci/mar-signing-l10n/kind.yml
new file mode 100644
index 0000000000..e2ae94d77b
--- /dev/null
+++ b/taskcluster/ci/mar-signing-l10n/kind.yml
@@ -0,0 +1,35 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.mar_signing:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - repackage-l10n
+
+only-for-build-platforms:
+ - linux-shippable/opt
+ - linux64-shippable/opt
+ - macosx64-shippable/opt
+ - win32-shippable/opt
+ - win64-shippable/opt
+ - win64-aarch64-shippable/opt
+ - linux64-asan-reporter-shippable/opt
+ - linux-devedition/opt
+ - linux64-devedition/opt
+ - macosx64-devedition/opt
+ - win32-devedition/opt
+ - win64-devedition/opt
+ - win64-aarch64-devedition/opt
+
+job-template:
+ shipping-phase: promote
+ treeherder-group: ms
+ description-suffix: 'mar signing'
+ required_signoffs:
+ - mar-signing
diff --git a/taskcluster/ci/mar-signing/kind.yml b/taskcluster/ci/mar-signing/kind.yml
new file mode 100644
index 0000000000..1459b3c00c
--- /dev/null
+++ b/taskcluster/ci/mar-signing/kind.yml
@@ -0,0 +1,36 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.mar_signing:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - repackage
+
+only-for-build-platforms:
+ - linux-shippable/opt
+ - linux64-shippable/opt
+ - macosx64-shippable/opt
+ - win32-shippable/opt
+ - win64-shippable/opt
+ - win64-aarch64-shippable/opt
+ - linux-devedition/opt
+ - linux64-devedition/opt
+ - macosx64-devedition/opt
+ - win32-devedition/opt
+ - win64-devedition/opt
+ - win64-aarch64-devedition/opt
+ - linux64-asan-reporter-shippable/opt
+ - win64-asan-reporter-shippable/opt
+
+job-template:
+ shipping-phase: promote
+ treeherder-group: ms
+ description-suffix: 'mar signing'
+ required_signoffs:
+ - mar-signing
diff --git a/taskcluster/ci/maybe-release/kind.yml b/taskcluster/ci/maybe-release/kind.yml
new file mode 100644
index 0000000000..4d069408d3
--- /dev/null
+++ b/taskcluster/ci/maybe-release/kind.yml
@@ -0,0 +1,48 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.maybe_release:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ description: Check recent releases and trigger a new ship-it phase if worthwhile.
+ worker-type:
+ by-release-level:
+ production: scriptworker-k8s/gecko-3-shipit
+ staging: scriptworker-k8s/gecko-1-shipit
+ worker:
+ implementation: shipit-maybe-release
+ scopes:
+ by-release-level:
+ production:
+ - project:releng:ship-it:server:production
+ - project:releng:ship-it:action:create-new-release
+ staging:
+ - project:releng:ship-it:server:staging
+ - project:releng:ship-it:action:create-new-release
+ run-on-projects: []
+ treeherder:
+ symbol: Rel(maybe-release)
+ tier: 1
+ kind: build
+
+jobs:
+ firefox:
+ name: maybe-release-firefox
+ shipping-product: firefox
+ worker:
+ phase: ship_firefox
+ treeherder:
+ platform: firefox-release/opt
+
+ devedition:
+ name: maybe-release-devedition
+ shipping-product: devedition
+ worker:
+ phase: ship_devedition
+ treeherder:
+ platform: devedition-release/opt
diff --git a/taskcluster/ci/merge-automation/kind.yml b/taskcluster/ci/merge-automation/kind.yml
new file mode 100644
index 0000000000..8e2b34147e
--- /dev/null
+++ b/taskcluster/ci/merge-automation/kind.yml
@@ -0,0 +1,72 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.merge_automation:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+
+jobs:
+ merge-automation:
+ name: merge-automation
+ label: merge-automation
+ treeherder:
+ symbol: Rel(merge-automation)
+ tier: 1
+ kind: build
+ platform: firefox-release/opt
+ description: Merge repositories for release management.
+ worker-type: tree
+ scopes: []
+ worker:
+ implementation: treescript
+ tags: []
+ bump: false
+ dontbuild: false
+ ignore-closed-tree: true
+ push: false
+ l10n-bump-info:
+ by-behavior:
+ central-to-beta:
+ name: Firefox l10n changesets
+ path: browser/locales/l10n-changesets.json
+ version-path: browser/config/version.txt
+ l10n-repo-url: "https://hg.mozilla.org/l10n-central/%(locale)s/json-pushes?version=2&tipsonly=1"
+ ignore-config:
+ ja:
+ - macosx64
+ - macosx64-devedition
+ ja-JP-mac:
+ - linux
+ - linux-devedition
+ - linux64
+ - linux64-devedition
+ - win32
+ - win32-devedition
+ - win64
+ - win64-devedition
+ - win64-aarch64
+ - win64-aarch64-devedition
+ platform-configs: [{
+ "platforms": [
+ "linux",
+ "linux-devedition",
+ "linux64",
+ "linux64-devedition",
+ "macosx64",
+ "macosx64-devedition",
+ "win32",
+ "win32-devedition",
+ "win64",
+ "win64-devedition",
+ "win64-aarch64",
+ "win64-aarch64-devedition",
+ ],
+ "path": "browser/locales/shipped-locales",
+ }]
+ default: null
+ run-on-projects: []
+ expiration-policy: long
diff --git a/taskcluster/ci/openh264-plugin/kind.yml b/taskcluster/ci/openh264-plugin/kind.yml
new file mode 100644
index 0000000000..3c732ac679
--- /dev/null
+++ b/taskcluster/ci/openh264-plugin/kind.yml
@@ -0,0 +1,225 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - toolchain
+
+transforms:
+ - gecko_taskgraph.transforms.openh264:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ description: "Build OpenH264 plugin"
+ treeherder:
+ kind: build
+ symbol: h264
+ tier: 2
+ run-on-projects: []
+ repo: 'https://github.com/cisco/openh264.git'
+ revision: '31c4d2e4a037526fd30d4e5c39f60885986cf865'
+ worker:
+ chain-of-trust: true
+
+jobs:
+ linux32/opt:
+ attributes:
+ build_platform: linux32
+ build_type: opt
+ treeherder:
+ platform: linux32/opt
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1800
+ artifacts:
+ - name: private/openh264
+ path: /builds/worker/workspace/openh264/artifacts
+ type: directory
+ run:
+ using: mozharness
+ script: mozharness/scripts/openh264_build.py
+ config:
+ - openh264/linux32.py
+ fetches:
+ toolchain:
+ - linux64-binutils
+ - linux64-clang
+ - linux64-dump_syms
+ - linux64-nasm
+ - sysroot-i686-linux-gnu
+ linux64/opt:
+ attributes:
+ build_platform: linux64
+ build_type: opt
+ treeherder:
+ platform: linux64/opt
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1800
+ artifacts:
+ - name: private/openh264
+ path: /builds/worker/workspace/openh264/artifacts
+ type: directory
+ run:
+ using: mozharness
+ script: mozharness/scripts/openh264_build.py
+ config:
+ - openh264/linux64.py
+ fetches:
+ toolchain:
+ - linux64-binutils
+ - linux64-clang
+ - linux64-dump_syms
+ - linux64-nasm
+ - sysroot-x86_64-linux-gnu
+ linux64-aarch64/opt:
+ attributes:
+ build_platform: linux64-aarch64
+ build_type: opt
+ treeherder:
+ platform: linux64-aarch64/opt
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1800
+ artifacts:
+ - name: private/openh264
+ path: /builds/worker/workspace/openh264/artifacts
+ type: directory
+ run:
+ using: mozharness
+ script: mozharness/scripts/openh264_build.py
+ config:
+ - openh264/linux64-aarch64.py
+ fetches:
+ toolchain:
+ - linux64-binutils
+ - linux64-clang
+ - linux64-dump_syms
+ - sysroot-x86_64-linux-gnu
+ - sysroot-aarch64-linux-gnu
+ macosx64/opt:
+ attributes:
+ build_platform: macosx64
+ build_type: opt
+ treeherder:
+ platform: macosx64/opt
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1800
+ artifacts:
+ - name: private/openh264
+ path: /builds/worker/workspace/openh264/artifacts
+ type: directory
+ run:
+ using: mozharness
+ script: mozharness/scripts/openh264_build.py
+ config:
+ - openh264/macosx64.py
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - linux64-clang
+ - linux64-dump_syms
+ - linux64-nasm
+ - macosx64-sdk-13.3
+ macosx64-aarch64/opt:
+ attributes:
+ build_platform: macosx64-aarch64
+ build_type: opt
+ treeherder:
+ platform: macosx64-aarch64/opt
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1800
+ artifacts:
+ - name: private/openh264
+ path: /builds/worker/workspace/openh264/artifacts
+ type: directory
+ run:
+ using: mozharness
+ script: mozharness/scripts/openh264_build.py
+ config:
+ - openh264/macosx64-aarch64.py
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - linux64-clang
+ - linux64-dump_syms
+ - macosx64-sdk-13.3
+ win32/opt:
+ attributes:
+ build_platform: win32
+ build_type: opt
+ treeherder:
+ platform: win32/opt
+ worker-type: b-win2012
+ worker:
+ max-run-time: 1800
+ artifacts:
+ - name: private/openh264
+ path: workspace/openh264/artifacts
+ type: directory
+ run:
+ using: mozharness
+ script: mozharness/scripts/openh264_build.py
+ config:
+ - openh264/win32.py
+ tooltool-downloads: internal
+ fetches:
+ toolchain:
+ - win64-clang
+ - win64-dump_syms
+ - win64-mozmake
+ - win64-nasm
+ win64/opt:
+ attributes:
+ build_platform: win64
+ build_type: opt
+ treeherder:
+ platform: win64/opt
+ worker-type: b-win2012
+ worker:
+ max-run-time: 1800
+ artifacts:
+ - name: private/openh264
+ path: workspace/openh264/artifacts
+ type: directory
+ run:
+ using: mozharness
+ script: mozharness/scripts/openh264_build.py
+ config:
+ - openh264/win64.py
+ tooltool-downloads: internal
+ fetches:
+ toolchain:
+ - win64-clang
+ - win64-dump_syms
+ - win64-mozmake
+ - win64-nasm
+ win64-aarch64/opt:
+ attributes:
+ build_platform: win64-aarch64
+ build_type: opt
+ treeherder:
+ platform: win64-aarch64/opt
+ worker-type: b-win2012
+ worker:
+ max-run-time: 1800
+ artifacts:
+ - name: private/openh264
+ path: workspace/openh264/artifacts
+ type: directory
+ run:
+ using: mozharness
+ script: mozharness/scripts/openh264_build.py
+ config:
+ - openh264/win64-aarch64.py
+ tooltool-downloads: internal
+ fetches:
+ toolchain:
+ - win64-clang
+ - win64-dump_syms
+ - win64-mozmake
diff --git a/taskcluster/ci/openh264-signing/kind.yml b/taskcluster/ci/openh264-signing/kind.yml
new file mode 100644
index 0000000000..512684d45b
--- /dev/null
+++ b/taskcluster/ci/openh264-signing/kind.yml
@@ -0,0 +1,13 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.openh264_signing:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - openh264-plugin
diff --git a/taskcluster/ci/packages/debian.yml b/taskcluster/ci/packages/debian.yml
new file mode 100644
index 0000000000..93136c5ec9
--- /dev/null
+++ b/taskcluster/ci/packages/debian.yml
@@ -0,0 +1,136 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ run:
+ using: debian-package
+ dist: jessie
+
+deb11-mercurial:
+ description: "Modern Mercurial for Debian bullseye"
+ treeherder:
+ symbol: Deb11(hg)
+ run:
+ using: debian-package
+ dist: bullseye
+ tarball:
+ url: https://www.mercurial-scm.org/release/mercurial-6.4.3.tar.gz
+ sha256: a77fb62d325934a83a00b2fc6db109f44c67b86768fc40490366f513640c7f64
+ pre-build-command: >-
+ cp -r contrib/packaging/debian debian &&
+ sed -i -e "s/__VERSION__/$(awk -F\" '$2 {print $2}' mercurial/__version__.py)-1.deb11moz1/" \
+ -e "s/__DATE__/$(date --rfc-2822)/" \
+ -e "s/__CODENAME__/bullseye/" debian/changelog
+
+deb11-cmake:
+ description: "cmake"
+ treeherder:
+ symbol: Deb11(cmake)
+ run:
+ dist: bullseye
+ dsc:
+ url: http://snapshot.debian.org/archive/debian/20221201T090253Z/pool/main/c/cmake/cmake_3.25.1-1.dsc
+ sha256: 508b262eee8f18c8924bb4e1b89596fb208efa2fe6bde270d16552d1dc3a0d65
+
+deb11-valgrind:
+ description: "Valgrind for Debian bullseye"
+ treeherder:
+ symbol: Deb11(valgrind)
+ run:
+ dist: bullseye
+ dsc:
+ url: http://snapshot.debian.org/archive/debian/20230111T213757Z/pool/main/v/valgrind/valgrind_3.20.0-1.dsc
+ sha256: e32d373bf2d4f0bd0e9673c711d0e4a8eed43c22ca81714ae3e2d85b2f315493
+
+deb11-python-zstandard:
+ description: "python-zstandard for Debian bullseye"
+ treeherder:
+ symbol: Deb11(python-zstandard)
+ run:
+ using: debian-package
+ dist: bullseye
+ tarball:
+ url: https://github.com/indygreg/python-zstandard/releases/download/0.19.0/zstandard-0.19.0.tar.gz
+ sha256: 31d12fcd942dd8dbf52ca5f6b1bbe287f44e5d551a081a983ff3ea2082867863
+ pre-build-command: debchange -v 0.19.0-1.deb11moz --distribution bullseye "Mozilla backport for buster"
+ name: python-zstandard
+
+deb8-gcc-8:
+ description: "gcc 8 for Debian jessie"
+ treeherder:
+ symbol: Deb8(gcc-8)
+ worker:
+ max-run-time: 3600
+ env:
+ DEB_BUILD_OPTIONS: nocheck
+ WITH_BOOTSTRAP: 'off'
+ WITHOUT_LANG: ada brig cilkrts fortran d go objc obj-c++ asan lsan tsan ubsan jit nvptx
+ run:
+ using: debian-package
+ dist: jessie
+ dsc:
+ url: http://snapshot.debian.org/archive/debian/20210202T150504Z/pool/main/g/gcc-8/gcc-8_8.4.0-7.dsc
+ sha256: b93f13bc67f5a8f16e837fbb543d00d3475d5c95777a1b0b5a448fa2310a98c5
+ # autoconf2.64 and quilt necessary to run the `debian/rules control` command to
+ # generate an updated debian/control.
+ # uncommenting `with_common_libs` makes the packaging create the libstdc++6 package.
+ # `libstdcxx_abi = new` overrides the default that disables the new ABI on jessie
+ # `BINUTILSBDV=2.25-3~` and `ISL_BUILD_DEP=libisl-dev,` override wrong versions
+ # in build dependencies for jessie.
+ # `OFFLOAD_BUILD_DEP=` overrides the dependency on nvptx, which is not available
+ # in jessie.
+ # `NT=` overrides the use of `:native` which is not supported by dpkg on jessie.
+ pre-build-command: >-
+ apt install autoconf2.64 quilt &&
+ sed -i 's/#with_common_libs/with_common_libs/' debian/rules.defs &&
+ echo libstdcxx_abi = new >> debian/rules.defs &&
+ echo BINUTILSBDV=2.25-3~ >> debian/rules.conf &&
+ echo ISL_BUILD_DEP=libisl-dev, >> debian/rules.conf &&
+ echo OFFLOAD_BUILD_DEP= >> debian/rules.conf &&
+ debian/rules control NT=
+
+deb8-32-gcc-8:
+ description: "gcc 8 for Debian jessie"
+ treeherder:
+ symbol: Deb8-32(gcc-8)
+ worker:
+ max-run-time: 3600
+ env:
+ DEB_BUILD_OPTIONS: nocheck
+ WITH_BOOTSTRAP: 'off'
+ WITHOUT_LANG: ada biarch brig cilkrts fortran d go objc obj-c++ asan lsan tsan ubsan jit nvptx
+ run:
+ using: debian-package
+ dist: jessie
+ dsc:
+ url: http://snapshot.debian.org/archive/debian/20210202T150504Z/pool/main/g/gcc-8/gcc-8_8.4.0-7.dsc
+ sha256: b93f13bc67f5a8f16e837fbb543d00d3475d5c95777a1b0b5a448fa2310a98c5
+ pre-build-command: >-
+ apt install autoconf2.64 quilt &&
+ sed -i 's/#with_common_libs/with_common_libs/' debian/rules.defs &&
+ echo libstdcxx_abi = new >> debian/rules.defs &&
+ echo GCC_MULTILIB_BUILD_DEP='$(DPKG_BUILD_DEP)' >> debian/rules.conf &&
+ echo BINUTILSBDV=2.25-3~ >> debian/rules.conf &&
+ echo ISL_BUILD_DEP=libisl-dev, >> debian/rules.conf &&
+ echo OFFLOAD_BUILD_DEP= >> debian/rules.conf &&
+ debian/rules control NT=
+ arch: i386
+
+deb8-gtk3:
+ description: "X11-only gtk+3 for Debian jessie"
+ treeherder:
+ symbol: Deb8(gtk)
+ worker:
+ max-run-time: 3600
+ env:
+ DEB_BUILD_OPTIONS: nocheck
+ run:
+ dist: jessie
+ dsc:
+ url: http://snapshot.debian.org/archive/debian/20150819T212910Z/pool/main/g/gtk+3.0/gtk+3.0_3.14.5-1+deb8u1.dsc
+ sha256: b1808b03317b171c813e31185a4520df4dbde54580842a72a4c44540cd6bde17
+ pre-build-command: >-
+ sed -i /linux-any/d debian/control* debian/libgtk-3-0.symbols &&
+ sed -i s/--enable-wayland-backend/--disable-wayland-backend/ debian/rules &&
+ debchange -v 3.14.5-1.deb8moz --distribution jessie-backports "Mozilla rebuild without wayland support"
diff --git a/taskcluster/ci/packages/kind.yml b/taskcluster/ci/packages/kind.yml
new file mode 100644
index 0000000000..5b21346de8
--- /dev/null
+++ b/taskcluster/ci/packages/kind.yml
@@ -0,0 +1,25 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.try_job:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.cached_tasks:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ treeherder:
+ kind: build
+ platform: packages/opt
+ tier: 1
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1800
+ run-on-projects: []
+
+jobs-from:
+ - debian.yml
+ - ubuntu.yml
diff --git a/taskcluster/ci/packages/ubuntu.yml b/taskcluster/ci/packages/ubuntu.yml
new file mode 100644
index 0000000000..60f8eef25f
--- /dev/null
+++ b/taskcluster/ci/packages/ubuntu.yml
@@ -0,0 +1,100 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ run:
+ using: ubuntu-package
+ dist: bionic
+
+ub18-libc6:
+ description: "Older version of glibc in Ubuntu 18.04 that doesn't cause bug 1678451"
+ treeherder:
+ symbol: Ub18(libc6)
+ run:
+ dsc:
+ url: https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/glibc/2.27-3ubuntu1.2/glibc_2.27-3ubuntu1.2.dsc
+ sha256: 2ac325cce2251c710dd041f4725925cdbccefba6f6f0f0d95a2a5a09e2050c2e
+ patch: ubuntu-glibc.diff
+
+ub18-32-libc6:
+ description: "Older version of glibc in Ubuntu 18.04 that doesn't cause bug 1678451"
+ treeherder:
+ symbol: Ub18(libc6-32)
+ run:
+ dsc:
+ url: https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/glibc/2.27-3ubuntu1.2/glibc_2.27-3ubuntu1.2.dsc
+ sha256: 2ac325cce2251c710dd041f4725925cdbccefba6f6f0f0d95a2a5a09e2050c2e
+ arch: i386
+ patch: ubuntu-glibc.diff
+
+ub18-python-psutil:
+ description: "python-psutil for Ubuntu bionic"
+ treeherder:
+ symbol: Ub18(python-psutil)
+ run:
+ dsc:
+ url: https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/python-psutil/5.4.2-1ubuntu0.1/python-psutil_5.4.2-1ubuntu0.1.dsc
+ sha256: a0ca4560d25fcfe5b7407d2cb21318f0635f2c3559898efce1679eef35b61f05
+ name: python-psutil
+ pre-build-command: >-
+ apt-get install python3.7-dev python3.7-dbg &&
+ export DEBPYTHON3_SUPPORTED="3.7"
+
+ub18-python-zstandard:
+ description: "python-zstandard for Ubuntu bionic"
+ treeherder:
+ symbol: Ub18(python-zstandard)
+ run:
+ tarball:
+ url: https://github.com/indygreg/python-zstandard/releases/download/0.19.0/zstandard-0.19.0.tar.gz
+ sha256: 31d12fcd942dd8dbf52ca5f6b1bbe287f44e5d551a081a983ff3ea2082867863
+ name: python-zstandard
+ pre-build-command: >-
+ apt-get install python3.7-dev &&
+ export DEBPYTHON3_SUPPORTED="3.7" &&
+ debchange -v 0.19.0-1.ub18moz --distribution bionic "Mozilla backport for bionic"
+
+ub18-mercurial:
+ description: "Modern Mercurial for Ubuntu bionic"
+ treeherder:
+ symbol: Ub18(hg)
+ run:
+ tarball:
+ url: https://www.mercurial-scm.org/release/mercurial-6.4.3.tar.gz
+ sha256: a77fb62d325934a83a00b2fc6db109f44c67b86768fc40490366f513640c7f64
+ pre-build-command: >-
+ apt-get install python3.7-dev &&
+ export DEB_HG_PYTHON_VERSIONS="3.7" &&
+ export DEBPYTHON3_SUPPORTED="3.7" &&
+ cp -r contrib/packaging/debian debian &&
+ sed -i -e "s/__VERSION__/$(awk -F\" '$2 {print $2}' mercurial/__version__.py)-1.ub18moz1/" \
+ -e "s/__DATE__/$(date --rfc-2822)/" \
+ -e "s/__CODENAME__/bionic/" debian/changelog
+
+ub20-python-zstandard:
+ description: "python-zstandard for Ubuntu focal"
+ treeherder:
+ symbol: Ub20(python-zstandard)
+ run:
+ tarball:
+ url: https://github.com/indygreg/python-zstandard/releases/download/0.19.0/zstandard-0.19.0.tar.gz
+ sha256: 31d12fcd942dd8dbf52ca5f6b1bbe287f44e5d551a081a983ff3ea2082867863
+ name: python-zstandard
+ dist: focal
+ pre-build-command: debchange -v 0.19.0-1.ub20moz --distribution bionic "Mozilla backport for focal"
+
+ub20-mercurial:
+ description: "Modern Mercurial for Ubuntu focal"
+ treeherder:
+ symbol: Ub20(hg)
+ run:
+ tarball:
+ url: https://www.mercurial-scm.org/release/mercurial-6.4.3.tar.gz
+ sha256: a77fb62d325934a83a00b2fc6db109f44c67b86768fc40490366f513640c7f64
+ dist: focal
+ pre-build-command: >-
+ cp -r contrib/packaging/debian debian &&
+ sed -i -e "s/__VERSION__/$(awk -F\" '$2 {print $2}' mercurial/__version__.py)-1.ub20moz1/" \
+ -e "s/__DATE__/$(date --rfc-2822)/" \
+ -e "s/__CODENAME__/focal/" debian/changelog
diff --git a/taskcluster/ci/partials-signing/kind.yml b/taskcluster/ci/partials-signing/kind.yml
new file mode 100644
index 0000000000..c01adaedd0
--- /dev/null
+++ b/taskcluster/ci/partials-signing/kind.yml
@@ -0,0 +1,20 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.mar_signing:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - partials
+
+job-template:
+ shipping-phase: promote
+ treeherder-group: ps
+ description-suffix: 'partial signing'
+ required_signoffs:
+ - mar-signing
diff --git a/taskcluster/ci/partials/kind.yml b/taskcluster/ci/partials/kind.yml
new file mode 100644
index 0000000000..f287624f2e
--- /dev/null
+++ b/taskcluster/ci/partials/kind.yml
@@ -0,0 +1,35 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.partials:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - repackage
+ - repackage-l10n
+
+only-for-attributes:
+ - nightly
+ - shippable
+
+only-for-build-platforms:
+ - macosx64-shippable/opt
+ - macosx64-devedition/opt
+ - win32-shippable/opt
+ - win32-devedition/opt
+ - win64-shippable/opt
+ - win64-devedition/opt
+ - win64-aarch64-shippable/opt
+ - win64-aarch64-devedition/opt
+ - linux-shippable/opt
+ - linux-devedition/opt
+ - linux64-shippable/opt
+ - linux64-devedition/opt
+
+job-template:
+ shipping-phase: promote
diff --git a/taskcluster/ci/perftest/android.yml b/taskcluster/ci/perftest/android.yml
new file mode 100644
index 0000000000..c5b4bfe1d8
--- /dev/null
+++ b/taskcluster/ci/perftest/android.yml
@@ -0,0 +1,543 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+
+job-defaults:
+ fetches:
+ toolchain:
+ - linux64-node
+ - linux64-geckodriver
+ run:
+ sparse-profile: perftest
+ checkout: true
+ command: >-
+ cd $GECKO_PATH &&
+ python3 python/mozperftest/mozperftest/runner.py
+ --on-try
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --output $MOZ_FETCHES_DIR/../artifacts
+
+hw-a51:
+ worker-type: t-bitbar-gw-perf-a51
+ description: Run ./mach perftest on a Samsung Galaxy a51
+ treeherder:
+ symbol: perftest-a51
+ platform: android-hw-a51-11-0-arm7-shippable/opt
+
+# TODO: is this right?
+hw-a51-aarch64:
+ worker-type: t-bitbar-gw-perf-a51
+ description: Run ./mach perftest on a Samsung Galaxy a51
+ treeherder:
+ symbol: perftest-a51
+ platform: android-hw-a51-11-0-aarch64-shippable/opt
+
+hw-a51-view-fenix:
+ worker-type: t-bitbar-gw-perf-a51
+ description: Run VIEW perftest on Fenix on a Samsung A51
+ treeherder:
+ symbol: perftest(view-fenix)
+ platform: android-hw-a51-11-0-arm7-shippable/opt
+ attributes:
+ cron: true
+ batch: true
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $GECKO_PATH &&
+ python3 python/mozperftest/mozperftest/runner.py
+ --flavor mobile-browser
+ --android
+ --android-app-name org.mozilla.fenix
+ --android-activity org.mozilla.fenix.IntentReceiverActivity
+ --android-clear-logcat
+ --android-capture-logcat logcat
+ --perfherder-metrics name:processLaunchToNavStart,shouldAlert:True
+ --android-install-apk fenix_nightly_armeabi_v7a
+ --hooks testing/performance/hooks_android_view.py
+ --perfherder
+ --perfherder-app fenix
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --browsertime-iterations 25
+ --output $MOZ_FETCHES_DIR/../artifacts
+ testing/performance/perftest_android_view.js
+
+hw-a51-startup-fenix-cold-main-first-frame:
+ worker-type: t-bitbar-gw-perf-a51
+ description: Run android startup perftest on Fenix on a Samsung A51
+ treeherder:
+ symbol: perftest(startup-fenix-cmff)
+ tier: 2
+ platform: android-hw-a51-11-0-aarch64-shippable/opt
+ attributes:
+ cron: true
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $GECKO_PATH &&
+ python3 python/mozperftest/mozperftest/runner.py
+ --flavor=mobile-browser
+ --AndroidStartUp
+ testing/performance/perftest_android_startup.js
+ --browsertime-cycles=0
+ --AndroidStartUp-test-name=cold_main_first_frame
+ --perfherder
+ --hooks
+ testing/performance/hooks_android_startup.py
+ --AndroidStartUp-product=fenix
+ --AndroidStartUp-release-channel=nightly
+
+hw-a51-startup-fenix-cold-view-nav-start:
+ worker-type: t-bitbar-gw-perf-a51
+ description: Run android startup perftest on Fenix on a Samsung A51
+ treeherder:
+ symbol: perftest(startup-fenix-cvns)
+ tier: 2
+ platform: android-hw-a51-11-0-aarch64-shippable/opt
+ attributes:
+ cron: true
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $GECKO_PATH &&
+ python3 python/mozperftest/mozperftest/runner.py
+ --flavor=mobile-browser
+ --AndroidStartUp
+ testing/performance/perftest_android_startup.js
+ --browsertime-cycles=0
+ --AndroidStartUp-test-name=cold_view_nav_start
+ --perfherder
+ --hooks
+ testing/performance/hooks_android_startup.py
+ --AndroidStartUp-product=fenix
+ --AndroidStartUp-release-channel=nightly
+
+hw-a51-startup-focus-cold-main-first-frame:
+ worker-type: t-bitbar-gw-perf-a51
+ description: Run android startup perftest on Focus on a Samsung A51
+ treeherder:
+ symbol: perftest(startup-focus-cmff)
+ tier: 2
+ platform: android-hw-a51-11-0-aarch64-shippable/opt
+ attributes:
+ cron: true
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $GECKO_PATH &&
+ python3 python/mozperftest/mozperftest/runner.py
+ --flavor=mobile-browser
+ --AndroidStartUp
+ testing/performance/perftest_android_startup.js
+ --browsertime-cycles=0
+ --AndroidStartUp-test-name=cold_main_first_frame
+ --perfherder
+ --hooks
+ testing/performance/hooks_android_startup.py
+ --AndroidStartUp-product=focus
+ --AndroidStartUp-release-channel=nightly
+
+hw-a51-startup-focus-cold-view-nav-start:
+ worker-type: t-bitbar-gw-perf-a51
+ description: Run android startup perftest on Focus on a Samsung A51
+ treeherder:
+ symbol: perftest(startup-focus-cvns)
+ tier: 2
+ platform: android-hw-a51-11-0-aarch64-shippable/opt
+ attributes:
+ cron: true
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $GECKO_PATH &&
+ python3 python/mozperftest/mozperftest/runner.py
+ --flavor=mobile-browser
+ --AndroidStartUp
+ testing/performance/perftest_android_startup.js
+ --browsertime-cycles=0
+ --AndroidStartUp-test-name=cold_view_nav_start
+ --perfherder
+ --hooks
+ testing/performance/hooks_android_startup.py
+ --AndroidStartUp-product=focus
+ --AndroidStartUp-release-channel=nightly
+
+hw-a51-startup-geckoview-cold-main-first-frame:
+ worker-type: t-bitbar-gw-perf-a51
+ description: Run android startup perftest on Geckoview on a Samsung A51
+ treeherder:
+ symbol: perftest(startup-geckoview-cmff)
+ tier: 2
+ platform: android-hw-a51-11-0-aarch64-shippable/opt
+ attributes:
+ cron: true
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $GECKO_PATH &&
+ python3 python/mozperftest/mozperftest/runner.py
+ --flavor=mobile-browser
+ --AndroidStartUp
+ testing/performance/perftest_android_startup.js
+ --browsertime-cycles=0
+ --AndroidStartUp-test-name=cold_main_first_frame
+ --perfherder
+ --hooks
+ testing/performance/hooks_android_startup.py
+ --AndroidStartUp-product=geckoview_example
+ --AndroidStartUp-release-channel=nightly
+
+hw-a51-startup-geckoview-cold-view-nav-start:
+ worker-type: t-bitbar-gw-perf-a51
+ description: Run android startup perftest on Geckoview_example on a Samsung A51
+ treeherder:
+ symbol: perftest(startup-geckoview-cvns)
+ tier: 2
+ platform: android-hw-a51-11-0-aarch64-shippable/opt
+ attributes:
+ cron: true
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $GECKO_PATH &&
+ python3 python/mozperftest/mozperftest/runner.py
+ --flavor=mobile-browser
+ --AndroidStartUp
+ testing/performance/perftest_android_startup.js
+ --browsertime-cycles=0
+ --AndroidStartUp-test-name=cold_view_nav_start
+ --perfherder
+ --hooks
+ testing/performance/hooks_android_startup.py
+ --AndroidStartUp-product=geckoview_example
+ --AndroidStartUp-release-channel=nightly
+
+hw-a51-aarch64-view-fenix:
+ worker-type: t-bitbar-gw-perf-a51
+ description: Run VIEW perftest on Fenix on a Samsung A51
+ treeherder:
+ symbol: perftest(view-fenix)
+ platform: android-hw-a51-11-0-aarch64-shippable/opt
+ attributes:
+ cron: true
+ batch: true
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $GECKO_PATH &&
+ python3 python/mozperftest/mozperftest/runner.py
+ --flavor mobile-browser
+ --android
+ --android-app-name org.mozilla.fenix
+ --android-activity org.mozilla.fenix.IntentReceiverActivity
+ --android-clear-logcat
+ --android-capture-logcat logcat
+ --perfherder-metrics name:processLaunchToNavStart,shouldAlert:True
+ --android-install-apk fenix_nightly_arm64_v8a
+ --hooks testing/performance/hooks_android_view.py
+ --perfherder
+ --perfherder-app fenix
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --browsertime-iterations 25
+ --output $MOZ_FETCHES_DIR/../artifacts
+ testing/performance/perftest_android_view.js
+
+hw-a51-view-gv:
+ worker-type: t-bitbar-gw-perf-a51
+ description: Run VIEW perftest on GV on a Samsung A51
+ treeherder:
+ symbol: perftest(view-gv)
+ platform: android-hw-a51-11-0-arm7-shippable/opt
+ attributes:
+ cron: true
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $GECKO_PATH &&
+ python3 python/mozperftest/mozperftest/runner.py
+ --flavor mobile-browser
+ --android
+ --android-app-name org.mozilla.geckoview_example
+ --android-activity org.mozilla.geckoview_example.GeckoViewActivity
+ --android-clear-logcat
+ --android-capture-logcat logcat
+ --perfherder-metrics processLaunchToNavStart
+ --android-install-apk gve_nightly_api16
+ --hooks testing/performance/hooks_android_view.py
+ --perfherder
+ --perfherder-app geckoview
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --browsertime-iterations 14
+ --output $MOZ_FETCHES_DIR/../artifacts
+ testing/performance/perftest_android_view.js
+
+hw-a51-aarch64-view-gv:
+ worker-type: t-bitbar-gw-perf-a51
+ description: Run VIEW perftest on GV on a Samsung A51
+ treeherder:
+ symbol: perftest(view-gv)
+ platform: android-hw-a51-11-0-aarch64-shippable/opt
+ attributes:
+ cron: true
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $GECKO_PATH &&
+ python3 python/mozperftest/mozperftest/runner.py
+ --flavor mobile-browser
+ --android
+ --android-app-name org.mozilla.geckoview_example
+ --android-activity org.mozilla.geckoview_example.GeckoViewActivity
+ --android-clear-logcat
+ --android-capture-logcat logcat
+ --perfherder-metrics processLaunchToNavStart
+ --android-install-apk gve_nightly_aarch64
+ --hooks testing/performance/hooks_android_view.py
+ --perfherder
+ --perfherder-app geckoview
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --browsertime-iterations 14
+ --output $MOZ_FETCHES_DIR/../artifacts
+ testing/performance/perftest_android_view.js
+
+hw-a51-main-fenix:
+ worker-type: t-bitbar-gw-perf-a51
+ description: Run main (home activity) perftest on Fenix on a Samsung A51
+ treeherder:
+ symbol: perftest(main-fenix)
+ platform: android-hw-a51-11-0-arm7-shippable/opt
+ attributes:
+ cron: false
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $GECKO_PATH &&
+ python3 python/mozperftest/mozperftest/runner.py
+ --flavor mobile-browser
+ --android
+ --android-app-name org.mozilla.fenix
+ --android-activity .App
+ --android-clear-logcat
+ --android-capture-logcat logcat
+ --androidlog
+ --androidlog-first-timestamp ".*Start proc.*org\.mozilla\..*\..*App.*"
+ --androidlog-second-timestamp ".*Fully drawn.*org\.mozilla\..*"
+ --androidlog-subtest-name "MAIN"
+ --android-install-apk fenix_nightly_armeabi_v7a
+ --hooks testing/performance/hooks_android_main.py
+ --perfherder
+ --perfherder-app fenix
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --output $MOZ_FETCHES_DIR/../artifacts
+ --browsertime-iterations 14
+ testing/performance/perftest_android_main.js
+
+hw-a51-aarch64-main-fenix:
+ worker-type: t-bitbar-gw-perf-a51
+ description: Run main (home activity) perftest on Fenix on a Samsung A51
+ treeherder:
+ symbol: perftest(main-fenix)
+ platform: android-hw-a51-11-0-aarch64-shippable/opt
+ attributes:
+ cron: false
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $GECKO_PATH &&
+ python3 python/mozperftest/mozperftest/runner.py
+ --flavor mobile-browser
+ --android
+ --android-app-name org.mozilla.fenix
+ --android-activity .App
+ --android-clear-logcat
+ --android-capture-logcat logcat
+ --androidlog
+ --androidlog-first-timestamp ".*Start proc.*org\.mozilla\..*\..*App.*"
+ --androidlog-second-timestamp ".*Fully drawn.*org\.mozilla\..*"
+ --androidlog-subtest-name "MAIN"
+ --android-install-apk fenix_nightly_arm64_v8a
+ --hooks testing/performance/hooks_android_main.py
+ --perfherder
+ --perfherder-app fenix
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --output $MOZ_FETCHES_DIR/../artifacts
+ --browsertime-iterations 14
+ testing/performance/perftest_android_main.js
+
+hw-a51-perfstats-gv:
+ worker-type: t-bitbar-gw-perf-a51
+ description: Run PerfStats perftest on GeckoView on a Samsung A51
+ treeherder:
+ symbol: perftest(perfstats-gv)
+ platform: android-hw-a51-11-0-arm7-shippable/opt
+ attributes:
+ cron: false
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $GECKO_PATH &&
+ python3 python/mozperftest/mozperftest/runner.py
+ --flavor mobile-browser
+ --android
+ --android-app-name org.mozilla.geckoview_example
+ --android-activity org.mozilla.geckoview_example.GeckoViewActivity
+ --android-clear-logcat
+ --android-capture-logcat logcat
+ --android-install-apk gve_nightly_api16
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --output $MOZ_FETCHES_DIR/../artifacts
+ --perfherder
+ --perfherder-app geckoview
+ --perfherder-metrics name:HttpChannelCompletion,unit:ms name:HttpChannelCompletion_Cache,unit:ms name:HttpChannelCompletion_Network,unit:ms name:DisplayListBuilding,unit:ms name:Reflowing,unit:ms name:Styling,unit:ms
+ --browsertime-iterations 10
+ --hooks testing/performance/hooks_perfstats.py
+ testing/performance/perftest_perfstats.js
+
+hw-a51-aarch64-perfstats-gv:
+ worker-type: t-bitbar-gw-perf-a51
+ description: Run PerfStats perftest on GeckoView on a Samsung A51
+ treeherder:
+ symbol: perftest(perfstats-gv)
+ platform: android-hw-a51-11-0-aarch64-shippable/opt
+ attributes:
+ cron: false
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $GECKO_PATH &&
+ python3 python/mozperftest/mozperftest/runner.py
+ --flavor mobile-browser
+ --android
+ --android-app-name org.mozilla.geckoview_example
+ --android-activity org.mozilla.geckoview_example.GeckoViewActivity
+ --android-clear-logcat
+ --android-capture-logcat logcat
+ --android-install-apk gve_nightly_aarch64
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --output $MOZ_FETCHES_DIR/../artifacts
+ --perfherder
+ --perfherder-app geckoview
+ --perfherder-metrics name:HttpChannelCompletion,unit:ms name:HttpChannelCompletion_Cache,unit:ms name:HttpChannelCompletion_Network,unit:ms name:DisplayListBuilding,unit:ms name:Reflowing,unit:ms name:Styling,unit:ms
+ --browsertime-iterations 10
+ --hooks testing/performance/hooks_perfstats.py
+ testing/performance/perftest_perfstats.js
+
+hw-g5-perfstats-fenix:
+ worker-type: t-bitbar-gw-perf-g5
+ description: Run PerfStats perftest on Fenix on a G5
+ treeherder:
+ symbol: perftest(perfstats-fenix)
+ platform: android-hw-g5-7-0-arm7-shippable/opt
+ attributes:
+ cron: false
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $GECKO_PATH &&
+ python3 python/mozperftest/mozperftest/runner.py
+ --flavor mobile-browser
+ --android
+ --android-app-name org.mozilla.fenix
+ --android-activity org.mozilla.fenix.IntentReceiverActivity
+ --android-clear-logcat
+ --android-capture-logcat logcat
+ --android-install-apk fenix_nightly_armeabi_v7a
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --output $MOZ_FETCHES_DIR/../artifacts
+ --perfherder
+ --perfherder-app fenix
+ --perfherder-metrics name:HttpChannelCompletion,unit:ms name:HttpChannelCompletion_Cache,unit:ms name:HttpChannelCompletion_Network,unit:ms name:DisplayListBuilding,unit:ms name:Reflowing,unit:ms name:Styling,unit:ms
+ --browsertime-iterations 10
+ --hooks testing/performance/hooks_perfstats.py
+ testing/performance/perftest_perfstats.js
+
+hw-a51-perfstats-fenix:
+ worker-type: t-bitbar-gw-perf-a51
+ description: Run PerfStats perftest on Fenix on a Samsung A51
+ treeherder:
+ symbol: perftest(perfstats-fenix)
+ platform: android-hw-a51-11-0-arm7-shippable/opt
+ attributes:
+ cron: false
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $GECKO_PATH &&
+ python3 python/mozperftest/mozperftest/runner.py
+ --flavor mobile-browser
+ --android
+ --android-app-name org.mozilla.fenix
+ --android-activity org.mozilla.fenix.IntentReceiverActivity
+ --android-clear-logcat
+ --android-capture-logcat logcat
+ --android-install-apk fenix_nightly_armeabi_v7a
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --output $MOZ_FETCHES_DIR/../artifacts
+ --perfherder
+ --perfherder-app fenix
+ --perfherder-metrics name:HttpChannelCompletion,unit:ms name:HttpChannelCompletion_Cache,unit:ms name:HttpChannelCompletion_Network,unit:ms name:DisplayListBuilding,unit:ms name:Reflowing,unit:ms name:Styling,unit:ms
+ --browsertime-iterations 10
+ --hooks testing/performance/hooks_perfstats.py
+ testing/performance/perftest_perfstats.js
+
+hw-a51-aarch64-perfstats-fenix:
+ worker-type: t-bitbar-gw-perf-a51
+ description: Run PerfStats perftest on Fenix on a Samsung A51
+ treeherder:
+ symbol: perftest(perfstats-fenix)
+ platform: android-hw-a51-11-0-aarch64-shippable/opt
+ attributes:
+ cron: false
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $GECKO_PATH &&
+ python3 python/mozperftest/mozperftest/runner.py
+ --flavor mobile-browser
+ --android
+ --android-app-name org.mozilla.fenix
+ --android-activity org.mozilla.fenix.IntentReceiverActivity
+ --android-clear-logcat
+ --android-capture-logcat logcat
+ --android-install-apk fenix_nightly_arm64_v8a
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --output $MOZ_FETCHES_DIR/../artifacts
+ --perfherder
+ --perfherder-app fenix
+ --perfherder-metrics name:HttpChannelCompletion,unit:ms name:HttpChannelCompletion_Cache,unit:ms name:HttpChannelCompletion_Network,unit:ms name:DisplayListBuilding,unit:ms name:Reflowing,unit:ms name:Styling,unit:ms
+ --browsertime-iterations 10
+ --hooks testing/performance/hooks_perfstats.py
+ testing/performance/perftest_perfstats.js
+
+hw-a51-record-websites:
+ worker-type: t-bitbar-gw-perf-a51
+ description: Run perftest to record mobile websites
+ treeherder:
+ symbol: perftest(rec)
+ platform: android-hw-a51-11-0-aarch64-shippable/opt
+ require-build:
+ android-hw-a51-11-0-aarch64-shippable/opt: build-android-aarch64-shippable/opt
+ attributes:
+ cron: false
+ run-on-projects: []
+ scopes:
+ - secrets:get:project/releng/gecko/build/level-{level}/conditioned-profiles
+ - secrets:get:project/perftest/gecko/level-{level}/perftest-login
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $GECKO_PATH &&
+ python3 python/mozperftest/mozperftest/runner.py
+ --flavor mobile-browser
+ --android
+ --android-app-name org.mozilla.geckoview_example
+ --android-activity org.mozilla.geckoview_example.GeckoViewActivity
+ --android-clear-logcat
+ --android-capture-logcat logcat
+ --android-install-apk gve_nightly_aarch64
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --proxy
+ --output $MOZ_FETCHES_DIR/../artifacts
+ --hooks testing/performance/hooks_recording.py
+ testing/performance/perftest_record.js
diff --git a/taskcluster/ci/perftest/kind.yml b/taskcluster/ci/perftest/kind.yml
new file mode 100644
index 0000000000..0a0f8a4489
--- /dev/null
+++ b/taskcluster/ci/perftest/kind.yml
@@ -0,0 +1,43 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - toolchain
+ - build
+
+transforms:
+ - gecko_taskgraph.transforms.perftest:transforms
+ - gecko_taskgraph.transforms.source_test:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+jobs-from:
+ - android.yml
+ - linux.yml
+ - macosx.yml
+ - windows.yml
+
+job-defaults:
+ attributes:
+ retrigger: true
+ run-on-projects: []
+ treeherder:
+ kind: other
+ tier: 3
+ worker:
+ taskcluster-proxy: true
+ max-run-time: 10800
+ env:
+ USE_ARTIFACT: '1'
+ HOSTUTILS_MANIFEST_PATH: "testing/config/tooltool-manifests/linux64/hostutils.manifest"
+ artifacts:
+ - type: directory
+ name: public/build
+ path: artifacts
+ run:
+ run-as-root: true
+ using: run-task
+ checkout: false
diff --git a/taskcluster/ci/perftest/linux.yml b/taskcluster/ci/perftest/linux.yml
new file mode 100644
index 0000000000..a74cc4b34c
--- /dev/null
+++ b/taskcluster/ci/perftest/linux.yml
@@ -0,0 +1,349 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ worker-type: t-linux-talos-1804
+ fetches:
+ toolchain:
+ - linux64-node
+ - linux64-geckodriver
+ build:
+ - artifact: target.mozinfo.json
+ - artifact: target.common.tests.tar.gz
+ - artifact: target.perftests.tests.tar.gz
+ - artifact: target.xpcshell.tests.tar.gz
+ - artifact: target.tar.bz2
+ platform: linux1804-64-shippable/opt
+ require-build:
+ linux1804-64-shippable/opt: build-linux64-shippable/opt
+ scopes:
+ - secrets:get:project/releng/gecko/build/level-{level}/conditioned-profiles
+
+try-xpcshell:
+ description: Run ./mach perftest on Linux
+ treeherder:
+ symbol: perftest(linux-xpcshell)
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $MOZ_FETCHES_DIR &&
+ python3.8 python/mozperftest/mozperftest/runner.py
+ --on-try
+ --flavor desktop-browser
+ --output $MOZ_FETCHES_DIR/../artifacts
+ --xpcshell-binary ${MOZ_FETCHES_DIR}/bin/xpcshell
+ --xpcshell-mozinfo ${MOZ_FETCHES_DIR}/target.mozinfo.json
+ --xpcshell-nodejs ${MOZ_FETCHES_DIR}/node/bin/node
+ --xpcshell-xre-path ${MOZ_FETCHES_DIR}/firefox
+
+webpagetest-firefox:
+ description: Run webpagetest performance pageload tests on Firefox against Alexa top 50 websites
+ treeherder:
+ symbol: perftest(linux-webpagetest)
+ tier: 2
+ attributes:
+ cron: true
+ scopes:
+ - secrets:get:project/perftest/gecko/level-{level}/perftest-login
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $MOZ_FETCHES_DIR &&
+ python3.8 python/mozperftest/mozperftest/runner.py
+ testing/performance/perftest_WPT_firefox_init_file.js
+ --flavor=webpagetest
+ --webpagetest
+ --perfherder
+ --perfherder-metrics median
+ --perfherder-app=firefox
+ --output $MOZ_FETCHES_DIR/../artifacts
+
+webpagetest-chrome:
+ description: Run webpagetest performance pageload tests on Chrome against Alexa top 50 websites
+ treeherder:
+ symbol: perftest-chrome(linux-webpagetest)
+ tier: 2
+ attributes:
+ cron: true
+ scopes:
+ - secrets:get:project/perftest/gecko/level-{level}/perftest-login
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $MOZ_FETCHES_DIR &&
+ python3.8 python/mozperftest/mozperftest/runner.py
+ testing/performance/perftest_WPT_chrome_init_file.js
+ --flavor=webpagetest
+ --webpagetest
+ --perfherder
+ --perfherder-metrics median
+ --perfherder-app=chrome
+ --output $MOZ_FETCHES_DIR/../artifacts
+
+try-browsertime:
+ description: Run ./mach perftest on Linux
+ treeherder:
+ symbol: perftest(linux-bt)
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $MOZ_FETCHES_DIR &&
+ python3.8 python/mozperftest/mozperftest/runner.py
+ --on-try
+ --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox-bin
+ --flavor desktop-browser
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --output $MOZ_FETCHES_DIR/../artifacts
+
+domcount:
+ description: Run DOM test
+ treeherder:
+ symbol: perftest(linux-dom)
+ attributes:
+ batch: false
+ cron: true
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $MOZ_FETCHES_DIR &&
+ python3.8 python/mozperftest/mozperftest/runner.py
+ browser/base/content/test/perftest_browser_xhtml_dom.js
+ --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox-bin
+ --flavor desktop-browser
+ --perfherder
+ --perfherder-metrics name:totalDOMCount,unit:count name:panelMenuCount,unit:count name:lightDOMCount,unit:count name:lightDOMDetails,unit:count
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --output $MOZ_FETCHES_DIR/../artifacts
+
+http3:
+ description: Run HTTP/3 test
+ treeherder:
+ symbol: perftest(http3)
+ attributes:
+ batch: false
+ cron: true
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $MOZ_FETCHES_DIR &&
+ python3.8 python/mozperftest/mozperftest/runner.py
+ xpcshell/tests/netwerk/test/unit/test_http3_perf.js
+ --flavor xpcshell
+ --perfherder
+ --perfherder-metrics name:speed,unit:bps
+ --output $MOZ_FETCHES_DIR/../artifacts
+ --xpcshell-binary ${MOZ_FETCHES_DIR}/bin/xpcshell
+ --xpcshell-mozinfo ${MOZ_FETCHES_DIR}/target.mozinfo.json
+ --xpcshell-nodejs ${MOZ_FETCHES_DIR}/node/bin/node
+ --xpcshell-cycles 13
+ --xpcshell-xre-path ${MOZ_FETCHES_DIR}/firefox
+
+livesites:
+ description: Live site performance testing
+ variants: [http3]
+ treeherder:
+ symbol: perftest({symbol})
+ attributes:
+ batch: false
+ cron: true
+ perftest:
+ - [cloudflare, netwerk/test/perf/perftest_http3_cloudflareblog.js]
+ # broken: bug 1678588
+ # - [fb-scroll, netwerk/test/perf/perftest_http3_facebook_scroll.js]
+ - [g-image, netwerk/test/perf/perftest_http3_google_image.js]
+ # broken: bug 1799655
+ # - [g-search, netwerk/test/perf/perftest_http3_google_search.js]
+ - [lq-fetch, netwerk/test/perf/perftest_http3_lucasquicfetch.js]
+ # broken: bug 1695871
+ # - [ytw, netwerk/test/perf/perftest_http3_youtube_watch.js]
+ # - [ytw-scroll, netwerk/test/perf/perftest_http3_youtube_watch_scroll.js]
+ perftest-metrics:
+ by-perftest:
+ cloudflare:
+ # Example of how the specify settings for each metric
+ resources:
+ extraOptions: []
+ firstPaint: {}
+ navigationTiming: {}
+ pageTimings: {}
+ timeToContentfulPaint: {}
+ # broken: bug 1678588
+ # fb-scroll: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, requestsPerSecond]
+ g-image: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, imagesPerSecond, imageLoadTime]
+ # g-search: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint]
+ lq-fetch: [navigationTiming, pageTimings, resources, timeToContentfulPaint, resourceLoadTime, imagesLoaded, imagesMissed]
+ # broken: bug 1695871
+ # ytw: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, droppedFrames, decodedFrames]
+ # ytw-scroll: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, droppedFrames, decodedFrames]
+ default: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint]
+ # Leave this here so people know this exists when looking
+ # for examples
+ perftest-perfherder-global:
+ extraOptions: []
+ perftest-extra-options:
+ by-perftest:
+ cloudflare:
+ - --perfherder-split-by browserScripts.pageinfo.url
+ # g-search:
+ # - --perfherder-split-by browserScripts.pageinfo.url
+ lq-fetch:
+ - --perfherder-split-by browserScripts.pageinfo.url
+ default: []
+ perftest-btime-variants:
+ by-perftest:
+ cloudflare:
+ - ["10s", browsertime.waitTime=10000]
+ - ["25s", browsertime.waitTime=25000]
+ - ["35s", browsertime.waitTime=35000]
+ - ["60s", browsertime.waitTime=60000]
+ # broken: bug 1678588
+ # fb-scroll:
+ # - ["10s", browsertime.waitTime=10000]
+ # - ["25s", browsertime.waitTime=25000]
+ # - ["35s", browsertime.waitTime=35000]
+ # - ["60s", browsertime.waitTime=60000]
+ # g-search:
+ # - ["10s", browsertime.waitTime=10000]
+ # - ["25s", browsertime.waitTime=25000]
+ # - ["35s", browsertime.waitTime=35000]
+ # - ["60s", browsertime.waitTime=60000]
+ lq-fetch:
+ - [null, "browsertime.waitTime=1000,browsertime.cycles=5"]
+ # broken: bug 1695871
+ # ytw:
+ # - [null, browsertime.waitTime=20000]
+ # ytw-scroll:
+ # - [null, browsertime.waitTime=20000]
+ default:
+ - [null, browsertime.waitTime=1000]
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $MOZ_FETCHES_DIR &&
+ python3.8 python/mozperftest/mozperftest/runner.py
+ {perftest_testname}
+ --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox-bin
+ --browsertime-iterations 10
+ --visualmetrics
+ --flavor desktop-browser
+ --perfherder
+ --perfherder-metrics {perftest_metrics}
+ --perfherder-simplify-names
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --output $MOZ_FETCHES_DIR/../artifacts
+
+controlled:
+ description: Controlled performance testing
+ treeherder:
+ symbol: perftest(controlled)
+ worker:
+ max-run-time: 14400
+ attributes:
+ batch: false
+ cron: false
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $MOZ_FETCHES_DIR &&
+ python3.8 python/mozperftest/mozperftest/runner.py
+ netwerk/test/perf/perftest_http3_controlled.js
+ --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox-bin
+ --browsertime-iterations 1
+ --browsertime-cycles 96
+ --hooks netwerk/test/perf/hooks_throttling.py
+ --flavor desktop-browser
+ --perfherder
+ --perfherder-metrics name:navigationTiming,unit:ms name:pageTimings,unit:ms name:resources,unit:ms name:firstPaint,unit:ms name:timeToContentfulPaint,unit:ms
+ --perfherder-simplify-names
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --output $MOZ_FETCHES_DIR/../artifacts
+
+perfstats:
+ description: Run PerfStats pageload test
+ treeherder:
+ symbol: perftest(linux-perfstats)
+ attributes:
+ cron: false
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $MOZ_FETCHES_DIR &&
+ python3.8 python/mozperftest/mozperftest/runner.py
+ --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox-bin
+ --flavor desktop-browser
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --output $MOZ_FETCHES_DIR/../artifacts
+ --perfherder
+ --perfherder-metrics name:HttpChannelCompletion,unit:ms name:HttpChannelCompletion_Cache,unit:ms name:HttpChannelCompletion_Network,unit:ms name:DisplayListBuilding,unit:ms name:Reflowing,unit:ms name:Styling,unit:ms
+ --browsertime-iterations 10
+ --hooks testing/performance/hooks_perfstats.py
+ testing/performance/perftest_perfstats.js
+
+record-websites:
+ description: Run mozperftest to record desktop websites
+ platform: linux1804-64/opt
+ require-build:
+ linux1804-64/opt: build-linux64/opt
+ treeherder:
+ symbol: perftest(rec)
+ attributes:
+ cron: false
+ run-on-projects: []
+ scopes:
+ - secrets:get:project/releng/gecko/build/level-{level}/conditioned-profiles
+ - secrets:get:project/perftest/gecko/level-{level}/perftest-login
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $MOZ_FETCHES_DIR &&
+ python3.8 python/mozperftest/mozperftest/runner.py
+ --flavor desktop-browser
+ --verbose
+ --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox-bin
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --proxy
+ --output $MOZ_FETCHES_DIR/../artifacts
+ --hooks testing/performance/hooks_recording.py
+ testing/performance/perftest_record.js
+
+side-by-side:
+ description: Run mozperftest side-by-side
+ treeherder:
+ symbol: perftest(side-by-side)
+ tier: 2
+ run:
+ using: run-task
+ sparse-profile: perftest
+ checkout: true
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $MOZ_FETCHES_DIR &&
+ python3.8 python/mozperftest/mozperftest/runner.py
+ tools side-by-side
+ -t {test_name}
+ --base-platform {platform}
+ --base-revision {base_revision}
+ --new-revision {new_revision}
+ --base-branch {base_branch}
+ --new-branch {new_branch}
+
+mwu-change-detector:
+ description: Runs Mann-Whitney U-test on two revisions to detect performance changes
+ treeherder:
+ symbol: perftest-detect(mwu)
+ tier: 2
+ run:
+ using: run-task
+ sparse-profile: perftest
+ checkout: true
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $MOZ_FETCHES_DIR &&
+ python3.8 python/mozperftest/mozperftest/runner.py
+ tools change-detector
+ --task-name {task_name}
+ --base-revision {base_revision}
+ --new-revision {new_revision}
+ --base-branch {base_branch}
+ --new-branch {new_branch}
diff --git a/taskcluster/ci/perftest/macosx.yml b/taskcluster/ci/perftest/macosx.yml
new file mode 100644
index 0000000000..b2d8f578d2
--- /dev/null
+++ b/taskcluster/ci/perftest/macosx.yml
@@ -0,0 +1,251 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ worker-type: t-osx-1015-r8
+ fetches:
+ build:
+ - artifact: target.mozinfo.json
+ - artifact: target.common.tests.tar.gz
+ - artifact: target.xpcshell.tests.tar.gz
+ - artifact: target.perftests.tests.tar.gz
+ - artifact: target.dmg
+ extract: false
+ toolchain:
+ - macosx64-geckodriver
+ - macosx64-node
+ platform: macosx1015-64-shippable-qr/opt
+ require-build:
+ macosx1015-64-shippable-qr/opt: build-macosx64-shippable/opt
+ scopes:
+ - secrets:get:project/releng/gecko/build/level-{level}/conditioned-profiles
+
+try-xpcshell:
+ description: Run ./mach perftest on macOs
+ treeherder:
+ symbol: perftest(macos-xpcshell)
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $MOZ_FETCHES_DIR &&
+ python3 -m venv . &&
+ bin/python3 python/mozperftest/mozperftest/runner.py
+ --on-try
+ --flavor desktop-browser
+ --output $MOZ_FETCHES_DIR/../artifacts
+ --xpcshell-binary ${MOZ_FETCHES_DIR}/bin/xpcshell
+ --xpcshell-mozinfo ${MOZ_FETCHES_DIR}/target.mozinfo.json
+ --xpcshell-nodejs ${MOZ_FETCHES_DIR}/node/bin/node
+ --xpcshell-xre-path ${MOZ_FETCHES_DIR}/target.dmg
+
+try-browsertime:
+ description: Run ./mach perftest on macOs
+ treeherder:
+ symbol: perftest(macos-bt)
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $MOZ_FETCHES_DIR &&
+ python3 -m venv . &&
+ bin/python3 python/mozperftest/mozperftest/runner.py
+ --on-try
+ --browsertime-binary ${MOZ_FETCHES_DIR}/target.dmg
+ --browsertime-node ${MOZ_FETCHES_DIR}/node/bin/node
+ --flavor desktop-browser
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --output $MOZ_FETCHES_DIR/../artifacts
+
+domcount:
+ description: Run DOM test on macOS
+ treeherder:
+ symbol: perftest(macos-dom)
+ attributes:
+ batch: false
+ cron: true
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $MOZ_FETCHES_DIR &&
+ python3 -m venv . &&
+ bin/python3 python/mozperftest/mozperftest/runner.py
+ browser/base/content/test/perftest_browser_xhtml_dom.js
+ --browsertime-binary ${MOZ_FETCHES_DIR}/target.dmg
+ --browsertime-node ${MOZ_FETCHES_DIR}/node/bin/node
+ --flavor desktop-browser
+ --perfherder
+ --perfherder-metrics name:totalDOMCount,unit:count name:panelMenuCount,unit:count name:lightDOMCount,unit:count name:lightDOMDetails,unit:count
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --output $MOZ_FETCHES_DIR/../artifacts
+
+http3:
+ description: Run HTTP/3 test
+ treeherder:
+ symbol: perftest(http3)
+ attributes:
+ batch: false
+ cron: true
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $MOZ_FETCHES_DIR &&
+ python3 -m venv . &&
+ bin/python3 python/mozperftest/mozperftest/runner.py
+ xpcshell/tests/netwerk/test/unit/test_http3_perf.js
+ --flavor xpcshell
+ --perfherder
+ --perfherder-metrics name:speed,unit:bps
+ --output $MOZ_FETCHES_DIR/../artifacts
+ --xpcshell-binary ${MOZ_FETCHES_DIR}/bin/xpcshell
+ --xpcshell-mozinfo ${MOZ_FETCHES_DIR}/target.mozinfo.json
+ --xpcshell-nodejs ${MOZ_FETCHES_DIR}/node/bin/node
+ --xpcshell-cycles 13
+ --xpcshell-xre-path ${MOZ_FETCHES_DIR}/target.dmg
+
+
+livesites:
+ description: Live site performance testing
+ variants: [http3]
+ treeherder:
+ symbol: perftest({symbol})
+ attributes:
+ batch: false
+ cron: true
+ perftest:
+ - [cloudflare, netwerk/test/perf/perftest_http3_cloudflareblog.js]
+ # broken: bug 1678588
+ # - [fb-scroll, netwerk/test/perf/perftest_http3_facebook_scroll.js]
+ - [g-image, netwerk/test/perf/perftest_http3_google_image.js]
+ # broken: bug 1799655
+ # - [g-search, netwerk/test/perf/perftest_http3_google_search.js]
+ - [lq-fetch, netwerk/test/perf/perftest_http3_lucasquicfetch.js]
+ # broken: bug 1695871
+ # - [ytw, netwerk/test/perf/perftest_http3_youtube_watch.js]
+ # - [ytw-scroll, netwerk/test/perf/perftest_http3_youtube_watch_scroll.js]
+ perftest-metrics:
+ by-perftest:
+ cloudflare:
+ # Example of how the specify settings for each metric
+ resources:
+ extraOptions: []
+ firstPaint: {}
+ navigationTiming: {}
+ pageTimings: {}
+ timeToContentfulPaint: {}
+ # broken: bug 1678588
+ # fb-scroll: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, requestsPerSecond]
+ g-image: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, imagesPerSecond, imageLoadTime]
+ # g-search: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint]
+ lq-fetch: [navigationTiming, pageTimings, resources, timeToContentfulPaint, resourceLoadTime, imagesLoaded, imagesMissed]
+ # broken: bug 1695871
+ # ytw: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, droppedFrames, decodedFrames]
+ # ytw-scroll: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, droppedFrames, decodedFrames]
+ default: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint]
+ # Leave this here so people know this exists when looking
+ # for examples
+ perftest-perfherder-global:
+ extraOptions: []
+ perftest-extra-options:
+ by-perftest:
+ cloudflare:
+ - --perfherder-split-by browserScripts.pageinfo.url
+ # g-search:
+ # - --perfherder-split-by browserScripts.pageinfo.url
+ lq-fetch:
+ - --perfherder-split-by browserScripts.pageinfo.url
+ default: []
+ perftest-btime-variants:
+ by-perftest:
+ cloudflare:
+ - ["10s", browsertime.waitTime=10000]
+ - ["25s", browsertime.waitTime=25000]
+ - ["35s", browsertime.waitTime=35000]
+ - ["60s", browsertime.waitTime=60000]
+ # broken: bug 1678588
+ # fb-scroll:
+ # - ["10s", browsertime.waitTime=10000]
+ # - ["25s", browsertime.waitTime=25000]
+ # - ["35s", browsertime.waitTime=35000]
+ # - ["60s", browsertime.waitTime=60000]
+ # g-search:
+ # - ["10s", browsertime.waitTime=10000]
+ # - ["25s", browsertime.waitTime=25000]
+ # - ["35s", browsertime.waitTime=35000]
+ # - ["60s", browsertime.waitTime=60000]
+ lq-fetch:
+ - [null, "browsertime.waitTime=1000,browsertime.cycles=5"]
+ # broken: bug 1695871
+ # ytw:
+ # - [null, browsertime.waitTime=20000]
+ # ytw-scroll:
+ # - [null, browsertime.waitTime=20000]
+ default:
+ - [null, browsertime.waitTime=1000]
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $MOZ_FETCHES_DIR &&
+ python3 -m venv . &&
+ bin/python3 python/mozperftest/mozperftest/runner.py
+ {perftest_testname}
+ --browsertime-binary ${MOZ_FETCHES_DIR}/target.dmg
+ --browsertime-node ${MOZ_FETCHES_DIR}/node/bin/node
+ --browsertime-iterations 10
+ --flavor desktop-browser
+ --perfherder
+ --perfherder-metrics {perftest_metrics}
+ --perfherder-simplify-names
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --output $MOZ_FETCHES_DIR/../artifacts
+
+controlled:
+ description: Controlled performance testing
+ treeherder:
+ symbol: perftest(controlled)
+ worker:
+ max-run-time: 14400
+ attributes:
+ batch: false
+ cron: false
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $MOZ_FETCHES_DIR &&
+ python3 -m venv . &&
+ python3 python/mozperftest/mozperftest/runner.py
+ netwerk/test/perf/perftest_http3_controlled.js
+ --browsertime-binary ${MOZ_FETCHES_DIR}/target.dmg
+ --browsertime-node ${MOZ_FETCHES_DIR}/node/bin/node
+ --browsertime-iterations 1
+ --browsertime-cycles 96
+ --hooks netwerk/test/perf/hooks_throttling.py
+ --flavor desktop-browser
+ --perfherder
+ --perfherder-metrics name:navigationTiming,unit:ms name:pageTimings,unit:ms name:resources,unit:ms name:firstPaint,unit:ms name:timeToContentfulPaint,unit:ms
+ --perfherder-simplify-names
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --output $MOZ_FETCHES_DIR/../artifacts
+
+perfstats:
+ description: Run PerfStats pageload test
+ treeherder:
+ symbol: perftest(macos-perfstats)
+ attributes:
+ batch: false
+ cron: false
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $MOZ_FETCHES_DIR &&
+ python3 -m venv . &&
+ bin/python3 python/mozperftest/mozperftest/runner.py
+ --browsertime-binary ${MOZ_FETCHES_DIR}/target.dmg
+ --browsertime-node ${MOZ_FETCHES_DIR}/node/bin/node
+ --flavor desktop-browser
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver
+ --output $MOZ_FETCHES_DIR/../artifacts
+ --perfherder
+ --perfherder-metrics name:HttpChannelCompletion,unit:ms name:HttpChannelCompletion_Cache,unit:ms name:HttpChannelCompletion_Network,unit:ms name:DisplayListBuilding,unit:ms name:Reflowing,unit:ms name:Styling,unit:ms
+ --browsertime-iterations 10
+ --hooks testing/performance/hooks_perfstats.py
+ testing/performance/perftest_perfstats.js
diff --git a/taskcluster/ci/perftest/windows.yml b/taskcluster/ci/perftest/windows.yml
new file mode 100644
index 0000000000..caea4026b7
--- /dev/null
+++ b/taskcluster/ci/perftest/windows.yml
@@ -0,0 +1,200 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ worker-type: t-win10-64-1803-hw
+ fetches:
+ build:
+ - artifact: target.perftests.tests.tar.gz
+ - artifact: target.zip
+ toolchain:
+ - win64-node
+ - win64-geckodriver
+ platform: windows10-64-shippable/opt
+ require-build:
+ windows10-64-shippable/opt: build-win64-shippable/opt
+ scopes:
+ - secrets:get:project/releng/gecko/build/level-{level}/conditioned-profiles
+
+try-browsertime:
+ description: Run ./mach perftest on windows
+ treeherder:
+ symbol: perftest(win-bt)
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $MOZ_FETCHES_DIR &&
+ python3.exe python/mozperftest/mozperftest/runner.py
+ --on-try
+ --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox.exe
+ --flavor desktop-browser
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver.exe
+ --browsertime-node ${MOZ_FETCHES_DIR}/node/node.exe
+ --output $MOZ_FETCHES_DIR/../artifacts
+
+domcount:
+ description: Run DOM test
+ treeherder:
+ symbol: perftest(win-dom)
+ attributes:
+ batch: false
+ cron: true
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $MOZ_FETCHES_DIR &&
+ python3.exe python/mozperftest/mozperftest/runner.py
+ browser/base/content/test/perftest_browser_xhtml_dom.js
+ --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox.exe
+ --flavor desktop-browser
+ --perfherder
+ --perfherder-metrics name:totalDOMCount,unit:count name:panelMenuCount,unit:count name:lightDOMCount,unit:count name:lightDOMDetails,unit:count
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver.exe
+ --browsertime-node ${MOZ_FETCHES_DIR}/node/node.exe
+ --output $MOZ_FETCHES_DIR/../artifacts
+
+
+livesites:
+ description: Live site performance testing
+ variants: [http3]
+ treeherder:
+ symbol: perftest({symbol})
+ attributes:
+ batch: false
+ cron: true
+ perftest:
+ - [cloudflare, netwerk/test/perf/perftest_http3_cloudflareblog.js]
+ # broken: bug 1678588
+ # - [fb-scroll, netwerk/test/perf/perftest_http3_facebook_scroll.js]
+ - [g-image, netwerk/test/perf/perftest_http3_google_image.js]
+ # broken: bug 1799655
+ # - [g-search, netwerk/test/perf/perftest_http3_google_search.js]
+ - [lq-fetch, netwerk/test/perf/perftest_http3_lucasquicfetch.js]
+ # broken: bug 1695871
+ # - [ytw, netwerk/test/perf/perftest_http3_youtube_watch.js]
+ # - [ytw-scroll, netwerk/test/perf/perftest_http3_youtube_watch_scroll.js]
+ perftest-metrics:
+ by-perftest:
+ cloudflare:
+ # Example of how the specify settings for each metric
+ resources:
+ extraOptions: []
+ firstPaint: {}
+ navigationTiming: {}
+ pageTimings: {}
+ timeToContentfulPaint: {}
+ # broken: bug 1678588
+ # fb-scroll: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, requestsPerSecond]
+ g-image: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, imagesPerSecond, imageLoadTime]
+ # g-search: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint]
+ lq-fetch: [navigationTiming, pageTimings, resources, timeToContentfulPaint, resourceLoadTime, imagesLoaded, imagesMissed]
+ # broken: bug 1695871
+ # ytw: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, droppedFrames, decodedFrames]
+ # ytw-scroll: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint, droppedFrames, decodedFrames]
+ default: [navigationTiming, pageTimings, resources, firstPaint, timeToContentfulPaint]
+ # Leave this here so people know this exists when looking
+ # for examples
+ perftest-perfherder-global:
+ extraOptions: []
+ perftest-extra-options:
+ by-perftest:
+ cloudflare:
+ - --perfherder-split-by browserScripts.pageinfo.url
+ # g-search:
+ # - --perfherder-split-by browserScripts.pageinfo.url
+ lq-fetch:
+ - --perfherder-split-by browserScripts.pageinfo.url
+ default: []
+ perftest-btime-variants:
+ by-perftest:
+ cloudflare:
+ - ["10s", browsertime.waitTime=10000]
+ - ["25s", browsertime.waitTime=25000]
+ - ["35s", browsertime.waitTime=35000]
+ - ["60s", browsertime.waitTime=60000]
+ # broken: bug 1678588
+ # fb-scroll:
+ # - ["10s", browsertime.waitTime=10000]
+ # - ["25s", browsertime.waitTime=25000]
+ # - ["35s", browsertime.waitTime=35000]
+ # - ["60s", browsertime.waitTime=60000]
+ # g-search:
+ # - ["10s", browsertime.waitTime=10000]
+ # - ["25s", browsertime.waitTime=25000]
+ # - ["35s", browsertime.waitTime=35000]
+ # - ["60s", browsertime.waitTime=60000]
+ lq-fetch:
+ - [null, "browsertime.waitTime=1000,browsertime.cycles=5"]
+ # broken: bug 1695871
+ # ytw:
+ # - [null, browsertime.waitTime=20000]
+ # ytw-scroll:
+ # - [null, browsertime.waitTime=20000]
+ default:
+ - [null, browsertime.waitTime=1000]
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $MOZ_FETCHES_DIR &&
+ python3.exe python/mozperftest/mozperftest/runner.py
+ {perftest_testname}
+ --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox.exe
+ --browsertime-iterations 10
+ --flavor desktop-browser
+ --perfherder
+ --perfherder-metrics {perftest_metrics}
+ --perfherder-simplify-names
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver.exe
+ --browsertime-node ${MOZ_FETCHES_DIR}/node/node.exe
+ --output $MOZ_FETCHES_DIR/../artifacts
+
+controlled:
+ description: Controlled performance testing
+ treeherder:
+ symbol: perftest(controlled)
+ worker:
+ max-run-time: 14400
+ attributes:
+ batch: false
+ cron: false
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $MOZ_FETCHES_DIR &&
+ python3.exe python/mozperftest/mozperftest/runner.py
+ netwerk/test/perf/perftest_http3_controlled.js
+ --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox.exe
+ --browsertime-iterations 1
+ --browsertime-cycles 96
+ --hooks netwerk/test/perf/hooks_throttling.py
+ --flavor desktop-browser
+ --perfherder
+ --perfherder-metrics name:navigationTiming,unit:ms name:pageTimings,unit:ms name:resources,unit:ms name:firstPaint,unit:ms name:timeToContentfulPaint,unit:ms
+ --perfherder-simplify-names
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver.exe
+ --browsertime-node ${MOZ_FETCHES_DIR}/node/node.exe
+ --output $MOZ_FETCHES_DIR/../artifacts
+
+perfstats:
+ description: Run PerfStats pageload test
+ treeherder:
+ symbol: perftest(win-perfstats)
+ attributes:
+ batch: false
+ cron: false
+ run:
+ command: >-
+ mkdir -p $MOZ_FETCHES_DIR/../artifacts &&
+ cd $MOZ_FETCHES_DIR &&
+ python3.exe python/mozperftest/mozperftest/runner.py
+ --browsertime-binary ${MOZ_FETCHES_DIR}/firefox/firefox.exe
+ --flavor desktop-browser
+ --browsertime-geckodriver ${MOZ_FETCHES_DIR}/geckodriver.exe
+ --browsertime-node ${MOZ_FETCHES_DIR}/node/node.exe
+ --output $MOZ_FETCHES_DIR/../artifacts
+ --perfherder
+ --perfherder-metrics name:HttpChannelCompletion,unit:ms name:HttpChannelCompletion_Cache,unit:ms name:HttpChannelCompletion_Network,unit:ms name:DisplayListBuilding,unit:ms name:Reflowing,unit:ms name:Styling,unit:ms
+ --browsertime-iterations 10
+ --hooks testing/performance/hooks_perfstats.py
+ testing/performance/perftest_perfstats.js
diff --git a/taskcluster/ci/post-balrog-dummy/kind.yml b/taskcluster/ci/post-balrog-dummy/kind.yml
new file mode 100644
index 0000000000..6b5b90afaf
--- /dev/null
+++ b/taskcluster/ci/post-balrog-dummy/kind.yml
@@ -0,0 +1,21 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.per_platform_dummy:transforms
+ - gecko_taskgraph.transforms.reverse_chunk_deps:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - balrog
+
+job-template:
+ description: Dummy task to deal with max_dependencies
+ run-on-projects: []
+ shipping-phase: promote
+ worker-type: succeed
+ worker:
+ implementation: succeed
diff --git a/taskcluster/ci/post-beetmover-checksums-dummy/kind.yml b/taskcluster/ci/post-beetmover-checksums-dummy/kind.yml
new file mode 100644
index 0000000000..2071a79e89
--- /dev/null
+++ b/taskcluster/ci/post-beetmover-checksums-dummy/kind.yml
@@ -0,0 +1,35 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.reverse_chunk_deps:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - beetmover-checksums
+ - release-beetmover-source-checksums
+ - release-eme-free-repack-beetmover-checksums
+ - release-beetmover-signed-langpacks-checksums
+
+jobs:
+ firefox-promote:
+ name: post-beetmover-checksums-dummy
+ description: Dummy task to deal with max_dependencies
+ run-on-projects: []
+ shipping-phase: promote
+ shipping-product: firefox
+ worker-type: succeed
+ worker:
+ implementation: succeed
+ devedition-promote:
+ name: post-beetmover-checksums-dummy
+ description: Dummy task to deal with max_dependencies
+ run-on-projects: []
+ shipping-phase: promote
+ shipping-product: devedition
+ worker-type: succeed
+ worker:
+ implementation: succeed
diff --git a/taskcluster/ci/post-beetmover-dummy/kind.yml b/taskcluster/ci/post-beetmover-dummy/kind.yml
new file mode 100644
index 0000000000..adbdcd7306
--- /dev/null
+++ b/taskcluster/ci/post-beetmover-dummy/kind.yml
@@ -0,0 +1,22 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.per_platform_dummy:transforms
+ - gecko_taskgraph.transforms.reverse_chunk_deps:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - beetmover-checksums
+ - beetmover-repackage
+
+job-template:
+ description: Dummy task to deal with max_dependencies
+ run-on-projects: []
+ shipping-phase: promote
+ worker-type: succeed
+ worker:
+ implementation: succeed
diff --git a/taskcluster/ci/post-langpack-dummy/kind.yml b/taskcluster/ci/post-langpack-dummy/kind.yml
new file mode 100644
index 0000000000..a366ac069e
--- /dev/null
+++ b/taskcluster/ci/post-langpack-dummy/kind.yml
@@ -0,0 +1,33 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.reverse_chunk_deps:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-beetmover-signed-langpacks
+
+jobs:
+ firefox-promote:
+ name: post-langpack-dummy
+ description: Dummy task to deal with max_dependencies
+ run-on-projects: []
+ shipping-phase: promote
+ shipping-product: firefox
+ worker-type: succeed
+ worker:
+ implementation: succeed
+
+ devedition-promote:
+ name: post-langpack-dummy
+ description: Dummy task to deal with max_dependencies
+ run-on-projects: []
+ shipping-phase: promote
+ shipping-product: devedition
+ worker-type: succeed
+ worker:
+ implementation: succeed
diff --git a/taskcluster/ci/post-update-verify-dummy/kind.yml b/taskcluster/ci/post-update-verify-dummy/kind.yml
new file mode 100644
index 0000000000..8b1546261b
--- /dev/null
+++ b/taskcluster/ci/post-update-verify-dummy/kind.yml
@@ -0,0 +1,21 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.per_platform_dummy:transforms
+ - gecko_taskgraph.transforms.reverse_chunk_deps:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-update-verify
+
+job-template:
+ description: Dummy task to deal with max_dependencies
+ run-on-projects: []
+ shipping-phase: promote
+ worker-type: succeed
+ worker:
+ implementation: succeed
diff --git a/taskcluster/ci/release-balrog-scheduling/kind.yml b/taskcluster/ci/release-balrog-scheduling/kind.yml
new file mode 100644
index 0000000000..2533818ca2
--- /dev/null
+++ b/taskcluster/ci/release-balrog-scheduling/kind.yml
@@ -0,0 +1,94 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.scriptworker:add_balrog_scopes
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-bouncer-check
+ - release-push-langpacks
+
+job-defaults:
+ run-on-projects: []
+ shipping-phase: ship
+ worker-type: balrog
+ worker:
+ implementation: balrog
+ balrog-action: schedule
+
+jobs:
+ firefox:
+ description: Schedule Firefox publishing in balrog
+ name: release-firefox_schedule_publishing_in_balrog
+ shipping-product: firefox
+ worker:
+ product: firefox
+ publish-rules:
+ by-release-level:
+ production:
+ by-release-type:
+ beta: [32]
+ release: [145]
+ esr102: [17770]
+ esr115: [17824]
+ default: []
+ staging:
+ by-release-type:
+ beta: [32]
+ release: [145]
+ esr102: [902]
+ esr115: [909]
+ default: []
+ background-rate:
+ by-release-type:
+ beta:
+ by-beta-number:
+ '1': 25
+ '2': 50
+ '3': 100
+ default: null
+ default: null
+ force-fallback-mapping-update:
+ by-release-type:
+ beta:
+ by-beta-number:
+ '1': true
+ default: false
+ default: false
+ pin-channels:
+ by-release-type:
+ beta: ["beta"]
+ release: ["release"]
+ esr.*: ["esr", "esr-next"]
+ default: []
+ treeherder:
+ platform: firefox-release/opt
+ symbol: Rel(BSFx)
+ tier: 1
+ kind: build
+ devedition:
+ description: Schedule Devedition publishing in balrog
+ name: release-devedition_schedule_publishing_in_balrog
+ shipping-product: devedition
+ worker:
+ product: devedition
+ publish-rules: [10]
+ background-rate:
+ by-release-type:
+ beta: null
+ default: null
+ force-fallback-mapping-update:
+ by-release-type:
+ beta: true
+ default: false
+ pin-channels: ["aurora"]
+ treeherder:
+ platform: devedition-release/opt
+ symbol: Rel(BSDev)
+ tier: 1
+ kind: build
diff --git a/taskcluster/ci/release-balrog-submit-toplevel/kind.yml b/taskcluster/ci/release-balrog-submit-toplevel/kind.yml
new file mode 100644
index 0000000000..7585796793
--- /dev/null
+++ b/taskcluster/ci/release-balrog-submit-toplevel/kind.yml
@@ -0,0 +1,80 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release:run_on_releases
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.scriptworker:add_balrog_scopes
+ - gecko_taskgraph.transforms.balrog_toplevel:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ run-on-projects: [] # to make sure this never runs in CI
+ shipping-phase: promote
+ worker-type: balrog
+ worker:
+ implementation: balrog
+ balrog-action: v2-submit-toplevel
+ require-mirrors: true
+ archive-domain:
+ by-release-level:
+ production: archive.mozilla.org
+ staging: ftp.stage.mozaws.net
+ download-domain:
+ by-release-level:
+ production: download.mozilla.org
+ staging: bouncer-bouncer-releng.stage.mozaws.net
+ whats-new-config: browser/config/whats_new_page.yml
+
+jobs:
+ firefox:
+ name: submit-toplevel-firefox-release-to-balrog
+ description: Submit toplevel Firefox release to balrog
+ shipping-product: firefox
+ worker:
+ product: firefox
+ channel-names:
+ by-release-type:
+ beta: ["beta", "beta-localtest", "beta-cdntest"]
+ release(-rc)?: ["release", "release-localtest", "release-cdntest"]
+ esr.*: ["esr", "esr-localtest", "esr-cdntest", "esr-localtest-next", "esr-cdntest-next"]
+ default: []
+ rules-to-update:
+ by-release-type:
+ beta: ["firefox-beta-cdntest", "firefox-beta-localtest"]
+ release(-rc)?: ["firefox-release-cdntest", "firefox-release-localtest"]
+ esr102: ["firefox-esr102-cdntest", "firefox-esr102-localtest"]
+ esr115: ["firefox-esr115-cdntest", "firefox-esr115-localtest"]
+ default: []
+ pin-channels:
+ by-release-type:
+ beta: ["beta-localtest", "beta-cdntest"]
+ release(-rc)?: ["release-localtest", "release-cdntest"]
+ esr.*: ["esr-localtest", "esr-cdntest", "esr-localtest-next", "esr-cdntest-next"]
+ default: []
+ platforms: ["linux", "linux64", "macosx64", "win32", "win64", "win64-aarch64"]
+ treeherder:
+ platform: firefox-release/opt
+ symbol: Rel(BPFx)
+ tier: 1
+ kind: build
+
+ devedition:
+ name: submit-toplevel-devedition-release-to-balrog
+ description: submit toplevel Devedition release to balrog
+ shipping-product: devedition
+ run-on-releases: [beta]
+ worker:
+ product: devedition
+ channel-names: ["aurora", "aurora-localtest", "aurora-cdntest"]
+ rules-to-update: ["devedition-cdntest", "devedition-localtest"]
+ pin-channels: ["aurora-localtest", "aurora-cdntest"]
+ platforms: ["linux", "linux64", "macosx64", "win32", "win64", "win64-aarch64"]
+ treeherder:
+ platform: devedition-release/opt
+ symbol: Rel(BPDev)
+ tier: 1
+ kind: build
diff --git a/taskcluster/ci/release-beetmover-push-to-release/kind.yml b/taskcluster/ci/release-beetmover-push-to-release/kind.yml
new file mode 100644
index 0000000000..affc0f2c77
--- /dev/null
+++ b/taskcluster/ci/release-beetmover-push-to-release/kind.yml
@@ -0,0 +1,33 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.beetmover_push_to_release:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-generate-checksums-beetmover
+ - post-update-verify-dummy
+
+job-defaults:
+ run-on-projects: []
+ shipping-phase: push
+ worker:
+ max-run-time: 2700
+
+jobs:
+ devedition-push-to-release:
+ name: devedition_push_to_release
+ product: devedition
+ shipping-product: devedition
+ treeherder-platform: devedition-release/opt
+
+ firefox-push-to-release:
+ name: firefox_push_to_release
+ product: firefox
+ shipping-product: firefox
+ treeherder-platform: firefox-release/opt
diff --git a/taskcluster/ci/release-beetmover-signed-langpacks-checksums/kind.yml b/taskcluster/ci/release-beetmover-signed-langpacks-checksums/kind.yml
new file mode 100644
index 0000000000..8d9bb74a2d
--- /dev/null
+++ b/taskcluster/ci/release-beetmover-signed-langpacks-checksums/kind.yml
@@ -0,0 +1,19 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.beetmover_langpack_checksums:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-beetmover-signed-langpacks
+
+job-template:
+ shipping-phase: promote
+ attributes:
+ artifact_prefix: public
+ artifact_map: taskcluster/gecko_taskgraph/manifests/firefox_candidates_checksums.yml
diff --git a/taskcluster/ci/release-beetmover-signed-langpacks/kind.yml b/taskcluster/ci/release-beetmover-signed-langpacks/kind.yml
new file mode 100644
index 0000000000..188a619ab0
--- /dev/null
+++ b/taskcluster/ci/release-beetmover-signed-langpacks/kind.yml
@@ -0,0 +1,36 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.release_beetmover_signed_addons:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - build-signing
+ - shippable-l10n-signing
+
+only-for-attributes:
+ - nightly
+ - shippable
+
+only-for-build-platforms:
+ - linux64-shippable/opt
+ - linux64-devedition/opt
+
+job-template:
+ description: Beetmover submission for platform-independent langpacks {locales} in {platform} directory
+ worker-type:
+ by-release-level:
+ production: scriptworker-k8s/gecko-3-beetmover
+ staging: scriptworker-k8s/gecko-1-beetmover
+ run-on-projects: []
+ shipping-phase: promote
+ attributes:
+ artifact_map:
+ by-release-type:
+ beta|release.*|esr.*: taskcluster/gecko_taskgraph/manifests/firefox_candidates.yml
+ default: taskcluster/gecko_taskgraph/manifests/firefox_nightly.yml
diff --git a/taskcluster/ci/release-beetmover-source-checksums/kind.yml b/taskcluster/ci/release-beetmover-source-checksums/kind.yml
new file mode 100644
index 0000000000..9a4ea7a2c4
--- /dev/null
+++ b/taskcluster/ci/release-beetmover-source-checksums/kind.yml
@@ -0,0 +1,19 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.beetmover_source_checksums:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-source-checksums-signing
+
+job-template:
+ shipping-phase: promote
+ attributes:
+ artifact_prefix: public
+ artifact_map: taskcluster/gecko_taskgraph/manifests/source_checksums.yml
diff --git a/taskcluster/ci/release-bouncer-aliases/kind.yml b/taskcluster/ci/release-bouncer-aliases/kind.yml
new file mode 100644
index 0000000000..d1ce834c48
--- /dev/null
+++ b/taskcluster/ci/release-bouncer-aliases/kind.yml
@@ -0,0 +1,95 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.bouncer_aliases:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-bouncer-check
+
+job-defaults:
+ description: Update bouncer aliases job
+ worker-type: bouncer
+ worker:
+ implementation: bouncer-aliases
+ scopes:
+ by-release-level:
+ production:
+ - project:releng:bouncer:action:aliases
+ - project:releng:bouncer:server:production
+ staging:
+ - project:releng:bouncer:action:aliases
+ - project:releng:bouncer:server:staging
+ run-on-projects: []
+ shipping-phase: ship
+ treeherder:
+ symbol: Rel(BncAlias)
+ kind: test
+ tier: 1
+
+jobs:
+ devedition:
+ bouncer-products-per-alias:
+ firefox-devedition-latest-ssl: installer-ssl
+ firefox-devedition-latest: installer
+ firefox-devedition-stub: stub-installer
+ firefox-devedition-msi-latest-ssl: msi
+ firefox-devedition-msix-latest-ssl: msix
+ shipping-product: devedition
+ treeherder:
+ platform: devedition-release/opt
+
+ firefox:
+ bouncer-products-per-alias:
+ by-release-type:
+ beta:
+ firefox-beta-latest-ssl: installer-ssl
+ firefox-beta-latest: installer
+ firefox-beta-stub: stub-installer
+ firefox-beta-msi-latest-ssl: msi
+ firefox-beta-msix-latest-ssl: msix
+ firefox-beta-pkg-latest-ssl: pkg
+ firefox-beta-langpack-latest-ssl: langpack
+ release.*:
+ firefox-latest-ssl: installer-ssl
+ firefox-latest: installer
+ firefox-stub: stub-installer
+ firefox-msi-latest-ssl: msi
+ firefox-msix-latest-ssl: msix
+ firefox-pkg-latest-ssl: pkg
+ firefox-langpack-latest-ssl: langpack
+ esr115:
+ # when there is one ESR branch both sets of aliases work
+ # when there are two ESR branches ...
+ # ... these always point to the older branch
+ firefox-esr-latest-ssl: installer-ssl
+ firefox-esr-latest: installer
+ firefox-esr-msi-latest-ssl: msi
+ firefox-esr-msix-latest-ssl: msix
+ firefox-esr-pkg-latest-ssl: pkg
+ firefox-esr-langpack-latest-ssl: langpack
+ esrXXX: # XXX - to change when we branch next ESR
+ firefox-esr-next-latest-ssl: installer-ssl
+ firefox-esr-next-latest: installer
+ firefox-esr-next-msi-latest-ssl: msi
+ firefox-esr-next-msix-latest-ssl: msix
+ firefox-esr-next-pkg-latest-ssl: pkg
+ firefox-esr-next-langpack-latest-ssl: langpack
+ default: {}
+ partner-bouncer-products-per-alias:
+ by-release-type:
+ beta:
+ partner-firefox-beta-PARTNER-latest: installer
+ partner-firefox-beta-PARTNER-stub: stub-installer
+ release.*:
+ partner-firefox-release-PARTNER-latest: installer
+ partner-firefox-release-PARTNER-stub: stub-installer
+ default: {}
+ shipping-product: firefox
+ treeherder:
+ platform: firefox-release/opt
diff --git a/taskcluster/ci/release-bouncer-check/kind.yml b/taskcluster/ci/release-bouncer-check/kind.yml
new file mode 100644
index 0000000000..9a2508b8f2
--- /dev/null
+++ b/taskcluster/ci/release-bouncer-check/kind.yml
@@ -0,0 +1,76 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - release-beetmover-push-to-release
+
+transforms:
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.bouncer_check:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ name: release-bouncer-check
+ description: release bouncer check
+ run-on-projects: [] # to make sure this never runs as part of CI
+ shipping-phase: push
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1200
+ docker-image: {in-tree: "update-verify"}
+ run:
+ sparse-profile: mozharness
+ extra-config:
+ by-release-level:
+ production:
+ bouncer_prefix: "https://download.mozilla.org/"
+ staging:
+ # This is the list on-change locales, excluding ja/ja-JP-mac
+ # which bouncer_check doesn't support.
+ locales: ['en-US', 'en-CA', 'he', 'it']
+ bouncer_prefix: "https://bouncer-bouncer-releng.stage.mozaws.net/"
+ cdn_urls:
+ - ftp.stage.mozaws.net
+
+ attributes:
+ build_platform: linux64
+ build_type: opt
+ treeherder:
+ symbol: Rel(BncChk)
+ kind: test
+ tier: 1
+
+jobs:
+ firefox:
+ shipping-product: firefox
+ index:
+ product: firefox
+ job-name: firefox-release-bouncer-check
+ run:
+ config:
+ by-release-type:
+ beta:
+ - releases/bouncer_firefox_beta.py
+ release:
+ - releases/bouncer_firefox_release.py
+ esr.*:
+ - releases/bouncer_firefox_esr.py
+ default:
+ - releases/bouncer_firefox_beta.py
+ treeherder:
+ platform: firefox-release/opt
+
+ devedition:
+ shipping-product: devedition
+ index:
+ product: devedition
+ job-name: devedition-release-bouncer-check
+ run:
+ config:
+ - releases/bouncer_firefox_devedition.py
+ treeherder:
+ platform: devedition-release/opt
diff --git a/taskcluster/ci/release-bouncer-sub/kind.yml b/taskcluster/ci/release-bouncer-sub/kind.yml
new file mode 100644
index 0000000000..131b41b0a7
--- /dev/null
+++ b/taskcluster/ci/release-bouncer-sub/kind.yml
@@ -0,0 +1,58 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release:run_on_releases
+ - gecko_taskgraph.transforms.bouncer_submission:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ description: release bouncer submission job
+ worker-type: bouncer
+ worker:
+ implementation: bouncer-submission
+ scopes:
+ by-release-level:
+ production:
+ - project:releng:bouncer:action:submission
+ - project:releng:bouncer:server:production
+ staging:
+ - project:releng:bouncer:action:submission
+ - project:releng:bouncer:server:staging
+ run-on-projects: []
+ shipping-phase: promote
+ locales-file: browser/locales/shipped-locales
+ treeherder:
+ symbol: Rel(BncSub)
+ kind: test
+ tier: 1
+
+jobs:
+ devedition:
+ bouncer-platforms: ['linux', 'linux64', 'osx', 'win', 'win64', 'win64-aarch64']
+ bouncer-products: ['complete-mar', 'installer', 'installer-ssl', 'partial-mar', 'stub-installer', 'msi', 'msix']
+ shipping-product: devedition
+ treeherder:
+ platform: devedition-release/opt
+
+ firefox:
+ bouncer-platforms: ['linux', 'linux64', 'osx', 'win', 'win64', 'win64-aarch64']
+ bouncer-products:
+ by-release-type:
+ default: ['complete-mar', 'installer', 'installer-ssl', 'partial-mar', 'stub-installer', 'msi', 'msix', 'pkg', 'langpack']
+ esr.*: ['complete-mar', 'installer', 'installer-ssl', 'partial-mar', 'msi', 'msix', 'pkg', 'langpack']
+ shipping-product: firefox
+ treeherder:
+ platform: firefox-release/opt
+
+ firefox-rc:
+ bouncer-platforms: ['linux', 'linux64', 'osx', 'win', 'win64', 'win64-aarch64']
+ bouncer-products: ['complete-mar-candidates', 'partial-mar-candidates']
+ shipping-product: firefox
+ run-on-releases: ['release-rc']
+ treeherder:
+ symbol: Rel(BncSub-RC)
+ platform: firefox-release/opt
diff --git a/taskcluster/ci/release-early-tagging/kind.yml b/taskcluster/ci/release-early-tagging/kind.yml
new file mode 100644
index 0000000000..9b194fb441
--- /dev/null
+++ b/taskcluster/ci/release-early-tagging/kind.yml
@@ -0,0 +1,46 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.release_version_bump:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ description: Release Promotion version tag for buildN
+ run-on-projects: []
+ shipping-phase: promote
+ worker-type: tree
+ worker:
+ implementation: treescript
+ tags: ['buildN']
+ bump: false
+ dontbuild: true
+ push:
+ by-project:
+ mozilla-(beta|release|esr.*): true
+ maple: true
+ default: false
+
+
+jobs:
+ firefox:
+ name: firefox-tag-buildN
+ shipping-product: firefox
+ treeherder:
+ platform: firefox-release/opt
+ symbol: Rel(TagBuild)
+ tier: 1
+ kind: build
+
+ devedition:
+ name: devedition-tag-buildN
+ shipping-product: devedition
+ treeherder:
+ platform: devedition-release/opt
+ symbol: Rel(TagBuild)
+ tier: 1
+ kind: build
diff --git a/taskcluster/ci/release-eme-free-repack-beetmover-checksums/kind.yml b/taskcluster/ci/release-eme-free-repack-beetmover-checksums/kind.yml
new file mode 100644
index 0000000000..a57ec82a9d
--- /dev/null
+++ b/taskcluster/ci/release-eme-free-repack-beetmover-checksums/kind.yml
@@ -0,0 +1,21 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.beetmover_emefree_checksums:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-eme-free-repack-beetmover
+
+only-for-build-platforms:
+ - macosx64-shippable/opt
+ - win32-shippable/opt
+ - win64-shippable/opt
+
+job-template:
+ shipping-phase: promote
diff --git a/taskcluster/ci/release-eme-free-repack-beetmover/kind.yml b/taskcluster/ci/release-eme-free-repack-beetmover/kind.yml
new file mode 100644
index 0000000000..be8dca4918
--- /dev/null
+++ b/taskcluster/ci/release-eme-free-repack-beetmover/kind.yml
@@ -0,0 +1,27 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.beetmover_repackage_partner:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-eme-free-repack-repackage-signing
+
+only-for-build-platforms:
+ - macosx64-shippable/opt
+ - win32-shippable/opt
+ - win64-shippable/opt
+
+job-template:
+ shipping-phase: promote
+ partner-bucket-scope:
+ by-release-level:
+ production: beetmover:bucket:partner
+ staging: beetmover:bucket:dep-partner
+ partner-private-path: null
+ partner-public-path: "{platform}-EME-free/{locale}"
diff --git a/taskcluster/ci/release-eme-free-repack-mac-notarization/kind.yml b/taskcluster/ci/release-eme-free-repack-mac-notarization/kind.yml
new file mode 100644
index 0000000000..db3d82fe19
--- /dev/null
+++ b/taskcluster/ci/release-eme-free-repack-mac-notarization/kind.yml
@@ -0,0 +1,26 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.multi_dep:loader
+
+group-by: partner-repack-ids
+
+transforms:
+ - gecko_taskgraph.transforms.mac_notarization:transforms
+ - gecko_taskgraph.transforms.chunk_partners:transforms
+ - gecko_taskgraph.transforms.partner_signing:transforms
+ - gecko_taskgraph.transforms.signing:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-eme-free-repack-mac-signing
+
+only-for-build-platforms:
+ - macosx64-shippable/opt
+
+job-template:
+ shipping-product: firefox
+ shipping-phase: promote
+ max-run-time: 1800
+ copy-repack-ids: true
diff --git a/taskcluster/ci/release-eme-free-repack-mac-signing/kind.yml b/taskcluster/ci/release-eme-free-repack-mac-signing/kind.yml
new file mode 100644
index 0000000000..ae7104d4a6
--- /dev/null
+++ b/taskcluster/ci/release-eme-free-repack-mac-signing/kind.yml
@@ -0,0 +1,25 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.multi_dep:loader
+
+group-by: partner-repack-ids
+
+transforms:
+ - gecko_taskgraph.transforms.chunk_partners:transforms
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.partner_signing:transforms
+ - gecko_taskgraph.transforms.signing:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-eme-free-repack
+
+only-for-build-platforms:
+ - macosx64-shippable/opt
+
+job-template:
+ shipping-product: firefox
+ shipping-phase: promote
+ repacks-per-chunk: 5
diff --git a/taskcluster/ci/release-eme-free-repack-repackage-signing/kind.yml b/taskcluster/ci/release-eme-free-repack-repackage-signing/kind.yml
new file mode 100644
index 0000000000..1caf80ed5b
--- /dev/null
+++ b/taskcluster/ci/release-eme-free-repack-repackage-signing/kind.yml
@@ -0,0 +1,18 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.repackage_signing_partner:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-eme-free-repack-repackage
+
+only-for-build-platforms:
+ - win32-shippable/opt
+ - win64-shippable/opt
+ - macosx64-shippable/opt
diff --git a/taskcluster/ci/release-eme-free-repack-repackage/kind.yml b/taskcluster/ci/release-eme-free-repack-repackage/kind.yml
new file mode 100644
index 0000000000..aa5b4ab242
--- /dev/null
+++ b/taskcluster/ci/release-eme-free-repack-repackage/kind.yml
@@ -0,0 +1,56 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.repackage_set_upstream_mac_kind:transforms
+ - gecko_taskgraph.transforms.chunk_partners:transforms
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.repackage_partner:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-eme-free-repack
+ - release-eme-free-repack-mac-signing
+ - release-eme-free-repack-mac-notarization
+ - toolchain
+
+only-for-build-platforms:
+ - macosx64-shippable/opt
+ - win32-shippable/opt
+ - win64-shippable/opt
+
+job-template:
+ upstream-mac-kind:
+ by-build-type:
+ debug: release-eme-free-repack-mac-signing
+ default:
+ by-project:
+ mozilla-(central|beta|release|esr.*): release-eme-free-repack-mac-notarization
+ default: release-eme-free-repack-mac-signing
+ mozharness:
+ config:
+ by-build-platform:
+ macosx64-.*:
+ - repackage/base.py
+ - repackage/osx_partner.py
+ win32-.*:
+ - repackage/base.py
+ - repackage/win32_sfx_stub.py
+ - repackage/win32_partner.py
+ win64-(?!aarch64).*:
+ - repackage/base.py
+ - repackage/win32_sfx_stub.py
+ - repackage/win64_partner.py
+ win64-aarch64-.*:
+ - repackage/base.py
+ - repackage/win64-aarch64_sfx_stub.py
+ - repackage/win64_partner.py
+ package-formats:
+ by-build-platform:
+ macosx64\b.*: [dmg]
+ win32\b.*: [installer]
+ win64\b.*: [installer]
diff --git a/taskcluster/ci/release-eme-free-repack/kind.yml b/taskcluster/ci/release-eme-free-repack/kind.yml
new file mode 100644
index 0000000000..cc3e85071b
--- /dev/null
+++ b/taskcluster/ci/release-eme-free-repack/kind.yml
@@ -0,0 +1,81 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.partner_repack:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - build-signing
+ - build-mac-signing
+ - build-mac-notarization
+ - shippable-l10n-signing
+ - shippable-l10n-mac-signing
+ - shippable-l10n-mac-notarization
+
+job-defaults:
+ name: eme-free-repack
+ description: Release Promotion eme-free repacks
+ run-on-projects: [] # to make sure this never runs as part of CI
+ shipping-product: firefox
+ shipping-phase: promote
+ worker-type: b-linux-gcp
+ worker:
+ docker-image:
+ in-tree: "partner-repack"
+ chain-of-trust: true
+ max-run-time: 7200
+ run:
+ using: mozharness
+ config:
+ - partner_repacks/release_mozilla-release_desktop.py
+ script: mozharness/scripts/desktop_partner_repacks.py
+ job-script: taskcluster/scripts/builder/repackage.sh
+ tooltool-downloads: false
+ extra:
+ limit-locales:
+ by-release-level:
+ staging: true
+ production: false
+
+jobs:
+ macosx64-shippable:
+ treeherder:
+ symbol: EME
+ platform: macosx64/opt
+ kind: test
+ tier: 1
+ attributes:
+ build_platform: macosx64-shippable
+ build_type: opt
+ artifact_prefix: releng/partner
+ shippable: true
+
+ win32-shippable:
+ treeherder:
+ symbol: EME
+ platform: win32/opt
+ kind: test
+ tier: 1
+ attributes:
+ build_platform: win32-shippable
+ build_type: opt
+ artifact_prefix: releng/partner
+ shippable: true
+
+ win64-shippable:
+ treeherder:
+ symbol: EME
+ platform: win64/opt
+ kind: test
+ tier: 1
+ attributes:
+ build_platform: win64-shippable
+ build_type: opt
+ artifact_prefix: releng/partner
+ shippable: true
diff --git a/taskcluster/ci/release-final-verify/kind.yml b/taskcluster/ci/release-final-verify/kind.yml
new file mode 100644
index 0000000000..b1319665cd
--- /dev/null
+++ b/taskcluster/ci/release-final-verify/kind.yml
@@ -0,0 +1,47 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - release-bouncer-check
+ - release-update-verify-config
+
+transforms:
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.final_verify:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ name: final-verify
+ run-on-projects: [] # to make sure this never runs as part of CI
+ worker-type: b-linux-gcp
+ worker:
+ docker-image:
+ in-tree: "update-verify"
+ max-run-time: 7200
+ retry-exit-status: [1]
+
+
+jobs:
+ firefox:
+ description: final verify
+ shipping-phase: push
+ shipping-product: firefox
+ treeherder:
+ platform: firefox-release/opt
+ kind: test
+ symbol: Rel(FV)
+ tier: 1
+
+ devedition:
+ description: final verify
+ shipping-phase: push
+ shipping-product: devedition
+ treeherder:
+ platform: devedition-release/opt
+ kind: test
+ symbol: Rel(FV)
+ tier: 1
diff --git a/taskcluster/ci/release-flatpak-push/kind.yml b/taskcluster/ci/release-flatpak-push/kind.yml
new file mode 100644
index 0000000000..edd65c953e
--- /dev/null
+++ b/taskcluster/ci/release-flatpak-push/kind.yml
@@ -0,0 +1,41 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release:run_on_releases
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.release_flatpak_push:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-flatpak-repackage
+
+job-defaults:
+ description: Pushes Flatpaks onto Flathub
+ run-on-projects: [] # to make sure this never runs as part of CI
+ run-on-releases: [beta, release, release-rc]
+ shipping-phase: ship
+ treeherder:
+ platform: linux64/opt
+ kind: build
+ tier: 2
+ worker-type:
+ by-release-level:
+ production: scriptworker-k8s/gecko-3-pushflatpak
+ staging: scriptworker-k8s/gecko-1-pushflatpak
+ worker:
+ implementation: push-flatpak
+ channel:
+ by-release-type:
+ beta: beta
+ release: stable
+ default: mock
+
+jobs:
+ firefox:
+ shipping-product: firefox
+ treeherder:
+ symbol: Flatpak(push)
diff --git a/taskcluster/ci/release-flatpak-repackage/kind.yml b/taskcluster/ci/release-flatpak-repackage/kind.yml
new file mode 100644
index 0000000000..ecc86bf4ab
--- /dev/null
+++ b/taskcluster/ci/release-flatpak-repackage/kind.yml
@@ -0,0 +1,66 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release:run_on_releases
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.release_flatpak_repackage:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - post-beetmover-dummy
+ - post-langpack-dummy
+
+job-defaults:
+ description: Generates flatpak by reackaging the existing tar.bz2
+ run-on-projects: [] # to make sure this never runs as part of CI
+ run-on-releases: [beta, release, release-rc]
+ shipping-phase: promote
+ scopes: []
+ treeherder:
+ platform: linux64-shippable/opt
+ kind: build
+ tier: 2
+ worker-type: b-linux-gcp
+ worker:
+ implementation: docker-worker
+ os: linux
+ max-run-time: 7200
+ docker-image: {in-tree: firefox-flatpak}
+ artifacts:
+ - name: public/build
+ type: directory
+ path: /home/worker/artifacts/
+ command:
+ - /bin/bash
+ - -cx
+ - ./runme.sh
+ env:
+ VERSION: "{release_config[version]}"
+ BUILD_NUMBER: "{release_config[build_number]}"
+ CANDIDATES_DIR:
+ by-release-level:
+ staging:
+ https://ftp.stage.mozaws.net/pub/{task[shipping-product]}/candidates
+ production:
+ https://archive.mozilla.org/pub/{task[shipping-product]}/candidates
+ LC_ALL: C.UTF-8
+ LANG: C.UTF-8
+ L10N_CHANGESETS: "{config_params[head_repository]}/raw-file/{config_params[head_rev]}/browser/locales/l10n-changesets.json"
+ FLATPAK_BRANCH:
+ by-project:
+ mozilla-release: stable
+ default: beta
+ chain-of-trust: true
+
+jobs:
+ firefox:
+ shipping-product: firefox
+ attributes:
+ build_platform: linux64-shippable
+ build_type: opt
+ treeherder:
+ symbol: Flatpak(r)
diff --git a/taskcluster/ci/release-generate-checksums-beetmover/kind.yml b/taskcluster/ci/release-generate-checksums-beetmover/kind.yml
new file mode 100644
index 0000000000..1d221edc1e
--- /dev/null
+++ b/taskcluster/ci/release-generate-checksums-beetmover/kind.yml
@@ -0,0 +1,17 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release_generate_checksums_beetmover:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-generate-checksums-signing
+
+job-template:
+ shipping-phase: promote
+ attributes:
+ artifact_map: taskcluster/gecko_taskgraph/manifests/release_checksums.yml
diff --git a/taskcluster/ci/release-generate-checksums-signing/kind.yml b/taskcluster/ci/release-generate-checksums-signing/kind.yml
new file mode 100644
index 0000000000..2e763e5434
--- /dev/null
+++ b/taskcluster/ci/release-generate-checksums-signing/kind.yml
@@ -0,0 +1,15 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+kind-dependencies:
+ - release-generate-checksums
+
+transforms:
+ - gecko_taskgraph.transforms.release_generate_checksums_signing:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-template:
+ shipping-phase: promote
diff --git a/taskcluster/ci/release-generate-checksums/kind.yml b/taskcluster/ci/release-generate-checksums/kind.yml
new file mode 100644
index 0000000000..71018c8cef
--- /dev/null
+++ b/taskcluster/ci/release-generate-checksums/kind.yml
@@ -0,0 +1,86 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - beetmover-source
+ - post-beetmover-checksums-dummy
+ - release-beetmover-signed-langpacks
+
+transforms:
+ - gecko_taskgraph.transforms.build:transforms
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.release_generate_checksums:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ name: generate-checksums
+ description: generates checksums
+ run-on-projects: [] # to make sure this never runs as part of CI
+ shipping-phase: promote
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1200
+ artifacts:
+ - name: public/build/SHA256SUMMARY
+ path: /builds/worker/SHA256SUMMARY
+ type: file
+ - name: public/build/SHA256SUMS
+ path: /builds/worker/SHA256SUMS
+ type: file
+ - name: public/build/SHA512SUMMARY
+ path: /builds/worker/SHA512SUMMARY
+ type: file
+ - name: public/build/SHA512SUMS
+ path: /builds/worker/SHA512SUMS
+ type: file
+ run:
+ using: mozharness
+ config: [] # See extra-config below
+ actions: [create-virtualenv, collect-individual-checksums, create-big-checksums, create-summary]
+ options:
+ - "version={version}"
+ - "build-number={build_number}"
+ script: "mozharness/scripts/release/generate-checksums.py"
+ treeherder:
+ symbol: Rel(GenChcks)
+ kind: test
+ tier: 1
+
+jobs:
+ firefox:
+ shipping-product: firefox
+ attributes:
+ build_platform: firefox-release
+ build_type: opt
+ run:
+ extra-config:
+ by-release-level:
+ production:
+ stage_product: "firefox"
+ bucket_name: "moz-fx-productdelivery-pr-38b5-productdelivery"
+ staging:
+ stage_product: "firefox"
+ bucket_name: "moz-fx-productdelivery-no-7d6a-productdelivery"
+ treeherder:
+ platform: firefox-release/opt
+
+ devedition:
+ shipping-product: devedition
+ attributes:
+ build_platform: devedition-release
+ build_type: opt
+ run:
+ extra-config:
+ by-release-level:
+ production:
+ stage_product: "devedition"
+ bucket_name: "moz-fx-productdelivery-pr-38b5-productdelivery"
+ staging:
+ stage_product: "devedition"
+ bucket_name: "moz-fx-productdelivery-no-7d6a-productdelivery"
+ treeherder:
+ platform: devedition-release/opt
diff --git a/taskcluster/ci/release-mark-as-shipped/kind.yml b/taskcluster/ci/release-mark-as-shipped/kind.yml
new file mode 100644
index 0000000000..48f64fc5c9
--- /dev/null
+++ b/taskcluster/ci/release-mark-as-shipped/kind.yml
@@ -0,0 +1,43 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.release_mark_as_shipped:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-balrog-scheduling
+ - release-bouncer-aliases
+ - release-version-bump
+
+job-defaults:
+ description: mark release as shipped in Ship-It
+ worker-type:
+ by-release-level:
+ production: scriptworker-k8s/gecko-3-shipit
+ staging: scriptworker-k8s/gecko-1-shipit
+ worker:
+ implementation: shipit-shipped
+ scopes:
+ by-release-level:
+ production:
+ - project:releng:ship-it:server:production
+ - project:releng:ship-it:action:mark-as-shipped
+ staging:
+ - project:releng:ship-it:server:staging
+ - project:releng:ship-it:action:mark-as-shipped
+ run-on-projects: []
+ shipping-phase: ship
+
+jobs:
+ firefox:
+ name: release-firefox_mark_as_shipped
+ shipping-product: firefox
+
+ devedition:
+ name: release-devedition_mark_as_shipped
+ shipping-product: devedition
diff --git a/taskcluster/ci/release-msix-push/kind.yml b/taskcluster/ci/release-msix-push/kind.yml
new file mode 100644
index 0000000000..3009c74df2
--- /dev/null
+++ b/taskcluster/ci/release-msix-push/kind.yml
@@ -0,0 +1,45 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release:run_on_releases
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.release_msix_push:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - repackage-shippable-l10n-msix
+
+job-defaults:
+ description: Pushes msix archives to Microsoft Store
+ run-on-projects: [] # to make sure this never runs as part of CI
+ run-on-releases: [beta, release, release-rc]
+ shipping-phase: ship # note override in transform
+ treeherder:
+ platform: win32-shippable/opt
+ kind: build
+ tier: 2
+ worker-type:
+ by-release-level:
+ production: scriptworker-k8s/gecko-3-pushmsix
+ staging: scriptworker-k8s/gecko-1-pushmsix
+ worker:
+ implementation: push-msix
+ channel:
+ by-release-type:
+ beta: beta
+ release.*: release
+ default: mock
+ publish-mode:
+ by-release-type:
+ beta: Immediate
+ default: Manual
+
+jobs:
+ firefox:
+ shipping-product: firefox
+ treeherder:
+ symbol: MSIX(push)
diff --git a/taskcluster/ci/release-notify-av-announce/kind.yml b/taskcluster/ci/release-notify-av-announce/kind.yml
new file mode 100644
index 0000000000..c9f53efc78
--- /dev/null
+++ b/taskcluster/ci/release-notify-av-announce/kind.yml
@@ -0,0 +1,42 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.release_notifications:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - post-beetmover-dummy
+
+job-defaults:
+ name: notify-av-announce
+ description: Sends email to antivirus vendors telling them that the release is available for scanning.
+ run-on-projects: []
+ shipping-phase: push
+ worker-type: succeed
+ worker:
+ implementation: succeed
+ notifications:
+ # !t is a custom format option that calls .title() on the string.
+ subject: "{task[shipping-product]!t} {release_config[version]} build{release_config[build_number]} release"
+ message: |
+ Company Name: Mozilla
+ Contact Department: Release Engineering
+ Contact email address: release@mozilla.com
+ Product information: {task[shipping-product]} {release_config[version]}
+ Product location: https://releases.mozilla.org/pub/{task[shipping-product]}/candidates/{release_config[version]}-candidates/build{release_config[build_number]}/
+ emails:
+ by-project:
+ mozilla-(beta|release|esr.*): ["av-vendor-release-announce@mozilla.org"]
+ try: ["{config[params][owner]}"]
+ default: []
+
+jobs:
+ firefox:
+ shipping-product: firefox
+ devedition:
+ shipping-product: devedition
diff --git a/taskcluster/ci/release-notify-promote/kind.yml b/taskcluster/ci/release-notify-promote/kind.yml
new file mode 100644
index 0000000000..eee09b18b9
--- /dev/null
+++ b/taskcluster/ci/release-notify-promote/kind.yml
@@ -0,0 +1,38 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.release_notifications:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - post-beetmover-dummy
+ - release-generate-checksums-beetmover
+ - release-bouncer-sub
+
+job-defaults:
+ name: notify-release-drivers-promote
+ description: Sends email to release-drivers telling release was promoted.
+ run-on-projects: []
+ shipping-phase: promote
+ worker-type: succeed
+ worker:
+ implementation: succeed
+ notifications:
+ subject: "{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]} is in the candidates directory"
+ message: "{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]} is in the candidates directory"
+ emails:
+ by-project:
+ mozilla-(beta|release|esr.*): ["release-signoff@mozilla.org"]
+ try: ["{config[params][owner]}"]
+ default: []
+
+jobs:
+ firefox:
+ shipping-product: firefox
+ devedition:
+ shipping-product: devedition
diff --git a/taskcluster/ci/release-notify-push/kind.yml b/taskcluster/ci/release-notify-push/kind.yml
new file mode 100644
index 0000000000..cc235a4fbc
--- /dev/null
+++ b/taskcluster/ci/release-notify-push/kind.yml
@@ -0,0 +1,36 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.release_notifications:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-beetmover-push-to-release
+
+job-defaults:
+ name: notify-release-drivers-push
+ description: Sends email to release-drivers telling release was pushed.
+ run-on-projects: []
+ shipping-phase: push
+ worker-type: succeed
+ worker:
+ implementation: succeed
+ notifications:
+ subject: "{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]} has been pushed to cdntest"
+ message: "{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]} has been pushed to cdntest"
+ emails:
+ by-project:
+ mozilla-(beta|release|esr.*): ["release-signoff@mozilla.org"]
+ try: ["{config[params][owner]}"]
+ default: []
+
+jobs:
+ firefox:
+ shipping-product: firefox
+ devedition:
+ shipping-product: devedition
diff --git a/taskcluster/ci/release-notify-ship/kind.yml b/taskcluster/ci/release-notify-ship/kind.yml
new file mode 100644
index 0000000000..7bf5df977b
--- /dev/null
+++ b/taskcluster/ci/release-notify-ship/kind.yml
@@ -0,0 +1,43 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.release_notifications:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-balrog-scheduling
+ - release-bouncer-aliases
+ - release-version-bump
+ - release-mark-as-shipped
+
+job-defaults:
+ name: notify-release-drivers-ship
+ description: Sends email to release-drivers telling release was shipped.
+ run-on-projects: []
+ shipping-phase: ship
+ worker-type: succeed
+ worker:
+ implementation: succeed
+ notifications:
+ emails:
+ by-project:
+ mozilla-(beta|release|esr.*): ["release-signoff@mozilla.org"]
+ try: ["{config[params][owner]}"]
+ default: []
+
+jobs:
+ firefox:
+ shipping-product: firefox
+ notifications:
+ subject: "{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]} updates are ready for signoff in Balrog!"
+ message: "{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]} updates are ready for signoff in Balrog!"
+ devedition:
+ shipping-product: devedition
+ notifications:
+ subject: "{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]} updates are ready for signoff in Balrog!"
+ message: "{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]} updates are ready for signoff in Balrog!"
diff --git a/taskcluster/ci/release-notify-started/kind.yml b/taskcluster/ci/release-notify-started/kind.yml
new file mode 100644
index 0000000000..e7c7b8c144
--- /dev/null
+++ b/taskcluster/ci/release-notify-started/kind.yml
@@ -0,0 +1,32 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.release_started:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ name: notify-release-drivers-started
+ description: Sends email to release-drivers telling release was started.
+ run-on-projects: []
+ shipping-phase: promote
+ worker-type: b-linux-gcp
+ worker:
+ docker-image: {in-tree: "debian11-base"}
+ max-run-time: 600
+ emails:
+ by-project:
+ mozilla-(beta|release|esr.*): ["release-signoff@mozilla.org"]
+ try: ["{config[params][owner]}"]
+ default: []
+
+jobs:
+ firefox:
+ shipping-product: firefox
+ devedition:
+ shipping-product: devedition
diff --git a/taskcluster/ci/release-partner-attribution-beetmover/kind.yml b/taskcluster/ci/release-partner-attribution-beetmover/kind.yml
new file mode 100644
index 0000000000..ad6bc65c9f
--- /dev/null
+++ b/taskcluster/ci/release-partner-attribution-beetmover/kind.yml
@@ -0,0 +1,23 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.partner_attribution_beetmover:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-partner-attribution
+
+job-template:
+ shipping-product: firefox
+ shipping-phase: promote
+ partner-bucket-scope:
+ by-release-level:
+ production: beetmover:bucket:partner
+ staging: beetmover:bucket:dep-partner
+ partner-public-path: "partner-repacks/{partner}/{subpartner}/v{release_partner_build_number}/{platform}/{locale}"
+ partner-private-path: "{partner}/{version}-{build_number}/{subpartner}/{platform}/{locale}"
diff --git a/taskcluster/ci/release-partner-attribution/kind.yml b/taskcluster/ci/release-partner-attribution/kind.yml
new file mode 100644
index 0000000000..1da2656150
--- /dev/null
+++ b/taskcluster/ci/release-partner-attribution/kind.yml
@@ -0,0 +1,40 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.partner_attribution:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - repackage-signing
+ - repackage-signing-l10n
+
+# move this into the single job ??
+job-defaults:
+ name: partner-attribution
+ description: Release Promotion partner attribution
+ run-on-projects: [] # to make sure this never runs as part of CI
+ shipping-product: firefox
+ shipping-phase: promote
+ worker-type: b-linux-gcp
+ worker:
+ docker-image:
+ in-tree: "partner-repack"
+ chain-of-trust: true
+ max-run-time: 1800
+ run:
+ using: mach
+ mach: python python/mozrelease/mozrelease/attribute_builds.py
+
+jobs:
+ partner-attribution:
+ attributes:
+ build_platform: linux-shippable
+ build_type: opt
+ artifact_prefix: releng/partner
+ shippable: true
diff --git a/taskcluster/ci/release-partner-repack-beetmover/kind.yml b/taskcluster/ci/release-partner-repack-beetmover/kind.yml
new file mode 100644
index 0000000000..7da1f2bb15
--- /dev/null
+++ b/taskcluster/ci/release-partner-repack-beetmover/kind.yml
@@ -0,0 +1,31 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.chunk_partners:transforms
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.beetmover_repackage_partner:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-partner-repack-repackage-signing
+
+only-for-build-platforms:
+ - linux-shippable/opt
+ - linux64-shippable/opt
+ - macosx64-shippable/opt
+ - win32-shippable/opt
+ - win64-shippable/opt
+ - win64-aarch64-shippable/opt
+
+job-template:
+ shipping-phase: promote
+ partner-bucket-scope:
+ by-release-level:
+ production: beetmover:bucket:partner
+ staging: beetmover:bucket:dep-partner
+ partner-public-path: "partner-repacks/{partner}/{subpartner}/v{release_partner_build_number}/{platform}/{locale}"
+ partner-private-path: "{partner}/{version}-{build_number}/{subpartner}/{platform}/{locale}"
diff --git a/taskcluster/ci/release-partner-repack-bouncer-sub/kind.yml b/taskcluster/ci/release-partner-repack-bouncer-sub/kind.yml
new file mode 100644
index 0000000000..98fa149810
--- /dev/null
+++ b/taskcluster/ci/release-partner-repack-bouncer-sub/kind.yml
@@ -0,0 +1,41 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.bouncer_submission_partners:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ description: release partners bouncer submission job
+ worker-type: bouncer
+ worker:
+ implementation: bouncer-submission
+ scopes:
+ by-release-level:
+ production:
+ - project:releng:bouncer:action:submission
+ - project:releng:bouncer:server:production
+ staging:
+ - project:releng:bouncer:action:submission
+ - project:releng:bouncer:server:staging
+ run-on-projects: []
+ shipping-phase: promote
+ locales-file: browser/locales/shipped-locales
+ treeherder:
+ symbol: Rel(BncSub-P)
+ kind: test
+ tier: 1
+
+jobs:
+ firefox:
+ bouncer-platforms: ['linux', 'linux64', 'osx', 'win', 'win64', 'win64-aarch64']
+ bouncer-products:
+ by-release-type:
+ default: ['installer', 'stub-installer']
+ esr.*: []
+ shipping-product: firefox
+ treeherder:
+ platform: firefox-release/opt
diff --git a/taskcluster/ci/release-partner-repack-chunking-dummy/kind.yml b/taskcluster/ci/release-partner-repack-chunking-dummy/kind.yml
new file mode 100644
index 0000000000..26aa2afa51
--- /dev/null
+++ b/taskcluster/ci/release-partner-repack-chunking-dummy/kind.yml
@@ -0,0 +1,36 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.chunk_partners:transforms
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ # This transform sets build_platform to the same thing as the upstream task.
+ # We'd do it here, except single_dep doesn't pay attention to any
+ # per platform things that we set.
+ - gecko_taskgraph.transforms.copy_attributes_from_dependent_task:transforms
+ # This transform is needed because task.py doesn't allow "primary-dependency" to be
+ # set, but the single_dep loader sets it (and we need it for chunk_partners,
+ # name_sanity, and copy_build_platform_from_dependent_task to work).
+ - gecko_taskgraph.transforms.strip_dependent_task:transforms
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-partner-repack
+
+only-for-build-platforms:
+ - linux-shippable/opt
+ - linux64-shippable/opt
+
+job-template:
+ shipping-phase: promote
+ shipping-product: firefox
+ name: release-partner-repack-chunking-dummy
+ description: Dummy task to deal with fanning out Linux partner repacks
+ run-on-projects: []
+ worker-type: succeed
+ worker:
+ implementation: succeed
diff --git a/taskcluster/ci/release-partner-repack-mac-notarization/kind.yml b/taskcluster/ci/release-partner-repack-mac-notarization/kind.yml
new file mode 100644
index 0000000000..6857fcf67a
--- /dev/null
+++ b/taskcluster/ci/release-partner-repack-mac-notarization/kind.yml
@@ -0,0 +1,26 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.multi_dep:loader
+
+group-by: partner-repack-ids
+
+transforms:
+ - gecko_taskgraph.transforms.mac_notarization:transforms
+ - gecko_taskgraph.transforms.chunk_partners:transforms
+ - gecko_taskgraph.transforms.partner_signing:transforms
+ - gecko_taskgraph.transforms.signing:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-partner-repack-mac-signing
+
+only-for-build-platforms:
+ - macosx64-shippable/opt
+
+job-template:
+ shipping-product: firefox
+ shipping-phase: promote
+ max-run-time: 1800
+ copy-repack-ids: true
diff --git a/taskcluster/ci/release-partner-repack-mac-signing/kind.yml b/taskcluster/ci/release-partner-repack-mac-signing/kind.yml
new file mode 100644
index 0000000000..66a51a8eac
--- /dev/null
+++ b/taskcluster/ci/release-partner-repack-mac-signing/kind.yml
@@ -0,0 +1,25 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.multi_dep:loader
+
+group-by: partner-repack-ids
+
+transforms:
+ - gecko_taskgraph.transforms.chunk_partners:transforms
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.partner_signing:transforms
+ - gecko_taskgraph.transforms.signing:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-partner-repack
+
+only-for-build-platforms:
+ - macosx64-shippable/opt
+
+job-template:
+ shipping-product: firefox
+ shipping-phase: promote
+ repacks-per-chunk: 5
diff --git a/taskcluster/ci/release-partner-repack-repackage-signing/kind.yml b/taskcluster/ci/release-partner-repack-repackage-signing/kind.yml
new file mode 100644
index 0000000000..41a08df1bb
--- /dev/null
+++ b/taskcluster/ci/release-partner-repack-repackage-signing/kind.yml
@@ -0,0 +1,23 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.chunk_partners:transforms
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.repackage_signing_partner:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-partner-repack-chunking-dummy # Linux
+ - release-partner-repack-repackage # Windows, Mac
+
+only-for-build-platforms:
+ - linux-shippable/opt
+ - linux64-shippable/opt
+ - macosx64-shippable/opt
+ - win32-shippable/opt
+ - win64-shippable/opt
+ - win64-aarch64-shippable/opt
diff --git a/taskcluster/ci/release-partner-repack-repackage/kind.yml b/taskcluster/ci/release-partner-repack-repackage/kind.yml
new file mode 100644
index 0000000000..6b0b1fd2c3
--- /dev/null
+++ b/taskcluster/ci/release-partner-repack-repackage/kind.yml
@@ -0,0 +1,57 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.repackage_set_upstream_mac_kind:transforms
+ - gecko_taskgraph.transforms.chunk_partners:transforms
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.repackage_partner:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-partner-repack
+ - release-partner-repack-mac-signing
+ - release-partner-repack-mac-notarization
+ - toolchain
+
+only-for-build-platforms:
+ - macosx64-shippable/opt
+ - win32-shippable/opt
+ - win64-shippable/opt
+ - win64-aarch64-shippable/opt
+
+job-template:
+ upstream-mac-kind:
+ by-build-type:
+ debug: release-partner-repack-mac-signing
+ default:
+ by-project:
+ mozilla-(central|beta|release|esr.*): release-partner-repack-mac-notarization
+ default: release-partner-repack-mac-signing
+ mozharness:
+ config:
+ by-build-platform:
+ macosx64-.*:
+ - repackage/base.py
+ - repackage/osx_partner.py
+ win32-.*:
+ - repackage/base.py
+ - repackage/win32_sfx_stub.py
+ - repackage/win32_partner.py
+ win64-(?!aarch64).*:
+ - repackage/base.py
+ - repackage/win32_sfx_stub.py
+ - repackage/win64_partner.py
+ win64-aarch64-.*:
+ - repackage/base.py
+ - repackage/win64-aarch64_sfx_stub.py
+ - repackage/win64_partner.py
+ package-formats:
+ by-build-platform:
+ macosx64\b.*: [dmg]
+ win32\b.*: [installer]
+ win64\b.*: [installer]
diff --git a/taskcluster/ci/release-partner-repack/kind.yml b/taskcluster/ci/release-partner-repack/kind.yml
new file mode 100644
index 0000000000..2a5d2fc996
--- /dev/null
+++ b/taskcluster/ci/release-partner-repack/kind.yml
@@ -0,0 +1,87 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.partner_repack:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - build-signing
+ - build-mac-signing
+ - build-mac-notarization
+ - shippable-l10n-signing
+ - shippable-l10n-mac-signing
+ - shippable-l10n-mac-notarization
+
+job-defaults:
+ name: partner-repack
+ description: Release Promotion partner repacks
+ run-on-projects: [] # to make sure this never runs as part of CI
+ shipping-product: firefox
+ shipping-phase: promote
+ worker-type: b-linux-gcp
+ worker:
+ docker-image:
+ in-tree: "partner-repack"
+ chain-of-trust: true
+ max-run-time: 7200
+ run:
+ using: mozharness
+ config:
+ - partner_repacks/release_mozilla-release_desktop.py
+ script: mozharness/scripts/desktop_partner_repacks.py
+ job-script: taskcluster/scripts/builder/repackage.sh
+ tooltool-downloads: false
+ extra:
+ limit-locales:
+ by-release-level:
+ staging: true
+ production: false
+
+jobs:
+ linux-shippable:
+ attributes:
+ build_platform: linux-shippable
+ build_type: opt
+ artifact_prefix: releng/partner
+ shippable: true
+
+ linux64-shippable:
+ attributes:
+ build_platform: linux64-shippable
+ build_type: opt
+ artifact_prefix: releng/partner
+ shippable: true
+
+ macosx64-shippable:
+ attributes:
+ build_platform: macosx64-shippable
+ build_type: opt
+ artifact_prefix: releng/partner
+ shippable: true
+
+ win32-shippable:
+ attributes:
+ build_platform: win32-shippable
+ build_type: opt
+ artifact_prefix: releng/partner
+ shippable: true
+
+ win64-shippable:
+ attributes:
+ build_platform: win64-shippable
+ build_type: opt
+ artifact_prefix: releng/partner
+ shippable: true
+
+ win64-aarch64-shippable:
+ attributes:
+ build_platform: win64-aarch64-shippable
+ build_type: opt
+ artifact_prefix: releng/partner
+ shippable: true
diff --git a/taskcluster/ci/release-push-langpacks/kind.yml b/taskcluster/ci/release-push-langpacks/kind.yml
new file mode 100644
index 0000000000..cd46683bbb
--- /dev/null
+++ b/taskcluster/ci/release-push-langpacks/kind.yml
@@ -0,0 +1,50 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release_sign_and_push_langpacks:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - build
+ - shippable-l10n
+
+
+only-for-build-platforms:
+ - linux64-shippable/opt # addons.mozilla.org only support 1 platform per locale. That's why we use linux64
+ - linux64-devedition/opt
+ - macosx64-shippable/opt # Although, we need the special locale "ja-JP-Mac" from this platform
+ - macosx64-devedition/opt
+
+
+job-template:
+ description: Sends {locales} XPIs for platform to addons.mozilla.org
+ worker-type: addon
+ worker:
+ channel:
+ by-project:
+ mozilla-release:
+ by-platform:
+ # ja-JP-mac is only langpack on mac, and is unlisted always
+ macosx64.*: unlisted
+ default: listed
+ mozilla-beta:
+ by-platform:
+ # ja-JP-mac is only langpack on mac, and is unlisted always
+ macosx64-shippable.*: unlisted
+ macosx64-devedition.*: unlisted
+ linux.*-devedition.*: unlisted
+ default: listed
+ default: unlisted
+ upstream-artifacts: # See transforms
+ run-on-projects: []
+ scopes:
+ by-release-level:
+ production:
+ - project:releng:addons.mozilla.org:server:production
+ staging:
+ - project:releng:addons.mozilla.org:server:staging
+ shipping-phase: promote
diff --git a/taskcluster/ci/release-secondary-balrog-scheduling/kind.yml b/taskcluster/ci/release-secondary-balrog-scheduling/kind.yml
new file mode 100644
index 0000000000..9a230639b9
--- /dev/null
+++ b/taskcluster/ci/release-secondary-balrog-scheduling/kind.yml
@@ -0,0 +1,41 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.scriptworker:add_balrog_scopes
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - post-balrog-dummy
+ - post-beetmover-dummy
+ - release-secondary-balrog-submit-toplevel
+
+job-defaults:
+ run-on-projects: []
+ shipping-phase: ship
+ worker-type: balrog
+ worker:
+ implementation: balrog
+ balrog-action: schedule
+
+jobs:
+ firefox-secondary-rc:
+ description: Schedule Beta Firefox publishing in balrog
+ name: release-firefox_schedule_publishing_in_balrog
+ shipping-product: firefox
+ worker:
+ product: firefox
+ release-eta: ''
+ channel-names: ["beta", "beta-localtest", "beta-cdntest"]
+ publish-rules: [32]
+ rules-to-update: ["firefox-beta-cdntest", "firefox-beta-localtest"]
+ pin-channels: ["beta"]
+ treeherder:
+ platform: firefox-release/opt
+ symbol: Rel(BSFxRC)
+ tier: 1
+ kind: build
diff --git a/taskcluster/ci/release-secondary-balrog-submit-toplevel/kind.yml b/taskcluster/ci/release-secondary-balrog-submit-toplevel/kind.yml
new file mode 100644
index 0000000000..cc3312ecbe
--- /dev/null
+++ b/taskcluster/ci/release-secondary-balrog-submit-toplevel/kind.yml
@@ -0,0 +1,46 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.scriptworker:add_balrog_scopes
+ - gecko_taskgraph.transforms.balrog_toplevel:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ run-on-projects: [] # to make sure this never runs in CI
+ shipping-phase: promote
+ worker-type: balrog
+ worker:
+ implementation: balrog
+ balrog-action: v2-submit-toplevel
+ require-mirrors: false
+ platforms: ["linux", "linux64", "macosx64", "win32", "win64", "win64-aarch64"]
+ archive-domain:
+ by-release-level:
+ production: archive.mozilla.org
+ staging: ftp.stage.mozaws.net
+ download-domain:
+ by-release-level:
+ production: download.mozilla.org
+ staging: bouncer-bouncer-releng.stage.mozaws.net
+ whats-new-config: browser/config/whats_new_page.yml
+
+jobs:
+ firefox:
+ name: submit-toplevel-rc-firefox-release-to-balrog
+ description: submit toplevel RC Firefox release to balrog
+ shipping-product: firefox
+ worker:
+ product: firefox
+ channel-names: ["beta", "beta-localtest", "beta-cdntest"]
+ rules-to-update: ["firefox-beta-cdntest", "firefox-beta-localtest"]
+ pin-channels: ["beta-localtest", "beta-cdntest"]
+ treeherder:
+ platform: firefox-release/opt
+ symbol: Rel(BPFxRC)
+ tier: 1
+ kind: build
diff --git a/taskcluster/ci/release-secondary-final-verify/kind.yml b/taskcluster/ci/release-secondary-final-verify/kind.yml
new file mode 100644
index 0000000000..0d2e58d01d
--- /dev/null
+++ b/taskcluster/ci/release-secondary-final-verify/kind.yml
@@ -0,0 +1,38 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - post-balrog-dummy
+ - post-beetmover-dummy
+ - release-secondary-balrog-submit-toplevel
+ - release-secondary-update-verify-config
+
+transforms:
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.final_verify:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ name: secondary-final-verify
+ run-on-projects: [] # to make sure this never runs as part of CI
+ worker-type: b-linux-gcp
+ worker:
+ docker-image:
+ in-tree: "update-verify"
+ max-run-time: 7200
+ retry-exit-status: [1]
+
+jobs:
+ firefox:
+ description: secondary final verify
+ shipping-phase: promote
+ shipping-product: firefox
+ treeherder:
+ platform: firefox-release/opt
+ kind: test
+ symbol: Rel(FVS)
+ tier: 1
diff --git a/taskcluster/ci/release-secondary-flatpak-push/kind.yml b/taskcluster/ci/release-secondary-flatpak-push/kind.yml
new file mode 100644
index 0000000000..379f2326dd
--- /dev/null
+++ b/taskcluster/ci/release-secondary-flatpak-push/kind.yml
@@ -0,0 +1,37 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release:run_on_releases
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.release_flatpak_push:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-flatpak-repackage
+
+job-defaults:
+ description: Pushes Flatpaks onto Flathub
+ run-on-projects: [] # to make sure this never runs as part of CI
+ run-on-releases: [release-rc]
+ shipping-phase: ship # ship-rc phase
+ treeherder:
+ platform: linux64/opt
+ kind: build
+ tier: 2
+ worker-type:
+ by-release-level:
+ production: scriptworker-k8s/gecko-3-pushflatpak
+ staging: scriptworker-k8s/gecko-1-pushflatpak
+ worker:
+ implementation: push-flatpak
+ channel: beta
+
+jobs:
+ firefox-rc:
+ shipping-product: firefox
+ treeherder:
+ symbol: Flatpak(push-beta)
diff --git a/taskcluster/ci/release-secondary-notify-ship/kind.yml b/taskcluster/ci/release-secondary-notify-ship/kind.yml
new file mode 100644
index 0000000000..ec70aa13ac
--- /dev/null
+++ b/taskcluster/ci/release-secondary-notify-ship/kind.yml
@@ -0,0 +1,36 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.release_notifications:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-secondary-balrog-scheduling
+
+job-defaults:
+ name: notify-release-drivers-ship
+ description: Sends email to release-drivers telling release was shipped.
+ run-on-projects: []
+ shipping-phase: ship
+ worker-type: succeed
+ worker:
+ implementation: succeed
+ notifications:
+ emails:
+ by-project:
+ mozilla-beta: ["release-signoff@mozilla.org"]
+ mozilla-release: ["release-signoff@mozilla.org"]
+ try: ["{config[params][owner]}"]
+ default: []
+
+jobs:
+ firefox-rc:
+ shipping-product: firefox
+ notifications:
+ subject: "{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]} RC updates are ready!"
+ message: "{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]} RC updates are ready!"
diff --git a/taskcluster/ci/release-secondary-update-verify-config/kind.yml b/taskcluster/ci/release-secondary-update-verify-config/kind.yml
new file mode 100644
index 0000000000..7e28131a5e
--- /dev/null
+++ b/taskcluster/ci/release-secondary-update-verify-config/kind.yml
@@ -0,0 +1,124 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.update_verify_config:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ name: secondary-update-verify-config
+ run-on-projects: [] # to make sure this never runs as part of CI
+ shipping-product: firefox
+ shipping-phase: promote
+ worker-type: b-linux-gcp
+ worker:
+ docker-image:
+ in-tree: "update-verify"
+ max-run-time: 3600
+ artifacts:
+ - name: public/build/update-verify.cfg
+ path: /builds/worker/checkouts/gecko/update-verify.cfg
+ type: file
+ run:
+ sparse-profile: mozharness
+ extra:
+ app-name: browser
+ branch-prefix: mozilla
+ product: firefox
+ archive-prefix:
+ by-release-level:
+ staging: "http://ftp.stage.mozaws.net/pub"
+ production: "https://archive.mozilla.org/pub"
+ previous-archive-prefix:
+ by-release-level:
+ staging: "https://archive.mozilla.org/pub"
+ production: null
+ aus-server:
+ by-release-level:
+ staging: "https://stage.balrog.nonprod.cloudops.mozgcp.net"
+ production: "https://aus5.mozilla.org"
+ override-certs:
+ by-release-level:
+ staging: dep
+ production: null
+ include-version: beta
+ last-watershed: "72.0.2"
+ mar-channel-id-override: beta
+ channel: "beta-localtest"
+
+jobs:
+ firefox-secondary-linux:
+ treeherder:
+ symbol: UVCS
+ platform: linux-shippable/opt
+ kind: test
+ tier: 1
+ attributes:
+ build_platform: linux-shippable
+ extra:
+ platform: linux-i686
+ updater-platform: linux-x86_64
+
+ firefox-secondary-linux64:
+ treeherder:
+ symbol: UVCS
+ platform: linux64-shippable/opt
+ kind: test
+ tier: 1
+ attributes:
+ build_platform: linux64-shippable
+ extra:
+ platform: linux-x86_64
+ updater-platform: linux-x86_64
+
+ firefox-secondary-macosx64:
+ treeherder:
+ symbol: UVCS
+ platform: macosx64/opt
+ kind: test
+ tier: 1
+ attributes:
+ build_platform: macosx64-shippable
+ extra:
+ platform: mac
+ updater-platform: linux-x86_64
+
+ firefox-secondary-win32:
+ treeherder:
+ symbol: UVCS
+ platform: windows2012-32-shippable/opt
+ kind: test
+ tier: 1
+ attributes:
+ build_platform: win32-shippable
+ extra:
+ platform: win32
+ updater-platform: linux-x86_64
+
+ firefox-secondary-win64:
+ treeherder:
+ symbol: UVCS
+ platform: windows2012-64-shippable/opt
+ kind: test
+ tier: 1
+ attributes:
+ build_platform: win64-shippable
+ extra:
+ platform: win64
+ updater-platform: linux-x86_64
+
+ firefox-secondary-win64-aarch64:
+ treeherder:
+ symbol: UVCS
+ platform: windows2012-aarch64-shippable/opt
+ kind: test
+ tier: 1
+ attributes:
+ build_platform: win64-aarch64-shippable
+ extra:
+ platform: win64-aarch64
+ updater-platform: linux-x86_64
diff --git a/taskcluster/ci/release-secondary-update-verify/kind.yml b/taskcluster/ci/release-secondary-update-verify/kind.yml
new file mode 100644
index 0000000000..f567cf7ae3
--- /dev/null
+++ b/taskcluster/ci/release-secondary-update-verify/kind.yml
@@ -0,0 +1,77 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - post-balrog-dummy
+ - post-beetmover-dummy
+ - release-secondary-balrog-submit-toplevel
+ - release-secondary-update-verify-config
+
+transforms:
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.update_verify:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ name: secondary-update-verify
+ run-on-projects: [] # to make sure this never runs as part of CI
+ shipping-phase: promote
+ worker-type: b-linux-gcp
+ worker:
+ artifacts:
+ - name: 'public/build/diff-summary.log'
+ path: '/builds/worker/tools/release/updates/diff-summary.log'
+ type: file
+ docker-image:
+ in-tree: "update-verify"
+ max-run-time: 7200
+ retry-exit-status:
+ - 255
+ treeherder:
+ symbol: UV(UVS)
+ kind: test
+ extra:
+ chunks: 16
+
+jobs:
+ firefox-secondary-linux64:
+ description: linux64 secondary channel update verify
+ shipping-product: firefox
+ attributes:
+ build_platform: linux64-shippable
+
+ firefox-secondary-linux:
+ description: linux secondary channel update verify
+ shipping-product: firefox
+ attributes:
+ build_platform: linux-shippable
+
+ firefox-secondary-win64:
+ description: win64 secondary channel update verify
+ shipping-product: firefox
+ attributes:
+ build_platform: win64-shippable
+
+ firefox-secondary-win64-aarch64:
+ description: win64 secondary channel update verify
+ shipping-product: firefox
+ attributes:
+ build_platform: win64-aarch64-shippable
+
+ firefox-secondary-win32:
+ description: win32 secondary channel update verify
+ shipping-product: firefox
+ attributes:
+ build_platform: win32-shippable
+
+ firefox-secondary-macosx64:
+ description: macosx64 secondary channel update verify
+ shipping-product: firefox
+ attributes:
+ build_platform: macosx64-shippable
+ extra:
+ chunks: 30
diff --git a/taskcluster/ci/release-snap-repackage/kind.yml b/taskcluster/ci/release-snap-repackage/kind.yml
new file mode 100644
index 0000000000..73d9d8a410
--- /dev/null
+++ b/taskcluster/ci/release-snap-repackage/kind.yml
@@ -0,0 +1,60 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.release_snap_repackage:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - post-beetmover-dummy
+ - post-langpack-dummy
+
+job-defaults:
+ description: Generates snap image
+ run-on-projects: [] # to make sure this never runs as part of CI
+ shipping-phase: promote
+ scopes: []
+ treeherder:
+ platform: linux64-shippable/opt
+ kind: build
+ tier: 2
+ worker-type: b-linux-gcp
+ worker:
+ implementation: docker-worker
+ os: linux
+ max-run-time: 7200
+ docker-image: {in-tree: firefox-snap}
+ artifacts:
+ - name: public/build
+ type: directory
+ path: /home/worker/artifacts/
+ command:
+ - /bin/bash
+ - -cx
+ - ./runme.sh
+ env:
+ VERSION: "{release_config[version]}"
+ BUILD_NUMBER: "{release_config[build_number]}"
+ CANDIDATES_DIR:
+ by-release-level:
+ staging:
+ https://ftp.stage.mozaws.net/pub/{task[shipping-product]}/candidates
+ production:
+ https://archive.mozilla.org/pub/{task[shipping-product]}/candidates
+ LC_ALL: C.UTF-8
+ LANG: C.UTF-8
+ L10N_CHANGESETS: "{config_params[head_repository]}/raw-file/{config_params[head_rev]}/browser/locales/l10n-changesets.json"
+ chain-of-trust: true
+
+jobs:
+ firefox:
+ shipping-product: firefox
+ attributes:
+ build_platform: linux64-shippable
+ build_type: opt
+ treeherder:
+ symbol: Snap(r)
diff --git a/taskcluster/ci/release-source-checksums-signing/kind.yml b/taskcluster/ci/release-source-checksums-signing/kind.yml
new file mode 100644
index 0000000000..379aff10bc
--- /dev/null
+++ b/taskcluster/ci/release-source-checksums-signing/kind.yml
@@ -0,0 +1,16 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.source_checksums_signing:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - beetmover-source
+
+job-template:
+ shipping-phase: promote
diff --git a/taskcluster/ci/release-source-signing/kind.yml b/taskcluster/ci/release-source-signing/kind.yml
new file mode 100644
index 0000000000..2b6c3376ab
--- /dev/null
+++ b/taskcluster/ci/release-source-signing/kind.yml
@@ -0,0 +1,17 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.build_signing:transforms
+ - gecko_taskgraph.transforms.signing:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-source
+
+job-template:
+ shipping-phase: promote
diff --git a/taskcluster/ci/release-source/kind.yml b/taskcluster/ci/release-source/kind.yml
new file mode 100644
index 0000000000..6b550e9d7e
--- /dev/null
+++ b/taskcluster/ci/release-source/kind.yml
@@ -0,0 +1,54 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - toolchain
+
+transforms:
+ - gecko_taskgraph.transforms.build:transforms
+ - gecko_taskgraph.transforms.build_attrs:transforms
+ - gecko_taskgraph.transforms.build_lints:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+
+job-defaults:
+ shipping-phase: promote
+ treeherder:
+ symbol: Src
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 3600
+ env:
+ PKG_SRCPACK_BASENAME: source
+ attributes:
+ shippable: true
+ run:
+ using: mozharness
+ actions: [package-source]
+ script: "mozharness/scripts/fx_desktop_build.py"
+ config:
+ - builds/releng_sub_linux_configs/64_source.py
+ options: []
+ tooltool-downloads: public
+ run-on-projects: []
+ # The build_attrs transform defaults to setting a `skip-unlles-schedules'
+ # optimization based on the task label. The tasks here don't have corresponding
+ # schedules defined in mozbuild.
+ optimization: null
+
+jobs:
+ firefox-source/opt:
+ description: "Firefox source builder"
+ treeherder:
+ platform: firefox-release/opt
+ shipping-product: firefox
+
+ devedition-source/opt:
+ description: "Devedition source builder"
+ treeherder:
+ platform: devedition-release/opt
+ shipping-product: devedition
diff --git a/taskcluster/ci/release-update-verify-config-next/kind.yml b/taskcluster/ci/release-update-verify-config-next/kind.yml
new file mode 100644
index 0000000000..959d0afb9a
--- /dev/null
+++ b/taskcluster/ci/release-update-verify-config-next/kind.yml
@@ -0,0 +1,98 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release:run_on_releases
+ - gecko_taskgraph.transforms.update_verify_config:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ name: update-verify-config-next
+ run-on-projects: [] # to make sure this never runs as part of CI
+ run-on-releases: [esr115]
+ shipping-phase: promote
+ worker-type: b-linux-gcp
+ worker:
+ docker-image:
+ in-tree: "update-verify"
+ max-run-time: 3600
+ artifacts:
+ - name: public/build/update-verify.cfg
+ path: /builds/worker/checkouts/gecko/update-verify.cfg
+ type: file
+ run:
+ sparse-profile: mozharness
+ treeherder:
+ symbol: UVCnext
+ kind: test
+ tier: 1
+ extra:
+ app-name: browser
+ branch-prefix: mozilla
+ archive-prefix:
+ by-release-level:
+ staging: "http://ftp.stage.mozaws.net/pub"
+ production: "https://archive.mozilla.org/pub"
+ previous-archive-prefix:
+ by-release-level:
+ staging: "https://archive.mozilla.org/pub"
+ production: null
+ aus-server:
+ by-release-level:
+ staging: "https://stage.balrog.nonprod.cloudops.mozgcp.net"
+ production: "https://aus5.mozilla.org"
+ override-certs:
+ by-release-level:
+ staging: dep
+ production: null
+ updater-platform: linux-x86_64
+ product: firefox
+ channel: "esr-localtest-next"
+ include-version: esr115-next
+ last-watershed: "68.0esr"
+
+jobs:
+ firefox-next-linux:
+ shipping-product: firefox
+ treeherder:
+ platform: linux32-shippable/opt
+ attributes:
+ build_platform: linux-shippable
+ extra:
+ platform: linux-i686
+ firefox-next-linux64:
+ shipping-product: firefox
+ treeherder:
+ platform: linux64-shippable/opt
+ attributes:
+ build_platform: linux64-shippable
+ extra:
+ platform: linux-x86_64
+ firefox-next-macosx64:
+ shipping-product: firefox
+ treeherder:
+ platform: osx-shippable/opt
+ attributes:
+ build_platform: macosx64-shippable
+ extra:
+ platform: mac
+ firefox-next-win32:
+ shipping-product: firefox
+ treeherder:
+ platform: windows2012-32-shippable/opt
+ attributes:
+ build_platform: win32-shippable
+ extra:
+ platform: win32
+ firefox-next-win64:
+ shipping-product: firefox
+ treeherder:
+ platform: windows2012-64-shippable/opt
+ attributes:
+ build_platform: win64-shippable
+ extra:
+ platform: win64
diff --git a/taskcluster/ci/release-update-verify-config/kind.yml b/taskcluster/ci/release-update-verify-config/kind.yml
new file mode 100644
index 0000000000..d4e40cda12
--- /dev/null
+++ b/taskcluster/ci/release-update-verify-config/kind.yml
@@ -0,0 +1,292 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.update_verify_config:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ name: update-verify-config
+ run-on-projects: [] # to make sure this never runs as part of CI
+ shipping-phase: promote
+ worker-type: b-linux-gcp
+ worker:
+ docker-image:
+ in-tree: "update-verify"
+ max-run-time: 3600
+ artifacts:
+ - name: public/build/update-verify.cfg
+ path: /builds/worker/checkouts/gecko/update-verify.cfg
+ type: file
+ run:
+ sparse-profile: mozharness
+ extra:
+ app-name: browser
+ branch-prefix: mozilla
+ archive-prefix:
+ by-release-level:
+ staging: "http://ftp.stage.mozaws.net/pub"
+ production: "https://archive.mozilla.org/pub"
+ previous-archive-prefix:
+ by-release-level:
+ staging: "https://archive.mozilla.org/pub"
+ production: null
+ aus-server:
+ by-release-level:
+ staging: "https://stage.balrog.nonprod.cloudops.mozgcp.net"
+ production: "https://aus5.mozilla.org"
+ override-certs:
+ by-release-level:
+ staging: dep
+ production: null
+ include-version:
+ by-release-type:
+ beta: beta
+ release(-rc)?: nonbeta
+ esr.*: esr
+ default: beta
+ last-watershed:
+ by-release-type:
+ beta: "72.0"
+ release(-rc)?: "72.0.2"
+ esr115: "68.0esr"
+ default: "default"
+
+jobs:
+ firefox-linux:
+ shipping-product: firefox
+ treeherder:
+ symbol: UVC
+ platform: linux32-shippable/opt
+ kind: test
+ tier: 1
+ attributes:
+ build_platform: linux-shippable
+ extra:
+ product: firefox
+ platform: linux-i686
+ updater-platform: linux-x86_64
+ channel:
+ by-release-type:
+ beta: "beta-localtest"
+ release(-rc)?: "release-localtest"
+ esr.*: "esr-localtest"
+ default: "default"
+ mar-channel-id-override:
+ by-release-type:
+ beta: beta
+ default: null
+
+ firefox-linux64:
+ shipping-product: firefox
+ treeherder:
+ symbol: UVC
+ platform: linux64-shippable/opt
+ kind: test
+ tier: 1
+ attributes:
+ build_platform: linux64-shippable
+ extra:
+ product: firefox
+ platform: linux-x86_64
+ updater-platform: linux-x86_64
+ channel:
+ by-release-type:
+ beta: "beta-localtest"
+ release(-rc)?: "release-localtest"
+ esr.*: "esr-localtest"
+ default: "default"
+ mar-channel-id-override:
+ by-release-type:
+ beta: beta
+ default: null
+
+ firefox-macosx64:
+ shipping-product: firefox
+ treeherder:
+ symbol: UVC
+ platform: osx-shippable/opt
+ kind: test
+ tier: 1
+ attributes:
+ build_platform: macosx64-shippable
+ extra:
+ product: firefox
+ platform: mac
+ updater-platform: linux-x86_64
+ channel:
+ by-release-type:
+ beta: "beta-localtest"
+ release(-rc)?: "release-localtest"
+ esr.*: "esr-localtest"
+ default: "default"
+ mar-channel-id-override:
+ by-release-type:
+ beta: beta
+ default: null
+
+ firefox-win32:
+ shipping-product: firefox
+ treeherder:
+ symbol: UVC
+ platform: windows2012-32-shippable/opt
+ kind: test
+ tier: 1
+ attributes:
+ build_platform: win32-shippable
+ extra:
+ product: firefox
+ platform: win32
+ updater-platform: linux-x86_64
+ channel:
+ by-release-type:
+ beta: "beta-localtest"
+ release(-rc)?: "release-localtest"
+ esr.*: "esr-localtest"
+ default: "default"
+ mar-channel-id-override:
+ by-release-type:
+ beta: beta
+ default: null
+
+ firefox-win64:
+ shipping-product: firefox
+ treeherder:
+ symbol: UVC
+ platform: windows2012-64-shippable/opt
+ kind: test
+ tier: 1
+ attributes:
+ build_platform: win64-shippable
+ extra:
+ product: firefox
+ platform: win64
+ updater-platform: linux-x86_64
+ channel:
+ by-release-type:
+ beta: "beta-localtest"
+ release(-rc)?: "release-localtest"
+ esr.*: "esr-localtest"
+ default: "default"
+ mar-channel-id-override:
+ by-release-type:
+ beta: beta
+ default: null
+
+ firefox-win64-aarch64:
+ shipping-product: firefox
+ treeherder:
+ symbol: UVC
+ platform: windows2012-aarch64-shippable/opt
+ kind: test
+ tier: 1
+ attributes:
+ build_platform: win64-aarch64-shippable
+ extra:
+ product: firefox
+ platform: win64-aarch64
+ updater-platform: linux-x86_64
+ channel:
+ by-release-type:
+ beta: "beta-localtest"
+ release(-rc)?: "release-localtest"
+ esr.*: "esr-localtest"
+ default: "default"
+ mar-channel-id-override:
+ by-release-type:
+ beta: beta
+ default: null
+
+ devedition-linux:
+ shipping-product: devedition
+ treeherder:
+ symbol: UVC
+ platform: linux32-devedition/opt
+ kind: test
+ tier: 1
+ attributes:
+ build_platform: linux-devedition
+ extra:
+ product: firefox
+ platform: linux-i686
+ updater-platform: linux-x86_64
+ channel: "aurora-localtest"
+
+ devedition-linux64:
+ shipping-product: devedition
+ treeherder:
+ symbol: UVC
+ platform: linux64-devedition/opt
+ kind: test
+ tier: 1
+ attributes:
+ build_platform: linux64-devedition
+ extra:
+ product: firefox
+ platform: linux-x86_64
+ updater-platform: linux-x86_64
+ channel: "aurora-localtest"
+
+ devedition-macosx64:
+ shipping-product: devedition
+ treeherder:
+ symbol: UVC
+ platform: osx-cross-devedition/opt
+ kind: test
+ tier: 1
+ attributes:
+ build_platform: macosx64-devedition
+ extra:
+ product: firefox
+ platform: mac
+ updater-platform: linux-x86_64
+ channel: "aurora-localtest"
+
+ devedition-win32:
+ shipping-product: devedition
+ treeherder:
+ symbol: UVC
+ platform: windows2012-32-devedition/opt
+ kind: test
+ tier: 1
+ attributes:
+ build_platform: win32-devedition
+ extra:
+ product: firefox
+ platform: win32
+ updater-platform: linux-x86_64
+ channel: "aurora-localtest"
+
+ devedition-win64:
+ shipping-product: devedition
+ treeherder:
+ symbol: UVC
+ platform: windows2012-64-devedition/opt
+ kind: test
+ tier: 1
+ attributes:
+ build_platform: win64-devedition
+ extra:
+ product: firefox
+ platform: win64
+ updater-platform: linux-x86_64
+ channel: "aurora-localtest"
+
+ devedition-win64-aarch64:
+ shipping-product: devedition
+ treeherder:
+ symbol: UVC
+ platform: windows2012-aarch64-devedition/opt
+ kind: test
+ tier: 1
+ attributes:
+ build_platform: win64-aarch64-devedition
+ extra:
+ product: firefox
+ platform: win64-aarch64
+ updater-platform: linux-x86_64
+ channel: "aurora-localtest"
diff --git a/taskcluster/ci/release-update-verify-next/kind.yml b/taskcluster/ci/release-update-verify-next/kind.yml
new file mode 100644
index 0000000000..ad72e9b118
--- /dev/null
+++ b/taskcluster/ci/release-update-verify-next/kind.yml
@@ -0,0 +1,73 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - post-balrog-dummy
+ - post-beetmover-dummy
+ - release-balrog-submit-toplevel
+ - release-update-verify-config-next
+
+transforms:
+ - gecko_taskgraph.transforms.release:run_on_releases
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.update_verify:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ name: update-verify-next
+ run-on-projects: [] # to make sure this never runs as part of CI
+ run-on-releases: [esr115]
+ shipping-phase: promote
+ worker-type: b-linux-gcp
+ worker:
+ artifacts:
+ - name: 'public/build/diff-summary.log'
+ path: '/builds/worker/tools/release/updates/diff-summary.log'
+ type: file
+ docker-image:
+ in-tree: "update-verify"
+ max-run-time: 7200
+ retry-exit-status:
+ - 255
+ env:
+ CHANNEL: "esr-localtest-next"
+ treeherder:
+ symbol: UVnext()
+ kind: test
+ extra:
+ chunks: 12
+
+jobs:
+ firefox-next-linux64:
+ description: linux64 esr-next update verify
+ shipping-product: firefox
+ attributes:
+ build_platform: linux64-shippable
+
+ firefox-next-linux:
+ description: linux esr-next update verify
+ shipping-product: firefox
+ attributes:
+ build_platform: linux-shippable
+
+ firefox-next-win64:
+ description: win64 esr-next update verify
+ shipping-product: firefox
+ attributes:
+ build_platform: win64-shippable
+
+ firefox-next-win32:
+ description: win32 esr-next update verify
+ shipping-product: firefox
+ attributes:
+ build_platform: win32-shippable
+
+ firefox-next-macosx64:
+ description: macosx64 esr-next update verify
+ shipping-product: firefox
+ attributes:
+ build_platform: macosx64-shippable
diff --git a/taskcluster/ci/release-update-verify/kind.yml b/taskcluster/ci/release-update-verify/kind.yml
new file mode 100644
index 0000000000..ec7f9874da
--- /dev/null
+++ b/taskcluster/ci/release-update-verify/kind.yml
@@ -0,0 +1,115 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - post-balrog-dummy
+ - post-beetmover-dummy
+ - release-balrog-submit-toplevel
+ - release-update-verify-config
+
+transforms:
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.update_verify:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ name: update-verify
+ run-on-projects: [] # to make sure this never runs as part of CI
+ shipping-phase: promote
+ worker-type: b-linux-gcp
+ worker:
+ artifacts:
+ - name: 'public/build/diff-summary.log'
+ path: '/builds/worker/checkouts/gecko/diff-summary.log'
+ type: file
+ docker-image:
+ in-tree: "update-verify"
+ max-run-time: 5400
+ retry-exit-status:
+ - 255
+ treeherder:
+ symbol: UV()
+ kind: test
+ extra:
+ chunks: 16
+
+jobs:
+ firefox-linux64:
+ description: linux64 update verify
+ shipping-product: firefox
+ attributes:
+ build_platform: linux64-shippable
+
+ firefox-linux:
+ description: linux update verify
+ shipping-product: firefox
+ attributes:
+ build_platform: linux-shippable
+
+ firefox-win64:
+ description: win64 update verify
+ shipping-product: firefox
+ attributes:
+ build_platform: win64-shippable
+
+ firefox-win64-aarch64:
+ description: win64-aarch64 update verify
+ shipping-product: firefox
+ attributes:
+ build_platform: win64-aarch64-shippable
+
+ firefox-win32:
+ description: win32 update verify
+ shipping-product: firefox
+ attributes:
+ build_platform: win32-shippable
+
+ firefox-macosx64:
+ description: macosx64 update verify
+ shipping-product: firefox
+ attributes:
+ build_platform: macosx64-shippable
+ extra:
+ chunks: 30
+
+ devedition-linux64:
+ description: linux64 update verify
+ shipping-product: devedition
+ attributes:
+ build_platform: linux64-devedition
+
+ devedition-linux:
+ description: linux update verify
+ shipping-product: devedition
+ attributes:
+ build_platform: linux-devedition
+
+ devedition-win64:
+ description: win64 update verify
+ shipping-product: devedition
+ attributes:
+ build_platform: win64-devedition
+
+ devedition-win64-aarch64:
+ description: win64-aarch64 update verify
+ shipping-product: devedition
+ attributes:
+ build_platform: win64-aarch64-devedition
+
+ devedition-win32:
+ description: win32 update verify
+ shipping-product: devedition
+ attributes:
+ build_platform: win32-devedition
+
+ devedition-macosx64:
+ description: macosx64 update verify
+ shipping-product: devedition
+ attributes:
+ build_platform: macosx64-devedition
+ extra:
+ chunks: 30
diff --git a/taskcluster/ci/release-version-bump/kind.yml b/taskcluster/ci/release-version-bump/kind.yml
new file mode 100644
index 0000000000..be1d9cd85f
--- /dev/null
+++ b/taskcluster/ci/release-version-bump/kind.yml
@@ -0,0 +1,59 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.release_deps:transforms
+ - gecko_taskgraph.transforms.release_version_bump:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - release-beetmover-push-to-release
+
+job-defaults:
+ description: Release Promotion version bump/tag
+ run-on-projects: []
+ shipping-phase: ship
+ worker-type: tree
+ worker:
+ implementation: treescript
+ dontbuild: true
+ tags: ['release']
+ bump: true
+ bump-files:
+ by-project:
+ default: ["browser/config/version_display.txt"]
+ mozilla-(release|esr.*):
+ - "browser/config/version.txt"
+ - "browser/config/version_display.txt"
+ - "config/milestone.txt"
+ maple:
+ - "browser/config/version.txt"
+ - "browser/config/version_display.txt"
+ - "config/milestone.txt"
+ push:
+ by-project:
+ mozilla-(beta|release|esr.*): true
+ maple: true
+ default: false
+
+jobs:
+ firefox:
+ name: firefox-version-bump
+ shipping-product: firefox
+ treeherder:
+ platform: firefox-release/opt
+ symbol: Rel(VerBump)
+ tier: 1
+ kind: build
+
+ devedition:
+ name: devedition-version-bump
+ shipping-product: devedition
+ treeherder:
+ platform: devedition-release/opt
+ symbol: Rel(VerBump)
+ tier: 1
+ kind: build
diff --git a/taskcluster/ci/repackage-deb-l10n/kind.yml b/taskcluster/ci/repackage-deb-l10n/kind.yml
new file mode 100644
index 0000000000..f1011faea0
--- /dev/null
+++ b/taskcluster/ci/repackage-deb-l10n/kind.yml
@@ -0,0 +1,39 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.repackage_l10n:transforms
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.repackage:transforms
+ - gecko_taskgraph.transforms.repackage_routes:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - shippable-l10n-signing
+
+only-for-build-platforms:
+ # Langpacks support all CPU architectures. We just need to pick one
+ - linux64-devedition/opt
+ - linux64-shippable/opt
+
+job-template:
+ worker-type: b-linux-gcp
+ worker:
+ docker-image: {"in-tree": "debian11-repackage"}
+ max-run-time: 600
+ mozharness:
+ run-as-root: true
+ use-caches: false
+ config:
+ by-build-platform:
+ linux64\b.*:
+ - repackage/base.py
+ - repackage/linux64_signed.py
+ package-formats:
+ by-build-platform:
+ linux.*: [deb-l10n]
+ treeherder-group: deb-L10n
diff --git a/taskcluster/ci/repackage-deb/kind.yml b/taskcluster/ci/repackage-deb/kind.yml
new file mode 100644
index 0000000000..02955cffdb
--- /dev/null
+++ b/taskcluster/ci/repackage-deb/kind.yml
@@ -0,0 +1,49 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.repackage:transforms
+ - gecko_taskgraph.transforms.repackage_routes:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - build-signing
+ - toolchain
+
+only-for-build-platforms:
+ - linux-shippable/opt
+ - linux-devedition/opt
+ - linux64-shippable/opt
+ - linux64-devedition/opt
+
+only-for-attributes:
+ - nightly
+ - shippable
+
+job-template:
+ shipping-phase: promote
+ worker-type: b-linux-gcp
+ worker:
+ docker-image:
+ in-tree: debian11-repackage
+ mozharness:
+ run-as-root: true
+ use-caches: false
+ config:
+ by-build-platform:
+ linux\b.*:
+ - repackage/base.py
+ - repackage/linux32_signed.py
+ linux64\b.*:
+ - repackage/base.py
+ - repackage/linux64_signed.py
+ treeherder:
+ symbol: Rpk-deb
+ package-formats:
+ by-build-platform:
+ linux.*: [deb]
diff --git a/taskcluster/ci/repackage-l10n/kind.yml b/taskcluster/ci/repackage-l10n/kind.yml
new file mode 100644
index 0000000000..35bda48d85
--- /dev/null
+++ b/taskcluster/ci/repackage-l10n/kind.yml
@@ -0,0 +1,78 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.repackage_set_upstream_mac_kind:transforms
+ - gecko_taskgraph.transforms.repackage_l10n:transforms
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.repackage:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - shippable-l10n-signing
+ - shippable-l10n-mac-signing
+ - shippable-l10n-mac-notarization
+ - toolchain
+
+only-for-build-platforms:
+ - linux-shippable/opt
+ - linux64-shippable/opt
+ - macosx64-shippable/opt
+ - win32-shippable/opt
+ - win64-shippable/opt
+ - win64-aarch64-shippable/opt
+ - linux-devedition/opt
+ - linux64-devedition/opt
+ - macosx64-devedition/opt
+ - win32-devedition/opt
+ - win64-devedition/opt
+ - win64-aarch64-devedition/opt
+
+job-template:
+ upstream-mac-kind:
+ by-build-type:
+ debug: shippable-l10n-mac-signing
+ default:
+ by-project:
+ mozilla-(central|beta|release|esr.*): shippable-l10n-mac-notarization
+ default: shippable-l10n-mac-signing
+ worker-type: b-linux-gcp
+ mozharness:
+ config:
+ by-build-platform:
+ linux-.*:
+ - repackage/base.py
+ - repackage/linux32_signed.py
+ linux64-.*:
+ - repackage/base.py
+ - repackage/linux64_signed.py
+ macosx64-.*:
+ - repackage/base.py
+ - repackage/osx_signed.py
+ win32\b.*:
+ - repackage/base.py
+ - repackage/win32_sfx_stub.py
+ - repackage/win32_signed.py
+ win64(?!-aarch64)\b.*:
+ - repackage/base.py
+ - repackage/win32_sfx_stub.py
+ - repackage/win64_signed.py
+ win64-aarch64\b.*:
+ - repackage/base.py
+ - repackage/win64-aarch64_sfx_stub.py
+ - repackage/win64_signed.py
+ package-formats:
+ by-build-platform:
+ linux.*: [mar]
+ macosx64\b.*: [mar, dmg, pkg]
+ win32\b.*: [mar, installer]
+ win64\b.*: [mar, installer]
+ fetches:
+ toolchain:
+ - linux64-mar-tools
+ - linux64-upx
+ treeherder-group: L10n-Rpk
diff --git a/taskcluster/ci/repackage-msi/kind.yml b/taskcluster/ci/repackage-msi/kind.yml
new file mode 100644
index 0000000000..0a43b0762b
--- /dev/null
+++ b/taskcluster/ci/repackage-msi/kind.yml
@@ -0,0 +1,45 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.repackage:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - repackage-signing
+ - repackage-signing-l10n
+ - fetch
+
+only-for-build-platforms:
+ - win32-shippable/opt
+ - win64-shippable/opt
+ - win32-devedition/opt
+ - win64-devedition/opt
+
+job-template:
+ worker-type: 'b-win2012'
+ mozharness:
+ use-magic-mh-args: false
+ config:
+ by-build-platform:
+ win32\b.*:
+ - repackage/base.py
+ - repackage/win32_sfx_stub.py
+ - repackage/win32_signed.py
+ win64(?!-aarch64)\b.*:
+ - repackage/base.py
+ - repackage/win32_sfx_stub.py
+ - repackage/win64_signed.py
+ win64-aarch64\b.*:
+ - repackage/base.py
+ - repackage/win64-aarch64_sfx_stub.py
+ - repackage/win64_signed.py
+ package-formats: [msi]
+ fetches:
+ fetch:
+ - wix-3.14.0
diff --git a/taskcluster/ci/repackage-msix/kind.yml b/taskcluster/ci/repackage-msix/kind.yml
new file mode 100644
index 0000000000..3beb75e292
--- /dev/null
+++ b/taskcluster/ci/repackage-msix/kind.yml
@@ -0,0 +1,105 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.repackage:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ # We're going to generate tasks based on this. We `depend` on and fetch the package from this.
+ - build-signing
+ - toolchain
+
+group-by: platform
+
+only-for-build-platforms:
+ - win32/opt
+ - win64/opt
+ - win64/debug
+ - win32-shippable/opt
+ - win64-shippable/opt
+ - win32-devedition/opt
+ - win64-devedition/opt
+
+job-template:
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 2700
+ # This is for fast try iteration; `repackage-shippable-l10n-msix` is the "real one".
+ run-on-projects: []
+ mozharness:
+ config:
+ by-build-platform:
+ win32\b.*:
+ - repackage/base.py
+ - repackage/win32_sfx_stub.py
+ - repackage/win32_signed.py
+ win64(?!-aarch64)\b.*:
+ - repackage/base.py
+ - repackage/win32_sfx_stub.py
+ - repackage/win64_signed.py
+ win64-aarch64\b.*:
+ - repackage/base.py
+ - repackage/win64-aarch64_sfx_stub.py
+ - repackage/win64_signed.py
+ package-formats: [msix, msix-store]
+ fetches:
+ toolchain:
+ - linux64-msix-packaging
+ msix:
+ vendor: Mozilla
+ channel:
+ by-shipping-product:
+ devedition: aurora
+ default:
+ by-release-type:
+ beta.*: beta
+ release.*: official
+ esr.*: official
+ default: nightly
+ identity-name:
+ by-shipping-product:
+ devedition:
+ by-package-format:
+ msix: MozillaFirefoxDevedition
+ msix-store: FirefoxDevedition
+ default:
+ by-package-format:
+ msix:
+ by-release-type:
+ beta.*: MozillaFirefoxBeta
+ release.*: MozillaFirefox
+ esr.*: MozillaFirefox
+ default: MozillaFirefoxNightly
+ msix-store:
+ by-release-type:
+ beta.*: FirefoxBeta
+ release.*: Firefox
+ esr.*: Firefox
+ default: FirefoxNightly
+ publisher:
+ by-package-format:
+ msix-store: "CN=082E9164-EE6C-4EC8-B62C-441FAE7BEFA1"
+ msix:
+ by-level:
+ "1": "CN=Mozilla Fake SPC"
+ "2": "CN=Mozilla Fake SPC"
+ default:
+ # This value needs to line up with the signing certificate
+ # we're going to sign with. We only sign potential release
+ # or nightly builds with proper certificates, so even on
+ # level 3 repositories, some build types are expected to
+ # be signed with our fake certificate.
+ by-build-platform:
+ .*-shippable: "CN=Mozilla Corporation, OU=Firefox Engineering Operations, O=Mozilla Corporation, L=Mountain View, S=California, C=US"
+ .*-devedition: "CN=Mozilla Corporation, OU=Firefox Engineering Operations, O=Mozilla Corporation, L=Mountain View, S=California, C=US"
+ default: "CN=Mozilla Fake SPC"
+ publisher-display-name:
+ by-package-format:
+ msix: "Mozilla Corporation"
+ msix-store: "Mozilla"
diff --git a/taskcluster/ci/repackage-shippable-l10n-msix/kind.yml b/taskcluster/ci/repackage-shippable-l10n-msix/kind.yml
new file mode 100644
index 0000000000..cc4936f8ec
--- /dev/null
+++ b/taskcluster/ci/repackage-shippable-l10n-msix/kind.yml
@@ -0,0 +1,106 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.repackage:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ # We're going to generate tasks based on this. We `depend` on and fetch the package from this.
+ - build-signing
+ # We're not going to generate tasks based on these. But we are going to `depend` on and fetch
+ # langpacks from these.
+ - shippable-l10n-signing
+ - toolchain
+
+not-for-kind-dependencies:
+ - shippable-l10n-signing
+
+group-by: platform
+
+only-for-build-platforms:
+ - win32-shippable/opt
+ - win64-shippable/opt
+ - win32-devedition/opt
+ - win64-devedition/opt
+
+job-template:
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 2700
+ mozharness:
+ config:
+ by-build-platform:
+ win32\b.*:
+ - repackage/base.py
+ - repackage/win32_sfx_stub.py
+ - repackage/win32_signed.py
+ win64(?!-aarch64)\b.*:
+ - repackage/base.py
+ - repackage/win32_sfx_stub.py
+ - repackage/win64_signed.py
+ win64-aarch64\b.*:
+ - repackage/base.py
+ - repackage/win64-aarch64_sfx_stub.py
+ - repackage/win64_signed.py
+ package-formats: [msix, msix-store]
+ fetches:
+ toolchain:
+ - linux64-msix-packaging
+ msix:
+ vendor: Mozilla
+ channel:
+ by-shipping-product:
+ devedition: aurora
+ default:
+ by-release-type:
+ beta.*: beta
+ release.*: official
+ esr.*: official
+ default: nightly
+ identity-name:
+ by-shipping-product:
+ devedition:
+ by-package-format:
+ msix: MozillaFirefoxDevedition
+ msix-store: FirefoxDevedition
+ default:
+ by-package-format:
+ msix:
+ by-release-type:
+ beta.*: MozillaFirefoxBeta
+ release.*: MozillaFirefox
+ esr.*: MozillaFirefox
+ default: MozillaFirefoxNightly
+ msix-store:
+ by-release-type:
+ beta.*: FirefoxBeta
+ release.*: Firefox
+ esr.*: Firefox
+ default: FirefoxNightly
+ publisher:
+ by-package-format:
+ msix-store: "CN=082E9164-EE6C-4EC8-B62C-441FAE7BEFA1"
+ msix:
+ by-level:
+ "1": "CN=Mozilla Fake SPC"
+ "2": "CN=Mozilla Fake SPC"
+ default:
+ # This value needs to line up with the signing certificate
+ # we're going to sign with. We only sign potential release
+ # or nightly builds with proper certificates, so even on
+ # level 3 repositories, some build types are expected to
+ # be signed with our fake certificate.
+ by-build-platform:
+ .*-shippable: "CN=Mozilla Corporation, OU=Firefox Engineering Operations, O=Mozilla Corporation, L=Mountain View, S=California, C=US"
+ .*-devedition: "CN=Mozilla Corporation, OU=Firefox Engineering Operations, O=Mozilla Corporation, L=Mountain View, S=California, C=US"
+ default: "CN=Mozilla Fake SPC"
+ publisher-display-name:
+ by-package-format:
+ msix: "Mozilla Corporation"
+ msix-store: "Mozilla"
diff --git a/taskcluster/ci/repackage-signing-l10n/kind.yml b/taskcluster/ci/repackage-signing-l10n/kind.yml
new file mode 100644
index 0000000000..a80d79fa51
--- /dev/null
+++ b/taskcluster/ci/repackage-signing-l10n/kind.yml
@@ -0,0 +1,25 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.repackage_signing:transforms
+ - gecko_taskgraph.transforms.repackage_routes:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - repackage-l10n
+
+only-for-build-platforms:
+ - win32-shippable/opt
+ - win32-devedition/opt
+ - win32/opt
+ - win64-shippable/opt
+ - win64-devedition/opt
+ - win64/opt
+ - win64-aarch64-shippable/opt
+ - win64-aarch64-devedition/opt
+ - win64-asan-reporter-shippable/opt
diff --git a/taskcluster/ci/repackage-signing-msi/kind.yml b/taskcluster/ci/repackage-signing-msi/kind.yml
new file mode 100644
index 0000000000..149c54e8c2
--- /dev/null
+++ b/taskcluster/ci/repackage-signing-msi/kind.yml
@@ -0,0 +1,21 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.repackage_signing:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - repackage-msi
+
+only-for-build-platforms:
+ - win32-shippable/opt
+ - win32-devedition/opt
+ - win32/opt
+ - win64-shippable/opt
+ - win64-devedition/opt
+ - win64/opt
diff --git a/taskcluster/ci/repackage-signing-msix/kind.yml b/taskcluster/ci/repackage-signing-msix/kind.yml
new file mode 100644
index 0000000000..38604e8375
--- /dev/null
+++ b/taskcluster/ci/repackage-signing-msix/kind.yml
@@ -0,0 +1,13 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.repackage_signing:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - repackage-msix
diff --git a/taskcluster/ci/repackage-signing-shippable-l10n-msix/kind.yml b/taskcluster/ci/repackage-signing-shippable-l10n-msix/kind.yml
new file mode 100644
index 0000000000..e4e1fd841f
--- /dev/null
+++ b/taskcluster/ci/repackage-signing-shippable-l10n-msix/kind.yml
@@ -0,0 +1,13 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.repackage_signing:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - repackage-shippable-l10n-msix
diff --git a/taskcluster/ci/repackage-signing/kind.yml b/taskcluster/ci/repackage-signing/kind.yml
new file mode 100644
index 0000000000..239f3fdc11
--- /dev/null
+++ b/taskcluster/ci/repackage-signing/kind.yml
@@ -0,0 +1,23 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.repackage_signing:transforms
+ - gecko_taskgraph.transforms.repackage_routes:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - repackage
+
+only-for-build-platforms:
+ - win32-devedition/opt
+ - win32-shippable/opt
+ - win64-devedition/opt
+ - win64-shippable/opt
+ - win64-aarch64-shippable/opt
+ - win64-aarch64-devedition/opt
+ - win64-asan-reporter-shippable/opt
diff --git a/taskcluster/ci/repackage/kind.yml b/taskcluster/ci/repackage/kind.yml
new file mode 100644
index 0000000000..a7feed7fdb
--- /dev/null
+++ b/taskcluster/ci/repackage/kind.yml
@@ -0,0 +1,90 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.repackage_set_upstream_mac_kind:transforms
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.repackage:transforms
+ - gecko_taskgraph.transforms.repackage_routes:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - build-signing
+ - build-mac-signing
+ - build-mac-notarization
+ - toolchain
+
+only-for-build-platforms:
+ - linux-shippable/opt
+ - linux-devedition/opt
+ - linux/opt
+ - linux64-shippable/opt
+ - linux64-devedition/opt
+ - linux64-asan-reporter-shippable/opt
+ - linux64/opt
+ - macosx64-shippable/opt
+ - macosx64-devedition/opt
+ - macosx64/opt
+ - macosx64/debug
+ - win32-shippable/opt
+ - win32-devedition/opt
+ - win32/opt
+ - win64-shippable/opt
+ - win64-devedition/opt
+ - win64-aarch64-shippable/opt
+ - win64-aarch64-devedition/opt
+ - win64/opt
+ - win64-asan-reporter-shippable/opt
+
+job-template:
+ upstream-mac-kind:
+ by-build-type:
+ debug: build-mac-signing
+ default:
+ by-project:
+ mozilla-(central|beta|release|esr.*): build-mac-notarization
+ default: build-mac-signing
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time:
+ by-build-platform:
+ .*asan.*: 2700
+ default: 900
+ mozharness:
+ config:
+ by-build-platform:
+ linux\b.*:
+ - repackage/base.py
+ - repackage/linux32_signed.py
+ linux64\b.*:
+ - repackage/base.py
+ - repackage/linux64_signed.py
+ macosx64\b.*:
+ - repackage/base.py
+ - repackage/osx_signed.py
+ win32\b.*:
+ - repackage/base.py
+ - repackage/win32_sfx_stub.py
+ - repackage/win32_signed.py
+ win64(?!-aarch64)\b.*:
+ - repackage/base.py
+ - repackage/win32_sfx_stub.py
+ - repackage/win64_signed.py
+ win64-aarch64\b.*:
+ - repackage/base.py
+ - repackage/win64-aarch64_sfx_stub.py
+ - repackage/win64_signed.py
+ package-formats:
+ by-build-platform:
+ linux.*: [mar]
+ macosx64\b.*: [mar, dmg, pkg]
+ win32\b.*: [mar, installer]
+ win64\b.*: [mar, installer]
+ fetches:
+ toolchain:
+ - linux64-mar-tools
+ - linux64-upx
diff --git a/taskcluster/ci/repo-update/kind.yml b/taskcluster/ci/repo-update/kind.yml
new file mode 100644
index 0000000000..4c14c1ea42
--- /dev/null
+++ b/taskcluster/ci/repo-update/kind.yml
@@ -0,0 +1,70 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.repo_update:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+
+job-defaults:
+ worker:
+ env:
+ DO_HSTS:
+ by-project:
+ mozilla-(central|beta|esr.*): "1"
+ default: ""
+ DO_HPKP:
+ by-project:
+ mozilla-(central|beta|esr.*): "1"
+ default: ""
+ DO_REMOTE_SETTINGS:
+ by-project:
+ mozilla-(central|beta|release|esr.*): "1"
+ default: ""
+ DO_SUFFIX_LIST:
+ by-project:
+ mozilla-(central|beta|esr.*): "1"
+ default: ""
+ USE_MOZILLA_CENTRAL:
+ by-project:
+ mozilla-central: "1"
+ default: ""
+
+
+jobs:
+ hsts-hpkp-blocklist:
+ name: periodic_file_update
+ description: HSTS, HPKP and remote settings update
+ run-on-projects: [] # Only run via cron
+ treeherder:
+ kind: build
+ platform: linux64/opt
+ symbol: pfu
+ tier: 1
+ worker-type: b-linux-xlarge-gcp
+ worker:
+ implementation: docker-worker
+ os: linux
+ docker-image: {in-tree: periodic-updates}
+ max-run-time: 14400 # Takes up to 4 hours
+ env:
+ PRODUCT: firefox
+ REVIEWERS: "#release-managers"
+ command:
+ - /runme.sh
+ taskcluster-proxy: true
+ artifacts:
+ - name: 'public/build/nsSTSPreloadList.diff'
+ path: '/home/worker/artifacts/nsSTSPreloadList.diff'
+ type: file
+ - name: 'public/build/StaticHPKPins.h.diff'
+ path: '/home/worker/artifacts/StaticHPKPins.h.diff'
+ type: file
+ - name: 'public/build/remote-settings.diff'
+ path: '/home/worker/artifacts/remote-settings.diff'
+ type: file
+ scopes:
+ - secrets:get:project/releng/gecko/build/level-{level}/arc-phabricator-token
diff --git a/taskcluster/ci/scriptworker-canary/kind.yml b/taskcluster/ci/scriptworker-canary/kind.yml
new file mode 100644
index 0000000000..a1ee225b89
--- /dev/null
+++ b/taskcluster/ci/scriptworker-canary/kind.yml
@@ -0,0 +1,33 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.scriptworker_canary:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ treeherder:
+ platform: firefox-release/opt
+ tier: 1
+ kind: build
+ worker-type: b-linux-gcp
+ worker:
+ docker-image: {in-tree: push-to-try}
+ max-run-time: 1800
+ env:
+ MOZBUILD_STATE_PATH: /builds/worker/workspace
+ run:
+ sparse-profile: push-to-try
+
+jobs:
+ push:
+ description: Push scriptworker canary tasks.
+ treeherder:
+ symbol: Rel(push-scriptworker-canary)
+ run-on-projects: [mozilla-central]
+ addresses: ['release+scriptworker-canary@mozilla.com']
+ ssh-key-secret: project/releng/scriptworker/scriptworker-canary-sshkey
diff --git a/taskcluster/ci/searchfox/kind.yml b/taskcluster/ci/searchfox/kind.yml
new file mode 100644
index 0000000000..0cc84b8716
--- /dev/null
+++ b/taskcluster/ci/searchfox/kind.yml
@@ -0,0 +1,184 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - toolchain
+ - fetch
+
+transforms:
+ - gecko_taskgraph.transforms.build:transforms
+ - gecko_taskgraph.transforms.build_attrs:transforms
+ - gecko_taskgraph.transforms.build_lints:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ index:
+ product: firefox
+ treeherder:
+ symbol: Searchfox(idx)
+ kind: build
+ tier: 2
+ run-on-projects: ['mozilla-central']
+ optimization: null
+ use-system-python: false
+
+jobs:
+ linux64-searchfox/debug:
+ description: "Linux64 Debug Searchfox"
+ index:
+ job-name: linux64-searchfox-debug
+ treeherder:
+ platform: linux64/debug
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 10800
+ env:
+ PERFHERDER_EXTRA_OPTIONS: searchfox
+ MOZSEARCH_PLATFORM: "linux"
+ run:
+ using: mozharness
+ actions: [build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_sub_linux_configs/64_searchfox_and_debug.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ tooltool-downloads: public
+ keep-artifacts: false
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-nasm
+ - linux64-node
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+ macosx64-searchfox/debug:
+ description: "MacOS X x64 Debug Cross-compile Searchfox"
+ index:
+ job-name: macosx64-searchfox-debug
+ treeherder:
+ platform: osx-cross/debug
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 10800
+ env:
+ PERFHERDER_EXTRA_OPTIONS: searchfox
+ MOZSEARCH_PLATFORM: "macosx"
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_mac_64_cross_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ custom-build-variant-cfg: cross-debug-searchfox
+ secrets: true
+ keep-artifacts: false
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - linux64-clang
+ - linux64-hfsplus
+ - linux64-libdmg
+ - linux64-nasm
+ - linux64-node
+ - linux64-rust-cross-beta
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - macosx64-sdk
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+ win64-searchfox/debug:
+ description: "Win64 Searchfox Debug (clang-cl)"
+ index:
+ job-name: win64-searchfox-debug
+ treeherder:
+ platform: windows2012-64/debug
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 10800
+ env:
+ PERFHERDER_EXTRA_OPTIONS: searchfox
+ MOZSEARCH_PLATFORM: "windows"
+ run:
+ using: mozharness
+ options: [append-env-variables-from-configs]
+ actions: [get-secrets, build]
+ script: mozharness/scripts/fx_desktop_build.py
+ secrets: true
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ - builds/taskcluster_sub_win64/searchfox_debug.py
+ extra-config:
+ mozconfig_platform: win64
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust-cross-beta
+ - linux64-rust-size
+ - linux64-nasm
+ - linux64-node
+ - linux64-cbindgen
+ - linux64-sccache
+ - linux64-dump_syms
+ - linux64-wine
+ - linux64-winchecksec
+ - nsis
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ - vs
+ fetch:
+ - upx-3.95-win
+
+ android-armv7-searchfox/debug:
+ description: "Android ARMv7 Debug Searchfox"
+ index:
+ job-name: android-armv7-searchfox-debug
+ treeherder:
+ platform: android-4-1-armv7/debug
+ worker-type: b-linux-gcp
+ worker:
+ docker-image: {in-tree: android-build}
+ max-run-time: 10800
+ env:
+ PERFHERDER_EXTRA_OPTIONS: searchfox
+ MOZSEARCH_PLATFORM: "android-armv7"
+ GRADLE_USER_HOME: "/builds/worker/checkouts/gecko/mobile/android/gradle/dotgradle-offline"
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest"
+ run:
+ using: mozharness
+ actions: [get-secrets, build]
+ config:
+ - builds/releng_base_android_64_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: arm-debug-searchfox
+ tooltool-downloads: internal
+ use-sccache: true
+ fetches:
+ toolchain:
+ - android-gradle-dependencies
+ - android-ndk-linux
+ - android-sdk-linux
+ - linux64-jdk
+ - linux64-clang
+ - linux64-rust-cross-beta
+ - linux64-rust-size
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-sccache
+ - linux64-nasm
+ - linux64-node
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
diff --git a/taskcluster/ci/sentry/kind.yml b/taskcluster/ci/sentry/kind.yml
new file mode 100644
index 0000000000..bfc3cf07a2
--- /dev/null
+++ b/taskcluster/ci/sentry/kind.yml
@@ -0,0 +1,34 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.sentry:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+jobs:
+ mach-release:
+ description: Inform Sentry of new revisions (aka Mach releases)
+ worker-type: b-linux-gcp
+ worker:
+ taskcluster-proxy: true
+ max-run-time: 3600
+ docker-image: {in-tree: sentry}
+ env:
+ HG_PUSHLOG_URL: "{head_repository}/json-pushes?version=2&changeset={head_rev}"
+ SENTRY_SECRET: "project/engwf/gecko/{level}/tokens"
+ scopes:
+ - "secrets:get:project/engwf/gecko/{level}/tokens"
+ run:
+ using: run-task
+ checkout: false
+ command: /bin/bash /usr/bin/submit_sentry_release.sh
+ run-on-projects: ['mozilla-central']
+ treeherder:
+ symbol: Sentry(mach-release)
+ platform: other/opt
+ tier: 2
+ kind: other
diff --git a/taskcluster/ci/shippable-l10n-mac-notarization/kind.yml b/taskcluster/ci/shippable-l10n-mac-notarization/kind.yml
new file mode 100644
index 0000000000..7b9ac8912a
--- /dev/null
+++ b/taskcluster/ci/shippable-l10n-mac-notarization/kind.yml
@@ -0,0 +1,26 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.multi_dep:loader
+
+group-by: chunk-locales
+
+transforms:
+ - gecko_taskgraph.transforms.mac_notarization:transforms
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.upstream_artifact_task:transforms
+ - gecko_taskgraph.transforms.shippable_l10n_signing:transforms
+ - gecko_taskgraph.transforms.signing:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - shippable-l10n-mac-signing
+
+only-for-attributes:
+ - shippable
+
+job-template:
+ max-run-time: 1800
+ treeherder:
+ symbol: BMN
diff --git a/taskcluster/ci/shippable-l10n-mac-signing/kind.yml b/taskcluster/ci/shippable-l10n-mac-signing/kind.yml
new file mode 100644
index 0000000000..19619121c6
--- /dev/null
+++ b/taskcluster/ci/shippable-l10n-mac-signing/kind.yml
@@ -0,0 +1,28 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.multi_dep:loader
+
+group-by: chunk-locales
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.shippable_l10n_signing:transforms
+ - gecko_taskgraph.transforms.signing:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - shippable-l10n
+
+only-for-build-platforms:
+ - macosx64-shippable/opt
+ - macosx64-devedition/opt
+ - macosx64/opt
+ - macosx64/debug
+
+job-template:
+ treeherder:
+ symbol: BMS
+ attributes:
+ shipping_phase: promote
diff --git a/taskcluster/ci/shippable-l10n-signing/kind.yml b/taskcluster/ci/shippable-l10n-signing/kind.yml
new file mode 100644
index 0000000000..9497873270
--- /dev/null
+++ b/taskcluster/ci/shippable-l10n-signing/kind.yml
@@ -0,0 +1,30 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.multi_dep:loader
+
+group-by: chunk-locales
+
+transforms:
+ - gecko_taskgraph.transforms.name_sanity:transforms
+ - gecko_taskgraph.transforms.upstream_artifact_task:transforms
+ - gecko_taskgraph.transforms.shippable_l10n_signing:transforms
+ - gecko_taskgraph.transforms.signing:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - shippable-l10n
+
+primary-dependency:
+ - shippable-l10n
+
+only-for-attributes:
+ - shippable
+ - nightly
+
+not-for-build-platforms:
+ - macosx64-shippable/opt
+ - macosx64-devedition/opt
+ - macosx64/opt
+ - macosx64/debug
diff --git a/taskcluster/ci/shippable-l10n/kind.yml b/taskcluster/ci/shippable-l10n/kind.yml
new file mode 100644
index 0000000000..24e53cf98b
--- /dev/null
+++ b/taskcluster/ci/shippable-l10n/kind.yml
@@ -0,0 +1,199 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.multi_dep:loader
+
+group-by: platform
+
+transforms:
+ - gecko_taskgraph.transforms.l10n:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - build
+ - build-signing
+ - fetch
+ - repackage
+ - toolchain
+
+primary-dependency: build
+
+only-for-build-platforms:
+ - linux64-shippable/opt
+ - linux-shippable/opt
+ - macosx64-shippable/opt
+ - win32-shippable/opt
+ - win64-shippable/opt
+ - win64-aarch64-shippable/opt
+ - linux64-devedition/opt
+ - linux-devedition/opt
+ - macosx64-devedition/opt
+ - win32-devedition/opt
+ - win64-devedition/opt
+ - win64-aarch64-devedition/opt
+
+job-template:
+ description: Localization
+ locales-file: browser/locales/l10n-changesets.json
+ locales-per-chunk: 5
+ run-on-projects: ['release']
+ attributes:
+ shipping_phase: promote
+ ignore-locales:
+ by-build-platform:
+ # OSX has a special locale for japanese
+ macosx64.*: [ja]
+ default: [ja-JP-mac]
+ run-time: 1800
+ fetches:
+ toolchain:
+ by-build-platform:
+ default: []
+ macosx64.*:
+ - linux64-libdmg
+ - linux64-hfsplus
+ win.*:
+ - linux64-wine
+ - nsis
+ fetch:
+ by-build-platform:
+ default: []
+ win.*:
+ - upx-3.95-win
+ tooltool:
+ by-build-platform:
+ default: internal
+ linux.*: public
+ index:
+ type: shippable-l10n
+ product:
+ by-build-platform:
+ default: firefox
+ .*-devedition: devedition
+ job-name:
+ by-build-platform:
+ linux-shippable: linux-opt
+ linux64-shippable: linux64-opt
+ macosx64-shippable: macosx64-opt
+ win32-shippable: win32-opt
+ win64-shippable: win64-opt
+ win64-aarch64-shippable: win64-aarch64-opt
+ linux-devedition: linux-devedition-opt
+ linux64-devedition: linux64-devedition-opt
+ macosx64-devedition: macosx64-devedition-opt
+ win32-devedition: win32-devedition-opt
+ win64-devedition: win64-devedition-opt
+ win64-aarch64-devedition: win64-aarch64-devedition-opt
+ worker-type: b-linux-gcp
+ treeherder:
+ symbol: L10n(B)
+ tier: 1
+ platform:
+ by-build-platform:
+ linux64-shippable: linux64-shippable/opt
+ linux-shippable: linux32-shippable/opt
+ macosx64-shippable: osx-shippable/opt
+ win32-shippable: windows2012-32-shippable/opt
+ win64-shippable: windows2012-64-shippable/opt
+ win64-aarch64-shippable: windows2012-aarch64-shippable/opt
+ linux64-devedition: linux64-devedition/opt
+ linux-devedition: linux32-devedition/opt
+ macosx64-devedition: osx-cross-devedition/opt
+ win32-devedition: windows2012-32-devedition/opt
+ win64-devedition: windows2012-64-devedition/opt
+ win64-aarch64-devedition: windows2012-aarch64-devedition/opt
+ env:
+ by-build-platform:
+ linux.*: # linux64 and 32 get same treatment here
+ EN_US_PACKAGE_NAME: target.tar.bz2
+ EN_US_BINARY_URL:
+ artifact-reference: <build-signing/{artifact_prefix}>
+ macosx64.*:
+ EN_US_PACKAGE_NAME: target.dmg
+ EN_US_BINARY_URL:
+ artifact-reference: <repackage/{artifact_prefix}>
+ win.*:
+ EN_US_PACKAGE_NAME: target.zip
+ EN_US_BINARY_URL:
+ artifact-reference: <build-signing/{artifact_prefix}>
+ mozharness:
+ config:
+ by-build-platform:
+ linux-shippable:
+ - single_locale/firefox.py
+ - single_locale/linux32.py
+ - single_locale/tc_common.py
+ - single_locale/tc_linux_common.py
+ - taskcluster_nightly.py
+ linux64-shippable:
+ - single_locale/firefox.py
+ - single_locale/linux64.py
+ - single_locale/tc_common.py
+ - single_locale/tc_linux_common.py
+ - taskcluster_nightly.py
+ macosx64-shippable:
+ - single_locale/firefox.py
+ - single_locale/macosx64.py
+ - single_locale/tc_common.py
+ - single_locale/tc_macosx64.py
+ - taskcluster_nightly.py
+ win32-shippable:
+ - single_locale/firefox.py
+ - single_locale/win32.py
+ - single_locale/tc_common.py
+ - single_locale/tc_win32.py
+ - taskcluster_nightly.py
+ win64-shippable:
+ - single_locale/firefox.py
+ - single_locale/win64.py
+ - single_locale/tc_common.py
+ - single_locale/tc_win64.py
+ - taskcluster_nightly.py
+ win64-aarch64-shippable:
+ - single_locale/firefox.py
+ - single_locale/win64-aarch64.py
+ - single_locale/tc_common.py
+ - single_locale/tc_win64.py
+ - taskcluster_nightly.py
+ linux-devedition:
+ - single_locale/devedition.py
+ - single_locale/linux32.py
+ - single_locale/tc_common.py
+ - single_locale/tc_linux_common.py
+ - taskcluster_nightly.py
+ linux64-devedition:
+ - single_locale/devedition.py
+ - single_locale/linux64.py
+ - single_locale/tc_common.py
+ - single_locale/tc_linux_common.py
+ - taskcluster_nightly.py
+ macosx64-devedition:
+ - single_locale/devedition.py
+ - single_locale/macosx64.py
+ - single_locale/tc_common.py
+ - single_locale/tc_macosx64.py
+ - taskcluster_nightly.py
+ win32-devedition:
+ - single_locale/devedition.py
+ - single_locale/win32.py
+ - single_locale/tc_common.py
+ - single_locale/tc_win32.py
+ - taskcluster_nightly.py
+ win64-devedition:
+ - single_locale/devedition.py
+ - single_locale/win64.py
+ - single_locale/tc_common.py
+ - single_locale/tc_win64.py
+ - taskcluster_nightly.py
+ win64-aarch64-devedition:
+ - single_locale/devedition.py
+ - single_locale/win64-aarch64.py
+ - single_locale/tc_common.py
+ - single_locale/tc_win64.py
+ - taskcluster_nightly.py
+ # no default, so we fail on new entries
+ actions: ['clone-locales', 'list-locales', 'setup', 'repack',
+ 'summary']
+ script: mozharness/scripts/desktop_l10n.py
diff --git a/taskcluster/ci/source-test/clang.yml b/taskcluster/ci/source-test/clang.yml
new file mode 100644
index 0000000000..f513ec8dc0
--- /dev/null
+++ b/taskcluster/ci/source-test/clang.yml
@@ -0,0 +1,116 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ # Run only on try and code-review tasks
+ # to avoid running clang tools on the whole codebase
+ run-on-projects: []
+ platform: linux64/debug
+ worker-type: t-linux-xlarge-source
+ attributes:
+ code-review: true
+ worker:
+ docker-image: {in-tree: static-analysis-build}
+ max-run-time: 5400
+ treeherder:
+ kind: other
+ tier: 2
+ run:
+ using: run-task
+ tooltool-downloads: public
+ fetches:
+ toolchain:
+ - linux64-cbindgen
+ - linux64-nasm
+ - linux64-node
+ when:
+ files-changed:
+ - '**/*.c'
+ - '**/*.cpp'
+ - '**/*.cc'
+ - '**/*.cxx'
+ - '**/*.m'
+ - '**/*.mm'
+
+tidy:
+ description: Run static-analysis (clang-tidy) on C/C++ patches
+ treeherder:
+ symbol: cpp(clang-tidy)
+ run:
+ cwd: '{checkout}'
+ command: >-
+ source taskcluster/scripts/misc/source-test-clang-setup.sh &&
+ ./mach --log-no-times static-analysis check --outgoing --output $HOME/clang-tidy.json --format json
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-clang-tidy
+ - linux64-rust
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ worker:
+ artifacts:
+ - type: file
+ name: public/code-review/clang-tidy.json
+ path: /builds/worker/clang-tidy.json
+
+format:
+ description: Run clang-format on C/C++ patches
+ treeherder:
+ symbol: cpp(clang-format)
+ run:
+ cwd: '{checkout}'
+ command: >-
+ source taskcluster/scripts/misc/source-test-clang-setup.sh &&
+ ./mach --log-no-times clang-format --outgoing --output $HOME/clang-format.json --format json &&
+ ./mach --log-no-times clang-format --outgoing --output $HOME/clang-format.diff --format diff
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-clang-tidy
+ - linux64-rust
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ when:
+ files-changed:
+ - '**/*.c'
+ - '**/*.cpp'
+ - '**/*.cc'
+ - '**/*.cxx'
+ - '**/*.m'
+ - '**/*.mm'
+ - '**/*.h'
+ - '**/*.hh'
+ - '**/*.hpp'
+ - '**/*.hxx'
+ worker:
+ artifacts:
+ - type: file
+ name: public/code-review/clang-format.json
+ path: /builds/worker/clang-format.json
+ - type: file
+ name: public/code-review/clang-format.diff
+ path: /builds/worker/clang-format.diff
+
+external:
+ description: Run static-analysis (clang-tidy) on C/C++ patches with external checks
+ treeherder:
+ symbol: cpp(clang-tidy-external)
+ run:
+ cwd: '{checkout}'
+ command: >-
+ source taskcluster/scripts/misc/source-test-clang-setup.sh &&
+ ./mach --log-no-times static-analysis check --checks="-*,mozilla-civet-*" --outgoing --output $HOME/clang-tidy.json --format json
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-clang-tidy-external
+ - linux64-rust
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ worker:
+ artifacts:
+ - type: file
+ name: public/code-review/clang-tidy.json
+ path: /builds/worker/clang-tidy.json
diff --git a/taskcluster/ci/source-test/cram.yml b/taskcluster/ci/source-test/cram.yml
new file mode 100644
index 0000000000..6e29e7c6a6
--- /dev/null
+++ b/taskcluster/ci/source-test/cram.yml
@@ -0,0 +1,21 @@
+---
+tryselect:
+ description: tools/tryselect integration tests
+ platform: linux1804-64/opt
+ treeherder:
+ symbol: cram(try)
+ kind: test
+ tier: 2
+ worker-type: t-linux-xlarge-source
+ worker:
+ docker-image: {in-tree: "lint"}
+ max-run-time: 1800
+ run:
+ using: mach
+ mach: cramtest tools/tryselect
+ always-target: true
+ when:
+ files-changed:
+ - testing/mach_commands.py
+ - third_party/python/cram/**
+ - tools/tryselect/**
diff --git a/taskcluster/ci/source-test/doc.yml b/taskcluster/ci/source-test/doc.yml
new file mode 100644
index 0000000000..a3529aaf9e
--- /dev/null
+++ b/taskcluster/ci/source-test/doc.yml
@@ -0,0 +1,72 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+generate:
+ description: Generate the Sphinx documentation
+ platform: doc/opt
+ treeherder:
+ symbol: doc(generate)
+ kind: test
+ tier: 1
+ run-on-projects: ['trunk']
+ worker-type: t-linux-xlarge-source
+ worker:
+ docker-image: {in-tree: "lint"}
+ max-run-time: 1800
+ artifacts:
+ - type: file
+ name: public/docs.tar.gz
+ path: /builds/worker/checkouts/gecko/docs-out/main.tar.gz
+ - type: file
+ name: public/trees.json
+ path: /builds/worker/artifacts/trees.json
+ run:
+ using: run-task
+ cwd: '{checkout}'
+ command: >
+ cp -r /build/node_modules_eslint node_modules &&
+ ln -s ../tools/lint/eslint/eslint-plugin-mozilla node_modules &&
+ ln -s ../tools/lint/eslint/eslint-plugin-spidermonkey-js node_modules &&
+ ./mach doc --outdir docs-out --no-open --no-serve --archive --fatal-warnings --check-num-warnings --dump-trees=/builds/worker/artifacts/trees.json
+ sparse-profile: sphinx-docs
+ optimization:
+ skip-unless-schedules: [docs]
+
+upload:
+ description: Generate and upload the Sphinx documentation
+ platform: doc/opt
+ attributes:
+ code-review: true
+ treeherder:
+ symbol: doc(upload)
+ kind: test
+ tier: 2
+ run-on-projects: [mozilla-central-only]
+ worker-type: t-linux-xlarge-source
+ worker:
+ docker-image: {in-tree: "lint"}
+ max-run-time: 1800
+ env:
+ MOZ_SOURCE_DOCS_USE_GOOGLE: "1"
+ taskcluster-proxy: true
+ artifacts:
+ - type: file
+ name: public/firefox-source-docs-url.txt
+ path: /builds/worker/firefox-source-docs-url.txt
+ - type: file
+ name: public/trees.json
+ path: /builds/worker/artifacts/trees.json
+ run:
+ using: run-task
+ cwd: '{checkout}'
+ command: >
+ cp -r /build/node_modules_eslint node_modules &&
+ ln -s ../tools/lint/eslint/eslint-plugin-mozilla node_modules &&
+ ln -s ../tools/lint/eslint/eslint-plugin-spidermonkey-js node_modules &&
+ ./mach doc --upload --no-open --no-serve --fatal-warnings --check-num-warnings --write-url /builds/worker/firefox-source-docs-url.txt --dump-trees=/builds/worker/artifacts/trees.json
+ sparse-profile: sphinx-docs
+ scopes:
+ - secrets:get:project/releng/gecko/build/level-{level}/gecko-docs-upload
+ optimization:
+ skip-unless-schedules: [docs]
diff --git a/taskcluster/ci/source-test/file-metadata.yml b/taskcluster/ci/source-test/file-metadata.yml
new file mode 100644
index 0000000000..9fee8e9b93
--- /dev/null
+++ b/taskcluster/ci/source-test/file-metadata.yml
@@ -0,0 +1,123 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ platform: lint/opt
+ treeherder:
+ kind: other
+ tier: 1
+ worker-type: t-linux-xlarge-source
+ worker:
+ artifacts:
+ - type: directory
+ path: /builds/worker/artifacts
+ name: public
+ docker-image: {in-tree: "lint"}
+ max-run-time: 1800
+ run:
+ using: mach
+
+bugzilla-components:
+ description: Generate metadata about source files and Bugzilla
+ treeherder:
+ symbol: Bugzilla
+ tier: 1
+ index:
+ product: source
+ job-name: source-bugzilla-info
+ run:
+ mach: file-info bugzilla-automation /builds/worker/artifacts
+ worker:
+ max-run-time: 1800
+ run-on-projects: ['autoland', 'mozilla-central']
+
+test-info-xorigin:
+ description: Generate test manifest metadata for tests disabled on cross-origin
+ treeherder:
+ symbol: test-info(xorigin)
+ tier: 2
+ index:
+ product: source
+ job-name: test-info-xorigin
+ worker:
+ docker-image: {in-tree: debian11-amd64-build}
+ run-on-projects: ['mozilla-central']
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-clang-tidy
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-nasm
+ - linux64-node
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ run:
+ using: run-task
+ cwd: '{checkout}'
+ command: >-
+ source taskcluster/scripts/misc/source-test-common.sh &&
+ ./mach test-info report --show-tests --show-summary --filter-keys=fail-if,fails-if,random-if,skip-if --filter-values='(?<!!)xorigin' --output-file /builds/worker/artifacts/test-info-xorigin.json
+
+test-info-disabled-by-os:
+ description: Generate test manifest metadata for tests disabled on each operating system
+ treeherder:
+ symbol: test-info(disabled-by-os)
+ tier: 2
+ index:
+ product: source
+ job-name: test-info-disabled-by-os
+ worker:
+ docker-image: {in-tree: debian11-amd64-build}
+ run-on-projects: ['mozilla-central']
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-clang-tidy
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-nasm
+ - linux64-node
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ run:
+ using: run-task
+ cwd: '{checkout}'
+ command: >-
+ source taskcluster/scripts/misc/source-test-common.sh &&
+ ./mach test-info report --show-tests --show-summary --filter-keys=fail-if,fails-if,random-if,skip-if --filter-values='(?<!!)(android|android_version|Android|AndroidVersion|geckoview|emulator|device)' --output-file /builds/worker/artifacts/test-info-disabled-on-android.json &&
+ ./mach test-info report --show-tests --show-summary --filter-keys=fail-if,fails-if,random-if,skip-if --filter-values='(?<!!)(linux|Linux)' --output-file /builds/worker/artifacts/test-info-disabled-on-linux.json &&
+ ./mach test-info report --show-tests --show-summary --filter-keys=fail-if,fails-if,random-if,skip-if --filter-values='(?<!!)(osx|OSX|mac)' --output-file /builds/worker/artifacts/test-info-disabled-on-mac.json &&
+ ./mach test-info report --show-tests --show-summary --filter-keys=fail-if,fails-if,random-if,skip-if --filter-values='(?<!!)(win|Windows|WINNT)' --output-file /builds/worker/artifacts/test-info-disabled-on-windows.json
+
+test-info-all:
+ description: Generate global test manifest metadata
+ treeherder:
+ symbol: test-info(all)
+ tier: 2
+ index:
+ product: source
+ job-name: test-info-all
+ worker:
+ docker-image: {in-tree: debian11-amd64-build}
+ max-run-time: 5400
+ run-on-projects: ['mozilla-central']
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-clang-tidy
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-nasm
+ - linux64-node
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ run:
+ using: run-task
+ cwd: '{checkout}'
+ command: >-
+ source taskcluster/scripts/misc/source-test-common.sh &&
+ ./mach test-info testrun-report --output-file /builds/worker/artifacts/test-run-info.json &&
+ ./mach test-info report --show-tests --show-summary --show-testruns --verbose --output-file /builds/worker/artifacts/test-info-all-tests.json &&
+ ./mach test-info report --show-annotations --output-file /builds/worker/artifacts/test-info-manifest-conditions.json
diff --git a/taskcluster/ci/source-test/jsshell.yml b/taskcluster/ci/source-test/jsshell.yml
new file mode 100644
index 0000000000..2ce0a846d4
--- /dev/null
+++ b/taskcluster/ci/source-test/jsshell.yml
@@ -0,0 +1,87 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ platform: linux64-shippable/opt
+ require-build:
+ linux64.*: build-linux64-shippable/opt
+ worker-type:
+ by-platform:
+ linux64.*: t-linux-talos-1804
+ worker:
+ by-platform:
+ linux64.*:
+ env:
+ by-shell:
+ sm:
+ SHELL: /bin/bash
+ JSSHELL: js
+ v8:
+ SHELL: /bin/bash
+ JSSHELL: d8/release/d8
+ max-run-time: 3600
+ treeherder:
+ kind: test
+ tier: 2
+ run:
+ using: mach
+ mach: jsshell-bench --perfherder={shell} --binary=$MOZ_FETCHES_DIR/$JSSHELL {test}
+ run-on-projects:
+ by-shell:
+ sm:
+ by-test-platform:
+ (linux|windows|macos)(?!.*shippable).*: []
+ default: ['mozilla-central', 'integration']
+ default:
+ by-test-platform:
+ (linux|windows|macos)(?!.*shippable).*: []
+ default: ['mozilla-central']
+ fetches:
+ build:
+ - target.jsshell.zip
+ toolchain:
+ - linux64-custom-v8
+ optimization:
+ skip-unless-expanded: null
+
+bench-ares6:
+ description: Ares6 JavaScript shell benchmark suite
+ shell: ['sm', 'v8']
+ test: ares6
+ treeherder:
+ symbol: ares6
+
+bench-sixspeed:
+ description: Six-Speed JavaScript shell benchmark suite
+ shell: ['sm', 'v8']
+ test: six-speed
+ treeherder:
+ symbol: 6speed
+
+bench-sunspider:
+ description: SunSpider JavaScript shell benchmark suite
+ shell: ['sm']
+ test: sunspider
+ treeherder:
+ symbol: sunspider
+
+bench-web-tooling:
+ description: Web Tooling shell benchmark suite
+ shell: ['sm', 'v8']
+ test: web-tooling-benchmark
+ treeherder:
+ symbol: webtool
+ fetches:
+ fetch:
+ - web-tooling-benchmark
+
+bench-octane:
+ description: Octane shell benchmark suite
+ shell: ['sm', 'v8']
+ test: octane
+ treeherder:
+ symbol: octane
+ fetches:
+ fetch:
+ - octane
diff --git a/taskcluster/ci/source-test/kind.yml b/taskcluster/ci/source-test/kind.yml
new file mode 100644
index 0000000000..984f0648d3
--- /dev/null
+++ b/taskcluster/ci/source-test/kind.yml
@@ -0,0 +1,40 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+transforms:
+ - gecko_taskgraph.transforms.try_job:transforms
+ - gecko_taskgraph.transforms.source_test:transforms
+ - gecko_taskgraph.transforms.release_notifications:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - fetch
+ - toolchain
+ - build
+
+jobs-from:
+ - clang.yml
+ - cram.yml
+ - doc.yml
+ - file-metadata.yml
+ - jsshell.yml
+ - mozlint.yml
+ - mozlint-android.yml
+ - node.yml
+ - puppeteer.yml
+ - python.yml
+ - shadow-scheduler.yml
+ - taskgraph.yml
+ - vendor.yml
+ - webidl.yml
+ - webcompat.yml
+ - wpt-manifest.yml
+ - wpt-metadata.yml
+
+job-defaults:
+ attributes:
+ retrigger: true
diff --git a/taskcluster/ci/source-test/mozlint-android.yml b/taskcluster/ci/source-test/mozlint-android.yml
new file mode 100644
index 0000000000..6602d8c818
--- /dev/null
+++ b/taskcluster/ci/source-test/mozlint-android.yml
@@ -0,0 +1,106 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+
+# Just one TC job that runs all the lints. There's no real advantage
+# to running them separately, and this way we perform the expensive
+# clone and somewhat expensive compilation of the Android
+# intermediates just once.
+lints:
+ always-target: true
+ attributes:
+ build_platform: android
+ build_type: opt
+ code-review: true
+ description: Android lints
+ platform: lint/opt
+ treeherder:
+ symbol: A(lints)
+ kind: test
+ tier: 1
+ worker-type: t-linux-xlarge-source
+ worker:
+ docker-image: {in-tree: android-build}
+ env:
+ GRADLE_USER_HOME: /builds/worker/checkouts/gecko/mobile/android/gradle/dotgradle-offline
+ MOZCONFIG: mobile/android/config/mozconfigs/android-arm/nightly-android-lints
+ MOZ_OBJDIR: obj-firefox
+ PERFHERDER_EXTRA_OPTIONS: android-lints
+ TINDERBOX_OUTPUT: '1'
+ max-run-time: 3600
+ artifacts:
+ - type: file
+ name: public/code-review/mozlint.json
+ path: /builds/worker/mozlint.json
+ - name: public/android/geckoview/api.txt
+ path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/intermediates/javac/withGeckoBinariesDebug/classes/api.txt
+ type: file
+ - name: public/android/geckoview/api.txt.map
+ path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/intermediates/javac/withGeckoBinariesDebug/classes/api.txt.map
+ type: file
+ - name: public/android/geckoview/apilint-result.json
+ path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/intermediates/javac/withGeckoBinariesDebug/classes/apilint-result.json
+ type: file
+ - name: public/android/geckoview/javadoc-results.json
+ path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/reports/javadoc-results-withGeckoBinariesDebug.json
+ type: file
+ - name: public/geckoview/unittest
+ path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/reports/tests
+ type: directory
+ - name: public/android/lint/lint-results-officialWithoutGeckoBinariesDebug.html
+ path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/reports/lint-results-withGeckoBinariesDebug.html
+ type: file
+ - name: public/android/lint/lint-results-withGeckoBinariesDebug.xml
+ path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/reports/lint-results-withGeckoBinariesDebug.xml
+ type: file
+ - name: public/android/checkstyle/checkstyle.html
+ path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/reports/checkstyle/withGeckoBinariesDebug.html
+ type: file
+ - name: public/android/checkstyle/checkstyle.xml
+ path: /builds/worker/checkouts/gecko/obj-firefox/gradle/build/mobile/android/geckoview/reports/checkstyle/withGeckoBinariesDebug.xml
+ type: file
+ run:
+ using: run-task
+ command: >
+ ln -s $MOZ_FETCHES_DIR/android-gradle-dependencies $GECKO_PATH &&
+ ln -s $MOZ_FETCHES_DIR/android-sdk-linux $GECKO_PATH &&
+ ln -s $MOZ_FETCHES_DIR/node $GECKO_PATH &&
+ cd $GECKO_PATH &&
+ ./mach --log-no-times build pre-export export &&
+ ./mach --log-no-times lint -f treeherder -f json:/builds/worker/mozlint.json
+ --linter android-api-lint
+ --linter android-format
+ --linter android-javadoc
+ --linter android-checkstyle
+ --linter android-lint
+ --linter android-test
+ *
+ tooltool-downloads: internal # For internal toolchains.
+ fetches:
+ toolchain:
+ # Aliases aren't allowed for toolchains installed by fetch.
+ - linux64-android-gradle-dependencies
+ - linux64-android-sdk-linux-repack
+ - linux64-jdk-repack
+ - linux64-node
+ when:
+ files-changed:
+ # Source files.
+ - 'mobile/android/**/*.java'
+ - 'mobile/android/**/*.kt'
+ # Resources.
+ - 'mobile/android/**/*.jpeg'
+ - 'mobile/android/**/*.jpg'
+ - 'mobile/android/**/*.png'
+ - 'mobile/android/**/*.svg'
+ - 'mobile/android/**/*.xml'
+ # Build stuff.
+ - 'mobile/android/**/Makefile.in'
+ - 'mobile/android/config/**'
+ - 'mobile/android/gradle.configure'
+ - 'mobile/android/**/moz.build'
+ - '**/*.gradle'
+ # Other misc lint related files.
+ - 'python/mozlint/**'
+ - 'tools/lint/**'
diff --git a/taskcluster/ci/source-test/mozlint.yml b/taskcluster/ci/source-test/mozlint.yml
new file mode 100644
index 0000000000..04d0554faf
--- /dev/null
+++ b/taskcluster/ci/source-test/mozlint.yml
@@ -0,0 +1,574 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ always-target: true
+ attributes:
+ code-review: true
+ treeherder:
+ kind: test
+ tier: 1
+ platform: lint/opt
+ worker-type: t-linux-xlarge-source
+ worker:
+ docker-image: {in-tree: "lint"}
+ max-run-time: 1800
+ artifacts:
+ - type: file
+ name: public/code-review/mozlint.json
+ path: /builds/worker/mozlint.json
+ run:
+ using: mach
+ when:
+ files-changed:
+ # Other misc lint related files.
+ - 'python/mozlint/**'
+ - 'tools/lint/**'
+
+codespell:
+ description: Checks for misspellings in text files
+ treeherder:
+ symbol: text(spell)
+ # We don't want patches to be backed out because of a typo, a follow up bug will be
+ # good enough
+ tier: 2
+ run:
+ mach: lint -v -l codespell -f treeherder -f json:/builds/worker/mozlint.json .
+ when:
+ files-changed:
+ - '**/*.js'
+ - '**/*.jsm'
+ - '**/*.jxs'
+ - '**/*.mjs'
+ - '**/*.xml'
+ - '**/*.html'
+ - '**/*.xhtml'
+ - '**/*.cpp'
+ - '**/*.c'
+ - '**/*.h'
+ - '**/*.configure'
+ - '**/*.py'
+ - '**/*.properties'
+ - '**/*.rst'
+ - '**/*.ftl'
+ - 'tools/lint/codespell.yml'
+
+
+rejected-words:
+ description: Reject some words we don't want to use in the code base
+ treeherder:
+ symbol: text(rejected-words)
+ # We don't want patches to be backed out because of this, a follow up bug will be
+ # good enough
+ tier: 2
+ run:
+ mach: lint -v -l rejected-words -f treeherder -f json:/builds/worker/mozlint.json .
+ when:
+ files-changed:
+ - '**/*.js'
+ - '**/*.jsm'
+ - '**/*.jxs'
+ - '**/*.mjs'
+ - '**/*.xml'
+ - '**/*.html'
+ - '**/*.xhtml'
+ - '**/*.cpp'
+ - '**/*.c'
+ - '**/*.h'
+ - '**/*.idl'
+ - '**/*.webidl'
+ - '**/*.configure'
+ - '**/*.py'
+ - '**/*.properties'
+ - '**/*.rst'
+ - '**/*.ftl'
+ - '**/*.java'
+ - '**/*.kt'
+ - 'tools/lint/rejected-words.yml'
+
+eslint:
+ description: JS lint check
+ treeherder:
+ symbol: js(ES)
+ run:
+ using: run-task
+ cwd: '{checkout}'
+ command: >
+ cp -r /build/node_modules_eslint node_modules &&
+ cp -r /build/node_modules_eslint-plugin-mozilla/ tools/lint/eslint/eslint-plugin-mozilla/node_modules &&
+ ln -s ../tools/lint/eslint/eslint-plugin-mozilla node_modules &&
+ ln -s ../tools/lint/eslint/eslint-plugin-spidermonkey-js node_modules &&
+ ./mach lint -v -l eslint -f treeherder -f json:/builds/worker/mozlint.json .
+ when:
+ files-changed:
+ # Files that are likely audited.
+ - '**/*.js'
+ - '**/*.jsm'
+ - '**/*.json'
+ - '**/*.jsx'
+ - '**/*.mjs'
+ - '**/*.sjs'
+ - '**/*.html'
+ - '**/*.xhtml'
+ - '**/*.xml'
+ - 'tools/lint/eslint.yml'
+ # Run when eslint policies change.
+ - '**/.eslintignore'
+ - '**/*eslintrc*'
+ # The plugin implementing custom checks.
+ - 'tools/lint/eslint/eslint-plugin-mozilla/**'
+ - 'tools/lint/eslint/eslint-plugin-spidermonkey-js/**'
+
+eslint-build:
+ description: ESLint checks with build data
+ always-target: false
+ # Triggered by cron task, don't run on any projects and disable optimization.
+ run-on-projects: []
+ when: null
+ attributes:
+ code-review: false
+ treeherder:
+ symbol: js(ES-B)
+ tier: 2
+ run:
+ using: run-task
+ cwd: '{checkout}'
+ command: >
+ export MOZ_XPT_ARTIFACTS_DIR="$MOZ_FETCHES_DIR/$MOZ_XPT_ARTIFACTS_DIRNAME" &&
+ find "$MOZ_XPT_ARTIFACTS_DIR" &&
+ cp -r /build/node_modules_eslint node_modules &&
+ cp -r /build/node_modules_eslint-plugin-mozilla/ tools/lint/eslint/eslint-plugin-mozilla/node_modules &&
+ ln -s ../tools/lint/eslint/eslint-plugin-mozilla node_modules &&
+ ln -s ../tools/lint/eslint/eslint-plugin-spidermonkey-js node_modules &&
+ ./mach lint -v -l eslint -f treeherder --quiet -f json:/builds/worker/mozlint.json . --rule "mozilla/valid-services-property: error" --rule "mozilla/valid-ci-uses: error"
+ worker:
+ env:
+ MOZ_XPT_ARTIFACTS_DIRNAME: xpt_artifacts
+ require-build:
+ .*: build-linux64/opt
+ fetches:
+ build:
+ - artifact: target.xpt_artifacts.zip
+ dest: xpt_artifacts
+
+stylelint:
+ description: CSS lint check
+ treeherder:
+ symbol: stylelint
+ run:
+ using: run-task
+ cwd: '{checkout}'
+ command: >
+ cp -r /build/node_modules_eslint node_modules &&
+ ./mach lint -v -l stylelint -f treeherder -f json:/builds/worker/mozlint.json .
+ when:
+ files-changed:
+ # Files that are likely audited.
+ - '**/*.css'
+ - 'tools/lint/styleint.yml'
+ # Run when stylelint policies change.
+ - '**/.stylelintignore'
+ - '**/*stylelintrc*'
+
+license:
+ description: Check for license blocks in source files.
+ treeherder:
+ symbol: pedantic(license)
+ run:
+ mach: lint -v -l license -f treeherder -f json:/builds/worker/mozlint.json .
+ when:
+ files-changed:
+ - '**/*.c'
+ - '**/*.cc'
+ - '**/*.cpp'
+ - '**/*.css'
+ - '**/*.dtd'
+ - '**/*.ftl'
+ - '**/*.h'
+ - '**/*.html'
+ - '**/*.js'
+ - '**/*.jsm'
+ - '**/*.jsx'
+ - '**/*.m'
+ - '**/*.mjs'
+ - '**/*.mm'
+ - '**/*.properties'
+ - '**/*.py'
+ - '**/*.rs'
+ - '**/*.svg'
+ - '**/*.xhtml'
+ - '**/*.xml'
+ - '**/*.xul'
+ - 'tools/lint/license.yml'
+
+lintpref:
+ description: Check for duplicates between all.js and StaticPrefList.yaml.
+ treeherder:
+ symbol: misc(pref)
+ run:
+ mach: lint -v -l lintpref -f treeherder -f json:/builds/worker/mozlint.json .
+ when:
+ files-changed:
+ - 'modules/libpref/init/all.js'
+ - 'modules/libpref/init/StaticPrefList.yaml'
+ - 'browser/app/profile/firefox.js'
+ - 'mobile/android/app/mobile.js'
+ - 'devtools/client/preferences/debugger.js'
+ - 'mobile/android/app/geckoview-prefs.js'
+ - 'browser/branding/official/pref/firefox-branding.js'
+ - 'browser/branding/nightly/pref/firefox-branding.js'
+ - 'browser/branding/unofficial/pref/firefox-branding.js'
+ - 'browser/branding/aurora/pref/firefox-branding.js'
+ - 'browser/app/profile/channel-prefs.js'
+ - 'mobile/android/installer/mobile-l10n.js'
+ - 'mobile/android/locales/en-US/mobile-l10n.js'
+ - 'tools/lint/lintpref.yml'
+
+mingw-cap:
+ description: lint for MinGW Capitalization issues
+ treeherder:
+ symbol: misc(mingw)
+ run:
+ mach: lint -v -l mingw-capitalization -f treeherder -f json:/builds/worker/mozlint.json .
+ when:
+ files-changed:
+ - '**/*.cpp'
+ - '**/*.cc'
+ - '**/*.c'
+ - '**/*.h'
+ - 'tools/lint/mingw-capitalization.yml'
+
+updatebot:
+ description: Ensure moz.yaml files are valid per schema
+ treeherder:
+ symbol: misc(mozyaml)
+ run:
+ mach: lint -v -l updatebot -f treeherder -f json:/builds/worker/mozlint.json .
+ when:
+ files-changed:
+ - '**/moz.yaml'
+
+mscom-init:
+ description: Lint for Microsoft COM initialization
+ treeherder:
+ symbol: misc(mscom)
+ run:
+ mach: lint -v -l mscom-init -f treeherder -f json:/builds/worker/mozlint.json .
+ when:
+ files-changed:
+ - '**/*.cpp'
+ - '**/*.cc'
+ - '**/*.c'
+ - '**/*.h'
+ - 'tools/lint/mscom-init.yml'
+
+py-black:
+ description: black run over the gecko codebase
+ treeherder:
+ symbol: py(black)
+ run:
+ mach: lint -v -l black -f treeherder -f json:/builds/worker/mozlint.json .
+ when:
+ files-changed:
+ # The list of extensions should match tools/lint/black.yml
+ - '**/*.py'
+ - '**/moz.build'
+ - '**/*.configure'
+ - '**/*.mozbuild'
+ - 'pyproject.toml'
+ - 'tools/lint/black.yml'
+
+py-ruff:
+ description: Run ruff over the gecko codebase
+ treeherder:
+ symbol: py(ruff)
+ run:
+ mach: lint -v -l ruff -f treeherder -f json:/builds/worker/mozlint.json .
+ when:
+ files-changed:
+ - '**/*.py'
+ - '**/*.configure'
+ - '**/.ruff.toml'
+ - 'pyproject.toml'
+ - 'tools/lint/ruff.yml'
+ - 'tools/lint/python/ruff.py'
+ - 'tools/lint/python/ruff_requirements.txt'
+
+test-manifest:
+ description: lint test manifests
+ treeherder:
+ symbol: misc(tm)
+ run:
+ mach: lint -v -l test-manifest-alpha -l test-manifest-disable -l test-manifest-skip-if -f treeherder -f json:/builds/worker/mozlint.json .
+ when:
+ files-changed:
+ - '**/*.ini'
+ - 'python/mozlint/**'
+ - 'tools/lint/**'
+ - 'tools/lint/test-disable.yml'
+
+wptlint-gecko:
+ description: web-platform-tests linter
+ treeherder:
+ symbol: misc(W)
+ run:
+ mach: lint -v -l wpt -f treeherder -f json:/builds/worker/mozlint.json .
+ when:
+ files-changed:
+ - 'testing/web-platform/tests/**'
+ - 'testing/web-platform/mozilla/tests/**'
+ - 'tools/lint/wpt.yml'
+
+yaml:
+ description: yamllint run over the gecko codebase
+ treeherder:
+ symbol: pedantic(yaml)
+ run:
+ mach: lint -v -l yaml -f treeherder -f json:/builds/worker/mozlint.json .
+ when:
+ files-changed:
+ - '**/*.yml'
+ - '**/*.yaml'
+ - '**/.ymllint'
+
+rst:
+ description: rst lint run over the gecko codebase
+ treeherder:
+ symbol: text(rst)
+ run:
+ mach: lint -v -l rst -f treeherder -f json:/builds/worker/mozlint.json .
+ when:
+ files-changed:
+ - '**/*.rst'
+ - 'tools/lint/rst.yml'
+
+shellcheck:
+ description: shellcheck run over the gecko codebase
+ treeherder:
+ symbol: misc(shell)
+ run:
+ mach: lint -v -l shellcheck -f treeherder -f json:/builds/worker/mozlint.json .
+ when:
+ files-changed:
+ - '**/*.sh'
+ - 'tools/lint/shellcheck.yml'
+
+
+localization:
+ description: l10n tests for strings with errors
+ treeherder:
+ symbol: l10n(l1nt)
+ run:
+ mach: lint -v -l l10n -f treeherder *
+ attributes:
+ code-review: false
+ when:
+ files-changed:
+ - '**/locales/en-US/**'
+ - '**/l10n.toml'
+ - 'third_party/python/compare-locales/**'
+ - 'third_party/python/fluent/**'
+ - 'tools/lint/l10n.yml'
+
+
+l10n-conflicts:
+ description: l10n tests for strings with errors and conflicts with cross-channel
+ treeherder:
+ symbol: l10n(l1nt-conflicts)
+ always-target: false
+ run-on-projects: []
+ run:
+ mach: lint -W -l l10n -f treeherder -f json:/builds/worker/mozlint.json .
+ when:
+ files-changed:
+ - '**/locales/en-US/**'
+ - '**/l10n.toml'
+ - 'third_party/python/compare-locales/**'
+ - 'third_party/python/fluent/**'
+ - 'tools/lint/l10n.yml'
+
+
+clang-format:
+ description: clang-format on the C/C++ code
+ treeherder:
+ symbol: cpp(clang-format)
+ run:
+ mach: lint -v -l clang-format -f treeherder -f json:/builds/worker/mozlint.json .
+ when:
+ files-changed:
+ - '**/*.cpp'
+ - '**/*.c'
+ - '**/*.cc'
+ - '**/*.h'
+ - '**/*.m'
+ - '**/*.mm'
+ - 'tools/lint/clang-format.yml'
+ dependencies:
+ linux64-clang-tidy: toolchain-linux64-clang-tidy
+ fetches:
+ linux64-clang-tidy:
+ - artifact: clang-tidy.tar.zst
+ dest: clang-tools
+
+
+rustfmt:
+ description: rustfmt on the Rust code
+ treeherder:
+ symbol: rust(rustfmt)
+ run:
+ mach: lint -v -l rustfmt -f treeherder -f json:/builds/worker/mozlint.json .
+ when:
+ files-changed:
+ - '**/*.rs'
+ - 'tools/lint/rustfmt.yml'
+ fetches:
+ toolchain:
+ - linux64-rust
+
+
+clippy:
+ description: clippy on the Rust code
+ treeherder:
+ symbol: rust(clippy)
+ run:
+ mach: lint -v -l clippy -f treeherder -f json:/builds/worker/mozlint.json -j 1 .
+ when:
+ files-changed:
+ - '**/*.rs'
+ - '**/Cargo.toml'
+ - 'tools/lint/clippy.yml'
+ fetches:
+ toolchain:
+ - linux64-rust
+
+
+file-whitespace:
+ description: Check for trailing whitespaces and Windows CR
+ platform: lint/opt
+ treeherder:
+ symbol: pedantic(file-whitespace)
+ # We don't want patches to be backed out because of this, a follow up bug will be
+ # good enough
+ tier: 2
+ run:
+ mach: lint -v -l file-whitespace -f treeherder -f json:/builds/worker/mozlint.json .
+ when:
+ files-changed:
+ - '**/*.c'
+ - '**/*.cc'
+ - '**/*.cpp'
+ - '**/*.css'
+ - '**/*.dtd'
+ - '**/*.idl'
+ - '**/*.ftl'
+ - '**/*.h'
+ - '**/*.html'
+ - '**/*.md'
+ - '**/*.properties'
+ - '**/*.py'
+ - '**/*.rs'
+ - '**/*.rst'
+ - '**/*.webidl'
+ - '**/*.xhtml'
+ - 'tools/lint/file-whitespace.yml'
+
+
+file-perm:
+ description: Check for incorrect permissions on source files
+ platform: lint/opt
+ treeherder:
+ symbol: pedantic(file-perm)
+ # We don't want patches to be backed out because of this, a follow up bug will be
+ # good enough
+ tier: 2
+ run:
+ mach: lint -v -l file-perm -f treeherder -f json:/builds/worker/mozlint.json .
+ when:
+ files-changed:
+ - '**/*.build'
+ - '**/*.c'
+ - '**/*.cc'
+ - '**/*.cpp'
+ - '**/*.flac'
+ - '**/*.h'
+ - '**/*.html'
+ - '**/*.idl'
+ - '**/*.js'
+ - '**/*.jsm'
+ - '**/*.jsx'
+ - '**/*.m'
+ - '**/*.m4s'
+ - '**/*.md'
+ - '**/*.mjs'
+ - '**/*.mm'
+ - '**/*.mozbuild'
+ - '**/*.mp4'
+ - '**/*.png'
+ - '**/*.rs'
+ - '**/*.rst'
+ - '**/*.svg'
+ - '**/*.ttf'
+ - '**/*.wasm'
+ - '**/*.webidl'
+ - '**/*.xhtml'
+ - '**/*.xml'
+ - '**/*.xul'
+ - '**/*.yml'
+ - 'tools/lint/file-perm.yml'
+
+
+perfdocs-verify:
+ description: Verifies Performance Testing documentation
+ treeherder:
+ symbol: text(perfdocs)
+ run:
+ mach: lint -v -l perfdocs -f treeherder -f json:/builds/worker/mozlint.json .
+ worker:
+ env:
+ WORKSPACE: /builds/worker/checkouts/gecko/
+ DECISION_TASK_ID: {task-reference: <decision>}
+ artifacts:
+ - type: file
+ name: public/perfdocs.diff
+ path: /builds/worker/diff.txt
+ when:
+ files-changed:
+ - 'taskcluster/**'
+ - '**/perftest.ini'
+ - 'python/mozperftest/**'
+ - 'testing/**/*.ini'
+ - 'testing/**/*.yml'
+ - 'testing/**/*.rst'
+ - 'tools/lint/perfdocs.yml'
+
+
+fluent-lint:
+ description: Check for problems with Fluent files.
+ platform: lint/opt
+ treeherder:
+ symbol: l10n(fluent)
+ run:
+ mach: lint --linter fluent-lint -f treeherder -f json:/builds/worker/mozlint.json .
+ when:
+ files-changed:
+ - '**/*.ftl'
+ - 'tools/lint/fluent-lint.yml'
+ - 'tools/lint/fluent-lint/exclusions.yml'
+
+trojan-source:
+ description: Trojan Source attack - CVE-2021-42572
+ platform: lint/opt
+ treeherder:
+ symbol: misc(trojan-source)
+ run:
+ mach: lint -v -l trojan-source --include-third-party -f treeherder -f json:/builds/worker/mozlint.json .
+ when:
+ files-changed:
+ - '**/*.c'
+ - '**/*.cc'
+ - '**/*.cpp'
+ - '**/*.h'
+ - '**/*.py'
+ - '**/*.rs'
+ - 'tools/lint/trojan-source.yml'
diff --git a/taskcluster/ci/source-test/node.yml b/taskcluster/ci/source-test/node.yml
new file mode 100644
index 0000000000..4dcc43f521
--- /dev/null
+++ b/taskcluster/ci/source-test/node.yml
@@ -0,0 +1,159 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+newtab-unit-tests:
+ description: newtab unit tests
+ platform: linux1804-64/opt
+ treeherder:
+ symbol: node(newtab)
+ kind: test
+ tier: 1
+ worker-type: t-linux-xlarge-source
+ worker:
+ docker-image: {in-tree: "ubuntu1804-test"}
+ max-run-time: 1800
+ require-build:
+ by-project:
+ autoland:
+ linux1804-64/opt: build-linux64/opt
+ try:
+ linux1804-64/opt: build-linux64/opt
+ default:
+ linux1804-64/opt: build-linux64-shippable/opt
+ run:
+ using: run-task
+ cache-dotcache: true
+ cwd: '{checkout}'
+ command: >
+ cd /builds/worker/checkouts/gecko/browser/components/newtab &&
+ npm install &&
+ node bin/try-runner.js
+ when:
+ files-changed:
+ - "browser/components/newtab/**"
+
+newtab-unit-tests-ccov:
+ description: newtab unit tests code coverage
+ platform: linux1804-64/opt
+ treeherder:
+ symbol: node(newtab-ccov)
+ kind: test
+ tier: 1
+ worker-type: t-linux-xlarge-source
+ worker:
+ docker-image: {in-tree: "ubuntu1804-test"}
+ max-run-time: 1800
+ artifacts:
+ - name: public/code-coverage-grcov.zip
+ path: /builds/worker/checkouts/gecko/browser/components/newtab/logs/coverage/code-coverage-grcov.zip
+ type: file
+ require-build:
+ by-project:
+ try:
+ linux1804-64/opt: build-linux64/opt
+ default:
+ linux1804-64/opt: build-linux64-shippable/opt
+ run:
+ using: run-task
+ cache-dotcache: true
+ cwd: '{checkout}'
+ command: >
+ cd /builds/worker/checkouts/gecko/browser/components/newtab &&
+ npm install &&
+ node bin/try-runner.js
+ run-on-projects: ["mozilla-central"]
+
+devtools-tests:
+ description: devtools node-based tests (for instance jest)
+ platform: linux1804-64/opt
+ attributes:
+ code-review: true
+ treeherder:
+ symbol: node(devtools)
+ kind: test
+ tier: 1
+ worker-type: t-linux-xlarge-source
+ worker:
+ docker-image: {in-tree: "lint"}
+ max-run-time: 1800
+ artifacts:
+ - type: file
+ name: public/code-review/issues.json
+ path: /builds/worker/issues.json
+ run:
+ using: run-task
+ cache-dotcache: true
+ cwd: '{checkout}'
+ # Re-use rather than re-installing to avoid hitting/requiring
+ # nodejs servers for downloads
+ command: >
+ cp -r /build/node_modules_eslint node_modules &&
+ cp -r /build/node_modules_eslint-plugin-mozilla/ tools/lint/eslint/eslint-plugin-mozilla/node_modules &&
+ ln -s ../tools/lint/eslint/eslint-plugin-mozilla node_modules &&
+ ln -s ../tools/lint/eslint/eslint-plugin-spidermonkey-js node_modules &&
+ cd devtools/client/bin/ &&
+ node devtools-node-test-runner.js --suite=all --artifact=/builds/worker/issues.json
+ when:
+ files-changed:
+ - 'devtools/client/**'
+ - 'devtools/shared/**'
+
+devtools-verify-bundle:
+ description: devtools bundle checker
+ platform: linux1804-64/opt
+ attributes:
+ code-review: true
+ treeherder:
+ symbol: node(devtools-bundle)
+ kind: test
+ tier: 2
+ worker-type: t-linux-xlarge-source
+ worker:
+ docker-image: {in-tree: "lint"}
+ max-run-time: 1200
+ artifacts:
+ - type: file
+ name: public/code-review/issues.json
+ path: /builds/worker/issues.json
+ run:
+ using: run-task
+ cache-dotcache: true
+ cwd: '{checkout}'
+ # Re-use rather than re-installing to avoid hitting/requiring
+ # nodejs servers for downloads
+ command: >
+ cp -r /build/node_modules_eslint node_modules &&
+ cp -r /build/node_modules_eslint-plugin-mozilla/ tools/lint/eslint/eslint-plugin-mozilla/node_modules &&
+ ln -s ../tools/lint/eslint/eslint-plugin-mozilla node_modules &&
+ ln -s ../tools/lint/eslint/eslint-plugin-spidermonkey-js node_modules &&
+ cd devtools/client/debugger &&
+ yarn &&
+ node bin/bundle.js &&
+ cd ../../.. &&
+ ./mach python taskcluster/scripts/misc/verify-devtools-bundle.py --output /builds/worker/issues.json
+ when:
+ files-changed:
+ - 'devtools/**'
+
+eslint-plugin-mozilla:
+ description: eslint-plugin-mozilla integration tests
+ platform: linux1804-64/opt
+ treeherder:
+ symbol: node(epm)
+ kind: test
+ tier: 1
+ worker-type: t-linux-xlarge-source
+ worker:
+ docker-image: {in-tree: "lint"}
+ max-run-time: 1800
+ run:
+ using: run-task
+ cache-dotcache: true
+ cwd: '{checkout}/tools/lint/eslint/eslint-plugin-mozilla'
+ command: >
+ cp -r /build/node_modules_eslint-plugin-mozilla node_modules &&
+ npm run test
+ when:
+ files-changed:
+ - 'tools/lint/eslint/eslint-plugin-mozilla/**'
diff --git a/taskcluster/ci/source-test/puppeteer.yml b/taskcluster/ci/source-test/puppeteer.yml
new file mode 100644
index 0000000000..b4bd898d1f
--- /dev/null
+++ b/taskcluster/ci/source-test/puppeteer.yml
@@ -0,0 +1,52 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ platform: linux1804-64/opt
+ require-build:
+ by-project:
+ try:
+ linux1804-64/opt: build-linux64/opt
+ default:
+ linux1804-64/opt: build-linux64-shippable/opt
+ fetches:
+ build:
+ - target.tar.bz2
+ toolchain:
+ - linux64-node
+ treeherder:
+ kind: test
+ tier: 1
+ worker-type: t-linux-xlarge-source
+ worker:
+ docker-image: {in-tree: ubuntu1804-test}
+ max-run-time: 3600
+ artifacts:
+ - type: file
+ name: public/remote/pup_errorsummary.json
+ path: /builds/worker/pup_errorsummary.json
+ optimization:
+ skip-unless-expanded: null
+
+puppeteer:
+ description: Puppeteer tests against Firefox CDP-based remote protocol
+ treeherder:
+ symbol: Pup(cdp)
+ run: # Bug 1651542: Use screenshot feature to warm-up the font cache before the actual test
+ using: run-task
+ command: >
+ cd $GECKO_PATH/ &&
+ $MOZ_FETCHES_DIR/firefox/firefox --screenshot http://example.org &&
+ ./mach puppeteer-test --ci -vv --binary $MOZ_FETCHES_DIR/firefox/firefox --headless --log-tbpl - --log-errorsummary /builds/worker/pup_errorsummary.json
+
+puppeteer-with-bidi:
+ description: Puppeteer tests against Firefox Webdriver BiDi remote protocol
+ treeherder:
+ symbol: Pup(wd)
+ run: # Bug 1651542: Use screenshot feature to warm-up the font cache before the actual test
+ using: run-task
+ command: >
+ cd $GECKO_PATH/ &&
+ $MOZ_FETCHES_DIR/firefox/firefox --screenshot http://example.org &&
+ ./mach puppeteer-test --ci -vv --binary $MOZ_FETCHES_DIR/firefox/firefox --bidi --log-tbpl - --log-errorsummary /builds/worker/pup_errorsummary.json
diff --git a/taskcluster/ci/source-test/python.yml b/taskcluster/ci/source-test/python.yml
new file mode 100644
index 0000000000..691a6da6da
--- /dev/null
+++ b/taskcluster/ci/source-test/python.yml
@@ -0,0 +1,622 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ platform: linux1804-64/opt
+ always-target:
+ by-platform:
+ macosx.*: false
+ default: true
+ worker-type:
+ by-platform:
+ linux1804-64.*: t-linux-xlarge-source
+ macosx1015-64.*: t-osx-1015-r8
+ windows11-64.*: win11-64-2009-source
+ worker:
+ by-platform:
+ linux1804-64.*:
+ docker-image: {in-tree: "lint"}
+ max-run-time: 3600
+ macosx.*:
+ max-run-time: 3600
+ env:
+ PATH: "/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin"
+ default:
+ max-run-time: 3600
+ treeherder:
+ kind: test
+ tier: 1
+ run:
+ using: mach
+ when:
+ files-changed:
+ - 'config/mozunit/**'
+ - 'python/mach_commands.py'
+
+firefox-ci:
+ description: taskcluster/gecko_taskgraph unit tests
+ always-target: false
+ python-version: [3]
+ treeherder:
+ symbol: ci
+ run:
+ using: python-test
+ subsuite: ci
+ when:
+ files-changed:
+ - '.taskcluster.yml'
+ - 'taskcluster/ci/**'
+ - 'taskcluster/**/*.py'
+ - 'tools/tryselect/selectors/auto.py'
+
+fog:
+ description: Python unit tests for Firefox on Glean
+ platform:
+ - linux1804-64/opt
+ - macosx1015-64/opt
+ - windows11-64/opt
+ python-version: [3]
+ treeherder:
+ symbol: fp
+ run:
+ using: python-test
+ subsuite: fog
+ when:
+ files-changed:
+ - 'toolkit/components/glean/**'
+
+mach:
+ description: python/mach unit tests
+ platform:
+ - linux1804-64/opt
+ - macosx1015-64/opt
+ - windows11-64/opt
+ python-version: [3]
+ treeherder:
+ symbol: mach
+ run:
+ using: python-test
+ subsuite: mach
+ when:
+ files-changed:
+ - 'python/mach/**'
+ - 'python/sites/**'
+
+marionette-harness:
+ description: testing/marionette/harness unit tests
+ platform:
+ - linux1804-64/opt
+ - windows11-64/opt
+ python-version: [3]
+ treeherder:
+ symbol: mnh
+ run:
+ using: python-test
+ subsuite: marionette-harness
+ when:
+ files-changed:
+ - 'testing/marionette/harness/**'
+ - 'testing/mozbase/mozlog/mozlog/**'
+ - 'testing/mozbase/mozlog/setup.py'
+
+mochitest-harness:
+ description: testing/mochitest unittests
+ platform:
+ - linux1804-64/opt
+ - linux1804-64/debug
+ - linux1804-64-asan/opt
+ always-target: false
+ require-build:
+ by-project:
+ try:
+ linux1804-64-asan/opt: build-linux64-asan/opt
+ linux1804-64/debug: build-linux64/debug
+ linux1804-64/opt: build-linux64/opt
+ default:
+ linux1804-64-asan/opt: build-linux64-asan/opt
+ linux1804-64/debug: build-linux64/debug
+ linux1804-64/opt: build-linux64-shippable/opt
+ treeherder:
+ symbol: py3(mch)
+ worker:
+ by-platform:
+ linux1804-64.*:
+ docker-image: {in-tree: "ubuntu1804-test"}
+ max-run-time: 3600
+ run:
+ using: run-task
+ cwd: '{checkout}'
+ command: >
+ source /builds/worker/scripts/xvfb.sh &&
+ start_xvfb '1600x1200x24' 0 &&
+ export GECKO_BINARY_PATH=$MOZ_FETCHES_DIR/firefox/firefox &&
+ export TEST_HARNESS_ROOT=$MOZ_FETCHES_DIR/tests &&
+ ./mach python-test --subsuite mochitest
+ fetches:
+ build:
+ - target.tar.bz2
+ - artifact: target.common.tests.tar.gz
+ dest: tests
+ - artifact: target.mochitest.tests.tar.gz
+ dest: tests
+ toolchain:
+ - linux64-fix-stacks
+ when:
+ files-changed:
+ - 'testing/mochitest/**'
+ - 'testing/mozbase/mozrunner/mozrunner/**'
+ - 'testing/mozbase/moztest/moztest/selftest/**'
+ - 'testing/mozharness/mozharness/base/log.py'
+ - 'testing/mozharness/mozharness/mozilla/structuredlog.py'
+ - 'testing/mozharness/mozharness/mozilla/testing/errors.py'
+ - 'testing/profiles/**'
+
+
+mozbase:
+ description: testing/mozbase unit tests
+ platform:
+ - linux1804-64/opt
+ - macosx1015-64/opt
+ - windows11-64/opt
+ python-version: [3]
+ treeherder:
+ symbol: mb
+ run:
+ using: python-test
+ subsuite: mozbase
+ when:
+ files-changed:
+ - 'testing/mozbase/**'
+
+mozharness:
+ description: mozharness integration tests
+ treeherder:
+ symbol: py3(mh)
+ run:
+ using: run-task
+ cache-dotcache: true
+ cwd: '{checkout}/testing/mozharness'
+ command: >
+ /usr/local/bin/tox -e py39-hg5.2
+ when:
+ files-changed:
+ - 'testing/mozharness/**'
+
+mozlint:
+ description: python/mozlint unit tests
+ platform:
+ - linux1804-64/opt
+ - macosx1015-64/opt
+ - windows11-64/opt
+ python-version: [3]
+ treeherder:
+ symbol: mozlint
+ tier: 2
+ run:
+ using: python-test
+ subsuite: mozlint
+ dependencies:
+ clang-tidy:
+ by-platform:
+ linux1804-64/opt: toolchain-linux64-clang-tidy
+ macosx1015-64/opt: toolchain-macosx64-clang-tidy
+ windows11-64/opt: toolchain-win64-clang-tidy
+ fetches:
+ toolchain:
+ by-platform:
+ linux1804-64/opt:
+ - linux64-node
+ - linux64-rust
+ macosx1015-64/opt:
+ - macosx64-node
+ - macosx64-rust
+ windows11-64/opt:
+ - win64-node
+ - win64-rust
+ clang-tidy:
+ - artifact: clang-tidy.tar.zst
+ dest: clang-tools
+ when:
+ files-changed:
+ - 'python/mozlint/**'
+ - 'tools/lint/**'
+
+mozrelease:
+ description: python/mozrelease unit tests
+ python-version: [3]
+ treeherder:
+ symbol: release
+ run:
+ using: python-test
+ subsuite: mozrelease
+ when:
+ files-changed:
+ - 'python/mozrelease/**'
+
+mozterm:
+ description: python/mozterm unit tests
+ platform:
+ - linux1804-64/opt
+ - windows11-64/opt
+ python-version: [3]
+ treeherder:
+ symbol: term
+ run:
+ using: python-test
+ subsuite: mozterm
+ when:
+ files-changed:
+ - 'python/mozterm/**'
+
+mozversioncontrol:
+ description: python/mozversioncontrol unit tests
+ platform:
+ - linux1804-64/opt
+ - macosx1015-64/opt
+ - windows11-64/opt
+ python-version: [3]
+ treeherder:
+ symbol: vcs
+ run:
+ using: python-test
+ subsuite: mozversioncontrol
+ when:
+ files-changed:
+ - 'python/mozversioncontrol/**'
+
+raptor:
+ description: testing/raptor unit tests
+ platform:
+ - linux1804-64/opt
+ - macosx1015-64/opt
+ - windows11-64/opt
+ python-version: [3]
+ treeherder:
+ symbol: rap
+ run:
+ using: python-test
+ subsuite: raptor
+ when:
+ files-changed:
+ - 'testing/raptor/**'
+
+reftest-harness:
+ description: layout/tools/reftest unittests
+ platform:
+ - linux1804-64/opt
+ - linux1804-64/debug
+ - linux1804-64-asan/opt
+ require-build:
+ by-project:
+ try:
+ linux1804-64-asan/opt: build-linux64-asan/opt
+ linux1804-64/debug: build-linux64/debug
+ linux1804-64/opt: build-linux64/opt
+ default:
+ linux1804-64-asan/opt: build-linux64-asan/opt
+ linux1804-64/debug: build-linux64/debug
+ linux1804-64/opt: build-linux64-shippable/opt
+ always-target: false
+ treeherder:
+ symbol: py3(ref)
+ worker:
+ by-platform:
+ linux1804-64.*:
+ docker-image: {in-tree: "ubuntu1804-test"}
+ max-run-time: 3600
+ run:
+ using: run-task
+ cwd: '{checkout}'
+ command: >
+ source /builds/worker/scripts/xvfb.sh &&
+ start_xvfb '1600x1200x24' 0 &&
+ export GECKO_BINARY_PATH=$MOZ_FETCHES_DIR/firefox/firefox &&
+ export TEST_HARNESS_ROOT=$MOZ_FETCHES_DIR/tests &&
+ ./mach python-test --subsuite reftest
+ fetches:
+ build:
+ - target.tar.bz2
+ - artifact: target.common.tests.tar.gz
+ dest: tests
+ - artifact: target.reftest.tests.tar.gz
+ dest: tests
+ toolchain:
+ - linux64-fix-stacks
+ when:
+ files-changed:
+ - 'layout/tools/reftest/**'
+ - 'testing/mozbase/mozrunner/mozrunner/**'
+ - 'testing/mozbase/moztest/moztest/selftest/**'
+ - 'testing/mozharness/mozharness/base/log.py'
+ - 'testing/mozharness/mozharness/mozilla/structuredlog.py'
+ - 'testing/mozharness/mozharness/mozilla/testing/errors.py'
+
+taskgraph-tests:
+ description: taskcluster/gecko_taskgraph unit tests
+ python-version: [3]
+ treeherder:
+ symbol: tg
+ run:
+ using: python-test
+ subsuite: taskgraph
+ when:
+ files-changed:
+ - 'taskcluster/**/*.py'
+ - 'python/mach/**/*.py'
+
+tryselect:
+ description: tools/tryselect unit tests
+ platform:
+ - linux1804-64/opt
+ - windows11-64/opt
+ python-version: [3]
+ treeherder:
+ symbol: try
+ run:
+ using: python-test
+ subsuite: try
+ when:
+ files-changed:
+ - 'taskcluster/ci/config.yml'
+ - 'taskcluster/ci/test/**'
+ - 'taskcluster/gecko_taskgraph/transforms/**'
+ - 'tools/tryselect/**'
+
+mozbuild:
+ description: mozbuild unit tests
+ platform:
+ - linux1804-64/opt
+ - macosx1015-64/opt
+ - windows11-64/opt
+ python-version: [3]
+ treeherder:
+ symbol: mbu
+ run:
+ using: python-test
+ subsuite: mozbuild
+ fetches:
+ toolchain:
+ by-platform:
+ linux1804-64/opt:
+ - linux64-node-12
+ macosx1015-64/opt:
+ - macosx64-node-12
+ windows11-64/opt:
+ - win64-node-12
+ - win64-mozmake
+ when:
+ files-changed:
+ - '**/moz.configure'
+ - 'build/moz.configure/**'
+ - 'config/tests/**'
+ - 'dom/bindings/mozwebidlcodegen/**'
+ - 'modules/libpref/init/**'
+ - 'modules/libpref/test/**'
+ - 'python/mach/**'
+ - 'python/mozboot/**'
+ - 'python/mozbuild/**'
+ - 'python/mozterm/**'
+ - 'python/mozversioncontrol/**'
+ - 'testing/mozbase/**'
+ - 'testing/xpcshell/xpcshellcommandline.py'
+
+mozperftest:
+ description: mozperftest unit tests
+ platform:
+ - linux1804-64/opt
+ - macosx1015-64/opt
+ - windows11-64/opt
+ treeherder:
+ symbol: mpu
+ run:
+ mach: perftest-test
+ fetches:
+ toolchain:
+ by-platform:
+ linux1804-64/opt:
+ - linux64-node
+ macosx1015-64/opt:
+ - macosx64-node
+ windows11-64/opt:
+ - win64-node
+ when:
+ files-changed:
+ - 'testing/performance/**'
+ - 'python/mozperftest/**'
+
+fxms-schemas:
+ description: >
+ Ensure messaging-system schemas are up-to-date and run Experimenter
+ integration tests.
+ platform:
+ - linux1804-64/opt
+ treeherder:
+ symbol: py3(fxms)
+ require-build:
+ by-project:
+ try:
+ linux1804-64/opt: build-linux64/opt
+ default:
+ linux1804-64/opt: build-linux64/opt
+ fetches:
+ build:
+ - artifact: target.tar.bz2
+ - artifact: target.common.tests.tar.gz
+ worker:
+ by-platform:
+ linux1804-64.*:
+ docker-image: {in-tree: "ubuntu1804-test"}
+ max-run-time: 3600
+ run:
+ using: run-task
+ cwd: '{checkout}'
+ command: >
+ cd browser/components/newtab/content-src/asrouter/schemas &&
+ env LD_LIBRARY_PATH=${MOZ_FETCHES_DIR}/firefox \
+ ${MOZ_FETCHES_DIR}/bin/xpcshell \
+ -g ${MOZ_FETCHES_DIR}/firefox \
+ -a ${MOZ_FETCHES_DIR}/firefox/browser \
+ extract-test-corpus.js
+ ../../../../../../mach python -- make-schemas.py --check
+ when:
+ files-changed:
+ - 'browser/components/newtab/content-src/asrouter/schemas/extract-test-corpus.js'
+ - 'browser/components/newtab/content-src/asrouter/schemas/make-schemas.py'
+ - 'browser/components/newtab/content-src/**/*.schema.json'
+ - 'browser/components/newtab/lib/CFRMessageProvider.sys.mjs'
+ - 'browser/components/newtab/lib/OnboardingMessageProvider.jsm'
+ - 'browser/components/newtab/lib/PanelTestProvider.sys.mjs'
+
+condprof:
+ description: testing/condprofile unit tests
+ platform:
+ - linux1804-64/opt
+ - macosx1015-64/opt
+ - windows11-64/opt
+ python-version: [3]
+ treeherder:
+ symbol: condprof
+ run:
+ using: python-test
+ subsuite: condprof
+ when:
+ files-changed:
+ - 'testing/condprofile/condprof**'
+ - 'testing/condprofile/setup.py'
+
+featuregates:
+ description: featuregates Python unit tests
+ platform:
+ - linux1804-64/opt
+ - windows11-64/opt
+ python-version: [3]
+ treeherder:
+ symbol: fg
+ run:
+ using: python-test
+ subsuite: featuregates
+ fetches:
+ toolchain:
+ by-platform:
+ linux1804-64/opt:
+ - linux64-node
+ windows11-64/opt:
+ - win64-node
+ when:
+ files-changed:
+ - 'toolkit/components/featuregates/**'
+
+talos:
+ description: testing/talos unit tests
+ platform: windows11-64/opt
+ python-version: [3]
+ treeherder:
+ symbol: tal
+ run:
+ using: python-test
+ subsuite: talos
+ when:
+ files-changed:
+ - 'testing/talos/**'
+
+telemetry-integration-tests:
+ description: pytest-based integration tests for Telemetry
+ always-target: false
+ platform:
+ - linux1804-64/opt
+ worker:
+ by-platform:
+ linux1804-64.*:
+ docker-image: {in-tree: "ubuntu1804-test"}
+ max-run-time: 3600
+ require-build:
+ by-project:
+ try:
+ linux1804-64/opt: build-linux64/opt
+ default:
+ linux1804-64/opt: build-linux64-shippable/opt
+ treeherder:
+ symbol: tt(i)
+ tier: 3
+ run-on-projects: []
+ run:
+ using: run-task
+ cwd: '{checkout}'
+ command: >
+ source /builds/worker/scripts/xvfb.sh &&
+ start_xvfb '1600x1200x24' 0 &&
+ export GECKO_BINARY_PATH=$MOZ_FETCHES_DIR/firefox/firefox &&
+ ./mach python-test --subsuite telemetry-integration-tests
+ fetches:
+ build:
+ - target.tar.bz2
+ - artifact: target.common.tests.tar.gz
+ dest: tests
+ - artifact: target.reftest.tests.tar.gz
+ dest: tests
+ when:
+ files-changed:
+ - 'toolkit/components/telemetry/**'
+
+telemetry-python:
+ description: Python unit tests for Telemetry
+ platform:
+ - linux1804-64/opt
+ - macosx1015-64/opt
+ - windows11-64/opt
+ python-version: [3]
+ treeherder:
+ symbol: tp
+ run:
+ using: python-test
+ subsuite: telemetry-python
+ fetches:
+ toolchain:
+ by-platform:
+ linux1804-64/opt:
+ - linux64-node
+ macosx1015-64/opt:
+ - macosx64-node
+ windows11-64/opt:
+ - win64-node
+ when:
+ files-changed:
+ - 'toolkit/components/telemetry/**'
+
+webext:
+ description: WebExtensions python utilities unit tests
+ platform:
+ - linux1804-64/opt
+ python-version: [3]
+ treeherder:
+ symbol: webext-py
+ tier: 2
+ run:
+ using: python-test
+ subsuite: webext-python
+ when:
+ files-changed:
+ - 'toolkit/components/extensions/webidl-api/**'
+ - 'toolkit/components/extensions/schemas/*.json'
+ - 'browser/components/extensions/schemas/*.json'
+ - 'mobile/android/components/extensions/schemas/*.json'
+
+xpcom:
+ description: xpcom unit tests
+ platform:
+ - linux1804-64/opt
+ python-version: [3]
+ treeherder:
+ symbol: xpcom
+ run:
+ using: python-test
+ subsuite: xpcom
+ when:
+ files-changed:
+ - 'third_party/python/ply/**'
+ - 'xpcom/components/*.py'
+ - 'xpcom/components/test/**'
+ - 'xpcom/ds/tools/**'
+ - 'xpcom/ds/test/**'
+ - 'xpcom/idl-parser/**'
diff --git a/taskcluster/ci/source-test/shadow-scheduler.yml b/taskcluster/ci/source-test/shadow-scheduler.yml
new file mode 100644
index 0000000000..97d1b1f30b
--- /dev/null
+++ b/taskcluster/ci/source-test/shadow-scheduler.yml
@@ -0,0 +1,178 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ platform: gecko-decision/opt
+ worker-type: t-linux-xlarge-source
+ worker:
+ docker-image: {in-tree: "lint"}
+ max-run-time: 3600
+ artifacts:
+ - type: file
+ name: public/shadow-scheduler/optimized-tasks.json
+ path: /builds/worker/optimized-tasks.json
+ env:
+ DECISION_TASK_ID: {task-reference: <decision>}
+ treeherder:
+ kind: other
+ tier: 3
+ run-on-projects: ['autoland-only']
+ run:
+ using: mach
+ mach: taskgraph optimized -v --json -p task-id=$DECISION_TASK_ID --output-file /builds/worker/optimized-tasks.json
+ sparse-profile: taskgraph
+
+relevant_tests:
+ description: Runs the relevant_tests optimization strategy instead of the default.
+ treeherder:
+ symbol: SS(relevant_tests)
+ index:
+ product: source
+ job-name: shadow-scheduler-relevant_tests
+ worker:
+ env:
+ TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.relevant_tests
+
+bugbug_tasks_medium:
+ description: Runs the bugbug_tasks_medium optimization strategy instead of the default.
+ treeherder:
+ symbol: SS(bugbug_tasks_medium)
+ index:
+ product: source
+ job-name: shadow-scheduler-bugbug_tasks_medium
+ worker:
+ env:
+ TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_tasks_medium
+
+bugbug_tasks_high:
+ description: Runs the bugbug_tasks_high optimization strategy (with a high confidence threshold) instead of the default.
+ treeherder:
+ symbol: SS(bugbug_tasks_high)
+ index:
+ product: source
+ job-name: shadow-scheduler-bugbug_tasks_high
+ worker:
+ env:
+ TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_tasks_high
+
+bugbug_debug_disperse:
+ description: Runs the bugbug_debug_disperse optimization strategy instead of the default.
+ treeherder:
+ symbol: SS(bugbug_debug_disperse)
+ index:
+ product: source
+ job-name: shadow-scheduler-bugbug_debug_disperse
+ worker:
+ env:
+ TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_debug_disperse
+
+bugbug_disperse_low:
+ description: Runs the bugbug_disperse_low optimization strategy instead of the default.
+ treeherder:
+ symbol: SS(bugbug_disperse_low)
+ index:
+ product: source
+ job-name: shadow-scheduler-bugbug_disperse_low
+ worker:
+ env:
+ TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_disperse_low
+
+bugbug_disperse_medium:
+ description: Runs the bugbug_disperse_medium optimization strategy instead of the default.
+ treeherder:
+ symbol: SS(bugbug_disperse_med)
+ index:
+ product: source
+ job-name: shadow-scheduler-bugbug_disperse_medium
+ worker:
+ env:
+ TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_disperse_medium
+
+bugbug_disperse_reduced_medium:
+ description: Runs the bugbug_disperse_reduced_medium optimization strategy instead of the default.
+ treeherder:
+ symbol: SS(bugbug_di_r_med_noun)
+ index:
+ product: source
+ job-name: shadow-scheduler-bugbug_disperse_reduced_medium
+ worker:
+ env:
+ TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_disperse_reduced_medium
+
+bugbug_reduced_manifests_config_selection_low:
+ description: Runs the bugbug_reduced_manifests_config_selection_low optimization strategy instead of the default.
+ treeherder:
+ symbol: SS(bugbug_r_c_s_low)
+ index:
+ product: source
+ job-name: shadow-scheduler-bugbug_reduced_manifests_config_selection_low
+ worker:
+ env:
+ TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_reduced_manifests_config_selection_low
+
+bugbug_reduced_manifests_config_selection_medium:
+ description: Runs the bugbug_reduced_manifests_config_selection_medium optimization strategy instead of the default.
+ treeherder:
+ symbol: SS(bugbug_r_c_s_med)
+ index:
+ product: source
+ job-name: shadow-scheduler-bugbug_reduced_manifests_config_selection_medium
+ worker:
+ env:
+ TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_reduced_manifests_config_selection_medium
+
+bugbug_disperse_medium_no_unseen:
+ description: Runs the bugbug_disperse_medium_no_unseen optimization strategy instead of the default.
+ treeherder:
+ symbol: SS(bugbug_disp_med_noun)
+ index:
+ product: source
+ job-name: shadow-scheduler-bugbug_disperse_medium_no_unseen
+ worker:
+ env:
+ TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_disperse_medium_no_unseen
+
+bugbug_disperse_medium_only_one:
+ description: Runs the bugbug_disperse_medium_only_one optimization strategy instead of the default.
+ treeherder:
+ symbol: SS(bugbug_disp_med_one)
+ index:
+ product: source
+ job-name: shadow-scheduler-bugbug_disperse_medium_only_one
+ worker:
+ env:
+ TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_disperse_medium_only_one
+
+bugbug_disperse_high:
+ description: Runs the bugbug_disperse_high optimization strategy instead of the default.
+ treeherder:
+ symbol: SS(bugbug_disperse_high)
+ index:
+ product: source
+ job-name: shadow-scheduler-bugbug_disperse_high
+ worker:
+ env:
+ TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_disperse_high
+
+bugbug_reduced:
+ description: Runs the bugbug_reduced optimization strategy instead of the default.
+ treeherder:
+ symbol: SS(bugbug_reduced)
+ index:
+ product: source
+ job-name: shadow-scheduler-bugbug_reduced
+ worker:
+ env:
+ TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_reduced
+
+bugbug_reduced_high:
+ description: Runs the bugbug_reduced optimization strategy (with a low confidence threshold) instead of the default.
+ treeherder:
+ symbol: SS(bugbug_reduced_high)
+ index:
+ product: source
+ job-name: shadow-scheduler-bugbug_reduced_high
+ worker:
+ env:
+ TASKGRAPH_OPTIMIZE_STRATEGIES: gecko_taskgraph.optimize:experimental.bugbug_reduced_high
diff --git a/taskcluster/ci/source-test/taskgraph.yml b/taskcluster/ci/source-test/taskgraph.yml
new file mode 100644
index 0000000000..132d5e488c
--- /dev/null
+++ b/taskcluster/ci/source-test/taskgraph.yml
@@ -0,0 +1,37 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+diff:
+ description: Generates diffs of CI changes
+ platform: linux1804-64/opt
+ worker-type: t-linux-xlarge-source
+ worker:
+ docker-image: {in-tree: "lint"}
+ max-run-time: 1800
+ # Uncomment to upload logs of the generations as artifacts.
+ # env:
+ # XDG_CACHE_HOME: "/builds/worker/artifacts/cache"
+ artifacts:
+ - type: directory
+ name: public/taskgraph
+ path: /builds/worker/artifacts
+ attributes:
+ code-review: true
+ always-target: true
+ treeherder:
+ kind: test
+ platform: gecko-decision/opt
+ symbol: tgdiff
+ tier: 2
+ run:
+ using: run-task
+ cwd: '{checkout}'
+ command: >-
+ mkdir -p /builds/worker/artifacts/diffs &&
+ ./mach taskgraph target --fast -p "taskcluster/test/params" -o "/builds/worker/artifacts/diffs/diff.txt" --diff {base_rev} &&
+ python taskcluster/scripts/misc/summarize-tgdiff.py /builds/worker/artifacts/diffs/ 20
+ when:
+ files-changed:
+ - 'taskcluster/ci/**'
+ - 'taskcluster/**/*.py'
diff --git a/taskcluster/ci/source-test/vendor.yml b/taskcluster/ci/source-test/vendor.yml
new file mode 100644
index 0000000000..c6594c6f68
--- /dev/null
+++ b/taskcluster/ci/source-test/vendor.yml
@@ -0,0 +1,44 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ worker-type: t-linux-xlarge-source
+ attributes:
+ code-review: true
+ worker:
+ docker-image: {in-tree: static-analysis-build}
+ max-run-time: 1200
+ artifacts:
+ - type: file
+ name: public/code-review/issues.json
+ path: /builds/worker/issues.json
+ treeherder:
+ kind: test
+ tier: 1
+ platform: lint/opt
+ run:
+ using: run-task
+
+rust:
+ description: Rust vendoring validation
+ treeherder:
+ symbol: rust(vendor)
+ worker:
+ env:
+ MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE: system
+ run:
+ cwd: '{checkout}'
+ command: >-
+ ./mach vendor rust --issues-json /builds/worker/issues.json
+ fetches:
+ toolchain:
+ - linux64-cargo-vet
+ - linux64-rust
+ when:
+ files-changed:
+ - 'Cargo.lock'
+ - '**/Cargo.toml'
+ - 'python/mozbuild/mozbuild/vendor/vendor_rust.py'
+ - 'supply-chain/**'
+ - 'third_party/rust/**'
diff --git a/taskcluster/ci/source-test/webcompat.yml b/taskcluster/ci/source-test/webcompat.yml
new file mode 100644
index 0000000000..66ff7910a6
--- /dev/null
+++ b/taskcluster/ci/source-test/webcompat.yml
@@ -0,0 +1,37 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ platform: linux1804-64/opt
+ require-build:
+ by-project:
+ try:
+ linux1804-64/opt: build-linux64/opt
+ default:
+ linux1804-64/opt: build-linux64-shippable/opt
+ fetches:
+ build:
+ - target.tar.bz2
+ toolchain:
+ - linux64-geckodriver
+ run-on-projects: []
+ treeherder:
+ kind: test
+ worker-type: t-linux-xlarge-source
+ worker:
+ docker-image: {in-tree: ubuntu1804-test}
+ max-run-time: 1800
+ optimization:
+ skip-unless-expanded: null
+
+interventions:
+ description: webcompat intervention tests
+ treeherder:
+ symbol: wc(I)
+ tier: 3
+ python-version: [3]
+ run:
+ using: mach
+ # Need to start Xvfb if we remove --headless
+ mach: test-interventions --headless --binary $MOZ_FETCHES_DIR/firefox/firefox --webdriver-binary $MOZ_FETCHES_DIR/geckodriver --log-tbpl -
diff --git a/taskcluster/ci/source-test/webidl.yml b/taskcluster/ci/source-test/webidl.yml
new file mode 100644
index 0000000000..eec7a75e38
--- /dev/null
+++ b/taskcluster/ci/source-test/webidl.yml
@@ -0,0 +1,24 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+test:
+ description: WebIDL parser tests
+ platform: lint/opt
+ treeherder:
+ symbol: Wp
+ kind: test
+ tier: 1
+ worker-type: t-linux-xlarge-source
+ worker:
+ docker-image: {in-tree: "lint"}
+ max-run-time: 1800
+ run:
+ using: mach
+ mach: webidl-parser-test --verbose
+ when:
+ files-changed:
+ - 'dom/bindings/parser/runtests.py'
+ - 'dom/bindings/parser/WebIDL.py'
+ - 'dom/bindings/parser/tests/**'
+ - 'other-licenses/ply/**'
diff --git a/taskcluster/ci/source-test/wpt-manifest.yml b/taskcluster/ci/source-test/wpt-manifest.yml
new file mode 100644
index 0000000000..06b29b60f5
--- /dev/null
+++ b/taskcluster/ci/source-test/wpt-manifest.yml
@@ -0,0 +1,39 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ platform: linux64/opt
+ treeherder:
+ kind: test
+ tier: 2
+ worker-type: t-linux-xlarge-source
+ worker:
+ docker-image: {in-tree: "lint"}
+ max-run-time: 1800
+
+upload:
+ description: Generate and store the web-platform-tests manifest
+ treeherder:
+ symbol: Wm
+ index:
+ product: source
+ job-name: manifest-upload
+ rank: build_date
+ run:
+ using: run-task
+ cwd: '{checkout}'
+ command: >
+ ./mach wpt-manifest-update --config testing/web-platform/wptrunner.ini --no-download
+ && tar -cvzf manifests.tar.gz -C testing/web-platform/ meta/MANIFEST.json mozilla/meta/MANIFEST.json
+ worker:
+ artifacts:
+ - type: file
+ path: /builds/worker/checkouts/gecko/manifests.tar.gz
+ name: public/manifests.tar.gz
+
+ max-run-time: 3600
+ when:
+ files-changed:
+ - 'testing/web-platform/tests/**'
+ - 'testing/web-platform/mozilla/tests/**'
diff --git a/taskcluster/ci/source-test/wpt-metadata.yml b/taskcluster/ci/source-test/wpt-metadata.yml
new file mode 100644
index 0000000000..b2c54d62b9
--- /dev/null
+++ b/taskcluster/ci/source-test/wpt-metadata.yml
@@ -0,0 +1,58 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ platform: lint/opt
+ treeherder:
+ kind: test
+ tier: 2
+ worker-type: t-linux-xlarge-source
+ worker:
+ docker-image: {in-tree: "lint"}
+ max-run-time: 1800
+
+summary:
+ description: Summarize wpt metadata
+ treeherder:
+ symbol: wpt-meta
+ index:
+ product: source
+ job-name: source-wpt-metadata-summary
+ run:
+ using: mach
+ mach: wpt-metadata-summary --out-dir=/builds/worker/artifacts
+ worker:
+ artifacts:
+ - type: directory
+ path: /builds/worker/artifacts
+ name: public
+ max-run-time: 2700
+ when:
+ files-changed:
+ - 'testing/web-platform/meta/**'
+ - 'testing/web-platform/mozilla/meta/**'
+ - 'testing/web-platform/metasummary.py'
+
+
+fission-regression:
+ description: Summarize fission regressions in wpt
+ treeherder:
+ symbol: wpt-fis
+ index:
+ product: source
+ job-name: source-wpt-fission-regressions
+ run:
+ using: mach
+ mach: wpt-fission-regressions --all-json /builds/worker/artifacts/regressions.json --untriaged /builds/worker/artifacts/untriaged.txt
+ worker:
+ artifacts:
+ - type: directory
+ path: /builds/worker/artifacts
+ name: public
+ max-run-time: 2700
+ when:
+ files-changed:
+ - 'testing/web-platform/meta/**'
+ - 'testing/web-platform/mozilla/meta/**'
+ - 'testing/web-platform/fissionregressions.py'
diff --git a/taskcluster/ci/spidermonkey/kind.yml b/taskcluster/ci/spidermonkey/kind.yml
new file mode 100644
index 0000000000..5146dd717b
--- /dev/null
+++ b/taskcluster/ci/spidermonkey/kind.yml
@@ -0,0 +1,74 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - toolchain
+
+transforms:
+ - gecko_taskgraph.transforms.spidermonkey:transforms
+ - gecko_taskgraph.transforms.build_attrs:transforms
+ - gecko_taskgraph.transforms.build_lints:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ attributes:
+ retrigger: true
+ treeherder:
+ kind: build
+ tier: 1
+ index:
+ product: firefox
+ worker-type: b-linux-gcp
+ run:
+ using: spidermonkey
+ when:
+ files-changed:
+ # any when.files-changed specified below in a job will be
+ # appended to this list
+ - build/**
+ - config/**
+ - configure.py
+ - dom/bindings/**
+ - intl/icu/**
+ - js/moz.configure
+ - js/public/**
+ - js/src/**
+ - layout/tools/reftest/reftest/**
+ - Makefile.in
+ - media/webrtc/trunk/tools/gyp/**
+ - memory/**
+ - mfbt/**
+ - modules/fdlibm/**
+ - modules/zlib/src/**
+ - mozglue/**
+ - moz.build
+ - moz.configure
+ - nsprpub/**
+ - python/**
+ - taskcluster/moz.build
+ - taskcluster/ci/spidermonkey/kind.yml
+ - testing/mozbase/**
+ - testing/web-platform/**
+ - test.mozbuild
+ - toolkit/mozapps/installer/package-name.mk
+ - toolkit/mozapps/installer/upload-files.mk
+ fetches:
+ toolchain:
+ by-worker-type:
+ .*-b-win2012:
+ - win64-clang
+ - win64-rust
+ default:
+ - linux64-clang
+ - linux64-gcc
+ - linux64-rust
+ - linux64-dump_syms
+ - sysroot-x86_64-linux-gnu
+
+jobs-from:
+ - linux.yml
+ - windows.yml
diff --git a/taskcluster/ci/spidermonkey/linux.yml b/taskcluster/ci/spidermonkey/linux.yml
new file mode 100644
index 0000000000..fd144ee7e7
--- /dev/null
+++ b/taskcluster/ci/spidermonkey/linux.yml
@@ -0,0 +1,543 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ worker:
+ max-run-time: 10800
+ docker-image: {in-tree: debian11-amd64-build}
+ env:
+ MOZ_JS_UPLOAD_BINARIES_DEFAULT: "0"
+ run:
+ tooltool-downloads: public
+
+sm-package-linux64/opt:
+ description: "Spidermonkey source package and test"
+ index:
+ job-name: sm-package-linux64-opt
+ treeherder:
+ symbol: SM(pkg)
+ platform: linux64/opt
+ run:
+ using: spidermonkey-package
+ spidermonkey-variant: plain
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-breakpad-injector
+ - linux64-minidump-stackwalk
+ - linux64-llvm-symbolizer
+ - linux64-rust
+ - linux64-gcc
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+
+sm-plain-linux64/debug:
+ description: "Spidermonkey Plain"
+ index:
+ job-name: sm-plain-linux64-debug
+ treeherder:
+ platform: linux64/debug
+ symbol: SM(p)
+ run:
+ spidermonkey-variant: plaindebug
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-breakpad-injector
+ - linux64-minidump-stackwalk
+ - linux64-llvm-symbolizer
+ - linux64-rust
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+
+sm-plain-linux64/opt:
+ description: "Spidermonkey Plain"
+ index:
+ job-name: sm-plain-linux64-opt
+ treeherder:
+ symbol: SM(p)
+ platform: linux64/opt
+ run:
+ spidermonkey-variant: plain
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-breakpad-injector
+ - linux64-minidump-stackwalk
+ - linux64-llvm-symbolizer
+ - linux64-rust
+ - linux64-gcc
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+
+sm-smoosh-linux64/debug:
+ description: "Spidermonkey SmooshMonkey"
+ index:
+ job-name: sm-smoosh-linux64-debug
+ treeherder:
+ platform: linux64/debug
+ symbol: SM(smoosh)
+ tier: 3
+ run:
+ spidermonkey-variant: smooshdebug
+ run-on-projects: []
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-breakpad-injector
+ - linux64-minidump-stackwalk
+ - linux64-llvm-symbolizer
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ when:
+ files-changed:
+ - 'third_party/rust/jsparagus/**'
+ - 'js/src/frontend/Frontend2.cpp'
+ - 'js/src/frontend/Frontend2.h'
+ - 'js/src/frontend/SourceNotes.h'
+ - 'js/src/frontend/smoosh/**'
+ - 'js/public/Symbol.h'
+ - 'js/src/vm/AsyncFunctionResolveKind.h'
+ - 'js/src/vm/BytecodeFormatFlags.h'
+ - 'js/src/vm/CheckIsObjectKind.h'
+ - 'js/src/vm/FunctionFlags.h'
+ - 'js/src/vm/FunctionPrefixKind.h'
+ - 'js/src/vm/GeneratorAndAsyncKind.h'
+ - 'js/src/vm/GeneratorResumeKind.h'
+ - 'js/src/vm/Opcodes.h'
+ - 'js/src/vm/ThrowMsgKind.h'
+ - 'js/src/vm/StencilEnums.h'
+
+sm-smoosh-linux64/opt:
+ description: "Spidermonkey SmooshMonkey"
+ index:
+ job-name: sm-smoosh-linux64-opt
+ treeherder:
+ symbol: SM(smoosh)
+ platform: linux64/opt
+ tier: 3
+ run:
+ spidermonkey-variant: smoosh
+ run-on-projects: []
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-breakpad-injector
+ - linux64-minidump-stackwalk
+ - linux64-llvm-symbolizer
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ when:
+ files-changed:
+ - 'third_party/rust/jsparagus/**'
+ - 'js/src/frontend/Frontend2.cpp'
+ - 'js/src/frontend/Frontend2.h'
+ - 'js/src/frontend/SourceNotes.h'
+ - 'js/src/frontend/smoosh/**'
+ - 'js/public/Symbol.h'
+ - 'js/src/vm/AsyncFunctionResolveKind.h'
+ - 'js/src/vm/BytecodeFormatFlags.h'
+ - 'js/src/vm/CheckIsObjectKind.h'
+ - 'js/src/vm/FunctionFlags.h'
+ - 'js/src/vm/FunctionPrefixKind.h'
+ - 'js/src/vm/GeneratorAndAsyncKind.h'
+ - 'js/src/vm/GeneratorResumeKind.h'
+ - 'js/src/vm/Opcodes.h'
+ - 'js/src/vm/ThrowMsgKind.h'
+ - 'js/src/vm/StencilEnums.h'
+
+sm-nojit-linux64/opt:
+ description: "Spidermonkey no JIT"
+ index:
+ job-name: sm-nojit-linux64-opt
+ treeherder:
+ symbol: SM(nojit)
+ platform: linux64/opt
+ run:
+ spidermonkey-variant: nojit
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-breakpad-injector
+ - linux64-minidump-stackwalk
+ - linux64-llvm-symbolizer
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+
+sm-plain-linux32/debug:
+ description: "Spidermonkey Plain"
+ index:
+ job-name: sm-plain-linux32-debug
+ treeherder:
+ platform: linux32/debug
+ symbol: SM(p)
+ run:
+ spidermonkey-variant: plaindebug
+ spidermonkey-platform: linux
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-breakpad-injector
+ - linux64-minidump-stackwalk
+ - linux64-llvm-symbolizer
+ - linux64-pkgconf
+ - sysroot-i686-linux-gnu
+ - sysroot-x86_64-linux-gnu
+
+sm-arm-sim-linux32/debug:
+ description: "Spidermonkey ARM sim"
+ index:
+ job-name: sm-arm-sim-linux32-debug
+ treeherder:
+ platform: linux32/debug
+ symbol: SM(arm)
+ run:
+ spidermonkey-variant: arm-sim
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-breakpad-injector
+ - linux64-minidump-stackwalk
+ - linux64-llvm-symbolizer
+ - linux64-pkgconf
+ - sysroot-i686-linux-gnu
+ - sysroot-x86_64-linux-gnu
+
+sm-arm64-sim-linux64/debug:
+ description: "Spidermonkey ARM64 sim"
+ index:
+ job-name: sm-arm64-sim-linux64-debug
+ treeherder:
+ platform: linux64/debug
+ symbol: SM(arm64)
+ run:
+ spidermonkey-variant: arm64-sim
+ worker:
+ env:
+ MOZ_JS_UPLOAD_BINARIES_DEFAULT: "1"
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-breakpad-injector
+ - linux64-minidump-stackwalk
+ - linux64-llvm-symbolizer
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+
+sm-asan-linux64/opt:
+ description: "Spidermonkey Address Sanitizer"
+ index:
+ job-name: sm-linux64-asan-opt
+ treeherder:
+ symbol: SM(asan)
+ platform: linux64/opt
+ worker:
+ env:
+ MOZ_JS_UPLOAD_BINARIES_DEFAULT: "1"
+ run:
+ spidermonkey-variant: asan
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-breakpad-injector
+ - linux64-minidump-stackwalk
+ - linux64-llvm-symbolizer
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+
+sm-compacting-linux64/debug:
+ description: "Spidermonkey Compacting"
+ index:
+ job-name: sm-compacting-linux64-debug
+ treeherder:
+ platform: linux64/debug
+ symbol: SM(cgc)
+ run:
+ spidermonkey-variant: compacting
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-breakpad-injector
+ - linux64-minidump-stackwalk
+ - linux64-llvm-symbolizer
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+
+sm-linux64-wasi/opt:
+ description: "Spidermonkey WASI opt build"
+ index:
+ job-name: sm-linux64-wasi-opt
+ treeherder:
+ platform: linux64/opt
+ symbol: SM(wasi)
+ tier: 2
+ run:
+ spidermonkey-variant: wasi
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+# Like sm-linux64-wasi/opt but with Intl/ICU enabled.
+sm-linux64-wasi-intl/opt:
+ description: "Spidermonkey WASI Intl opt build"
+ index:
+ job-name: sm-linux64-wasi-intl-opt
+ treeherder:
+ platform: linux64/opt
+ symbol: SM(wasi-intl)
+ tier: 2
+ run:
+ spidermonkey-variant: wasi-intl
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+sm-wasm-no-experimental-linux64/debug:
+ description: "Spidermonkey WebAssembly No experimental features"
+ index:
+ job-name: sm-wasm-no-experimental-linux64-debug
+ treeherder:
+ platform: linux64/debug
+ symbol: SM(wasm-no-experimental)
+ tier: 2
+ run:
+ spidermonkey-variant: wasm-noexperimental
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-breakpad-injector
+ - linux64-minidump-stackwalk
+ - linux64-llvm-symbolizer
+ - linux64-rust
+ - linux64-gcc
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+
+sm-msan-linux64/opt:
+ description: "Spidermonkey Memory Sanitizer"
+ index:
+ job-name: sm-linux64-msan-opt
+ treeherder:
+ symbol: SM(msan)
+ platform: linux64/opt
+ tier: 3
+ worker:
+ env:
+ MOZ_JS_UPLOAD_BINARIES_DEFAULT: "1"
+ run:
+ spidermonkey-variant: msan
+ # Disable by default by allow try pushes to explicitly request.
+ run-on-projects: []
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-breakpad-injector
+ - linux64-minidump-stackwalk
+ - linux64-llvm-symbolizer
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+
+sm-tsan-linux64/opt:
+ description: "Spidermonkey Thread Sanitizer"
+ index:
+ job-name: sm-linux64-tsan-opt
+ treeherder:
+ symbol: SM(tsan)
+ platform: linux64/opt
+ worker:
+ env:
+ MOZ_JS_UPLOAD_BINARIES_DEFAULT: "1"
+ run:
+ spidermonkey-variant: tsan
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-gcc
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-breakpad-injector
+ - linux64-minidump-stackwalk
+ - linux64-llvm-symbolizer
+ - linux64-rust-dev
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+
+sm-rootanalysis-linux64/debug:
+ description: "Spidermonkey Root Analysis"
+ index:
+ job-name: sm-rootanalysis-linux64-debug
+ treeherder:
+ platform: linux64/debug
+ symbol: SM(r)
+ run:
+ spidermonkey-variant: rootanalysis
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-breakpad-injector
+ - linux64-minidump-stackwalk
+ - linux64-llvm-symbolizer
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+
+sm-nonunified-linux64/debug:
+ description: "Spidermonkey Non-Unified Debug"
+ index:
+ job-name: sm-nonunified-linux64-debug
+ treeherder:
+ platform: linux64/debug
+ symbol: SM(nu)
+ run:
+ spidermonkey-variant: nonunified
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-breakpad-injector
+ - linux64-minidump-stackwalk
+ - linux64-llvm-symbolizer
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+
+sm-fuzzing-linux64/opt:
+ description: "Spidermonkey Fuzzing"
+ index:
+ job-name: sm-linux64-fuzzing
+ treeherder:
+ platform: linux64/opt
+ symbol: SM(f)
+ worker:
+ env:
+ MOZ_JS_UPLOAD_BINARIES_DEFAULT: "1"
+ run:
+ spidermonkey-variant: fuzzing
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-breakpad-injector
+ - linux64-minidump-stackwalk
+ - linux64-llvm-symbolizer
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+
+sm-fuzzilli-linux64/debug:
+ description: "Spidermonkey Fuzzilli debug"
+ index:
+ job-name: sm-linux64-fuzzilli-debug
+ treeherder:
+ platform: linux64/debug
+ symbol: SM(fuzzilli)
+ worker:
+ env:
+ MOZ_JS_UPLOAD_BINARIES_DEFAULT: "1"
+ run:
+ spidermonkey-variant: fuzzilli
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+
+sm-gdb-linux64/debug:
+ description: "Spidermonkey GDB Pretty-printers"
+ index:
+ job-name: sm-gdb-linux64
+ worker:
+ docker-image: {in-tree: gdb-test}
+ treeherder:
+ platform: linux64/debug
+ tier: 2
+ symbol: SM(gdb)
+ run:
+ spidermonkey-variant: gdb
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-gcc
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-breakpad-injector
+ - linux64-minidump-stackwalk
+ - linux64-llvm-symbolizer
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+
+sm-rt-linux64/debug:
+ description: "SpiderMonkey Records&Tuples"
+ index:
+ job-name: sm-rt-linux64-debug
+ treeherder:
+ platform: linux64/debug
+ symbol: SM(rt)
+ run:
+ spidermonkey-variant: rtdebug
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-breakpad-injector
+ - linux64-minidump-stackwalk
+ - linux64-llvm-symbolizer
+ - linux64-rust
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
diff --git a/taskcluster/ci/spidermonkey/windows.yml b/taskcluster/ci/spidermonkey/windows.yml
new file mode 100644
index 0000000000..7bdb09281d
--- /dev/null
+++ b/taskcluster/ci/spidermonkey/windows.yml
@@ -0,0 +1,118 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ worker-type: b-win2012
+ worker:
+ max-run-time: 10800
+ run:
+ tooltool-downloads: public
+
+sm-plain-win64/debug:
+ description: "Spidermonkey Plain win64 debug"
+ index:
+ job-name: sm-plain-win64-debug
+ treeherder:
+ platform: windows2012-64/debug
+ symbol: SM(p)
+ run:
+ spidermonkey-variant: plaindebug
+ spidermonkey-platform: win64
+ fetches:
+ toolchain:
+ - win64-clang
+ - win64-rust
+ - win64-mozmake
+ - vs
+
+sm-plain-win32/debug:
+ description: "Spidermonkey Plain win32 debug"
+ index:
+ job-name: sm-plain-win32-debug
+ treeherder:
+ platform: windows2012-32/debug
+ symbol: SM(p)
+ tier: 2
+ run:
+ spidermonkey-variant: plaindebug
+ spidermonkey-platform: win32
+ run-on-projects: ['mozilla-central']
+ fetches:
+ toolchain:
+ - win64-clang
+ - win64-rust
+ - win64-mozmake
+ - vs
+
+sm-plain-win64/opt:
+ description: "Spidermonkey Plain win64 opt"
+ index:
+ job-name: sm-plain-win64-opt
+ treeherder:
+ platform: windows2012-64/opt
+ symbol: SM(p)
+ run:
+ spidermonkey-variant: plain
+ spidermonkey-platform: win64
+ fetches:
+ toolchain:
+ - win64-clang
+ - win64-rust
+ - win64-mozmake
+ - vs
+
+sm-plain-win32/opt:
+ description: "Spidermonkey Plain win32 opt"
+ index:
+ job-name: sm-plain-win32-opt
+ treeherder:
+ platform: windows2012-32/opt
+ symbol: SM(p)
+ tier: 2
+ run:
+ spidermonkey-variant: plain
+ spidermonkey-platform: win32
+ run-on-projects: ['mozilla-central']
+ fetches:
+ toolchain:
+ - win64-clang
+ - win64-rust
+ - win64-mozmake
+ - vs
+
+sm-compacting-win64/debug:
+ description: "Spidermonkey Compacting win64 debug"
+ index:
+ job-name: sm-compacting-win64-debug
+ treeherder:
+ platform: windows2012-64/debug
+ symbol: SM(cgc)
+ run:
+ spidermonkey-variant: compacting
+ spidermonkey-platform: win64
+ fetches:
+ toolchain:
+ - win64-clang
+ - win64-rust
+ - win64-mozmake
+ - vs
+
+sm-compacting-win32/debug:
+ description: "Spidermonkey Compacting win32 debug"
+ index:
+ job-name: sm-compacting-win32-debug
+ treeherder:
+ platform: windows2012-32/debug
+ symbol: SM(cgc)
+ tier: 2
+ run:
+ spidermonkey-variant: compacting
+ spidermonkey-platform: win32
+ run-on-projects: []
+ fetches:
+ toolchain:
+ - win64-clang
+ - win64-rust
+ - win64-mozmake
+ - vs
diff --git a/taskcluster/ci/startup-test/kind.yml b/taskcluster/ci/startup-test/kind.yml
new file mode 100644
index 0000000000..f466e25b83
--- /dev/null
+++ b/taskcluster/ci/startup-test/kind.yml
@@ -0,0 +1,128 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ # We want to test the signed version of a build, to make sure
+ # any startup problems or crashes caused by signing are caught
+ # This means we depend on a different kind depending on the platform
+ # linux
+ - build-signing
+ # mac
+ - repackage
+ # windows
+ - repackage-signing
+
+transforms:
+ - gecko_taskgraph.transforms.startup_test:transforms
+ - gecko_taskgraph.transforms.release:run_on_releases
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ name: startup-test
+ description: Check whether or not a product crashes on startup
+ run-on-projects: ['mozilla-central']
+ run-on-releases: ['nightly', 'beta', 'release-rc']
+ worker:
+ max-run-time: 3600
+ run:
+ sparse-profile: mozharness
+ attributes:
+ build_type: opt
+ treeherder:
+ symbol: SUT
+ kind: test
+ tier: 1
+
+jobs:
+ linux32:
+ dependencies:
+ build-signing: build-signing-linux-shippable/opt
+ run:
+ using: run-task
+ cwd: "{checkout}"
+ extra-config:
+ upstream_kind: build-signing
+ upstream_artifact: target.tar.bz2
+ binary: firefox
+ worker-type: b-linux-gcp
+ worker:
+ docker-image: {in-tree: ubuntu1804-test}
+ shipping-product: firefox
+ attributes:
+ build_platform: linux-shippable
+ treeherder:
+ platform: linux-shippable/opt
+
+ linux64:
+ dependencies:
+ build-signing: build-signing-linux64-shippable/opt
+ run:
+ using: run-task
+ cwd: "{checkout}"
+ extra-config:
+ upstream_kind: build-signing
+ upstream_artifact: target.tar.bz2
+ binary: firefox
+ worker-type: b-linux-gcp
+ worker:
+ docker-image: {in-tree: ubuntu1804-test}
+ shipping-product: firefox
+ attributes:
+ build_platform: linux64-shippable
+ treeherder:
+ platform: linux64-shippable/opt
+
+ macosx64:
+ dependencies:
+ repackage: repackage-macosx64-shippable/opt
+ run:
+ using: mach
+ python-version: 3
+ extra-config:
+ upstream_kind: repackage
+ upstream_artifact: target.dmg
+ binary: Contents/MacOS/firefox
+ worker-type: t-osx-1015-r8
+ shipping-product: firefox
+ attributes:
+ build_platform: macosx64-shippable
+ treeherder:
+ platform: macosx64-shippable/opt
+
+ win32:
+ dependencies:
+ repackage-signing: repackage-signing-win32-shippable/opt
+ run:
+ using: mach
+ python-version: 3
+ extra-config:
+ upstream_kind: repackage-signing
+ upstream_artifact: target.installer.exe
+ binary: core/firefox.exe
+ worker-type: win11-64-2009-source
+ shipping-product: firefox
+ attributes:
+ build_platform: win32-shippable
+ treeherder:
+ platform: windows2012-32-shippable/opt
+
+ win64:
+ dependencies:
+ repackage-signing: repackage-signing-win64-shippable/opt
+ run:
+ using: mach
+ python-version: 3
+ extra-config:
+ upstream_kind: repackage-signing
+ upstream_artifact: target.installer.exe
+ binary: core/firefox.exe
+ worker-type: win11-64-2009-source
+ shipping-product: firefox
+ attributes:
+ build_platform: win64-shippable
+ treeherder:
+ platform: windows2012-64-shippable/opt
diff --git a/taskcluster/ci/static-analysis-autotest/kind.yml b/taskcluster/ci/static-analysis-autotest/kind.yml
new file mode 100644
index 0000000000..ceacc22ce1
--- /dev/null
+++ b/taskcluster/ci/static-analysis-autotest/kind.yml
@@ -0,0 +1,101 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - toolchain
+
+transforms:
+ - gecko_taskgraph.transforms.build_attrs:transforms
+ - gecko_taskgraph.transforms.build_lints:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ attributes:
+ retrigger: true
+ index:
+ product: firefox
+ worker:
+ skip-artifacts: true
+ max-run-time: 3600
+ env:
+ PERFHERDER_EXTRA_OPTIONS: static-analysis-autotest
+ use-system-python: false
+ run-on-projects: ['mozilla-central']
+ run:
+ using: mozharness
+ actions: [static-analysis-autotest]
+ script: mozharness/scripts/fx_desktop_build.py
+ treeherder:
+ symbol: Sa
+ kind: build
+ tier: 1
+
+jobs:
+ linux64-st-autotest/debug:
+ description: "Linux64 Debug Static Analysis Autotest"
+ index:
+ job-name: linux64-st-autotest-debug
+ treeherder:
+ platform: linux64/debug
+ worker-type: t-linux-large
+ worker:
+ docker-image: {in-tree: static-analysis-build}
+ env:
+ # clang-tidy needs a recent libstdc++, which can be found in the clang
+ # toolchain.
+ LD_LIBRARY_PATH: /builds/worker/checkouts/gecko/clang/lib
+ PERFHERDER_EXTRA_OPTIONS: static-analysis-autotest
+ run:
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_sub_linux_configs/64_stat_and_debug.py
+ tooltool-downloads: public
+ keep-artifacts: false
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-clang-tidy
+ - linux64-rust
+ - linux64-sccache
+ - linux64-cbindgen
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+
+ win64-st-autotest/debug:
+ description: "Win64 Debug Static Analysis Autotest"
+ index:
+ job-name: win64-st-autotest-debug
+ treeherder:
+ platform: windows2012-64/debug
+ tier: 2
+ worker-type: b-win2012
+ run:
+ config:
+ - builds/releng_base_firefox.py
+ - builds/taskcluster_base_windows.py
+ - builds/taskcluster_base_win64.py
+ - builds/taskcluster_sub_win64/debug.py
+ extra-config:
+ mozconfig_variant: debug
+ use-sccache: true
+ fetches:
+ toolchain:
+ - win64-clang
+ - win64-rust
+ - win64-sccache
+ - win64-cbindgen
+ - win64-clang-tidy
+ - win64-nasm
+ - win64-node
+ - win64-dump_syms
+ - win64-winchecksec
+ - vs
+ - sysroot-wasm32-wasi
diff --git a/taskcluster/ci/system-symbols-reprocess/kind.yml b/taskcluster/ci/system-symbols-reprocess/kind.yml
new file mode 100644
index 0000000000..1cde38d58b
--- /dev/null
+++ b/taskcluster/ci/system-symbols-reprocess/kind.yml
@@ -0,0 +1,46 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.multi_dep:loader
+
+# multi_dep loader will need to group on "build_platform" attribute
+group-by: platform
+
+# we need that to apply grouping only on jobs that have "build_platform", so we
+# dont fail for the "fetch" kind that does is a dependency but does not have it
+only-for-attributes:
+ - build_platform
+
+transforms:
+ - gecko_taskgraph.transforms.reprocess_symbols:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+primary-dependency: system-symbols
+
+kind-dependencies:
+ - system-symbols
+ - system-symbols-upload
+ - fetch
+
+job-template:
+ description: Reprocess Symbols on Crash-Stats
+ attributes:
+ cron: true
+ worker-type: b-linux-gcp
+ worker:
+ docker-image: {in-tree: system-symbols-linux-scraper}
+ max-run-time: 7200
+ env:
+ # {level} gets replaced in the reprocess_symbols transform
+ CRASHSTATS_SECRET: "project/releng/gecko/build/level-{level}/gecko-symbol-reprocess"
+ DUMP_SYMS: "/bin/false"
+ run:
+ using: run-task
+ command: {artifact-reference: "${MOZ_FETCHES_DIR}/symbol-scrapers/reprocess.sh <build/public/build/target.crashreporter-symbols.zip>"}
+ fetches:
+ fetch:
+ - symbol-scrapers
+ scopes:
+ - secrets:get:project/releng/gecko/build/level-{level}/gecko-symbol-reprocess
diff --git a/taskcluster/ci/system-symbols-upload/kind.yml b/taskcluster/ci/system-symbols-upload/kind.yml
new file mode 100644
index 0000000000..66d7c65f24
--- /dev/null
+++ b/taskcluster/ci/system-symbols-upload/kind.yml
@@ -0,0 +1,31 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.upload_symbols:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - system-symbols
+
+job-template:
+ description: Upload Symbols
+ attributes:
+ cron: true
+ worker-type: b-linux-gcp
+ worker:
+ docker-image: {in-tree: "lint"}
+ max-run-time: 1200
+ env:
+ # {level} gets replaced in the upload_symbols transform
+ SYMBOL_SECRET: "project/releng/gecko/build/level-{level}/gecko-symbol-upload"
+ run:
+ using: mach
+ mach: {artifact-reference: "python toolkit/crashreporter/tools/upload_symbols.py <build/public/build/target.crashreporter-symbols.zip> --ignore-missing"}
+ sparse-profile: upload-symbols
+ scopes:
+ - secrets:get:project/releng/gecko/build/level-{level}/gecko-symbol-upload
diff --git a/taskcluster/ci/system-symbols/kind.yml b/taskcluster/ci/system-symbols/kind.yml
new file mode 100644
index 0000000000..eed2bd6964
--- /dev/null
+++ b/taskcluster/ci/system-symbols/kind.yml
@@ -0,0 +1,248 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - toolchain
+ - fetch
+
+transforms:
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ attributes:
+ cron: true
+ # This enables uploading symbols.
+ enable-full-crashsymbols: true
+ fetches:
+ toolchain:
+ - linux64-dump_syms
+ treeherder:
+ platform: symbols/opt
+ kind: other
+ tier: 2
+ worker-type: b-linux-gcp
+ worker:
+ env:
+ MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE: system
+
+jobs:
+ mac:
+ description: Extract macOS system symbols found in crashreports
+ attributes:
+ build_platform: macos
+ index:
+ product: system-symbols
+ job-name: mac
+ type: generic
+ worker:
+ env:
+ PROCESSED_PACKAGES_INDEX: gecko.v2.mozilla-central.latest.system-symbols.mac
+ PROCESSED_PACKAGES_PATH: public/build/processed-packages.gz
+ artifacts:
+ - name: public/build
+ type: directory
+ path: /builds/worker/artifacts/
+ docker-image: {in-tree: system-symbols-mac}
+ max-run-time: 28800
+ run:
+ using: run-task
+ command: >-
+ ./run.sh
+ treeherder:
+ symbol: system-symbols-mac
+ fetches:
+ toolchain:
+ - linux64-libdmg
+ win:
+ description: Extract windows system symbols found in crashreports
+ attributes:
+ build_platform: windows
+ index:
+ product: system-symbols
+ job-name: win
+ type: generic
+ worker:
+ artifacts:
+ - name: public/build
+ type: directory
+ path: /builds/worker/artifacts/
+ docker-image: {in-tree: system-symbols-win}
+ max-run-time: 3600
+ run:
+ using: run-task
+ command: >-
+ ./run.sh
+ treeherder:
+ symbol: system-symbols-win
+ archlinux:
+ description: Extract ArchLinux system symbols found in crashreports
+ attributes:
+ build_platform: archlinux
+ index:
+ product: system-symbols
+ job-name: archlinux
+ type: generic
+ worker:
+ artifacts:
+ - name: public/build
+ type: directory
+ path: /builds/worker/artifacts/
+ docker-image: {in-tree: system-symbols-linux-scraper}
+ max-run-time: 14400
+ run:
+ using: run-task
+ command: >-
+ ./run.sh arch
+ treeherder:
+ symbol: sys-symbols-archlinux
+ fetches:
+ fetch:
+ - symbol-scrapers
+ debian:
+ description: Extract Debian system symbols found in crashreports
+ attributes:
+ build_platform: debian
+ index:
+ product: system-symbols
+ job-name: debian
+ type: generic
+ worker:
+ artifacts:
+ - name: public/build
+ type: directory
+ path: /builds/worker/artifacts/
+ docker-image: {in-tree: system-symbols-linux-scraper}
+ max-run-time: 14400
+ run:
+ using: run-task
+ command: >-
+ ./run.sh debian
+ treeherder:
+ symbol: sys-symbols-debian
+ fetches:
+ fetch:
+ - symbol-scrapers
+ firefox-snap:
+ description: Extract Firefox Snap symbols found in crashreports
+ attributes:
+ build_platform: firefox-snap
+ index:
+ product: system-symbols
+ job-name: firefox-snap
+ type: generic
+ worker:
+ artifacts:
+ - name: public/build
+ type: directory
+ path: /builds/worker/artifacts/
+ docker-image: {in-tree: system-symbols-linux-scraper}
+ max-run-time: 14400
+ run:
+ using: run-task
+ command: >-
+ ./run.sh firefox-snap
+ treeherder:
+ symbol: firefox-symbols-snap
+ fetches:
+ fetch:
+ - symbol-scrapers
+ gnome-sdk-snap:
+ description: Extract GNOME SDK Snap symbols found in crashreports
+ attributes:
+ build_platform: gnome-sdk-snap
+ index:
+ product: system-symbols
+ job-name: gnome-sdk-snap
+ type: generic
+ worker:
+ artifacts:
+ - name: public/build
+ type: directory
+ path: /builds/worker/artifacts/
+ docker-image: {in-tree: system-symbols-linux-scraper}
+ max-run-time: 14400
+ run:
+ using: run-task
+ command: >-
+ ./run.sh gnome-sdk-snap
+ treeherder:
+ symbol: gnome-sdk-symbols-snap
+ fetches:
+ fetch:
+ - symbol-scrapers
+ fedora:
+ description: Extract Fedora system symbols found in crashreports
+ attributes:
+ build_platform: fedora
+ index:
+ product: system-symbols
+ job-name: fedora
+ type: generic
+ worker:
+ artifacts:
+ - name: public/build
+ type: directory
+ path: /builds/worker/artifacts/
+ docker-image: {in-tree: system-symbols-linux-scraper}
+ max-run-time: 14400
+ run:
+ using: run-task
+ command: >-
+ ./run.sh fedora
+ treeherder:
+ symbol: sys-symbols-fedora
+ fetches:
+ fetch:
+ - symbol-scrapers
+ opensuse:
+ description: Extract OpenSUSE system symbols found in crashreports
+ attributes:
+ build_platform: opensuse
+ index:
+ product: system-symbols
+ job-name: opensuse
+ type: generic
+ worker:
+ artifacts:
+ - name: public/build
+ type: directory
+ path: /builds/worker/artifacts/
+ docker-image: {in-tree: system-symbols-linux-scraper}
+ max-run-time: 14400
+ run:
+ using: run-task
+ command: >-
+ ./run.sh opensuse
+ treeherder:
+ symbol: sys-symbols-opensuse
+ fetches:
+ fetch:
+ - symbol-scrapers
+ ubuntu:
+ description: Extract Ubuntu system symbols found in crashreports
+ attributes:
+ build_platform: ubuntu
+ index:
+ product: system-symbols
+ job-name: ubuntu
+ type: generic
+ worker:
+ artifacts:
+ - name: public/build
+ type: directory
+ path: /builds/worker/artifacts/
+ docker-image: {in-tree: system-symbols-linux-scraper}
+ max-run-time: 14400
+ run:
+ using: run-task
+ command: >-
+ ./run.sh ubuntu
+ treeherder:
+ symbol: sys-symbols-ubuntu
+ fetches:
+ fetch:
+ - symbol-scrapers
diff --git a/taskcluster/ci/test/awsy.yml b/taskcluster/ci/test/awsy.yml
new file mode 100644
index 0000000000..e730460b35
--- /dev/null
+++ b/taskcluster/ci/test/awsy.yml
@@ -0,0 +1,75 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ suite: awsy
+ max-run-time: 7200
+ instance-size: xlarge
+ virtualization:
+ by-test-platform:
+ windows.*(?:-shippable)?-qr/.*: virtual-with-gpu
+ default: virtual
+ allow-software-gl-layers: false
+ mozharness:
+ script: awsy_script.py
+ config:
+ by-test-platform:
+ windows.*:
+ - awsy/taskcluster_windows_config.py
+ macosx.*/opt:
+ - awsy/macosx_config.py
+ default:
+ - awsy/linux_config.py
+ tier: default
+ test-manifest-loader: null # don't load tests in the taskgraph
+
+
+awsy:
+ description: Are we slim yet - tp5 pageset
+ treeherder-symbol: SY(sy)
+ run-on-projects: []
+
+awsy-tp6:
+ description: Are we slim yet - tp6 pageset
+ treeherder-symbol: SY(sy-tp6)
+ run-on-projects:
+ by-test-platform:
+ .*-devedition/.*: [] # don't run on devedition
+ windows.*-32.*/opt: []
+ (linux|windows|mac)(?!.*shippable).*/opt: []
+ default: [integration, mozilla-central, mozilla-beta, mozilla-release]
+ mozharness:
+ extra-options:
+ - --tp6
+
+awsy-dmd:
+ description: Are we slim yet - dmd enabled
+ treeherder-symbol: SY(sy-d)
+ run-on-projects: []
+ mozharness:
+ extra-options:
+ - --dmd
+
+awsy-base:
+ description: Are we slim yet - about:blank base case
+ treeherder-symbol: SY(ab)
+ run-on-projects:
+ by-test-platform:
+ .*-devedition/.*: [] # don't run on devedition.
+ windows.*-32.*/opt: []
+ (linux|windows|mac)(?!.*shippable).*/opt: []
+ default: [integration, mozilla-central, mozilla-beta, mozilla-release]
+ tier: default
+ mozharness:
+ extra-options:
+ - --base
+
+awsy-base-dmd:
+ description: Are we slim yet - about:blank base case - dmd enabled
+ treeherder-symbol: SY(ab-d)
+ run-on-projects: []
+ mozharness:
+ extra-options:
+ - --base
+ - --dmd
diff --git a/taskcluster/ci/test/browsertime-desktop.yml b/taskcluster/ci/test/browsertime-desktop.yml
new file mode 100644
index 0000000000..b15fe1ae36
--- /dev/null
+++ b/taskcluster/ci/test/browsertime-desktop.yml
@@ -0,0 +1,721 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ max-run-time:
+ by-test-platform:
+ .*-qr/.*: 2400
+ default: 1800
+ suite: raptor
+ run-on-projects:
+ by-test-platform:
+ linux.*shippable[^-qr].*: [mozilla-central]
+ default: []
+ limit-platforms:
+ by-app:
+ chrome:
+ - .*shippable.*
+ chromium:
+ - .*shippable.*
+ safari:
+ - .*macos.*shippable.*
+ custom-car:
+ - linux.*shippable.*
+ - windows10-64.*shippable.*
+ default: []
+ test-manifest-loader: null # don't load tests in the taskgraph
+ tier: 3
+ virtualization: hardware
+ mozharness:
+ script: raptor_script.py
+ config:
+ by-test-platform:
+ macosx.*:
+ - raptor/mac_config.py
+ windows.*:
+ - raptor/windows_config.py
+ default:
+ - raptor/linux_config.py
+ extra-options:
+ - --conditioned-profile=settled
+ fetches:
+ toolchain:
+ by-app:
+ custom-car:
+ by-test-platform:
+ # this satisfied taskgraph for now, but once mac/win is implemented
+ # then linux will be the default
+ linux.*:
+ - linux64-custom-car
+ - linux64-minidump-stackwalk
+ - linux64-fix-stacks
+ windows10-64.*:
+ - win64-custom-car
+ - win64-minidump-stackwalk
+ - win64-fix-stacks
+ default: []
+ default:
+ by-test-platform:
+ windows.*-32.*.:
+ - win32-minidump-stackwalk
+ - win32-fix-stacks
+ windows10-64.*:
+ - win64-minidump-stackwalk
+ - win64-fix-stacks
+ macos.*:
+ - macosx64-minidump-stackwalk
+ - macosx64-fix-stacks
+ default:
+ - linux64-minidump-stackwalk
+ - linux64-fix-stacks
+
+browsertime-tp6:
+ <<: &tp6-defaults
+ description: Raptor (browsertime) tp6 page-load tests
+ limit-platforms:
+ by-app:
+ chrome:
+ - .*shippable.*
+ chromium:
+ - .*shippable.*
+ safari:
+ - .*macos.*shippable.*
+ custom-car:
+ - (windows10-64|linux).*shippable.*
+ default: []
+ max-run-time:
+ by-subtest:
+ imgur: 4800
+ default: 4000
+ mozharness:
+ extra-options:
+ by-test-platform:
+ windows10-64.*shippable.*-qr.*:
+ - --chimera
+ - --browsertime-no-ffwindowrecorder
+ - --conditioned-profile=settled
+ - --extra-profiler-run
+ - --extra-summary-methods=geomean
+ default:
+ - --chimera
+ - --conditioned-profile=settled
+ - --extra-profiler-run
+ - --extra-summary-methods=geomean
+ run-on-projects:
+ by-subtest:
+ netflix: # Bug 1756212 - Disable temporarily due to perma on mac
+ by-app:
+ firefox:
+ by-test-platform:
+ windows.*-32.*: []
+ (linux|windows10-64).*shippable-qr.*: [trunk, mozilla-beta, mozilla-release]
+ macosx1015.*shippable-qr.*: []
+ default: []
+ default: []
+ default:
+ by-app:
+ firefox:
+ by-test-platform:
+ windows.*-32.*: []
+ .*64(?!.*nightlyasrelease).*shippable-qr/.*: [trunk, mozilla-beta, mozilla-release]
+ default: []
+ default: []
+ treeherder-symbol: Btime(tp6)
+ raptor:
+ apps: [firefox, chrome, chromium]
+ test: tp6
+ run-visual-metrics: true
+ subtests:
+ - buzzfeed
+ - ebay
+ - espn
+ - expedia
+ - [facebook, fb]
+ - [google-docs, gdocs]
+ - [google-mail, gmail]
+ - [google-search, gsearch]
+ - imdb
+ - imgur
+ - linkedin
+ - microsoft
+ - netflix
+ - nytimes
+ - office
+ - outlook
+ - paypal
+ - pinterest
+ - reddit
+ - tumblr
+ - twitch
+ - wikia
+ - youtube
+ tier:
+ by-app:
+ firefox: 2
+ default: 3
+
+browsertime-responsiveness:
+ <<: *tp6-defaults
+ raptor:
+ apps: [firefox, chrome, chromium]
+ test: tp6
+ run-visual-metrics: true
+ subtests:
+ - cnn-nav
+ - [facebook-nav, fbnav]
+ - [reddit-billgates-ama, rdt-ama]
+ - [reddit-billgates-post-1, rdt-post-1]
+ - [reddit-billgates-post-2, rdt-post-2]
+ mozharness:
+ extra-options:
+ by-test-platform:
+ windows10-.*:
+ - --cold
+ - --browsertime-no-ffwindowrecorder
+ - --conditioned-profile=settled
+ - --extra-profiler-run
+ default:
+ - --cold
+ - --conditioned-profile=settled
+ - --extra-profiler-run
+ run-on-projects:
+ by-app:
+ firefox:
+ by-test-platform:
+ windows.*-32.*: []
+ .*64(?!.*nightlyasrelease).*shippable-qr/.*: [trunk]
+ default: []
+ default: []
+ tier:
+ by-app:
+ firefox: 2
+ default: 3
+
+browsertime-tp6-essential:
+ <<: *tp6-defaults
+ <<: &tp6-essential-defaults
+ mozharness:
+ extra-options:
+ by-test-platform:
+ windows10-64.*shippable.*-qr.*:
+ - --chimera
+ - --browsertime-no-ffwindowrecorder
+ - --conditioned-profile=settled
+ - --collect-perfstats
+ - --extra-profiler-run
+ - --extra-summary-methods=geomean
+ default:
+ - --chimera
+ - --conditioned-profile=settled
+ - --extra-profiler-run
+ - --extra-summary-methods=geomean
+ raptor:
+ apps: [firefox, chrome, chromium, custom-car]
+ test: tp6
+ run-visual-metrics: true
+ subtests:
+ - amazon
+ - [bing-search, bing]
+ - cnn
+ - fandom
+ - [google-slides, gslides]
+ - instagram
+ - twitter
+ - wikipedia
+ - yahoo-mail
+ run-on-projects:
+ by-app:
+ firefox:
+ by-test-platform:
+ windows.*-32.*: []
+ macosx1100.*shippable.*: [mozilla-central, mozilla-beta]
+ .*64(?!.*nightlyasrelease).*shippable-qr/.*: [trunk, mozilla-beta, mozilla-release]
+ default: []
+ default: []
+ tier:
+ by-test-platform:
+ linux1804-64-clang-trunk-qr/opt: 2
+ default:
+ by-app:
+ firefox: 1
+ default: 3
+
+browsertime-tp6-bytecode:
+ <<: *tp6-defaults
+ <<: *tp6-essential-defaults
+ raptor:
+ apps: [firefox]
+ test: tp6
+ run-visual-metrics: true
+ subtests:
+ - amazon
+ - [bing-search, bing]
+ - cnn
+ - fandom
+ - [google-slides, gslides]
+ - instagram
+ - twitter
+ - wikipedia
+ - yahoo-mail
+ run-on-projects:
+ by-app:
+ firefox:
+ by-test-platform:
+ windows.*-32.*: []
+ macosx1100.*shippable.*: [mozilla-central, mozilla-beta]
+ .*64(?!.*nightlyasrelease).*shippable-qr/.*: [trunk, mozilla-beta, mozilla-release]
+ default: []
+ default: []
+ mozharness:
+ extra-options:
+ by-test-platform:
+ windows10-64.*shippable.*-qr.*:
+ - --chimera
+ - --browsertime
+ - --browsertime-no-ffwindowrecorder
+ - --conditioned-profile=settled
+ - --test-bytecode-cache
+ - --extra-profiler-run
+ default:
+ - --chimera
+ - --browsertime
+ - --conditioned-profile=settled
+ - --test-bytecode-cache
+ - --extra-profiler-run
+ tier:
+ by-app:
+ firefox: 2
+ default: 3
+ treeherder-symbol: Btime-cache(tp6)
+
+browsertime-benchmark:
+ description: Raptor (browsertime) Benchmark tests
+ raptor:
+ apps: [firefox, chrome, chromium, safari, custom-car]
+ subtests:
+ by-app:
+ firefox:
+ - ares6
+ - [assorted-dom, dom]
+ - [jetstream2, js2]
+ - [matrix-react-bench, mrb]
+ - [motionmark-animometer, mm-a]
+ - [motionmark-htmlsuite, mm-h]
+ - [speedometer, sp]
+ - [speedometer3, sp3]
+ - [stylebench, sb]
+ - [sunspider, ss]
+ - [twitch-animation, tw-a]
+ - [unity-webgl, ugl]
+ - [webaudio, wa]
+ safari:
+ - ares6
+ - [assorted-dom, dom]
+ - [jetstream2, js2]
+ # - [matrix-react-bench, mrb] (Bug 1802922)
+ - [motionmark-animometer, mm-a]
+ - [motionmark-htmlsuite, mm-h]
+ - [speedometer, sp]
+ - [speedometer3, sp3]
+ - [stylebench, sb]
+ - [sunspider, ss]
+ - [unity-webgl, ugl]
+ # - [webaudio, wa] (Bug 1802922)
+ custom-car:
+ - [speedometer, sp]
+ - [speedometer3, sp3]
+ default:
+ - ares6
+ - [assorted-dom, dom]
+ - [jetstream2, js2]
+ - [matrix-react-bench, mrb]
+ - [motionmark-animometer, mm-a]
+ - [motionmark-htmlsuite, mm-h]
+ - [speedometer, sp]
+ - [speedometer3, sp3]
+ - [stylebench, sb]
+ - [sunspider, ss]
+ - [unity-webgl, ugl]
+ - [webaudio, wa]
+ treeherder-symbol: Btime()
+ tier:
+ by-app:
+ firefox:
+ by-subtest:
+ motionmark-animometer:
+ by-test-platform:
+ linux1804-64-clang-trunk-qr/opt: 2
+ default: 1
+ unity-webgl: 3
+ default:
+ by-test-platform:
+ windows10-64-ccov.*/.*: 3
+ linux64-ccov.*/.*: 3
+ default: 2
+ default:
+ by-subtest:
+ unity-webgl: 3
+ default: 2
+ run-on-projects:
+ by-subtest:
+ speedometer3:
+ by-app:
+ firefox:
+ by-test-platform:
+ windows.*-32.*: []
+ .*64.*shippable-qr/.*: [trunk, mozilla-release]
+ .*nightlyasrelease.*: [autoland]
+ default: []
+ default: []
+ unity-webgl:
+ by-app:
+ firefox:
+ by-test-platform:
+ windows.*-32.*: []
+ .*64.*shippable-qr/.*: [trunk, mozilla-release]
+ default: []
+ default: []
+ speedometer:
+ by-app:
+ firefox:
+ by-test-platform:
+ windows.*-32.*: []
+ .*64.*shippable-qr/.*: [trunk, mozilla-beta, mozilla-release]
+ .*nightlyasrelease.*: [autoland]
+ default: []
+ default: []
+ default:
+ by-app:
+ firefox:
+ by-test-platform:
+ windows.*-32.*: []
+ .*64.*shippable-qr/.*: [trunk, mozilla-beta, mozilla-release]
+ default: []
+ default: []
+ max-run-time:
+ by-subtest:
+ ares6: 1500
+ assorted-dom:
+ by-test-platform:
+ .*-qr/.*: 2100
+ default: 1500
+ jetstream2: 8000
+ matrix-react-bench: 1500
+ motionmark-htmlsuite: 1500
+ unity-webgl: 1500
+ default: 900
+ mozharness:
+ extra-options:
+ - --extra-profiler-run
+
+browsertime-benchmark-wasm:
+ description: Raptor (browsertime) WASM benchmarks
+ raptor:
+ apps: [firefox, chrome, chromium] # Safari depends on Bug 1802922
+ subtests:
+ by-app:
+ firefox:
+ - [wasm-godot, godot]
+ - [wasm-godot-baseline, godot-b]
+ - [wasm-godot-optimizing, godot-i]
+ - [wasm-misc, wm]
+ - [wasm-misc-baseline, wm-b]
+ - [wasm-misc-optimizing, wm-i]
+ default:
+ - [wasm-misc, wm]
+ - [wasm-godot, godot]
+ treeherder-symbol: Btime()
+ tier: 2
+ run-on-projects:
+ by-app:
+ firefox:
+ by-test-platform:
+ windows.*-32.*: []
+ .*64(?!.*nightlyasrelease).*shippable-qr/.*: [mozilla-central, mozilla-release]
+ default: []
+ default: []
+ max-run-time:
+ by-subtest:
+ wasm-godot: 1500
+ wasm-godot-baseline: 1500
+ default: 900
+ mozharness:
+ extra-options:
+ - --extra-profiler-run
+
+browsertime-youtube-playback:
+ description: Browsertime YouTube Playback on Firefox
+ raptor:
+ apps: [firefox]
+ subtests:
+ by-app:
+ firefox:
+ - [youtube-playback-av1-sfr, ytp-av1-sfr]
+ - [youtube-playback-h264-sfr, ytp-h264-sfr]
+ - [youtube-playback-hfr, ytp-hfr]
+ - [youtube-playback-vp9-sfr, ytp-vp9-sfr]
+ - [youtube-playback-widevine-hfr, ytp-widevine-hfr]
+ - [youtube-playback-widevine-h264-sfr, ytp-widevine-h264-sfr]
+ - [youtube-playback-widevine-vp9-sfr, ytp-widevine-vp9-sfr]
+ treeherder-symbol: Btime()
+ run-on-projects:
+ by-test-platform:
+ windows.*-32.*: []
+ .*64(?!.*nightlyasrelease).*shippable-qr/.*: [mozilla-central, mozilla-release]
+ default: []
+ tier: 2
+ limit-platforms:
+ by-subtest:
+ youtube-playback-av1-sfr:
+ - macosx1015-64-shippable-qr/opt
+ default: []
+ max-run-time:
+ by-subtest:
+ youtube-playback-hfr: 3600
+ youtube-playback-widevine.*: 3600
+ default: 2700
+
+browsertime-youtube-playback-power:
+ description: Browsertime YouTube Playback on Firefox with power usage tracking
+ raptor:
+ apps: [firefox]
+ subtests:
+ by-app:
+ firefox:
+
+ - [youtube-playback-h264-1080p30, ytp-h264-1080p30]
+ - [youtube-playback-h264-1080p60, ytp-h264-1080p60]
+ - [youtube-playback-h264-full-1080p30, ytp-h264-full-1080p30]
+ - [youtube-playback-h264-full-1080p60, ytp-h264-full-1080p60]
+ - [youtube-playback-v9-1080p30, ytp-v9-1080p30]
+ - [youtube-playback-v9-1080p60, ytp-v9-1080p60]
+ - [youtube-playback-v9-full-1080p30, ytp-v9-full-1080p30]
+ - [youtube-playback-v9-full-1080p60, ytp-v9-full-1080p60]
+ treeherder-symbol: Btime()
+ run-on-projects:
+ by-test-platform:
+ macosx.*shippable-qr.*: [mozilla-central]
+ default: []
+ tier: 2
+ max-run-time: 2700
+
+browsertime-tp6-live:
+ <<: *tp6-defaults
+ description: Raptor (browsertime) tp6 on live-sites
+ mozharness:
+ extra-options:
+ - --browser-cycles=15
+ - --chimera
+ - --live-sites
+ - --extra-profiler-run
+ raptor:
+ apps: [firefox, chrome, chromium, safari]
+ test: tp6
+ run-visual-metrics: true
+ subtests:
+ by-app:
+ safari:
+ - amazon
+ - [bing-search, bing]
+ - ebay
+ - [facebook, fb]
+ # - fandom (Bug 1802922)
+ - [google-docs, gdocs]
+ # - [google-mail, gmail] (Bug 1802922)
+ - [google-search, gsearch]
+ - [google-slides, gslides]
+ - imdb
+ # - imgur (Bug 1802922)
+ # - instagram (see bug 1736999)
+ - linkedin
+ - microsoft
+ # - netflix (Bug 1802922)
+ # - office (site loads blank page if not signed in)
+ - outlook
+ - paypal
+ - pinterest
+ - reddit
+ - tumblr
+ - twitch
+ - twitter
+ - wikipedia
+ # - yahoo-mail (Bug 1802922)
+ - youtube
+ chrome:
+ - amazon
+ - [bing-search, bing]
+ - ebay
+ - [facebook, fb]
+ - fandom
+ - [google-docs, gdocs]
+ - [google-mail, gmail]
+ - [google-search, gsearch]
+ - [google-slides, gslides]
+ - imdb
+ # - imgur (see bugs 1825337 & 1817420)
+ # - instagram (see bug 1736999)
+ - linkedin
+ - microsoft
+ - netflix
+ # - office (site loads blank page if not signed in)
+ - outlook
+ - paypal
+ - pinterest
+ - reddit
+ - tumblr
+ - twitch
+ - twitter
+ - wikipedia
+ - yahoo-mail
+ - youtube
+ default:
+ - amazon
+ - [bing-search, bing]
+ - ebay
+ - [facebook, fb]
+ - fandom
+ - [google-docs, gdocs]
+ - [google-mail, gmail]
+ - [google-search, gsearch]
+ - [google-slides, gslides]
+ - imdb
+ - imgur
+ # - instagram (see bug 1736999)
+ - linkedin
+ - microsoft
+ - netflix
+ # - office (site loads blank page if not signed in)
+ - outlook
+ - paypal
+ - pinterest
+ - reddit
+ - tumblr
+ - twitch
+ - twitter
+ - wikipedia
+ - yahoo-mail
+ - youtube
+ run-on-projects: []
+ tier: 3
+ treeherder-symbol: Btime-live(tp6)
+
+browsertime-tp6-live-sheriffed:
+ <<: *tp6-defaults
+ raptor:
+ apps: [firefox]
+ test: tp6
+ run-visual-metrics: true
+ subtests:
+ - cnn
+ description: Raptor (browsertime) tp6 on live-sites
+ mozharness:
+ extra-options:
+ - --browser-cycles=5
+ - --chimera
+ - --live-sites
+ - --extra-profiler-run
+ run-on-projects:
+ by-test-platform:
+ (linux|windows10-64|macos)(?!.*shippable).*: []
+ (linux|windows|macosx1015)(?!.*-qr).*: []
+ windows.*-32.*: []
+ default: []
+ tier: 2
+ treeherder-symbol: Btime-live(tp6)
+
+browsertime-tp6-profiling:
+ <<: *tp6-defaults
+ raptor:
+ apps: [firefox]
+ test: tp6
+ run-visual-metrics: true
+ subtests: [amazon]
+ description: Raptor (browsertime) tp6 page-load tests with Gecko Profiling
+ mozharness:
+ extra-options:
+ - --chimera
+ - --gecko-profile
+ run-on-projects:
+ by-test-platform:
+ (linux|windows|macosx1015).*shippable-qr.*: [mozilla-central]
+ default: []
+ tier: 2
+ treeherder-symbol: Btime-Prof(tp6)
+
+browsertime-custom:
+ raptor:
+ apps: [firefox]
+ run-visual-metrics: true
+ subtests: [[process-switch, ps]]
+ description: Raptor (browsertime) custom pageload tests
+ max-run-time: 2700
+ mozharness:
+ extra-options:
+ - --chimera
+ - --extra-profiler-run
+ run-on-projects:
+ by-test-platform:
+ windows.*-32.*: []
+ .*64(?!.*nightlyasrelease).*shippable-qr/.*: [mozilla-central]
+ default: []
+ tier: 1
+ treeherder-symbol: Btime(ps)
+
+browsertime-first-install:
+ raptor:
+ apps: [firefox]
+ run-visual-metrics: true
+ subtests: [welcome]
+ description: Raptor (browsertime) custom pageload tests
+ max-run-time: 2700
+ mozharness:
+ extra-options:
+ - --chimera
+ - --extra-profiler-run
+ run-on-projects:
+ by-test-platform:
+ windows.*-32.*: []
+ .*64(?!.*nightlyasrelease).*shippable-qr/.*: [trunk]
+ default: []
+ tier: 1
+ treeherder-symbol: Btime(welcome)
+
+browsertime-regression-tests:
+ raptor:
+ apps: [firefox]
+ subtests: [[constant-regression, regress-c]]
+ description: Raptor (browsertime) tests for our regression detection system
+ max-run-time: 700
+ run-on-projects: [autoland]
+ limit-platforms:
+ - .*linux(?!.*shippable)(?!.*clang).*
+ mozharness:
+ extra-options:
+ by-test-platform:
+ windows10-64.*shippable.*-qr.*: []
+ default: []
+ tier: 2
+ treeherder-symbol: Btime(regressor)
+
+browsertime-upload:
+ raptor:
+ apps: [firefox, chrome, chromium, safari]
+ subtests:
+ - [upload, upload-h2]
+ - upload-h3
+ description: Raptor (browsertime) http2, http3 file upload performance test
+ max-run-time: 2700
+ run-on-projects:
+ by-app:
+ firefox:
+ by-test-platform:
+ windows.*-32.*: []
+ .*64.*shippable-qr/.*: [autoland, mozilla-central]
+ default: []
+ default: []
+ tier: 3
+ treeherder-symbol: Btime(upload)
+ fetches:
+ fetch:
+ - upload-speed-test-file
diff --git a/taskcluster/ci/test/browsertime-mobile.yml b/taskcluster/ci/test/browsertime-mobile.yml
new file mode 100644
index 0000000000..7340fca083
--- /dev/null
+++ b/taskcluster/ci/test/browsertime-mobile.yml
@@ -0,0 +1,380 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ max-run-time: 3600
+ suite: raptor
+ variants:
+ - geckoview-no-fission
+ run-on-projects: []
+ tier: 3
+ test-manifest-loader: null # don't load tests in the taskgraph
+ target:
+ by-app:
+ fenix:
+ by-test-platform:
+ android-hw.*-aarch64.*/.*:
+ index: mobile.v3.firefox-android.apks.fenix-nightly.latest.arm64-v8a
+ name: build/fenix/arm64-v8a/target.apk
+ default:
+ index: mobile.v3.firefox-android.apks.fenix-nightly.latest.armeabi-v7a
+ name: build/fenix/armeabi-v7a/target.apk
+ refbrow:
+ by-test-platform:
+ android-hw.*-aarch64.*/.*:
+ index: mobile.v2.reference-browser.raptor.latest.arm64-v8a
+ name: target.arm64-v8a.apk
+ default:
+ index: mobile.v2.reference-browser.raptor.latest.armeabi-v7a
+ name: target.armeabi-v7a.apk
+ default: geckoview_example.apk
+ virtualization: hardware
+ raptor:
+ activity:
+ by-app:
+ fenix: org.mozilla.fenix.IntentReceiverActivity
+ geckoview: org.mozilla.geckoview_example.GeckoViewActivity
+ refbrow: org.mozilla.reference.browser.BrowserTestActivity
+ default: None
+ binary-path:
+ by-app:
+ fenix: org.mozilla.fenix
+ geckoview: org.mozilla.geckoview_example
+ refbrow: org.mozilla.reference.browser.raptor
+ default: None
+ mozharness:
+ script: raptor_script.py
+ config:
+ - raptor/android_hw_config.py
+ extra-options:
+ # Bug 1635749, disable window recorder temporarily
+ - --browsertime-no-ffwindowrecorder
+ - --conditioned-profile=settled
+ optimization:
+ skip-unless-backstop: null
+ limit-platforms:
+ by-app:
+ chrome-m:
+ - .*shippable-qr.*
+ default: []
+
+browsertime-tp6m:
+ <<: &tp6m-defaults
+ description: Raptor (browsertime) tp6 page-load tests on android
+ max-run-time:
+ by-subtest:
+ reddit:
+ by-app:
+ geckoview: 7200
+ default: 3600
+ imdb:
+ by-app:
+ geckoview: 7200
+ default: 3600
+ default: 3600
+ mozharness:
+ extra-options:
+ - --chimera
+ - --extra-summary-methods=geomean
+ tier:
+ by-app:
+ geckoview: 1
+ refbrow: 2
+ default: 3
+ treeherder-symbol: Btime(tp6m)
+ raptor:
+ apps: [geckoview, fenix, chrome-m, refbrow]
+ run-visual-metrics: true
+ test: tp6m
+ subtests:
+ - amazon
+ - bing
+ - [bing-search-restaurants, bing-s-r]
+ - booking
+ - cnn
+ - [cnn-ampstories, cnn-amp]
+ - dailymail
+ - [ebay-kleinanzeigen, ebay-k]
+ - [ebay-kleinanzeigen-search, ebay-k-s]
+ - [facebook-cristiano, fb-cris]
+ - [google-maps, gmaps]
+ - [google-search-restaurants, gsearch-r]
+ - instagram
+ - imdb
+ - reddit
+ - sina
+ - [stackoverflow, stacko]
+ - web-de
+ - wikipedia
+ - youtube
+ run-on-projects:
+ by-app:
+ geckoview:
+ by-variant:
+ geckoview-no-fission:
+ by-test-platform:
+ android-hw-(g5|a51).*shippable-qr.*: [trunk-only]
+ default: []
+ default:
+ by-subtest:
+ wikipedia:
+ by-test-platform:
+ android-hw-(g5|a51).*shippable-qr.*: []
+ default: []
+ google-search-restaurants:
+ by-test-platform:
+ android-hw-(g5|a51).*shippable-qr.*: []
+ default: []
+ default:
+ by-test-platform:
+ android-hw-(g5|a51).*shippable-qr.*: []
+ default: []
+ default: []
+
+browsertime-tp6m-essential:
+ <<: *tp6m-defaults
+ run-without-variant: false
+ raptor:
+ apps: [geckoview, fenix, chrome-m, refbrow]
+ run-visual-metrics: true
+ test: tp6m
+ subtests:
+ - allrecipes
+ - [amazon-search, amazon-s]
+ - espn
+ - facebook
+ - google
+ - [microsoft-support, micros-sup]
+ - [youtube-watch, youtube-w]
+ run-on-projects:
+ by-app:
+ geckoview:
+ by-subtest:
+ allrecipes:
+ by-test-platform:
+ android-hw-(g5|a51).*shippable.*: [trunk]
+ default: []
+ default:
+ by-test-platform:
+ android-hw-(g5|a51).*shippable.*: [trunk-only]
+ default: []
+ default: []
+ tier:
+ by-app:
+ geckoview: 1
+ refbrow: 2
+ default: 3
+
+browsertime-youtube-playback-mobile:
+ description: Browsertime YouTube Playback on Android
+ treeherder-symbol: Btime(ytp)
+ run-without-variant: false
+ raptor:
+ apps: [fenix, geckoview, refbrow]
+ subtests:
+ by-test-platform:
+ android-hw-(g5|a51).*:
+ - [youtube-playback-h264-sfr, ytp-h264-sfr]
+ - [youtube-playback-hfr, ytp-hfr]
+ # Bug 1699469 - Disabled until a crash is fixed.
+ # - [youtube-playback-widevine-h264-sfr, ytp-widevine-h264-sfr]
+ # - [youtube-playback-widevine-hfr, ytp-widevine-hfr]
+ test-url-param:
+ by-subtest:
+ youtube-playback-h264-sfr: # remove high resolution tests
+ exclude=1,2,
+ 23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38
+ youtube-playback-hfr:
+ by-test-platform:
+ android-hw-(g5|a51).*: # remove VP9(1-34) and AV1(51-74) tests
+ exclude=1,2,
+ 3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,
+ 51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74
+ default: ""
+ youtube-playback-widevine-hfr:
+ by-test-platform:
+ android-hw-(g5|a51).*: # remove VP9(1-34) tests
+ exclude=1,2,
+ 3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34
+ default: ""
+ default: ""
+ run-on-projects:
+ by-app:
+ geckoview:
+ by-test-platform:
+ android-hw-(g5|a51).*shippable.*: [mozilla-central]
+ default: []
+ default: []
+ max-run-time: 3600
+
+browsertime-tp6m-live:
+ <<: *tp6m-defaults
+ run-without-variant: false
+ raptor:
+ apps: [chrome-m, fenix, geckoview]
+ run-visual-metrics: true
+ test: tp6m
+ subtests:
+ - allrecipes
+ - amazon
+ - [amazon-search, amazon-s]
+ - bing
+ - [bing-search-restaurants, bing-s-r]
+ - booking
+ - booking-sf
+ - cnn
+ - [cnn-ampstories, cnn-amp]
+ - dailymail
+ - discord
+ - [ebay-kleinanzeigen, ebay-k]
+ - [ebay-kleinanzeigen-search, ebay-k-s]
+ - espn
+ - expedia
+ - facebook
+ - [facebook-cristiano, fb-cris]
+ - [fashionbeans, fashbea]
+ - google
+ - [google-accounts, gacc]
+ - [google-maps, gmaps]
+ - [google-search-restaurants, gsearch-r]
+ - instagram
+ - imdb
+ - [imdb-firefox, imdb-f]
+ - [medium-article, medium]
+ - [microsoft-support, micros-sup]
+ - nytimes
+ - [people-article, people]
+ - reddit
+ - [reddit-thread, reddit-thr]
+ - rumble-fox
+ - [stackoverflow, stacko]
+ - [stackoverflow-question, stack-q]
+ - [urbandictionary-define, urbict-def]
+ - web-de
+ - [wikia-marvel, wikia-m]
+ - wikipedia
+ - youtube
+ - [youtube-watch, youtube-w]
+ mozharness:
+ extra-options:
+ - --live-sites
+ - --chimera
+ run-on-projects:
+ by-subtest:
+ cnn-ampstories:
+ by-app:
+ geckoview:
+ by-test-platform:
+ android-hw-(g5|a51).*shippable-qr.*: [autoland]
+ default: []
+ default: []
+ default: []
+ tier: 3
+ treeherder-symbol: Btime-live(tp6m)
+
+browsertime-tp6m-profiling:
+ description: Raptor (browsertime) tp6 page-load tests on android with Gecko profiling
+ run-without-variant: false
+ raptor:
+ apps: [geckoview]
+ test: tp6m
+ subtests: [amazon, youtube]
+ treeherder-symbol: Btime-Prof(tp6m)
+ mozharness:
+ script: raptor_script.py
+ config:
+ - raptor/android_hw_config.py
+ extra-options:
+ - --chimera
+ - --gecko-profile
+ run-on-projects:
+ by-test-platform:
+ android-hw-(a51).*aarch64-shippable-qr/opt: [mozilla-central]
+ default: []
+
+browsertime-speedometer-mobile:
+ description: Browsertime Speedometer on Android
+ run-without-variant: false
+ raptor:
+ apps: [geckoview, fenix, chrome-m]
+ tier:
+ by-app:
+ fenix: 1
+ default: 3
+ run-on-projects:
+ by-app:
+ refbrow: []
+ geckoview:
+ by-test-platform:
+ android-hw-(g5|a51).*shippable-qr.*: [trunk]
+ default: []
+ default: []
+ treeherder-symbol: Btime(sp)
+ mozharness:
+ extra-options:
+ - --test=speedometer
+
+browsertime-speedometer3-mobile:
+ description: Browsertime Speedometer 3 on Android
+ run-without-variant: false
+ raptor:
+ apps: [geckoview, fenix, chrome-m]
+ tier:
+ by-app:
+ fenix: 2
+ geckoview: 2
+ default: 3
+ run-on-projects:
+ by-app:
+ refbrow: []
+ geckoview:
+ by-test-platform:
+ android-hw-a51.*shippable-qr.*: [trunk-only]
+ default: []
+ default: []
+ treeherder-symbol: Btime(sp3)
+ mozharness:
+ extra-options:
+ - --test=speedometer3
+
+browsertime-unity-webgl-mobile:
+ description: Browsertime Unity WebGL on Android
+ run-without-variant: false
+ raptor:
+ apps: [geckoview, refbrow, fenix, chrome-m]
+ treeherder-symbol: Btime(ugl)
+ run-on-projects:
+ by-app:
+ refbrow: []
+ geckoview:
+ by-test-platform:
+ android-hw-a51-.*aarch64-shippable-qr.*: [trunk-only]
+ default: []
+ default:
+ by-test-platform:
+ android-hw-a51-.*aarch64-shippable-qr.*: [mozilla-central]
+ default: []
+ max-run-time:
+ by-test-platform:
+ anrdroid-hw-a51.*: 1500
+ default: 900
+ mozharness:
+ extra-options:
+ - --test=unity-webgl
+
+browsertime-power:
+ description: Browsertime Power Usage Tests on Android
+ run-without-variant: false
+ raptor:
+ apps: [geckoview, fenix, refbrow]
+ subtests:
+ - idle
+ - idle-bg
+ - [speedometer, sp]
+ tier: 2
+ run-on-projects: []
+ treeherder-symbol: Btime-P(power)
+ mozharness:
+ extra-options:
+ - --power-test
diff --git a/taskcluster/ci/test/compiled.yml b/taskcluster/ci/test/compiled.yml
new file mode 100644
index 0000000000..864e1ca6c4
--- /dev/null
+++ b/taskcluster/ci/test/compiled.yml
@@ -0,0 +1,138 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ test-manifest-loader: null # don't load tests in the taskgraph
+ run-without-variant: false
+ variants:
+ - 1proc
+ virtualization: virtual
+ mozharness:
+ script:
+ by-test-platform:
+ android-em.*: android_emulator_unittest.py
+ android-hw.*: android_hardware_unittest.py
+ default: desktop_unittest.py
+ config:
+ by-test-platform:
+ android-em-7.*:
+ - android/android_common.py
+ - android/android-x86_64.py
+ android-hw.*:
+ - android/android_common.py
+ - android/android_hw.py
+ linux.*:
+ - unittests/linux_unittest.py
+ - remove_executables.py
+ macosx.*:
+ - unittests/mac_unittest.py
+ windows.*:
+ - unittests/win_unittest.py
+ supports-artifact-builds: false
+
+cppunit:
+ description: "CPP Unit Tests"
+ suite: cppunittest
+ treeherder-symbol: cppunit
+ target:
+ by-test-platform:
+ android-em-7.*: geckoview-test_runner.apk
+ default: null
+ tier: default
+ run-on-projects:
+ by-variant:
+ 1proc:
+ by-test-platform:
+ .*wayland.*: []
+ default: built-projects
+ default: []
+
+gtest:
+ description: "GTests run"
+ suite: gtest
+ treeherder-symbol: GTest
+ instance-size: xlarge
+ run-on-projects:
+ by-variant:
+ 1proc:
+ by-test-platform:
+ .*android.*: built-projects
+ .*(devedition|tsan|wayland).*: []
+ linux1804-32-qr/opt: [] # try only, shippable on m-c
+ linux1804-32-qr/debug: ['mozilla-central'] # try and m-c
+ linux1804-32-shippable-qr/opt: ['mozilla-central'] # try and m-c
+ default: built-projects
+ default: []
+ target:
+ by-test-platform:
+ android-em-7.*: geckoview-test_runner.apk
+ default: null
+ tier: default
+
+jittest:
+ description: "JIT Test run"
+ suite: jittest
+ treeherder-symbol: Jit
+ run-on-projects:
+ by-variant:
+ 1proc:
+ by-test-platform:
+ android-hw-.*-aarch64-qr/debug: ['mozilla-central', 'release']
+ android-hw-.*-arm7-qr/debug: ['mozilla-central', 'release']
+ default: built-projects
+ default: []
+ chunks:
+ by-test-platform:
+ windows.*-ccov-qr/opt: 8
+ windows.*: 1
+ macosx.*/opt: 1
+ macosx.*/debug: 3
+ android.*: 10
+ default: 6
+ max-run-time:
+ by-test-platform:
+ windows.*-ccov.*/.*: 7200
+ macosx.*-ccov.*/.*: 7200
+ android-hw.*: 5400
+ default: 3600
+ mozharness:
+ chunked:
+ by-test-platform:
+ windows.*: false
+ macosx.*: false
+ default: true
+ target:
+ by-test-platform:
+ android-.*: geckoview-test_runner.apk
+ default: null
+ tier:
+ by-test-platform:
+ android-hw.*: 2
+ default: default
+
+jittest-all:
+ description: "JIT Test run with all flags for android arm7 opt"
+ suite: jittest
+ treeherder-symbol: Jit
+ run-on-projects:
+ by-test-platform:
+ android-hw-.*-arm7(?:-shippable)?-qr/.*: ['mozilla-central', 'release']
+ default: []
+ chunks: 10
+ max-run-time: 3600
+ mozharness:
+ chunked: true
+ extra-options:
+ by-test-platform:
+ android.*:
+ - --jittest-flags=all
+ default: None
+ target:
+ by-test-platform:
+ android-.*: geckoview-test_runner.apk
+ default: null
+ tier:
+ by-test-platform:
+ android-hw.*: 2
+ default: default
diff --git a/taskcluster/ci/test/firefox-ui.yml b/taskcluster/ci/test/firefox-ui.yml
new file mode 100644
index 0000000000..b295ec94d4
--- /dev/null
+++ b/taskcluster/ci/test/firefox-ui.yml
@@ -0,0 +1,30 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ suite:
+ category: firefox-ui
+ max-run-time: 5400
+ test-manifest-loader: null # don't load tests in the taskgraph
+ run-on-projects:
+ by-test-platform:
+ .*wayland.*: []
+ default: built-projects
+ mozharness:
+ script: firefox_ui_tests.py
+ config:
+ by-test-platform:
+ windows.*:
+ - firefox_ui_tests/taskcluster_windows.py
+ macosx.*:
+ - firefox_ui_tests/taskcluster.py
+ - firefox_ui_tests/taskcluster_mac.py
+ linux.*:
+ - firefox_ui_tests/taskcluster.py
+ - remove_executables.py
+
+firefox-ui-functional:
+ description: "Firefox-ui-tests functional run"
+ treeherder-symbol: Fxfn(en-US)
+ tier: 2
diff --git a/taskcluster/ci/test/kind.yml b/taskcluster/ci/test/kind.yml
new file mode 100644
index 0000000000..5c0a5671b5
--- /dev/null
+++ b/taskcluster/ci/test/kind.yml
@@ -0,0 +1,82 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.test:loader
+
+kind-dependencies:
+ - build
+ - build-signing
+ - repackage-signing-shippable-l10n-msix
+ - repackage-signing-msix
+ - repackage-signing
+ - repackage
+ - fetch
+ - toolchain
+
+transforms:
+ - gecko_taskgraph.transforms.test:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+# Each stanza in a file pointed to by 'jobs-from' describes a particular test
+# suite or sub-suite. These are processed through the transformations described
+# above to produce a bunch of tasks. See the schema in
+# `taskcluster/gecko_taskgraph/transforms/test/__init__.py` for a description of the fields
+# used in these files.
+
+# Adding a new test type or running tests on a new platform? Be sure to review
+# https://wiki.mozilla.org/Sheriffing/Job_Visibility_Policy
+
+jobs-from:
+ - awsy.yml
+ - browsertime-desktop.yml
+ - browsertime-mobile.yml
+ - compiled.yml
+ - firefox-ui.yml
+ - marionette.yml
+ - misc.yml
+ - mochitest.yml
+ - reftest.yml
+ - talos.yml
+ - web-platform.yml
+ - xpcshell.yml
+
+job-defaults:
+ attributes:
+ retrigger: true
+ require-signed-extensions:
+ by-release-type:
+ release|esr.*: true
+ beta:
+ by-test-platform:
+ .*-devedition/.*: false
+ default: true
+ default: false
+ mozharness:
+ requires-signed-builds:
+ by-test-platform:
+ macosx1100.*: true
+ windows1.*:
+ by-variant:
+ msix: true
+ default: false
+ default: false
+ fetches:
+ toolchain:
+ by-test-platform:
+ win.*:
+ - win32-minidump-stackwalk
+ - win32-fix-stacks
+ macosx.*:
+ - macosx64-minidump-stackwalk
+ - macosx64-fix-stacks
+ android-em-7.*:
+ - android-system-image-x86_64-linux
+ - android-avd-x86_64-linux
+ - android-emulator-linux
+ - linux64-minidump-stackwalk
+ - linux64-fix-stacks
+ default:
+ - linux64-minidump-stackwalk
+ - linux64-fix-stacks
diff --git a/taskcluster/ci/test/marionette.yml b/taskcluster/ci/test/marionette.yml
new file mode 100644
index 0000000000..b138c806a3
--- /dev/null
+++ b/taskcluster/ci/test/marionette.yml
@@ -0,0 +1,55 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ suite: marionette
+ mozharness:
+ script: marionette.py
+ config:
+ by-test-platform:
+ macosx.*:
+ - marionette/prod_config.py
+ - marionette/mac_taskcluster_config.py
+ windows.*:
+ - marionette/windows_taskcluster_config.py
+ default:
+ - marionette/prod_config.py
+ - remove_executables.py
+ extra-options:
+ - --setpref=toolkit.asyncshutdown.log=true
+ test-manifest-loader: null # don't load tests in the taskgraph
+ tier:
+ by-variant:
+ headless: 2
+ default: default
+ variants:
+ - webrender-sw
+ - headless
+ run-on-projects:
+ by-variant:
+ headless:
+ by-test-platform:
+ (linux.*64)(-shippable)?-qr/opt: built-projects
+ default: []
+ webrender-sw:
+ by-test-platform:
+ .*/debug: built-projects
+ default: []
+ default:
+ by-test-platform:
+ .*(tsan|wayland).*: []
+ default: built-projects
+ virtualization: virtual
+
+marionette:
+ description: "Marionette unittest run"
+ treeherder-symbol: Mn
+ max-run-time:
+ by-test-platform:
+ .*asan.*: 5400
+ .*ccov.*: 3600
+ .*debug.*: 3600
+ default: 2700
+ instance-size: default
+ chunks: 1
diff --git a/taskcluster/ci/test/misc.yml b/taskcluster/ci/test/misc.yml
new file mode 100644
index 0000000000..e6a3bbb1c1
--- /dev/null
+++ b/taskcluster/ci/test/misc.yml
@@ -0,0 +1,272 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ test-manifest-loader: null # don't load tests in the taskgraph
+
+geckoview-junit:
+ description: "Geckoview junit run"
+ suite: geckoview-junit
+ variants: ["geckoview-fission", "no-fission"]
+ treeherder-symbol: gv-junit
+ loopback-video: true
+ target: geckoview-androidTest.apk
+ max-run-time: 3600
+ run-on-projects:
+ by-variant:
+ geckoview-fission: ['trunk']
+ no-fission: built-projects
+ default: []
+ tier: default
+ mozharness:
+ script: android_emulator_unittest.py
+ config:
+ by-test-platform:
+ android-em-7.*:
+ - android/android_common.py
+ - android/android-x86_64.py
+ extra-options:
+ - --test-suite=geckoview-junit
+
+telemetry-tests-client:
+ description: "Telemetry tests client run"
+ suite: telemetry-tests-client
+ treeherder-symbol: tt(c)
+ run-on-projects:
+ by-test-platform:
+ .*wayland.*: []
+ default: built-projects
+ max-run-time: 1200
+ tier: default
+ mozharness:
+ script: telemetry/telemetry_client.py
+ config:
+ by-test-platform:
+ linux.*:
+ - remove_executables.py
+ windows.*: []
+ macosx.*: []
+
+test-verify:
+ description: "Extra verification of tests modified on this push"
+ suite: test-verify
+ treeherder-symbol: TV
+ loopback-video: true
+ max-run-time: 10800
+ allow-software-gl-layers: false
+ variants:
+ - no-fission
+ run-on-projects:
+ by-variant:
+ no-fission:
+ by-test-platform:
+ # do not run on ccov or asan or shippable or wayland
+ .*(-ccov|-asan|-shippable|-wayland).*: []
+ # we prefer -qr platforms with fis, no need to run on both
+ (?!.*(-ccov|-asan|-shippable))(?!.*-qr).*: []
+ # do not run on mozilla-central, beta or release: usually just confirms earlier results
+ android.*: ['integration']
+ default: []
+ default:
+ by-test-platform:
+ # do not run on ccov or asan or shippable or wayland
+ .*(-ccov|-asan|-shippable|-wayland).*: []
+ # we prefer -qr platforms with fis, no need to run on both
+ (?!.*(-ccov|-asan|-shippable))(?!.*-qr).*: []
+ # do not run on mozilla-central, beta or release: usually just confirms earlier results
+ android.*: []
+ default: ['integration']
+ built-projects-only: true
+ target:
+ by-test-platform:
+ android-em-7.*: geckoview-test_runner.apk
+ default: null
+ optimization:
+ test-verify: ["test-verify"]
+ tier: 2
+ mozharness:
+ script:
+ by-test-platform:
+ android-em.*: android_emulator_unittest.py
+ default: desktop_unittest.py
+ config:
+ by-test-platform:
+ android-em-7.*:
+ - android/android_common.py
+ - android/android-x86_64.py
+ linux.*:
+ - unittests/linux_unittest.py
+ - remove_executables.py
+ macosx.*:
+ - unittests/mac_unittest.py
+ windows.*:
+ - unittests/win_unittest.py
+ extra-options:
+ - --verify
+ fetches:
+ toolchain:
+ by-test-platform:
+ linux.*:
+ - linux64-node
+ - linux64-minidump-stackwalk
+ - linux64-fix-stacks
+ macosx.*:
+ - macosx64-node
+ - macosx64-minidump-stackwalk
+ - macosx64-fix-stacks
+ win.*-64.*:
+ - win64-node
+ - win32-minidump-stackwalk
+ - win32-fix-stacks
+ win.*32.*:
+ - win32-node
+ - win32-minidump-stackwalk
+ - win32-fix-stacks
+ android-em-7.*:
+ - android-sdk-linux
+ - android-system-image-x86_64-linux
+ - android-avd-x86_64-linux
+ - linux64-node
+ - linux64-minidump-stackwalk
+ - linux64-fix-stacks
+
+test-verify-gpu:
+ description: "Extra verification of tests modified on this push on gpu instances"
+ suite:
+ category: test-verify
+ name: test-verify-gpu
+ treeherder-symbol: TVg
+ loopback-video: true
+ virtualization: virtual-with-gpu
+ max-run-time: 10800
+ allow-software-gl-layers: false
+ run-on-projects:
+ by-test-platform:
+ # do not run on ccov or asan or shippable or wayland
+ .*(-ccov|-asan|-shippable|-wayland).*: []
+ # do not run on mozilla-central, beta or release: usually just confirms earlier results
+ linux.*: ['integration']
+ default: []
+ built-projects-only: true
+ optimization:
+ test-verify: ["test-verify-gpu"]
+ tier: 2
+ mozharness:
+ script:
+ by-test-platform:
+ android-em.*: android_emulator_unittest.py
+ default: desktop_unittest.py
+ config:
+ by-test-platform:
+ android-em-7.*:
+ - android/android_common.py
+ - android/android-x86_64.py
+ linux.*:
+ - unittests/linux_unittest.py
+ - remove_executables.py
+ macosx.*:
+ - unittests/mac_unittest.py
+ windows.*:
+ - unittests/win_unittest.py
+ extra-options:
+ - --verify
+ - --gpu-required
+
+test-coverage:
+ description: "Per-test coverage"
+ suite: test-coverage
+ treeherder-symbol: TC
+ loopback-video: true
+ instance-size: default
+ max-run-time: 10800
+ allow-software-gl-layers: false
+ run-on-projects:
+ by-test-platform:
+ .*-ccov.*/.*: built-projects
+ default: []
+ tier: 2
+ mozharness:
+ script:
+ by-test-platform:
+ android-em.*: android_emulator_unittest.py
+ default: desktop_unittest.py
+ config:
+ by-test-platform:
+ android-em-7.*:
+ - android/android_common.py
+ - android/android-x86_64.py
+ linux.*:
+ - unittests/linux_unittest.py
+ - remove_executables.py
+ macosx.*:
+ - unittests/mac_unittest.py
+ windows.*:
+ - unittests/win_unittest.py
+ extra-options:
+ - --per-test-coverage
+ fetches:
+ toolchain:
+ by-test-platform:
+ linux.*:
+ - linux64-node
+ - linux64-minidump-stackwalk
+ - linux64-fix-stacks
+ macosx.*:
+ - macosx64-node
+ - macosx64-minidump-stackwalk
+ - macosx64-fix-stacks
+ win.*-64.*:
+ - win64-node
+ - win32-minidump-stackwalk
+ - win32-fix-stacks
+ win.*32.*:
+ - win32-node
+ - win32-minidump-stackwalk
+ - win32-fix-stacks
+ android-em-7.*:
+ - android-sdk-linux
+ - android-system-image-x86_64-linux
+ - android-avd-x86_64-linux
+ - linux64-node
+ - linux64-minidump-stackwalk
+ - linux64-fix-stacks
+
+test-coverage-gpu:
+ description: "Per-test coverage for tests that require gpu instances"
+ suite: test-coverage
+ treeherder-symbol: TCg
+ loopback-video: true
+ virtualization: virtual-with-gpu
+ instance-size: default
+ max-run-time: 10800
+ allow-software-gl-layers: false
+ run-on-projects:
+ by-test-platform:
+ # only run on mozilla-central and try.
+ .*-ccov.*/.*: ['mozilla-central']
+ default: []
+ tier:
+ by-test-platform:
+ windows.*asan.*: 3
+ default: 2
+ mozharness:
+ script:
+ by-test-platform:
+ android-em.*: android_emulator_unittest.py
+ default: desktop_unittest.py
+ config:
+ by-test-platform:
+ android-em-7.*:
+ - android/android_common.py
+ - android/android-x86_64.py
+ linux.*:
+ - unittests/linux_unittest.py
+ - remove_executables.py
+ macosx.*:
+ - unittests/mac_unittest.py
+ windows.*:
+ - unittests/win_unittest.py
+ extra-options:
+ - --per-test-coverage
+ - --gpu-required
diff --git a/taskcluster/ci/test/mochitest.yml b/taskcluster/ci/test/mochitest.yml
new file mode 100644
index 0000000000..b4439a6e47
--- /dev/null
+++ b/taskcluster/ci/test/mochitest.yml
@@ -0,0 +1,1090 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ suite:
+ category: mochitest
+ target:
+ by-test-platform:
+ android-em-7.*: geckoview-test_runner.apk
+ android-hw.*: geckoview-test_runner.apk
+ windows11-64-2009.*:
+ by-variant:
+ msix: target.installer.msix
+ default: null
+ default: null
+ tier:
+ by-variant:
+ xorigin:
+ by-test-platform:
+ linux.*64.*-qr/debug: 1
+ default: 2
+ default:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug-isolated-process: 3
+ default: default
+ mozharness:
+ script:
+ by-test-platform:
+ android-em.*: android_emulator_unittest.py
+ android-hw.*: android_hardware_unittest.py
+ default: desktop_unittest.py
+ config:
+ by-test-platform:
+ android-em-7.*:
+ - android/android_common.py
+ - android/android-x86_64.py
+ android-hw.*:
+ - android/android_common.py
+ - android/android_hw.py
+ linux.*:
+ - unittests/linux_unittest.py
+ - remove_executables.py
+ macosx.*:
+ - unittests/mac_unittest.py
+ windows.*:
+ - unittests/win_unittest.py
+
+mochitest-plain:
+ description: "Mochitest plain run"
+ treeherder-symbol: M()
+ schedules-component: mochitest-plain
+ loopback-video: true
+ virtualization: virtual
+ variants:
+ - aab+no-fission
+ - conditioned_profile
+ - xorigin
+ - no-fission
+ - socketprocess_networking
+ - webrender-sw+no-fission
+ - webrender-sw
+ - headless
+ - headless+socketprocess_networking
+ - http3
+ - editor-legacy-direction
+ run-on-projects:
+ by-variant:
+ conditioned_profile:
+ by-test-platform:
+ .*(asan|ccov|wayland).*: []
+ linux1804-64(-shippable)?-qr/opt: ['trunk']
+ windows11-64.*(-shippable)?-qr/opt: ['trunk']
+ default: []
+ xorigin:
+ by-test-platform:
+ .*(asan|wayland).*: []
+ windows.*ccov.*: []
+ (linux.*64|macosx.*64|windows11.*)(-shippable)?-qr/(opt|debug): ['trunk']
+ windows.*64-ccov-qr/opt: ['mozilla-central']
+ linux.*64-ccov-qr/opt: ['mozilla-central']
+ default: []
+ socketprocess_networking:
+ by-test-platform:
+ .*(asan|ccov|wayland).*: []
+ (linux.*64|macosx.*64|windows11-64.*)(-shippable)?-qr/(opt|debug): ['autoland', 'mozilla-central']
+ default: []
+ webrender-sw+no-fission:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug: built-projects
+ linux.*asan.*: ['trunk']
+ linux.*64(-shippable)?-qr/(opt|debug): ['trunk']
+ default: []
+ webrender-sw:
+ by-test-platform:
+ linux1804-64-qr/debug: built-projects
+ default: []
+ aab+no-fission:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug: built-projects
+ default: []
+ headless:
+ by-test-platform:
+ .*wayland.*: []
+ linux1804-64.*: ['mozilla-central']
+ default: []
+ headless+socketprocess_networking:
+ by-test-platform:
+ .*wayland.*: []
+ linux1804-64.*: ['mozilla-central']
+ default: []
+ no-fission:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug-isolated-process: []
+ android.*: built-projects
+ linux1804-64-qr/debug: ['trunk']
+ linux1804-64(-shippable|-asan)?-qr/opt: ['trunk']
+ default: []
+ http3:
+ by-test-platform:
+ linux1804-64-qr/debug: built-projects
+ default: []
+ editor-legacy-direction:
+ by-test-platform:
+ linux1804-64-qr/debug: ['mozilla-central']
+ default: []
+ default:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug-isolated-process: []
+ android.*: built-projects
+ .*wayland.*: []
+ default: built-projects
+ chunks:
+ by-test-platform:
+ android-em-7.*: 4
+ linux.*/debug: 16
+ linux.*64-asan/opt: 10
+ linux.*64-tsan-qr/opt: 20
+ linux.*64-.*cov/opt: 10
+ windows.*-ccov.*/.*: 10
+ macosx.*64-ccov.*/.*: 10
+ default: 5
+ instance-size:
+ by-test-platform:
+ linux.*64-tsan-qr/opt: xlarge # runs out of memory using 8GB
+ default: default
+ max-run-time: 5400
+ allow-software-gl-layers: false
+ mozharness:
+ mochitest-flavor: plain
+ extra-options:
+ by-test-platform:
+ android-em.*:
+ - --test-suite=mochitest-plain
+ default: []
+ chunked:
+ by-test-platform:
+ android-em.*: false
+ default: true
+ fetches:
+ toolchain:
+ by-test-platform:
+ linux.*:
+ - linux64-node-12
+ - linux64-minidump-stackwalk
+ - linux64-fix-stacks
+ macosx.*:
+ - macosx64-node-12
+ - macosx64-minidump-stackwalk
+ - macosx64-fix-stacks
+ win.*-64.*:
+ - win64-node-12
+ - win32-minidump-stackwalk
+ - win32-fix-stacks
+ win.*32.*:
+ - win32-node-12
+ - win32-minidump-stackwalk
+ - win32-fix-stacks
+ android-em-7.*:
+ - android-system-image-x86_64-linux
+ - android-avd-x86_64-linux
+ - android-emulator-linux
+ - linux64-node-12
+ - linux64-minidump-stackwalk
+
+mochitest-a11y:
+ description: "Mochitest a11y run"
+ treeherder-symbol: M(a11y)
+ schedules-component: mochitest-a11y
+ test-manifest-loader: default # ensure we don't run with manifest-scheduling
+ loopback-video: true
+ run-without-variant: false
+ variants:
+ - 1proc
+ - socketprocess_networking+1proc
+ - webrender-sw+1proc
+ - editor-legacy-direction
+ run-on-projects:
+ by-variant:
+ socketprocess_networking+1proc:
+ by-test-platform:
+ linux.*64-qr/debug: ['autoland', 'mozilla-central']
+ default: []
+ webrender-sw+1proc:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug: built-projects
+ linux.*64-qr/debug: built-projects
+ default: []
+ 1proc:
+ by-test-platform:
+ .*wayland.*: []
+ default: built-projects
+ editor-legacy-direction:
+ by-test-platform:
+ linux1804-64-qr/debug: ['mozilla-central']
+ default: []
+ mozharness:
+ mochitest-flavor: a11y
+
+mochitest-browser-chrome:
+ description: "Mochitest browser-chrome run"
+ suite:
+ name: mochitest-browser-chrome
+ treeherder-symbol: M(bc)
+ schedules-component: mochitest-browser-chrome
+ loopback-video: true
+ variants:
+ - webrender-sw
+ - webrender-sw+a11y-checks
+ - socketprocess_networking
+ - msix
+ - editor-legacy-direction
+ run-on-projects:
+ by-variant:
+ webrender-sw:
+ by-test-platform:
+ linux.*64(-asan)?-qr/(opt|debug): ['all']
+ linux.*64-tsan-qr/opt: built-projects
+ linux.*64-shippable-qr/opt: ['release']
+ linux.*64(-shippable)?-qr/opt: built-projects
+ linux.*64-devedition-qr/opt: built-projects
+ windows1.*-64.*-qr/debug: built-projects
+ default: []
+ webrender-sw+a11y-checks:
+ by-test-platform:
+ linux.*64(-shippable)?-qr/opt: ['trunk']
+ default: []
+ socketprocess_networking:
+ by-test-platform:
+ .*asan.*: []
+ .*ccov.*: []
+ (linux.*64|macosx.*64|windows1.*-64.*)(-shippable)?-qr/(opt|debug): ['autoland', 'mozilla-central']
+ default: []
+ msix:
+ by-test-platform:
+ windows11-64-2009-qr/debug: built-projects
+ windows11-64-2009(-shippable)?-qr/opt: built-projects
+ default: []
+ editor-legacy-direction:
+ by-test-platform:
+ linux1804-64-qr/debug: ['mozilla-central']
+ default: []
+ default:
+ by-test-platform:
+ android.*: []
+ linux.*: [] # linux runs M-swr(bc), not M(bc)
+ default: built-projects
+ tier:
+ by-variant:
+ webrender-sw:
+ by-test-platform:
+ linux.*64(-asan|-shippable)?-qr/(opt|debug): 1
+ default: default
+ default: default
+ chunks:
+ by-test-platform:
+ linux.*-qr/debug: 16
+ linux.*64-asan-qr/opt: 16
+ linux.*64-tsan-qr/opt: 32
+ macosx.*64/debug: 16
+ windows.*-ccov.*/.*: 14
+ windows.*-asan-qr/opt: 14
+ windows7-32.*: 20
+ windows.*32-qr/debug: 12
+ default: 7
+ max-run-time:
+ by-variant:
+ msix: 5400
+ socketprocess_networking:
+ by-test-platform:
+ linux.*-qr/debug: 7200
+ default: 5400
+ default:
+ by-test-platform:
+ linux.*64-ccov.*/.*: 9000
+ linux.*64-tsan-qr/opt: 10800
+ linux.*-qr/opt: 5400
+ macosx.*64-ccov.*/.*: 10800
+ windows.*-ccov.*/.*: 10800
+ windows.*-asan-qr/opt: 5400
+ .*/debug: 5400
+ default: 3600
+ mozharness:
+ mochitest-flavor: browser
+ chunked: true
+ # Bug 1281241: migrating to m3.large instances
+ instance-size:
+ by-test-platform:
+ linux.*64-tsan-qr/opt: xlarge # runs out of memory using 8GB
+ default: default
+ allow-software-gl-layers: false
+
+mochitest-browser-a11y:
+ description: "Mochitest browser-a11y run"
+ suite:
+ name: mochitest-browser-a11y
+ treeherder-symbol: M(ba)
+ schedules-component: mochitest-browser-a11y
+ loopback-video: true
+ run-on-projects:
+ by-test-platform:
+ android.*: []
+ .*wayland.*: []
+ default: built-projects
+ tier: default
+ max-run-time:
+ by-test-platform:
+ .*tsan.*: 2700
+ linux.*/debug: 2700
+ default: 1800
+ mozharness:
+ mochitest-flavor: browser
+ chunked:
+ by-test-platform:
+ .*tsan.*: true
+ default: false
+ chunks:
+ by-test-platform:
+ .*tsan.*: 2
+ default: 1
+ instance-size: default
+ allow-software-gl-layers: false
+ virtualization: virtual
+
+mochitest-browser-media:
+ description: "Mochitest browser media"
+ suite:
+ name: mochitest-browser-media
+ treeherder-symbol: M(mda-bc)
+ schedules-component: mochitest-browser-media
+ loopback-video: true
+ test-manifest-loader: null
+ variants: ["wmf-media-engine"]
+ run-on-projects:
+ by-variant:
+ wmf-media-engine:
+ by-test-platform:
+ .*asan.*: []
+ windows11-64.*/debug: [] # Bug 1805736
+ windows1.*-64.*: ['autoland', 'mozilla-central']
+ default: []
+ default:
+ by-test-platform:
+ android.*: []
+ .*wayland.*: []
+ default: built-projects
+ tier: default
+ max-run-time:
+ by-test-platform:
+ .*tsan.*: 1800
+ default: 1200
+ mozharness:
+ mochitest-flavor: browser
+ instance-size: default
+ allow-software-gl-layers: false
+ virtualization: virtual
+
+browser-screenshots:
+ description: "Browser Screenshots"
+ suite:
+ name: mochitest-browser-chrome-screenshots
+ treeherder-symbol: M(ss)
+ loopback-video: true
+ test-manifest-loader: null # don't load tests in the taskgraph
+ variants: ["no-fission"]
+ run-on-projects:
+ by-test-platform:
+ linux1804-64.*/opt: ['trunk']
+ default: []
+ max-run-time: 3600
+ mozharness:
+ mochitest-flavor: browser
+ allow-software-gl-layers: false
+
+mochitest-chrome:
+ description: "Mochitest chrome run"
+ treeherder-symbol: M(c)
+ schedules-component: mochitest-chrome
+ loopback-video: true
+ run-without-variant: false
+ variants:
+ - 1proc
+ - socketprocess_networking+1proc
+ - webrender-sw+1proc
+ - editor-legacy-direction
+ run-on-projects:
+ by-variant:
+ socketprocess_networking+1proc:
+ by-test-platform:
+ .*asan.*: []
+ .*ccov.*: []
+ (linux.*64|macosx.*64|windows11-64.*)(-shippable)?-qr/(opt|debug): ['autoland', 'mozilla-central']
+ default: []
+ webrender-sw+1proc:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug: built-projects
+ linux.*64-qr/debug: built-projects
+ default: []
+ editor-legacy-direction:
+ by-test-platform:
+ linux1804-64-qr/debug: ['mozilla-central']
+ default: []
+ 1proc:
+ by-test-platform:
+ .*wayland.*: []
+ default: built-projects
+ chunks:
+ by-test-platform:
+ .*tsan.*/opt: 6
+ default: 3
+ max-run-time: 3600
+ mozharness:
+ mochitest-flavor: chrome
+ chunked: true
+ instance-size:
+ by-test-platform:
+ linux.*64-tsan-qr/opt: xlarge # runs out of memory otherwise using 8GB
+ default: default
+
+mochitest-devtools-chrome:
+ description: "Mochitest devtools-chrome run"
+ suite:
+ name: mochitest-devtools-chrome
+ schedules-component: mochitest-browser-chrome
+ treeherder-symbol: M(dt)
+ loopback-video: true
+ variants:
+ - a11y-checks
+ - socketprocess_networking
+ - webrender-sw
+ - devtools-no-eft+no-fission
+ - http3
+ run-on-projects:
+ by-variant:
+ a11y-checks:
+ by-test-platform:
+ linux.*64(-shippable)?-qr/opt: ['trunk']
+ default: []
+ devtools-no-eft+no-fission:
+ by-test-platform:
+ linux.*64(-shippable)?-qr/opt: ['trunk']
+ default: []
+ http3:
+ by-test-platform:
+ linux1804-64-qr/debug: built-projects
+ default: []
+ socketprocess_networking:
+ by-test-platform:
+ .*asan.*: []
+ .*ccov.*: []
+ (linux.*64|macosx.*64|windows.*)(-shippable)?-qr/(opt|debug): ['autoland', 'mozilla-central']
+ default: []
+ webrender-sw:
+ by-test-platform:
+ linux.*64-qr/debug: built-projects
+ default: []
+ default:
+ by-test-platform:
+ android.*: []
+ .*wayland.*: []
+ linux.*64-ccov-qr/opt: []
+ default: built-projects
+ tier: default
+ max-run-time:
+ by-test-platform:
+ windows.*-ccov.*/.*: 10800
+ macosx.*64-ccov.*/.*: 9000
+ linux.*64-ccov.*/.*: 7200
+ linux.*64-tsan-qr/opt: 7200
+ default: 5400
+ chunks:
+ by-test-platform:
+ .*-ccov.*/.*: 12
+ linux.*64-qr/debug: 12
+ macosx.*64-qr/debug: 8
+ .*-asan(-qr)?/opt: 8
+ .*-tsan-qr/opt: 16
+ default: 5
+ mozharness:
+ mochitest-flavor: chrome
+ chunked: true
+ instance-size:
+ by-test-platform:
+ linux.*64-[at]san(-qr)?/opt: xlarge # runs out of memory otherwise using 8GB
+ default: default
+ # Bug 1296086: high number of intermittents observed with software GL and large instances
+ allow-software-gl-layers: false
+ fetches:
+ toolchain:
+ by-test-platform:
+ linux.*:
+ - linux64-node-12
+ - linux64-minidump-stackwalk
+ - linux64-fix-stacks
+ macosx.*:
+ - macosx64-node-12
+ - macosx64-minidump-stackwalk
+ - macosx64-fix-stacks
+ win.*-64.*:
+ - win64-node-12
+ - win32-minidump-stackwalk
+ - win32-fix-stacks
+ win.*32.*:
+ - win32-node-12
+ - win32-minidump-stackwalk
+ - win32-fix-stacks
+ android-em-7.*:
+ - android-system-image-x86_64-linux
+ - android-avd-x86_64-linux
+ - android-emulator-linux
+ - linux64-node-12
+ - linux64-minidump-stackwalk
+
+mochitest-plain-gpu:
+ description: "Mochitest plain GPU run"
+ suite:
+ name: mochitest-plain-gpu
+ treeherder-symbol: M(gpu)
+ schedules-component: mochitest-plain
+ loopback-video: true
+ variants:
+ - no-fission
+ - webrender-sw+no-fission
+ - webrender-sw
+ run-on-projects:
+ by-variant:
+ webrender-sw+no-fission:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug: built-projects
+ linux.*asan.*: ['trunk']
+ linux.*64(-shippable)?-qr/(opt|debug): ['trunk']
+ default: []
+ webrender-sw:
+ by-test-platform:
+ linux.*64-qr/debug: built-projects
+ default: []
+ no-fission:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug-isolated-process: []
+ linux.*64-ccov-qr/opt: []
+ linux1804-32.*: []
+ .*-tsan-qr/opt: []
+ .*wayland.*: []
+ linux.*: ['trunk'] # linux opt/debug/asan
+ android.*: built-projects
+ default: []
+ default:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug-isolated-process: []
+ .*wayland.*: []
+ default: built-projects
+ virtualization: virtual-with-gpu
+ tier:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug-isolated-process: 3
+ default: default
+ mozharness:
+ mochitest-flavor: plain
+ extra-options:
+ by-test-platform:
+ android.*:
+ # note that Android runs fewer suites than other platforms
+ - --test-suite=mochitest-plain-gpu
+ default:
+ - --mochitest-suite=mochitest-plain-gpu
+ instance-size:
+ by-test-platform:
+ linux.*64-tsan-qr/opt: xlarge # runs out of memory otherwise using 8GB
+ default: default
+
+mochitest-chrome-gpu:
+ description: "Mochitest chrome GPU run"
+ suite:
+ name: mochitest-chrome-gpu
+ treeherder-symbol: M(gpu-c)
+ loopback-video: true
+ virtualization: virtual-with-gpu
+ run-without-variant: false
+ variants:
+ - 1proc
+ - socketprocess_networking+1proc
+ - webrender-sw+1proc
+ run-on-projects:
+ by-variant:
+ socketprocess_networking+1proc: []
+ webrender-sw+1proc:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug: built-projects
+ linux.*64-qr/debug: built-projects
+ default: []
+ 1proc:
+ by-test-platform:
+ android.*/.*: []
+ .*wayland.*: []
+ default: built-projects
+ tier: default
+ mozharness:
+ mochitest-flavor: chrome
+ extra-options:
+ by-test-platform:
+ android.*:
+ # note that Android runs fewer suites than other platforms
+ - --test-suite=mochitest-chrome-gpu
+ default:
+ - --mochitest-suite=mochitest-chrome-gpu
+ instance-size:
+ by-test-platform:
+ linux.*64-tsan-qr/opt: xlarge # runs out of memory using 8GB of memory
+ default: default
+
+mochitest-media:
+ description: "Mochitest media run"
+ treeherder-symbol: M(mda)
+ schedules-component: mochitest-plain
+ max-run-time:
+ by-test-platform:
+ windows.*-ccov.*/.*: 7200
+ macosx.*64-ccov.*/.*: 7200
+ linux.*64-tsan-qr/opt: 7200
+ default: 5400
+ variants:
+ - no-fission
+ - socketprocess+no-fission
+ - socketprocess
+ - webgl-ipc
+ - webrender-sw+no-fission
+ - webrender-sw
+ - wmf-media-engine
+ - msix
+ run-on-projects:
+ by-variant:
+ webgl-ipc:
+ by-test-platform:
+ android.*: []
+ windows.*ccov.*: []
+ linux.*64(-shippable|-asan)?-qr/opt: ['autoland', 'mozilla-central'] # linux.*-tsan disabled until Bug 1835935
+ macosx.*64(-shippable)?-qr/(opt|debug): ['autoland', 'mozilla-central']
+ windows1.*(-shippable)?-qr/(opt|debug): ['autoland', 'mozilla-central']
+ windows.*-asan-qr/opt: ['autoland', 'mozilla-central']
+ default: []
+ socketprocess+no-fission:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug: ['autoland', 'mozilla-central']
+ android-hw-.*-aarch64-qr/debug: built-projects
+ linux1804-64-qr/debug: ['trunk']
+ linux1804-64(-shippable|-asan)?-qr/opt: ['trunk']
+ default: []
+ socketprocess:
+ by-test-platform:
+ android.*: []
+ windows.*ccov.*: []
+ linux.*64(-asan|-devedition|-shippable)?-qr/(opt|debug): built-projects
+ linux.*64-tsan-qr/opt: [] # Linux TSAN disabled until Bug 1835935
+ macosx.*-64(-devedition|-shippable)?-qr/(opt|debug): built-projects
+ windows1.*(-devedition|-shippable)?-qr/(opt|debug): built-projects
+ windows.*-asan-qr/opt: ['autoland', 'mozilla-central']
+ default: []
+ webrender-sw+no-fission:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug: ['autoland', 'mozilla-central']
+ linux1804-64-qr/debug: ['trunk']
+ linux1804-64(-shippable|-asan)?-qr/opt: ['trunk']
+ default: []
+ webrender-sw:
+ by-test-platform:
+ android.*: []
+ linux1804-64-qr/debug: ['autoland', 'mozilla-central']
+ default: []
+ no-fission:
+ by-test-platform:
+ android-hw-.*/opt: []
+ android-hw-.*-arm7.*/(?:debug)?: ['trunk', 'mozilla-beta', 'mozilla-release']
+ android-em-7.0-x86_64-qr/debug-isolated-process: []
+ android.*: built-projects
+ linux1804-64-qr/debug: ['trunk']
+ linux1804-64(-shippable|-asan)?-qr/opt: ['trunk']
+ default: []
+ wmf-media-engine:
+ by-test-platform:
+ windows1.*-64.*: ['autoland', 'mozilla-central']
+ default: []
+ msix:
+ by-test-platform:
+ windows11-64-2009-shippable-qr/opt: built-projects
+ windows11-64-2009-qr/opt: ['autoland']
+ windows11-64-2009-qr/debug: ['autoland']
+ default: []
+ default:
+ by-test-platform:
+ android-hw.*/opt: []
+ android-em-7.0-x86_64-qr/debug-isolated-process: []
+ android.*: built-projects
+ linux.*(asan|ccov)/opt: []
+ .*(ccov/|asan/|-32).*: built-projects
+ linux.*64-tsan.*: [] # linux.*-tsan disabled until Bug 1835935
+ (android|linux|windows10-64-2009|windows11-64-2009|macos)(?!.*-qr).*: []
+ default: built-projects
+ loopback-video: true
+ chunks:
+ by-variant:
+ wmf-media-engine: 1
+ default:
+ by-test-platform:
+ (android|macos).*/opt: 1
+ ^(?!.*asan).*windows1.*/opt: 1
+ linux.*/debug: 3
+ linux.*64-tsan-qr/opt: 5
+ default: 2
+ mozharness:
+ mochitest-flavor: plain
+ chunked:
+ by-test-platform:
+ android.*: false
+ macosx.*64.*: false
+ windows1.*: false
+ default: true
+ extra-options:
+ by-test-platform:
+ android-em-7.*:
+ - --setpref=webgl.out-of-process=false
+ - --setpref=security.sandbox.content.headless=false
+ - --setpref=gfx.canvas.accelerated=false
+ default:
+ - --setpref=webgl.out-of-process=false
+ - --setpref=security.sandbox.content.headless=false
+ tier:
+ by-test-platform:
+ .*ccov.*: 2
+ android-em.*: 1
+ android-em-7.0-x86_64-qr/debug-isolated-process: 3
+ android-hw.*: 1
+ default: default
+
+mochitest-valgrind:
+ description: "Mochitest plain Valgrind run"
+ suite:
+ name: mochitest-valgrind-plain
+ treeherder-symbol: M-V()
+ run-on-projects: []
+ test-manifest-loader: null # don't load tests in the taskgraph
+ tier: 3
+ loopback-video: true
+ chunks: 40
+ max-run-time: 14400
+ run-without-variant: false
+ variants: ["1proc"]
+ allow-software-gl-layers: false
+ mozharness:
+ mochitest-flavor: plain
+ chunked: true
+
+mochitest-webgl1-core:
+ description: "Mochitest webgl1-core run"
+ treeherder-symbol: M(gl1c)
+ schedules-component: mochitest-plain
+ virtualization: virtual-with-gpu
+ test-manifest-loader: null # don't load tests in the taskgraph
+ loopback-video: true
+ max-run-time:
+ by-test-platform:
+ macosx.*64-ccov.*/.*: 7200
+ default: 1800
+ variants:
+ - no-fission
+ - webgl-ipc
+ - webrender-sw+no-fission
+ - webrender-sw
+ run-on-projects:
+ by-variant:
+ webgl-ipc:
+ by-test-platform:
+ .*-(ccov|tsan|wayland).*: []
+ linux.*-64.*: ["trunk"]
+ mac.*: ["trunk"]
+ win.*: ["trunk"]
+ default: []
+ webrender-sw+no-fission:
+ by-test-platform:
+ linux.*64-qr/debug: ['trunk']
+ default: []
+ webrender-sw:
+ by-test-platform:
+ linux.*64-qr/debug: built-projects
+ default: []
+ no-fission:
+ by-test-platform:
+ android-hw-.*(?<!-shippable)(-qr)?/opt: ['mozilla-central', 'mozilla-beta', 'mozilla-release']
+ android-hw.*aarch.*-shippable-qr/opt: ['mozilla-central']
+ android-hw.*aarch.*-qr/debug: ['mozilla-central']
+ linux1804-64-qr/debug: ['trunk']
+ linux1804-64(-shippable|-asan)?-qr/opt: ['trunk']
+ default: []
+ default:
+ by-test-platform:
+ android.*: []
+ .*-(tsan|wayland).*: []
+ default: built-projects
+ # Bug 1296733: llvmpipe with mesa 9.2.1 lacks thread safety
+ allow-software-gl-layers: false
+ mozharness:
+ mochitest-flavor: plain
+ extra-options:
+ - --setpref=webgl.out-of-process=false
+ - --setpref=security.sandbox.content.headless=false
+
+mochitest-webgl1-ext:
+ description: "Mochitest webgl1-ext run"
+ treeherder-symbol: M(gl1e)
+ schedules-component: mochitest-plain
+ virtualization: virtual-with-gpu
+ chunks:
+ by-test-platform:
+ android.*: 2
+ default: 1
+ test-manifest-loader: null # don't load tests in the taskgraph
+ loopback-video: true
+ max-run-time: 2700
+ variants:
+ - no-fission
+ - webgl-ipc
+ - webrender-sw+no-fission
+ - webrender-sw
+ run-on-projects:
+ by-variant:
+ webgl-ipc:
+ by-test-platform:
+ .*-(ccov|tsan|wayland).*/.*: []
+ linux.*-64.*: ["trunk"]
+ mac.*: ["trunk"]
+ win.*: ["trunk"]
+ default: []
+ webrender-sw+no-fission:
+ by-test-platform:
+ linux.*64-qr/debug: ['trunk']
+ default: []
+ webrender-sw:
+ by-test-platform:
+ linux.*64-qr/debug: built-projects
+ default: []
+ no-fission:
+ by-test-platform:
+ android-hw-.*(?<!-shippable)(-qr)?/opt: ['mozilla-central', 'mozilla-beta', 'mozilla-release']
+ android-hw.*aarch.*-shippable-qr/opt: ['mozilla-central']
+ android-hw.*aarch.*-qr/debug: ['mozilla-central']
+ linux1804-64-qr/debug: ['trunk']
+ linux1804-64(-shippable|-asan)?-qr/opt: ['trunk']
+ default: []
+ default:
+ by-test-platform:
+ android.*: []
+ .*-(tsan|wayland).*: []
+ default: built-projects
+ # Bug 1296733: llvmpipe with mesa 9.2.1 lacks thread safety
+ allow-software-gl-layers: false
+ mozharness:
+ mochitest-flavor: plain
+ chunked: true
+ extra-options:
+ - --setpref=webgl.out-of-process=false
+ - --setpref=security.sandbox.content.headless=false
+
+mochitest-webgl2-core:
+ description: "Mochitest webgl2-core run"
+ treeherder-symbol: M(gl2c)
+ schedules-component: mochitest-plain
+ virtualization: virtual-with-gpu
+ chunks:
+ by-test-platform:
+ android.*: 2
+ default: 1
+ test-manifest-loader: null # don't load tests in the taskgraph
+ loopback-video: true
+ max-run-time: 1800
+ variants:
+ - no-fission
+ - webgl-ipc
+ - webrender-sw+no-fission
+ - webrender-sw
+ run-on-projects:
+ by-variant:
+ webgl-ipc:
+ by-test-platform:
+ .*-(ccov|tsan|wayland).*/.*: []
+ android.*: []
+ linux.*-64.*: ["trunk"]
+ mac.*: ["trunk"]
+ win.*: ["trunk"]
+ default: []
+ webrender-sw+no-fission:
+ by-test-platform:
+ linux.*64-qr/debug: ['trunk']
+ default: []
+ webrender-sw:
+ by-test-platform:
+ linux.*64-qr/debug: built-projects
+ default: []
+ no-fission:
+ by-test-platform:
+ android-hw-.*(?<!-shippable)(-qr)?/opt: ['mozilla-central', 'mozilla-beta', 'mozilla-release']
+ android-hw.*aarch.*-shippable-qr/opt: ['mozilla-central']
+ android-hw.*aarch.*-qr/debug: ['mozilla-central']
+ linux1804-64-qr/debug: ['trunk']
+ linux1804-64(-shippable|-asan)?-qr/opt: ['trunk']
+ default: []
+ default:
+ by-test-platform:
+ android.*: []
+ .*-(tsan|wayland).*: []
+ default: built-projects
+ # Bug 1296733: llvmpipe with mesa 9.2.1 lacks thread safety
+ allow-software-gl-layers: false
+ mozharness:
+ mochitest-flavor: plain
+ chunked: true
+
+mochitest-webgl2-ext:
+ description: "Mochitest webgl2-ext run"
+ treeherder-symbol: M(gl2e)
+ schedules-component: mochitest-plain
+ virtualization: virtual-with-gpu
+ variants:
+ - no-fission
+ - webgl-ipc
+ - webrender-sw+no-fission
+ - webrender-sw
+ run-on-projects:
+ by-variant:
+ webgl-ipc:
+ by-test-platform:
+ .*(ccov|tsan|wayland).*/.*: []
+ linux.*-64.*: ["trunk"]
+ mac.*: ["trunk"]
+ win.*: ["trunk"]
+ default: []
+ webrender-sw+no-fission:
+ by-test-platform:
+ linux.*64-qr/debug: ["trunk"]
+ default: []
+ webrender-sw:
+ by-test-platform:
+ linux.*64-qr/debug: built-projects
+ default: []
+ no-fission:
+ by-test-platform:
+ linux1804-64-qr/debug: ['trunk']
+ linux1804-64(-shippable|-asan)?-qr/opt: ['trunk']
+ android.*: built-projects
+ default: []
+ default:
+ by-test-platform:
+ android.*: []
+ .*-(tsan|wayland).*: []
+ default: built-projects
+ chunks: 4
+ test-manifest-loader: null # don't load tests in the taskgraph
+ loopback-video: true
+ max-run-time: 2700
+ # Bug 1296733: llvmpipe with mesa 9.2.1 lacks thread safety
+ allow-software-gl-layers: false
+ mozharness:
+ mochitest-flavor: plain
+ chunked: true
+ extra-options:
+ - --setpref=webgl.out-of-process=false
+ - --setpref=security.sandbox.content.headless=false
+
+mochitest-webgl2-deqp:
+ description: "Mochitest webgl2-deqp run"
+ treeherder-symbol: M(gl2d)
+ schedules-component: mochitest-plain
+ virtualization: virtual-with-gpu
+ variants:
+ - webgl-ipc
+ - webrender-sw
+ run-on-projects: [] # Don't run this for now.
+ chunks: 4
+ loopback-video: true
+ max-run-time: 1800
+ # Bug 1296733: llvmpipe with mesa 9.2.1 lacks thread safety
+ allow-software-gl-layers: false
+ mozharness:
+ mochitest-flavor: plain
+ chunked: true
+ extra-options:
+ - --setpref=webgl.out-of-process=false
+ - --setpref=security.sandbox.content.headless=false
+
+mochitest-webgpu:
+ description: "Mochitest webgpu run"
+ treeherder-symbol: M(webgpu)
+ schedules-component: mochitest-plain
+ virtualization: virtual-with-gpu
+ loopback-video: true
+ variants:
+ - no-fission
+ - webrender-sw+no-fission
+ run-on-projects:
+ by-variant:
+ webrender-sw+no-fission:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug: ["trunk"]
+ default: []
+ no-fission:
+ by-test-platform:
+ linux1804-64-qr/debug: ['trunk']
+ linux1804-64(-shippable|-asan)?-qr/opt: ['trunk']
+ default: []
+ default:
+ by-test-platform:
+ android.*: []
+ .*mingw.*: ["mozilla-central"]
+ .*shippable.*: ["mozilla-central"]
+ .*ccov.*: ['mozilla-central']
+ .*tsan.*: ['trunk']
+ linux1804-64-qr/debug: ['trunk']
+ .*(!-shippable)-qr.*: ["trunk"]
+ default: []
+ max-run-time:
+ by-test-platform:
+ macosx.*64-ccov.*/.*: 7200
+ default: 1800
+ # Bug 1296733: llvmpipe with mesa 9.2.1 lacks thread safety
+ allow-software-gl-layers: false
+ mozharness:
+ mochitest-flavor: plain
+
+mochitest-remote:
+ description: "Mochitest for the remote agent (/remote folder)"
+ suite:
+ name: mochitest-remote
+ treeherder-symbol: M(remote)
+ loopback-video: true
+ variants:
+ - no-fission
+ - socketprocess_networking
+ - webrender-sw+no-fission
+ - webrender-sw
+ run-on-projects:
+ by-variant:
+ socketprocess_networking:
+ by-test-platform:
+ .*asan.*: []
+ .*ccov.*: []
+ (linux.*64|macosx.*64|windows1.*-64.*)(-shippable)?-qr/(opt|debug): ['autoland', 'mozilla-central']
+ default: []
+ webrender-sw+no-fission:
+ by-test-platform:
+ linux.*64-qr/debug: ['trunk']
+ default: []
+ webrender-sw:
+ by-test-platform:
+ linux.*64-qr/debug: ['all']
+ default: []
+ no-fission:
+ by-test-platform:
+ linux1804-64-qr/debug: ['trunk']
+ linux1804-64(-shippable|-asan)?-qr/opt: ['trunk']
+ default: []
+ default:
+ by-test-platform:
+ android.*: []
+ .*wayland.*: []
+ default: built-projects
+ tier: default
+ max-run-time: 5400
+ mozharness:
+ mochitest-flavor: browser
+ extra-options:
+ - --setpref=remote.log.level=Trace
+ virtualization: virtual
diff --git a/taskcluster/ci/test/reftest.yml b/taskcluster/ci/test/reftest.yml
new file mode 100644
index 0000000000..a5172dfe54
--- /dev/null
+++ b/taskcluster/ci/test/reftest.yml
@@ -0,0 +1,260 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ suite:
+ category: reftest
+ target:
+ by-test-platform:
+ android-em-7.*: geckoview-test_runner.apk
+ android-hw-.*: geckoview-test_runner.apk
+ default: null
+ tier: default
+ test-manifest-loader: null # don't load tests in the taskgraph
+ mozharness:
+ script:
+ by-test-platform:
+ android-em.*: android_emulator_unittest.py
+ android-hw.*: android_hardware_unittest.py
+ default: desktop_unittest.py
+ config:
+ by-test-platform:
+ android-em-7.*:
+ - android/android_common.py
+ - android/android-x86_64.py
+ android-hw.*:
+ - android/android_common.py
+ - android/android_hw.py
+ linux.*:
+ - unittests/linux_unittest.py
+ - remove_executables.py
+ macosx.*:
+ - unittests/mac_unittest.py
+ windows.*:
+ - unittests/win_unittest.py
+
+crashtest:
+ description: "Crashtest run"
+ schedules-component: crashtest
+ treeherder-symbol: R(C)
+ chunks:
+ by-test-platform:
+ android-em-7.*: 1
+ linux.*64-tsan-qr/opt: 32
+ default: 1
+ variants:
+ - no-fission
+ - webrender-sw+no-fission
+ - webrender-sw
+ - editor-legacy-direction
+ run-on-projects:
+ by-variant:
+ webrender-sw+no-fission:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug: built-projects
+ linux1804-64-qr/debug: ['trunk']
+ linux1804-64(-shippable|-asan)?-qr/opt: ['trunk']
+ default: []
+ webrender-sw:
+ by-test-platform:
+ macosx101.*64-qr/debug: built-projects
+ linux.*-64-qr/debug: built-projects
+ linux.*-64(-tsan|-asan)-qr/opt: built-projects
+ windows.*-asan-qr/opt: built-projects
+ windows1.*-64.*-qr/debug: built-projects
+ default: []
+ no-fission:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug-isolated-process: []
+ linux1804-64-qr/debug: ['trunk']
+ linux1804-64(-shippable|-asan)?-qr/opt: ['trunk']
+ android.*: built-projects
+ default: []
+ editor-legacy-direction:
+ by-test-platform:
+ linux1804-64-qr/debug: ['mozilla-central']
+ default: []
+ default:
+ by-test-platform:
+ android.*: []
+ .*wayland.*: []
+ default: built-projects
+ max-run-time: 3600
+ tier:
+ by-test-platform:
+ android-hw-.*-qr/.*: 2
+ android-em-7.0-x86_64-qr/debug-isolated-process: 3
+ default: default
+
+crashtest-qr:
+ description: "Crashtest Webrender run"
+ schedules-component: crashtest
+ treeherder-symbol: R(C)
+ chunks: 1
+ variants:
+ - no-fission
+ run-on-projects:
+ by-variant:
+ no-fission: built-projects
+ default: []
+ max-run-time: 1200
+ tier: 2
+ virtualization: virtual
+
+jsreftest:
+ description: "JS Reftest run"
+ schedules-component: jsreftest
+ treeherder-symbol: R(J)
+ instance-size: default
+ chunks:
+ by-test-platform:
+ android-hw.*\/debug: 12
+ android-hw.*/(opt|pgo)?: 6
+ windows.*-asan-qr/opt: 3
+ windows.*-ccov-qr/opt: 5
+ windows.*\/opt: 2
+ linux.*64-ccov.*/.*: 5
+ linux1804-64-qr/opt: 4
+ linux1804-64-qr/debug: 5
+ linux1804-64/debug: 5
+ .*-tsan-qr/opt: 8
+ macosx.*-64-ccov.*/.*: 5
+ macosx.*-64(-shippable)?/opt: 2
+ default: 3
+ max-run-time:
+ by-test-platform:
+ .*ccov.*: 7200
+ default: 3600
+ variants:
+ - no-fission
+ run-on-projects:
+ by-variant:
+ no-fission:
+ by-test-platform:
+ linux1804-64-qr/debug: ['trunk']
+ linux1804-64(-shippable|-asan)?-qr/opt: ['trunk']
+ android-hw-.*-aarch64(?:-shippable)?-qr/.*: ['mozilla-central', 'release']
+ android-hw-.*-arm7(?:-shippable)?-qr/.*: ['mozilla-central', 'release']
+ android.*: built-projects
+ default: []
+ default:
+ by-test-platform:
+ android.*/.*: []
+ .*wayland.*: []
+ default: built-projects
+ virtualization: virtual
+
+reftest:
+ description: "Reftest run"
+ treeherder-symbol: R(R)
+ virtualization: virtual-with-gpu
+ chunks:
+ by-test-platform:
+ android-em-7.*: 6
+ linux1804-64(-shippable|-devedition|-qr)?/opt: 5
+ linux.*64-tsan-qr/opt: 32
+ macosx101.*-64-shippable(-qr)?/opt: 3
+ macosx101.*-64/debug: 4
+ macosx101.*-64(-ccov.*|-qr)/debug: 6
+ windows.*64.*/debug: 4
+ windows.*32.*/debug: 6
+ windows.*-ccov-qr/opt: 9
+ windows10.*asan.*: 3
+ windows10.*/opt: 2
+ windows11.*/opt: 3
+ default: 8
+ variants:
+ - no-fission
+ - webrender-dcomp-disabled
+ - webrender-dcomp-present
+ - webrender-dcomp-overlays
+ - webrender-dcomp-compositing # Should match default
+ - webrender-sw+no-fission
+ - webrender-sw
+ - editor-legacy-direction
+ run-on-projects:
+ by-variant:
+ webrender-sw+no-fission:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug: built-projects
+ linux1804-64-qr/debug: ['trunk']
+ linux1804-64(-shippable|-asan)?-qr/opt: ['trunk']
+ default: []
+ webrender-sw:
+ by-test-platform:
+ linux1804-64-qr/debug: built-projects
+ linux1804-64(-asan|-tsan)-qr/opt: built-projects
+ macosx101.*64-qr/debug: built-projects
+ windows.*-asan-qr/opt: built-projects
+ windows7-32(?:-shippable)?-qr/opt: built-projects
+ default: []
+ no-fission:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug-isolated-process: []
+ linux1804-64-qr/debug: ['trunk']
+ linux1804-64(-shippable|-asan)?-qr/opt: ['trunk']
+ android.*: built-projects
+ default: []
+ editor-legacy-direction:
+ by-test-platform:
+ linux1804-64-qr/debug: ['mozilla-central']
+ default: []
+ default:
+ by-test-platform:
+ android.*/.*: []
+ .*wayland.*: []
+ linux.*asan/opt: []
+ default: built-projects
+ max-run-time:
+ by-test-platform:
+ windows.*-32-mingwclang-qr/debug: 5400
+ windows.*-ccov.*/.*: 5400
+ windows.*-asan-qr/opt: 5400
+ macosx.*64-ccov.*/.*: 5400
+ default: 3600
+ mozharness:
+ chunked:
+ by-test-platform:
+ android-em.*: false
+ macosx.*64/opt: false
+ windows.*/opt: false
+ default: true
+ tier:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug-isolated-process: 3
+ default: default
+
+reftest-qr:
+ description: "Reftest webrender run"
+ treeherder-symbol: R(R)
+ chunks: 2
+ variants:
+ - no-fission
+ - webrender-sw+no-fission
+ run-without-variant: false
+ run-on-projects:
+ by-variant:
+ webrender-sw+no-fission:
+ by-test-platform:
+ android-hw-p5-13-0-android-aarch64-qr/debug: built-projects
+ default: []
+ no-fission: built-projects
+ max-run-time: 2400
+ mozharness:
+ chunked: true
+ tier: 2
+ virtualization: virtual
+
+reftest-snapshot:
+ description: "Reftest snapshot"
+ treeherder-symbol: R(Rs)
+ virtualization: virtual
+ run-on-projects:
+ by-test-platform:
+ linux1804-64-qr/debug: ['trunk']
+ default: []
+ tier: default
+ chunks: 8
+ mozharness:
+ chunked: true
diff --git a/taskcluster/ci/test/talos.yml b/taskcluster/ci/test/talos.yml
new file mode 100644
index 0000000000..9269e8bc42
--- /dev/null
+++ b/taskcluster/ci/test/talos.yml
@@ -0,0 +1,780 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ max-run-time: 3600
+ suite: talos
+ tier:
+ by-test-platform:
+ macosx1100.*: 2
+ default: default
+ virtualization: hardware
+ mozharness:
+ script: talos_script.py
+ config:
+ by-test-platform:
+ macosx.*:
+ - talos/mac_config.py
+ windows.*:
+ - talos/windows_config.py
+ default:
+ - talos/linux_config.py
+ test-manifest-loader: null # don't load tests in the taskgraph
+
+talos-bcv:
+ description: Talos basic compositor video
+ try-name: bcv
+ treeherder-symbol: T(bcv)
+ variants:
+ - webrender-sw
+ run-on-projects:
+ by-variant:
+ webrender-sw:
+ by-test-platform:
+ (linux1804|macosx1015|windows10)-64-shippable-qr/opt: [mozilla-beta, trunk]
+ (windows10-64|macosx1015-64).*-qr.*: [trunk]
+ default: []
+ default:
+ by-test-platform:
+ windows.*-32.*: []
+ (linux|windows10-64|macos)(?!.*shippable).*: []
+ (linux|windows10-64|macos)(?!.*-qr).*: []
+ default: [mozilla-beta, trunk]
+ max-run-time: 1800
+ mozharness:
+ extra-options:
+ - --suite=bcv
+
+talos-bcv-profiling:
+ description: Talos basic compositor video with gecko profiling
+ try-name: bcv-prof
+ treeherder-symbol: T-Prof(bcv)
+ tier: 2
+ run-on-projects: []
+ max-run-time: 1800
+ mozharness:
+ extra-options:
+ - --suite=bcv
+ - --gecko-profile
+
+talos-chrome:
+ description: Talos chrome
+ try-name: chromez
+ treeherder-symbol: T(c)
+ variants:
+ - webrender-sw
+ run-on-projects:
+ by-test-platform:
+ windows.*-32.*: []
+ (linux|windows10-64|macos)(?!.*shippable).*: []
+ (linux|windows10-64|macosx1015)(?!.*-qr).*: []
+ default: [mozilla-beta, trunk]
+ max-run-time: 1800
+ mozharness:
+ extra-options:
+ - --suite=chromez
+
+talos-chrome-profiling:
+ description: Talos chrome with gecko profiling
+ try-name: chromez-prof
+ treeherder-symbol: T-Prof(c)
+ tier: 2
+ max-run-time: 1200
+ run-on-projects: []
+ mozharness:
+ extra-options:
+ - --suite=chromez
+ - --gecko-profile
+
+talos-damp-inspector:
+ description: Talos devtools inspector (damp-inspector)
+ try-name: damp-inspector
+ treeherder-symbol: T(damp-inspector)
+ max-run-time: 5400
+ variants:
+ - webrender-sw
+ run-on-projects:
+ by-variant:
+ webrender-sw:
+ by-test-platform:
+ (linux1804|windows10|macosx1015)-64-shippable-qr.*: [mozilla-beta, trunk]
+ default: []
+ default:
+ by-test-platform:
+ windows.*-32-shippable.*/.*: []
+ (linux|windows|macos)(?!.*shippable).*: []
+ (linux|windows10-64|macos)(?!.*-qr).*: []
+ default: [mozilla-beta, trunk]
+ mozharness:
+ extra-options:
+ - --suite=damp-inspector
+
+talos-damp-webconsole:
+ description: Talos devtools webconsole (damp-webconsole)
+ try-name: damp-webconsole
+ treeherder-symbol: T(damp-webconsole)
+ max-run-time: 5400
+ variants:
+ - webrender-sw
+ run-on-projects:
+ by-variant:
+ webrender-sw:
+ by-test-platform:
+ (linux1804|windows10|macosx1015)-64-shippable-qr.*: [mozilla-beta, trunk]
+ default: []
+ default:
+ by-test-platform:
+ windows.*-32-shippable.*/.*: []
+ (linux|windows|macos)(?!.*shippable).*: []
+ (linux|windows10-64|macos)(?!.*-qr).*: []
+ default: [mozilla-beta, trunk]
+ mozharness:
+ extra-options:
+ - --suite=damp-webconsole
+
+talos-damp-other:
+ description: Talos devtools other (damp-other)
+ try-name: damp-other
+ treeherder-symbol: T(damp-other)
+ max-run-time: 5400
+ variants:
+ - webrender-sw
+ run-on-projects:
+ by-variant:
+ webrender-sw:
+ by-test-platform:
+ (linux1804|windows10|macosx1015)-64-shippable-qr.*: [mozilla-beta, trunk]
+ default: []
+ default:
+ by-test-platform:
+ windows.*-32-shippable.*/.*: []
+ (linux|windows|macos)(?!.*shippable).*: []
+ (linux|windows10-64|macos)(?!.*-qr).*: []
+ default: [mozilla-beta, trunk]
+ mozharness:
+ extra-options:
+ - --suite=damp-other
+
+talos-damp-inspector-profiling:
+ description: Talos devtools inspector (damp-inspector) with gecko profiling
+ try-name: damp-inspector-prof
+ treeherder-symbol: T-Prof(damp-inspector)
+ tier: 2
+ max-run-time: 5400
+ run-on-projects: []
+ mozharness:
+ extra-options:
+ - --suite=damp-inspector
+ - --gecko-profile
+
+talos-damp-webconsole-profiling:
+ description: Talos devtools webconsole (damp-webconsole) with gecko profiling
+ try-name: damp-webconsole-prof
+ treeherder-symbol: T-Prof(damp-webconsole)
+ tier: 2
+ max-run-time: 5400
+ run-on-projects: []
+ mozharness:
+ extra-options:
+ - --suite=damp-webconsole
+ - --gecko-profile
+
+talos-damp-other-profiling:
+ description: Talos devtools other (damp-other) with gecko profiling
+ try-name: damp-other-prof
+ treeherder-symbol: T-Prof(damp-other)
+ tier: 2
+ max-run-time: 5400
+ run-on-projects: []
+ mozharness:
+ extra-options:
+ - --suite=damp-other
+ - --gecko-profile
+
+talos-dromaeojs:
+ description: Talos dromaeojs
+ try-name: dromaeojs
+ treeherder-symbol: T(d)
+ max-run-time: 2100
+ run-on-projects:
+ by-test-platform:
+ windows.*-32.*: []
+ (linux|windows10-64|macos)(?!.*shippable).*: []
+ (linux|windows10-64|macosx1015)(?!.*-qr).*: []
+ default: [mozilla-beta, trunk]
+ mozharness:
+ extra-options:
+ - --suite=dromaeojs
+
+talos-dromaeojs-profiling:
+ description: Talos dromaeojs with gecko profiling
+ try-name: dromaeojs-prof
+ treeherder-symbol: T-Prof(d)
+ tier: 2
+ max-run-time: 2100
+ run-on-projects: []
+ mozharness:
+ extra-options:
+ - --suite=dromaeojs
+ - --gecko-profile
+
+talos-g1:
+ description: Talos g1
+ try-name: g1
+ treeherder-symbol: T(g1)
+ variants:
+ - webrender-sw
+ run-on-projects:
+ by-variant:
+ webrender-sw:
+ by-test-platform:
+ (linux1804|windows10|macosx.*)-64-shippable-qr.*: [mozilla-beta, trunk]
+ default: []
+ default:
+ by-test-platform:
+ windows.*-32.*: []
+ (linux|windows10-64|macos)(?!.*shippable).*: []
+ (linux|windows10-64|macosx1015)(?!.*-qr).*: []
+ default: [mozilla-beta, trunk]
+ max-run-time:
+ by-test-platform:
+ linux1804-64.*: 3600
+ default: 7200
+ mozharness:
+ extra-options:
+ - --suite=g1
+
+talos-g1-profiling:
+ description: Talos g1 with gecko profiling
+ try-name: g1-prof
+ treeherder-symbol: T-Prof(g1)
+ tier: 2
+ run-on-projects: []
+ max-run-time:
+ by-test-platform:
+ linux1804-64.*: 3600
+ default: 7200
+ mozharness:
+ extra-options:
+ - --suite=g1
+ - --gecko-profile
+
+talos-g3:
+ description: Talos g3
+ try-name: g3
+ treeherder-symbol: T(g3)
+ variants:
+ - webrender-sw
+ run-on-projects:
+ by-variant:
+ webrender-sw:
+ by-test-platform:
+ (linux1804|windows10|macosx.*)-64-shippable-qr.*: [mozilla-beta, trunk]
+ default: []
+ default:
+ by-test-platform:
+ windows.*-32.*: []
+ (linux|windows10-64|macos)(?!.*shippable).*: []
+ (linux|windows10-64|macosx1015)(?!.*-qr).*: []
+ default: [mozilla-beta, trunk]
+ max-run-time: 900
+ mozharness:
+ extra-options:
+ - --suite=g3
+
+talos-g3-profiling:
+ description: Talos g3 with gecko profiling
+ try-name: g3-prof
+ treeherder-symbol: T-Prof(g3)
+ tier: 2
+ max-run-time: 900
+ run-on-projects: []
+ mozharness:
+ extra-options:
+ - --suite=g3
+ - --gecko-profile
+
+talos-g4:
+ description: Talos g4
+ try-name: g4
+ treeherder-symbol: T(g4)
+ variants:
+ - webrender-sw
+ run-on-projects:
+ by-variant:
+ webrender-sw:
+ by-test-platform:
+ (linux1804|windows10|macosx1015)-64-shippable-qr/opt: [mozilla-beta, trunk]
+ default: []
+ default:
+ by-test-platform:
+ windows.*-32.*: []
+ (linux|windows10-64|macos)(?!.*shippable).*: []
+ (linux|windows10-64|macos)(?!.*-qr).*: []
+ default: [mozilla-beta, trunk]
+ max-run-time:
+ by-test-platform:
+ linux1804-64.*: 1500
+ default: 1800
+ mozharness:
+ extra-options:
+ - --suite=g4
+
+talos-g4-profiling:
+ description: Talos g4 with gecko profiling
+ try-name: g4-prof
+ treeherder-symbol: T-Prof(g4)
+ tier: 2
+ max-run-time:
+ by-test-platform:
+ linux1804-64.*: 1500
+ default: 1800
+ run-on-projects: []
+ mozharness:
+ extra-options:
+ - --suite=g4
+ - --gecko-profile
+
+talos-g5:
+ description: Talos g5
+ try-name: g5
+ treeherder-symbol: T(g5)
+ mozharness:
+ extra-options:
+ - --suite=g5
+ variants:
+ - webrender-sw
+ run-on-projects:
+ by-variant:
+ webrender-sw:
+ by-test-platform:
+ (linux1804|windows10|macosx.*)-64-shippable-qr.*: [mozilla-beta, trunk]
+ default: []
+ default:
+ by-test-platform:
+ windows.*-32.*: []
+ (linux|windows10-64|macos)(?!.*shippable).*: []
+ (linux|windows10-64|macosx1015)(?!.*-qr).*: []
+ default: [mozilla-beta, trunk]
+ max-run-time:
+ by-test-platform:
+ linux1804-64.*: 1200
+ macosx.*: 2400
+ default: 1800
+
+talos-g5-profiling:
+ description: Talos g5 with gecko profiling
+ try-name: g5-prof
+ treeherder-symbol: T-Prof(g5)
+ tier: 2
+ run-on-projects: []
+ mozharness:
+ extra-options:
+ - --suite=g5
+ - --gecko-profile
+ max-run-time:
+ by-test-platform:
+ linux1804-64.*: 1200
+ default: 1800
+
+talos-h1:
+ description: Talos h1
+ try-name: h1
+ treeherder-symbol: T(h1)
+ run-on-projects:
+ by-test-platform:
+ windows.*-32.*: []
+ (linux|windows10-64|macos)(?!.*shippable).*: []
+ (linux|windows10-64|macosx1015)(?!.*-qr).*: []
+ default: [mozilla-beta, trunk]
+ mozharness:
+ extra-options:
+ - --suite=h1
+ max-run-time:
+ by-test-platform:
+ linux1804-64.*: 900
+ default: 1800
+
+talos-h2:
+ description: Talos h2
+ try-name: h2
+ treeherder-symbol: T(h2)
+ run-on-projects:
+ by-test-platform:
+ windows.*-32.*: []
+ (linux|windows10-64|macos)(?!.*shippable).*: []
+ (linux|windows10-64|macosx1015)(?!.*-qr).*: []
+ default: [mozilla-beta, trunk]
+ max-run-time:
+ by-test-platform:
+ linux1804-64.*: 900
+ default: 7200
+ mozharness:
+ extra-options:
+ - --suite=h2
+
+talos-motionmark:
+ description: Talos motionmark
+ try-name: motionmark
+ treeherder-symbol: T(mm)
+ run-on-projects:
+ by-test-platform:
+ (linux|windows10-64|macos)(?!.*shippable).*: []
+ (linux|windows10-64|macos)(?!.*-qr).*: []
+ default: [mozilla-central]
+ max-run-time: 3600
+ tier: 2
+ mozharness:
+ extra-options:
+ - --suite=motionmark
+
+talos-motionmark-profiling:
+ description: Talos motionmark with gecko profiling
+ try-name: motionmark-prof
+ treeherder-symbol: T-Prof(mm)
+ run-on-projects: []
+ max-run-time: 3600
+ tier: 2
+ mozharness:
+ extra-options:
+ - --suite=motionmark
+ - --gecko-profile
+
+talos-other:
+ description: Talos other
+ try-name: other
+ treeherder-symbol: T(o)
+ variants:
+ - webrender-sw
+ run-on-projects:
+ by-variant:
+ webrender-sw:
+ by-test-platform:
+ (linux1804|windows10|macosx.*)-64-shippable-qr.*: [mozilla-beta, trunk]
+ default: []
+ default:
+ by-test-platform:
+ windows.*-32.*: []
+ (linux|windows10-64|macos)(?!.*shippable).*: []
+ (linux|windows10-64|macosx1015)(?!.*-qr).*: []
+ default: [mozilla-beta, trunk]
+ max-run-time: 1500
+ mozharness:
+ extra-options:
+ - --suite=other
+
+talos-other-profiling:
+ description: Talos other with gecko profiling
+ try-name: other-prof
+ treeherder-symbol: T-Prof(o)
+ run-on-projects: []
+ tier: 2
+ max-run-time: 1500
+ mozharness:
+ extra-options:
+ - --suite=other
+ - --gecko-profile
+
+talos-sessionrestore-many-windows:
+ description: Talos sessionrestore-many-windows
+ try-name: sessionrestore-many-windows
+ treeherder-symbol: T(smw)
+ variants:
+ - webrender-sw
+ run-on-projects:
+ by-variant:
+ webrender-sw:
+ by-test-platform:
+ (linux1804|windows10|macosx.*)-64-shippable-qr.*: [mozilla-central, autoland]
+ default: []
+ default:
+ by-test-platform:
+ windows.*-32.*: []
+ (linux|windows10-64|macos)(?!.*shippable).*: []
+ (linux|windows10-64|macosx1015)(?!.*-qr).*: []
+ default: [mozilla-central, autoland]
+ max-run-time: 1500
+ mozharness:
+ extra-options:
+ - --suite=sessionrestore-many-windows
+
+talos-sessionrestore-many-windows-profiling:
+ description: Talos sessionrestore-many-windows with gecko profiling
+ try-name: sessionrestore-many-windows-prof
+ treeherder-symbol: T-Prof(smw)
+ tier: 2
+ run-on-projects: []
+ max-run-time: 1500
+ mozharness:
+ extra-options:
+ - --suite=sessionrestore-many-windows
+ - --gecko-profile
+
+talos-perf-reftest:
+ description: Talos perf-reftest
+ try-name: perf-reftest
+ treeherder-symbol: T(p)
+ variants:
+ - webrender-sw
+ run-on-projects:
+ by-variant:
+ webrender-sw:
+ by-test-platform:
+ (linux1804|windows10|macosx.*)-64-shippable-qr.*: [mozilla-beta, trunk]
+ default: []
+ default:
+ by-test-platform:
+ windows.*-32.*: []
+ (linux|windows10-64|macos)(?!.*shippable).*: []
+ (linux|windows10-64|macosx1015)(?!.*-qr).*: []
+ default: [mozilla-beta, trunk]
+ max-run-time: 1200
+ mozharness:
+ extra-options:
+ - --suite=perf-reftest
+
+talos-perf-reftest-profiling:
+ description: Talos perf-reftest with gecko profiling
+ try-name: perf-reftest-prof
+ treeherder-symbol: T-Prof(p)
+ tier: 2
+ run-on-projects: []
+ max-run-time: 1200
+ mozharness:
+ extra-options:
+ - --suite=perf-reftest
+ - --gecko-profile
+
+talos-perf-reftest-singletons:
+ description: Talos perf-reftest singletons
+ try-name: perf-reftest-singletons
+ treeherder-symbol: T(ps)
+ run-on-projects:
+ by-test-platform:
+ windows.*-32.*: []
+ (linux|windows10-64|macos)(?!.*shippable).*: []
+ (linux|windows10-64|macosx1015)(?!.*-qr).*: []
+ default: [mozilla-beta, trunk]
+ max-run-time: 1500
+ mozharness:
+ extra-options:
+ - --suite=perf-reftest-singletons
+
+talos-perf-reftest-singletons-profiling:
+ description: Talos perf-reftest singletons with gecko profiling
+ try-name: perf-reftest-singletons-prof
+ treeherder-symbol: T-Prof(ps)
+ tier: 2
+ run-on-projects: []
+ max-run-time: 1500
+ mozharness:
+ extra-options:
+ - --suite=perf-reftest-singletons
+ - --gecko-profile
+
+talos-svgr:
+ description: Talos svgr
+ try-name: svgr
+ treeherder-symbol: T(s)
+ variants:
+ - webrender-sw
+ run-on-projects:
+ by-variant:
+ webrender-sw:
+ by-test-platform:
+ (linux1804|windows10|macosx.*)-64-shippable-qr.*: [mozilla-beta, trunk]
+ default: []
+ default:
+ by-test-platform:
+ windows.*-32.*: []
+ (linux|windows10-64|macos)(?!.*shippable).*: []
+ (linux|windows10-64|macosx1015)(?!.*-qr).*: []
+ default: [mozilla-beta, trunk]
+ max-run-time: 1800
+ mozharness:
+ extra-options:
+ - --suite=svgr
+
+talos-svgr-profiling:
+ description: Talos svgr with gecko profiling
+ try-name: svgr-prof
+ treeherder-symbol: T-Prof(s)
+ tier: 2
+ run-on-projects: []
+ max-run-time: 1800
+ mozharness:
+ extra-options:
+ - --suite=svgr
+ - --gecko-profile
+
+talos-tp5o:
+ description: Talos tp5o
+ try-name: tp5o
+ treeherder-symbol: T(tp)
+ variants:
+ - webrender-sw
+ run-on-projects:
+ by-variant:
+ webrender-sw:
+ by-test-platform:
+ (linux1804|windows10|macosx.*)-64-shippable-qr.*: [mozilla-beta, trunk]
+ default: []
+ default:
+ by-test-platform:
+ windows.*-32.*: []
+ (linux|windows10-64|macos)(?!.*shippable).*: []
+ (linux|windows10-64|macosx1015)(?!.*-qr).*: []
+ default: [mozilla-beta, trunk]
+ max-run-time: 1800
+ mozharness:
+ extra-options:
+ - --suite=tp5o
+
+talos-tp5o-profiling:
+ description: Talos tp5o with gecko profiling
+ try-name: tp5o-prof
+ treeherder-symbol: T-Prof(tp)
+ tier: 2
+ run-on-projects: []
+ max-run-time: 1800
+ mozharness:
+ extra-options:
+ - --suite=tp5o
+ - --gecko-profile
+
+talos-tabswitch:
+ description: Talos page scroll (tabswitch)
+ try-name: tabswitch
+ treeherder-symbol: T(tabswitch)
+ variants:
+ - webrender-sw
+ run-on-projects:
+ by-variant:
+ webrender-sw:
+ by-test-platform:
+ (linux1804|windows10|macosx.*)-64-shippable-qr.*: [mozilla-beta, trunk]
+ default: []
+ default:
+ by-test-platform:
+ windows.*-32.*: []
+ (linux|windows10-64|macos)(?!.*shippable).*: []
+ (linux|windows10-64|macosx1015)(?!.*-qr).*: []
+ default: [mozilla-beta, trunk]
+ max-run-time: 1800
+ mozharness:
+ extra-options:
+ - --suite=tabswitch
+
+talos-tabswitch-profiling:
+ description: Talos page scroll (tabswitch) with gecko profiling
+ try-name: tabswitch-prof
+ treeherder-symbol: T-Prof(tabswitch)
+ tier: 2
+ run-on-projects: []
+ max-run-time: 1200
+ mozharness:
+ extra-options:
+ - --suite=tabswitch
+ - --gecko-profile
+
+talos-webgl:
+ description: Talos WebGL
+ try-name: webgl
+ treeherder-symbol: T(webgl)
+ variants:
+ - webrender-sw
+ - webgl-ipc
+ run-on-projects:
+ by-variant:
+ webgl-ipc:
+ by-test-platform:
+ (linux1804|windows10|macosx1015)-64.*: [trunk]
+ default: []
+ webrender-sw:
+ by-test-platform:
+ (linux1804|windows10|macosx1015)-64-shippable-qr.*: [mozilla-beta, trunk]
+ default: []
+ default:
+ by-test-platform:
+ windows.*-32.*: []
+ (linux|windows10-64|macos)(?!.*shippable).*: []
+ (linux|windows10-64|macos)(?!.*-qr).*: []
+ default: [mozilla-beta, trunk]
+ max-run-time: 2100
+ mozharness:
+ extra-options:
+ by-test-platform:
+ windows10-64-ref-hw.*:
+ - --suite=webgl
+ - --skip-preflight
+ default:
+ - --suite=webgl
+
+talos-webgl-profiling:
+ description: Talos WebGL with gecko profiling
+ try-name: webgl
+ treeherder-symbol: T-Prof(webgl)
+ tier: 2
+ variants:
+ - webgl-ipc
+ run-on-projects: []
+ max-run-time: 1800
+ mozharness:
+ extra-options:
+ - --suite=webgl
+ - --gecko-profile
+
+talos-xperf:
+ description: Talos xperf
+ try-name: xperf
+ treeherder-symbol: T(x)
+ virtualization: virtual
+ os-groups: [Administrators]
+ run-as-administrator:
+ by-test-platform:
+ windows.*32.*: false
+ windows10.*64.*: true
+ windows11.*64.*: true
+ variants:
+ - webrender-sw
+ run-on-projects:
+ by-test-platform:
+ windows.*-32-shippable(?:-qr)?/.*: []
+ windows10.*-shippable-qr/.*: [mozilla-beta, trunk]
+ windows11.*-shippable-qr/.*: [mozilla-beta, trunk]
+ default: []
+ mozharness:
+ extra-options:
+ - --suite=xperf
+ config:
+ by-test-platform:
+ windows.*:
+ - talos/windows_vm_config.py
+
+talos-realworld-webextensions:
+ description: Talos tests with realworld WebExtensions
+ try-name: realworld-webextensions
+ treeherder-symbol: T(realwebext)
+ run-on-projects:
+ by-test-platform:
+ windows.*-32.*: []
+ (linux|windows10-64|macos)(?!.*shippable).*: []
+ (linux|windows10-64|macosx1015)(?!.*-qr).*: []
+ default: [mozilla-beta, trunk]
+ max-run-time: 1500
+ mozharness:
+ extra-options:
+ - --suite=realworld-webextensions
+
+talos-realworld-webextensions-profiling:
+ description: Talos tests with realworld WebExtensions with gecko profiling
+ try-name: realworld-webextensions-prof
+ treeherder-symbol: T-Prof(realwebext)
+ tier: 2
+ run-on-projects: []
+ max-run-time: 1500
+ mozharness:
+ extra-options:
+ - --suite=realworld-webextensions
+ - --gecko-profile
diff --git a/taskcluster/ci/test/test-platforms.yml b/taskcluster/ci/test/test-platforms.yml
new file mode 100644
index 0000000000..f4de48c5f8
--- /dev/null
+++ b/taskcluster/ci/test/test-platforms.yml
@@ -0,0 +1,464 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+# This file maps build platforms to test platforms. In some cases, a
+# single build may be tested on multiple test platforms, but a single test
+# platform can only link to one build platform. Both build and test platforms
+# are represented as <platform>/<type>, where <type> is what Treeherder calls a
+# collection.
+#
+# Each test platform further specifies the set of tests that will be scheduled
+# for the platform, referring to tests defined in test-sets.yml.
+#
+# Note that set does not depend on the tree; tree-dependent job selection
+# should be performed in the target task selection phase of task-graph
+# generation.
+
+
+##
+# Linux platforms (matching /linux.*/)
+# Linux1804-64 uses Ubuntu 18.04 and is run on docker
+
+linux1804-32-qr/debug:
+ build-platform: linux/debug
+ test-sets:
+ - linux32-gtest
+
+linux1804-32-qr/opt:
+ build-platform: linux/opt
+ test-sets:
+ - linux32-tests
+ - linux32-gtest
+
+linux1804-32-shippable-qr/opt:
+ build-platform: linux-shippable/opt
+ test-sets:
+ - linux32-tests
+ - linux32-gtest
+
+linux1804-64-qr/opt:
+ build-platform: linux64/opt
+ test-sets:
+ - awsy
+ - desktop-screenshot-capture
+ - linux1804-tests
+ - mochitest-webgpu
+ - web-platform-tests
+ - web-platform-tests-backlog
+ - talos
+ - browsertime
+
+linux1804-64-shippable-qr/opt:
+ build-platform: linux64-shippable/opt
+ test-sets:
+ - awsy
+ - desktop-screenshot-capture
+ - linux1804-tests
+ - mochitest-webgpu
+ - web-platform-tests
+ - web-platform-tests-backlog
+ - talos
+ - talos-profiling
+ - browsertime
+ - browsertime-profiling
+
+linux1804-64-nightlyasrelease-qr/opt:
+ build-platform: linux64-nightlyasrelease/opt
+ test-sets:
+ - browsertime
+
+linux1804-64-qr/debug:
+ build-platform: linux64/debug
+ test-sets:
+ - linux1804-tests
+ - mochitest-webgpu
+ - web-platform-tests
+
+linux1804-64-asan-qr/opt:
+ build-platform: linux64-asan/opt
+ test-sets:
+ - linux1804-tests
+ - mochitest-webgpu
+ - web-platform-tests
+
+linux1804-64-tsan-qr/opt:
+ build-platform: linux64-tsan/opt
+ test-sets:
+ - linux1804-tests
+ - mochitest-webgpu
+ - web-platform-tests
+
+linux1804-64-ccov-qr/opt:
+ build-platform: linux64-ccov/opt
+ test-sets:
+ - ccov-code-coverage-tests
+ - linux1804-tests
+ - linux1804-ccov-tests
+ - mochitest-webgpu
+ - web-platform-tests
+
+linux1804-64-devedition-qr/opt:
+ build-platform: linux64-devedition/opt
+ test-sets:
+ - desktop-screenshot-capture
+ - linux1804-tests
+ - web-platform-tests
+
+linux1804-64-clang-trunk-qr/opt:
+ build-platform: linux64-plain-clang-trunk/opt
+ test-sets:
+ - awsy
+ - browsertime-clang
+
+linux2204-64-wayland/opt:
+ build-platform: linux64/opt
+ test-sets:
+ - linux2204-wayland-tests
+ - web-platform-tests
+
+linux2204-64-wayland-shippable/opt:
+ build-platform: linux64-shippable/opt
+ test-sets:
+ - linux2204-wayland-tests
+ - web-platform-tests
+
+##
+# Windows platforms (matching /windows.*/)
+
+# win32
+windows7-32-qr/opt:
+ build-platform: win32/opt
+ build-signing-label: build-signing-win32/opt
+ test-sets:
+ - windows-7-tests
+
+windows7-32-shippable-qr/opt:
+ build-platform: win32-shippable/opt
+ build-signing-label: build-signing-win32-shippable/opt
+ test-sets:
+ - windows-7-tests
+
+windows10-32-shippable-qr/opt:
+ build-platform: win32-shippable/opt
+ build-signing-label: build-signing-win32-shippable/opt
+ test-sets:
+ - browsertime
+ - windows-talos
+
+windows10-32-qr/opt:
+ build-platform: win32/opt
+ test-sets:
+ - browsertime
+ - windows-talos
+
+
+# win11-32
+windows11-32-2009-shippable-qr/opt:
+ build-platform: win32-shippable/opt
+ test-sets:
+ - awsy
+ - desktop-screenshot-capture
+ - web-platform-tests
+ - windows32-2009-tests
+
+
+windows11-32-2009-qr/opt:
+ build-platform: win32/opt
+ test-sets:
+ - awsy
+ - desktop-screenshot-capture
+ - web-platform-tests
+ - windows32-2009-tests
+
+windows11-32-2009-qr/debug:
+ build-platform: win32/debug
+ build-signing-label: build-signing-win32/debug
+ test-sets:
+ - web-platform-tests
+ - windows-7-tests
+ - windows32-2009-tests
+
+windows11-32-2009-mingwclang-qr/debug:
+ build-platform: win32-mingwclang/debug
+ test-sets:
+ - mingwclang-win32-tests-debug
+
+windows11-32-2009-mingwclang-qr/opt:
+ build-platform: win32-mingwclang/opt
+ test-sets:
+ - mingwclang-tests-opt
+
+# win64
+windows10-64-qr/opt:
+ build-platform: win64/opt
+ test-sets:
+ - windows-talos
+ - browsertime
+
+windows10-64-ref-hw-2017-qr/opt:
+ build-platform: win64-shippable/opt
+ test-sets:
+ - talos-ref-hw
+
+windows10-64-shippable-qr/opt:
+ build-platform: win64-shippable/opt
+ test-sets:
+ - windows-talos
+ - browsertime
+
+windows10-64-nightlyasrelease-qr/opt:
+ build-platform: win64-nightlyasrelease/opt
+ test-sets:
+ - browsertime
+
+# win10-64 2004
+windows10-64-2009-qr/debug:
+ build-platform: win64/debug
+ build-signing-label:
+ by-variant:
+ msix: repackage-signing-msix-win64/debug
+ default: build-signing-win64/debug
+ test-sets:
+ - windows10-2009-tests
+
+windows10-64-2009-qr/opt:
+ build-platform: win64/opt
+ build-signing-label:
+ by-variant:
+ msix: repackage-signing-msix-win64/opt
+ default: build-signing-win64/opt
+ test-sets:
+ - windows10-2009-tests
+
+windows10-64-2009-shippable-qr/opt:
+ build-platform: win64-shippable/opt
+ build-signing-label:
+ by-variant:
+ msix: repackage-signing-shippable-l10n-msix-win64-shippable/opt
+ default: build-signing-win64-shippable/opt
+ test-sets:
+ - windows10-2009-tests
+
+# win11-64 2009
+windows11-64-2009-ccov-qr/opt:
+ build-platform: win64-ccov/opt
+ build-signing-label: build-signing-win64-ccov/opt
+ test-sets:
+ - desktop-screenshot-capture
+ - ccov-code-coverage-tests
+ - windows11-64-2009-ccov-tests
+ - windows11-2009-tests
+
+windows11-64-2009-qr/debug:
+ build-platform: win64/debug
+ build-signing-label:
+ by-variant:
+ msix: repackage-signing-msix-win64/debug
+ default: build-signing-win64/debug
+ test-sets:
+ - web-platform-tests
+ - windows11-2009-tests
+
+windows11-64-2009-qr/opt:
+ build-platform: win64/opt
+ build-signing-label:
+ by-variant:
+ msix: repackage-signing-msix-win64/opt
+ default: build-signing-win64/opt
+ test-sets:
+ - awsy
+ - desktop-screenshot-capture
+ - web-platform-tests
+ - web-platform-tests-backlog
+ - windows11-2009-tests
+ - talos-xperf
+
+windows11-64-2009-shippable-qr/opt:
+ build-platform: win64-shippable/opt
+ build-signing-label:
+ by-variant:
+ msix: repackage-signing-shippable-l10n-msix-win64-shippable/opt
+ default: build-signing-win64-shippable/opt
+ test-sets:
+ - awsy
+ - desktop-screenshot-capture
+ - web-platform-tests
+ - web-platform-tests-backlog
+ - windows11-2009-tests
+ - talos-xperf
+
+windows11-64-2009-devedition-qr/opt:
+ build-platform: win64-devedition/opt
+ build-signing-label: build-signing-win64-devedition/opt
+ test-sets:
+ - desktop-screenshot-capture
+ - web-platform-tests
+ - windows11-2009-tests
+
+windows11-64-2009-asan-qr/opt:
+ build-platform: win64-asan/opt
+ test-sets:
+ - windows11-2009-tests
+
+windows11-64-2009-mingwclang-qr/debug:
+ build-platform: win64-mingwclang/debug
+ test-sets:
+ - mingwclang-tests-debug
+
+windows11-64-2009-mingwclang-qr/opt:
+ build-platform: win64-mingwclang/opt
+ test-sets:
+ - mingwclang-tests-opt
+
+
+##
+# MacOS X platforms (matching /macosx.*/)
+
+macosx1100-64-qr/debug:
+ build-platform: macosx64/debug
+ build-signing-label: repackage-macosx64/debug
+ test-sets:
+ - macosx1100-64-jittests
+
+macosx1100-64-shippable-qr/opt:
+ build-platform: macosx64-shippable/opt
+ build-signing-label: repackage-macosx64-shippable/opt
+ test-sets:
+ - macosx1100-64-jittests
+ - macosx1100-64-qr-tests
+ # - macosx64-talos
+ # - browsertime-high-priority
+
+macosx1015-64-shippable-qr/opt:
+ build-platform: macosx64-shippable/opt
+ test-sets:
+ - awsy
+ - browsertime
+ - browsertime-profiling
+ - desktop-screenshot-capture
+ - macosx1015-64-qr-tests
+ - macosx64-talos
+ - talos-profiling
+ - web-platform-tests
+ - web-platform-tests-backlog
+
+macosx1015-64-nightlyasrelease-qr/opt:
+ build-platform: macosx64-nightlyasrelease/opt
+ test-sets:
+ - browsertime
+
+macosx1015-64-devedition-qr/opt:
+ build-platform: macosx64-devedition/opt
+ test-sets:
+ - macosx1015-64-qr-tests
+ - web-platform-tests
+
+macosx1015-64-qr/opt:
+ build-platform: macosx64/opt
+ test-sets:
+ - desktop-screenshot-capture
+ - macosx1015-64-qr-tests
+ - web-platform-tests
+ - web-platform-tests-backlog
+
+macosx1015-64-qr/debug:
+ build-platform: macosx64/debug
+ test-sets:
+ - macosx1015-64-qr-tests
+ - web-platform-tests
+
+macosx1015-64-ccov-qr/opt:
+ build-platform: macosx64-ccov/opt
+ test-sets:
+ - macosx1015-64-qr-tests
+
+##
+# Android platforms (matching /android-em.*/)
+#
+# android-em test platforms execute on android emulators.
+
+android-em-7.0-x86_64-qr/opt:
+ build-platform: android-x86_64/opt
+ test-sets:
+ - android-x86_64-tests
+ - web-platform-tests-backlog
+
+android-em-7.0-x86_64-lite-qr/opt:
+ build-platform: android-x86_64-lite/opt
+ test-sets:
+ - android-x86_64-tests
+ - web-platform-tests-backlog
+
+android-em-7.0-x86_64-shippable-qr/opt:
+ build-platform: android-x86_64-shippable/opt
+ test-sets:
+ - android-x86_64-tests
+ - web-platform-tests-backlog
+
+android-em-7.0-x86_64-shippable-lite-qr/opt:
+ build-platform: android-x86_64-shippable-lite/opt
+ test-sets:
+ - android-x86_64-tests
+ - web-platform-tests-backlog
+
+android-em-7.0-x86_64-qr/debug:
+ build-platform: android-x86_64/debug
+ test-sets:
+ - android-x86_64-tests
+
+android-em-7.0-x86_64-qr/debug-isolated-process:
+ build-platform: android-x86_64/debug-isolated-process
+ test-sets:
+ - android-x86_64-tests
+
+# android-hw test platforms execute on real devices attached to Autophone hosts.
+
+# android-hw-a51-11-0 Samsung Galaxy A51 Android 11.0
+
+android-hw-a51-11-0-aarch64-qr/opt:
+ build-platform: android-aarch64/opt
+ test-sets:
+ - android-hw-browsertime
+# - android-hw-browsertime-power
+
+android-hw-a51-11-0-aarch64-shippable-qr/opt:
+ build-platform: android-aarch64-shippable/opt
+ test-sets:
+ - android-hw-browsertime
+# - android-hw-browsertime-power
+
+# android-hw-p5-13-0 Google Pixel 5 Android 13.0
+
+android-hw-p5-13-0-arm7-qr/opt:
+ build-platform: android-arm/opt
+ test-sets:
+ - android-hw-arm7-pgo-unittests
+
+android-hw-p5-13-0-arm7-shippable-qr/opt:
+ build-platform: android-arm-shippable/opt
+ test-sets:
+ - android-hw-arm7-pgo-unittests
+
+android-hw-p5-13-0-arm7-qr/debug:
+ build-platform: android-arm/debug
+ test-sets:
+ - android-hw-arm7-debug-unittests
+
+android-hw-p5-13-0-android-aarch64-qr/debug:
+ build-platform: android-aarch64/debug
+ test-sets:
+ - android-hw-aarch64
+ - android-hw-aarch64-debug-unittests
+
+android-hw-p5-13-0-android-aarch64-qr/opt:
+ build-platform: android-aarch64/opt
+ test-sets:
+ - android-hw-aarch64
+ - android-hw-aarch64-opt-unittests
+
+android-hw-p5-13-0-android-aarch64-shippable-qr/opt:
+ build-platform: android-aarch64-shippable/opt
+ test-sets:
+ - android-hw-aarch64
+ - android-hw-aarch64-pgo-unittests
diff --git a/taskcluster/ci/test/test-sets.yml b/taskcluster/ci/test/test-sets.yml
new file mode 100644
index 0000000000..68c257fb04
--- /dev/null
+++ b/taskcluster/ci/test/test-sets.yml
@@ -0,0 +1,479 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+# Each key in this file specifies a set of tests to run. Different test sets
+# may, for example, be bound to different test platforms.
+#
+# Note that set does not depend on the tree; tree-dependent job selection
+# should be performed in the target task selection phase of task-graph
+# generation.
+#
+# A test set has a name, and a list of tests that it contains.
+#
+# Test names given here reference tests.yml.
+
+### Feature-specific test groups
+
+web-platform-tests:
+ - web-platform-tests
+ - web-platform-tests-crashtest
+ - web-platform-tests-print-reftest
+ - web-platform-tests-reftest
+ - web-platform-tests-wdspec
+ - web-platform-tests-webgpu
+
+web-platform-tests-backlog:
+ - web-platform-tests-backlog
+ - web-platform-tests-reftest-backlog
+
+mochitest-devtools-chrome:
+ - mochitest-devtools-chrome
+
+mochitest-webgpu:
+ - mochitest-webgpu
+
+talos:
+ - talos-bcv
+ - talos-chrome
+ - talos-damp-inspector
+ - talos-damp-webconsole
+ - talos-damp-other
+ - talos-dromaeojs
+ - talos-g1
+ - talos-g3
+ - talos-g4
+ - talos-g5
+ - talos-other
+ - talos-sessionrestore-many-windows
+ - talos-svgr
+ - talos-tp5o
+ - talos-perf-reftest
+ - talos-perf-reftest-singletons
+ - talos-tabswitch
+ - talos-realworld-webextensions
+ - talos-webgl
+ # - talos-h1 Bug 1487031 - Disabled for not finding actionable regressions
+ # - talos-h2 Bug 1487031 - Disabled for not finding actionable regressions
+
+talos-profiling:
+ - talos-bcv-profiling
+ - talos-chrome-profiling
+ # - talos-damp-profiling - Disabled b/c of Bug 1597734
+ - talos-dromaeojs-profiling
+ - talos-g1-profiling
+ - talos-g3-profiling
+ - talos-g4-profiling
+ - talos-g5-profiling
+ - talos-motionmark-profiling
+ - talos-other-profiling
+ - talos-sessionrestore-many-windows-profiling
+ - talos-perf-reftest-profiling
+ - talos-perf-reftest-singletons-profiling
+ - talos-svgr-profiling
+ - talos-tp5o-profiling
+ - talos-tabswitch-profiling
+ - talos-realworld-webextensions-profiling
+ - talos-webgl-profiling
+
+talos-ref-hw:
+ - talos-webgl
+
+browsertime:
+ - browsertime-tp6
+ - browsertime-tp6-essential
+ - browsertime-tp6-bytecode
+ - browsertime-tp6-live
+ - browsertime-tp6-live-sheriffed
+ - browsertime-benchmark
+ - browsertime-benchmark-wasm
+ - browsertime-youtube-playback
+ - browsertime-youtube-playback-power
+ - browsertime-custom
+ - browsertime-first-install
+ - browsertime-responsiveness
+ - browsertime-regression-tests
+ - browsertime-upload
+
+browsertime-clang:
+ - browsertime-tp6
+ - browsertime-tp6-essential
+ - browsertime-tp6-bytecode
+ - browsertime-tp6-live
+ - browsertime-tp6-live-sheriffed
+ - browsertime-benchmark
+ - browsertime-benchmark-wasm
+ - browsertime-youtube-playback
+ - browsertime-responsiveness
+
+browsertime-profiling:
+ - browsertime-tp6-profiling
+
+browsertime-high-priority:
+ - browsertime-benchmark
+ - browsertime-tp6
+
+awsy:
+ - awsy
+ - awsy-base
+ - awsy-dmd
+ - awsy-base-dmd
+ - awsy-tp6
+
+ccov-code-coverage-tests:
+ - test-coverage
+ - test-coverage-wpt
+
+mochitest-valgrind:
+ - mochitest-valgrind
+
+desktop-screenshot-capture:
+ - browser-screenshots
+
+### Specific platform test sets
+
+# Linux
+linux32-gtest:
+ - gtest
+
+linux32-tests:
+ - web-platform-tests
+
+linux1804-tests:
+ - cppunit
+ - crashtest
+ - firefox-ui-functional
+ - gtest
+ # - jittest # See comment in linux1804-ccov-tests set.
+ - jsreftest
+ - marionette
+ - mochitest-a11y
+ - mochitest-browser-a11y
+ - mochitest-browser-chrome
+ - mochitest-browser-media
+ - mochitest-chrome
+ - mochitest-chrome-gpu
+ - mochitest-devtools-chrome
+ - mochitest-media
+ - mochitest-plain
+ - mochitest-plain-gpu
+ - mochitest-remote
+ - mochitest-webgl1-core
+ - mochitest-webgl1-ext
+ - mochitest-webgl2-core
+ - mochitest-webgl2-ext
+ - reftest
+ - reftest-snapshot
+ - telemetry-tests-client
+ - test-verify
+ - test-verify-gpu
+ - test-verify-wpt
+ - xpcshell
+
+linux1804-ccov-tests:
+ # jittest run on regular linux builds is redundant with SM(p), so we omit it
+ # from the linux1804-tests and linux1804-qr-tests sets. But, we still want
+ # to run it on ccov builds, so we have this set that has it and which runs
+ # on ccov builds.
+ - jittest
+
+linux2204-wayland-tests:
+ - mochitest-plain
+ - cppunit
+ - crashtest
+ - firefox-ui-functional
+ - gtest
+ - jsreftest
+ - marionette
+ - mochitest-a11y
+ - mochitest-browser-a11y
+ - mochitest-browser-chrome
+ - mochitest-browser-media
+ - mochitest-chrome
+ - mochitest-chrome-gpu
+ - mochitest-devtools-chrome
+ - mochitest-media
+ - mochitest-plain
+ - mochitest-plain-gpu
+ - mochitest-remote
+ - mochitest-webgl1-core
+ - mochitest-webgl1-ext
+ - mochitest-webgl2-core
+ - mochitest-webgl2-ext
+ - reftest
+ - reftest-snapshot
+ - telemetry-tests-client
+ - test-verify
+ - test-verify-gpu
+ - test-verify-wpt
+ - xpcshell
+
+# Windows
+
+windows-7-tests:
+ - cppunit
+ - crashtest
+ - gtest
+ - mochitest-browser-a11y
+ - mochitest-browser-chrome
+ - mochitest-browser-media
+ - mochitest-media
+ - xpcshell
+
+windows32-2009-tests:
+ - cppunit
+ - crashtest
+ - gtest
+ - firefox-ui-functional
+ - jsreftest
+ - marionette
+ - mochitest-a11y
+ - mochitest-chrome
+ - mochitest-chrome-gpu
+ - mochitest-media
+ - mochitest-plain
+ - mochitest-plain-gpu
+ - mochitest-remote
+ - mochitest-webgpu
+ - reftest
+ - telemetry-tests-client
+ - test-verify
+ - test-verify-gpu
+ - test-verify-wpt
+
+windows10-2009-tests:
+ - cppunit
+ - gtest
+ - mochitest-chrome
+ - mochitest-chrome-gpu
+ - mochitest-plain
+ - mochitest-plain-gpu
+ - xpcshell
+
+windows11-64-2009-ccov-tests:
+ - jittest
+ - test-coverage
+ - web-platform-tests
+ - web-platform-tests-crashtest
+ - web-platform-tests-print-reftest
+ - web-platform-tests-reftest
+ - web-platform-tests-wdspec
+
+windows11-2009-tests:
+ - cppunit
+ - crashtest
+ - firefox-ui-functional
+ - gtest
+ - jsreftest
+ - marionette
+ - mochitest-a11y
+ - mochitest-browser-a11y
+ - mochitest-browser-chrome
+ - mochitest-browser-media
+ - mochitest-chrome
+ - mochitest-chrome-gpu
+ - mochitest-devtools-chrome
+ - mochitest-media
+ - mochitest-plain
+ - mochitest-plain-gpu
+ - mochitest-remote
+ - mochitest-webgpu
+ - mochitest-webgl1-core
+ - mochitest-webgl1-ext
+ - mochitest-webgl2-core
+ - mochitest-webgl2-ext
+ - reftest
+ - telemetry-tests-client
+ - test-verify
+ - test-verify-gpu
+ - test-verify-wpt
+ - xpcshell
+
+mingwclang-tests-debug:
+ - cppunit
+ - firefox-ui-functional
+ - mochitest-a11y
+ - mochitest-chrome-gpu
+ - mochitest-plain-gpu
+ - mochitest-webgl1-core
+ - mochitest-webgl1-ext
+ - mochitest-webgl2-core
+ - mochitest-webgl2-ext
+ - mochitest-webgpu
+ - reftest
+ - telemetry-tests-client
+
+# The following is the same as the above block, minus reftests.
+# Reftests were disabled due to frequent hangs; see bug 1642719
+# for re-enabling.
+mingwclang-win32-tests-debug:
+ - cppunit
+ - firefox-ui-functional
+ - mochitest-a11y
+ - mochitest-chrome-gpu
+ - mochitest-plain-gpu
+ - mochitest-webgl1-core
+ - mochitest-webgl1-ext
+ - mochitest-webgl2-core
+ - mochitest-webgl2-ext
+ - mochitest-webgpu
+ # - reftest - disabled, see bug 1642719
+ - telemetry-tests-client
+
+mingwclang-tests-opt:
+ - cppunit
+ - mochitest-chrome-gpu
+ - mochitest-plain-gpu
+
+windows-talos:
+ - talos-bcv
+ - talos-chrome
+ - talos-damp-inspector
+ - talos-damp-webconsole
+ - talos-damp-other
+ - talos-dromaeojs
+ - talos-g1
+ - talos-g4
+ - talos-g5
+ - talos-other
+ - talos-sessionrestore-many-windows
+ - talos-perf-reftest
+ - talos-perf-reftest-singletons
+ - talos-svgr
+ - talos-tp5o
+ - talos-tabswitch
+ - talos-realworld-webextensions
+ - talos-webgl
+ # - talos-h1 Bug 1487031 - Disabled for not finding actionable regressions
+
+talos-xperf:
+ - talos-xperf
+
+# macOS
+macosx1100-64-jittests:
+ - jittest
+
+macosx1100-64-qr-tests:
+ - crashtest
+ - jsreftest
+ - mochitest-browser-a11y
+ - mochitest-browser-chrome
+ - mochitest-browser-media
+ - mochitest-chrome-gpu
+ - mochitest-media
+ - mochitest-webgpu
+ - mochitest-webgl1-core
+ - mochitest-webgl1-ext
+ - mochitest-webgl2-core
+ - mochitest-webgl2-ext
+ - reftest
+ - xpcshell
+
+macosx1015-64-qr-tests:
+ - cppunit
+ - crashtest
+ - firefox-ui-functional
+ - gtest
+ - jittest
+ - jsreftest
+ - marionette
+ - mochitest-a11y
+ - mochitest-browser-a11y
+ - mochitest-browser-chrome
+ - mochitest-browser-media
+ - mochitest-chrome
+ - mochitest-chrome-gpu
+ - mochitest-devtools-chrome
+ - mochitest-media
+ - mochitest-plain
+ - mochitest-plain-gpu
+ - mochitest-remote
+ - mochitest-webgl1-core
+ - mochitest-webgl1-ext
+ - mochitest-webgl2-core
+ - mochitest-webgl2-ext
+ - mochitest-webgpu
+ - reftest
+ - telemetry-tests-client
+ - test-verify
+ - test-verify-gpu
+ - test-verify-wpt
+ - xpcshell
+
+macosx64-talos:
+ - talos-bcv
+ - talos-chrome
+ - talos-damp-inspector
+ - talos-damp-webconsole
+ - talos-damp-other
+ - talos-dromaeojs
+ - talos-g1
+ - talos-g4
+ - talos-g5
+ - talos-other
+ - talos-sessionrestore-many-windows
+ - talos-svgr
+ - talos-tp5o
+ - talos-perf-reftest
+ - talos-perf-reftest-singletons
+ - talos-realworld-webextensions
+ - talos-webgl
+ # - talos-tabswitch # Bug 1453007 times out
+ # - talos-h1 # too long to unpack profile- Bug 1442893
+
+# Android
+
+android-x86_64-tests:
+ - cppunit
+ - crashtest
+ - geckoview-junit
+ - gtest
+ - mochitest-media
+ - mochitest-plain
+ - mochitest-plain-gpu
+ # - mochitest-webgl1-core # Harness issues?
+ # - mochitest-webgl1-ext
+ # - mochitest-webgl2-core # Emulator not creating ES3?
+ # - mochitest-webgl2-ext
+ - reftest
+ - test-verify
+ - web-platform-tests
+ - web-platform-tests-crashtest
+ - web-platform-tests-reftest
+ - web-platform-tests-wdspec
+ - xpcshell
+
+android-hw-aarch64-opt-unittests:
+ - jittest
+
+android-hw-arm7-pgo-unittests:
+ - jittest-all
+
+android-hw-aarch64-pgo-unittests:
+ - jittest
+
+android-hw-arm7-debug-unittests:
+ - jittest
+
+android-hw-aarch64-debug-unittests:
+ - jittest
+
+android-hw-aarch64:
+ - crashtest-qr
+ - reftest-qr
+ - mochitest-media
+ - mochitest-webgl1-core
+ - mochitest-webgl1-ext
+ - mochitest-webgl2-core
+
+android-hw-browsertime:
+ - browsertime-tp6m
+ - browsertime-tp6m-essential
+ - browsertime-tp6m-live
+ - browsertime-speedometer-mobile
+ - browsertime-speedometer3-mobile
+ - browsertime-youtube-playback-mobile
+ - browsertime-unity-webgl-mobile
+
+android-hw-browsertime-profiling:
+ - browsertime-tp6m-profiling
diff --git a/taskcluster/ci/test/variants.yml b/taskcluster/ci/test/variants.yml
new file mode 100644
index 0000000000..9777cc3cec
--- /dev/null
+++ b/taskcluster/ci/test/variants.yml
@@ -0,0 +1,290 @@
+---
+1proc:
+ description: "{description} with e10s disabled"
+ component: "Testing::General"
+ expiration: "never"
+ suffix: "1proc"
+ merge:
+ mozharness:
+ extra-options:
+ - "--disable-e10s"
+ - "--disable-fission"
+
+headless:
+ description: "{description} without a window"
+ component: "Firefox::Headless"
+ expiration: "never"
+ suffix: "headless"
+ replace:
+ tier: 2
+ merge:
+ mozharness:
+ extra-options:
+ - "--headless"
+
+a11y-checks:
+ description: "{description} with accessibility checks enabled"
+ component: "Core::Disability Access APIs"
+ expiration: "2023-09-01"
+ suffix: "a11y-checks"
+ replace:
+ tier: 2
+ merge:
+ mozharness:
+ extra-options:
+ - "--enable-a11y-checks"
+
+aab:
+ description: "{description} with aab test_runner"
+ component: "GeckoView::General"
+ expiration: "2023-09-01"
+ when: &gv_e10s_filter
+ $eval: '"android" in task["test-platform"]'
+ suffix: "aab"
+ # Need to add jdk but there isn't a good way to do that
+ # so we just replace the toolchain list
+ merge:
+ fetches:
+ toolchain:
+ - android-system-image-x86_64-linux
+ - android-avd-x86_64-linux
+ - android-emulator-linux
+ - linux64-minidump-stackwalk
+ - linux64-fix-stacks
+ - linux64-jdk
+ replace:
+ target: "geckoview-test_runner.aab"
+
+geckoview-no-fission:
+ description: "{description} without fission enabled"
+ component: "Core::DOM: Content Processes"
+ expiration: "2023-09-01"
+ when:
+ <<: *gv_e10s_filter
+ suffix: "nofis"
+ merge:
+ mozharness:
+ extra-options:
+ - "--disable-fission"
+
+geckoview-fission:
+ description: "{description} with fission enabled"
+ component: "Core::DOM: Content Processes"
+ expiration: "2023-09-01"
+ when:
+ <<: *gv_e10s_filter
+ suffix: "fis"
+
+fission:
+ description: "{description} with fission enabled"
+ component: "Core::DOM: Content Processes"
+ expiration: "2023-09-01"
+ suffix: "fis"
+
+no-fission:
+ description: "{description} without fission enabled"
+ component: "Core::DOM: Content Processes"
+ expiration: "2023-09-01"
+ suffix: "nofis"
+ merge:
+ mozharness:
+ extra-options:
+ - "--disable-fission"
+
+xorigin:
+ description: "{description} with cross-origin"
+ component: "Core::DOM: Content Processes"
+ expiration: "2023-09-01"
+ suffix: "xorig"
+ replace:
+ e10s: true
+ merge:
+ mozharness:
+ extra-options:
+ - "--enable-xorigin-tests"
+ - "--setpref=privacy.partition.always_partition_third_party_non_cookie_storage=false"
+
+editor-legacy-direction:
+ description: "{description} with compatible join/split node direction of editor disabled"
+ component: "Core::DOM: Editor"
+ expiration: "2023-09-01"
+ suffix: "editor-legacy-dir"
+ replace:
+ tier: 2
+ merge:
+ mozharness:
+ extra-options:
+ - "--setpref=editor.join_split_direction.compatible_with_the_other_browsers=false"
+
+conditioned_profile:
+ description: "{description} with conditioned profile"
+ component: "Testing::General"
+ expiration: "2023-09-01"
+ suffix: "condprof"
+ merge:
+ mozharness:
+ extra-options:
+ - "--conditioned-profile"
+ replace:
+ chunks: 8
+
+socketprocess:
+ description: "{description} with socket process enabled"
+ component: "Core::Networking"
+ expiration: "2023-08-01"
+ suffix: "spi"
+ merge:
+ mozharness:
+ extra-options:
+ - "--setpref=media.peerconnection.mtransport_process=true"
+ - "--setpref=network.process.enabled=true"
+
+socketprocess_networking:
+ description: "{description} with networking on socket process enabled"
+ component: "Core::Networking"
+ expiration: "2023-08-01"
+ suffix: "spi-nw"
+ merge:
+ mozharness:
+ extra-options:
+ - "--setpref=network.process.enabled=true"
+ - "--setpref=network.http.network_access_on_socket_process.enabled=true"
+
+# -
+# Webrender DComp variants for Win10
+
+webrender-dcomp-disabled:
+ description: "{description} with dcomp disabled"
+ component: "Core::Graphics: WebRender"
+ expiration: "2023-09-01"
+ suffix: "wr-dc0"
+ when:
+ $eval: '"windows1" in task["test-platform"]'
+ merge:
+ mozharness:
+ extra-options:
+ - "--setpref=gfx.webrender.dcomp-win.enabled=false"
+ - "--setpref=gfx.webrender.dcomp-video-overlay-win=false"
+ - "--setpref=gfx.webrender.dcomp-video-overlay-win.force-enabled=false"
+ - "--setpref=gfx.webrender.compositor=false"
+ - "--setpref=gfx.webrender.compositor.force-enabled=false"
+
+webrender-dcomp-present: # Default variant ends up like this.
+ description: "{description} with dcomp present but not overlays"
+ component: "Core::Graphics: WebRender"
+ expiration: "2023-09-01"
+ suffix: "wr-dc1-p"
+ when:
+ $eval: '"windows1" in task["test-platform"]'
+ merge:
+ mozharness:
+ extra-options:
+ - "--setpref=gfx.webrender.dcomp-win.enabled=true"
+ - "--setpref=gfx.webrender.dcomp-video-overlay-win=false"
+ - "--setpref=gfx.webrender.dcomp-video-overlay-win.force-enabled=false"
+ - "--setpref=gfx.webrender.compositor=false"
+ - "--setpref=gfx.webrender.compositor.force-enabled=false"
+
+webrender-dcomp-overlays:
+ description: "{description} with dcomp overlays but not compositing"
+ component: "Core::Graphics: WebRender"
+ expiration: "2023-09-01"
+ suffix: "wr-dc2-o"
+ when:
+ $eval: '"windows1" in task["test-platform"]'
+ merge:
+ mozharness:
+ extra-options:
+ - "--setpref=gfx.webrender.dcomp-win.enabled=true"
+ - "--setpref=gfx.webrender.dcomp-video-overlay-win=true"
+ - "--setpref=gfx.webrender.dcomp-video-overlay-win.force-enabled=true"
+ - "--setpref=gfx.webrender.compositor=false"
+ - "--setpref=gfx.webrender.compositor.force-enabled=false"
+
+webrender-dcomp-compositing:
+ description: "{description} with dcomp compositing"
+ component: "Core::Graphics: WebRender"
+ expiration: "2023-09-01"
+ suffix: "wr-dc3-c"
+ when:
+ $eval: '"windows1" in task["test-platform"]'
+ merge:
+ mozharness:
+ extra-options:
+ - "--setpref=gfx.webrender.dcomp-win.enabled=true"
+ - "--setpref=gfx.webrender.dcomp-video-overlay-win=true"
+ - "--setpref=gfx.webrender.dcomp-video-overlay-win.force-enabled=true"
+ - "--setpref=gfx.webrender.compositor=true"
+ - "--setpref=gfx.webrender.compositor.force-enabled=true"
+
+# -
+
+webrender-sw:
+ description: "{description} with software webrender enabled"
+ component: "Core::Graphics: WebRender"
+ expiration: "2023-09-01"
+ suffix: "swr"
+ merge:
+ webrender: true
+ mozharness:
+ extra-options:
+ - "--setpref=gfx.webrender.software=true"
+
+webgl-ipc:
+ description: "{description} with WebGL IPC process enabled"
+ component: "Core::Graphics: CanvasWebGL"
+ expiration: "2023-09-01"
+ suffix: "gli"
+ merge:
+ mozharness:
+ extra-options:
+ - "--setpref=webgl.out-of-process=true"
+ - "--setpref=security.sandbox.content.headless=true"
+
+devtools-no-eft:
+ description: "{description} with DevTools EFT disabled"
+ component: "DevTools::Framework"
+ expiration: "2023-09-01"
+ suffix: "dt-no-eft"
+ merge:
+ mozharness:
+ extra-options:
+ - "--setpref=devtools.every-frame-target.enabled=false"
+
+wmf-media-engine:
+ description: "{description} with Windows Media Foundation media engine enabled"
+ component: "Core::Audio/Video: Playback"
+ expiration: "2023-10-10"
+ when:
+ $eval: '"windows1" in task["test-platform"]'
+ suffix: "wmfme"
+ replace:
+ tier: 2
+ merge:
+ mozharness:
+ extra-options:
+ - "--tag=media-engine-compatible"
+ - "--setpref=media.wmf.media-engine.enabled=true"
+ - "--setpref=media.wmf.media-engine.channel-decoder.enabled=true"
+
+msix:
+ description: "{description} from msix packages"
+ component: "Firefox:Installer"
+ expiration: "never"
+ suffix: "msix"
+ when:
+ $eval: '"windows1" in task["test-platform"] && "-64" in task["test-platform"] && ("opt" in task["test-platform"] || "debug" in task["test-platform"]) && !("asan" in task["test-platform"]) && !("ccov" in task["test-platform"])'
+ merge:
+ mozharness:
+ extra-options:
+ - "--installer-path installer.msix"
+
+http3:
+ description: "{description} with http3 server"
+ component: "Testing::General"
+ expiration: "2023-09-01"
+ suffix: "http3"
+ merge:
+ mozharness:
+ extra-options:
+ - "--use-http3-server"
diff --git a/taskcluster/ci/test/web-platform.yml b/taskcluster/ci/test/web-platform.yml
new file mode 100644
index 0000000000..cea5f5e3e6
--- /dev/null
+++ b/taskcluster/ci/test/web-platform.yml
@@ -0,0 +1,494 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ suite:
+ category: web-platform-tests
+ instance-size: xlarge
+ max-run-time:
+ by-test-platform:
+ android-em-7.0-x86_64/debug: 7200
+ default: 5400
+ mozharness:
+ script: web_platform_tests.py
+ config:
+ by-test-platform:
+ windows.*:
+ - web_platform_tests/prod_config_windows_taskcluster.py
+ macosx.*:
+ - web_platform_tests/prod_config_mac.py
+ android-em.*:
+ - android/android-x86_64.py
+ - web_platform_tests/prod_config_android.py
+ default:
+ - web_platform_tests/prod_config.py
+ - remove_executables.py
+ target:
+ by-test-platform:
+ android-em-7.0-x86_64-shippable(-lite)?-qr/opt: geckoview-test_runner.apk
+ android-em-7.0-x86_64(-lite)?-qr/opt: geckoview-test_runner.apk
+ android-em-7.0-x86_64(-lite)?-qr/debug(-isolated-process)?: geckoview-test_runner.apk
+ default: null
+
+web-platform-tests:
+ description: "Web platform test run"
+ suite: web-platform-tests
+ treeherder-symbol: W(wpt)
+ virtualization: virtual
+ tier:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug-isolated-process: 3
+ default: default
+ chunks:
+ by-test-platform:
+ android.*/debug: 32
+ android.*: 24
+ linux.*64-tsan-qr/opt: 32
+ linux.*64-asan(-qr)?/opt: 22
+ linux.*64-ccov.*/opt: 20
+ linux.*/debug: 16
+ macosx.*/debug: 18
+ windows.*32.*/opt: 12
+ windows.*/debug: 16
+ windows.*-ccov.*/opt: 14
+ default: 10
+ max-run-time:
+ by-test-platform:
+ .*-ccov.*/.*: 10800
+ linux.*64(-tsan|-asan)-qr/opt: 14400
+ linux.*64(-qr)?/debug: 10800
+ macosx.*/debug: 10800
+ android-em.*/.*: 10800
+ default: 7200
+ variants:
+ - no-fission
+ - webrender-sw+no-fission
+ - webrender-sw
+ - editor-legacy-direction
+ run-on-projects:
+ by-variant:
+ webrender-sw:
+ by-test-platform:
+ .*-32.*/.*: []
+ linux.*64-qr/debug: built-projects
+ windows.*-qr/debug: built-projects
+ android-em-7.0-x86_64-qr/debug: []
+ default: []
+ webrender-sw+no-fission:
+ by-test-platform:
+ .*-32.*/.*: []
+ android-em-7.0-x86_64-qr/debug: built-projects
+ linux.*64-qr/debug: built-projects
+ default: []
+ no-fission:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug-isolated-process: []
+ android.*: built-projects
+ linux1804-64-qr/debug: ['trunk']
+ linux1804-64(-shippable|-asan)?-qr/opt: ['trunk']
+ default: []
+ editor-legacy-direction:
+ by-test-platform:
+ linux1804-64-qr/debug: ['mozilla-central']
+ default: []
+ default:
+ by-test-platform:
+ android.*: []
+ .*wayland.*: []
+ default: built-projects
+ mozharness:
+ chunked: true
+ extra-options:
+ - --test-type=testharness
+ - --skip-implementation-status=backlog
+ - --skip-implementation-status=not-implementing
+ # Because we have a separate job for them, don't run the (core)
+ # webgpu/* tests in the main WPT runs. (but still run tests in dirs
+ # other than webgpu/* that are tagged webgpu, e.g. canvas tests)
+ - --exclude=webgpu
+ # Remove after webgpu tests move back to upstream WPT repo:
+ - --exclude=_mozilla/webgpu
+
+web-platform-tests-backlog:
+ description: "Web platform test (backlog) run"
+ treeherder-symbol: W-b(wpt)
+ variants:
+ - no-fission
+ chunks:
+ by-test-platform:
+ android.*: 3
+ default: 1
+ max-run-time:
+ by-test-platform:
+ android.*/opt: 7200
+ default: 3600
+ run-on-projects:
+ by-variant:
+ no-fission:
+ by-test-platform:
+ android.*: ['mozilla-central']
+ default: []
+ default:
+ by-test-platform:
+ android.*: []
+ .*wayland.*: []
+ default: ['mozilla-central']
+ test-manifest-loader: null # don't load tests in the taskgraph
+ tier: 2
+ mozharness:
+ chunked: true
+ extra-options:
+ - --test-type=testharness
+ - --skip-implementation-status=implementing
+ - --skip-implementation-status=not-implementing
+ - --backlog
+
+web-platform-tests-reftest:
+ description: "Web platform reftest run"
+ schedules-component: web-platform-tests-reftest
+ treeherder-symbol: W(Wr)
+ virtualization:
+ by-test-platform:
+ windows.*-64.*-qr/.*: virtual-with-gpu
+ default: virtual
+ chunks:
+ by-test-platform:
+ .*-ccov.*/.*: 8
+ linux.*64-tsan-qr/opt: 16
+ linux1804-64(-asan)?-qr/.*: 6
+ macosx10.*-64/debug: 6
+ macosx10.*-64/opt: 3
+ windows.*-(32|64)(-qr)?/debug: 5
+ android.*: 6
+ default: 4
+ variants:
+ - no-fission
+ - webrender-sw+no-fission
+ - webrender-sw
+ - editor-legacy-direction
+ run-on-projects:
+ by-variant:
+ webrender-sw:
+ by-test-platform:
+ .*-32.*/.*: []
+ linux.*64-qr/debug: built-projects
+ windows.*-qr/debug: built-projects
+ default: []
+ webrender-sw+no-fission:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug: built-projects
+ linux1804-64-qr/debug: ['trunk']
+ linux1804-64(-shippable|-asan)?-qr/opt: ['trunk']
+ default: []
+ no-fission:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug-isolated-process: []
+ linux1804-64-qr/debug: ['trunk']
+ linux1804-64(-shippable|-asan)?-qr/opt: ['trunk']
+ android.*: built-projects
+ default: []
+ editor-legacy-direction:
+ by-test-platform:
+ linux1804-64-qr/debug: ['mozilla-central']
+ default: []
+ default:
+ by-test-platform:
+ android.*: []
+ .*wayland.*: []
+ default: built-projects
+ tier:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug-isolated-process: 3
+ default: default
+ mozharness:
+ extra-options:
+ - --test-type=reftest
+ - --skip-implementation-status=backlog
+ - --skip-implementation-status=not-implementing
+
+web-platform-tests-webgpu:
+ description: "Web platform WebGPU test run"
+ suite: web-platform-tests
+ treeherder-symbol: W(webgpu)
+ virtualization: virtual
+ tier: default
+ chunks: 2
+ max-run-time: 7200
+ variants: [] # We don't need sw or nofis testing.
+ run-on-projects:
+ by-test-platform:
+ android.*: []
+ macos.*: []
+ .*wayland.*: []
+ default: ['trunk']
+ mozharness:
+ chunked: true
+ extra-options:
+ - --test-type=testharness
+ - --default-exclude
+ - --tag=webgpu
+
+web-platform-tests-reftest-backlog:
+ description: "Web platform reftest (backlog) run"
+ schedules-component: web-platform-tests-reftest
+ treeherder-symbol: W-b(Wr)
+ virtualization: virtual
+ chunks: 1
+ variants:
+ - no-fission
+ run-on-projects:
+ by-variant:
+ no-fission:
+ by-test-platform:
+ android.*: ['mozilla-central']
+ default: []
+ default:
+ by-test-platform:
+ android.*: []
+ .*wayland.*: []
+ default: ['mozilla-central']
+ test-manifest-loader: null # don't load tests in the taskgraph
+ tier: 2
+ mozharness:
+ extra-options:
+ - --test-type=reftest
+ - --skip-implementation-status=implementing
+ - --skip-implementation-status=not-implementing
+ - --backlog
+
+web-platform-tests-wdspec:
+ description: "Web platform webdriver-spec run"
+ schedules-component: web-platform-tests-wdspec
+ treeherder-symbol: W(Wd)
+ chunks:
+ by-test-platform:
+ .*-ccov.*/.*: 4
+ .*-tsan.*/.*: 8
+ default: 3
+ mozharness:
+ extra-options:
+ by-test-platform:
+ android-em-7.*:
+ - --test-type=wdspec
+ - --setpref=gfx.canvas.accelerated=false
+ default:
+ - --test-type=wdspec
+ variants:
+ - no-fission
+ - webrender-sw+no-fission
+ - webrender-sw
+ - headless
+ - editor-legacy-direction
+ run-on-projects:
+ by-variant:
+ webrender-sw+no-fission:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug: built-projects
+ linux1804-64-qr/debug: ['trunk']
+ linux1804-64(-shippable|-asan)?-qr/opt: ['trunk']
+ default: []
+ webrender-sw:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug: []
+ .*-32.*/.*: []
+ linux.*64-qr/debug: built-projects
+ windows.*-qr/debug: built-projects
+ default: []
+ headless:
+ by-test-platform:
+ android.*: []
+ .*wayland.*: []
+ default: built-projects
+ no-fission:
+ by-test-platform:
+ linux1804-64-qr/debug: ['trunk']
+ linux1804-64(-shippable|-asan)?-qr/opt: ['trunk']
+ android.*: built-projects
+ default: []
+ editor-legacy-direction:
+ by-test-platform:
+ linux1804-64-qr/debug: ['mozilla-central']
+ default: []
+ default:
+ by-test-platform:
+ android.*: []
+ .*wayland.*: []
+ default: built-projects
+ tier: default
+ fetches:
+ toolchain:
+ by-test-platform:
+ android-em-7.*:
+ - android-system-image-x86_64-linux
+ - android-avd-x86_64-linux
+ - android-emulator-linux
+ - linux64-geckodriver
+ - linux64-minidump-stackwalk
+ - linux64-fix-stacks
+ linux.*64.*:
+ - linux64-geckodriver
+ - linux64-minidump-stackwalk
+ - linux64-fix-stacks
+ linux.*32.*:
+ - linux32-geckodriver
+ - linux64-minidump-stackwalk
+ - linux64-fix-stacks
+ macosx.*:
+ - macosx64-geckodriver
+ - macosx64-minidump-stackwalk
+ - macosx64-fix-stacks
+ win.*-32.*:
+ - win32-geckodriver
+ - win32-minidump-stackwalk
+ - win32-fix-stacks
+ win.*-64.*:
+ - win64-geckodriver
+ - win32-minidump-stackwalk
+ - win32-fix-stacks
+ default:
+ - linux64-minidump-stackwalk
+ - linux64-fix-stacks
+ - linux64-geckodriver
+
+web-platform-tests-crashtest:
+ description: "Web platform crashtests run"
+ schedules-component: web-platform-tests-crashtest
+ treeherder-symbol: W(Wc)
+ chunks: 1
+ mozharness:
+ extra-options:
+ - --test-type=crashtest
+ variants:
+ - no-fission
+ - webrender-sw
+ - webrender-sw+no-fission
+ - editor-legacy-direction
+ run-on-projects:
+ by-variant:
+ webrender-sw:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug: built-projects
+ .*-32.*/.*: []
+ linux.*64-qr/debug: built-projects
+ macosx101.*64-qr/debug: built-projects
+ windows.*-qr/debug: built-projects
+ default: []
+ webrender-sw+no-fission:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug: built-projects
+ linux1804-64-qr/debug: ['trunk']
+ linux1804-64(-shippable|-asan)?-qr/opt: ['trunk']
+ default: []
+ no-fission:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug-isolated-process: []
+ linux1804-64-qr/debug: ['trunk']
+ linux1804-64(-shippable|-asan)?-qr/opt: ['trunk']
+ android.*: built-projects
+ default: []
+ editor-legacy-direction:
+ by-test-platform:
+ linux1804-64-qr/debug: ['mozilla-central']
+ default: []
+ default:
+ by-test-platform:
+ android.*: []
+ android-em-7.0-x86_64-qr/debug: built-projects
+ .*wayland.*: []
+ default: built-projects
+ tier: default
+
+web-platform-tests-print-reftest:
+ description: "Web platform print-reftest run"
+ schedules-component: web-platform-tests-print-reftest
+ treeherder-symbol: W(Wp)
+ chunks: 1
+ test-manifest-loader: null # don't load tests in the taskgraph
+ tier: default
+ variants:
+ - no-fission
+ - webrender-sw
+ - webrender-sw+no-fission
+ run-on-projects:
+ by-variant:
+ webrender-sw:
+ by-test-platform:
+ android.*: []
+ .*-32.*/.*: []
+ linux.*64-qr/debug: built-projects
+ windows.*-qr/debug: built-projects
+ default: []
+ webrender-sw+no-fission:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug: built-projects
+ linux1804-64-qr/debug: ['trunk']
+ linux1804-64(-shippable|-asan)?-qr/opt: ['trunk']
+ default: []
+ no-fission:
+ by-test-platform:
+ linux1804-64-qr/debug: ['trunk']
+ linux1804-64(-shippable|-asan)?-qr/opt: ['trunk']
+ android.*: built-projects
+ default: []
+ default:
+ by-test-platform:
+ android.*: []
+ .*wayland.*: []
+ default: built-projects
+ mozharness:
+ extra-options:
+ - --test-type=print-reftest
+
+test-verify-wpt:
+ description: "Extra verification of web-platform tests modified on this push"
+ suite:
+ category: test-verify
+ name: test-verify-wpt
+ treeherder-symbol: TVw
+ max-run-time: 10800
+ run-on-projects:
+ by-test-platform:
+ # do not run on asan, ccov, shippable or wayland
+ .*-(asan|ccov|shippable|wayland).*/.*: []
+ # do not run on beta or release: usually just confirms earlier results
+ default: ['integration']
+ built-projects-only: true
+ test-manifest-loader: null # don't load tests in the taskgraph
+ optimization:
+ test-verify: ["test-verify-wpt"]
+ tier: 2
+ mozharness:
+ extra-options:
+ - --verify
+
+test-coverage-wpt:
+ description: "Per web-platform test coverage"
+ suite:
+ category: test-coverage
+ name: test-coverage-wpt
+ schedules-component: test-coverage-wpt
+ treeherder-symbol: TCw
+ max-run-time: 10800
+ variants:
+ - no-fission
+ - webrender-sw+no-fission
+ run-on-projects:
+ by-variant:
+ webrender-sw+no-fission:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug: built-projects
+ default: []
+ no-fission:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug: built-projects
+ default: []
+ default:
+ by-test-platform:
+ .*-ccov.*/.*: built-projects
+ default: []
+ test-manifest-loader: null # don't load tests in the taskgraph
+ tier: 2
+ mozharness:
+ extra-options:
+ - --per-test-coverage
diff --git a/taskcluster/ci/test/xpcshell.yml b/taskcluster/ci/test/xpcshell.yml
new file mode 100644
index 0000000000..583155eb25
--- /dev/null
+++ b/taskcluster/ci/test/xpcshell.yml
@@ -0,0 +1,186 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ suite:
+ category: xpcshell
+ name:
+ by-variant:
+ msix: xpcshell-msix
+ default: xpcshell
+ target:
+ by-test-platform:
+ android-em-7.*: geckoview-test_runner.apk
+ windows11-64-2009.*:
+ by-variant:
+ msix: target.installer.msix
+ default: null
+ default: null
+ mozharness:
+ script:
+ by-test-platform:
+ android-em.*: android_emulator_unittest.py
+ default: desktop_unittest.py
+ config:
+ by-test-platform:
+ android-em-7.*:
+ - android/android_common.py
+ - android/android-x86_64.py
+ linux.*:
+ - unittests/linux_unittest.py
+ - remove_executables.py
+ macosx.*:
+ - unittests/mac_unittest.py
+ windows.*:
+ - unittests/win_unittest.py
+ requires-signed-builds:
+ by-test-platform:
+ macosx1100.*: true
+ windows.*-asan-qr/opt: false # No XPCShell on ASAN yet
+ windows.*-mingwclang-qr/.*: false
+ windows.*: true
+ default: false
+
+xpcshell:
+ description: "xpcshell test run"
+ treeherder-symbol: X(X)
+ variants:
+ - conditioned_profile
+ - socketprocess_networking+no-fission
+ - socketprocess_networking
+ - no-fission
+ - msix
+ run-on-projects:
+ by-variant:
+ conditioned_profile:
+ by-test-platform:
+ .*asan.*: []
+ .*ccov.*: []
+ (linux1804-64|windows11-64.*)(-shippable)?-qr/opt: ['trunk']
+ default: []
+ socketprocess_networking+no-fission:
+ by-test-platform:
+ linux1804-64.*: ['trunk']
+ default: []
+ socketprocess_networking:
+ by-test-platform:
+ (linux1804-64|macosx).*: ['trunk'] # All Linux & Mac variants
+ windows7-32.*: ['trunk']
+ ^(?!.*asan).*windows11.*: ['trunk'] # All Windows11 except ASAN
+ default: []
+ no-fission:
+ by-test-platform:
+ android-em-7.0-x86_64-qr/debug-isolated-process: []
+ android.*: built-projects
+ linux1804-64.*: ['trunk']
+ default: []
+ msix:
+ by-test-platform:
+ windows11-64-2009(-shippable)?-qr/opt: built-projects
+ windows11-64-2009-qr/debug: built-projects
+ default: []
+ default:
+ by-test-platform:
+ android.*: []
+ .*wayland.*: []
+ windows.*-asan-qr/opt: [] # No XPCShell on ASAN yet
+ default: built-projects
+ chunks:
+ by-test-platform:
+ .*-asan-qr/opt: 4
+ .*-ccov.*/.*: 8
+ .*-tsan-qr/opt: 8
+ (android-em-7.*|macosx.*|linux1804-64.*/opt): 2
+ default: 4
+ max-run-time:
+ by-variant:
+ msix: 7200
+ conditioned_profile: 7200
+ default:
+ by-test-platform:
+ .*-ccov(-qr)?/.*: 7200
+ .*-tsan-qr/opt: 7200
+ default: 5400
+ allow-software-gl-layers: false
+ tier:
+ by-test-platform:
+ windows.*-asan.*: 3
+ android-em-7.0-x86_64-qr/debug-isolated-process: 3
+ default: default
+ mozharness:
+ extra-options:
+ by-test-platform:
+ windows1.*:
+ - --threads=2
+ default: []
+ fetches:
+ toolchain:
+ by-test-platform:
+ # xpcshell-tests are limited to *-node-12 as node 14+ dropped
+ # support for Windows 7. Once support for Windows 7 is dropped
+ # (bug 1594270) we should be able to revert these to the latest
+ # node version (*-node).
+ linux.*:
+ - linux64-node-12
+ - linux64-minidump-stackwalk
+ - linux64-fix-stacks
+ macosx.*:
+ - macosx64-node-12
+ - macosx64-minidump-stackwalk
+ - macosx64-fix-stacks
+ win.*-64.*:
+ - win64-node-12
+ - win32-minidump-stackwalk
+ - win32-fix-stacks
+ win.*32.*:
+ - win32-node-12
+ - win32-minidump-stackwalk
+ - win32-fix-stacks
+ android-em-7.*:
+ - android-system-image-x86_64-linux
+ - android-avd-x86_64-linux
+ - android-emulator-linux
+ - linux64-node-12
+ - linux64-minidump-stackwalk
+
+xpcshell-failures:
+ description: "xpcshell specific failures test run"
+ treeherder-symbol: X-f(X)
+ run-on-projects: ["mozilla-central"]
+ chunks: 2
+ max-run-time: 2700
+ allow-software-gl-layers: false
+ tier: 3
+ mozharness:
+ script:
+ by-test-platform:
+ macos.*: mac_unittest.py
+ windows1.*: desktop_unittest.py
+ config:
+ by-test-platform:
+ macos.*:
+ - unittests/mac_unittest.py
+ windows1.*:
+ - unittests/win_unittest.py
+ extra-options:
+ by-test-platform:
+ macosx1100.*:
+ - --run-failures=apple_silicon
+ - --timeout-as-pass
+ - --crash-as-pass
+ fetches:
+ toolchain:
+ by-test-platform:
+ # xpcshell-tests are limited to *-node-12 as node 14+ dropped
+ # support for Windows 7. Once support for Windows 7 is dropped
+ # (bug 1594270) we should be able to revert these to the latest
+ # node version (*-node).
+ macosx.*:
+ - macosx64-node-12
+ - macosx64-minidump-stackwalk
+ - macosx64-fix-stacks
+ win.*32.*:
+ - win32-node-12
+ - win32-minidump-stackwalk
+ - win32-fix-stacks
diff --git a/taskcluster/ci/toolchain/android.yml b/taskcluster/ci/toolchain/android.yml
new file mode 100644
index 0000000000..44d9af81bb
--- /dev/null
+++ b/taskcluster/ci/toolchain/android.yml
@@ -0,0 +1,205 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ worker-type: b-linux-gcp
+ worker:
+ docker-image: {in-tree: android-build}
+ max-run-time: 1800
+
+# In automation, we generate the AVD using the linux64-android-avd jobs. On
+# developers' machines, bootstrap will download the artifact from the avd job
+# instead of generating it.
+#
+# The Android AVD needs the corresponding system image generated in the
+# linux64-android-system-image TL job. System images are not redistributable,
+# so locally bootstrap will use sdkmanager to download the corresponding system
+# images.
+linux64-android-avd-x86_64-repack:
+ attributes:
+ local-toolchain: true
+ description: "Android AVD (Linux) repack toolchain build"
+ treeherder:
+ symbol: TL(avd-x86_64-linux)
+ run:
+ script: repack-android-avd-linux.sh
+ arguments:
+ - 'python/mozboot/mozboot/android-avds/x86_64.json'
+ resources:
+ - 'python/mozboot/**/*android*'
+ toolchain-artifact: public/build/android-avd-linux.tar.zst
+ toolchain-alias: android-avd-x86_64-linux
+ fetches:
+ toolchain:
+ # Aliases aren't allowed for toolchains depending on toolchains.
+ - linux64-jdk-repack
+
+linux64-android-avd-arm-repack:
+ attributes:
+ local-toolchain: true
+ description: "Android AVD (Linux) repack toolchain build"
+ treeherder:
+ symbol: TL(avd-arm-linux)
+ run:
+ script: repack-android-avd-linux.sh
+ arguments:
+ - 'python/mozboot/mozboot/android-avds/arm.json'
+ resources:
+ - 'python/mozboot/**/*android*'
+ toolchain-artifact: public/build/android-avd-linux.tar.zst
+ toolchain-alias: android-avd-arm-linux
+ fetches:
+ toolchain:
+ # Aliases aren't allowed for toolchains depending on toolchains.
+ - linux64-jdk-repack
+
+linux64-android-avd-arm64-repack:
+ attributes:
+ local-toolchain: true
+ description: "Android AVD (Linux) repack toolchain build"
+ treeherder:
+ symbol: TL(avd-arm64-linux)
+ run:
+ script: repack-android-avd-linux.sh
+ arguments:
+ - 'python/mozboot/mozboot/android-avds/arm64.json'
+ resources:
+ - 'python/mozboot/**/*android*'
+ toolchain-artifact: public/build/android-avd-linux.tar.zst
+ toolchain-alias: android-avd-arm64-linux
+ fetches:
+ toolchain:
+ # Aliases aren't allowed for toolchains depending on toolchains.
+ - linux64-jdk-repack
+
+linux64-android-system-image-x86_64-repack:
+ description: "Android System Images (Linux) repack toolchain build"
+ treeherder:
+ symbol: TL(x86_64-avd-img-linux)
+ run:
+ script: repack-android-system-images-linux.sh
+ arguments:
+ - 'python/mozboot/mozboot/android-avds/x86_64.json'
+ resources:
+ - 'python/mozboot/**/*android*'
+ toolchain-artifact: project/gecko/android-system-images/android-system-images-linux.tar.zst
+ toolchain-alias: android-system-image-x86_64-linux
+ fetches:
+ toolchain:
+ # Aliases aren't allowed for toolchains depending on toolchains.
+ - linux64-jdk-repack
+
+linux64-jdk-repack:
+ description: "Java JDK (Linux) repack toolchain build"
+ treeherder:
+ symbol: TL(jdk)
+ run:
+ script: repack-jdk-linux.sh
+ resources:
+ - 'python/mozboot/**/*android*'
+ toolchain-artifact: project/gecko/jdk/jdk-linux.tar.zst
+ toolchain-alias: linux64-jdk
+ toolchain-env:
+ JAVA_HOME: "/builds/worker/fetches/jdk/jdk-17.0.7+7"
+
+linux64-android-sdk-linux-repack:
+ description: "Android SDK (Linux) repack toolchain build"
+ treeherder:
+ symbol: TL(android-sdk-linux)
+ run:
+ script: repack-android-sdk-linux.sh
+ resources:
+ - 'python/mozboot/**/*android*'
+ toolchain-artifact: project/gecko/android-sdk/android-sdk-linux.tar.zst
+ toolchain-alias: android-sdk-linux
+ fetches:
+ toolchain:
+ # Aliases aren't allowed for toolchains depending on toolchains.
+ - linux64-jdk-repack
+
+linux64-android-emulator-linux-repack:
+ description: "Android Emulator (Linux) repack toolchain build"
+ treeherder:
+ symbol: TL(android-emulator-linux)
+ run:
+ script: repack-android-emulator-linux.sh
+ resources:
+ - 'python/mozboot/**/*android*'
+ toolchain-artifact: project/gecko/android-emulator/android-emulator-linux.tar.zst
+ toolchain-alias: android-emulator-linux
+ fetches:
+ toolchain:
+ # Aliases aren't allowed for toolchains depending on toolchains.
+ - linux64-jdk-repack
+
+linux64-android-ndk-linux-repack:
+ description: "Android NDK (Linux) repack toolchain build"
+ treeherder:
+ symbol: TL(android-ndk-linux)
+ run:
+ script: repack-android-ndk-linux.sh
+ resources:
+ - 'python/mozboot/**/*android*'
+ toolchain-artifact: project/gecko/android-ndk/android-ndk.tar.zst
+ toolchain-alias: android-ndk-linux
+
+linux64-android-gradle-dependencies:
+ description: "Android Gradle dependencies toolchain task"
+ treeherder:
+ symbol: TL(gradle-dependencies)
+ worker:
+ env:
+ GRADLE_USER_HOME: "/builds/worker/workspace/build/src/mobile/android/gradle/dotgradle-online"
+ run:
+ script: android-gradle-dependencies.sh
+ sparse-profile: null
+ resources:
+ - 'taskcluster/scripts/misc/android-gradle-dependencies/**'
+ - '*.gradle'
+ - 'mobile/android/**/*.gradle'
+ - 'mobile/android/config/mozconfigs/android-arm-gradle-dependencies/**'
+ - 'mobile/android/config/mozconfigs/common*'
+ - 'mobile/android/gradle.configure'
+ toolchain-artifact: public/build/android-gradle-dependencies.tar.zst
+ toolchain-alias: android-gradle-dependencies
+ fetches:
+ fetch:
+ - sonatype-nexus
+ # Nexus needs Java 8
+ - jdk-8-linux64
+ toolchain:
+ # Aliases aren't allowed for toolchains depending on toolchains.
+ - linux64-android-sdk-linux-repack
+ - linux64-jdk-repack
+ - linux64-node
+
+linux64-android-gradle-dependencies-lite:
+ description: "Android Lite Gradle dependencies toolchain task"
+ treeherder:
+ symbol: TL(gradle-dependencies-lite)
+ worker:
+ env:
+ GRADLE_USER_HOME: "/builds/worker/workspace/build/src/mobile/android/gradle/dotgradle-online"
+ run:
+ script: android-gradle-dependencies-lite.sh
+ sparse-profile: null
+ resources:
+ - 'taskcluster/scripts/misc/android-gradle-dependencies/**'
+ - '*.gradle'
+ - 'mobile/android/**/*.gradle'
+ - 'mobile/android/config/mozconfigs/android-arm-gradle-dependencies/**'
+ - 'mobile/android/config/mozconfigs/common*'
+ - 'mobile/android/gradle.configure'
+ toolchain-artifact: public/build/android-gradle-dependencies.tar.zst
+ toolchain-alias: android-gradle-dependencies-lite
+ fetches:
+ fetch:
+ - sonatype-nexus
+ # Nexus needs Java 8
+ - jdk-8-linux64
+ toolchain:
+ # Aliases aren't allowed for toolchains depending on toolchains.
+ - linux64-android-sdk-linux-repack
+ - linux64-jdk-repack
+ - linux64-node
diff --git a/taskcluster/ci/toolchain/cargo-vet.yml b/taskcluster/ci/toolchain/cargo-vet.yml
new file mode 100644
index 0000000000..3f1cb9756a
--- /dev/null
+++ b/taskcluster/ci/toolchain/cargo-vet.yml
@@ -0,0 +1,61 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ description: "cargo-vet toolchain build"
+ attributes:
+ local-toolchain: true
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1800
+ run:
+ script: build-rust-based-toolchain.sh
+ toolchain-artifact: public/build/cargo-vet.tar.zst
+ fetches:
+ fetch:
+ - cargo-vet
+
+linux64-cargo-vet:
+ treeherder:
+ symbol: TL(cargo-vet)
+ run:
+ arguments: ['x86_64-unknown-linux-gnu', 'reqwest/native-tls-vendored']
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-toolchain
+ - sysroot-x86_64-linux-gnu
+
+macosx64-cargo-vet:
+ treeherder:
+ symbol: TM(cargo-vet)
+ run:
+ arguments: ['x86_64-apple-darwin']
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-macos-toolchain
+ - macosx64-sdk-toolchain
+
+macosx64-aarch64-cargo-vet:
+ treeherder:
+ symbol: TM(cargo-vet-arm64)
+ run:
+ arguments: ['aarch64-apple-darwin']
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-macos-toolchain
+ - macosx64-sdk-toolchain
+
+win64-cargo-vet:
+ treeherder:
+ symbol: TW64(cargo-vet)
+ run:
+ arguments: ['x86_64-pc-windows-msvc']
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-windows-toolchain
+ - vs-toolchain
diff --git a/taskcluster/ci/toolchain/cbindgen.yml b/taskcluster/ci/toolchain/cbindgen.yml
new file mode 100644
index 0000000000..21d7247ab8
--- /dev/null
+++ b/taskcluster/ci/toolchain/cbindgen.yml
@@ -0,0 +1,65 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ description: "cbindgen toolchain build"
+ attributes:
+ local-toolchain: true
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 3600
+ run:
+ script: build-rust-based-toolchain.sh
+ toolchain-artifact: public/build/cbindgen.tar.zst
+ fetches:
+ fetch:
+ # If you update this, make sure to update the minimum version in
+ # build/moz.configure/bindgen.configure as well.
+ - cbindgen-0.24.3
+
+linux64-cbindgen:
+ treeherder:
+ symbol: TL(cbindgen)
+ worker:
+ max-run-time: 1800
+ run:
+ arguments: ['x86_64-unknown-linux-gnu']
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-toolchain
+ - sysroot-x86_64-linux-gnu
+
+macosx64-cbindgen:
+ treeherder:
+ symbol: TM(cbindgen)
+ run:
+ arguments: ['x86_64-apple-darwin']
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-macos-toolchain
+ - macosx64-sdk-toolchain
+
+macosx64-aarch64-cbindgen:
+ treeherder:
+ symbol: TM(cbindgen-arm64)
+ run:
+ arguments: ['aarch64-apple-darwin']
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-macos-toolchain
+ - macosx64-sdk-toolchain
+
+win64-cbindgen:
+ treeherder:
+ symbol: TW64(cbindgen)
+ run:
+ arguments: ['x86_64-pc-windows-msvc']
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-windows-toolchain
+ - vs-toolchain
diff --git a/taskcluster/ci/toolchain/clang-tidy.yml b/taskcluster/ci/toolchain/clang-tidy.yml
new file mode 100644
index 0000000000..74783ccd29
--- /dev/null
+++ b/taskcluster/ci/toolchain/clang-tidy.yml
@@ -0,0 +1,127 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ description: "Clang-tidy build"
+ attributes:
+ local-toolchain: true
+ index:
+ product: static-analysis
+ worker-type: b-linux-large-gcp
+ worker:
+ max-run-time: 3600
+ run:
+ toolchain-artifact: public/build/clang-tidy.tar.zst
+ resources:
+ - 'build/clang-plugin/**/*.cpp'
+ - 'build/clang-plugin/**/*.h'
+ - 'build/clang-plugin/*.inc'
+ - 'build/clang-plugin/*.py'
+ - 'build/clang-plugin/*.txt'
+ - 'build/clang-plugin/moz.build'
+ - 'build/clang-plugin/Makefile.in'
+ - 'build/build-clang/build-clang.py'
+ fetches:
+ fetch:
+ - clang-16
+
+linux64-clang-tidy:
+ index:
+ job-name: linux64-clang-tidy
+ treeherder:
+ symbol: TL(clang-tidy)
+ run:
+ script: build-clang.sh
+ arguments:
+ - 'build/build-clang/clang-tidy-linux64.json'
+ resources:
+ - 'build/build-clang/clang-tidy-linux64.json'
+ fetches:
+ toolchain:
+ - linux64-clang-16
+ - linux64-toolchain-sysroot
+
+macosx64-clang-tidy:
+ index:
+ job-name: macosx64-clang-tidy
+ treeherder:
+ symbol: TM(clang-tidy)
+ worker-type: b-linux-large-gcp
+ run:
+ script: build-clang.sh
+ arguments:
+ - 'build/build-clang/clang-tidy-macosx64.json'
+ - 'build/build-clang/macosx64.json'
+ resources:
+ - 'build/build-clang/clang-tidy-macosx64.json'
+ - 'build/build-clang/macosx64.json'
+ fetches:
+ toolchain:
+ - linux64-clang-16
+ - macosx64-sdk-toolchain
+
+macosx64-aarch64-clang-tidy:
+ index:
+ job-name: macosx64-aarch64-clang-tidy
+ treeherder:
+ symbol: TM(clang-tidy-aarch64)
+ worker-type: b-linux-large-gcp
+ run:
+ script: build-clang.sh
+ arguments:
+ - 'build/build-clang/clang-tidy-macosx64.json'
+ - 'build/build-clang/macosx64.json'
+ - 'build/build-clang/macosx64-aarch64.json'
+ resources:
+ - 'build/build-clang/clang-tidy-macosx64.json'
+ - 'build/build-clang/macosx64.json'
+ - 'build/build-clang/macosx64-aarch64.json'
+ fetches:
+ toolchain:
+ - linux64-clang-16
+ - macosx64-sdk-toolchain
+
+win64-clang-tidy:
+ description: "Clang-tidy toolchain build"
+ index:
+ job-name: win64-clang-tidy
+ treeherder:
+ symbol: TW64(clang-tidy)
+ tier: 2
+ worker:
+ max-run-time: 7200
+ run:
+ script: build-clang.sh
+ arguments:
+ - 'build/build-clang/clang-tidy-win64.json'
+ - 'build/build-clang/win64.json'
+ resources:
+ - 'build/build-clang/clang-tidy-win64.json'
+ - 'build/build-clang/win64.json'
+ fetches:
+ toolchain:
+ - linux64-clang-16
+ - vs-toolchain
+
+linux64-clang-tidy-external:
+ attributes:
+ local-toolchain: false
+ index:
+ job-name: linux64-clang-tidy-external
+ treeherder:
+ symbol: TL(clang-tidy-e)
+ run:
+ toolchain-artifact: project/civet/clang-tidy.tar.zst
+ script: build-clang-tidy-external.sh
+ arguments:
+ - 'build/build-clang/clang-tidy-external-linux64.json'
+ resources:
+ - 'build/build-clang/clang-tidy-external-linux64.json'
+ run-on-projects: []
+ fetches:
+ fetch:
+ - civet-source
+ toolchain:
+ - linux64-clang-16
+ - linux64-toolchain-sysroot
diff --git a/taskcluster/ci/toolchain/clang.yml b/taskcluster/ci/toolchain/clang.yml
new file mode 100644
index 0000000000..7c90a517ce
--- /dev/null
+++ b/taskcluster/ci/toolchain/clang.yml
@@ -0,0 +1,903 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ worker-type: b-linux-xlarge-gcp
+ worker:
+ max-run-time: 7200
+ run:
+ resources:
+ - 'build/build-clang/build-clang.py'
+
+linux64-clang-7.0:
+ description: "Clang 7.0 toolchain build"
+ treeherder:
+ symbol: TL(clang-7.0)
+ worker-type: b-linux-large-gcp
+ run:
+ script: build-clang.sh
+ arguments:
+ - 'build/build-clang/linux64.json'
+ - 'build/build-clang/clang-7.0.json'
+ - 'build/build-clang/2stages.json'
+ resources:
+ - 'build/build-clang/linux64.json'
+ - 'build/build-clang/clang-7.0.json'
+ - 'build/build-clang/2stages.json'
+ toolchain-artifact: public/build/clang.tar.zst
+ toolchain-alias: linux64-clang-base
+ fetches:
+ fetch:
+ - clang-7.0
+ toolchain:
+ - linux64-toolchain-sysroot
+
+linux64-clang-14-stage1:
+ description: "Clang 14 toolchain build"
+ treeherder:
+ symbol: TL(clang-14-stage1)
+ run:
+ using: toolchain-script
+ script: build-clang.sh
+ arguments:
+ - 'build/build-clang/linux64.json'
+ - 'build/build-clang/clang-14.json'
+ - 'build/build-clang/1stage.json'
+ resources:
+ - 'build/build-clang/linux64.json'
+ - 'build/build-clang/clang-14.json'
+ - 'build/build-clang/1stage.json'
+ toolchain-artifact: public/build/clang.tar.zst
+ fetches:
+ fetch:
+ - clang-14
+ toolchain:
+ - linux64-toolchain-sysroot
+
+linux64-clang-14:
+ description: "Clang 14 toolchain build"
+ attributes:
+ local-toolchain: true
+ treeherder:
+ symbol: TL(clang-14)
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 600
+ run:
+ script: repack-clang.sh
+ toolchain-artifact: public/build/clang.tar.zst
+ fetches:
+ toolchain:
+ - linux64-clang-14-stage1
+
+macosx64-clang-14-raw:
+ description: "Clang 14 toolchain build"
+ treeherder:
+ symbol: TM(clang-14-raw)
+ worker-type: b-linux-large-gcp
+ worker:
+ max-run-time: 3600
+ run:
+ script: build-clang.sh
+ arguments:
+ - 'build/build-clang/macosx64.json'
+ - 'build/build-clang/clang-14.json'
+ - 'build/build-clang/1stage.json'
+ resources:
+ - 'build/build-clang/macosx64.json'
+ - 'build/build-clang/clang-14.json'
+ - 'build/build-clang/1stage.json'
+ toolchain-artifact: public/build/clang.tar.zst
+ fetches:
+ fetch:
+ - clang-14
+ toolchain:
+ - linux64-clang-14-stage1
+ - macosx64-sdk-toolchain
+
+linux64-clang-16-mingw-x86:
+ description: "MinGW-Clang 16 x86 toolchain build"
+ treeherder:
+ symbol: TMW(clang-16-x86)
+ worker-type: b-linux-gcp
+ run:
+ script: build-clang-mingw.sh
+ arguments:
+ - 'x86'
+ resources:
+ - 'taskcluster/scripts/misc/mingw-*.patch'
+ toolchain-alias:
+ by-project:
+ toolchains: null
+ default: linux64-clang-mingw-x86
+ toolchain-artifact: public/build/clangmingw.tar.zst
+ fetches:
+ fetch:
+ - clang-16
+ - mingw-w64
+ - llvm-mingw
+ - gcc-9.5.0
+ toolchain:
+ - linux64-clang-16
+
+linux64-clang-16-mingw-x64:
+ description: "MinGW-Clang 16 x64 toolchain build"
+ treeherder:
+ symbol: TMW(clang-16-x64)
+ tier: 1
+ worker-type: b-linux-gcp
+ run:
+ script: build-clang-mingw.sh
+ arguments:
+ - 'x64'
+ resources:
+ - 'taskcluster/scripts/misc/mingw-*.patch'
+ toolchain-alias:
+ by-project:
+ toolchains: null
+ default: linux64-clang-mingw-x64
+ toolchain-artifact: public/build/clangmingw.tar.zst
+ fetches:
+ fetch:
+ - clang-16
+ - mingw-w64
+ - llvm-mingw
+ - gcc-9.5.0
+ toolchain:
+ - linux64-clang-16
+
+linux64-clang-16-stage1:
+ description: "Clang 16 toolchain build"
+ treeherder:
+ symbol: TL(clang-16-stage1)
+ run:
+ using: toolchain-script
+ script: build-clang.sh
+ arguments:
+ - 'build/build-clang/linux64.json'
+ - 'build/build-clang/clang-16.json'
+ - 'build/build-clang/1stage.json'
+ resources:
+ - 'build/build-clang/linux64.json'
+ - 'build/build-clang/clang-16.json'
+ - 'build/build-clang/1stage.json'
+ toolchain-alias:
+ by-project:
+ toolchains: null
+ default: linux64-clang-toolchain
+ toolchain-artifact: public/build/clang.tar.zst
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - linux64-toolchain-sysroot
+
+linux64-clang-16-profile:
+ description: "Clang 16 toolchain build"
+ treeherder:
+ symbol: TL(clang-16-profile)
+ run:
+ using: toolchain-script
+ script: build-clang.sh
+ arguments:
+ - 'build/build-clang/linux64.json'
+ - 'build/build-clang/clang-16.json'
+ - 'build/build-clang/skip-stage-1.json'
+ - 'build/build-clang/profile.json'
+ resources:
+ - 'build/build-clang/linux64.json'
+ - 'build/build-clang/clang-16.json'
+ - 'build/build-clang/skip-stage-1.json'
+ - 'build/build-clang/profile.json'
+ toolchain-artifact: public/build/merged.profdata
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - linux64-clang-16-stage1
+ - linux64-x64-compiler-rt-16
+ - linux64-toolchain-sysroot
+
+linux64-clang-16-raw:
+ description: "Clang 16 toolchain build"
+ treeherder:
+ symbol: TL(clang-16-raw)
+ run:
+ script: build-clang.sh
+ arguments:
+ - 'build/build-clang/linux64.json'
+ - 'build/build-clang/clang-16.json'
+ - 'build/build-clang/skip-3-stages.json'
+ - 'build/build-clang/4stages-pgo.json'
+ resources:
+ - 'build/build-clang/linux64.json'
+ - 'build/build-clang/clang-16.json'
+ - 'build/build-clang/skip-3-stages.json'
+ - 'build/build-clang/4stages-pgo.json'
+ toolchain-artifact: public/build/clang.tar.zst
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - linux64-clang-16-stage1
+ - linux64-clang-16-profile
+ - linux64-toolchain-sysroot
+
+linux64-clang-16:
+ description: "Clang 16 toolchain build"
+ attributes:
+ local-toolchain: true
+ treeherder:
+ symbol: TL(clang-16)
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 600
+ run:
+ script: repack-clang.sh
+ toolchain-alias:
+ by-project:
+ toolchains: null
+ default: linux64-clang
+ toolchain-artifact: public/build/clang.tar.zst
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - linux64-clang-16-raw
+ - android-aarch64-compiler-rt-16
+ - android-aarch64-libunwind-16
+ - android-arm-compiler-rt-16
+ - android-arm-libunwind-16
+ - android-x64-compiler-rt-16
+ - android-x64-libunwind-16
+ - android-x86-compiler-rt-16
+ - android-x86-libunwind-16
+ - linux64-aarch64-compiler-rt-16
+ - linux64-x64-compiler-rt-16
+ - linux64-x86-compiler-rt-16
+ - macosx64-aarch64-compiler-rt-16
+ - macosx64-x64-compiler-rt-16
+ - wasm32-wasi-compiler-rt-16
+ - win32-compiler-rt-16
+ - win64-compiler-rt-16
+
+macosx64-clang-16-raw:
+ description: "Clang 16 toolchain build"
+ treeherder:
+ symbol: TM(clang-16-raw)
+ worker-type: b-linux-large-gcp
+ worker:
+ max-run-time: 3600
+ run:
+ script: build-clang.sh
+ arguments:
+ - 'build/build-clang/macosx64.json'
+ - 'build/build-clang/clang-16.json'
+ - 'build/build-clang/skip-3-stages.json'
+ - 'build/build-clang/4stages-pgo.json'
+ resources:
+ - 'build/build-clang/macosx64.json'
+ - 'build/build-clang/clang-16.json'
+ - 'build/build-clang/skip-3-stages.json'
+ - 'build/build-clang/4stages-pgo.json'
+ toolchain-artifact: public/build/clang.tar.zst
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - linux64-clang-16-stage1
+ - linux64-clang-16-profile
+ - macosx64-sdk-toolchain
+ - macosx64-x64-compiler-rt-16
+
+macosx64-clang-16:
+ description: "Clang 16 toolchain repack with MacOS Compiler RT libs"
+ attributes:
+ local-toolchain: true
+ treeherder:
+ symbol: TM(clang-16)
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 600
+ run:
+ script: repack-clang.sh
+ toolchain-alias:
+ by-project:
+ toolchains: null
+ default:
+ - macosx64-clang
+ - macosx64-clang-toolchain
+ toolchain-artifact: public/build/clang.tar.zst
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - macosx64-clang-16-raw
+ - android-aarch64-compiler-rt-16
+ - android-aarch64-libunwind-16
+ - android-arm-compiler-rt-16
+ - android-arm-libunwind-16
+ - android-x64-compiler-rt-16
+ - android-x64-libunwind-16
+ - android-x86-compiler-rt-16
+ - android-x86-libunwind-16
+ - linux64-aarch64-compiler-rt-16
+ - linux64-x64-compiler-rt-16
+ - linux64-x86-compiler-rt-16
+ - macosx64-aarch64-compiler-rt-16
+ - macosx64-x64-compiler-rt-16
+ - wasm32-wasi-compiler-rt-16
+ - win32-compiler-rt-16
+ - win64-compiler-rt-16
+
+macosx64-aarch64-clang-16-raw:
+ description: "Clang 16 toolchain build"
+ treeherder:
+ symbol: TM(clang-16-aarch64-raw)
+ worker-type: b-linux-large-gcp
+ worker:
+ max-run-time: 3600
+ run:
+ script: build-clang.sh
+ arguments:
+ - 'build/build-clang/macosx64.json'
+ - 'build/build-clang/macosx64-aarch64.json'
+ - 'build/build-clang/clang-16.json'
+ - 'build/build-clang/skip-3-stages.json'
+ - 'build/build-clang/4stages-pgo.json'
+ resources:
+ - 'build/build-clang/macosx64.json'
+ - 'build/build-clang/macosx64-aarch64.json'
+ - 'build/build-clang/clang-16.json'
+ - 'build/build-clang/skip-3-stages.json'
+ - 'build/build-clang/4stages-pgo.json'
+ toolchain-artifact: public/build/clang.tar.zst
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - linux64-clang-16-stage1
+ - linux64-clang-16-profile
+ - macosx64-sdk-toolchain
+ - macosx64-aarch64-compiler-rt-16
+
+macosx64-aarch64-clang-16:
+ description: "Clang 16 toolchain repack with MacOS Compiler RT libs"
+ attributes:
+ local-toolchain: true
+ treeherder:
+ symbol: TM(clang-16-aarch64)
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 600
+ run:
+ script: repack-clang.sh
+ toolchain-alias:
+ by-project:
+ toolchains: null
+ default: macosx64-aarch64-clang
+ toolchain-artifact: public/build/clang.tar.zst
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - macosx64-aarch64-clang-16-raw
+ - android-aarch64-compiler-rt-16
+ - android-aarch64-libunwind-16
+ - android-arm-compiler-rt-16
+ - android-arm-libunwind-16
+ - android-x64-compiler-rt-16
+ - android-x64-libunwind-16
+ - android-x86-compiler-rt-16
+ - android-x86-libunwind-16
+ - linux64-aarch64-compiler-rt-16
+ - linux64-x64-compiler-rt-16
+ - linux64-x86-compiler-rt-16
+ - macosx64-aarch64-compiler-rt-16
+ - macosx64-x64-compiler-rt-16
+ - wasm32-wasi-compiler-rt-16
+ - win32-compiler-rt-16
+ - win64-compiler-rt-16
+
+win64-clang-16-stage1:
+ description: "Clang-cl 16 toolchain build stage 1"
+ treeherder:
+ symbol: TW64(clang-16-stage1)
+ run:
+ script: build-clang.sh
+ arguments:
+ - 'build/build-clang/win64.json'
+ - 'build/build-clang/clang-16.json'
+ - 'build/build-clang/1stage.json'
+ resources:
+ - 'build/build-clang/win64.json'
+ - 'build/build-clang/clang-16.json'
+ - 'build/build-clang/1stage.json'
+ toolchain-alias:
+ by-project:
+ toolchains: null
+ default: win64-clang-toolchain
+ toolchain-artifact: public/build/clang.tar.zst
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - linux64-clang-16-stage1
+ - vs-toolchain
+
+win64-clang-16-raw:
+ description: "Clang-cl 16 toolchain build"
+ treeherder:
+ symbol: TW64(clang-16-raw)
+ worker-type: b-win2012
+ worker:
+ max-run-time: 9000
+ run:
+ script: build-clang.sh
+ arguments:
+ - 'build/build-clang/win64.json'
+ - 'build/build-clang/clang-16.json'
+ - 'build/build-clang/skip-stage-1-win64.json'
+ - 'build/build-clang/4stages-pgo.json'
+ resources:
+ - 'build/build-clang/win64.json'
+ - 'build/build-clang/clang-16.json'
+ - 'build/build-clang/skip-stage-1-win64.json'
+ - 'build/build-clang/4stages-pgo.json'
+ toolchain-artifact: public/build/clang.tar.zst
+ fetches:
+ fetch:
+ - clang-16
+ - cmake
+ - ninja
+ toolchain:
+ - win64-clang-16-stage1
+ - win64-compiler-rt-16
+ - vs-toolchain
+
+win64-clang-16:
+ description: "Clang-cl 16 toolchain build"
+ attributes:
+ local-toolchain: true
+ treeherder:
+ symbol: TW64(clang-16)
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 600
+ run:
+ script: repack-clang.sh
+ toolchain-alias:
+ by-project:
+ toolchains: null
+ default: win64-clang
+ toolchain-artifact: public/build/clang.tar.zst
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - win64-clang-16-raw
+ - android-aarch64-compiler-rt-16
+ - android-aarch64-libunwind-16
+ - android-arm-compiler-rt-16
+ - android-arm-libunwind-16
+ - android-x64-compiler-rt-16
+ - android-x64-libunwind-16
+ - android-x86-compiler-rt-16
+ - android-x86-libunwind-16
+ - linux64-aarch64-compiler-rt-16
+ - linux64-x64-compiler-rt-16
+ - linux64-x86-compiler-rt-16
+ - macosx64-aarch64-compiler-rt-16
+ - macosx64-x64-compiler-rt-16
+ - wasm32-wasi-compiler-rt-16
+ - win32-compiler-rt-16
+ - win64-compiler-rt-16
+
+linux64-clang-trunk-mingw-x86:
+ description: "MinGW-Clang trunk x86 toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TMW(clang-trunk-x86)
+ worker-type: b-linux-gcp
+ run:
+ script: build-clang-mingw.sh
+ arguments:
+ - 'x86'
+ resources:
+ - 'taskcluster/scripts/misc/mingw-*.patch'
+ toolchain-alias:
+ by-project:
+ toolchains: linux64-clang-mingw-x86
+ default: null
+ toolchain-artifact: public/build/clangmingw.tar.zst
+ fetches:
+ fetch:
+ - clang-trunk
+ - mingw-w64
+ - llvm-mingw
+ - gcc-9.5.0
+ toolchain:
+ - linux64-clang-trunk
+
+linux64-clang-trunk-mingw-x64:
+ description: "MinGW-Clang trunk x64 toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TMW(clang-trunk-x64)
+ tier: 1
+ worker-type: b-linux-gcp
+ run:
+ script: build-clang-mingw.sh
+ arguments:
+ - 'x64'
+ resources:
+ - 'taskcluster/scripts/misc/mingw-*.patch'
+ toolchain-alias:
+ by-project:
+ toolchains: linux64-clang-mingw-x64
+ default: null
+ toolchain-artifact: public/build/clangmingw.tar.zst
+ fetches:
+ fetch:
+ - clang-trunk
+ - mingw-w64
+ - llvm-mingw
+ - gcc-9.5.0
+ toolchain:
+ - linux64-clang-trunk
+
+linux64-clang-trunk-stage1:
+ description: "Clang trunk toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TL(clang-trunk-stage1)
+ run:
+ using: toolchain-script
+ script: build-clang.sh
+ arguments:
+ - 'build/build-clang/linux64.json'
+ - 'build/build-clang/clang-trunk.json'
+ - 'build/build-clang/1stage.json'
+ resources:
+ - 'build/build-clang/linux64.json'
+ - 'build/build-clang/clang-trunk.json'
+ - 'build/build-clang/1stage.json'
+ toolchain-alias:
+ by-project:
+ toolchains: linux64-clang-toolchain
+ default: null
+ toolchain-artifact: public/build/clang.tar.zst
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - linux64-toolchain-sysroot
+
+linux64-clang-trunk-profile:
+ description: "Clang trunk toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TL(clang-trunk-profile)
+ run:
+ using: toolchain-script
+ script: build-clang.sh
+ arguments:
+ - 'build/build-clang/linux64.json'
+ - 'build/build-clang/clang-trunk.json'
+ - 'build/build-clang/skip-stage-1.json'
+ - 'build/build-clang/profile.json'
+ resources:
+ - 'build/build-clang/linux64.json'
+ - 'build/build-clang/clang-trunk.json'
+ - 'build/build-clang/skip-stage-1.json'
+ - 'build/build-clang/profile.json'
+ toolchain-artifact: public/build/merged.profdata
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - linux64-clang-trunk-stage1
+ - linux64-x64-compiler-rt-trunk
+ - linux64-toolchain-sysroot
+
+linux64-clang-trunk-raw:
+ description: "Clang trunk toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TL(clang-trunk-raw)
+ run:
+ script: build-clang.sh
+ arguments:
+ - 'build/build-clang/linux64.json'
+ - 'build/build-clang/clang-trunk.json'
+ - 'build/build-clang/skip-3-stages.json'
+ - 'build/build-clang/4stages-pgo.json'
+ resources:
+ - 'build/build-clang/linux64.json'
+ - 'build/build-clang/clang-trunk.json'
+ - 'build/build-clang/skip-3-stages.json'
+ - 'build/build-clang/4stages-pgo.json'
+ toolchain-artifact: public/build/clang.tar.zst
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - linux64-clang-trunk-stage1
+ - linux64-clang-trunk-profile
+ - linux64-toolchain-sysroot
+
+linux64-clang-trunk:
+ description: "Clang trunk toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TL(clang-trunk)
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 600
+ run:
+ script: repack-clang.sh
+ toolchain-alias:
+ by-project:
+ toolchains: linux64-clang
+ default: null
+ toolchain-artifact: public/build/clang.tar.zst
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - linux64-clang-trunk-raw
+ - android-aarch64-compiler-rt-trunk
+ - android-aarch64-libunwind-trunk
+ - android-arm-compiler-rt-trunk
+ - android-arm-libunwind-trunk
+ - android-x64-compiler-rt-trunk
+ - android-x64-libunwind-trunk
+ - android-x86-compiler-rt-trunk
+ - android-x86-libunwind-trunk
+ - linux64-aarch64-compiler-rt-trunk
+ - linux64-x64-compiler-rt-trunk
+ - linux64-x86-compiler-rt-trunk
+ - macosx64-aarch64-compiler-rt-trunk
+ - macosx64-x64-compiler-rt-trunk
+ - wasm32-wasi-compiler-rt-trunk
+ - win32-compiler-rt-trunk
+ - win64-compiler-rt-trunk
+
+macosx64-clang-trunk-raw:
+ description: "Clang trunk toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TM(clang-trunk-raw)
+ worker-type: b-linux-large-gcp
+ worker:
+ max-run-time: 3600
+ run:
+ script: build-clang.sh
+ arguments:
+ - 'build/build-clang/macosx64.json'
+ - 'build/build-clang/clang-trunk.json'
+ - 'build/build-clang/skip-3-stages.json'
+ - 'build/build-clang/4stages-pgo.json'
+ resources:
+ - 'build/build-clang/macosx64.json'
+ - 'build/build-clang/clang-trunk.json'
+ - 'build/build-clang/skip-3-stages.json'
+ - 'build/build-clang/4stages-pgo.json'
+ toolchain-artifact: public/build/clang.tar.zst
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - linux64-clang-trunk-stage1
+ - linux64-clang-trunk-profile
+ - macosx64-sdk-toolchain
+ - macosx64-x64-compiler-rt-trunk
+
+macosx64-clang-trunk:
+ description: "Clang trunk toolchain repack with MacOS Compiler RT libs"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TM(clang-trunk)
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 600
+ run:
+ script: repack-clang.sh
+ toolchain-alias:
+ by-project:
+ toolchains:
+ - macosx64-clang
+ - macosx64-clang-toolchain
+ default: null
+ toolchain-artifact: public/build/clang.tar.zst
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - macosx64-clang-trunk-raw
+ - android-aarch64-compiler-rt-trunk
+ - android-aarch64-libunwind-trunk
+ - android-arm-compiler-rt-trunk
+ - android-arm-libunwind-trunk
+ - android-x64-compiler-rt-trunk
+ - android-x64-libunwind-trunk
+ - android-x86-compiler-rt-trunk
+ - android-x86-libunwind-trunk
+ - linux64-aarch64-compiler-rt-trunk
+ - linux64-x64-compiler-rt-trunk
+ - linux64-x86-compiler-rt-trunk
+ - macosx64-aarch64-compiler-rt-trunk
+ - macosx64-x64-compiler-rt-trunk
+ - wasm32-wasi-compiler-rt-trunk
+ - win32-compiler-rt-trunk
+ - win64-compiler-rt-trunk
+
+macosx64-aarch64-clang-trunk-raw:
+ description: "Clang trunk toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TM(clang-trunk-aarch64-raw)
+ worker-type: b-linux-large-gcp
+ worker:
+ max-run-time: 3600
+ run:
+ script: build-clang.sh
+ arguments:
+ - 'build/build-clang/macosx64.json'
+ - 'build/build-clang/macosx64-aarch64.json'
+ - 'build/build-clang/clang-trunk.json'
+ - 'build/build-clang/skip-3-stages.json'
+ - 'build/build-clang/4stages-pgo.json'
+ resources:
+ - 'build/build-clang/macosx64.json'
+ - 'build/build-clang/macosx64-aarch64.json'
+ - 'build/build-clang/clang-trunk.json'
+ - 'build/build-clang/skip-3-stages.json'
+ - 'build/build-clang/4stages-pgo.json'
+ toolchain-artifact: public/build/clang.tar.zst
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - linux64-clang-trunk-stage1
+ - linux64-clang-trunk-profile
+ - macosx64-sdk-toolchain
+ - macosx64-aarch64-compiler-rt-trunk
+
+macosx64-aarch64-clang-trunk:
+ description: "Clang trunk toolchain repack with MacOS Compiler RT libs"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TM(clang-trunk-aarch64)
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 600
+ run:
+ script: repack-clang.sh
+ toolchain-alias:
+ by-project:
+ toolchains: macosx64-aarch64-clang
+ default: null
+ toolchain-artifact: public/build/clang.tar.zst
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - macosx64-aarch64-clang-trunk-raw
+ - android-aarch64-compiler-rt-trunk
+ - android-aarch64-libunwind-trunk
+ - android-arm-compiler-rt-trunk
+ - android-arm-libunwind-trunk
+ - android-x64-compiler-rt-trunk
+ - android-x64-libunwind-trunk
+ - android-x86-compiler-rt-trunk
+ - android-x86-libunwind-trunk
+ - linux64-aarch64-compiler-rt-trunk
+ - linux64-x64-compiler-rt-trunk
+ - linux64-x86-compiler-rt-trunk
+ - macosx64-aarch64-compiler-rt-trunk
+ - macosx64-x64-compiler-rt-trunk
+ - wasm32-wasi-compiler-rt-trunk
+ - win32-compiler-rt-trunk
+ - win64-compiler-rt-trunk
+
+win64-clang-trunk-stage1:
+ description: "Clang-cl trunk toolchain build stage 1"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TW64(clang-trunk-stage1)
+ run:
+ script: build-clang.sh
+ arguments:
+ - 'build/build-clang/win64.json'
+ - 'build/build-clang/clang-trunk.json'
+ - 'build/build-clang/1stage.json'
+ resources:
+ - 'build/build-clang/win64.json'
+ - 'build/build-clang/clang-trunk.json'
+ - 'build/build-clang/1stage.json'
+ toolchain-alias:
+ by-project:
+ toolchains: win64-clang-toolchain
+ default: null
+ toolchain-artifact: public/build/clang.tar.zst
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - linux64-clang-trunk-stage1
+ - vs-toolchain
+
+win64-clang-trunk-raw:
+ description: "Clang-cl trunk toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TW64(clang-trunk-raw)
+ worker-type: b-win2012
+ worker:
+ max-run-time: 9000
+ run:
+ script: build-clang.sh
+ arguments:
+ - 'build/build-clang/win64.json'
+ - 'build/build-clang/clang-trunk.json'
+ - 'build/build-clang/skip-stage-1-win64.json'
+ - 'build/build-clang/4stages-pgo.json'
+ resources:
+ - 'build/build-clang/win64.json'
+ - 'build/build-clang/clang-trunk.json'
+ - 'build/build-clang/skip-stage-1-win64.json'
+ - 'build/build-clang/4stages-pgo.json'
+ toolchain-artifact: public/build/clang.tar.zst
+ fetches:
+ fetch:
+ - clang-trunk
+ - cmake
+ - ninja
+ toolchain:
+ - win64-clang-trunk-stage1
+ - win64-compiler-rt-trunk
+ - vs-toolchain
+
+win64-clang-trunk:
+ description: "Clang-cl trunk toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TW64(clang-trunk)
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 600
+ run:
+ script: repack-clang.sh
+ toolchain-alias:
+ by-project:
+ toolchains: win64-clang
+ default: null
+ toolchain-artifact: public/build/clang.tar.zst
+ fetches:
+ toolchain:
+ - linux64-cctools-port
+ - win64-clang-trunk-raw
+ - android-aarch64-compiler-rt-trunk
+ - android-aarch64-libunwind-trunk
+ - android-arm-compiler-rt-trunk
+ - android-arm-libunwind-trunk
+ - android-x64-compiler-rt-trunk
+ - android-x64-libunwind-trunk
+ - android-x86-compiler-rt-trunk
+ - android-x86-libunwind-trunk
+ - linux64-aarch64-compiler-rt-trunk
+ - linux64-x64-compiler-rt-trunk
+ - linux64-x86-compiler-rt-trunk
+ - macosx64-aarch64-compiler-rt-trunk
+ - macosx64-x64-compiler-rt-trunk
+ - wasm32-wasi-compiler-rt-trunk
+ - win32-compiler-rt-trunk
+ - win64-compiler-rt-trunk
diff --git a/taskcluster/ci/toolchain/compiler-rt.yml b/taskcluster/ci/toolchain/compiler-rt.yml
new file mode 100644
index 0000000000..e75e77daf3
--- /dev/null
+++ b/taskcluster/ci/toolchain/compiler-rt.yml
@@ -0,0 +1,462 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1800
+ run:
+ using: toolchain-script
+ script: build-compiler-rt.sh
+
+android-aarch64-compiler-rt-16:
+ description: "android aarch64 Compiler-rt for Clang 16 toolchain build"
+ treeherder:
+ symbol: TA(aarch64-crt-16)
+ run:
+ arguments:
+ - build/build-clang/clang-16.json
+ resources:
+ - build/build-clang/clang-16.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/compiler-rt-aarch64-linux-android.tar.zst
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - linux64-clang-16-stage1
+ - linux64-android-ndk-linux-repack
+
+android-arm-compiler-rt-16:
+ description: "android arm Compiler-rt for Clang 16 toolchain build"
+ treeherder:
+ symbol: TA(arm-crt-16)
+ run:
+ arguments:
+ - build/build-clang/clang-16.json
+ resources:
+ - build/build-clang/clang-16.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/compiler-rt-armv7-linux-android.tar.zst
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - linux64-clang-16-stage1
+ - linux64-android-ndk-linux-repack
+
+android-x86-compiler-rt-16:
+ description: "android x86 Compiler-rt for Clang 16 toolchain build"
+ treeherder:
+ symbol: TA(x86-crt-16)
+ run:
+ arguments:
+ - build/build-clang/clang-16.json
+ resources:
+ - build/build-clang/clang-16.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/compiler-rt-i686-linux-android.tar.zst
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - linux64-clang-16-stage1
+ - linux64-android-ndk-linux-repack
+
+android-x64-compiler-rt-16:
+ description: "android x64 Compiler-rt for Clang 16 toolchain build"
+ treeherder:
+ symbol: TA(x64-crt-16)
+ run:
+ arguments:
+ - build/build-clang/clang-16.json
+ resources:
+ - build/build-clang/clang-16.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/compiler-rt-x86_64-linux-android.tar.zst
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - linux64-clang-16-stage1
+ - linux64-android-ndk-linux-repack
+
+linux64-x86-compiler-rt-16:
+ description: "Linux x86 Compiler-rt for Clang 16 toolchain build"
+ treeherder:
+ symbol: TL(x86-crt-16)
+ run:
+ arguments:
+ - build/build-clang/clang-16.json
+ resources:
+ - build/build-clang/clang-16.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/compiler-rt-i686-unknown-linux-gnu.tar.zst
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - linux64-clang-16-stage1
+ - sysroot-i686-linux-gnu
+
+linux64-x64-compiler-rt-16:
+ description: "Linux x64 Compiler-rt for Clang 16 toolchain build"
+ treeherder:
+ symbol: TL(x64-crt-16)
+ run:
+ arguments:
+ - build/build-clang/clang-16.json
+ resources:
+ - build/build-clang/clang-16.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/compiler-rt-x86_64-unknown-linux-gnu.tar.zst
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - linux64-clang-16-stage1
+ - sysroot-x86_64-linux-gnu
+
+linux64-aarch64-compiler-rt-16:
+ description: "Linux aarch64 Compiler-rt for Clang 16 toolchain build"
+ treeherder:
+ symbol: TL(aarch64-crt-16)
+ run:
+ arguments:
+ - build/build-clang/clang-16.json
+ resources:
+ - build/build-clang/clang-16.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/compiler-rt-aarch64-unknown-linux-gnu.tar.zst
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - linux64-clang-16-stage1
+ - sysroot-aarch64-linux-gnu
+
+macosx64-x64-compiler-rt-16:
+ description: "macOS x64 Compiler-rt for Clang 16 toolchain build"
+ treeherder:
+ symbol: TM(x64-crt-16)
+ run:
+ arguments:
+ - build/build-clang/clang-16.json
+ resources:
+ - build/build-clang/clang-16.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/compiler-rt-x86_64-apple-darwin.tar.zst
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - linux64-clang-16-stage1
+ - macosx64-sdk-toolchain
+
+macosx64-aarch64-compiler-rt-16:
+ description: "macOS aarch64 Compiler-rt for Clang 16 toolchain build"
+ treeherder:
+ symbol: TM(aarch64-crt-16)
+ run:
+ arguments:
+ - build/build-clang/clang-16.json
+ resources:
+ - build/build-clang/clang-16.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/compiler-rt-aarch64-apple-darwin.tar.zst
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - linux64-clang-16-stage1
+ - macosx64-sdk-toolchain
+
+win32-compiler-rt-16:
+ description: "win32 x86 Compiler-rt for Clang 16 toolchain build"
+ treeherder:
+ symbol: TW32(crt-16)
+ run:
+ arguments:
+ - build/build-clang/clang-16.json
+ resources:
+ - build/build-clang/clang-16.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/compiler-rt-i686-pc-windows-msvc.tar.zst
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - linux64-clang-16-stage1
+ - vs-toolchain
+
+win64-compiler-rt-16:
+ description: "win64 x64 Compiler-rt for Clang 16 toolchain build"
+ treeherder:
+ symbol: TW64(crt-16)
+ run:
+ arguments:
+ - build/build-clang/clang-16.json
+ resources:
+ - build/build-clang/clang-16.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/compiler-rt-x86_64-pc-windows-msvc.tar.zst
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - linux64-clang-16-stage1
+ - vs-toolchain
+
+wasm32-wasi-compiler-rt-16:
+ description: "wasm32-wasi Compiler-rt for Clang 16 toolchain build"
+ treeherder:
+ symbol: TL(wasi-crt-16)
+ worker-type: b-linux-xlarge-gcp
+ run:
+ script: build-compiler-rt-wasi.sh
+ toolchain-artifact: public/build/compiler-rt-wasm32-wasi.tar.zst
+ toolchain-alias: wasm32-wasi-compiler-rt
+ fetches:
+ fetch:
+ - clang-16
+ - wasi-sdk
+ toolchain:
+ - linux64-clang-16-stage1
+
+android-aarch64-compiler-rt-trunk:
+ description: "android aarch64 Compiler-rt for Clang trunk toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TA(aarch64-crt-trunk)
+ run:
+ arguments:
+ - build/build-clang/clang-trunk.json
+ resources:
+ - build/build-clang/clang-trunk.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/compiler-rt-aarch64-linux-android.tar.zst
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - linux64-clang-trunk-stage1
+ - linux64-android-ndk-linux-repack
+
+android-arm-compiler-rt-trunk:
+ description: "android arm Compiler-rt for Clang trunk toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TA(arm-crt-trunk)
+ run:
+ arguments:
+ - build/build-clang/clang-trunk.json
+ resources:
+ - build/build-clang/clang-trunk.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/compiler-rt-armv7-linux-android.tar.zst
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - linux64-clang-trunk-stage1
+ - linux64-android-ndk-linux-repack
+
+android-x86-compiler-rt-trunk:
+ description: "android x86 Compiler-rt for Clang trunk toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TA(x86-crt-trunk)
+ run:
+ arguments:
+ - build/build-clang/clang-trunk.json
+ resources:
+ - build/build-clang/clang-trunk.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/compiler-rt-i686-linux-android.tar.zst
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - linux64-clang-trunk-stage1
+ - linux64-android-ndk-linux-repack
+
+android-x64-compiler-rt-trunk:
+ description: "android x64 Compiler-rt for Clang trunk toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TA(x64-crt-trunk)
+ run:
+ arguments:
+ - build/build-clang/clang-trunk.json
+ resources:
+ - build/build-clang/clang-trunk.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/compiler-rt-x86_64-linux-android.tar.zst
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - linux64-clang-trunk-stage1
+ - linux64-android-ndk-linux-repack
+
+linux64-x86-compiler-rt-trunk:
+ description: "Linux x86 Compiler-rt for Clang trunk toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TL(x86-crt-trunk)
+ run:
+ arguments:
+ - build/build-clang/clang-trunk.json
+ resources:
+ - build/build-clang/clang-trunk.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/compiler-rt-i686-unknown-linux-gnu.tar.zst
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - linux64-clang-trunk-stage1
+ - sysroot-i686-linux-gnu
+
+linux64-x64-compiler-rt-trunk:
+ description: "Linux x64 Compiler-rt for Clang trunk toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TL(x64-crt-trunk)
+ run:
+ arguments:
+ - build/build-clang/clang-trunk.json
+ resources:
+ - build/build-clang/clang-trunk.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/compiler-rt-x86_64-unknown-linux-gnu.tar.zst
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - linux64-clang-trunk-stage1
+ - sysroot-x86_64-linux-gnu
+
+linux64-aarch64-compiler-rt-trunk:
+ description: "Linux aarch64 Compiler-rt for Clang trunk toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TL(aarch64-crt-trunk)
+ run:
+ arguments:
+ - build/build-clang/clang-trunk.json
+ resources:
+ - build/build-clang/clang-trunk.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/compiler-rt-aarch64-unknown-linux-gnu.tar.zst
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - linux64-clang-trunk-stage1
+ - sysroot-aarch64-linux-gnu
+
+macosx64-x64-compiler-rt-trunk:
+ description: "macOS x64 Compiler-rt for Clang trunk toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TM(x64-crt-trunk)
+ run:
+ arguments:
+ - build/build-clang/clang-trunk.json
+ resources:
+ - build/build-clang/clang-trunk.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/compiler-rt-x86_64-apple-darwin.tar.zst
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - linux64-clang-trunk-stage1
+ - macosx64-sdk-toolchain
+
+macosx64-aarch64-compiler-rt-trunk:
+ description: "macOS aarch64 Compiler-rt for Clang trunk toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TM(aarch64-crt-trunk)
+ run:
+ arguments:
+ - build/build-clang/clang-trunk.json
+ resources:
+ - build/build-clang/clang-trunk.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/compiler-rt-aarch64-apple-darwin.tar.zst
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - linux64-clang-trunk-stage1
+ - macosx64-sdk-toolchain
+
+win32-compiler-rt-trunk:
+ description: "win32 x86 Compiler-rt for Clang trunk toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TW32(crt-trunk)
+ run:
+ arguments:
+ - build/build-clang/clang-trunk.json
+ resources:
+ - build/build-clang/clang-trunk.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/compiler-rt-i686-pc-windows-msvc.tar.zst
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - linux64-clang-trunk-stage1
+ - vs-toolchain
+
+win64-compiler-rt-trunk:
+ description: "win64 x64 Compiler-rt for Clang trunk toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TW64(crt-trunk)
+ run:
+ arguments:
+ - build/build-clang/clang-trunk.json
+ resources:
+ - build/build-clang/clang-trunk.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/compiler-rt-x86_64-pc-windows-msvc.tar.zst
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - linux64-clang-trunk-stage1
+ - vs-toolchain
+
+wasm32-wasi-compiler-rt-trunk:
+ description: "wasm32-wasi Compiler-rt for Clang trunk toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TL(wasi-crt-trunk)
+ worker-type: b-linux-xlarge-gcp
+ run:
+ script: build-compiler-rt-wasi.sh
+ toolchain-artifact: public/build/compiler-rt-wasm32-wasi.tar.zst
+ fetches:
+ fetch:
+ - clang-trunk
+ - wasi-sdk
+ toolchain:
+ - linux64-clang-trunk-stage1
diff --git a/taskcluster/ci/toolchain/dist-toolchains.yml b/taskcluster/ci/toolchain/dist-toolchains.yml
new file mode 100644
index 0000000000..31b60918e6
--- /dev/null
+++ b/taskcluster/ci/toolchain/dist-toolchains.yml
@@ -0,0 +1,40 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ description: "sccache-dist toolchain archive build"
+ attributes:
+ local-toolchain: true
+ worker-type: b-linux-gcp
+ run:
+ using: toolchain-script
+ script: build-dist-toolchains.sh
+
+clang-dist-toolchain:
+ treeherder:
+ symbol: TL(clang-dist)
+ worker:
+ max-run-time: 1800
+ run:
+ arguments: ['clang']
+ toolchain-artifact: public/build/clang-dist-toolchain.tar.xz
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-sccache
+
+rustc-dist-toolchain:
+ treeherder:
+ symbol: TL(rustc-dist)
+ worker:
+ max-run-time: 1800
+ run:
+ arguments: ['rustc']
+ toolchain-artifact: public/build/rustc-dist-toolchain.tar.xz
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-rust-cross
+ - linux64-sccache
diff --git a/taskcluster/ci/toolchain/dump-syms.yml b/taskcluster/ci/toolchain/dump-syms.yml
new file mode 100644
index 0000000000..95e90b5984
--- /dev/null
+++ b/taskcluster/ci/toolchain/dump-syms.yml
@@ -0,0 +1,62 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ attributes:
+ local-toolchain: true
+ description: "dump_syms toolchain build"
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1800
+ run:
+ script: build-rust-based-toolchain.sh
+ toolchain-artifact: public/build/dump_syms.tar.zst
+ fetches:
+ fetch:
+ - dump-syms
+
+linux64-dump_syms:
+ treeherder:
+ symbol: TL(dump_syms)
+ run:
+ arguments: ['x86_64-unknown-linux-gnu']
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-toolchain
+ - sysroot-x86_64-linux-gnu
+
+macosx64-dump_syms:
+ treeherder:
+ symbol: TM(dump_syms)
+ worker-type: b-linux-gcp
+ run:
+ arguments: ['x86_64-apple-darwin']
+ fetches:
+ toolchain:
+ - linux64-rust-macos-toolchain
+ - linux64-clang-toolchain
+ - macosx64-sdk-toolchain
+
+macosx64-aarch64-dump_syms:
+ treeherder:
+ symbol: TM(dump_syms-arm64)
+ run:
+ arguments: ['aarch64-apple-darwin']
+ fetches:
+ toolchain:
+ - linux64-rust-macos-toolchain
+ - linux64-clang-toolchain
+ - macosx64-sdk-toolchain
+
+win64-dump_syms:
+ treeherder:
+ symbol: TW64(dump_syms)
+ run:
+ arguments: ['x86_64-pc-windows-msvc']
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-windows-toolchain
+ - vs-toolchain
diff --git a/taskcluster/ci/toolchain/fix-stacks.yml b/taskcluster/ci/toolchain/fix-stacks.yml
new file mode 100644
index 0000000000..e11bf0b166
--- /dev/null
+++ b/taskcluster/ci/toolchain/fix-stacks.yml
@@ -0,0 +1,72 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ description: "fix-stacks toolchain build"
+ attributes:
+ local-toolchain: true
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1800
+ run:
+ script: build-rust-based-toolchain.sh
+ toolchain-artifact: public/build/fix-stacks.tar.zst
+ fetches:
+ fetch:
+ - fix-stacks
+
+linux64-fix-stacks:
+ treeherder:
+ symbol: TL(fix-stacks)
+ run:
+ arguments: ['x86_64-unknown-linux-gnu']
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-toolchain
+ - sysroot-x86_64-linux-gnu
+
+macosx64-fix-stacks:
+ treeherder:
+ symbol: TM(fix-stacks)
+ run:
+ arguments: ['x86_64-apple-darwin']
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-macos-toolchain
+ - macosx64-sdk-toolchain
+
+macosx64-aarch64-fix-stacks:
+ treeherder:
+ symbol: TM(fix-stacks-arm64)
+ run:
+ arguments: ['aarch64-apple-darwin']
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-macos-toolchain
+ - macosx64-sdk-toolchain
+
+win32-fix-stacks:
+ treeherder:
+ symbol: TW32(fix-stacks)
+ run:
+ arguments: ['i686-pc-windows-msvc']
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-windows-toolchain
+ - vs-toolchain
+
+win64-fix-stacks:
+ treeherder:
+ symbol: TW64(fix-stacks)
+ run:
+ arguments: ['x86_64-pc-windows-msvc']
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-windows-toolchain
+ - vs-toolchain
diff --git a/taskcluster/ci/toolchain/gcc.yml b/taskcluster/ci/toolchain/gcc.yml
new file mode 100644
index 0000000000..2a09c37e6c
--- /dev/null
+++ b/taskcluster/ci/toolchain/gcc.yml
@@ -0,0 +1,79 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 3600
+ run:
+ resources:
+ - 'build/unix/build-gcc/build-gcc.sh'
+ toolchain-artifact: public/build/gcc.tar.zst
+ fetches:
+ toolchain:
+ - linux64-toolchain-sysroot
+
+linux64-gcc-8:
+ description: "GCC 8 toolchain build"
+ treeherder:
+ symbol: TL(gcc8)
+ run:
+ script: build-gcc-linux.sh
+ toolchain-alias:
+ - linux64-gcc
+ - linux64-gcc-base
+ fetches:
+ fetch:
+ - gcc-8.5.0
+ - gmp-6.1.0
+ - isl-0.16.1
+ - mpc-1.0.3
+ - mpfr-3.1.4
+
+linux64-gcc-9:
+ description: "GCC 9 toolchain build"
+ treeherder:
+ symbol: TL(gcc9)
+ run:
+ script: build-gcc-linux.sh
+ fetches:
+ fetch:
+ - gcc-9.5.0
+ - gmp-6.1.0
+ - isl-0.16.1
+ - mpc-1.0.3
+ - mpfr-3.1.4
+
+linux64-gcc-11:
+ description: "GCC 11 toolchain build"
+ treeherder:
+ symbol: TL(gcc11)
+ run:
+ script: build-gcc-linux.sh
+ fetches:
+ fetch:
+ - gcc-11.4.0
+ - gmp-6.1.0
+ - isl-0.16.1
+ - mpc-1.0.3
+ - mpfr-3.1.4
+
+linux64-gcc-sixgill:
+ description: "sixgill GCC plugin build"
+ treeherder:
+ symbol: TL(sixgill)
+ run:
+ script: build-gcc-sixgill-plugin-linux.sh
+ resources:
+ - 'taskcluster/scripts/misc/build-gcc-sixgill-plugin-linux.sh'
+ toolchain-artifact: public/build/sixgill.tar.xz
+ fetches:
+ fetch:
+ - gcc-9.5.0
+ - gmp-6.1.0
+ - isl-0.16.1
+ - mpc-1.0.3
+ - mpfr-3.1.4
+ toolchain:
+ - linux64-gcc-9
diff --git a/taskcluster/ci/toolchain/geckodriver.yml b/taskcluster/ci/toolchain/geckodriver.yml
new file mode 100644
index 0000000000..252befa3fb
--- /dev/null
+++ b/taskcluster/ci/toolchain/geckodriver.yml
@@ -0,0 +1,137 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ description: "geckodriver toolchain build"
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1800
+ run-on-projects: ['trunk']
+ attributes:
+ build_type: opt
+ geckodriver: true
+ shippable: true
+ rebuild-on-release: true
+ run:
+ script: build-geckodriver.sh
+ toolchain-artifact: public/build/geckodriver.tar.gz
+ sparse-profile: null
+ resources:
+ - 'testing/geckodriver'
+ - 'testing/mozbase/rust'
+ - 'testing/webdriver'
+ # Changes to 'third_party/rust' should be captured by
+ # 'testing/geckodriver/Cargo.toml'.
+
+# For Linux platforms target "*-musl" so that the binary will be statically linked.
+
+linux32-geckodriver:
+ treeherder:
+ symbol: TL32(gd)
+ platform: linux32/opt
+ run:
+ arguments: ['i686-unknown-linux-musl']
+ attributes:
+ build_platform: linux-geckodriver
+ fetches:
+ toolchain:
+ - linux64-rust-static
+
+linux64-geckodriver:
+ treeherder:
+ symbol: TL(gd)
+ platform: linux64/opt
+ run:
+ arguments: ['x86_64-unknown-linux-musl']
+ attributes:
+ build_platform: linux64-geckodriver
+ fetches:
+ toolchain:
+ - linux64-rust-static
+
+linux64-aarch64-geckodriver:
+ treeherder:
+ symbol: TL(gd)
+ platform: linux64-aarch64/opt
+ run:
+ arguments: ['aarch64-unknown-linux-musl']
+ attributes:
+ build_platform: linux64-aarch64-geckodriver
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-static
+
+macosx64-geckodriver:
+ treeherder:
+ symbol: TM(gd)
+ platform: macosx64/opt
+ run:
+ arguments: ['x86_64-apple-darwin']
+ attributes:
+ build_platform: macosx64-geckodriver
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-macos
+ - macosx64-sdk-toolchain
+
+macosx64-aarch64-geckodriver:
+ treeherder:
+ symbol: TM(gd)
+ platform: macosx64-aarch64/opt
+ run:
+ arguments: ['aarch64-apple-darwin']
+ attributes:
+ build_platform: macosx64-aarch64-geckodriver
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-macos
+ - macosx64-sdk-toolchain
+
+win32-geckodriver:
+ treeherder:
+ symbol: TW32(gd)
+ platform: win32/opt
+ run:
+ arguments: ['i686-pc-windows-msvc']
+ toolchain-artifact: public/build/geckodriver.zip
+ attributes:
+ build_platform: win32-geckodriver
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-windows
+ - vs-toolchain
+
+win64-aarch64-geckodriver:
+ treeherder:
+ symbol: TW64(gd)
+ platform: windows2012-aarch64/opt
+ run:
+ arguments: ['aarch64-pc-windows-msvc']
+ toolchain-artifact: public/build/geckodriver.zip
+ attributes:
+ build_platform: win64-aarch64-geckodriver
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-windows
+ - vs-toolchain
+
+win64-geckodriver:
+ treeherder:
+ symbol: TW64(gd)
+ platform: win64/opt
+ run:
+ arguments: ['x86_64-pc-windows-msvc']
+ toolchain-artifact: public/build/geckodriver.zip
+ attributes:
+ build_platform: win64-geckodriver
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-windows
+ - vs-toolchain
diff --git a/taskcluster/ci/toolchain/gn.yml b/taskcluster/ci/toolchain/gn.yml
new file mode 100644
index 0000000000..315785e425
--- /dev/null
+++ b/taskcluster/ci/toolchain/gn.yml
@@ -0,0 +1,49 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ description: "gn toolchain build"
+ attributes:
+ local-toolchain: true
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1800
+ run:
+ resources:
+ - 'taskcluster/scripts/misc/build-gn-common.sh'
+ toolchain-artifact: public/build/gn.tar.zst
+ fetches:
+ fetch:
+ - gn
+
+linux64-gn:
+ treeherder:
+ symbol: TL(gn)
+ run:
+ script: build-gn-linux.sh
+
+macosx64-gn:
+ treeherder:
+ symbol: TM(gn)
+ run:
+ script: build-gn-macosx.sh
+ toolchain-alias: macosx64-aarch64-gn
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - macosx64-sdk-toolchain
+
+win64-gn:
+ treeherder:
+ symbol: TW64(gn)
+ worker-type: b-win2012
+ worker:
+ max-run-time: 3600
+ run:
+ script: build-gn-win64.sh
+ fetches:
+ fetch:
+ - ninja
+ toolchain:
+ - vs-toolchain
diff --git a/taskcluster/ci/toolchain/grcov.yml b/taskcluster/ci/toolchain/grcov.yml
new file mode 100644
index 0000000000..15fed68732
--- /dev/null
+++ b/taskcluster/ci/toolchain/grcov.yml
@@ -0,0 +1,48 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ description: "grcov toolchain build"
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1800
+ run:
+ script: build-rust-based-toolchain.sh
+ toolchain-artifact: public/build/grcov.tar.zst
+ fetches:
+ fetch:
+ - grcov
+
+linux64-grcov:
+ treeherder:
+ symbol: TL(grcov)
+ run:
+ arguments: ['x86_64-unknown-linux-gnu']
+ fetches:
+ toolchain:
+ - linux64-rust-toolchain
+ - linux64-clang-toolchain
+ - sysroot-x86_64-linux-gnu
+
+macosx64-grcov:
+ treeherder:
+ symbol: TM(grcov)
+ run:
+ arguments: ['x86_64-apple-darwin']
+ fetches:
+ toolchain:
+ - linux64-rust-macos-toolchain
+ - linux64-clang-toolchain
+ - macosx64-sdk-toolchain
+
+win64-grcov:
+ treeherder:
+ symbol: TW64(grcov)
+ run:
+ arguments: ['x86_64-pc-windows-msvc']
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-windows-toolchain
+ - vs-toolchain
diff --git a/taskcluster/ci/toolchain/kind.yml b/taskcluster/ci/toolchain/kind.yml
new file mode 100644
index 0000000000..d9dd52c980
--- /dev/null
+++ b/taskcluster/ci/toolchain/kind.yml
@@ -0,0 +1,54 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - fetch
+ - packages
+
+transforms:
+ - gecko_taskgraph.transforms.try_job:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.cached_tasks:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ treeherder:
+ kind: build
+ platform: toolchains/opt
+ tier: 1
+ run-on-projects: []
+ run:
+ using: toolchain-script
+
+jobs-from:
+ - android.yml
+ - cargo-vet.yml
+ - cbindgen.yml
+ - clang-tidy.yml
+ - clang.yml
+ - compiler-rt.yml
+ - dump-syms.yml
+ - fix-stacks.yml
+ - gcc.yml
+ - geckodriver.yml
+ - gn.yml
+ - grcov.yml
+ - libunwind.yml
+ - llvm-symbolizer.yml
+ - macos-sdk.yml
+ - mingw.yml
+ - minidump-stackwalk.yml
+ - misc.yml
+ - nasm.yml
+ - node.yml
+ - pkgconf.yml
+ - python.yml
+ - resourcemonitor.yml
+ - rust.yml
+ - rust-size.yml
+ - sccache.yml
+ - sysroot.yml
+ - dist-toolchains.yml
diff --git a/taskcluster/ci/toolchain/libunwind.yml b/taskcluster/ci/toolchain/libunwind.yml
new file mode 100644
index 0000000000..78f9944856
--- /dev/null
+++ b/taskcluster/ci/toolchain/libunwind.yml
@@ -0,0 +1,171 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1800
+ run:
+ using: toolchain-script
+ script: build-libunwind.sh
+
+android-aarch64-libunwind-16:
+ description: "android aarch64 libunwind for Clang 16 toolchain build"
+ treeherder:
+ symbol: TA(aarch64-unwind-16)
+ run:
+ arguments:
+ - build/build-clang/clang-16.json
+ resources:
+ - build/build-clang/clang-16.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/libunwind-aarch64-linux-android.tar.zst
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - android-aarch64-compiler-rt-16
+ - linux64-clang-16-stage1
+ - linux64-android-ndk-linux-repack
+
+android-arm-libunwind-16:
+ description: "android arm libunwind for Clang 16 toolchain build"
+ treeherder:
+ symbol: TA(arm-unwind-16)
+ run:
+ arguments:
+ - build/build-clang/clang-16.json
+ resources:
+ - build/build-clang/clang-16.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/libunwind-armv7-linux-android.tar.zst
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - android-arm-compiler-rt-16
+ - linux64-clang-16-stage1
+ - linux64-android-ndk-linux-repack
+
+android-x86-libunwind-16:
+ description: "android x86 libunwind for Clang 16 toolchain build"
+ treeherder:
+ symbol: TA(x86-unwind-16)
+ run:
+ arguments:
+ - build/build-clang/clang-16.json
+ resources:
+ - build/build-clang/clang-16.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/libunwind-i686-linux-android.tar.zst
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - android-x86-compiler-rt-16
+ - linux64-clang-16-stage1
+ - linux64-android-ndk-linux-repack
+
+android-x64-libunwind-16:
+ description: "android x64 libunwind for Clang 16 toolchain build"
+ treeherder:
+ symbol: TA(x64-unwind-16)
+ run:
+ arguments:
+ - build/build-clang/clang-16.json
+ resources:
+ - build/build-clang/clang-16.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/libunwind-x86_64-linux-android.tar.zst
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - android-x64-compiler-rt-16
+ - linux64-clang-16-stage1
+ - linux64-android-ndk-linux-repack
+
+android-aarch64-libunwind-trunk:
+ description: "android aarch64 libunwind for Clang trunk toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TA(aarch64-unwind-trunk)
+ run:
+ arguments:
+ - build/build-clang/clang-trunk.json
+ resources:
+ - build/build-clang/clang-trunk.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/libunwind-aarch64-linux-android.tar.zst
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - android-aarch64-compiler-rt-trunk
+ - linux64-clang-trunk-stage1
+ - linux64-android-ndk-linux-repack
+
+android-arm-libunwind-trunk:
+ description: "android arm libunwind for Clang trunk toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TA(arm-unwind-trunk)
+ run:
+ arguments:
+ - build/build-clang/clang-trunk.json
+ resources:
+ - build/build-clang/clang-trunk.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/libunwind-armv7-linux-android.tar.zst
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - android-arm-compiler-rt-trunk
+ - linux64-clang-trunk-stage1
+ - linux64-android-ndk-linux-repack
+
+android-x86-libunwind-trunk:
+ description: "android x86 libunwind for Clang trunk toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TA(x86-unwind-trunk)
+ run:
+ arguments:
+ - build/build-clang/clang-trunk.json
+ resources:
+ - build/build-clang/clang-trunk.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/libunwind-i686-linux-android.tar.zst
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - android-x86-compiler-rt-trunk
+ - linux64-clang-trunk-stage1
+ - linux64-android-ndk-linux-repack
+
+android-x64-libunwind-trunk:
+ description: "android x64 libunwind for Clang trunk toolchain build"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TA(x64-unwind-trunk)
+ run:
+ arguments:
+ - build/build-clang/clang-trunk.json
+ resources:
+ - build/build-clang/clang-trunk.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-artifact: public/build/libunwind-x86_64-linux-android.tar.zst
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - android-x64-compiler-rt-trunk
+ - linux64-clang-trunk-stage1
+ - linux64-android-ndk-linux-repack
diff --git a/taskcluster/ci/toolchain/llvm-symbolizer.yml b/taskcluster/ci/toolchain/llvm-symbolizer.yml
new file mode 100644
index 0000000000..e49f699f47
--- /dev/null
+++ b/taskcluster/ci/toolchain/llvm-symbolizer.yml
@@ -0,0 +1,241 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ worker-type: b-linux-large-gcp
+ worker:
+ max-run-time: 1800
+ run:
+ script: build-llvm-symbolizer.sh
+ toolchain-artifact: public/build/llvm-symbolizer.tar.zst
+
+linux32-llvm-symbolizer-16:
+ description: "llvm-symbolizer for Linux"
+ treeherder:
+ symbol: TL32(llvm-symbolizer)
+ run:
+ arguments:
+ - i686-unknown-linux-gnu
+ - build/build-clang/clang-16.json
+ resources:
+ - build/build-clang/clang-16.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-alias:
+ by-project:
+ toolchains: null
+ default: linux32-llvm-symbolizer
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - linux64-clang-16-stage1
+ - linux32-toolchain-sysroot
+
+linux64-llvm-symbolizer-16:
+ description: "llvm-symbolizer for Linux"
+ treeherder:
+ symbol: TL(llvm-symbolizer)
+ run:
+ arguments:
+ - x86_64-unknown-linux-gnu
+ - build/build-clang/clang-16.json
+ resources:
+ - build/build-clang/clang-16.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-alias:
+ by-project:
+ toolchains: null
+ default: linux64-llvm-symbolizer
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - linux64-clang-16-stage1
+ - linux64-toolchain-sysroot
+
+macosx64-llvm-symbolizer-16:
+ description: "llvm-symbolizer for macOS x64"
+ treeherder:
+ symbol: TM(llvm-symbolizer)
+ run:
+ arguments:
+ - x86_64-apple-darwin
+ - build/build-clang/clang-16.json
+ resources:
+ - build/build-clang/clang-16.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-alias:
+ by-project:
+ toolchains: null
+ default: macosx64-llvm-symbolizer
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - linux64-clang-16-stage1
+ - macosx64-sdk-toolchain
+
+macosx64-aarch64-llvm-symbolizer-16:
+ description: "llvm-symbolizer for macOS aarch64"
+ treeherder:
+ symbol: TM(llvm-symbolizer-aarch64)
+ run:
+ arguments:
+ - aarch64-apple-darwin
+ - build/build-clang/clang-16.json
+ resources:
+ - build/build-clang/clang-16.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-alias:
+ by-project:
+ toolchains: null
+ default: macosx64-aarch64-llvm-symbolizer
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - linux64-clang-16-stage1
+ - macosx64-sdk-toolchain
+
+win64-llvm-symbolizer-16:
+ description: "llvm-symbolizer for Windows"
+ treeherder:
+ symbol: TW64(llvm-symbolizer)
+ run:
+ arguments:
+ - x86_64-pc-windows-msvc
+ - build/build-clang/clang-16.json
+ resources:
+ - build/build-clang/clang-16.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-alias:
+ by-project:
+ toolchains: null
+ default: win64-llvm-symbolizer
+ fetches:
+ fetch:
+ - clang-16
+ toolchain:
+ - linux64-clang-16-stage1
+ - vs-toolchain
+
+linux32-llvm-symbolizer-trunk:
+ description: "llvm-symbolizer for Linux"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TL32(llvm-symbolizer-trunk)
+ run:
+ arguments:
+ - i686-unknown-linux-gnu
+ - build/build-clang/clang-trunk.json
+ resources:
+ - build/build-clang/clang-trunk.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-alias:
+ by-project:
+ toolchains: linux32-llvm-symbolizer
+ default: null
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - linux64-clang-trunk-stage1
+ - linux32-toolchain-sysroot
+
+linux64-llvm-symbolizer-trunk:
+ description: "llvm-symbolizer for Linux"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TL(llvm-symbolizer-trunk)
+ run:
+ arguments:
+ - x86_64-unknown-linux-gnu
+ - build/build-clang/clang-trunk.json
+ resources:
+ - build/build-clang/clang-trunk.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-alias:
+ by-project:
+ toolchains: linux64-llvm-symbolizer
+ default: null
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - linux64-clang-trunk-stage1
+ - linux64-toolchain-sysroot
+
+macosx64-llvm-symbolizer-trunk:
+ description: "llvm-symbolizer for macOS x64"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TM(llvm-symbolizer-trunk)
+ run:
+ arguments:
+ - x86_64-apple-darwin
+ - build/build-clang/clang-trunk.json
+ resources:
+ - build/build-clang/clang-trunk.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-alias:
+ by-project:
+ toolchains: macosx64-llvm-symbolizer
+ default: null
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - linux64-clang-trunk-stage1
+ - macosx64-sdk-toolchain
+
+macosx64-aarch64-llvm-symbolizer-trunk:
+ description: "llvm-symbolizer for macOS aarch64"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TM(llvm-sym-aarch64-trunk)
+ run:
+ arguments:
+ - aarch64-apple-darwin
+ - build/build-clang/clang-trunk.json
+ resources:
+ - build/build-clang/clang-trunk.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-alias:
+ by-project:
+ toolchains: macosx64-aarch64-llvm-symbolizer
+ default: null
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - linux64-clang-trunk-stage1
+ - macosx64-sdk-toolchain
+
+win64-llvm-symbolizer-trunk:
+ description: "llvm-symbolizer for Windows"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TW64(llvm-symbolizer-trunk)
+ run:
+ arguments:
+ - x86_64-pc-windows-msvc
+ - build/build-clang/clang-trunk.json
+ resources:
+ - build/build-clang/clang-trunk.json
+ - taskcluster/scripts/misc/build-llvm-common.sh
+ toolchain-alias:
+ by-project:
+ toolchains: win64-llvm-symbolizer
+ default: null
+ fetches:
+ fetch:
+ - clang-trunk
+ toolchain:
+ - linux64-clang-trunk-stage1
+ - vs-toolchain
diff --git a/taskcluster/ci/toolchain/macos-sdk.yml b/taskcluster/ci/toolchain/macos-sdk.yml
new file mode 100644
index 0000000000..8dd60e31b3
--- /dev/null
+++ b/taskcluster/ci/toolchain/macos-sdk.yml
@@ -0,0 +1,34 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ attributes:
+ local-toolchain: true
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1800
+ env:
+ PATH: "/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin"
+ run:
+ script: unpack-sdk.py
+ resources:
+ - python/mozbuild/mozpack/macpkg.py
+ - taskcluster/scripts/misc/unpack-sdk.py
+ # Expiry similar to that of fetches
+ expires-after: 1000 years
+
+macosx64-sdk-13.3:
+ description: "MacOSX13.3 SDK"
+ treeherder:
+ symbol: TM(sdk13.3)
+ run:
+ arguments:
+ - https://swcdn.apple.com/content/downloads/15/62/032-84673-A_7A1TG1RF8Z/xpc8q44ggn2pkn82iwr0fi1zeb9cxi8ath/CLTools_macOSNMOS_SDK.pkg
+ - c33545d543a38911aee2a65d4bf7ff4932c12de1e6a042ae38e6415f65a10710
+ - Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk
+ toolchain-artifact: project/gecko/mac-sdk/MacOSX13.3.sdk.tar.zst
+ toolchain-alias:
+ - macosx64-sdk
+ - macosx64-sdk-toolchain
+ - MacOSX13.3.sdk
diff --git a/taskcluster/ci/toolchain/mingw.yml b/taskcluster/ci/toolchain/mingw.yml
new file mode 100644
index 0000000000..b0573ac47b
--- /dev/null
+++ b/taskcluster/ci/toolchain/mingw.yml
@@ -0,0 +1,42 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ treeherder:
+ tier: 2
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 3600
+
+linux64-mingw32-nsis:
+ description: "NSIS build for MinGW32 Cross Compile"
+ treeherder:
+ symbol: TMW(mingw32-nsis)
+ run:
+ script: build-mingw32-nsis.sh
+ toolchain-artifact: public/build/nsis.tar.zst
+ fetches:
+ fetch:
+ - nsis-3.07
+ - zlib-1.2.13
+ toolchain:
+ - linux64-binutils
+ - linux64-clang-mingw-x86
+ - sysroot-x86_64-linux-gnu
+
+linux64-mingw-fxc2-x86:
+ description: "fxc2.exe x86 build for MinGW Cross Compile"
+ treeherder:
+ symbol: TMW(mingw-fxc2-x86)
+ worker:
+ max-run-time: 1800
+ run:
+ using: toolchain-script
+ script: build-mingw-fxc2-x86.sh
+ toolchain-artifact: public/build/fxc2.tar.zst
+ fetches:
+ fetch:
+ - fxc2
+ toolchain:
+ - linux64-clang-mingw-x86
diff --git a/taskcluster/ci/toolchain/minidump-stackwalk.yml b/taskcluster/ci/toolchain/minidump-stackwalk.yml
new file mode 100644
index 0000000000..f0f9b3e70c
--- /dev/null
+++ b/taskcluster/ci/toolchain/minidump-stackwalk.yml
@@ -0,0 +1,96 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ description: "minidump-stackwalk toolchain build"
+ attributes:
+ local-toolchain: true
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1800
+ env:
+ FETCH: rust-minidump/minidump-stackwalk
+ run:
+ script: build-rust-based-toolchain.sh
+ toolchain-artifact: public/build/minidump-stackwalk.tar.zst
+ fetches:
+ fetch:
+ - rust-minidump
+
+linux64-minidump-stackwalk:
+ treeherder:
+ symbol: TL(stackwalk)
+ run:
+ arguments: ['x86_64-unknown-linux-gnu']
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-toolchain
+ - sysroot-x86_64-linux-gnu
+
+macosx64-minidump-stackwalk:
+ treeherder:
+ symbol: TM(stackwalk)
+ run:
+ arguments: ['x86_64-apple-darwin']
+ fetches:
+ toolchain:
+ - linux64-rust-macos-toolchain
+ - linux64-clang-toolchain
+ - macosx64-sdk-toolchain
+
+macosx64-aarch64-minidump-stackwalk:
+ treeherder:
+ symbol: TM(stackwalk-arm64)
+ run:
+ arguments: ['aarch64-apple-darwin']
+ fetches:
+ toolchain:
+ - linux64-rust-macos-toolchain
+ - linux64-clang-toolchain
+ - macosx64-sdk-toolchain
+
+win32-minidump-stackwalk:
+ treeherder:
+ symbol: TW32(stackwalk)
+ run:
+ arguments: ['i686-pc-windows-msvc']
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-windows-toolchain
+ - vs-toolchain
+
+win64-minidump-stackwalk:
+ treeherder:
+ symbol: TW64(stackwalk)
+ run:
+ arguments: ['x86_64-pc-windows-msvc']
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-windows-toolchain
+ - vs-toolchain
+
+# This is a totally different thing but it used to share common code with
+# minidump-stackwalk, so it lives here for historical reasons.
+linux64-breakpad-injector:
+ description: "breakpad injector toolchain build"
+ run:
+ script: build-breakpad-injector.sh
+ toolchain-artifact: public/build/injector.tar.zst
+ sparse-profile: null
+ resources:
+ - 'build/moz.configure'
+ - 'config/external/zlib'
+ - 'moz.configure'
+ - 'toolkit/crashreporter'
+ - 'toolkit/crashreporter/google-breakpad/src/processor'
+ - 'tools/crashreporter/'
+ treeherder:
+ symbol: TL(injector)
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-toolchain-sysroot
diff --git a/taskcluster/ci/toolchain/misc.yml b/taskcluster/ci/toolchain/misc.yml
new file mode 100644
index 0000000000..c3392926e1
--- /dev/null
+++ b/taskcluster/ci/toolchain/misc.yml
@@ -0,0 +1,440 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1800
+
+linux64-binutils-2.31.1:
+ description: "Binutils toolchain build"
+ treeherder:
+ symbol: TL(binutil2.31)
+ run:
+ script: build-binutils-linux.sh
+ resources:
+ - 'build/unix/build-binutils/build-binutils.sh'
+ toolchain-artifact: public/build/binutils.tar.zst
+ fetches:
+ fetch:
+ - binutils-2.31.1
+ toolchain:
+ # C++ code in gold doesn't compile with recent versions of GCC.
+ - linux64-gcc-8
+ - linux64-toolchain-sysroot
+
+linux64-binutils:
+ description: "Binutils toolchain build"
+ treeherder:
+ symbol: TL(binutil)
+ run:
+ script: build-binutils-linux.sh
+ resources:
+ - 'build/unix/build-binutils/build-binutils.sh'
+ toolchain-artifact: public/build/binutils.tar.zst
+ fetches:
+ fetch:
+ - binutils-2.36.1
+ toolchain:
+ - linux64-toolchain-sysroot
+
+linux64-cctools-port:
+ description: "cctools-port toolchain build"
+ treeherder:
+ symbol: TL(cctools-clang)
+ run:
+ script: build-cctools-port.sh
+ toolchain-artifact: public/build/cctools.tar.zst
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-toolchain-sysroot
+ fetch:
+ - cctools-port
+ - libtapi
+ - ldid
+
+linux64-hfsplus:
+ description: "hfsplus toolchain build"
+ attributes:
+ local-toolchain: true
+ treeherder:
+ symbol: TL(hfs+)
+ run:
+ script: build-hfsplus-linux.sh
+ resources:
+ - 'build/unix/build-hfsplus/build-hfsplus.sh'
+ toolchain-artifact: public/build/hfsplus.tar.zst
+ fetches:
+ fetch:
+ - hfsplus-tools
+ toolchain:
+ - linux64-clang-toolchain
+
+linux64-libdmg:
+ description: "libdmg-hfsplus toolchain build"
+ attributes:
+ local-toolchain: true
+ treeherder:
+ symbol: TL(libdmg-hfs+)
+ run:
+ script: build-dmg-hfsplus.sh
+ toolchain-artifact: public/build/dmg.tar.zst
+ toolchain-alias: linux64-dmg
+ fetches:
+ fetch:
+ - libdmg-hfsplus
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-toolchain-sysroot
+
+linux64-mkbom:
+ description: "mkbom toolchain build"
+ attributes:
+ local-toolchain: true
+ treeherder:
+ symbol: TL(mkbom)
+ run:
+ script: build-mkbom-linux.sh
+ toolchain-artifact: public/build/mkbom.tar.zst
+ fetches:
+ fetch:
+ - bomutils
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-toolchain-sysroot
+
+linux64-xar:
+ description: "xar toolchain build"
+ attributes:
+ local-toolchain: true
+ treeherder:
+ symbol: TL(xar)
+ run:
+ script: build-xar-linux.sh
+ toolchain-artifact: public/build/xar.tar.zst
+ fetches:
+ fetch:
+ - xar
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-toolchain-sysroot
+
+linux64-mar-tools:
+ description: "mar-tools toolchain build"
+ treeherder:
+ symbol: TL(mar-tools)
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ run:
+ script: build-mar-tools.sh
+ sparse-profile: null
+ toolchain-artifact: public/build/mar-tools.tar.zst
+ resources:
+ - build/moz.configure
+ - modules/libmar/
+ - moz.configure
+ - other-licenses/bsdiff/
+ - other-licenses/nsis/Contrib/CityHash/cityhash/
+ - toolkit/mozapps/update/updater/bspatch/
+ - tools/update-packaging/
+
+linux64-upx:
+ description: "UPX build"
+ treeherder:
+ symbol: TL(upx)
+ tier: 1
+ run:
+ script: build-upx.sh
+ toolchain-artifact: public/build/upx.tar.zst
+
+linux64-msix-packaging:
+ description: "msix-packaging build"
+ treeherder:
+ symbol: TL(msix-packaging)
+ tier: 1
+ run:
+ script: build-msix-packaging.sh
+ toolchain-artifact: public/build/msix-packaging.tar.zst
+ fetches:
+ fetch:
+ - msix-packaging
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-toolchain-sysroot
+
+linux64-custom-v8:
+ description: "Custom v8 build"
+ treeherder:
+ symbol: TL(custom-v8)
+ worker:
+ docker-image: {in-tree: custom-v8}
+ max-run-time: 3600
+ run:
+ script: build-custom-v8.sh
+ arguments: [
+ d8.tar.zst,
+ is_debug=false,
+ target_cpu="x64"
+ ]
+ toolchain-artifact: public/build/d8.tar.zst
+
+linux64-custom-car:
+ description: "Custom chromium-as-release build for Linux"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TL(custom-car)
+ worker:
+ docker-image: {in-tree: custom-car-linux}
+ max-run-time: 16200
+ run-on-projects: []
+ run:
+ script: build-custom-car-linux.sh
+ arguments: [
+ car_linux.tar.zst,
+ blink_symbol_level=0,
+ chrome_pgo_phase=2,
+ dcheck_always_on=false,
+ enable_nacl=false,
+ enable_resource_allowlist_generation=false,
+ is_chrome_branded=false,
+ is_clang=true,
+ is_component_build=false,
+ is_debug=false,
+ is_official_build=true,
+ symbol_level=0,
+ target_cpu="x64",
+ v8_symbol_level=0
+ ]
+ toolchain-artifact: public/build/car_linux.tar.zst
+
+win64-custom-car:
+ description: "Custom chromium-as-release build for Windows"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TW64(custom-car)
+ worker-type: b-win2012
+ worker:
+ max-run-time: 16200
+ env:
+ MSYSTEM: "MINGW64"
+ run-on-projects: []
+ run:
+ script: build-custom-car-win64.sh
+ arguments: [
+ car_win64.tar.zst,
+ blink_symbol_level=0,
+ chrome_pgo_phase=2,
+ dcheck_always_on=false,
+ enable_nacl=false,
+ enable_resource_allowlist_generation=false,
+ is_chrome_branded=false,
+ is_clang=true,
+ is_component_build=false,
+ is_debug=false,
+ is_official_build=true,
+ symbol_level=0,
+ target_cpu=\"x64\",
+ use_v8_context_snapshot=false,
+ v8_symbol_level=0
+ ]
+ toolchain-artifact: public/build/car_win64.tar.zst
+ fetches:
+ toolchain:
+ - win64-vs2022
+
+browsertime:
+ description: "npm install browsertime node_modules"
+ treeherder:
+ symbol: TL(browsertime)
+ run:
+ script: browsertime.sh
+ sparse-profile: null
+ resources:
+ - 'tools/browsertime/package.json'
+ - 'tools/browsertime/package-lock.json'
+ - 'tools/browsertime/mach_commands.py'
+ toolchain-artifact: public/build/browsertime.tar.zst
+ fetches:
+ toolchain:
+ - linux64-node-16
+
+wrench-deps:
+ description: "Downloads all the crates needed for building wrench"
+ treeherder:
+ symbol: WR(wrench-deps)
+ worker:
+ docker-image: {in-tree: webrender}
+ run:
+ script: wrench-deps-vendoring.sh
+ sparse-profile: null
+ resources:
+ - 'gfx/wr/Cargo.lock'
+ - 'gfx/wr/ci-scripts/install-meson.sh'
+ toolchain-artifact: public/build/wrench-deps.tar.zst
+ fetches:
+ fetch:
+ - android-ndk-rs
+ toolchain:
+ - linux64-rust # whatever m-c is built with
+
+linux64-wine:
+ description: "Wine build for Windows Cross Compile"
+ attributes:
+ local-toolchain: true
+ treeherder:
+ symbol: TL(wine)
+ tier: 1
+ worker:
+ max-run-time: 10800
+ run:
+ script: build-wine.sh
+ toolchain-artifact: public/build/wine.tar.zst
+ fetches:
+ fetch:
+ - wine
+
+linux64-winchecksec:
+ description: "winchecksec"
+ attributes:
+ local-toolchain: true
+ treeherder:
+ symbol: TL(winchecksec)
+ run:
+ script: build-winchecksec.sh
+ arguments: ['x86_64-unknown-linux-gnu']
+ toolchain-artifact: public/build/winchecksec.tar.zst
+ tooltool-downloads: internal
+ fetches:
+ fetch:
+ - winchecksec
+
+win64-winchecksec:
+ description: "winchecksec"
+ attributes:
+ local-toolchain: true
+ treeherder:
+ symbol: TW64(winchecksec)
+ run:
+ script: build-winchecksec.sh
+ arguments: ['x86_64-pc-windows-msvc']
+ toolchain-artifact: public/build/winchecksec.tar.zst
+ tooltool-downloads: internal
+ fetches:
+ fetch:
+ - winchecksec
+ toolchain:
+ - linux64-clang-toolchain
+ - vs-toolchain
+
+linux64-makecab:
+ description: "makecab toolchain build"
+ treeherder:
+ symbol: TL(cab)
+ worker:
+ env:
+ FETCH: rust-makecab
+ run:
+ script: build-rust-based-toolchain.sh
+ arguments: ['x86_64-unknown-linux-gnu']
+ toolchain-artifact: public/build/makecab.tar.zst
+ fetches:
+ fetch:
+ - makecab
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-toolchain
+ - sysroot-x86_64-linux-gnu
+
+win64-mozmake:
+ description: "mozmake for Windows"
+ attributes:
+ local-toolchain: true
+ treeherder:
+ symbol: TW64(mozmake)
+ run:
+ script: build-mozmake.sh
+ toolchain-artifact: public/build/mozmake.tar.zst
+ fetches:
+ fetch:
+ - gnumake
+ toolchain:
+ - linux64-clang-toolchain
+ - vs-toolchain
+
+nsis:
+ description: "NSIS for Linux and Windows"
+ attributes:
+ local-toolchain: true
+ treeherder:
+ symbol: TL(nsis)
+ run:
+ script: build-nsis.sh
+ toolchain-artifact: public/build/nsis.tar.zst
+ fetches:
+ fetch:
+ - nsis-3.07
+ - nsis-3.07-win
+ toolchain:
+ - linux64-clang-toolchain
+ - sysroot-x86_64-linux-gnu
+
+win64-vs2019:
+ description: "VS 2019"
+ attributes:
+ local-toolchain: true
+ treeherder:
+ symbol: TW64(msvc2019)
+ worker:
+ env:
+ MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE: system
+ run:
+ script: get_vs.py
+ arguments:
+ - build/vs/vs2019.yaml
+ resources:
+ - build/vs/vs2019.yaml
+ toolchain-artifact: project/gecko/vs/vs.tar.zst
+ toolchain-alias:
+ - vs
+ - vs-toolchain
+
+win64-vs2022:
+ description: "VS 2022"
+ attributes:
+ local-toolchain: true
+ treeherder:
+ symbol: TW64(msvc2022)
+ worker:
+ env:
+ MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE: system
+ run:
+ script: get_vs.py
+ arguments:
+ - build/vs/vs2022.yaml
+ resources:
+ - build/vs/vs2022.yaml
+ toolchain-artifact: project/gecko/vs/vs.tar.zst
+
+linux64-afl-instrumentation-2.5:
+ description: "AFL instrumentation toolchain build"
+ treeherder:
+ symbol: TL(afl)
+ worker:
+ max-run-time: 3600
+ run:
+ script: build-afl.sh
+ resources:
+ - taskcluster/scripts/misc/afl-nyx.patch
+ toolchain-artifact: public/build/afl-instrumentation.tar.zst
+ toolchain-alias: linux64-afl-instrumentation
+ fetches:
+ fetch:
+ - afl-2.5
+ toolchain:
+ - linux64-clang
+ - linux64-toolchain-sysroot
diff --git a/taskcluster/ci/toolchain/nasm.yml b/taskcluster/ci/toolchain/nasm.yml
new file mode 100644
index 0000000000..866aa5b0f6
--- /dev/null
+++ b/taskcluster/ci/toolchain/nasm.yml
@@ -0,0 +1,87 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1800
+ run:
+ toolchain-artifact: public/build/nasm.tar.zst
+
+win64-nasm:
+ description: "nasm win64 build"
+ attributes:
+ local-toolchain: true
+ treeherder:
+ symbol: TW64(nasm)
+ run:
+ script: build-nasm.sh
+ arguments: ['win64']
+ fetches:
+ fetch:
+ - nasm-2.15.05
+ toolchain:
+ - linux64-clang-mingw-x64
+
+macosx64-nasm:
+ description: "nasm macosx64 build"
+ attributes:
+ local-toolchain: true
+ treeherder:
+ symbol: TM(nasm)
+ run:
+ script: build-nasm.sh
+ arguments: ['macosx64']
+ fetches:
+ fetch:
+ - nasm-2.15.05
+ toolchain:
+ - linux64-clang-toolchain
+ - macosx64-sdk-toolchain
+
+macosx64-aarch64-nasm:
+ description: "nasm macosx64 build"
+ attributes:
+ local-toolchain: true
+ treeherder:
+ symbol: TM(nasm-aarch64)
+ run:
+ script: build-nasm.sh
+ arguments: ['macosx64-aarch64']
+ fetches:
+ fetch:
+ - nasm-2.14.02
+ toolchain:
+ - linux64-clang-toolchain
+ - macosx64-sdk-toolchain
+
+linux64-nasm:
+ description: "nasm linux64 build"
+ attributes:
+ local-toolchain: true
+ treeherder:
+ symbol: TL(nasm)
+ run:
+ script: build-nasm.sh
+ arguments: ['linux64']
+ fetches:
+ fetch:
+ - nasm-2.15.05
+ toolchain:
+ - linux64-clang-toolchain
+ - sysroot-x86_64-linux-gnu
+
+linux64-nasm-2.14.02:
+ description: "nasm linux64 minimum supported version build"
+ treeherder:
+ symbol: TL(nasm-2.14.02)
+ run:
+ script: build-nasm.sh
+ arguments: ['linux64']
+ fetches:
+ fetch:
+ - nasm-2.14.02
+ toolchain:
+ - linux64-clang-toolchain
+ - sysroot-x86_64-linux-gnu
diff --git a/taskcluster/ci/toolchain/node.yml b/taskcluster/ci/toolchain/node.yml
new file mode 100644
index 0000000000..bd66a54e9e
--- /dev/null
+++ b/taskcluster/ci/toolchain/node.yml
@@ -0,0 +1,92 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ description: "Node repack toolchain build"
+ attributes:
+ local-toolchain: true
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1800
+ run:
+ script: repack-node.sh
+ toolchain-artifact: public/build/node.tar.zst
+
+linux64-node-12:
+ treeherder:
+ symbol: TL(node-12)
+ fetches:
+ fetch:
+ - nodejs-12-linux64
+
+linux64-node-16:
+ treeherder:
+ symbol: TL(node-16)
+ run:
+ toolchain-alias:
+ - linux64-node
+ fetches:
+ fetch:
+ - nodejs-16-linux64
+
+macosx64-node-12:
+ treeherder:
+ symbol: TM(node-12)
+ fetches:
+ fetch:
+ - nodejs-12-macosx64
+
+macosx64-node-16:
+ treeherder:
+ symbol: TM(node-16)
+ run:
+ toolchain-alias:
+ - macosx64-node
+ fetches:
+ fetch:
+ - nodejs-16-macosx64
+
+macosx64-aarch64-node-16:
+ treeherder:
+ symbol: TM(node-16-arm64)
+ run:
+ toolchain-alias:
+ - macosx64-aarch64-node
+ fetches:
+ fetch:
+ - nodejs-16-macosx64-arm64
+
+win64-node-12:
+ treeherder:
+ symbol: TW64(node-12)
+ fetches:
+ fetch:
+ - nodejs-12-win64
+
+win64-node-16:
+ treeherder:
+ symbol: TW64(node-16)
+ run:
+ toolchain-alias:
+ - win64-node
+ fetches:
+ fetch:
+ - nodejs-16-win64
+
+win32-node-12:
+ treeherder:
+ symbol: TW32(node-12)
+ fetches:
+ fetch:
+ - nodejs-12-win32
+
+win32-node-16:
+ treeherder:
+ symbol: TW32(node-16)
+ run:
+ toolchain-alias:
+ - win32-node
+ fetches:
+ fetch:
+ - nodejs-16-win32
diff --git a/taskcluster/ci/toolchain/pkgconf.yml b/taskcluster/ci/toolchain/pkgconf.yml
new file mode 100644
index 0000000000..c97ead7acc
--- /dev/null
+++ b/taskcluster/ci/toolchain/pkgconf.yml
@@ -0,0 +1,56 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ attributes:
+ local-toolchain: true
+ description: "pkgconf toolchain build"
+ worker:
+ max-run-time: 1800
+ worker-type: b-linux-gcp
+ run:
+ script: build-pkgconf.sh
+ toolchain-artifact: public/build/pkgconf.tar.zst
+ fetches:
+ fetch:
+ - pkgconf
+
+linux64-pkgconf:
+ treeherder:
+ symbol: TL(pkgconf)
+ run:
+ arguments: ['x86_64-unknown-linux-gnu']
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - sysroot-x86_64-linux-gnu
+
+macosx64-pkgconf:
+ treeherder:
+ symbol: TM(pkgconf)
+ run:
+ arguments: ['x86_64-apple-darwin']
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - macosx64-sdk-toolchain
+
+macosx64-aarch64-pkgconf:
+ treeherder:
+ symbol: TM(pkgconf-arm64)
+ run:
+ arguments: ['aarch64-apple-darwin']
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - macosx64-sdk-toolchain
+
+win64-pkgconf:
+ treeherder:
+ symbol: TW64(pkgconf)
+ run:
+ arguments: ['x86_64-pc-windows-gnu']
+ fetches:
+ toolchain:
+ - linux64-clang-mingw-x64
diff --git a/taskcluster/ci/toolchain/python.yml b/taskcluster/ci/toolchain/python.yml
new file mode 100644
index 0000000000..57a332b379
--- /dev/null
+++ b/taskcluster/ci/toolchain/python.yml
@@ -0,0 +1,66 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ description: "python repack"
+ attributes:
+ local-toolchain: true
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ run:
+ script: build-cpython.sh
+
+linux64-python-3.7:
+ treeherder:
+ symbol: TL(python3.7)
+ run:
+ toolchain-artifact: public/build/python.tar.zst
+ fetches:
+ fetch:
+ - cpython-3.7.15
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-x64-compiler-rt-16
+
+linux64-python-3.8:
+ treeherder:
+ symbol: TL(python)
+ run:
+ toolchain-alias: linux64-python
+ toolchain-artifact: public/build/python.tar.zst
+ fetches:
+ fetch:
+ - cpython-3.8.10
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-x64-compiler-rt-16
+
+win64-python-3.8:
+ description: "cpython 3.8.10"
+ treeherder:
+ symbol: TW64(python)
+ run:
+ script: pack-cpython.sh
+ toolchain-alias: win64-python
+ toolchain-artifact: public/build/python.tar.zst
+ fetches:
+ toolchain:
+ - linux64-wine
+ fetch:
+ - cpython-3.8.10.exe
+
+macosx64-python-3.8:
+ treeherder:
+ symbol: TM(python)
+ worker-type: b-osx-1015
+ run:
+ toolchain-alias: macosx64-python
+ toolchain-artifact: public/build/python.tar.zst
+ fetches:
+ fetch:
+ - cpython-3.8.10
+ toolchain:
+ - macosx64-clang-toolchain
+ - macosx64-sdk-toolchain
diff --git a/taskcluster/ci/toolchain/resourcemonitor.yml b/taskcluster/ci/toolchain/resourcemonitor.yml
new file mode 100644
index 0000000000..f4ef9a41c4
--- /dev/null
+++ b/taskcluster/ci/toolchain/resourcemonitor.yml
@@ -0,0 +1,44 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1800
+ fetches:
+ fetch:
+ - go-1.14.4
+ - resource-monitor
+ run:
+ script: build-resourcemonitor.sh
+ sparse-profile: null
+ toolchain-artifact: public/build/resource-monitor.tar.zst
+
+linux64-resource-monitor:
+ description: "linux64 resourcemonitor toolchain build"
+ treeherder:
+ symbol: TL(rs-monitor)
+ run:
+ arguments: ['linux64']
+
+macosx64-resource-monitor:
+ description: "macos64 resourcemonitor toolchain build"
+ treeherder:
+ symbol: TM(rs-monitor)
+ run:
+ arguments: ['macos64']
+
+windows32-resource-monitor:
+ description: "windows32 resourcemonitor toolchain build"
+ treeherder:
+ symbol: TW32(rs-monitor)
+ run:
+ arguments: ['windows32']
+
+windows64-resource-monitor:
+ description: "windows64 resourcemonitor toolchain build"
+ treeherder:
+ symbol: TW64(rs-monitor)
+ run:
+ arguments: ['windows64']
diff --git a/taskcluster/ci/toolchain/rust-size.yml b/taskcluster/ci/toolchain/rust-size.yml
new file mode 100644
index 0000000000..09963589a6
--- /dev/null
+++ b/taskcluster/ci/toolchain/rust-size.yml
@@ -0,0 +1,38 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ description: "rust-size toolchain build"
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1800
+ run:
+ script: build-rust-based-toolchain.sh
+ fetches:
+ fetch:
+ - rust-size
+
+linux64-rust-size:
+ treeherder:
+ symbol: TL(rust-size)
+ run:
+ arguments: ['x86_64-unknown-linux-gnu']
+ toolchain-artifact: public/build/rust-size.tar.zst
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-toolchain
+ - sysroot-x86_64-linux-gnu
+
+win64-rust-size:
+ treeherder:
+ symbol: TW64(rust-size)
+ run:
+ arguments: ['x86_64-pc-windows-msvc']
+ toolchain-artifact: public/build/rust-size.tar.zst
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-windows-toolchain
+ - vs-toolchain
diff --git a/taskcluster/ci/toolchain/rust.yml b/taskcluster/ci/toolchain/rust.yml
new file mode 100644
index 0000000000..0cb72a9cc7
--- /dev/null
+++ b/taskcluster/ci/toolchain/rust.yml
@@ -0,0 +1,253 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ description: "rust repack"
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 7200
+ run:
+ script: repack_rust.py
+ toolchain-artifact: public/build/rustc.tar.zst
+
+linux64-rust-1.65:
+ treeherder:
+ symbol: TL(rust-1.65)
+ run:
+ arguments: [
+ '--channel', '1.65.0',
+ '--host', 'x86_64-unknown-linux-gnu',
+ '--target', 'x86_64-unknown-linux-gnu',
+ '--target', 'i686-unknown-linux-gnu',
+ '--target', 'wasm32-wasi',
+ ]
+ toolchain-alias:
+ - linux64-rust-toolchain
+
+linux64-rust-1.66:
+ treeherder:
+ symbol: TL(rust-1.66)
+ run:
+ arguments: [
+ '--channel', '1.66.0',
+ '--host', 'x86_64-unknown-linux-gnu',
+ '--target', 'x86_64-unknown-linux-gnu',
+ '--target', 'i686-unknown-linux-gnu',
+ '--target', 'wasm32-wasi',
+ ]
+ toolchain-alias:
+ - linux64-rust-base
+
+linux64-rust-1.69:
+ treeherder:
+ symbol: TL(rust)
+ run:
+ arguments: [
+ '--channel', '1.69.0',
+ '--host', 'x86_64-unknown-linux-gnu',
+ '--target', 'x86_64-unknown-linux-gnu',
+ '--target', 'i686-unknown-linux-gnu',
+ '--target', 'aarch64-unknown-linux-gnu',
+ '--target', 'wasm32-wasi',
+ ]
+ toolchain-alias: linux64-rust
+
+# A patched rust toolchain that allows us to use sanitizers in our vendored
+# build environment. See the rust fetch's comments for more details.
+linux64-rust-dev:
+ description: "build rust from source"
+ worker-type: b-linux-large-gcp
+ treeherder:
+ symbol: TL(rust-dev)
+ worker:
+ env:
+ # Work around https://github.com/rust-lang/rust/issues/105967
+ RUSTFLAGS_BOOTSTRAP: '-Clink-arg=-Wl,--undefined-version'
+ RUSTFLAGS_NOT_BOOTSTRAP: '-Clink-arg=-Wl,--undefined-version'
+ run:
+ arguments: [
+ '--patch', 'rust-vendor-std.patch',
+ '--patch', 'src/tools/cargo:cargo-vendor-std.patch',
+ '--channel', 'dev',
+ '--host', 'x86_64-unknown-linux-gnu',
+ '--target', 'x86_64-unknown-linux-gnu',
+ ]
+ fetches:
+ fetch:
+ - rust-1.69.0
+ toolchain:
+ - linux64-clang-toolchain
+
+linux64-rust-cross-1.69:
+ description: "rust repack with macos and windows cross support"
+ treeherder:
+ symbol: TL(rust-cross)
+ run:
+ arguments: [
+ '--channel', '1.69.0',
+ '--host', 'x86_64-unknown-linux-gnu',
+ '--target', 'x86_64-unknown-linux-gnu',
+ '--target', 'i686-unknown-linux-gnu',
+ '--target', 'x86_64-apple-darwin',
+ '--target', 'aarch64-apple-darwin',
+ '--target', 'x86_64-pc-windows-msvc',
+ '--target', 'i686-pc-windows-msvc',
+ '--target', 'aarch64-pc-windows-msvc',
+ '--target', 'armv7-linux-androideabi',
+ '--target', 'thumbv7neon-linux-androideabi',
+ '--target', 'aarch64-linux-android',
+ '--target', 'i686-linux-android',
+ '--target', 'x86_64-linux-android',
+ ]
+ toolchain-alias: linux64-rust-cross
+
+linux64-rust-cross-beta:
+ description: "rust beta repack with macos and windows cross support"
+ treeherder:
+ symbol: TL(rust-cross-beta)
+ run:
+ arguments: [
+ '--channel', 'beta-2022-12-14',
+ '--host', 'x86_64-unknown-linux-gnu',
+ '--target', 'x86_64-unknown-linux-gnu',
+ '--target', 'i686-unknown-linux-gnu',
+ '--target', 'x86_64-apple-darwin',
+ '--target', 'aarch64-apple-darwin',
+ '--target', 'x86_64-pc-windows-msvc',
+ '--target', 'i686-pc-windows-msvc',
+ '--target', 'aarch64-pc-windows-msvc',
+ '--target', 'armv7-linux-androideabi',
+ '--target', 'thumbv7neon-linux-androideabi',
+ '--target', 'aarch64-linux-android',
+ '--target', 'i686-linux-android',
+ '--target', 'x86_64-linux-android',
+ ]
+
+linux64-rust-static-1.69:
+ description: "rust repack with static linking support"
+ treeherder:
+ symbol: TL(rust-static)
+ run:
+ arguments: [
+ '--channel', '1.69.0',
+ '--host', 'x86_64-unknown-linux-gnu',
+ '--target', 'aarch64-unknown-linux-musl',
+ '--target', 'x86_64-unknown-linux-gnu',
+ '--target', 'x86_64-unknown-linux-musl',
+ '--target', 'i686-unknown-linux-gnu',
+ '--target', 'i686-unknown-linux-musl',
+ ]
+ toolchain-alias: linux64-rust-static
+
+linux64-rust-macos-1.65:
+ description: "rust repack with macos-cross support"
+ treeherder:
+ symbol: TL(rust-macos-1.65)
+ run:
+ arguments: [
+ '--channel', '1.65.0',
+ '--host', 'x86_64-unknown-linux-gnu',
+ '--target', 'x86_64-unknown-linux-gnu',
+ '--target', 'x86_64-apple-darwin',
+ '--target', 'aarch64-apple-darwin',
+ ]
+ toolchain-alias: linux64-rust-macos-toolchain
+
+linux64-rust-macos-1.69:
+ description: "rust repack with macos-cross support"
+ treeherder:
+ symbol: TL(rust-macos)
+ run:
+ arguments: [
+ '--channel', '1.69.0',
+ '--host', 'x86_64-unknown-linux-gnu',
+ '--target', 'x86_64-unknown-linux-gnu',
+ '--target', 'x86_64-apple-darwin',
+ '--target', 'aarch64-apple-darwin',
+ ]
+ toolchain-alias: linux64-rust-macos
+
+linux64-rust-android-1.69:
+ description: "rust repack with android-cross support"
+ treeherder:
+ symbol: TL(rust-android)
+ run:
+ arguments: [
+ '--channel', '1.69.0',
+ '--host', 'x86_64-unknown-linux-gnu',
+ '--target', 'x86_64-unknown-linux-gnu',
+ '--target', 'armv7-linux-androideabi',
+ '--target', 'thumbv7neon-linux-androideabi',
+ '--target', 'aarch64-linux-android',
+ '--target', 'i686-linux-android',
+ '--target', 'x86_64-linux-android',
+ ]
+ toolchain-alias: linux64-rust-android
+
+linux64-rust-windows-1.65:
+ description: "rust repack with windows-cross support"
+ treeherder:
+ symbol: TL(rust-win-1.65)
+ run:
+ arguments: [
+ '--channel', '1.65.0',
+ '--host', 'x86_64-unknown-linux-gnu',
+ '--target', 'x86_64-unknown-linux-gnu',
+ '--target', 'x86_64-pc-windows-msvc',
+ '--target', 'i686-pc-windows-msvc',
+ ]
+ toolchain-alias: linux64-rust-windows-toolchain
+
+linux64-rust-windows-1.69:
+ description: "rust repack with windows-cross support"
+ treeherder:
+ symbol: TL(rust-win)
+ run:
+ arguments: [
+ '--channel', '1.69.0',
+ '--host', 'x86_64-unknown-linux-gnu',
+ '--target', 'x86_64-unknown-linux-gnu',
+ '--target', 'x86_64-pc-windows-msvc',
+ '--target', 'i686-pc-windows-msvc',
+ '--target', 'aarch64-pc-windows-msvc',
+ ]
+ toolchain-alias: linux64-rust-windows
+
+win64-rust-1.69:
+ treeherder:
+ symbol: TW64(rust)
+ run:
+ arguments: [
+ '--channel', '1.69.0',
+ '--host', 'x86_64-pc-windows-msvc',
+ '--target', 'x86_64-pc-windows-msvc',
+ '--target', 'i686-pc-windows-msvc',
+ '--target', 'aarch64-pc-windows-msvc',
+ ]
+ toolchain-alias: win64-rust
+
+macosx64-rust-1.69:
+ treeherder:
+ symbol: TM(rust)
+ run:
+ arguments: [
+ '--channel', '1.69.0',
+ '--host', 'x86_64-apple-darwin',
+ '--target', 'x86_64-apple-darwin',
+ ]
+ toolchain-alias: macosx64-rust
+
+mingw32-rust-1.69:
+ treeherder:
+ symbol: TMW(rust)
+ run:
+ arguments: [
+ '--channel', '1.69.0',
+ '--host', 'x86_64-unknown-linux-gnu',
+ '--target', 'i686-unknown-linux-gnu',
+ '--target', 'i686-pc-windows-gnu',
+ '--target', 'x86_64-pc-windows-gnu',
+ '--target', 'x86_64-unknown-linux-gnu',
+ ]
+ toolchain-alias: mingw32-rust
diff --git a/taskcluster/ci/toolchain/sccache.yml b/taskcluster/ci/toolchain/sccache.yml
new file mode 100644
index 0000000000..6fa9ab46a5
--- /dev/null
+++ b/taskcluster/ci/toolchain/sccache.yml
@@ -0,0 +1,88 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ description: "sccache toolchain build"
+ attributes:
+ local-toolchain: true
+ treeherder:
+ symbol: TL(sccache)
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1800
+ run:
+ using: toolchain-script
+ script: build-rust-based-toolchain.sh
+ toolchain-artifact: public/build/sccache.tar.zst
+ fetches:
+ fetch:
+ - sccache
+
+linux64-sccache:
+ treeherder:
+ symbol: TL(sccache)
+ run:
+ arguments:
+ - x86_64-unknown-linux-gnu
+ - s3
+ - gcs
+ - azure
+ - dist-server
+ - openssl/vendored
+ - native-zlib
+ fetches:
+ toolchain:
+ - linux64-rust-toolchain
+ - linux64-clang-toolchain
+ - sysroot-x86_64-linux-gnu
+
+macosx64-sccache:
+ treeherder:
+ symbol: TM(sccache)
+ run:
+ arguments:
+ - x86_64-apple-darwin
+ - all
+ - native-zlib
+ fetches:
+ toolchain:
+ - linux64-rust-macos-toolchain
+ - linux64-clang-toolchain
+ - macosx64-sdk-toolchain
+
+macosx64-aarch64-sccache:
+ treeherder:
+ symbol: TM(sccache-aarch64)
+ worker:
+ max-run-time: 1800
+ run:
+ arguments:
+ - aarch64-apple-darwin
+ - all
+ - native-zlib
+ fetches:
+ toolchain:
+ - linux64-rust-macos-toolchain
+ - linux64-clang-toolchain
+ - macosx64-sdk-toolchain
+
+win64-sccache:
+ treeherder:
+ symbol: TW64(sccache)
+ worker:
+ env:
+ # Blake3 assembly can't be cross-compiled. The intrinsics version should be good enough.
+ CARGO_FEATURE_PREFER_INTRINSICS: '1'
+ run:
+ arguments:
+ - x86_64-pc-windows-msvc
+ - dist-client
+ - s3
+ - gcs
+ - native-zlib
+ fetches:
+ toolchain:
+ - linux64-clang-toolchain
+ - linux64-rust-windows-toolchain
+ - vs-toolchain
diff --git a/taskcluster/ci/toolchain/sysroot.yml b/taskcluster/ci/toolchain/sysroot.yml
new file mode 100644
index 0000000000..4a5096285a
--- /dev/null
+++ b/taskcluster/ci/toolchain/sysroot.yml
@@ -0,0 +1,160 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+job-defaults:
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 1800
+ run:
+ using: toolchain-script
+ script: build-sysroot.sh
+ toolchain-artifact: public/build/sysroot.tar.zst
+
+sysroot-i686-linux-gnu:
+ description: "Sysroot for linux32 builds"
+ attributes:
+ local-toolchain: true
+ worker:
+ env:
+ PACKAGES_TASKS: {task-reference: '<gcc-8>'}
+ treeherder:
+ symbol: TL(sysroot32)
+ dependencies:
+ gcc-8: packages-deb8-32-gcc-8
+ run:
+ toolchain-artifact: public/build/sysroot-i686-linux-gnu.tar.zst
+ arguments:
+ - i386
+
+sysroot-x86_64-linux-gnu:
+ description: "Sysroot for linux64 builds"
+ attributes:
+ local-toolchain: true
+ worker:
+ env:
+ PACKAGES_TASKS: {task-reference: '<gcc-8>'}
+ treeherder:
+ symbol: TL(sysroot64)
+ dependencies:
+ gcc-8: packages-deb8-gcc-8
+ run:
+ toolchain-artifact: public/build/sysroot-x86_64-linux-gnu.tar.zst
+ arguments:
+ - amd64
+
+sysroot-x86_64-linux-gnu-x11:
+ description: "Sysroot for linux64 builds (X11-only)"
+ attributes:
+ local-toolchain: true
+ worker:
+ env:
+ PACKAGES_TASKS: {task-reference: '<gcc-8> <gtk3>'}
+ treeherder:
+ symbol: TL(sysroot64-x11)
+ dependencies:
+ gcc-8: packages-deb8-gcc-8
+ gtk3: packages-deb8-gtk3
+ run:
+ toolchain-artifact: public/build/sysroot-x86_64-linux-gnu.tar.zst
+ arguments:
+ - amd64
+
+sysroot-wasm32-wasi-clang-16:
+ description: "Sysroot for wasi"
+ attributes:
+ local-toolchain: true
+ treeherder:
+ symbol: TL(sysroot-wasi-16)
+ run:
+ script: build-sysroot-wasi.sh
+ toolchain-alias:
+ by-project:
+ toolchains: null
+ default: sysroot-wasm32-wasi
+ toolchain-artifact: public/build/sysroot-wasm32-wasi.tar.zst
+ fetches:
+ fetch:
+ - clang-16
+ - wasi-sdk
+ toolchain:
+ - linux64-clang-16-stage1
+ - wasm32-wasi-compiler-rt-16
+
+sysroot-wasm32-wasi-clang-trunk:
+ description: "Sysroot for wasi"
+ attributes:
+ cached_task: false
+ treeherder:
+ symbol: TL(sysroot-wasi-trunk)
+ run:
+ script: build-sysroot-wasi.sh
+ toolchain-alias:
+ by-project:
+ toolchains: sysroot-wasm32-wasi
+ default: null
+ toolchain-artifact: public/build/sysroot-wasm32-wasi.tar.zst
+ fetches:
+ fetch:
+ - clang-trunk
+ - wasi-sdk
+ toolchain:
+ - linux64-clang-trunk-stage1
+ - wasm32-wasi-compiler-rt-trunk
+
+sysroot-aarch64-linux-gnu:
+ description: "Sysroot for linux64 aarch64 builds"
+ attributes:
+ local-toolchain: true
+ treeherder:
+ symbol: TL(sysroot-aarch64)
+ run:
+ toolchain-artifact: public/build/sysroot-aarch64-linux-gnu.tar.zst
+ arguments:
+ - arm64
+
+linux32-toolchain-sysroot:
+ description: "Sysroot for linux32 toolchain builds"
+ worker:
+ env:
+ PACKAGES_TASKS: {task-reference: '<gcc-8>'}
+ treeherder:
+ symbol: TL(sysroot32-toolchain)
+ dependencies:
+ gcc-8: packages-deb8-32-gcc-8
+ run:
+ arguments:
+ - i386
+ # For clang
+ - binutils-dev
+ - libxml2-dev
+ # For minidump-stackwalk
+ - libcurl4-openssl-dev
+ - libssl-dev
+ - libbz2-dev
+ # For msix-package
+ - libicu-dev
+
+linux64-toolchain-sysroot:
+ description: "Sysroot for linux64 toolchain builds"
+ worker:
+ env:
+ PACKAGES_TASKS: {task-reference: '<gcc-8>'}
+ treeherder:
+ symbol: TL(sysroot64-toolchain)
+ dependencies:
+ gcc-8: packages-deb8-gcc-8
+ run:
+ arguments:
+ - amd64
+ # For clang
+ - binutils-dev
+ - gcc-multilib
+ - lib32stdc++-8-dev
+ - libxml2-dev
+ # For minidump-stackwalk
+ - libcurl4-openssl-dev
+ - libssl-dev
+ - libbz2-dev
+ # For msix-package
+ - libicu-dev
diff --git a/taskcluster/ci/updatebot/kind.yml b/taskcluster/ci/updatebot/kind.yml
new file mode 100644
index 0000000000..1cbdbaaa77
--- /dev/null
+++ b/taskcluster/ci/updatebot/kind.yml
@@ -0,0 +1,92 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - fetch
+ - toolchain
+
+transforms:
+ - gecko_taskgraph.transforms.release_notifications:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+jobs:
+ cron:
+ description: Cron Job for Updatebot
+ run-on-projects: []
+ treeherder:
+ kind: other
+ platform: updatebot/all
+ symbol: cron
+ tier: 1
+ worker-type: b-linux-gcp
+ worker:
+ docker-image: {in-tree: updatebot}
+ max-run-time: 3600
+ taskcluster-proxy: true
+ scopes:
+ - secrets:get:project/updatebot/{level}/try-sshkey
+ - secrets:get:project/updatebot/{level}/phabricator-token
+ - secrets:get:project/updatebot/{level}/bugzilla-api-key
+ - secrets:get:project/updatebot/{level}/database-password
+ - secrets:get:project/updatebot/{level}/sentry-url
+ - secrets:get:project/updatebot/{level}/sql-proxy-config
+ - hooks:trigger-hook:project-gecko/in-tree-action-1-generic/*
+ run:
+ using: run-task
+ command: /builds/worker/run.py /builds/worker/checkouts/gecko /builds/worker/updatebot
+ notifications:
+ subject: 'updatebot cron failed'
+ message: 'updatebot cron failed'
+ status-types:
+ - on-failed
+ - on-exception
+ emails: ["tom@mozilla.com", "jewilde@mozilla.com"]
+ fetches:
+ toolchain:
+ - linux64-rust
+ - linux64-cargo-vet
+
+ cron-win:
+ description: Cron Job for Updatebot (Windows)
+ run-on-projects: []
+ treeherder:
+ kind: other
+ platform: updatebot/all
+ symbol: w-cron
+ tier: 1
+ worker-type: b-win2012
+ worker:
+ max-run-time: 3600
+ taskcluster-proxy: true
+ # begin _GENERATE_DEPOT_TOOLS_BINARIES_
+ # artifacts:
+ # - type: directory
+ # name: public/depot_tools.zip
+ # path: build\src\obj-build\depot_tools
+ # end _GENERATE_DEPOT_TOOLS_BINARIES_
+ env:
+ TOOLTOOL_MANIFEST: "taskcluster/ci/updatebot/tooltool-manifests/updatebot.manifest"
+ MSYSTEM: "MINGW64"
+ run:
+ using: run-task
+ cwd: '{checkout}'
+ command: ./taskcluster/docker/updatebot/windows-setup.sh
+ tooltool-downloads: internal
+ scopes:
+ - secrets:get:project/updatebot/{level}/try-sshkey
+ - secrets:get:project/updatebot/{level}/phabricator-token
+ - secrets:get:project/updatebot/{level}/bugzilla-api-key
+ - secrets:get:project/updatebot/{level}/database-password
+ - secrets:get:project/updatebot/{level}/sentry-url
+ - secrets:get:project/updatebot/{level}/sql-proxy-config
+ - hooks:trigger-hook:project-gecko/in-tree-action-1-generic/*
+ fetches:
+ fetch:
+ - cloud-sql-proxy-1.25.0
+ - php-windows-7.4.24
+ - arcanist
+ - depot_tools
diff --git a/taskcluster/ci/updatebot/moz.build b/taskcluster/ci/updatebot/moz.build
new file mode 100644
index 0000000000..315dc32600
--- /dev/null
+++ b/taskcluster/ci/updatebot/moz.build
@@ -0,0 +1,8 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+with Files("**"):
+ BUG_COMPONENT = ("Developer Infrastructure", "Mach Vendor & Updatebot")
diff --git a/taskcluster/ci/updatebot/tooltool-manifests/updatebot.manifest b/taskcluster/ci/updatebot/tooltool-manifests/updatebot.manifest
new file mode 100644
index 0000000000..f284d80914
--- /dev/null
+++ b/taskcluster/ci/updatebot/tooltool-manifests/updatebot.manifest
@@ -0,0 +1,29 @@
+[
+ {
+ "version": "vcruntime140.dll from Microsoft Visual C++ Redistributable for Visual Studio 2019 ver 14.29.30133.0",
+ "size": 97160,
+ "visibility": "internal",
+ "digest": "aa6afd6bea27f554e3646152d8c4f96f7bcaaa4933f8b7c04346e410f93f23cfa6d29362fd5d51ccbb8b6223e094cd89e351f072ad0517553703f5bf9de28778",
+ "algorithm": "sha512",
+ "filename": "vcruntime140.dll",
+ "unpack": false
+ },
+ {
+ "version": "Visual Studio Community 2019, Windows SDK 10.0.19041.0, and a few system dlls Lobotmized for Angle Update",
+ "filename": "vs-sdk-and-windir-shim.zip",
+ "size": 463564917,
+ "algorithm": "sha512",
+ "digest": "20d93b0014ca44a666ca2b5cc570127f24378454889ff0a036df72213cd18140185d2c2e61df40bf1e4c0d9d2dc83a7796af9d2a13252de3c85faad068291945",
+ "visibility": "internal",
+ "unpack": true
+ },
+ {
+ "version": "Windows binaries for depot_tools retrieved with depot_tools revision 7b3351443198f4e7d068999b169385b55a43679a on 2021-12-18",
+ "filename": "depot_tools-preloaded-binaries-7b3351443198f4e7d068999b169385b55a43679a-2021-12-18.zip",
+ "size": 315038144,
+ "algorithm": "sha512",
+ "digest": "250f3f3fcf631c53de1f505c53eb5ba782864fa92111eef0d710a1e7d0ad3da66db2fb8908d7c6d83e149674e976984d679f9a641eb9bea0b5c3d7b4f236920d",
+ "visibility": "internal",
+ "unpack": true
+ }
+]
diff --git a/taskcluster/ci/upload-generated-sources-dummy/kind.yml b/taskcluster/ci/upload-generated-sources-dummy/kind.yml
new file mode 100644
index 0000000000..167d478f90
--- /dev/null
+++ b/taskcluster/ci/upload-generated-sources-dummy/kind.yml
@@ -0,0 +1,24 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.per_platform_dummy:transforms
+ - gecko_taskgraph.transforms.mac_dummy:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+only-for-build-platforms:
+ macosx64-shippable/opt
+ macosx64-devedition/opt
+
+kind-dependencies:
+ - build
+ - upload-generated-sources
+
+job-template:
+ description: Dummy task to pull in mac x64 and aarch64 upload-generated-symbols tasks
+ worker-type: succeed
+ worker:
+ implementation: succeed
diff --git a/taskcluster/ci/upload-generated-sources/kind.yml b/taskcluster/ci/upload-generated-sources/kind.yml
new file mode 100644
index 0000000000..9188588c7a
--- /dev/null
+++ b/taskcluster/ci/upload-generated-sources/kind.yml
@@ -0,0 +1,38 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.upload_generated_sources:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - build
+
+only-for-attributes:
+ - nightly
+ - shippable
+ - upload-generated-sources
+
+not-for-build-platforms:
+ - macosx64-shippable/opt
+ - macosx64-devedition/opt
+
+job-template:
+ description: Upload generated source files from build
+ worker-type: t-linux-xlarge
+ treeherder:
+ symbol: Ugs
+ kind: build
+ worker:
+ docker-image: {in-tree: "lint"}
+ max-run-time: 600
+ run:
+ using: mach
+ mach: {artifact-reference: "python --virtualenv upload-generated-sources build/upload_generated_sources.py <build/public/build/target.generated-files.tar.gz>"}
+ sparse-profile: upload-generated-sources
+ scopes:
+ - secrets:get:project/releng/gecko/build/level-{level}/gecko-generated-sources-upload
diff --git a/taskcluster/ci/upload-symbols-dummy/kind.yml b/taskcluster/ci/upload-symbols-dummy/kind.yml
new file mode 100644
index 0000000000..3fc3f7c0ad
--- /dev/null
+++ b/taskcluster/ci/upload-symbols-dummy/kind.yml
@@ -0,0 +1,24 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.single_dep:loader
+
+transforms:
+ - gecko_taskgraph.transforms.per_platform_dummy:transforms
+ - gecko_taskgraph.transforms.mac_dummy:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+only-for-build-platforms:
+ macosx64-shippable/opt
+ macosx64-devedition/opt
+
+kind-dependencies:
+ - build
+ - upload-symbols
+
+job-template:
+ description: Dummy task to pull in mac x64 and aarch64 upload-symbols tasks
+ worker-type: succeed
+ worker:
+ implementation: succeed
diff --git a/taskcluster/ci/upload-symbols/kind.yml b/taskcluster/ci/upload-symbols/kind.yml
new file mode 100644
index 0000000000..2948dc0abd
--- /dev/null
+++ b/taskcluster/ci/upload-symbols/kind.yml
@@ -0,0 +1,53 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.multi_dep:loader
+
+group-by: platform
+
+transforms:
+ - gecko_taskgraph.transforms.upload_symbols:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+kind-dependencies:
+ - build
+ - toolchain
+
+primary-dependency: build
+
+not-for-build-platforms:
+ # Address Sanitizer builds don't have symbols to upload.
+ - linux64-asan-reporter-shippable/opt
+ - win64-asan-reporter-shippable/opt
+ - linux-geckodriver/opt
+ - linux64-geckodriver/opt
+ - linux64-aarch64-geckodriver/opt
+ - macosx64-geckodriver/opt
+ - macosx64-aarch64-geckodriver/opt
+ - win32-geckodriver/opt
+ - win64-geckodriver/opt
+ - win64-aarch64-geckodriver/opt
+
+job-template:
+ description: Upload Symbols
+ worker-type: b-linux-gcp
+ use-system-python: false
+ worker:
+ docker-image: {in-tree: "debian11-base"}
+ max-run-time: 1800
+ env:
+ # {level} gets replaced in the upload_symbols transform
+ SYMBOL_SECRET: "project/releng/gecko/build/level-{level}/gecko-symbol-upload"
+ MAKECAB: /builds/worker/fetches/makecab/makecab
+ MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE: system
+ run:
+ using: mach
+ mach: {artifact-reference: "python toolkit/crashreporter/tools/upload_symbols.py <build/public/cidata/target.crashreporter-symbols-full.tar.zst>"}
+ sparse-profile: upload-symbols
+ scopes:
+ - secrets:get:project/releng/gecko/build/level-{level}/gecko-symbol-upload
+ fetches:
+ toolchain:
+ - linux64-makecab
diff --git a/taskcluster/ci/valgrind/kind.yml b/taskcluster/ci/valgrind/kind.yml
new file mode 100644
index 0000000000..754616e611
--- /dev/null
+++ b/taskcluster/ci/valgrind/kind.yml
@@ -0,0 +1,65 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - toolchain
+
+transforms:
+ - gecko_taskgraph.transforms.build_attrs:transforms
+ - gecko_taskgraph.transforms.build_lints:transforms
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ attributes:
+ retrigger: true
+ use-system-python: false
+
+jobs:
+ linux64-valgrind-qr/opt-swr:
+ description: "Linux64 Valgrind Opt WebRender"
+ index:
+ product: firefox
+ job-name: linux64-valgrind-qr/opt-swr
+ treeherder:
+ platform: linux64-qr/opt
+ symbol: V-swr
+ kind: build
+ tier: 1
+ worker-type: t-linux-kvm
+ worker:
+ docker-image: {in-tree: valgrind-build}
+ max-run-time: 72000
+ env:
+ NEED_XVFB: "true"
+ PERFHERDER_EXTRA_OPTIONS: valgrind
+ run:
+ using: mozharness
+ actions: [get-secrets, build, valgrind-test]
+ custom-build-variant-cfg: valgrind
+ config:
+ - builds/releng_base_firefox.py
+ - builds/releng_base_linux_64_builds.py
+ extra-config:
+ extra_prefs: [gfx.webrender.software=true]
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ tooltool-downloads: public
+ use-sccache: true
+ fetches:
+ toolchain:
+ - linux64-clang
+ - linux64-rust
+ - linux64-cbindgen
+ - linux64-dump_syms
+ - linux64-sccache
+ - linux64-nasm
+ - linux64-node
+ - linux64-pkgconf
+ - sysroot-x86_64-linux-gnu
+ - sysroot-wasm32-wasi
+ optimization:
+ skip-unless-expanded: null
diff --git a/taskcluster/ci/webrender/kind.yml b/taskcluster/ci/webrender/kind.yml
new file mode 100644
index 0000000000..7c783d2067
--- /dev/null
+++ b/taskcluster/ci/webrender/kind.yml
@@ -0,0 +1,605 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+loader: gecko_taskgraph.loader.transform:loader
+
+kind-dependencies:
+ - toolchain
+ - build
+
+transforms:
+ - gecko_taskgraph.transforms.job:transforms
+ - gecko_taskgraph.transforms.task:transforms
+
+job-defaults:
+ attributes:
+ retrigger: true
+ run-on-projects: ['integration', 'release']
+ treeherder:
+ tier: 1
+ kind: other
+ worker:
+ max-run-time: 3600
+ env:
+ RUST_BACKTRACE: 'full'
+ RUSTFLAGS: '--deny warnings'
+ run:
+ sparse-profile: webrender
+
+jobs:
+ lint-tidy:
+ description: Runs linting checks on WebRender code
+ worker-type: b-linux-gcp
+ worker:
+ docker-image: {in-tree: webrender}
+ run:
+ using: run-task
+ cwd: '{checkout}/gfx/wr'
+ command: >-
+ servo-tidy
+ treeherder:
+ platform: linux64-qr/opt
+ symbol: WR(tidy)
+ when:
+ files-changed:
+ - 'gfx/wr/**'
+
+ linux64-release:
+ description: Runs release-mode WebRender CI tests on a Linux worker
+ worker-type: b-linux-gcp
+ worker:
+ docker-image: {in-tree: webrender}
+ fetches:
+ toolchain:
+ - linux64-rust
+ - wrench-deps
+ run:
+ using: run-task
+ command: >-
+ export PATH=$PATH:$MOZ_FETCHES_DIR/rustc/bin:${MOZ_FETCHES_DIR}/wrench-deps/meson &&
+ cd $HOME/checkouts/gecko/gfx/wr &&
+ mv $MOZ_FETCHES_DIR/wrench-deps/{vendor,.cargo} ./ &&
+ CARGOFLAGS="--verbose --frozen" ci-scripts/linux-release-tests.sh
+ treeherder:
+ platform: linux64-qr/opt
+ symbol: WR(wrench)
+ kind: other
+ when:
+ files-changed:
+ - 'gfx/wr/**'
+
+ linux64-debug:
+ description: Runs debug-mode WebRender CI tests on a Linux worker
+ worker-type: b-linux-gcp
+ worker:
+ docker-image: {in-tree: webrender}
+ fetches:
+ toolchain:
+ - linux64-rust
+ - wrench-deps
+ run:
+ using: run-task
+ command: >-
+ export PATH=$PATH:$MOZ_FETCHES_DIR/rustc/bin:${MOZ_FETCHES_DIR}/wrench-deps/meson &&
+ cd $HOME/checkouts/gecko/gfx/wr &&
+ mv $MOZ_FETCHES_DIR/wrench-deps/{vendor,.cargo} ./ &&
+ CARGOFLAGS="--verbose --frozen" ci-scripts/linux-debug-tests.sh
+ treeherder:
+ platform: linux64-qr/debug
+ symbol: WR(wrench)
+ kind: other
+ when:
+ files-changed:
+ - 'gfx/wr/**'
+
+ wrench-macos-build:
+ description: Cross compilation of wrench for macOS on Linux
+ worker-type: b-linux-gcp
+ worker:
+ docker-image: {in-tree: webrender}
+ chain-of-trust: true
+ artifacts:
+ - type: file
+ name: public/build/wrench-macos.tar.bz2
+ path: /builds/worker/artifacts/wrench-macos.tar.bz2
+ - type: file
+ name: public/build/wrench-macos-headless.tar.bz2
+ path: /builds/worker/artifacts/wrench-macos-headless.tar.bz2
+ dependencies:
+ macosx64-clang-14: toolchain-macosx64-clang-14-raw
+ fetches:
+ toolchain:
+ - linux64-rust-macos
+ - linux64-clang-14
+ - macosx64-sdk
+ - wrench-deps
+ macosx64-clang-14:
+ - artifact: clang.tar.zst
+ dest: clang-mac
+ run:
+ using: run-task
+ command: '$HOME/checkouts/gecko/taskcluster/scripts/misc/wrench-macos-build.sh'
+ treeherder:
+ platform: osx-cross/opt
+ symbol: WR(B)
+ when:
+ files-changed:
+ - 'gfx/wr/**'
+ - 'taskcluster/scripts/misc/wr-macos-cross-build-setup.sh'
+ - 'taskcluster/scripts/misc/wrench-macos-build.sh'
+
+ macos-release:
+ description: Runs release-mode WebRender CI tests on a macOS worker
+ worker-type: t-osx-1015-r8
+ worker:
+ # repo cloning has highly variable run time
+ max-run-time: 7200
+ env:
+ MOZ_FETCHES_DIR: 'checkouts/gecko/gfx/wr'
+ dependencies:
+ webrender-wrench-macos-build: webrender-wrench-macos-build
+ fetches:
+ webrender-wrench-macos-build:
+ - 'wrench-macos.tar.bz2'
+ - 'wrench-macos-headless.tar.bz2'
+ run:
+ using: run-task
+ cwd: '{checkout}/gfx/wr'
+ command: >-
+ export WRENCH_HEADLESS_TARGET=$PWD/wrench-macos-headless/ &&
+ export WRENCH_BINARY=$PWD/wrench-macos/bin/wrench &&
+ ci-scripts/macos-release-tests.sh
+ treeherder:
+ platform: macosx1015-64-qr/opt
+ symbol: WR(wrench)
+ when:
+ files-changed:
+ - 'gfx/wr/**'
+
+ cargotest-macos-build:
+ description: Cross compilation of cargo tests for macOS on Linux
+ worker-type: b-linux-gcp
+ worker:
+ docker-image: {in-tree: webrender}
+ chain-of-trust: true
+ artifacts:
+ - type: file
+ name: public/build/cargo-test-binaries.tar.bz2
+ path: /builds/worker/artifacts/cargo-test-binaries.tar.bz2
+ fetches:
+ toolchain:
+ - linux64-rust-macos
+ - linux64-clang
+ - macosx64-sdk
+ - wrench-deps
+ run:
+ using: run-task
+ command: '$HOME/checkouts/gecko/taskcluster/scripts/misc/wr-cargotest-macos-build.sh'
+ treeherder:
+ platform: osx-cross/debug
+ symbol: WR(B)
+ when:
+ files-changed:
+ - 'gfx/wr/**'
+ - 'taskcluster/scripts/misc/wr-cargotest-macos-build.sh'
+ - 'taskcluster/scripts/misc/wr-macos-cross-build-setup.sh'
+
+ macos-debug:
+ description: Runs debug-mode WebRender CI tests on a macOS worker
+ worker-type: t-osx-1015-r8
+ worker:
+ max-run-time: 3600
+ env:
+ MOZ_FETCHES_DIR: 'checkouts/gecko/gfx/wr'
+ dependencies:
+ webrender-cargotest-macos-build: webrender-cargotest-macos-build
+ fetches:
+ webrender-cargotest-macos-build:
+ - 'cargo-test-binaries.tar.bz2'
+ run:
+ using: run-task
+ cwd: '{checkout}/gfx/wr'
+ command: >-
+ mv cargo-test-binaries target &&
+ cd target &&
+ for i in debug/deps/*; do $i; done
+ treeherder:
+ platform: macosx1015-64-qr/debug
+ symbol: WR(cargotest)
+ when:
+ files-changed:
+ - 'gfx/wr/**'
+
+ windows:
+ description: Runs WebRender CI tests on a Windows worker
+ worker-type: win11-64-2009-source
+ worker:
+ max-run-time: 5400
+ env:
+ NODE_OPTIONS: '--max_old_space_size=4096'
+ fetches:
+ toolchain:
+ - win64-rust
+ - vs
+ - wrench-deps
+ run:
+ using: run-task
+ use-caches: false
+ command: '$GECKO_PATH/taskcluster/scripts/misc/wrench-windows-tests.sh'
+ treeherder:
+ platform: windows11-64-2009-qr/release
+ symbol: WR(wrench)
+ when:
+ files-changed:
+ - 'build/win64/mozconfig.vs2019'
+ - 'gfx/wr/**'
+ - 'taskcluster/scripts/misc/wrench-windows-tests.sh'
+
+ wrench-android-debug:
+ description: Debug build of wrench for Android
+ attributes:
+ build_platform: android
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 5400
+ docker-image: {in-tree: webrender}
+ artifacts:
+ - type: file
+ name: public/build/wrench-debug.apk
+ path: /builds/worker/checkouts/gecko/gfx/wr/target/debug/apk/wrench.apk
+ - type: file
+ name: public/build/reftests.tar.gz
+ path: /builds/worker/checkouts/gecko/gfx/wr/wrench/reftests.tar.gz
+ - type: file
+ name: public/build/mozdevice.tar.gz
+ path: /builds/worker/checkouts/gecko/testing/mozbase/mozdevice.tar.gz
+ run:
+ using: run-task
+ cwd: '{checkout}/gfx/wr/wrench'
+ command: >-
+ $GECKO_PATH/taskcluster/scripts/misc/wrench-android-build.sh debug &&
+ tar czf reftests.tar.gz reftests/ &&
+ cd $GECKO_PATH/testing/mozbase &&
+ tar czf mozdevice.tar.gz mozdevice/
+ fetches:
+ toolchain:
+ - android-gradle-dependencies
+ - android-ndk-linux
+ - android-sdk-linux
+ - android-system-image-x86_64-linux
+ - android-avd-x86_64-linux
+ - linux64-jdk
+ - linux64-rust-android
+ - wrench-deps
+ treeherder:
+ platform: android-em-7-0-x86/debug
+ symbol: WR(B)
+ when:
+ files-changed:
+ - 'build.gradle'
+ - 'gfx/wr/**'
+ - 'taskcluster/scripts/misc/wrench-android-build.sh'
+
+ wrench-android-release:
+ description: Release build of wrench for Android
+ attributes:
+ build_platform: android
+ worker-type: b-linux-gcp
+ worker:
+ max-run-time: 5400
+ docker-image: {in-tree: webrender}
+ artifacts:
+ - type: file
+ name: public/build/wrench-release.apk
+ path: /builds/worker/checkouts/gecko/gfx/wr/target/release/apk/wrench.apk
+ - type: file
+ name: public/build/reftests.tar.gz
+ path: /builds/worker/checkouts/gecko/gfx/wr/wrench/reftests.tar.gz
+ - type: file
+ name: public/build/mozdevice.tar.gz
+ path: /builds/worker/checkouts/gecko/testing/mozbase/mozdevice.tar.gz
+ run:
+ using: run-task
+ cwd: '{checkout}/gfx/wr/wrench'
+ command: >-
+ $GECKO_PATH/taskcluster/scripts/misc/wrench-android-build.sh release &&
+ tar czf reftests.tar.gz reftests/ &&
+ cd $GECKO_PATH/testing/mozbase &&
+ tar czf mozdevice.tar.gz mozdevice/
+ fetches:
+ toolchain:
+ - android-gradle-dependencies
+ - android-ndk-linux
+ - android-sdk-linux
+ - android-system-image-x86_64-linux
+ - android-avd-x86_64-linux
+ - linux64-jdk
+ - linux64-rust-android
+ - wrench-deps
+ treeherder:
+ platform: android-em-7-0-x86/opt
+ symbol: WR(B)
+ when:
+ files-changed:
+ - 'build.gradle'
+ - 'gfx/wr/**'
+ - 'taskcluster/scripts/misc/wrench-android-build.sh'
+
+ android-emulator-debug:
+ description: Run debug wrench reftests on Android emulator
+ attributes:
+ build_platform: android
+ worker-type: t-linux-kvm # privileged:true doesn't work on b-linux
+ worker:
+ max-run-time: 5400
+ docker-image: {in-tree: ubuntu1804-test}
+ privileged: true # for access to /dev/kvm for hw accel in the emulator
+ artifacts:
+ - type: directory
+ name: public/build/logs
+ path: /builds/worker/workspace/build/logs
+ env:
+ # need hard-coded URLs until bug 1551875 is fixed
+ TASKCLUSTER_ROOT_URL: 'https://taskcluster.net'
+ TASKCLUSTER_PROXY_URL: 'http://taskcluster'
+ MOZHARNESS_SCRIPT: android_wrench.py
+ MOZHARNESS_CONFIG: android/wrench.py
+ NEED_WINDOW_MANAGER: 'true'
+ dependencies:
+ webrender-wrench-android-debug: webrender-wrench-android-debug
+ fetches:
+ webrender-wrench-android-debug:
+ - 'wrench-debug.apk'
+ toolchain:
+ - android-sdk-linux
+ - android-system-image-x86_64-linux
+ - android-avd-x86_64-linux
+ - linux64-jdk
+ run:
+ using: run-task
+ tooltool-downloads: internal
+ command: >-
+ export WRENCH_APK=$MOZ_FETCHES_DIR/wrench-debug.apk &&
+ export WRENCH_REFTESTS=$GECKO_PATH/gfx/wr/wrench/reftests &&
+ export MOZHARNESS_PATH=$GECKO_PATH/testing/mozharness &&
+ $GECKO_PATH/taskcluster/scripts/tester/test-linux.sh
+ treeherder:
+ platform: android-em-7-0-x86/debug
+ symbol: WR(wrench)
+ when:
+ files-changed:
+ - 'gfx/wr/**'
+ - 'testing/mozharness/scripts/android_*.py'
+ - 'testing/mozharness/configs/android/*.py'
+
+ android-emulator-release:
+ description: Run release wrench reftests on Android emulator
+ attributes:
+ build_platform: android
+ worker-type: t-linux-kvm # privileged:true doesn't work on b-linux
+ worker:
+ max-run-time: 5400
+ docker-image: {in-tree: ubuntu1804-test}
+ privileged: true # for access to /dev/kvm for hw accel in the emulator
+ artifacts:
+ - type: directory
+ name: public/build/logs
+ path: /builds/worker/workspace/build/logs
+ env:
+ # need hard-coded URLs until bug 1551875 is fixed
+ TASKCLUSTER_ROOT_URL: 'https://taskcluster.net'
+ TASKCLUSTER_PROXY_URL: 'http://taskcluster'
+ MOZHARNESS_SCRIPT: android_wrench.py
+ MOZHARNESS_CONFIG: android/wrench.py
+ NEED_WINDOW_MANAGER: 'true'
+ dependencies:
+ webrender-wrench-android-release: webrender-wrench-android-release
+ fetches:
+ webrender-wrench-android-release:
+ - 'wrench-release.apk'
+ toolchain:
+ - android-sdk-linux
+ - android-system-image-x86_64-linux
+ - android-avd-x86_64-linux
+ - linux64-jdk
+ run:
+ using: run-task
+ tooltool-downloads: internal
+ command: >-
+ export WRENCH_APK=$MOZ_FETCHES_DIR/wrench-release.apk &&
+ export WRENCH_REFTESTS=$GECKO_PATH/gfx/wr/wrench/reftests &&
+ export MOZHARNESS_PATH=$GECKO_PATH/testing/mozharness &&
+ $GECKO_PATH/taskcluster/scripts/tester/test-linux.sh
+ treeherder:
+ platform: android-em-7-0-x86/opt
+ symbol: WR(wrench)
+ when:
+ files-changed:
+ - 'gfx/wr/**'
+ - 'testing/mozharness/scripts/android_*.py'
+ - 'testing/mozharness/configs/android/*.py'
+
+ android-hw-p5-debug:
+ description: Run debug wrench reftests on Android Pixel5
+ attributes:
+ build_platform: android
+ worker-type: t-bitbar-gw-unit-p5
+ worker:
+ max-run-time: 5400
+ artifacts:
+ - type: directory
+ name: public/build/logs
+ path: build/logs
+ env:
+ MOZHARNESS_SCRIPT: android_wrench.py
+ MOZHARNESS_CONFIG: android/wrench.py
+ MOZ_FETCHES_DIR: fetches
+ dependencies:
+ webrender-wrench-android-debug: webrender-wrench-android-debug
+ android-build: build-android-arm/debug
+ fetches:
+ webrender-wrench-android-debug:
+ - 'wrench-debug.apk'
+ - 'reftests.tar.gz'
+ - 'mozdevice.tar.gz'
+ android-build:
+ - artifact: 'mozharness.zip'
+ dest: 'mozharness'
+ run:
+ using: run-task
+ checkout: false
+ run-as-root: true
+ command: >-
+ export WRENCH_APK=$MOZ_FETCHES_DIR/wrench-debug.apk &&
+ export WRENCH_REFTESTS=$MOZ_FETCHES_DIR/reftests &&
+ export MOZHARNESS_PATH=$MOZ_FETCHES_DIR/mozharness &&
+ export PYTHONPATH=$MOZ_FETCHES_DIR/mozdevice:$PYTHONPATH &&
+ python3 ${MOZHARNESS_PATH}/scripts/${MOZHARNESS_SCRIPT} --config-file ${MOZHARNESS_PATH}/configs/${MOZHARNESS_CONFIG}
+ treeherder:
+ platform: android-hw-p5-13-0-arm7/debug
+ symbol: WR(wrench)
+ when:
+ files-changed:
+ - 'gfx/wr/**'
+ - 'testing/mozharness/scripts/android_*.py'
+ - 'testing/mozharness/configs/android/*.py'
+ - 'testing/mozbase/mozdevice/**'
+
+ android-hw-p5-opt:
+ description: Run opt wrench reftests on Android Pixel5
+ attributes:
+ build_platform: android
+ worker-type: t-bitbar-gw-unit-p5
+ worker:
+ max-run-time: 5400
+ artifacts:
+ - type: directory
+ name: public/build/logs
+ path: build/logs
+ env:
+ MOZHARNESS_SCRIPT: android_wrench.py
+ MOZHARNESS_CONFIG: android/wrench.py
+ MOZ_FETCHES_DIR: fetches
+ dependencies:
+ webrender-wrench-android-release: webrender-wrench-android-release
+ android-build: build-android-arm/opt
+ fetches:
+ webrender-wrench-android-release:
+ - 'wrench-release.apk'
+ - 'reftests.tar.gz'
+ - 'mozdevice.tar.gz'
+ android-build:
+ - artifact: 'mozharness.zip'
+ dest: 'mozharness'
+ run:
+ using: run-task
+ checkout: false
+ run-as-root: true
+ command: >-
+ export WRENCH_APK=$MOZ_FETCHES_DIR/wrench-release.apk &&
+ export WRENCH_REFTESTS=$MOZ_FETCHES_DIR/reftests &&
+ export MOZHARNESS_PATH=$MOZ_FETCHES_DIR/mozharness &&
+ export PYTHONPATH=$MOZ_FETCHES_DIR/mozdevice:$PYTHONPATH &&
+ python3 ${MOZHARNESS_PATH}/scripts/${MOZHARNESS_SCRIPT} --config-file ${MOZHARNESS_PATH}/configs/${MOZHARNESS_CONFIG}
+ treeherder:
+ platform: android-hw-p5-13-0-arm7/opt
+ symbol: WR(wrench)
+ when:
+ files-changed:
+ - 'gfx/wr/**'
+ - 'testing/mozharness/scripts/android_*.py'
+ - 'testing/mozharness/configs/android/*.py'
+ - 'testing/mozbase/mozdevice/**'
+
+ android-hw-a51-debug:
+ description: Run debug wrench reftests on Android Samsung Galaxy A51
+ attributes:
+ build_platform: android
+ worker-type: t-bitbar-gw-perf-a51
+ worker:
+ max-run-time: 5400
+ artifacts:
+ - type: directory
+ name: public/build/logs
+ path: build/logs
+ env:
+ MOZHARNESS_SCRIPT: android_wrench.py
+ MOZHARNESS_CONFIG: android/wrench.py
+ MOZ_FETCHES_DIR: fetches
+ dependencies:
+ webrender-wrench-android-debug: webrender-wrench-android-debug
+ android-build: build-android-arm/debug
+ fetches:
+ webrender-wrench-android-debug:
+ - 'wrench-debug.apk'
+ - 'reftests.tar.gz'
+ - 'mozdevice.tar.gz'
+ android-build:
+ - artifact: 'mozharness.zip'
+ dest: 'mozharness'
+ run:
+ using: run-task
+ checkout: false
+ run-as-root: true
+ command: >-
+ export WRENCH_APK=$MOZ_FETCHES_DIR/wrench-debug.apk &&
+ export WRENCH_REFTESTS=$MOZ_FETCHES_DIR/reftests &&
+ export MOZHARNESS_PATH=$MOZ_FETCHES_DIR/mozharness &&
+ export PYTHONPATH=$MOZ_FETCHES_DIR/mozdevice:$PYTHONPATH &&
+ python3 ${MOZHARNESS_PATH}/scripts/${MOZHARNESS_SCRIPT} --config-file ${MOZHARNESS_PATH}/configs/${MOZHARNESS_CONFIG}
+ treeherder:
+ platform: android-hw-a51-11-0-arm7/debug
+ symbol: WR(wrench)
+ when:
+ files-changed:
+ - 'gfx/wr/**'
+ - 'testing/mozharness/scripts/android_*.py'
+ - 'testing/mozharness/configs/android/*.py'
+ - 'testing/mozbase/mozdevice/**'
+
+ android-hw-a51-opt:
+ description: Run opt wrench reftests on Android Samsung Galaxy A51
+ attributes:
+ build_platform: android
+ worker-type: t-bitbar-gw-perf-a51
+ worker:
+ max-run-time: 5400
+ artifacts:
+ - type: directory
+ name: public/build/logs
+ path: build/logs
+ env:
+ MOZHARNESS_SCRIPT: android_wrench.py
+ MOZHARNESS_CONFIG: android/wrench.py
+ MOZ_FETCHES_DIR: fetches
+ dependencies:
+ webrender-wrench-android-release: webrender-wrench-android-release
+ android-build: build-android-arm/opt
+ fetches:
+ webrender-wrench-android-release:
+ - 'wrench-release.apk'
+ - 'reftests.tar.gz'
+ - 'mozdevice.tar.gz'
+ android-build:
+ - artifact: 'mozharness.zip'
+ dest: 'mozharness'
+ run:
+ using: run-task
+ checkout: false
+ run-as-root: true
+ command: >-
+ export WRENCH_APK=$MOZ_FETCHES_DIR/wrench-release.apk &&
+ export WRENCH_REFTESTS=$MOZ_FETCHES_DIR/reftests &&
+ export MOZHARNESS_PATH=$MOZ_FETCHES_DIR/mozharness &&
+ export PYTHONPATH=$MOZ_FETCHES_DIR/mozdevice:$PYTHONPATH &&
+ python3 ${MOZHARNESS_PATH}/scripts/${MOZHARNESS_SCRIPT} --config-file ${MOZHARNESS_PATH}/configs/${MOZHARNESS_CONFIG}
+ treeherder:
+ platform: android-hw-a51-11-0-arm7/opt
+ symbol: WR(wrench)
+ when:
+ files-changed:
+ - 'gfx/wr/**'
+ - 'testing/mozharness/scripts/android_*.py'
+ - 'testing/mozharness/configs/android/*.py'
+ - 'testing/mozbase/mozdevice/**'
diff --git a/taskcluster/docker/REGISTRY b/taskcluster/docker/REGISTRY
new file mode 100644
index 0000000000..cb1e1bb482
--- /dev/null
+++ b/taskcluster/docker/REGISTRY
@@ -0,0 +1 @@
+taskcluster
diff --git a/taskcluster/docker/android-build/Dockerfile b/taskcluster/docker/android-build/Dockerfile
new file mode 100644
index 0000000000..22eb3c51c8
--- /dev/null
+++ b/taskcluster/docker/android-build/Dockerfile
@@ -0,0 +1,45 @@
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER Nick Alexander <nalexander@mozilla.com>
+
+VOLUME /builds/worker/checkouts
+VOLUME /builds/worker/workspace
+VOLUME /builds/worker/tooltool-cache
+
+# rsync is required for l10n single locale repacks. less, screen, and
+# vim, help debugging interactive tasks in Task Cluster.
+# git and openssh-client are used to upload GeckoView javadoc to Github.
+RUN apt-get update && \
+ apt-get install \
+ autoconf2.13 \
+ build-essential \
+ base-files \
+ ccache \
+ cmake \
+ curl \
+ file \
+ gnupg \
+ jq \
+ less \
+ openssh-client \
+ procps \
+ python3-dev \
+ rsync \
+ screen \
+ sudo \
+ tar \
+ unzip \
+ uuid \
+ valgrind \
+ vim \
+ x11-utils \
+ xvfb \
+ wget \
+ zip \
+ zstd
+
+# Add wrapper scripts for xvfb allowing tasks to easily retry starting up xvfb.
+# %include taskcluster/docker/recipes/xvfb.sh
+COPY topsrcdir/taskcluster/docker/recipes/xvfb.sh /builds/worker/scripts/xvfb.sh
+
+# Back to the workdir, matching desktop-build.
+WORKDIR /builds/worker
diff --git a/taskcluster/docker/android-build/README.md b/taskcluster/docker/android-build/README.md
new file mode 100644
index 0000000000..6096b08368
--- /dev/null
+++ b/taskcluster/docker/android-build/README.md
@@ -0,0 +1,2 @@
+This is a docker script for fetching Android Gradle dependenices for
+use in Mozilla's build clusters.
diff --git a/taskcluster/docker/android-build/VERSION b/taskcluster/docker/android-build/VERSION
new file mode 100644
index 0000000000..4e379d2bfe
--- /dev/null
+++ b/taskcluster/docker/android-build/VERSION
@@ -0,0 +1 @@
+0.0.2
diff --git a/taskcluster/docker/condprof/Dockerfile b/taskcluster/docker/condprof/Dockerfile
new file mode 100644
index 0000000000..76817e7927
--- /dev/null
+++ b/taskcluster/docker/condprof/Dockerfile
@@ -0,0 +1,15 @@
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER Gregory Mierzwinski <gmierzwinski@mozilla.com>
+
+VOLUME /builds/worker/.cache
+VOLUME /builds/worker/checkouts
+VOLUME /builds/worker/tooltool-cache
+VOLUME /builds/worker/workspace
+
+RUN apt-get -y update && \
+ apt-get install -y python3.7 \
+ python3.7-venv \
+ python3.7-dev
+
+CMD ["/bin/bash", "--login"]
+
diff --git a/taskcluster/docker/custom-car-linux/Dockerfile b/taskcluster/docker/custom-car-linux/Dockerfile
new file mode 100644
index 0000000000..17f24b9042
--- /dev/null
+++ b/taskcluster/docker/custom-car-linux/Dockerfile
@@ -0,0 +1,24 @@
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER kshampur <kshampur@mozilla.com>
+
+VOLUME /builds/worker/checkouts
+VOLUME /builds/worker/workspace
+VOLUME /builds/worker/tooltool-cache
+
+ENV XZ_OPT=-T0
+
+RUN apt-get update && \
+ apt-get install \
+ bzip2 \
+ curl \
+ libbz2-dev \
+ libglib2.0-dev \
+ libtinfo5 \
+ pkg-config \
+ tar \
+ unzip \
+ wget \
+ zip \
+ lsb-release \
+ gperf \
+ procps
diff --git a/taskcluster/docker/custom-v8/Dockerfile b/taskcluster/docker/custom-v8/Dockerfile
new file mode 100644
index 0000000000..810c2eb090
--- /dev/null
+++ b/taskcluster/docker/custom-v8/Dockerfile
@@ -0,0 +1,22 @@
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER Joel Maher <jmaher@mozilla.com>
+
+VOLUME /builds/worker/checkouts
+VOLUME /builds/worker/workspace
+VOLUME /builds/worker/tooltool-cache
+
+ENV XZ_OPT=-T0
+
+RUN apt-get update && \
+ apt-get install \
+ bzip2 \
+ curl \
+ libbz2-dev \
+ libglib2.0-dev \
+ libtinfo5 \
+ pkg-config \
+ tar \
+ unzip \
+ wget \
+ zip \
+ procps
diff --git a/taskcluster/docker/debian-base/Dockerfile b/taskcluster/docker/debian-base/Dockerfile
new file mode 100644
index 0000000000..ad48749a38
--- /dev/null
+++ b/taskcluster/docker/debian-base/Dockerfile
@@ -0,0 +1,66 @@
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER Mike Hommey <mhommey@mozilla.com>
+
+### Add worker user and setup its workspace.
+RUN mkdir /builds && \
+ groupadd -g 1000 worker && \
+ useradd -u 1000 -g 1000 -d /builds/worker -s /bin/bash -m worker && \
+ mkdir -p /builds/worker/workspace && \
+ chown -R worker:worker /builds
+
+# Declare default working folder
+WORKDIR /builds/worker
+
+VOLUME /builds/worker/checkouts
+VOLUME /builds/worker/workspace
+VOLUME /builds/worker/tooltool-cache
+
+# Set variable normally configured at login, by the shells parent process, these
+# are taken from GNU su manual
+ENV HOME=/builds/worker \
+ SHELL=/bin/bash \
+ USER=worker \
+ LOGNAME=worker \
+ HOSTNAME=taskcluster-worker
+
+# Set a default command useful for debugging
+CMD ["/bin/bash", "--login"]
+
+ARG TASKCLUSTER_ROOT_URL
+ARG DOCKER_IMAGE_PACKAGES
+RUN /usr/local/sbin/setup_packages.sh $TASKCLUSTER_ROOT_URL $DOCKER_IMAGE_PACKAGES && \
+ apt-get update && \
+ apt-get dist-upgrade && \
+ apt-get install \
+ git \
+ less \
+ make \
+ mercurial \
+ patch \
+ python3 \
+ python3-distutils-extra \
+ python3-minimal \
+ python3-zstandard \
+ python3-psutil \
+ python3-venv \
+ vim-tiny \
+ xz-utils \
+ zstd
+
+# %include testing/mozharness/external_tools/robustcheckout.py
+COPY topsrcdir/testing/mozharness/external_tools/robustcheckout.py /usr/local/mercurial/robustcheckout.py
+
+# %include taskcluster/docker/recipes/hgrc
+COPY topsrcdir/taskcluster/docker/recipes/hgrc /etc/mercurial/hgrc.d/mozilla.rc
+
+# Add pip configuration, among other things.
+# %include taskcluster/docker/recipes/dot-config
+COPY topsrcdir/taskcluster/docker/recipes/dot-config /builds/worker/.config
+
+# %include taskcluster/scripts/run-task
+COPY topsrcdir/taskcluster/scripts/run-task /builds/worker/bin/run-task
+
+# %include taskcluster/scripts/misc/fetch-content
+ADD topsrcdir/taskcluster/scripts/misc/fetch-content /builds/worker/bin/fetch-content
+
+RUN chown -R worker:worker /builds/worker/bin && chmod 755 /builds/worker/bin/*
diff --git a/taskcluster/docker/debian-build/Dockerfile b/taskcluster/docker/debian-build/Dockerfile
new file mode 100644
index 0000000000..4e0e04c150
--- /dev/null
+++ b/taskcluster/docker/debian-build/Dockerfile
@@ -0,0 +1,51 @@
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER Mike Hommey <mhommey@mozilla.com>
+
+VOLUME /builds/worker/checkouts
+VOLUME /builds/worker/workspace
+VOLUME /builds/worker/tooltool-cache
+
+ENV XZ_OPT=-T0
+
+ARG TASKCLUSTER_ROOT_URL
+ARG DOCKER_IMAGE_PACKAGES
+RUN /usr/local/sbin/setup_packages.sh $TASKCLUSTER_ROOT_URL $DOCKER_IMAGE_PACKAGES
+
+# binutils is needed for base toolchain builds. Ideally, it wouldn't be needed.
+# libc6-i386 and lib32gcc1 are needed for wine.
+# libdbus-glib-1-2 and libgtk-3-0 are needed to run xpcshell during the build.
+# lib32atomic1, lib32stdc++6 and lib32z1 are needed to run some 32-bits
+# cpio is needed by xar (mac repackaging on linux)
+# spidermonkey tests. libasound2 is needed to run xpcshell after we introduced
+# the dependencies on alsa via Web MIDI.
+RUN apt-get update && \
+ apt-get dist-upgrade && \
+ apt-get install \
+ binutils \
+ bzip2 \
+ curl \
+ cpio \
+ file \
+ gawk \
+ gnupg \
+ jq \
+ lib32atomic1 \
+ 'lib32gcc(1|-s1)$' \
+ lib32stdc++6 \
+ lib32z1 \
+ libasound2 \
+ libc6-i386 \
+ libdbus-glib-1-2 \
+ libgtk-3-0 \
+ libucl1 \
+ p7zip-full \
+ procps \
+ python3-dev \
+ rsync \
+ screen \
+ tar \
+ unzip \
+ uuid \
+ wget \
+ x11-utils \
+ zip
diff --git a/taskcluster/docker/debian-packages/Dockerfile b/taskcluster/docker/debian-packages/Dockerfile
new file mode 100644
index 0000000000..1e651a48b7
--- /dev/null
+++ b/taskcluster/docker/debian-packages/Dockerfile
@@ -0,0 +1,11 @@
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER Mike Hommey <mhommey@mozilla.com>
+
+RUN apt-get install --install-recommends \
+ apt-utils \
+ aptitude \
+ build-essential \
+ devscripts \
+ equivs \
+ fakeroot \
+ git
diff --git a/taskcluster/docker/debian-raw/Dockerfile b/taskcluster/docker/debian-raw/Dockerfile
new file mode 100644
index 0000000000..33b28d11a2
--- /dev/null
+++ b/taskcluster/docker/debian-raw/Dockerfile
@@ -0,0 +1,62 @@
+ARG BASE_IMAGE
+FROM $BASE_IMAGE
+MAINTAINER Mike Hommey <mhommey@mozilla.com>
+
+ENV DEBIAN_FRONTEND=noninteractive
+
+# Set a default command useful for debugging
+CMD ["/bin/bash", "--login"]
+
+# %include taskcluster/docker/recipes/setup_packages.sh
+COPY topsrcdir/taskcluster/docker/recipes/setup_packages.sh /usr/local/sbin/
+
+COPY taskcluster-hack.sh /usr/local/sbin
+COPY gpgvnoexpkeysig /usr/local/sbin
+
+ARG DIST
+ARG SNAPSHOT
+ARG TASKCLUSTER_ROOT_URL
+# Set apt sources list to a snapshot.
+# Note: the use of gpgvnoexpkeysig is because the Debian Jessie GPG key expired.
+RUN if [ -n "$DIST" ]; then for s in debian_$DIST debian_$DIST-updates debian_$DIST-backports debian-security_$DIST-security debian-debug_$DIST-debug debian-debug_$DIST-proposed-updates-debug debian-debug_$DIST-backports-debug; do \
+ case "$s" in \
+ debian-debug_jessie*|debian_jessie-updates) \
+ : No debian-debug/updates archive for Jessie; \
+ ;; \
+ debian-security_jessie-security) \
+ echo "deb http://archive.debian.org/debian-security/ jessie/updates main"; \
+ ;; \
+ debian*_jessie*) \
+ echo "deb http://archive.debian.org/${s%_*}/ ${s#*_} main"; \
+ ;; \
+ debian-security_buster-security) \
+ d=${s#*_}; \
+ echo "deb http://snapshot.debian.org/archive/${s%_*}/$SNAPSHOT/ ${d%-security}/updates main"; \
+ ;; \
+ *) \
+ echo "deb http://snapshot.debian.org/archive/${s%_*}/$SNAPSHOT/ ${s#*_} main"; \
+ ;; \
+ esac; \
+ done > /etc/apt/sources.list ; fi && \
+ ( echo 'quiet "true";'; \
+ echo 'APT::Get::Assume-Yes "true";'; \
+ echo 'APT::Install-Recommends "false";'; \
+ echo 'Acquire::Check-Valid-Until "false";'; \
+ echo 'Acquire::Retries "5";'; \
+ if dpkg --compare-versions $(apt --version | awk '{print $2}') ge 2.1.15; then \
+ echo 'dir::bin::methods::https "/usr/local/sbin/taskcluster-hack.sh";'; \
+ fi; \
+ if [ "$DIST" = "jessie" ]; then \
+ echo 'Dir::Bin::gpg "/usr/local/sbin/gpgvnoexpkeysig";'; \
+ fi; \
+ ) > /etc/apt/apt.conf.d/99taskcluster && \
+ ( echo 'Package: *'; \
+ echo 'Pin: origin "'$TASKCLUSTER_ROOT_URL'"' | sed 's,https://,,'; \
+ echo 'Pin-Priority: 1001'; \
+ ) > /etc/apt/preferences.d/99taskcluster
+
+RUN apt-get update && \
+ apt-get dist-upgrade && \
+ apt-get install \
+ apt-transport-https \
+ ca-certificates
diff --git a/taskcluster/docker/debian-raw/gpgvnoexpkeysig b/taskcluster/docker/debian-raw/gpgvnoexpkeysig
new file mode 100755
index 0000000000..fbbfd7a658
--- /dev/null
+++ b/taskcluster/docker/debian-raw/gpgvnoexpkeysig
@@ -0,0 +1,52 @@
+#!/bin/sh
+#
+# Downloaded from https://gitlab.mister-muffin.de/josch/mmdebstrap/raw/branch/main/gpgvnoexpkeysig
+#
+# This script is in the public domain
+#
+# Author: Johannes Schauer Marin Rodrigues <josch@mister-muffin.de>
+#
+# This is a wrapper around gpgv as invoked by apt. It turns EXPKEYSIG results
+# from gpgv into GOODSIG results. This is necessary for apt to access very old
+# timestamps from snapshot.debian.org for which the GPG key is already expired:
+#
+# Get:1 http://snapshot.debian.org/archive/debian/20150106T000000Z unstable InRelease [242 kB]
+# Err:1 http://snapshot.debian.org/archive/debian/20150106T000000Z unstable InRelease
+# The following signatures were invalid: EXPKEYSIG 8B48AD6246925553 Debian Archive Automatic Signing Key (7.0/wheezy) <ftpmaster@debian.org>
+# Reading package lists...
+# W: GPG error: http://snapshot.debian.org/archive/debian/20150106T000000Z unstable InRelease: The following signatures were invalid: EXPKEYSIG 8B48AD6246925553 Debian Archive Automatic Signing Key (7.0/wheezy) <ftpmaster@debian.org>
+# E: The repository 'http://snapshot.debian.org/archive/debian/20150106T000000Z unstable InRelease' is not signed.
+#
+# To use this script, call apt with
+#
+# -o Apt::Key::gpgvcommand=/usr/libexec/mmdebstrap/gpgvnoexpkeysig
+#
+# Scripts doing similar things can be found here:
+#
+# * debuerreotype as /usr/share/debuerreotype/scripts/.gpgv-ignore-expiration.sh
+# * derivative census: salsa.d.o/deriv-team/census/-/blob/master/bin/fakegpgv
+
+set -eu
+
+find_gpgv_status_fd() {
+ while [ "$#" -gt 0 ]; do
+ if [ "$1" = '--status-fd' ]; then
+ echo "$2"
+ return 0
+ fi
+ shift
+ done
+ # default fd is stdout
+ echo 1
+}
+GPGSTATUSFD="$(find_gpgv_status_fd "$@")"
+
+case $GPGSTATUSFD in
+ ''|*[!0-9]*)
+ echo "invalid --status-fd argument" >&2
+ exit 1
+ ;;
+esac
+
+# we need eval because we cannot redirect a variable fd
+eval 'exec gpgv "$@" '"$GPGSTATUSFD"'>&1 | sed "s/^\[GNUPG:\] EXPKEYSIG /[GNUPG:] GOODSIG /" >&'"$GPGSTATUSFD"
diff --git a/taskcluster/docker/debian-raw/taskcluster-hack.sh b/taskcluster/docker/debian-raw/taskcluster-hack.sh
new file mode 100755
index 0000000000..eecac021ec
--- /dev/null
+++ b/taskcluster/docker/debian-raw/taskcluster-hack.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+# APT version 2.1.15 and newer changed how they handle quoting in redirections
+# in a way that breaks the setup for APT repos in taskcluster artifacts
+# (unfortunately, there's also no setup on the taskcluster end that would work
+# with both old and newer versions of APT, short of removing redirections
+# entirely).
+/usr/lib/apt/methods/https | sed -u '/^New-URI:/s/+/%2b/g'
diff --git a/taskcluster/docker/debian-repackage/Dockerfile b/taskcluster/docker/debian-repackage/Dockerfile
new file mode 100644
index 0000000000..2ca035be0b
--- /dev/null
+++ b/taskcluster/docker/debian-repackage/Dockerfile
@@ -0,0 +1,34 @@
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER Mozilla Releng <release@mozilla.com>
+
+VOLUME /builds/worker/workspace
+
+# At the moment the Firefox build baseline is jessie.
+# Things in the build/CI system that run in the task's container
+# (mach, run-task, etc.) do not support jessie.
+# There's also no jessie `base` images or packages generated in the CI.
+# To generate Firefox Debian packages compatible with the baseline
+# we bootstrap basic i386 and amd64 jessie systems on bullseye.
+# We use these to generate shared library dependencies in jessie using chroot.
+# python/mozbuild/mozbuild/repackaging/deb.py checks for jessie systems
+# bootstrapped under /srv/jessie-i386 and /srv/jessie-amd64
+# If they aren't there, deb.py runs the repackage in the working directory without using chroot.
+# To keep the build and repackage enviroments consistent the Debian baseline used
+# here (jessie) should be synchronized with the baseline used in
+# taskcluster/scripts/misc/build-sysroot.sh
+ARG TASKCLUSTER_ROOT_URL
+ARG DOCKER_IMAGE_PACKAGES
+RUN /usr/local/sbin/setup_packages.sh $TASKCLUSTER_ROOT_URL $DOCKER_IMAGE_PACKAGES && \
+ apt-get update && \
+ apt-get install debootstrap python3-distutils && set -xe && \
+ for arch in i386 amd64; do \
+ debootstrap \
+ --arch=$arch \
+ --variant=buildd \
+ --include=debhelper,libasound2,libdbus-glib-1-2,libgtk-3-0,libx11-xcb1,libxtst6 \
+ --keyring=/usr/share/keyrings/debian-archive-removed-keys.gpg \
+ --verbose \
+ jessie \
+ /srv/jessie-$arch \
+ https://archive.debian.org/debian; \
+ done
diff --git a/taskcluster/docker/decision/Dockerfile b/taskcluster/docker/decision/Dockerfile
new file mode 100644
index 0000000000..f2aa83903e
--- /dev/null
+++ b/taskcluster/docker/decision/Dockerfile
@@ -0,0 +1,15 @@
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER Andrew Halberstadt <ahal@mozilla.com>
+
+RUN mkdir /builds/worker/artifacts && \
+ chown worker:worker /builds/worker/artifacts
+
+ADD system-setup.sh /tmp/system-setup.sh
+RUN bash /tmp/system-setup.sh
+
+ADD comm-task-env /builds/worker/bin/comm-task-env
+
+ENV PATH=/builds/worker/bin:$PATH
+
+# Set a default command useful for debugging
+CMD ["/bin/bash", "--login"]
diff --git a/taskcluster/docker/decision/HASH b/taskcluster/docker/decision/HASH
new file mode 100644
index 0000000000..b854e10d0f
--- /dev/null
+++ b/taskcluster/docker/decision/HASH
@@ -0,0 +1 @@
+sha256:9f69fe08c28e3cb3cc296451f0a2735df6e25d0e3c877ea735ef1b7f0b345b06
diff --git a/taskcluster/docker/decision/README.md b/taskcluster/docker/decision/README.md
new file mode 100644
index 0000000000..4490880be8
--- /dev/null
+++ b/taskcluster/docker/decision/README.md
@@ -0,0 +1,5 @@
+# Decision Tasks
+
+The decision image is a "boostrapping" image for the in tree logic it
+deals with cloning gecko and the related utilities for providing an
+environment where we can run gecko.
diff --git a/taskcluster/docker/decision/VERSION b/taskcluster/docker/decision/VERSION
new file mode 100644
index 0000000000..1454f6ed4b
--- /dev/null
+++ b/taskcluster/docker/decision/VERSION
@@ -0,0 +1 @@
+4.0.1
diff --git a/taskcluster/docker/decision/comm-task-env b/taskcluster/docker/decision/comm-task-env
new file mode 100755
index 0000000000..65481497ae
--- /dev/null
+++ b/taskcluster/docker/decision/comm-task-env
@@ -0,0 +1,199 @@
+#!/usr/bin/python3 -u
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Thunderbird build environment prep for run-task,
+for use with comm-central derived repositories.
+
+This script is meant to run prior to run-task on repositories like
+comm-central that need to check out a copy of a mozilla repository
+in order to build.
+See bug 1491371 for background on why this is necessary.
+
+A project will have a file named ".gecko_rev.yml" in it's root. See the
+constant "GECKO_REV_CONF" if you want to change that. To download it, the
+script uses the project repository URL and the revision number.
+Those are defined in the environment variables:
+COMM_HEAD_REPOSITORY
+COMM_HEAD_REV
+
+.gecko_rev.yml has a structure like (for comm-central):
+```
+GECKO_BASE_REPOSITORY: https://hg.mozilla.org/mozilla-unified
+GECKO_HEAD_REPOSITORY: https://hg.mozilla.org/mozilla-central
+GECKO_HEAD_REF: default
+```
+or for branches:
+```
+GECKO_BASE_REPOSITORY: https://hg.mozilla.org/mozilla-unified
+GECKO_HEAD_REPOSITORY: https://hg.mozilla.org/releases/mozilla-beta
+GECKO_HEAD_REF: THUNDERBIRD_60_VERBRANCH
+GECKO_HEAD_REV: 6a830d12f15493a70b1192022c9985eba2139910
+
+Note about GECKO_HEAD_REV and GECKO_HEAD_REF:
+GECKO_HEAD_REF is a branch name or "default".
+GECKO_HEAD_REV is a revision hash.
+```
+"""
+
+import sys
+
+import os
+import socket
+import time
+from datetime import datetime
+from pprint import pformat
+
+import urllib.error
+import urllib.request
+
+import yaml
+
+if sys.version_info[0:2] < (3, 5):
+ print('run-task-wrapper requires Python 3.5+')
+ sys.exit(1)
+
+GECKO_REV_CONF = ".gecko_rev.yml"
+DEBUG = bool(os.environ.get("RTW_DEBUG", False))
+
+
+def print_message(msg, prefix=__file__, level=""):
+ """
+ Print messages.
+ :param object msg: message to print, usually a string, but not always
+ :param str prefix: message prefix
+ :param str level: message level (DEBUG, ERROR, INFO)
+ """
+ if not isinstance(msg, str):
+ msg = pformat(msg)
+ now = datetime.utcnow().isoformat()
+ # slice microseconds to 3 decimals.
+ now = now[:-3] if now[-7:-6] == '.' else now
+ if level:
+ sys.stdout.write('[{prefix} {now}Z] {level}: {msg}\n'.format(
+ prefix=prefix, now=now, level=level, msg=msg))
+ else:
+ sys.stdout.write('[{prefix} {now}Z] {msg}\n'.format(
+ prefix=prefix, now=now, msg=msg))
+ sys.stdout.flush()
+
+
+def error_exit(msg):
+ """Print the error message and exit with error."""
+ print_message(msg, level="ERROR")
+ if DEBUG:
+ raise Exception(msg)
+
+ sys.exit(1)
+
+
+def print_debug(msg):
+ """Prints a message with DEBUG prefix if DEBUG is enabled
+ with the environment variable "RTW_DEBUG".
+ """
+ if DEBUG:
+ print_message(msg, level="DEBUG")
+
+
+def check_environ():
+ """Check that the necessary environment variables to find the
+ comm- repository are defined. (Set in .taskcluster.yml)
+ :return: tuple(str, str)
+ """
+ print_debug("Checking environment variables...")
+ project_head_repo = os.environ.get("COMM_HEAD_REPOSITORY", None)
+ project_head_rev = os.environ.get("COMM_HEAD_REV", None)
+
+ if project_head_repo is None or project_head_rev is None:
+ error_exit("Environment NOT Ok:\n\tHead: {}\n\tRev: {}\n").format(
+ project_head_repo, project_head_rev)
+
+ print_debug("Environment Ok:\n\tHead: {}\n\tRev: {}\n".format(
+ project_head_repo, project_head_rev))
+ return project_head_repo, project_head_rev
+
+
+def download_url(url, retry=1):
+ """Downloads the given URL. Naively retries (when asked) upon failure
+ :param url: str
+ :param retry: int
+ :return: str
+ """
+ # Use 1-based counting for display and calculation purposes.
+ for i in range(1, retry+1):
+ try:
+ print_message('Fetching {}. Attempt {} of {}.'.format(
+ url, i, retry))
+ with urllib.request.urlopen(url, timeout=10) as response:
+ data = response.read().decode("utf-8")
+ return data
+ except (urllib.error.URLError, socket.timeout) as exc:
+ print_message('Unable to retrieve {}'.format(url))
+ if isinstance(exc, urllib.error.URLError):
+ print_message(exc.reason)
+ else: # socket.timeout
+ print_message('Connection timed out.')
+
+ if i < retry: # No more retries
+ wait_time = i * 5 # fail #1: sleep 5s. #2, sleep 10s
+ print_message('Retrying in {} seconds.'.format(wait_time))
+ time.sleep(wait_time)
+
+ error_exit('No more retry attempts! Aborting.')
+
+
+def fetch_gecko_conf(project_head_repo, project_revision):
+ """Downloads .gecko_rev.yml from the project repository
+ :param project_head_repo: str
+ :param project_revision: str
+ :return: dict
+ """
+ gecko_conf_url = '/'.join(
+ [project_head_repo, 'raw-file', project_revision, GECKO_REV_CONF])
+
+ gecko_conf_yml = download_url(gecko_conf_url, retry=5)
+
+ try:
+ gecko_conf = yaml.safe_load(gecko_conf_yml)
+ return gecko_conf
+ except yaml.YAMLError as exc:
+ err_txt = ["Error processing Gecko YAML configuration."]
+ if hasattr(exc, "problem_mark"):
+ mark = exc.problem_mark # pylint: disable=no-member
+ err_txt.append("Error position: line {}, column {}".format(
+ mark.line + 1, mark.column + 1))
+ error_exit('\n'.join(err_txt))
+
+
+def update_environment(gecko_conf):
+ """Adds the new variables defined in gecko_conf to the
+ running environment.
+ :param gecko_conf: dict
+ """
+ print_message("Updating environment with:")
+ print_message(gecko_conf)
+ os.environ.update(gecko_conf)
+
+ print_debug("New environment:")
+ print_debug(os.environ)
+
+
+def exec_run_task(args):
+ """Executes run-task with a modified environment."""
+ print_message("Executing: {}".format(pformat(args)))
+ os.execv(args[0], args[0:])
+
+
+def main():
+ """Main function."""
+ args = sys.argv[1:] # Remaining args starting with run-task
+
+ project_head_repo, project_revision = check_environ()
+ gecko_conf = fetch_gecko_conf(project_head_repo, project_revision)
+ update_environment(gecko_conf)
+ exec_run_task(args)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/taskcluster/docker/decision/system-setup.sh b/taskcluster/docker/decision/system-setup.sh
new file mode 100644
index 0000000000..0f9d04fa50
--- /dev/null
+++ b/taskcluster/docker/decision/system-setup.sh
@@ -0,0 +1,14 @@
+#!/usr/bin/env bash
+
+set -v -e
+
+test "$(whoami)" == 'root'
+
+apt-get update
+apt-get install \
+ python \
+ sudo \
+ python3-yaml
+
+rm -rf /var/lib/apt/lists/
+rm "$0"
diff --git a/taskcluster/docker/diffoscope/Dockerfile b/taskcluster/docker/diffoscope/Dockerfile
new file mode 100644
index 0000000000..22e68fd784
--- /dev/null
+++ b/taskcluster/docker/diffoscope/Dockerfile
@@ -0,0 +1,33 @@
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER Mike Hommey <mhommey@mozilla.com>
+
+VOLUME /builds/worker/checkouts
+VOLUME /builds/worker/workspace
+VOLUME /builds/worker/tooltool-cache
+
+ENV LANG=en_US.UTF-8
+
+RUN apt-get install \
+ binutils-multiarch \
+ bzip2 \
+ curl \
+ enjarify \
+ diffoscope \
+ jsbeautifier \
+ libc++abi1 \
+ locales \
+ default-jdk-headless \
+ python3-progressbar \
+ unzip \
+ zip \
+ && \
+ sed -i '/en_US.UTF-8/s/^# *//' /etc/locale.gen && \
+ locale-gen
+
+COPY get_and_diffoscope /builds/worker/bin/get_and_diffoscope
+COPY readelf /builds/worker/bin/readelf
+COPY report_error /builds/worker/bin/report_error
+COPY test_diffoscope /builds/worker/bin/test_diffoscope
+
+RUN chown -R worker:worker /builds/worker/bin && chmod 755 /builds/worker/bin/* && \
+ /builds/worker/bin/test_diffoscope
diff --git a/taskcluster/docker/diffoscope/get_and_diffoscope b/taskcluster/docker/diffoscope/get_and_diffoscope
new file mode 100644
index 0000000000..9c51af2508
--- /dev/null
+++ b/taskcluster/docker/diffoscope/get_and_diffoscope
@@ -0,0 +1,103 @@
+#!/bin/bash
+
+set -e
+set -x
+
+cd /builds/worker
+
+mkdir a b
+
+# /builds/worker/bin contains wrapper binaries to divert what diffoscope
+# needs to use, so it needs to appear first.
+export PATH=/builds/worker/bin:$PATH
+
+# Until https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=879010 is
+# implemented, it's better to first manually extract the data.
+# Plus dmg files are not supported yet.
+
+case "$ORIG_URL" in
+*.zip|*.apk)
+ curl -L "$ORIG_URL" > a.zip
+ curl -L "$NEW_URL" > b.zip
+ unzip -d a a.zip
+ unzip -d b b.zip
+ ;;
+*.tar.bz2)
+ curl -L "$ORIG_URL" | tar -C a -jxf -
+ curl -L "$NEW_URL" | tar -C b -jxf -
+ ;;
+*.tar.gz)
+ curl -L "$ORIG_URL" | tar -C a -zxf -
+ curl -L "$NEW_URL" | tar -C b -zxf -
+ ;;
+*.dmg)
+ for tool in lipo otool; do
+ ln -s $MOZ_FETCHES_DIR/cctools/bin/x86_64-apple-darwin*-$tool bin/$tool
+ done
+ curl -L "$ORIG_URL" > a.dmg
+ curl -L "$NEW_URL" > b.dmg
+ for i in a b; do
+ $MOZ_FETCHES_DIR/dmg/dmg extract $i.dmg $i.hfs
+ $MOZ_FETCHES_DIR/dmg/hfsplus $i.hfs extractall / $i
+ done
+ ;;
+*)
+ ARTIFACT=$(basename "${ORIG_URL}")
+ curl -L "$ORIG_URL" > "a/${ARTIFACT}"
+ curl -L "$NEW_URL" > "b/${ARTIFACT}"
+esac
+
+case "$ORIG_URL" in
+*/target.apk)
+ OMNIJAR=assets/omni.ja
+ ;;
+*)
+ OMNIJAR=omni.ja
+ ;;
+esac
+
+# Builds are 99% of the time differing in some small ways, so it's not
+# really useful to report a failure (at least not until we actually
+# care about the builds being 100% identical).
+POST=true
+
+fail() {
+ exit 1
+}
+
+for option; do
+ case "$option" in
+ --unpack)
+ CURDIR=$PWD
+ for dir in a b; do
+ # Need to run mach python from inside the gecko source.
+ # See bug #1533642.
+ (cd $GECKO_PATH && ./mach python toolkit/mozapps/installer/unpack.py --omnijar $OMNIJAR $CURDIR/$dir)
+ done
+ ;;
+ --fail)
+ POST="fail"
+ ;;
+ *)
+ echo "Unsupported option: $option" >&2
+ exit 1
+ esac
+done
+
+if [ -n "$PRE_DIFF" ]; then
+ eval $PRE_DIFF
+fi
+
+if diffoscope \
+ --html diff.html \
+ --text diff.txt \
+ --progress \
+ $DIFFOSCOPE_ARGS \
+ a b
+then
+ # Ok
+ :
+else
+ $(dirname $0)/report_error diff
+ $POST
+fi
diff --git a/taskcluster/docker/diffoscope/readelf b/taskcluster/docker/diffoscope/readelf
new file mode 100644
index 0000000000..6b864171d7
--- /dev/null
+++ b/taskcluster/docker/diffoscope/readelf
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+case "$1 $2" in
+"--wide --symbols")
+ # When called with --wide --symbols, we remove the first column (which
+ # is essentially a line number that is not very useful), and then sort,
+ # which will order symbols by address, making a diff more useful.
+ /usr/bin/readelf "$@" | awk -F: '{print $2}' | sort
+ ;;
+*)
+ exec /usr/bin/readelf "$@"
+ ;;
+esac
diff --git a/taskcluster/docker/diffoscope/report_error b/taskcluster/docker/diffoscope/report_error
new file mode 100755
index 0000000000..9074e33cae
--- /dev/null
+++ b/taskcluster/docker/diffoscope/report_error
@@ -0,0 +1,36 @@
+#!/usr/bin/env python3
+
+import sys
+stem = sys.argv[1]
+
+# We "parse" the diff output, so we look at the lines that contain a "tee", like:
+# ├── +++ b/firefox
+# │ ├── +++ b/firefox/libxul.so
+# │ │ ├── readelf --wide --notes {}
+# We ignore lines like the last one, to only report file names. And we ignore
+# lines for directories such as the first one.
+TEE = "├── "
+VERTICAL_LINE = "│"
+paths = set()
+with open(f"{stem}.txt") as fh:
+ for l in fh:
+ l = l.rstrip()
+ before, tee, after = l.partition(TEE)
+ if not tee:
+ continue
+ before = before.split()
+ assert all(x == VERTICAL_LINE for x in before)
+ depth = len(before)
+ _, plus, after = after.partition("+++ ")
+ if not plus:
+ continue
+ _, b, full_path = after.partition("b/")
+ assert b == "b/"
+ parent_path = "/".join(full_path.split("/")[:-1])
+ if parent_path in paths:
+ paths.remove(parent_path)
+ if full_path:
+ paths.add(full_path)
+
+for p in sorted(paths):
+ print(f"TEST-UNEXPECTED-FAIL | {p} differs. See the {stem}.html or {stem}.txt artifact")
diff --git a/taskcluster/docker/diffoscope/test_diffoscope b/taskcluster/docker/diffoscope/test_diffoscope
new file mode 100644
index 0000000000..ab1c6c1eee
--- /dev/null
+++ b/taskcluster/docker/diffoscope/test_diffoscope
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+set -e
+
+WORKDIR=$(mktemp -d)
+cd $WORKDIR
+
+mkdir -p a/foo/bar/bar
+mkdir -p a/foo/bar/baz
+mkdir -p b/foo/bar/bar
+mkdir -p b/foo/bar/baz
+
+# A file that is modified
+echo qux > a/foo/bar/qux
+echo quz > b/foo/bar/qux
+
+# A binary file that is modified
+cp $(which ls) a/foo/bin
+cp $(which cat) b/foo/bin
+
+# A file that is removed
+echo hoge > a/foo/bar/bar/hoge
+
+# A file that is created
+echo fuga > b/foo/bar/baz/fuga
+
+# Also add a zip file with the same contents
+(cd a/foo; zip -r bar.zip bar)
+(cd b/foo; zip -r bar.zip bar)
+
+if TERM=linux diffoscope --no-progress --text diff.txt a b; then
+ echo "diffoscope didn't find differences?"
+ exit 1
+fi
+
+cat > expected.txt <<EOF
+TEST-UNEXPECTED-FAIL | foo/bar.zip differs. See the diff.html or diff.txt artifact
+TEST-UNEXPECTED-FAIL | foo/bar/bar differs. See the diff.html or diff.txt artifact
+TEST-UNEXPECTED-FAIL | foo/bar/baz differs. See the diff.html or diff.txt artifact
+TEST-UNEXPECTED-FAIL | foo/bar/qux differs. See the diff.html or diff.txt artifact
+TEST-UNEXPECTED-FAIL | foo/bin differs. See the diff.html or diff.txt artifact
+EOF
+
+$(dirname $0)/report_error diff | diff -u - expected.txt || exit 1
+
+cd $OLDPWD
+rm -rf $WORKDIR
diff --git a/taskcluster/docker/fetch/Dockerfile b/taskcluster/docker/fetch/Dockerfile
new file mode 100644
index 0000000000..792b3f43a6
--- /dev/null
+++ b/taskcluster/docker/fetch/Dockerfile
@@ -0,0 +1,36 @@
+FROM $DOCKER_IMAGE_PARENT
+
+### Add worker user and setup its workspace.
+RUN mkdir /builds && \
+ groupadd -g 1000 worker && \
+ useradd -u 1000 -g 1000 -d /builds/worker -s /bin/bash -m worker && \
+ mkdir -p /builds/worker/workspace && \
+ chown -R worker:worker /builds
+
+# Declare default working folder
+WORKDIR /builds/worker
+
+ARG TASKCLUSTER_ROOT_URL
+ARG DOCKER_IMAGE_PACKAGES
+RUN /usr/local/sbin/setup_packages.sh $TASKCLUSTER_ROOT_URL $DOCKER_IMAGE_PACKAGES && \
+ apt-get update && \
+ apt-get install \
+ gnupg \
+ bzip2 \
+ git \
+ openssh-client \
+ python3-pip \
+ python3-requests \
+ python3-zstandard \
+ unzip
+
+# %include taskcluster/scripts/run-task
+ADD topsrcdir/taskcluster/scripts/run-task /builds/worker/bin/run-task
+
+# %include taskcluster/scripts/misc/fetch-content
+ADD topsrcdir/taskcluster/scripts/misc/fetch-content /builds/worker/bin/fetch-content
+
+# %include taskcluster/scripts/misc/fetch-chromium.py
+ADD topsrcdir/taskcluster/scripts/misc/fetch-chromium.py /builds/worker/bin/fetch-chromium.py
+
+RUN pip3 install redo==2.0.4
diff --git a/taskcluster/docker/firefox-flatpak/Dockerfile b/taskcluster/docker/firefox-flatpak/Dockerfile
new file mode 100644
index 0000000000..ad95e6cd28
--- /dev/null
+++ b/taskcluster/docker/firefox-flatpak/Dockerfile
@@ -0,0 +1,19 @@
+FROM freedesktopsdk/flatpak:22.08-x86_64
+MAINTAINER release@mozilla.com
+
+RUN mkdir /scripts/
+WORKDIR /scripts/
+# Copy everything in the docker/firefox-flatpak folder but the Dockerfile
+#
+# XXX The following pattern is neither a regex nor a glob one. It's
+# documented at https://golang.org/pkg/path/filepath/#Match. There's no
+# way of explicitly filtering out "Dockerfile". If one day, someone needs
+# to add a file starting with "D", then we must revisit the pattern below.
+COPY [^D]* /scripts/
+
+RUN ["gcc", "-Wall", "-shared", "-o", "/scripts/close_range.so", "/scripts/close_range.c"]
+
+ENV LD_PRELOAD /scripts/close_range.so
+
+# Set a default command useful for debugging
+CMD ["/bin/bash", "--login"]
diff --git a/taskcluster/docker/firefox-flatpak/close_range.c b/taskcluster/docker/firefox-flatpak/close_range.c
new file mode 100644
index 0000000000..d786e78e3b
--- /dev/null
+++ b/taskcluster/docker/firefox-flatpak/close_range.c
@@ -0,0 +1,12 @@
+/*
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+
+#include <errno.h>
+
+int close_range(unsigned int first, unsigned int last, unsigned int flags) {
+ errno = ENOSYS;
+ return -1;
+}
diff --git a/taskcluster/docker/firefox-flatpak/default-preferences.js b/taskcluster/docker/firefox-flatpak/default-preferences.js
new file mode 100644
index 0000000000..95663d03db
--- /dev/null
+++ b/taskcluster/docker/firefox-flatpak/default-preferences.js
@@ -0,0 +1,11 @@
+/*global pref*/
+/*eslint no-undef: "error"*/
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+pref("intl.locale.requested", "");
+pref("app.update.auto", false);
+pref("app.update.enabled", false);
+pref("app.update.autoInstallEnabled", false);
+pref("browser.shell.checkDefaultBrowser", false);
+pref("spellchecker.dictionary_path", "/usr/share/hunspell");
diff --git a/taskcluster/docker/firefox-flatpak/extract_locales_from_l10n_json.py b/taskcluster/docker/firefox-flatpak/extract_locales_from_l10n_json.py
new file mode 100644
index 0000000000..b1eb745d7f
--- /dev/null
+++ b/taskcluster/docker/firefox-flatpak/extract_locales_from_l10n_json.py
@@ -0,0 +1,18 @@
+#!/usr/bin/env python3
+
+"""
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+"""
+
+
+import json
+import sys
+
+l10n_changesets_json_path = sys.argv[1]
+with open(l10n_changesets_json_path) as f:
+ locales = json.load(f).keys()
+linux_locales = [l for l in locales if l != "ja-JP-mac"]
+
+print("\n".join(sorted(linux_locales)))
diff --git a/taskcluster/docker/firefox-flatpak/launch-script.sh b/taskcluster/docker/firefox-flatpak/launch-script.sh
new file mode 100644
index 0000000000..98279e71eb
--- /dev/null
+++ b/taskcluster/docker/firefox-flatpak/launch-script.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+export TMPDIR=$XDG_CACHE_HOME/tmp
+exec /app/lib/firefox/firefox "$@"
diff --git a/taskcluster/docker/firefox-flatpak/org.mozilla.firefox.appdata.xml.in b/taskcluster/docker/firefox-flatpak/org.mozilla.firefox.appdata.xml.in
new file mode 100644
index 0000000000..02d6ac110d
--- /dev/null
+++ b/taskcluster/docker/firefox-flatpak/org.mozilla.firefox.appdata.xml.in
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<application>
+ <id type="desktop">org.mozilla.firefox</id>
+ <launchable type="desktop-id">org.mozilla.firefox.desktop</launchable>
+ <name>Firefox</name>
+ <developer_name>Mozilla</developer_name>
+ <summary>Fast, Private &amp; Safe Web Browser</summary>
+ <metadata_license>CC0-1.0</metadata_license>
+ <project_license>MPL-2.0</project_license>
+ <description>
+ <p>When it comes to your life online, you have a choice: accept the factory settings or put your privacy first. When you choose Firefox as your default browser, you’re choosing to protect your data while supporting an independent tech company. Firefox is also the only major browser backed by a non-profit fighting to give you more openness, transparency and control of your life online. Join hundreds of millions of people who choose to protect what's important by choosing Firefox - a web browser designed to be fast, easy to use, customizable and private.</p>
+ </description>
+ <releases>
+ <release version="$VERSION" date="$DATE"/>
+ </releases>
+ <keywords>
+ <keyword>mozilla</keyword>
+ <keyword>internet</keyword>
+ <keyword>web</keyword>
+ </keywords>
+ <content_rating type="oars-1.1" />
+ <url type="homepage">https://www.mozilla.org/firefox/</url>
+ <url type="donation">https://donate.mozilla.org/</url>
+ <url type="bugtracker">https://bugzilla.mozilla.org/</url>
+ <url type="help">https://support.mozilla.org/</url>
+ <url type="translate">https://wiki.mozilla.org/L10n:Starting_a_localization</url>
+
+ <screenshots>
+ <screenshot type="default">https://raw.githubusercontent.com/mozilla-releng/scriptworker-scripts/master/pushflatpakscript/media/screenshots/image1.png</screenshot>
+ <screenshot>https://raw.githubusercontent.com/mozilla-releng/scriptworker-scripts/master/pushflatpakscript/media/screenshots/image2.png</screenshot>
+ <screenshot>https://raw.githubusercontent.com/mozilla-releng/scriptworker-scripts/master/pushflatpakscript/media/screenshots/image3.png</screenshot>
+ </screenshots>
+ <custom>
+ <value key="flathub::manifest">https://hg.mozilla.org/mozilla-central/file/tip/taskcluster/docker/firefox-flatpak/runme.sh</value>
+ </custom>
+
+</application>
diff --git a/taskcluster/docker/firefox-flatpak/org.mozilla.firefox.desktop b/taskcluster/docker/firefox-flatpak/org.mozilla.firefox.desktop
new file mode 100644
index 0000000000..21c3e7aec0
--- /dev/null
+++ b/taskcluster/docker/firefox-flatpak/org.mozilla.firefox.desktop
@@ -0,0 +1,386 @@
+[Desktop Entry]
+Version=1.0
+Name=Firefox Web Browser
+Name[ar]=متصفح الويب فَيَرفُكْس
+Name[ast]=Restolador web Firefox
+Name[bn]=ফায়ারফক্স ওয়েব ব্রাউজার
+Name[ca]=Navegador web Firefox
+Name[cs]=Firefox Webový prohlížeč
+Name[da]=Firefox - internetbrowser
+Name[el]=Περιηγητής Firefox
+Name[es]=Navegador web Firefox
+Name[et]=Firefoxi veebibrauser
+Name[fa]=مرورگر اینترنتی Firefox
+Name[fi]=Firefox-selain
+Name[fr]=Navigateur Web Firefox
+Name[gl]=Navegador web Firefox
+Name[he]=דפדפן האינטרנט Firefox
+Name[hr]=Firefox web preglednik
+Name[hu]=Firefox webböngésző
+Name[it]=Firefox Browser Web
+Name[ja]=Firefox ウェブ・ブラウザ
+Name[ko]=Firefox 웹 브라우저
+Name[ku]=Geroka torê Firefox
+Name[lt]=Firefox interneto naršyklė
+Name[nb]=Firefox Nettleser
+Name[nl]=Firefox webbrowser
+Name[nn]=Firefox Nettlesar
+Name[no]=Firefox Nettleser
+Name[pl]=Przeglądarka WWW Firefox
+Name[pt]=Firefox Navegador Web
+Name[pt_BR]=Navegador Web Firefox
+Name[ro]=Firefox – Navigator Internet
+Name[ru]=Веб-браузер Firefox
+Name[sk]=Firefox - internetový prehliadač
+Name[sl]=Firefox spletni brskalnik
+Name[sv]=Firefox webbläsare
+Name[tr]=Firefox Web Tarayıcısı
+Name[ug]=Firefox توركۆرگۈ
+Name[uk]=Веб-браузер Firefox
+Name[vi]=Trình duyệt web Firefox
+Name[zh_CN]=Firefox 网络浏览器
+Name[zh_TW]=Firefox 網路瀏覽器
+Comment=Browse the World Wide Web
+Comment[ar]=تصفح الشبكة العنكبوتية العالمية
+Comment[ast]=Restola pela Rede
+Comment[bn]=ইন্টারনেট ব্রাউজ করুন
+Comment[ca]=Navegueu per la web
+Comment[cs]=Prohlížení stránek World Wide Webu
+Comment[da]=Surf på internettet
+Comment[de]=Im Internet surfen
+Comment[el]=Μπορείτε να περιηγηθείτε στο διαδίκτυο (Web)
+Comment[es]=Navegue por la web
+Comment[et]=Lehitse veebi
+Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید
+Comment[fi]=Selaa Internetin WWW-sivuja
+Comment[fr]=Naviguer sur le Web
+Comment[gl]=Navegar pola rede
+Comment[he]=גלישה ברחבי האינטרנט
+Comment[hr]=Pretražite web
+Comment[hu]=A világháló böngészése
+Comment[it]=Esplora il web
+Comment[ja]=ウェブを閲覧します
+Comment[ko]=웹을 돌아 다닙니다
+Comment[ku]=Li torê bigere
+Comment[lt]=Naršykite internete
+Comment[nb]=Surf på nettet
+Comment[nl]=Verken het internet
+Comment[nn]=Surf på nettet
+Comment[no]=Surf på nettet
+Comment[pl]=Przeglądanie stron WWW
+Comment[pt]=Navegue na Internet
+Comment[pt_BR]=Navegue na Internet
+Comment[ro]=Navigați pe Internet
+Comment[ru]=Доступ в Интернет
+Comment[sk]=Prehliadanie internetu
+Comment[sl]=Brskajte po spletu
+Comment[sv]=Surfa på webben
+Comment[tr]=İnternet'te Gezinin
+Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ
+Comment[uk]=Перегляд сторінок Інтернету
+Comment[vi]=Để duyệt các trang web
+Comment[zh_CN]=浏览互联网
+Comment[zh_TW]=瀏覽網際網路
+GenericName=Web Browser
+GenericName[ar]=متصفح ويب
+GenericName[ast]=Restolador Web
+GenericName[bn]=ওয়েব ব্রাউজার
+GenericName[ca]=Navegador web
+GenericName[cs]=Webový prohlížeč
+GenericName[da]=Webbrowser
+GenericName[el]=Περιηγητής διαδικτύου
+GenericName[es]=Navegador web
+GenericName[et]=Veebibrauser
+GenericName[fa]=مرورگر اینترنتی
+GenericName[fi]=WWW-selain
+GenericName[fr]=Navigateur Web
+GenericName[gl]=Navegador Web
+GenericName[he]=דפדפן אינטרנט
+GenericName[hr]=Web preglednik
+GenericName[hu]=Webböngésző
+GenericName[it]=Browser web
+GenericName[ja]=ウェブ・ブラウザ
+GenericName[ko]=웹 브라우저
+GenericName[ku]=Geroka torê
+GenericName[lt]=Interneto naršyklė
+GenericName[nb]=Nettleser
+GenericName[nl]=Webbrowser
+GenericName[nn]=Nettlesar
+GenericName[no]=Nettleser
+GenericName[pl]=Przeglądarka WWW
+GenericName[pt]=Navegador Web
+GenericName[pt_BR]=Navegador Web
+GenericName[ro]=Navigator Internet
+GenericName[ru]=Веб-браузер
+GenericName[sk]=Internetový prehliadač
+GenericName[sl]=Spletni brskalnik
+GenericName[sv]=Webbläsare
+GenericName[tr]=Web Tarayıcı
+GenericName[ug]=توركۆرگۈ
+GenericName[uk]=Веб-браузер
+GenericName[vi]=Trình duyệt Web
+GenericName[zh_CN]=网络浏览器
+GenericName[zh_TW]=網路瀏覽器
+Keywords=Internet;WWW;Browser;Web;Explorer
+Keywords[ar]=انترنت;إنترنت;متصفح;ويب;وب
+Keywords[ast]=Internet;WWW;Restolador;Web;Esplorador
+Keywords[ca]=Internet;WWW;Navegador;Web;Explorador;Explorer
+Keywords[cs]=Internet;WWW;Prohlížeč;Web;Explorer
+Keywords[da]=Internet;Internettet;WWW;Browser;Browse;Web;Surf;Nettet
+Keywords[de]=Internet;WWW;Browser;Web;Explorer;Webseite;Site;surfen;online;browsen
+Keywords[el]=Internet;WWW;Browser;Web;Explorer;Διαδίκτυο;Περιηγητής;Firefox;Φιρεφοχ;Ιντερνετ
+Keywords[es]=Explorador;Internet;WWW
+Keywords[fi]=Internet;WWW;Browser;Web;Explorer;selain;Internet-selain;internetselain;verkkoselain;netti;surffaa
+Keywords[fr]=Internet;WWW;Browser;Web;Explorer;Fureteur;Surfer;Navigateur
+Keywords[he]=דפדפן;אינטרנט;רשת;אתרים;אתר;פיירפוקס;מוזילה;
+Keywords[hr]=Internet;WWW;preglednik;Web
+Keywords[hu]=Internet;WWW;Böngésző;Web;Háló;Net;Explorer
+Keywords[it]=Internet;WWW;Browser;Web;Navigatore
+Keywords[is]=Internet;WWW;Vafri;Vefur;Netvafri;Flakk
+Keywords[ja]=Internet;WWW;Web;インターネット;ブラウザ;ウェブ;エクスプローラ
+Keywords[nb]=Internett;WWW;Nettleser;Explorer;Web;Browser;Nettside
+Keywords[nl]=Internet;WWW;Browser;Web;Explorer;Verkenner;Website;Surfen;Online
+Keywords[pt]=Internet;WWW;Browser;Web;Explorador;Navegador
+Keywords[pt_BR]=Internet;WWW;Browser;Web;Explorador;Navegador
+Keywords[ru]=Internet;WWW;Browser;Web;Explorer;интернет;браузер;веб;файрфокс;огнелис
+Keywords[sk]=Internet;WWW;Prehliadač;Web;Explorer
+Keywords[sl]=Internet;WWW;Browser;Web;Explorer;Brskalnik;Splet
+Keywords[tr]=İnternet;WWW;Tarayıcı;Web;Gezgin;Web sitesi;Site;sörf;çevrimiçi;tara
+Keywords[uk]=Internet;WWW;Browser;Web;Explorer;Інтернет;мережа;переглядач;оглядач;браузер;веб;файрфокс;вогнелис;перегляд
+Keywords[vi]=Internet;WWW;Browser;Web;Explorer;Trình duyệt;Trang web
+Keywords[zh_CN]=Internet;WWW;Browser;Web;Explorer;网页;浏览;上网;火狐;Firefox;ff;互联网;网站;
+Keywords[zh_TW]=Internet;WWW;Browser;Web;Explorer;網際網路;網路;瀏覽器;上網;網頁;火狐
+Exec=firefox %u
+Icon=org.mozilla.firefox
+Terminal=false
+Type=Application
+MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
+StartupNotify=true
+Categories=Network;WebBrowser;
+Actions=new-window;new-private-window;profile-manager-window;
+StartupWMClass=firefox
+
+
+[Desktop Action new-window]
+Name=Open a New Window
+Name[ach]=Dirica manyen
+Name[af]=Nuwe venster
+Name[an]=Nueva finestra
+Name[ar]=نافذة جديدة
+Name[as]=নতুন উইন্ডো
+Name[ast]=Ventana nueva
+Name[az]=Yeni Pəncərə
+Name[be]=Новае акно
+Name[bg]=Нов прозорец
+Name[bn_BD]=নতুন উইন্ডো (N)
+Name[bn_IN]=নতুন উইন্ডো
+Name[br]=Prenestr nevez
+Name[brx]=गोदान उइन्ड'(N)
+Name[bs]=Novi prozor
+Name[ca]=Finestra nova
+Name[cak]=K'ak'a' tzuwäch
+Name[cs]=Nové okno
+Name[cy]=Ffenestr Newydd
+Name[da]=Nyt vindue
+Name[de]=Neues Fenster
+Name[dsb]=Nowe wokno
+Name[el]=Νέο παράθυρο
+Name[en_GB]=New Window
+Name[en_US]=New Window
+Name[en_ZA]=New Window
+Name[eo]=Nova fenestro
+Name[es_AR]=Nueva ventana
+Name[es_CL]=Nueva ventana
+Name[es_ES]=Nueva ventana
+Name[es_MX]=Nueva ventana
+Name[et]=Uus aken
+Name[eu]=Leiho berria
+Name[fa]=پنجره جدید‌
+Name[ff]=Henorde Hesere
+Name[fi]=Uusi ikkuna
+Name[fr]=Nouvelle fenêtre
+Name[fy_NL]=Nij finster
+Name[ga_IE]=Fuinneog Nua
+Name[gd]=Uinneag ùr
+Name[gl]=Nova xanela
+Name[gn]=Ovetã pyahu
+Name[gu_IN]=નવી વિન્ડો
+Name[he]=חלון חדש
+Name[hi_IN]=नया विंडो
+Name[hr]=Novi prozor
+Name[hsb]=Nowe wokno
+Name[hu]=Új ablak
+Name[hy_AM]=Նոր Պատուհան
+Name[id]=Jendela Baru
+Name[is]=Nýr gluggi
+Name[it]=Nuova finestra
+Name[ja]=新しいウィンドウ
+Name[ja_JP]=新規ウインドウ
+Name[ka]=ახალი ფანჯარა
+Name[kk]=Жаңа терезе
+Name[km]=បង្អួច​​​ថ្មី
+Name[kn]=ಹೊಸ ಕಿಟಕಿ
+Name[ko]=새 창
+Name[kok]=नवें जनेल
+Name[ks]=نئئ وِنڈو
+Name[lij]=Neuvo barcon
+Name[lo]=ຫນ້າຕ່າງໃຫມ່
+Name[lt]=Naujas langas
+Name[ltg]=Jauns lūgs
+Name[lv]=Jauns logs
+Name[mai]=नव विंडो
+Name[mk]=Нов прозорец
+Name[ml]=പുതിയ ജാലകം
+Name[mr]=नवीन पटल
+Name[ms]=Tetingkap Baru
+Name[my]=ဝင်းဒိုးအသစ်
+Name[nb_NO]=Nytt vindu
+Name[ne_NP]=नयाँ सञ्झ्याल
+Name[nl]=Nieuw venster
+Name[nn_NO]=Nytt vindauge
+Name[or]=ନୂତନ ୱିଣ୍ଡୋ
+Name[pa_IN]=ਨਵੀਂ ਵਿੰਡੋ
+Name[pl]=Nowe okno
+Name[pt_BR]=Nova janela
+Name[pt_PT]=Nova janela
+Name[rm]=Nova fanestra
+Name[ro]=Fereastră nouă
+Name[ru]=Новое окно
+Name[sat]=नावा विंडो (N)
+Name[si]=නව කවුළුවක්
+Name[sk]=Nové okno
+Name[sl]=Novo okno
+Name[son]=Zanfun taaga
+Name[sq]=Dritare e Re
+Name[sr]=Нови прозор
+Name[sv_SE]=Nytt fönster
+Name[ta]=புதிய சாளரம்
+Name[te]=కొత్త విండో
+Name[th]=หน้าต่างใหม่
+Name[tr]=Yeni pencere
+Name[tsz]=Eraatarakua jimpani
+Name[uk]=Нове вікно
+Name[ur]=نیا دریچہ
+Name[uz]=Yangi oyna
+Name[vi]=Cửa sổ mới
+Name[wo]=Palanteer bu bees
+Name[xh]=Ifestile entsha
+Name[zh_CN]=新建窗口
+Name[zh_TW]=開新視窗
+Exec=firefox --new-window %u
+
+[Desktop Action new-private-window]
+Name=Open a New Private Window
+Name[ach]=Dirica manyen me mung
+Name[af]=Nuwe privaatvenster
+Name[an]=Nueva finestra privada
+Name[ar]=نافذة خاصة جديدة
+Name[as]=নতুন ব্যক্তিগত উইন্ডো
+Name[ast]=Ventana privada nueva
+Name[az]=Yeni Məxfi Pəncərə
+Name[be]=Новае акно адасаблення
+Name[bg]=Нов прозорец за поверително сърфиране
+Name[bn_BD]=নতুন ব্যক্তিগত উইন্ডো
+Name[bn_IN]=নতুন ব্যক্তিগত উইন্ডো
+Name[br]=Prenestr merdeiñ prevez nevez
+Name[brx]=गोदान प्राइभेट उइन्ड'
+Name[bs]=Novi privatni prozor
+Name[ca]=Finestra privada nova
+Name[cak]=K'ak'a' ichinan tzuwäch
+Name[cs]=Nové anonymní okno
+Name[cy]=Ffenestr Breifat Newydd
+Name[da]=Nyt privat vindue
+Name[de]=Neues privates Fenster
+Name[dsb]=Nowe priwatne wokno
+Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης
+Name[en_GB]=New Private Window
+Name[en_US]=New Private Window
+Name[en_ZA]=New Private Window
+Name[eo]=Nova privata fenestro
+Name[es_AR]=Nueva ventana privada
+Name[es_CL]=Nueva ventana privada
+Name[es_ES]=Nueva ventana privada
+Name[es_MX]=Nueva ventana privada
+Name[et]=Uus privaatne aken
+Name[eu]=Leiho pribatu berria
+Name[fa]=پنجره ناشناس جدید
+Name[ff]=Henorde Suturo Hesere
+Name[fi]=Uusi yksityinen ikkuna
+Name[fr]=Nouvelle fenêtre de navigation privée
+Name[fy_NL]=Nij priveefinster
+Name[ga_IE]=Fuinneog Nua Phríobháideach
+Name[gd]=Uinneag phrìobhaideach ùr
+Name[gl]=Nova xanela privada
+Name[gn]=Ovetã ñemi pyahu
+Name[gu_IN]=નવી ખાનગી વિન્ડો
+Name[he]=חלון פרטי חדש
+Name[hi_IN]=नयी निजी विंडो
+Name[hr]=Novi privatni prozor
+Name[hsb]=Nowe priwatne wokno
+Name[hu]=Új privát ablak
+Name[hy_AM]=Սկսել Գաղտնի դիտարկում
+Name[id]=Jendela Mode Pribadi Baru
+Name[is]=Nýr huliðsgluggi
+Name[it]=Nuova finestra anonima
+Name[ja]=新しいプライベートウィンドウ
+Name[ja_JP]=新規プライベートウインドウ
+Name[ka]=ახალი პირადი ფანჯარა
+Name[kk]=Жаңа жекелік терезе
+Name[km]=បង្អួច​ឯកជន​ថ្មី
+Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ
+Name[ko]=새 사생활 보호 모드
+Name[kok]=नवो खाजगी विंडो
+Name[ks]=نْو پرایوٹ وینڈو&amp;
+Name[lij]=Neuvo barcon privou
+Name[lo]=ເປີດຫນ້າຕ່າງສວນຕົວຂື້ນມາໃຫມ່
+Name[lt]=Naujas privataus naršymo langas
+Name[ltg]=Jauns privatais lūgs
+Name[lv]=Jauns privātais logs
+Name[mai]=नया निज विंडो (W)
+Name[mk]=Нов приватен прозорец
+Name[ml]=പുതിയ സ്വകാര്യ ജാലകം
+Name[mr]=नवीन वैयक्तिक पटल
+Name[ms]=Tetingkap Persendirian Baharu
+Name[my]=New Private Window
+Name[nb_NO]=Nytt privat vindu
+Name[ne_NP]=नयाँ निजी सञ्झ्याल
+Name[nl]=Nieuw privévenster
+Name[nn_NO]=Nytt privat vindauge
+Name[or]=ନୂତନ ବ୍ୟକ୍ତିଗତ ୱିଣ୍ଡୋ
+Name[pa_IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ
+Name[pl]=Nowe okno prywatne
+Name[pt_BR]=Nova janela privativa
+Name[pt_PT]=Nova janela privada
+Name[rm]=Nova fanestra privata
+Name[ro]=Fereastră privată nouă
+Name[ru]=Новое приватное окно
+Name[sat]=नावा निजेराक् विंडो (W )
+Name[si]=නව පුද්ගලික කවුළුව (W)
+Name[sk]=Nové okno v režime Súkromné prehliadanie
+Name[sl]=Novo zasebno okno
+Name[son]=Sutura zanfun taaga
+Name[sq]=Dritare e Re Private
+Name[sr]=Нови приватан прозор
+Name[sv_SE]=Nytt privat fönster
+Name[ta]=புதிய தனிப்பட்ட சாளரம்
+Name[te]=కొత్త ఆంతరంగిక విండో
+Name[th]=หน้าต่างส่วนตัวใหม่
+Name[tr]=Yeni gizli pencere
+Name[tsz]=Juchiiti eraatarakua jimpani
+Name[uk]=Приватне вікно
+Name[ur]=نیا نجی دریچہ
+Name[uz]=Yangi maxfiy oyna
+Name[vi]=Cửa sổ riêng tư mới
+Name[wo]=Panlanteeru biir bu bees
+Name[xh]=Ifestile yangasese entsha
+Name[zh_CN]=新建隐私浏览窗口
+Name[zh_TW]=新增隱私視窗
+Exec=firefox --private-window %u
+
+[Desktop Action profile-manager-window]
+Name=Open the Profile Manager
+Name[cs]=Správa profilů
+Name[de]=Profilverwaltung öffnen
+Name[es]=Abrir el Gestor de Perfiles
+Name[fr]=Ouvrir le gestionnaire de profils
+Exec=firefox --ProfileManager
diff --git a/taskcluster/docker/firefox-flatpak/policies.json b/taskcluster/docker/firefox-flatpak/policies.json
new file mode 100644
index 0000000000..2645f20c0c
--- /dev/null
+++ b/taskcluster/docker/firefox-flatpak/policies.json
@@ -0,0 +1,6 @@
+{
+ "policies": {
+ "DisableAppUpdate": true,
+ "DontCheckDefaultBrowser": true
+ }
+}
diff --git a/taskcluster/docker/firefox-flatpak/runme.sh b/taskcluster/docker/firefox-flatpak/runme.sh
new file mode 100755
index 0000000000..91511fe2d6
--- /dev/null
+++ b/taskcluster/docker/firefox-flatpak/runme.sh
@@ -0,0 +1,190 @@
+#!/bin/bash
+set -xe
+
+# Future products supporting Flatpaks will set this accordingly
+: PRODUCT "${PRODUCT:=firefox}"
+
+# Required env variables
+
+test "$VERSION"
+test "$BUILD_NUMBER"
+test "$CANDIDATES_DIR"
+test "$L10N_CHANGESETS"
+test "$FLATPAK_BRANCH"
+
+# Optional env variables
+: WORKSPACE "${WORKSPACE:=/home/worker/workspace}"
+: ARTIFACTS_DIR "${ARTIFACTS_DIR:=/home/worker/artifacts}"
+
+pwd
+
+# XXX: this is used to populate the datetime in org.mozilla.firefox.appdata.xml
+DATE=$(date +%Y-%m-%d)
+export DATE
+
+SCRIPT_DIRECTORY="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+TARGET_TAR_XZ_FULL_PATH="$ARTIFACTS_DIR/target.flatpak.tar.xz"
+SOURCE_DEST="${WORKSPACE}/source"
+FREEDESKTOP_VERSION="22.08"
+FIREFOX_BASEAPP_CHANNEL="22.08"
+
+
+# XXX: these commands are temporarily, there's an upcoming fix in the upstream Docker image
+# that we work on top of, from `freedesktopsdk`, that will make these two lines go away eventually
+mkdir -p /root /tmp /var/tmp
+mkdir -p "$ARTIFACTS_DIR"
+rm -rf "$SOURCE_DEST" && mkdir -p "$SOURCE_DEST"
+
+# XXX ensure we have a clean slate in the local flatpak repo
+rm -rf ~/.local/share/flatpak/
+
+
+CURL="curl --location --retry 10 --retry-delay 10"
+
+# Download en-US linux64 binary
+$CURL -o "${WORKSPACE}/firefox.tar.bz2" \
+ "${CANDIDATES_DIR}/${VERSION}-candidates/build${BUILD_NUMBER}/linux-x86_64/en-US/firefox-${VERSION}.tar.bz2"
+
+# Use list of locales to fetch L10N XPIs
+$CURL -o "${WORKSPACE}/l10n_changesets.json" "$L10N_CHANGESETS"
+locales=$(python3 "$SCRIPT_DIRECTORY/extract_locales_from_l10n_json.py" "${WORKSPACE}/l10n_changesets.json")
+
+DISTRIBUTION_DIR="$SOURCE_DEST/distribution"
+if [[ "$PRODUCT" == "firefox" ]]; then
+ # Get Flatpak configuration
+ PARTNER_CONFIG_DIR="$WORKSPACE/partner_config"
+ git clone https://github.com/mozilla-partners/flatpak.git "$PARTNER_CONFIG_DIR"
+ mv "$PARTNER_CONFIG_DIR/desktop/flatpak/distribution" "$DISTRIBUTION_DIR"
+else
+ mkdir -p "$DISTRIBUTION_DIR"
+fi
+
+mkdir -p "$DISTRIBUTION_DIR/extensions"
+for locale in $locales; do
+ $CURL -o "$DISTRIBUTION_DIR/extensions/langpack-${locale}@firefox.mozilla.org.xpi" \
+ "$CANDIDATES_DIR/${VERSION}-candidates/build${BUILD_NUMBER}/linux-x86_64/xpi/${locale}.xpi"
+done
+
+envsubst < "$SCRIPT_DIRECTORY/org.mozilla.firefox.appdata.xml.in" > "${WORKSPACE}/org.mozilla.firefox.appdata.xml"
+cp -v "$SCRIPT_DIRECTORY/org.mozilla.firefox.desktop" "$WORKSPACE"
+# Add a group policy file to disable app updates, as those are handled by Flathub
+cp -v "$SCRIPT_DIRECTORY/policies.json" "$WORKSPACE"
+cp -v "$SCRIPT_DIRECTORY/default-preferences.js" "$WORKSPACE"
+cp -v "$SCRIPT_DIRECTORY/launch-script.sh" "$WORKSPACE"
+cd "${WORKSPACE}"
+
+flatpak remote-add --user --if-not-exists --from flathub https://dl.flathub.org/repo/flathub.flatpakrepo
+# XXX: added --user to `flatpak install` to avoid ambiguity
+flatpak install --user -y flathub org.mozilla.firefox.BaseApp//${FIREFOX_BASEAPP_CHANNEL} --no-deps
+
+# XXX: this command is temporarily, there's an upcoming fix in the upstream Docker image
+# that we work on top of, from `freedesktopsdk`, that will make these two lines go away eventually
+mkdir -p build
+cp -r ~/.local/share/flatpak/app/org.mozilla.firefox.BaseApp/current/active/files build/files
+
+ARCH=$(flatpak --default-arch)
+cat <<EOF > build/metadata
+[Application]
+name=org.mozilla.firefox
+runtime=org.freedesktop.Platform/${ARCH}/${FREEDESKTOP_VERSION}
+sdk=org.freedesktop.Sdk/${ARCH}/${FREEDESKTOP_VERSION}
+base=app/org.mozilla.firefox.BaseApp/${ARCH}/${FIREFOX_BASEAPP_CHANNEL}
+[Extension org.mozilla.firefox.Locale]
+directory=share/runtime/langpack
+autodelete=true
+locale-subset=true
+
+[Extension org.freedesktop.Platform.ffmpeg-full]
+directory=lib/ffmpeg
+add-ld-path=.
+no-autodownload=true
+version=${FREEDESKTOP_VERSION}
+
+[Extension org.mozilla.firefox.systemconfig]
+directory=etc/firefox
+no-autodownload=true
+EOF
+
+cat <<EOF > build/metadata.locale
+[Runtime]
+name=org.mozilla.firefox.Locale
+
+[ExtensionOf]
+ref=app/org.mozilla.firefox/${ARCH}/${FLATPAK_BRANCH}
+EOF
+
+appdir=build/files
+install -d "${appdir}/lib/"
+(cd "${appdir}/lib/" && tar jxf "${WORKSPACE}/firefox.tar.bz2")
+install -D -m644 -t "${appdir}/share/appdata" org.mozilla.firefox.appdata.xml
+install -D -m644 -t "${appdir}/share/applications" org.mozilla.firefox.desktop
+for size in 16 32 48 64 128; do
+ install -D -m644 "${appdir}/lib/firefox/browser/chrome/icons/default/default${size}.png" "${appdir}/share/icons/hicolor/${size}x${size}/apps/org.mozilla.firefox.png"
+done
+mkdir -p "${appdir}/lib/ffmpeg"
+mkdir -p "${appdir}/etc/firefox"
+
+appstream-compose --prefix="${appdir}" --origin=flatpak --basename=org.mozilla.firefox org.mozilla.firefox
+appstream-util mirror-screenshots "${appdir}"/share/app-info/xmls/org.mozilla.firefox.xml.gz "https://dl.flathub.org/repo/screenshots/org.mozilla.firefox-${FLATPAK_BRANCH}" build/screenshots "build/screenshots/org.mozilla.firefox-${FLATPAK_BRANCH}"
+
+# XXX: we used to `install -D` before which automatically created the components
+# of target, now we need to manually do this since we're symlinking
+mkdir -p "${appdir}/lib/firefox/distribution/extensions"
+# XXX: we put the langpacks in /app/share/locale/$LANG_CODE and symlink that
+# directory to where Firefox looks them up; this way only subset configured
+# on user system is downloaded vs all locales
+for locale in $locales; do
+ install -D -m644 -t "${appdir}/share/runtime/langpack/${locale%%-*}/" "${DISTRIBUTION_DIR}/extensions/langpack-${locale}@firefox.mozilla.org.xpi"
+ ln -sf "/app/share/runtime/langpack/${locale%%-*}/langpack-${locale}@firefox.mozilla.org.xpi" "${appdir}/lib/firefox/distribution/extensions/langpack-${locale}@firefox.mozilla.org.xpi"
+done
+install -D -m644 -t "${appdir}/lib/firefox/distribution" "$DISTRIBUTION_DIR/distribution.ini"
+install -D -m644 -t "${appdir}/lib/firefox/distribution" policies.json
+install -D -m644 -t "${appdir}/lib/firefox/browser/defaults/preferences" default-preferences.js
+install -D -m755 launch-script.sh "${appdir}/bin/firefox"
+
+# We need to set GTK_PATH to load cups printing backend which is missing in
+# freedesktop sdk.
+#
+# We use features=devel to enable ptrace, which we need for the crash
+# reporter. The application is still confined in a pid namespace, so
+# that won't let us escape the flatpak sandbox. See bug 1653852.
+
+flatpak build-finish build \
+ --allow=devel \
+ --share=ipc \
+ --share=network \
+ --env=GTK_PATH=/app/lib/gtkmodules \
+ --socket=pulseaudio \
+ --socket=wayland \
+ --socket=x11 \
+ --socket=pcsc \
+ --socket=cups \
+ --require-version=0.11.1 \
+ --persist=.mozilla \
+ --filesystem=xdg-download:rw \
+ --filesystem=/run/.heim_org.h5l.kcm-socket \
+ --device=all \
+ --talk-name=org.freedesktop.FileManager1 \
+ --system-talk-name=org.freedesktop.NetworkManager \
+ --talk-name=org.a11y.Bus \
+ --talk-name=org.gnome.SessionManager \
+ --talk-name=org.freedesktop.ScreenSaver \
+ --talk-name="org.gtk.vfs.*" \
+ --talk-name=org.freedesktop.Notifications \
+ --own-name="org.mpris.MediaPlayer2.firefox.*" \
+ --own-name="org.mozilla.firefox.*" \
+ --own-name="org.mozilla.firefox_beta.*" \
+ --command=firefox
+
+flatpak build-export --disable-sandbox --no-update-summary --exclude='/share/runtime/langpack/*/*' repo build "$FLATPAK_BRANCH"
+flatpak build-export --disable-sandbox --no-update-summary --metadata=metadata.locale --files=files/share/runtime/langpack repo build "$FLATPAK_BRANCH"
+ostree commit --repo=repo --canonical-permissions --branch=screenshots/x86_64 build/screenshots
+flatpak build-update-repo --generate-static-deltas repo
+tar cvfJ flatpak.tar.xz repo
+
+mv -- flatpak.tar.xz "$TARGET_TAR_XZ_FULL_PATH"
+
+# XXX: if we ever wanted to go back to building flatpak bundles, we can revert this command; useful for testing individual artifacts, not publishable
+# flatpak build-bundle "$WORKSPACE"/repo org.mozilla.firefox.flatpak org.mozilla.firefox
+# TARGET_FULL_PATH="$ARTIFACTS_DIR/target.flatpak"
+# mv -- *.flatpak "$TARGET_FULL_PATH"
diff --git a/taskcluster/docker/firefox-snap/Dockerfile b/taskcluster/docker/firefox-snap/Dockerfile
new file mode 100644
index 0000000000..dc002c0133
--- /dev/null
+++ b/taskcluster/docker/firefox-snap/Dockerfile
@@ -0,0 +1,71 @@
+## The below code is from snapcraft/docker/stable.Dockerfile
+## The modifications done are part of the documentation for enabling core18 snaps.
+## https://snapcraft.io/docs/t/creating-docker-images-for-snapcraft/11739
+
+# /!\ The base image must follow the version of the `coreXX` package
+# https://forum.snapcraft.io/t/issues-dockerizing-a-snapcraft-build-process/30294/5
+FROM ubuntu:focal
+
+ENV LANG='en_US.UTF-8' \
+ LANGUAGE='en_US:en' \
+ LC_ALL='en_US.UTF-8' \
+ PATH="/snap/bin:$PATH" \
+ SNAP='/snap/snapcraft/current' \
+ SNAP_NAME='snapcraft' \
+ SNAP_ARCH='amd64' \
+ TERM='dumb' \
+ TZ='Etc/UTC'
+
+RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
+
+# Grab dependencies. snapd is now required per https://github.com/snapcore/snapcraft/pull/3210
+RUN apt-get update && \
+ apt-get dist-upgrade --yes && \
+ apt-get install --yes \
+ curl \
+ jq \
+ squashfs-tools \
+ locales \
+ bzip2 \
+ curl \
+ gcc \
+ git \
+ python3 \
+ locales \
+ snapd \
+ sudo \
+ && \
+locale-gen "$LANG"
+
+COPY download_and_install_snap.sh .
+
+RUN bash download_and_install_snap.sh 'core20'
+RUN bash download_and_install_snap.sh 'gnome-3-38-2004'
+RUN bash download_and_install_snap.sh 'gnome-3-38-2004-sdk'
+RUN bash download_and_install_snap.sh 'snapcraft'
+
+# Fix Python3 installation: Make sure we use the interpreter from
+# the snapcraft snap:
+RUN unlink /snap/snapcraft/current/usr/bin/python3 && \
+ ln -s /snap/snapcraft/current/usr/bin/python3.* /snap/snapcraft/current/usr/bin/python3 && \
+ echo /snap/snapcraft/current/lib/python3.*/site-packages >> /snap/snapcraft/current/usr/lib/python3/dist-packages/site-packages.pth
+
+# Create a snapcraft runner (TODO: move version detection to the core of snapcraft).
+RUN mkdir -p /snap/bin
+RUN echo "#!/bin/sh" > /snap/bin/snapcraft
+RUN snap_version="$(awk '/^version:/{print $2}' /snap/snapcraft/current/meta/snap.yaml)" && echo "export SNAP_VERSION=\"$snap_version\"" >> /snap/bin/snapcraft
+RUN echo 'exec "$SNAP/usr/bin/python3" "$SNAP/bin/snapcraft" "$@"' >> /snap/bin/snapcraft
+RUN chmod +x /snap/bin/snapcraft
+
+RUN mkdir /scripts/
+WORKDIR /scripts/
+# Copy everything in the docker/firefox-snap folder but the Dockerfile
+#
+# XXX The following pattern is neither a regex nor a glob one. It's
+# documented at https://golang.org/pkg/path/filepath/#Match. There's no
+# way of explicitly filtering out "Dockerfile". If one day, someone needs
+# to add a file starting with "D", then we must revisit the pattern below.
+COPY [^D]* /scripts/
+
+# Set a default command useful for debugging
+CMD ["/bin/bash", "--login"]
diff --git a/taskcluster/docker/firefox-snap/Makefile b/taskcluster/docker/firefox-snap/Makefile
new file mode 100644
index 0000000000..d71dc70881
--- /dev/null
+++ b/taskcluster/docker/firefox-snap/Makefile
@@ -0,0 +1,12 @@
+DOCKERIO_USERNAME =$(error DOCKERIO_USERNAME should be set)
+IMAGE_NAME = firefox-snapcraft
+FULL_IMAGE_NAME = $(DOCKERIO_USERNAME)/$(IMAGE_NAME)
+
+build:
+ docker build -t $(FULL_IMAGE_NAME) --no-cache --rm .
+
+push:
+ docker push $(FULL_IMAGE_NAME):latest
+
+pull:
+ docker pull $(FULL_IMAGE_NAME):latest
diff --git a/taskcluster/docker/firefox-snap/download_and_install_snap.sh b/taskcluster/docker/firefox-snap/download_and_install_snap.sh
new file mode 100644
index 0000000000..7def88b2aa
--- /dev/null
+++ b/taskcluster/docker/firefox-snap/download_and_install_snap.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+set -ex
+
+SNAP_NAME="$1"
+SNAP_CHANNEL="${2:-stable}"
+SNAP_INSTALL_LOCATION="${3:-/snap}"
+
+SNAP_METADATA="$(curl --header 'X-Ubuntu-Series: 16' "https://api.snapcraft.io/api/v1/snaps/details/$SNAP_NAME?channel=$SNAP_CHANNEL")"
+
+set +x
+SNAP_SHA512="$(echo "$SNAP_METADATA" | jq '.download_sha512' -r)"
+SNAP_DOWNLOAD_URL="$(echo "$SNAP_METADATA" | jq '.download_url' -r)"
+SNAP_LAST_UPDATED="$(echo "$SNAP_METADATA" | jq '.last_updated' -r)"
+SNAP_REVISION="$(echo "$SNAP_METADATA" | jq '.revision' -r)"
+SNAP_VERSION="$(echo "$SNAP_METADATA" | jq '.version' -r)"
+set -x
+
+echo "Downloading $SNAP_NAME, version $SNAP_VERSION, revision $SNAP_REVISION (last updated: $SNAP_LAST_UPDATED)..."
+curl --location "$SNAP_DOWNLOAD_URL" --output "$SNAP_NAME.snap"
+sha512sum -c <(echo "$SNAP_SHA512 $SNAP_NAME.snap")
+
+mkdir -p "$SNAP_INSTALL_LOCATION/$SNAP_NAME"
+unsquashfs -d "$SNAP_INSTALL_LOCATION/$SNAP_NAME/current" "$SNAP_NAME.snap"
+rm "$SNAP_NAME.snap"
+
+echo "$SNAP_NAME version $SNAP_VERSION has correctly been uploaded and installed." \ No newline at end of file
diff --git a/taskcluster/docker/firefox-snap/extract_locales_from_l10n_json.py b/taskcluster/docker/firefox-snap/extract_locales_from_l10n_json.py
new file mode 100644
index 0000000000..07bc007a31
--- /dev/null
+++ b/taskcluster/docker/firefox-snap/extract_locales_from_l10n_json.py
@@ -0,0 +1,15 @@
+#!/usr/bin/env python3
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import json
+import sys
+
+l10n_changesets_json_path = sys.argv[1]
+with open(l10n_changesets_json_path) as f:
+ locales = json.load(f).keys()
+linux_locales = [l for l in locales if l != "ja-JP-mac"]
+
+print("\n".join(sorted(linux_locales)))
diff --git a/taskcluster/docker/firefox-snap/firefox.desktop b/taskcluster/docker/firefox-snap/firefox.desktop
new file mode 100644
index 0000000000..73e36e8d83
--- /dev/null
+++ b/taskcluster/docker/firefox-snap/firefox.desktop
@@ -0,0 +1,219 @@
+[Desktop Entry]
+Version=1.0
+Name=Firefox Web Browser
+Name[ar]=متصفح الويب فَيَرفُكْس
+Name[ast]=Restolador web Firefox
+Name[bn]=ফায়ারফক্স ওয়েব ব্রাউজার
+Name[ca]=Navegador web Firefox
+Name[cs]=Firefox Webový prohlížeč
+Name[da]=Firefox - internetbrowser
+Name[el]=Περιηγητής Firefox
+Name[es]=Navegador web Firefox
+Name[et]=Firefoxi veebibrauser
+Name[fa]=مرورگر اینترنتی Firefox
+Name[fi]=Firefox-selain
+Name[fr]=Navigateur Web Firefox
+Name[gl]=Navegador web Firefox
+Name[he]=דפדפן האינטרנט Firefox
+Name[hr]=Firefox web preglednik
+Name[hu]=Firefox webböngésző
+Name[it]=Firefox Browser Web
+Name[ja]=Firefox ウェブ・ブラウザ
+Name[ko]=Firefox 웹 브라우저
+Name[ku]=Geroka torê Firefox
+Name[lt]=Firefox interneto naršyklė
+Name[nb]=Firefox Nettleser
+Name[nl]=Firefox webbrowser
+Name[nn]=Firefox Nettlesar
+Name[no]=Firefox Nettleser
+Name[pl]=Przeglądarka WWW Firefox
+Name[pt]=Firefox Navegador Web
+Name[pt_BR]=Navegador Web Firefox
+Name[ro]=Firefox – Navigator Internet
+Name[ru]=Веб-браузер Firefox
+Name[sk]=Firefox - internetový prehliadač
+Name[sl]=Firefox spletni brskalnik
+Name[sv]=Firefox webbläsare
+Name[tr]=Firefox Web Tarayıcısı
+Name[ug]=Firefox توركۆرگۈ
+Name[uk]=Веб-браузер Firefox
+Name[vi]=Trình duyệt web Firefox
+Name[zh_CN]=Firefox 网络浏览器
+Name[zh_TW]=Firefox 網路瀏覽器
+Comment=Browse the World Wide Web
+Comment[ar]=تصفح الشبكة العنكبوتية العالمية
+Comment[ast]=Restola pela Rede
+Comment[bn]=ইন্টারনেট ব্রাউজ করুন
+Comment[ca]=Navegueu per la web
+Comment[cs]=Prohlížení stránek World Wide Webu
+Comment[da]=Surf på internettet
+Comment[de]=Im Internet surfen
+Comment[el]=Μπορείτε να περιηγηθείτε στο διαδίκτυο (Web)
+Comment[es]=Navegue por la web
+Comment[et]=Lehitse veebi
+Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید
+Comment[fi]=Selaa Internetin WWW-sivuja
+Comment[fr]=Naviguer sur le Web
+Comment[gl]=Navegar pola rede
+Comment[he]=גלישה ברחבי האינטרנט
+Comment[hr]=Pretražite web
+Comment[hu]=A világháló böngészése
+Comment[it]=Esplora il web
+Comment[ja]=ウェブを閲覧します
+Comment[ko]=웹을 돌아 다닙니다
+Comment[ku]=Li torê bigere
+Comment[lt]=Naršykite internete
+Comment[nb]=Surf på nettet
+Comment[nl]=Verken het internet
+Comment[nn]=Surf på nettet
+Comment[no]=Surf på nettet
+Comment[pl]=Przeglądanie stron WWW
+Comment[pt]=Navegue na Internet
+Comment[pt_BR]=Navegue na Internet
+Comment[ro]=Navigați pe Internet
+Comment[ru]=Доступ в Интернет
+Comment[sk]=Prehliadanie internetu
+Comment[sl]=Brskajte po spletu
+Comment[sv]=Surfa på webben
+Comment[tr]=İnternet'te Gezinin
+Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ
+Comment[uk]=Перегляд сторінок Інтернету
+Comment[vi]=Để duyệt các trang web
+Comment[zh_CN]=浏览互联网
+Comment[zh_TW]=瀏覽網際網路
+GenericName=Web Browser
+GenericName[ar]=متصفح ويب
+GenericName[ast]=Restolador Web
+GenericName[bn]=ওয়েব ব্রাউজার
+GenericName[ca]=Navegador web
+GenericName[cs]=Webový prohlížeč
+GenericName[da]=Webbrowser
+GenericName[el]=Περιηγητής διαδικτύου
+GenericName[es]=Navegador web
+GenericName[et]=Veebibrauser
+GenericName[fa]=مرورگر اینترنتی
+GenericName[fi]=WWW-selain
+GenericName[fr]=Navigateur Web
+GenericName[gl]=Navegador Web
+GenericName[he]=דפדפן אינטרנט
+GenericName[hr]=Web preglednik
+GenericName[hu]=Webböngésző
+GenericName[it]=Browser web
+GenericName[ja]=ウェブ・ブラウザ
+GenericName[ko]=웹 브라우저
+GenericName[ku]=Geroka torê
+GenericName[lt]=Interneto naršyklė
+GenericName[nb]=Nettleser
+GenericName[nl]=Webbrowser
+GenericName[nn]=Nettlesar
+GenericName[no]=Nettleser
+GenericName[pl]=Przeglądarka WWW
+GenericName[pt]=Navegador Web
+GenericName[pt_BR]=Navegador Web
+GenericName[ro]=Navigator Internet
+GenericName[ru]=Веб-браузер
+GenericName[sk]=Internetový prehliadač
+GenericName[sl]=Spletni brskalnik
+GenericName[sv]=Webbläsare
+GenericName[tr]=Web Tarayıcı
+GenericName[ug]=توركۆرگۈ
+GenericName[uk]=Веб-браузер
+GenericName[vi]=Trình duyệt Web
+GenericName[zh_CN]=网络浏览器
+GenericName[zh_TW]=網路瀏覽器
+Keywords=Internet;WWW;Browser;Web;Explorer
+Keywords[ar]=انترنت;إنترنت;متصفح;ويب;وب
+Keywords[ast]=Internet;WWW;Restolador;Web;Esplorador
+Keywords[ca]=Internet;WWW;Navegador;Web;Explorador;Explorer
+Keywords[cs]=Internet;WWW;Prohlížeč;Web;Explorer
+Keywords[da]=Internet;Internettet;WWW;Browser;Browse;Web;Surf;Nettet
+Keywords[de]=Internet;WWW;Browser;Web;Explorer;Webseite;Site;surfen;online;browsen
+Keywords[el]=Internet;WWW;Browser;Web;Explorer;Διαδίκτυο;Περιηγητής;Firefox;Φιρεφοχ;Ιντερνετ
+Keywords[es]=Explorador;Internet;WWW
+Keywords[fi]=Internet;WWW;Browser;Web;Explorer;selain;Internet-selain;internetselain;verkkoselain;netti;surffaa
+Keywords[fr]=Internet;WWW;Browser;Web;Explorer;Fureteur;Surfer;Navigateur
+Keywords[he]=דפדפן;אינטרנט;רשת;אתרים;אתר;פיירפוקס;מוזילה;
+Keywords[hr]=Internet;WWW;preglednik;Web
+Keywords[hu]=Internet;WWW;Böngésző;Web;Háló;Net;Explorer
+Keywords[it]=Internet;WWW;Browser;Web;Navigatore
+Keywords[is]=Internet;WWW;Vafri;Vefur;Netvafri;Flakk
+Keywords[ja]=Internet;WWW;Web;インターネット;ブラウザ;ウェブ;エクスプローラ
+Keywords[nb]=Internett;WWW;Nettleser;Explorer;Web;Browser;Nettside
+Keywords[nl]=Internet;WWW;Browser;Web;Explorer;Verkenner;Website;Surfen;Online
+Keywords[pt]=Internet;WWW;Browser;Web;Explorador;Navegador
+Keywords[pt_BR]=Internet;WWW;Browser;Web;Explorador;Navegador
+Keywords[ru]=Internet;WWW;Browser;Web;Explorer;интернет;браузер;веб;файрфокс;огнелис
+Keywords[sk]=Internet;WWW;Prehliadač;Web;Explorer
+Keywords[sl]=Internet;WWW;Browser;Web;Explorer;Brskalnik;Splet
+Keywords[tr]=İnternet;WWW;Tarayıcı;Web;Gezgin;Web sitesi;Site;sörf;çevrimiçi;tara
+Keywords[uk]=Internet;WWW;Browser;Web;Explorer;Інтернет;мережа;переглядач;оглядач;браузер;веб;файрфокс;вогнелис;перегляд
+Keywords[vi]=Internet;WWW;Browser;Web;Explorer;Trình duyệt;Trang web
+Keywords[zh_CN]=Internet;WWW;Browser;Web;Explorer;网页;浏览;上网;火狐;Firefox;ff;互联网;网站;
+Keywords[zh_TW]=Internet;WWW;Browser;Web;Explorer;網際網路;網路;瀏覽器;上網;網頁;火狐
+Exec=firefox %u
+Terminal=false
+X-MultipleArgs=false
+Type=Application
+Icon=/browser/chrome/icons/default/default128.png
+Categories=GNOME;GTK;Network;WebBrowser;
+MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall;
+StartupNotify=true
+Actions=NewWindow;NewPrivateWindow;
+
+[Desktop Action NewWindow]
+Name=Open a New Window
+Name[ar]=افتح نافذة جديدة
+Name[ast]=Abrir una ventana nueva
+Name[bn]=Abrir una ventana nueva
+Name[ca]=Obre una finestra nova
+Name[cs]=Otevřít nové okno
+Name[da]=Åbn et nyt vindue
+Name[de]=Ein neues Fenster öffnen
+Name[el]=Άνοιγμα νέου παραθύρου
+Name[es]=Abrir una ventana nueva
+Name[fi]=Avaa uusi ikkuna
+Name[fr]=Ouvrir une nouvelle fenêtre
+Name[gl]=Abrir unha nova xanela
+Name[he]=פתיחת חלון חדש
+Name[hr]=Otvori novi prozor
+Name[hu]=Új ablak nyitása
+Name[it]=Apri una nuova finestra
+Name[ja]=新しいウィンドウを開く
+Name[ko]=새 창 열기
+Name[ku]=Paceyeke nû veke
+Name[lt]=Atverti naują langą
+Name[nb]=Åpne et nytt vindu
+Name[nl]=Nieuw venster openen
+Name[pt]=Abrir nova janela
+Name[pt_BR]=Abrir nova janela
+Name[ro]=Deschide o fereastră nouă
+Name[ru]=Новое окно
+Name[sk]=Otvoriť nové okno
+Name[sl]=Odpri novo okno
+Name[sv]=Öppna ett nytt fönster
+Name[tr]=Yeni pencere aç
+Name[ug]=يېڭى كۆزنەك ئېچىش
+Name[uk]=Відкрити нове вікно
+Name[vi]=Mở cửa sổ mới
+Name[zh_CN]=新建窗口
+Name[zh_TW]=開啟新視窗
+Exec=firefox -new-window
+
+[Desktop Action NewPrivateWindow]
+Name=Open a New Private Window
+Name[ar]=افتح نافذة جديدة للتصفح الخاص
+Name[ca]=Obre una finestra nova en mode d'incògnit
+Name[de]=Ein neues privates Fenster öffnen
+Name[es]=Abrir una ventana privada nueva
+Name[fi]=Avaa uusi yksityinen ikkuna
+Name[fr]=Ouvrir une nouvelle fenêtre de navigation privée
+Name[he]=פתיחת חלון גלישה פרטית חדש
+Name[hu]=Új privát ablak nyitása
+Name[it]=Apri una nuova finestra anonima
+Name[nb]=Åpne et nytt privat vindu
+Name[ru]=Новое приватное окно
+Name[sl]=Odpri novo okno zasebnega brskanja
+Name[tr]=Yeni bir pencere aç
+Name[uk]=Відкрити нове вікно у потайливому режимі
+Name[zh_TW]=開啟新隱私瀏覽視窗
+Exec=firefox -private-window
diff --git a/taskcluster/docker/firefox-snap/firefox.snapcraft.yaml.in b/taskcluster/docker/firefox-snap/firefox.snapcraft.yaml.in
new file mode 100644
index 0000000000..18dfc64089
--- /dev/null
+++ b/taskcluster/docker/firefox-snap/firefox.snapcraft.yaml.in
@@ -0,0 +1,92 @@
+name: firefox
+version: @VERSION@-@BUILD_NUMBER@
+summary: Mozilla Firefox web browser
+description: Firefox is a powerful, extensible web browser with support for modern web application technologies.
+confinement: strict
+grade: stable
+base: core20
+compression: lzo
+
+apps:
+ firefox:
+ command: firefox
+ command-chain: [tmpdir]
+ desktop: distribution/firefox.desktop
+ extensions: [gnome-3-38]
+ environment:
+ HOME: "$SNAP_USER_COMMON"
+ GTK_USE_PORTAL: 1
+ slots:
+ - dbus-daemon
+ - mpris
+ plugs:
+ - avahi-observe
+ - browser-sandbox
+ - camera
+ - cups-control
+ - gsettings
+ - hardware-observe
+ - home
+ - joystick
+ - network
+ - network-observe
+ - opengl
+ - pulseaudio
+ - removable-media
+ - screen-inhibit-control
+ - system-packages-doc
+ - u2f-devices
+ - unity7
+ - upower-observe
+
+plugs:
+ browser-sandbox:
+ interface: browser-support
+ allow-sandbox: true
+ etc-firefox-policies:
+ interface: system-files
+ read: [/etc/firefox/policies]
+
+layout:
+ /usr/share/libdrm:
+ bind: $SNAP/gnome-platform/usr/share/libdrm
+
+parts:
+ firefox:
+ plugin: dump
+ source: source
+ stage-packages:
+ - libxt6
+ - libdbus-glib-1-2
+ - libasound2
+ - libpci3
+ - libpulse0
+ - libgl1-mesa-dri
+ - libgl1-mesa-glx
+ - libmirclient9
+ - desktop-file-utils
+ - ffmpeg
+ - libc-bin
+ - locales-all
+ - libcurl3-gnutls
+ prime:
+ - -usr/lib/*/libharfbuzz*
+ - -usr/lib/*/*pango*
+
+ # Find files provided by the base and platform snap and ensure they aren't
+ # duplicated in this snap
+ cleanup:
+ after: [firefox]
+ plugin: nil
+ build-snaps: [core20, gnome-3-38-2004]
+ override-prime: |
+ set -eux
+ for snap in "core20" "gnome-3-38-2004"; do
+ cd "/snap/$snap/current" && find . -type f,l -exec rm -f "$SNAPCRAFT_PRIME/{}" \;
+ done
+
+slots:
+ dbus-daemon:
+ interface: dbus
+ bus: session
+ name: org.mozilla.firefox
diff --git a/taskcluster/docker/firefox-snap/policies.json b/taskcluster/docker/firefox-snap/policies.json
new file mode 100644
index 0000000000..f36622021f
--- /dev/null
+++ b/taskcluster/docker/firefox-snap/policies.json
@@ -0,0 +1,5 @@
+{
+ "policies": {
+ "DisableAppUpdate": true
+ }
+}
diff --git a/taskcluster/docker/firefox-snap/runme.sh b/taskcluster/docker/firefox-snap/runme.sh
new file mode 100755
index 0000000000..308640a8c8
--- /dev/null
+++ b/taskcluster/docker/firefox-snap/runme.sh
@@ -0,0 +1,104 @@
+#!/bin/bash
+
+set -xe
+
+# Thunderbird Snap builds will set this to "thunderbird"
+: PRODUCT "${PRODUCT:=firefox}"
+
+# Required env variables
+test "$VERSION"
+test "$BUILD_NUMBER"
+test "$CANDIDATES_DIR"
+test "$L10N_CHANGESETS"
+
+# Optional env variables
+: WORKSPACE "${WORKSPACE:=/home/worker/workspace}"
+: ARTIFACTS_DIR "${ARTIFACTS_DIR:=/home/worker/artifacts}"
+: PUSH_TO_CHANNEL ""
+
+SCRIPT_DIRECTORY="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+TARGET="target.snap"
+TARGET_FULL_PATH="$ARTIFACTS_DIR/$TARGET"
+SOURCE_DEST="${WORKSPACE}/source"
+
+mkdir -p "$ARTIFACTS_DIR"
+rm -rf "$SOURCE_DEST" && mkdir -p "$SOURCE_DEST"
+
+CURL="curl --location --retry 10 --retry-delay 10"
+
+# Download and extract en-US linux64 binary
+$CURL -o "${WORKSPACE}/${PRODUCT}.tar.bz2" \
+ "${CANDIDATES_DIR}/${VERSION}-candidates/build${BUILD_NUMBER}/linux-x86_64/en-US/${PRODUCT}-${VERSION}.tar.bz2"
+tar -C "$SOURCE_DEST" -xf "${WORKSPACE}/${PRODUCT}.tar.bz2" --strip-components=1
+
+DISTRIBUTION_DIR="$SOURCE_DEST/distribution"
+if [[ "$PRODUCT" == "firefox" ]]; then
+ # Get Ubuntu configuration
+ PARTNER_CONFIG_DIR="$WORKSPACE/partner_config"
+ git clone https://github.com/mozilla-partners/canonical.git "$PARTNER_CONFIG_DIR"
+ mv "$PARTNER_CONFIG_DIR/desktop/ubuntu/distribution" "$DISTRIBUTION_DIR"
+else
+ mkdir -p "$DISTRIBUTION_DIR"
+fi
+
+cp -v "$SCRIPT_DIRECTORY/${PRODUCT}.desktop" "$DISTRIBUTION_DIR"
+
+# Add a group policy file to disable app updates, as those are handled by snapd
+cp -v "$SCRIPT_DIRECTORY/policies.json" "$DISTRIBUTION_DIR"
+
+# Use list of locales to fetch L10N XPIs
+$CURL -o "${WORKSPACE}/l10n_changesets.json" "$L10N_CHANGESETS"
+locales=$(python3 "$SCRIPT_DIRECTORY/extract_locales_from_l10n_json.py" "${WORKSPACE}/l10n_changesets.json")
+
+mkdir -p "$DISTRIBUTION_DIR/extensions"
+for locale in $locales; do
+ $CURL -o "$SOURCE_DEST/distribution/extensions/langpack-${locale}@${PRODUCT}.mozilla.org.xpi" \
+ "$CANDIDATES_DIR/${VERSION}-candidates/build${BUILD_NUMBER}/linux-x86_64/xpi/${locale}.xpi"
+done
+
+# In addition to the packages downloaded below, snapcraft fetches deb packages from ubuntu.com,
+# when a snap is built,. They may bump packages there and remove the old ones. Updating the
+# database allows snapcraft to find the latest packages.
+# For more context, see 1448239
+apt-get update
+
+# Extract gtk30.mo from Ubuntu language packs
+apt download language-pack-gnome-*-base
+for i in *.deb; do
+ # shellcheck disable=SC2086
+ dpkg-deb --fsys-tarfile $i | tar xv -C "$SOURCE_DEST" --wildcards "./usr/share/locale-langpack/*/LC_MESSAGES/gtk30.mo" || true
+done
+
+# Add wrapper script to set TMPDIR appropriate for the snap
+cp -v "$SCRIPT_DIRECTORY/tmpdir" "$SOURCE_DEST"
+
+# Generate snapcraft manifest
+sed -e "s/@VERSION@/${VERSION}/g" -e "s/@BUILD_NUMBER@/${BUILD_NUMBER}/g" ${PRODUCT}.snapcraft.yaml.in > "${WORKSPACE}/snapcraft.yaml"
+cd "${WORKSPACE}"
+
+# Make sure snapcraft knows we're building amd64, even though we may not be on this arch.
+export SNAP_ARCH='amd64'
+
+snapcraft
+
+mv -- *.snap "$TARGET_FULL_PATH"
+
+cd "$ARTIFACTS_DIR"
+
+# Generate checksums file
+size=$(stat --printf="%s" "$TARGET_FULL_PATH")
+sha=$(sha512sum "$TARGET_FULL_PATH" | awk '{print $1}')
+echo "$sha sha512 $size $TARGET" > "$TARGET.checksums"
+
+echo "Generating signing manifest"
+hash=$(sha512sum "$TARGET.checksums" | awk '{print $1}')
+
+cat << EOF > signing_manifest.json
+[{"file_to_sign": "$TARGET.checksums", "hash": "$hash"}]
+EOF
+
+# For posterity
+find . -ls
+cat "$TARGET.checksums"
+cat signing_manifest.json
diff --git a/taskcluster/docker/firefox-snap/tmpdir b/taskcluster/docker/firefox-snap/tmpdir
new file mode 100755
index 0000000000..e7e60801fa
--- /dev/null
+++ b/taskcluster/docker/firefox-snap/tmpdir
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+# Set TMPDIR to be under the user's default Downloads dir
+export TMPDIR=$(xdg-user-dir DOWNLOAD)/firefox.tmp
+
+exec "$@"
diff --git a/taskcluster/docker/funsize-update-generator/Dockerfile b/taskcluster/docker/funsize-update-generator/Dockerfile
new file mode 100644
index 0000000000..bbd4f518df
--- /dev/null
+++ b/taskcluster/docker/funsize-update-generator/Dockerfile
@@ -0,0 +1,48 @@
+FROM debian:11
+
+# Required software
+ENV DEBIAN_FRONTEND noninteractive
+RUN apt-get update -q && \
+ apt-get install -yyq --no-install-recommends \
+ bzip2 \
+ ca-certificates \
+ curl \
+ gcc \
+ jq \
+ libdpkg-perl \
+ libgetopt-simple-perl \
+ liblzma-dev \
+ locales \
+ python3 \
+ libpython3-dev \
+ python3-dev \
+ python3-pip \
+ xz-utils
+RUN useradd -d /home/worker -s /bin/bash -m worker
+COPY requirements.txt /
+
+RUN locale-gen en_CA.UTF-8
+ENV LANG en_CA.UTF-8
+ENV LANGUAGE en_CA.UTF-8
+ENV LANG_ALL en_CA.UTF-8
+ENV LC_ALL en_CA.UTF-8
+
+RUN ["pip", "install", "-r", "/requirements.txt"]
+
+# scripts
+RUN mkdir /home/worker/bin
+COPY scripts/* /home/worker/bin/
+
+COPY runme.sh /runme.sh
+RUN chmod 755 /home/worker/bin/* /*.sh
+RUN mkdir /home/worker/keys
+COPY *.pubkey /home/worker/keys/
+
+ENV HOME /home/worker
+ENV SHELL /bin/bash
+ENV USER worker
+ENV LOGNAME worker
+
+USER worker
+
+CMD ["/runme.sh"]
diff --git a/taskcluster/docker/funsize-update-generator/Makefile b/taskcluster/docker/funsize-update-generator/Makefile
new file mode 100644
index 0000000000..6b67f0ed90
--- /dev/null
+++ b/taskcluster/docker/funsize-update-generator/Makefile
@@ -0,0 +1,9 @@
+IMAGE_NAME = funsize-update-generator
+
+build:
+ docker build -t $(IMAGE_NAME) --no-cache --rm .
+
+update_pubkeys:
+ curl https://hg.mozilla.org/mozilla-central/raw-file/default/toolkit/mozapps/update/updater/nightly_aurora_level3_primary.der | openssl x509 -inform DER -pubkey -noout > nightly.pubkey
+ curl https://hg.mozilla.org/mozilla-central/raw-file/default/toolkit/mozapps/update/updater/dep1.der | openssl x509 -inform DER -pubkey -noout > dep.pubkey
+ curl https://hg.mozilla.org/mozilla-central/raw-file/default/toolkit/mozapps/update/updater/release_primary.der | openssl x509 -inform DER -pubkey -noout > release.pubkey
diff --git a/taskcluster/docker/funsize-update-generator/README b/taskcluster/docker/funsize-update-generator/README
new file mode 100644
index 0000000000..5e9507be71
--- /dev/null
+++ b/taskcluster/docker/funsize-update-generator/README
@@ -0,0 +1,7 @@
+
+To run this locally for testing/development purposes:
+
+1. Find a funsize generating task ID
+2. docker run -t -e TASKCLUSTER_ROOT_URL="https://firefox-ci-tc.services.mozilla.com" -e SIGNING_CERT='nightly' -e MAR_CHANNEL_ID='firefox-mozilla-central' -e TASK_ID="${TASK_ID}" -e EXTRA_PARAMS="--arch=x86_64" funsize-update-generator /runme.sh
+
+The TASK_ID should be a recent "partials" Task.
diff --git a/taskcluster/docker/funsize-update-generator/dep1.pubkey b/taskcluster/docker/funsize-update-generator/dep1.pubkey
new file mode 100644
index 0000000000..927b2cc947
--- /dev/null
+++ b/taskcluster/docker/funsize-update-generator/dep1.pubkey
@@ -0,0 +1,14 @@
+-----BEGIN PUBLIC KEY-----
+MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA8Y6AS+xwKoXZl0X5qOKr
+0I00xC4UN+IMjA1LIQoZ2GBkiqQF3q8v2nWTFE0+47+3NtP0l8tvsQY+LSYR4Fek
+v2Vx4m/CAMKmWzW6Vtlj80y6rQ04V19l41bZXvCIBW5fm9sAvPgc7CngkcLySNqk
+8vf57cUEpOmbsjSOCmK0j8hh03I1eWogpbAVEchSm1xN2sUJaVTvz5j8BfE6Vm0i
+nN7V0zF+AOxzvntZIpfUqMZbHRiMkGn4l9rjia1Rz0qUc9RNCJkNocyKtQ2N2wnN
+FjHpmK9x2V71cS1JQGhgLegrswPCAWY1lTmiLk9LweqGoVL0rqR4LCkb0VCaeSRe
+6bUEYcU1ZQedE80zGKB3AfoC5br1shYY0xjmyRSCQ8m8WE60HzXhL8wczKrn5yoJ
+iF6BxFwcYsvrWBPgIYVZLcqjODfR/M62o8yIfTC7yBcIdycJ0sWhB47dHAFxv1kc
+wv8Ik9ftvDyupE8kwcl58fNOXz93j7IxMry/ey27NyYpESPOUNcjT8TP26FdGebg
+4iJx0/LaYmaNUdchfBBlaYqGdH6ZGK0OeVxzHstGuG0gebm/igYcpaFxiQzvWijX
+MIAU56s4g+yj7pSzT5/s9r8Gv+YhsNHKm4hnwLZaITV0lLMT5h/OZGseQTPMBnAR
+hK3CIfcqG0I23hdwI29ZuUMCAwEAAQ==
+-----END PUBLIC KEY-----
diff --git a/taskcluster/docker/funsize-update-generator/nightly.pubkey b/taskcluster/docker/funsize-update-generator/nightly.pubkey
new file mode 100644
index 0000000000..e51049844c
--- /dev/null
+++ b/taskcluster/docker/funsize-update-generator/nightly.pubkey
@@ -0,0 +1,14 @@
+-----BEGIN PUBLIC KEY-----
+MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAth151NGY8PBzn0bii9Yc
+AjYHZDwP9Lj1c3owG0zLqW2kPcdp86QTAcoYunHGYFFakNG3tooZhzwkMjZ1OrXc
+ERjD6AuVSGIBdsKtKP4vLtMjDUteFN4K2+rveozcnYFZuTWEajGu8uoYsv4QgdEA
+nTBC39j0J33xlfUR+XKuxzhxNrFX+fRFWuLDJrPziMcVA/mzf0gXlhtEsfV0HYyg
+yWpHdIWww+llysD1QOQAHk94Ss8c/4BFXFxlwlLeNlB1ZqLm1LsNy0jUy9EHeO3C
+H6eqmiFEbpdjlrkJdgR1NcTzeY/Qf/nhWH6BAZrSapQycF7OSLU+rFWMQUElSPLc
+NVl7oNAAfSYLTvRjPGi+mJK3wGFQw1EpwQl+elE1oj4+sHvIVpDrLb6btpxfr1cZ
+pR4Di/hkOIymxEDWvtUhOxUXnYbDKQSDcAHKM/xR3sdIAiVtVuL4hyBwlAqkQc2j
+H+SmnCbazgnq5+dN4y5DjoOgbZQ/koE3s3bUzzMeIxaul9v4gMtGROw3PQ3OZcP0
+lgjPRhY+NeTnWMo2nGb4/eS6Cn2qFLfbEQjsj6pJJBNKfvK/gm1jXb3PgXXdf8+d
+2xTPOX8QNpSK7C0w4vYlvSpYZlsx2cznEOV6LDqP0QHUnmd/k1xWRRGiQ7gtT+BV
+Fn0h7JyTGmEdFu6l4OhS8hMCAwEAAQ==
+-----END PUBLIC KEY-----
diff --git a/taskcluster/docker/funsize-update-generator/release.pubkey b/taskcluster/docker/funsize-update-generator/release.pubkey
new file mode 100644
index 0000000000..ec1103d828
--- /dev/null
+++ b/taskcluster/docker/funsize-update-generator/release.pubkey
@@ -0,0 +1,14 @@
+-----BEGIN PUBLIC KEY-----
+MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxCHbY+fP3dvaP9XVbmK6
+i4rbqo72INEWgDSYbr/DIYfCSzHC9H8pU8dyjt+Nd8OtoUZtBD1N9fP7SlrvPZSI
+ZSW4k0e9Ky5aV3Uy+ivamSvYszkhqdeP2y7MBu73XHKYONR9PnKa+ovmREwSEI+h
+1e0ebm8zvF7Ndwx0mOeZkDu9SDkDGg4aj2xrJyBBOuGVjuctMZ6l1davANI5xiJ0
+GBEU3tR1gJs1T4vLBis5mEFn9y4kgyw/HrxmRYGnZL4fLb2fTI+pNW0Twu3KWwwi
+LgLkkVrNWiHSk7YWqxjcg5IA3pQETQ17paTHoB5Mnkvuh6MkDXvRG5VgAHZAigr6
+fJMsasOUaBeos/cD1LDQEIObpetlxc0Fiu/lvUts0755otkhI+yv35+wUa6GJrsE
+CsT7c/LaFtQXg06aGXbMLDn0bE/e+nw9KWT/rE1iYXMFkzrqoTeYJ+v7/fD/ywU8
+m8l4CZmXxzd/RogMrM3xl+j4ucAAltDQyL4yLySaIT05w5U8z2zJDEXFvpFDSRfF
+K3kjLwGub7wNwaQDuh/msIUdavu4g+GNikCXAJ8AssLuYatyHoltd2tf+EIIDW3U
+zzLpymnLo3cAz3IPfXyqVB+mcLcpqbHjl3hWms6l1wGtz6S4WqdrWs/KfzS5EyDK
+r63xn1Rg/XFmR57EsFEXAZ8CAwEAAQ==
+-----END PUBLIC KEY-----
diff --git a/taskcluster/docker/funsize-update-generator/requirements.in b/taskcluster/docker/funsize-update-generator/requirements.in
new file mode 100644
index 0000000000..3360c71690
--- /dev/null
+++ b/taskcluster/docker/funsize-update-generator/requirements.in
@@ -0,0 +1,7 @@
+aiohttp
+awscli
+mar
+redo
+requests
+scriptworker
+sh
diff --git a/taskcluster/docker/funsize-update-generator/requirements.txt b/taskcluster/docker/funsize-update-generator/requirements.txt
new file mode 100644
index 0000000000..c4ef0cfd0d
--- /dev/null
+++ b/taskcluster/docker/funsize-update-generator/requirements.txt
@@ -0,0 +1,663 @@
+#
+# This file is autogenerated by pip-compile with Python 3.10
+# by the following command:
+#
+# pip-compile --generate-hashes --output-file=requirements.txt requirements.in
+#
+aiohttp==3.8.3 \
+ --hash=sha256:02f9a2c72fc95d59b881cf38a4b2be9381b9527f9d328771e90f72ac76f31ad8 \
+ --hash=sha256:059a91e88f2c00fe40aed9031b3606c3f311414f86a90d696dd982e7aec48142 \
+ --hash=sha256:05a3c31c6d7cd08c149e50dc7aa2568317f5844acd745621983380597f027a18 \
+ --hash=sha256:08c78317e950e0762c2983f4dd58dc5e6c9ff75c8a0efeae299d363d439c8e34 \
+ --hash=sha256:09e28f572b21642128ef31f4e8372adb6888846f32fecb288c8b0457597ba61a \
+ --hash=sha256:0d2c6d8c6872df4a6ec37d2ede71eff62395b9e337b4e18efd2177de883a5033 \
+ --hash=sha256:16c121ba0b1ec2b44b73e3a8a171c4f999b33929cd2397124a8c7fcfc8cd9e06 \
+ --hash=sha256:1d90043c1882067f1bd26196d5d2db9aa6d268def3293ed5fb317e13c9413ea4 \
+ --hash=sha256:1e56b9cafcd6531bab5d9b2e890bb4937f4165109fe98e2b98ef0dcfcb06ee9d \
+ --hash=sha256:20acae4f268317bb975671e375493dbdbc67cddb5f6c71eebdb85b34444ac46b \
+ --hash=sha256:21b30885a63c3f4ff5b77a5d6caf008b037cb521a5f33eab445dc566f6d092cc \
+ --hash=sha256:21d69797eb951f155026651f7e9362877334508d39c2fc37bd04ff55b2007091 \
+ --hash=sha256:256deb4b29fe5e47893fa32e1de2d73c3afe7407738bd3c63829874661d4822d \
+ --hash=sha256:25892c92bee6d9449ffac82c2fe257f3a6f297792cdb18ad784737d61e7a9a85 \
+ --hash=sha256:2ca9af5f8f5812d475c5259393f52d712f6d5f0d7fdad9acdb1107dd9e3cb7eb \
+ --hash=sha256:2d252771fc85e0cf8da0b823157962d70639e63cb9b578b1dec9868dd1f4f937 \
+ --hash=sha256:2dea10edfa1a54098703cb7acaa665c07b4e7568472a47f4e64e6319d3821ccf \
+ --hash=sha256:2df5f139233060578d8c2c975128fb231a89ca0a462b35d4b5fcf7c501ebdbe1 \
+ --hash=sha256:2feebbb6074cdbd1ac276dbd737b40e890a1361b3cc30b74ac2f5e24aab41f7b \
+ --hash=sha256:309aa21c1d54b8ef0723181d430347d7452daaff93e8e2363db8e75c72c2fb2d \
+ --hash=sha256:3828fb41b7203176b82fe5d699e0d845435f2374750a44b480ea6b930f6be269 \
+ --hash=sha256:398701865e7a9565d49189f6c90868efaca21be65c725fc87fc305906be915da \
+ --hash=sha256:43046a319664a04b146f81b40e1545d4c8ac7b7dd04c47e40bf09f65f2437346 \
+ --hash=sha256:437399385f2abcd634865705bdc180c8314124b98299d54fe1d4c8990f2f9494 \
+ --hash=sha256:45d88b016c849d74ebc6f2b6e8bc17cabf26e7e40c0661ddd8fae4c00f015697 \
+ --hash=sha256:47841407cc89a4b80b0c52276f3cc8138bbbfba4b179ee3acbd7d77ae33f7ac4 \
+ --hash=sha256:4a4fbc769ea9b6bd97f4ad0b430a6807f92f0e5eb020f1e42ece59f3ecfc4585 \
+ --hash=sha256:4ab94426ddb1ecc6a0b601d832d5d9d421820989b8caa929114811369673235c \
+ --hash=sha256:4b0f30372cef3fdc262f33d06e7b411cd59058ce9174ef159ad938c4a34a89da \
+ --hash=sha256:4e3a23ec214e95c9fe85a58470b660efe6534b83e6cbe38b3ed52b053d7cb6ad \
+ --hash=sha256:512bd5ab136b8dc0ffe3fdf2dfb0c4b4f49c8577f6cae55dca862cd37a4564e2 \
+ --hash=sha256:527b3b87b24844ea7865284aabfab08eb0faf599b385b03c2aa91fc6edd6e4b6 \
+ --hash=sha256:54d107c89a3ebcd13228278d68f1436d3f33f2dd2af5415e3feaeb1156e1a62c \
+ --hash=sha256:5835f258ca9f7c455493a57ee707b76d2d9634d84d5d7f62e77be984ea80b849 \
+ --hash=sha256:598adde339d2cf7d67beaccda3f2ce7c57b3b412702f29c946708f69cf8222aa \
+ --hash=sha256:599418aaaf88a6d02a8c515e656f6faf3d10618d3dd95866eb4436520096c84b \
+ --hash=sha256:5bf651afd22d5f0c4be16cf39d0482ea494f5c88f03e75e5fef3a85177fecdeb \
+ --hash=sha256:5c59fcd80b9049b49acd29bd3598cada4afc8d8d69bd4160cd613246912535d7 \
+ --hash=sha256:653acc3880459f82a65e27bd6526e47ddf19e643457d36a2250b85b41a564715 \
+ --hash=sha256:66bd5f950344fb2b3dbdd421aaa4e84f4411a1a13fca3aeb2bcbe667f80c9f76 \
+ --hash=sha256:6f3553510abdbec67c043ca85727396ceed1272eef029b050677046d3387be8d \
+ --hash=sha256:7018ecc5fe97027214556afbc7c502fbd718d0740e87eb1217b17efd05b3d276 \
+ --hash=sha256:713d22cd9643ba9025d33c4af43943c7a1eb8547729228de18d3e02e278472b6 \
+ --hash=sha256:73a4131962e6d91109bca6536416aa067cf6c4efb871975df734f8d2fd821b37 \
+ --hash=sha256:75880ed07be39beff1881d81e4a907cafb802f306efd6d2d15f2b3c69935f6fb \
+ --hash=sha256:75e14eac916f024305db517e00a9252714fce0abcb10ad327fb6dcdc0d060f1d \
+ --hash=sha256:8135fa153a20d82ffb64f70a1b5c2738684afa197839b34cc3e3c72fa88d302c \
+ --hash=sha256:84b14f36e85295fe69c6b9789b51a0903b774046d5f7df538176516c3e422446 \
+ --hash=sha256:86fc24e58ecb32aee09f864cb11bb91bc4c1086615001647dbfc4dc8c32f4008 \
+ --hash=sha256:87f44875f2804bc0511a69ce44a9595d5944837a62caecc8490bbdb0e18b1342 \
+ --hash=sha256:88c70ed9da9963d5496d38320160e8eb7e5f1886f9290475a881db12f351ab5d \
+ --hash=sha256:88e5be56c231981428f4f506c68b6a46fa25c4123a2e86d156c58a8369d31ab7 \
+ --hash=sha256:89d2e02167fa95172c017732ed7725bc8523c598757f08d13c5acca308e1a061 \
+ --hash=sha256:8d6aaa4e7155afaf994d7924eb290abbe81a6905b303d8cb61310a2aba1c68ba \
+ --hash=sha256:92a2964319d359f494f16011e23434f6f8ef0434acd3cf154a6b7bec511e2fb7 \
+ --hash=sha256:96372fc29471646b9b106ee918c8eeb4cca423fcbf9a34daa1b93767a88a2290 \
+ --hash=sha256:978b046ca728073070e9abc074b6299ebf3501e8dee5e26efacb13cec2b2dea0 \
+ --hash=sha256:9c7149272fb5834fc186328e2c1fa01dda3e1fa940ce18fded6d412e8f2cf76d \
+ --hash=sha256:a0239da9fbafd9ff82fd67c16704a7d1bccf0d107a300e790587ad05547681c8 \
+ --hash=sha256:ad5383a67514e8e76906a06741febd9126fc7c7ff0f599d6fcce3e82b80d026f \
+ --hash=sha256:ad61a9639792fd790523ba072c0555cd6be5a0baf03a49a5dd8cfcf20d56df48 \
+ --hash=sha256:b29bfd650ed8e148f9c515474a6ef0ba1090b7a8faeee26b74a8ff3b33617502 \
+ --hash=sha256:b97decbb3372d4b69e4d4c8117f44632551c692bb1361b356a02b97b69e18a62 \
+ --hash=sha256:ba71c9b4dcbb16212f334126cc3d8beb6af377f6703d9dc2d9fb3874fd667ee9 \
+ --hash=sha256:c37c5cce780349d4d51739ae682dec63573847a2a8dcb44381b174c3d9c8d403 \
+ --hash=sha256:c971bf3786b5fad82ce5ad570dc6ee420f5b12527157929e830f51c55dc8af77 \
+ --hash=sha256:d1fde0f44029e02d02d3993ad55ce93ead9bb9b15c6b7ccd580f90bd7e3de476 \
+ --hash=sha256:d24b8bb40d5c61ef2d9b6a8f4528c2f17f1c5d2d31fed62ec860f6006142e83e \
+ --hash=sha256:d5ba88df9aa5e2f806650fcbeedbe4f6e8736e92fc0e73b0400538fd25a4dd96 \
+ --hash=sha256:d6f76310355e9fae637c3162936e9504b4767d5c52ca268331e2756e54fd4ca5 \
+ --hash=sha256:d737fc67b9a970f3234754974531dc9afeea11c70791dcb7db53b0cf81b79784 \
+ --hash=sha256:da22885266bbfb3f78218dc40205fed2671909fbd0720aedba39b4515c038091 \
+ --hash=sha256:da37dcfbf4b7f45d80ee386a5f81122501ec75672f475da34784196690762f4b \
+ --hash=sha256:db19d60d846283ee275d0416e2a23493f4e6b6028825b51290ac05afc87a6f97 \
+ --hash=sha256:db4c979b0b3e0fa7e9e69ecd11b2b3174c6963cebadeecfb7ad24532ffcdd11a \
+ --hash=sha256:e164e0a98e92d06da343d17d4e9c4da4654f4a4588a20d6c73548a29f176abe2 \
+ --hash=sha256:e168a7560b7c61342ae0412997b069753f27ac4862ec7867eff74f0fe4ea2ad9 \
+ --hash=sha256:e381581b37db1db7597b62a2e6b8b57c3deec95d93b6d6407c5b61ddc98aca6d \
+ --hash=sha256:e65bc19919c910127c06759a63747ebe14f386cda573d95bcc62b427ca1afc73 \
+ --hash=sha256:e7b8813be97cab8cb52b1375f41f8e6804f6507fe4660152e8ca5c48f0436017 \
+ --hash=sha256:e8a78079d9a39ca9ca99a8b0ac2fdc0c4d25fc80c8a8a82e5c8211509c523363 \
+ --hash=sha256:ebf909ea0a3fc9596e40d55d8000702a85e27fd578ff41a5500f68f20fd32e6c \
+ --hash=sha256:ec40170327d4a404b0d91855d41bfe1fe4b699222b2b93e3d833a27330a87a6d \
+ --hash=sha256:f178d2aadf0166be4df834c4953da2d7eef24719e8aec9a65289483eeea9d618 \
+ --hash=sha256:f88df3a83cf9df566f171adba39d5bd52814ac0b94778d2448652fc77f9eb491 \
+ --hash=sha256:f973157ffeab5459eefe7b97a804987876dd0a55570b8fa56b4e1954bf11329b \
+ --hash=sha256:ff25f48fc8e623d95eca0670b8cc1469a83783c924a602e0fbd47363bb54aaca
+ # via
+ # -r requirements.in
+ # scriptworker
+ # taskcluster
+aiomemoizettl==0.0.3 \
+ --hash=sha256:07a6becac60f6cd2604b9f2b73bcd9a50079a0b7b55e2a4e45b1eec5a3ea9659 \
+ --hash=sha256:0a80d2dc765e545263f515363b6700ec8cf86fa3968b529f56390b28e34f743d
+ # via scriptworker
+aiosignal==1.3.1 \
+ --hash=sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc \
+ --hash=sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17
+ # via aiohttp
+arrow==1.2.3 \
+ --hash=sha256:3934b30ca1b9f292376d9db15b19446088d12ec58629bc3f0da28fd55fb633a1 \
+ --hash=sha256:5a49ab92e3b7b71d96cd6bfcc4df14efefc9dfa96ea19045815914a6ab6b1fe2
+ # via scriptworker
+asn1crypto==1.5.1 \
+ --hash=sha256:13ae38502be632115abf8a24cbe5f4da52e3b5231990aff31123c805306ccb9c \
+ --hash=sha256:db4e40728b728508912cbb3d44f19ce188f218e9eba635821bb4b68564f8fd67
+ # via mar
+async-timeout==4.0.2 \
+ --hash=sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15 \
+ --hash=sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c
+ # via
+ # aiohttp
+ # taskcluster
+attrs==22.2.0 \
+ --hash=sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836 \
+ --hash=sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99
+ # via
+ # aiohttp
+ # jsonschema
+awscli==1.27.46 \
+ --hash=sha256:276cef3cc89e6c1888eb327d4a2d7702105a49271b1e3e93472bcd9f02beb24c \
+ --hash=sha256:a9b64b091db2edd13a611b4c4ec47fc2e7c67b3efe5ea840466f2138a9634c7b
+ # via -r requirements.in
+botocore==1.29.46 \
+ --hash=sha256:78bf25933e35eb6354a9e80fe156f86dce4d346a92afe364dfce25c17ab0639f \
+ --hash=sha256:dbac2fde265f13beb9191ec3ff63b90b515e9ed63875edc3afbd72c5f585e48b
+ # via
+ # awscli
+ # s3transfer
+certifi==2022.12.7 \
+ --hash=sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3 \
+ --hash=sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18
+ # via requests
+cffi==1.15.1 \
+ --hash=sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5 \
+ --hash=sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef \
+ --hash=sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104 \
+ --hash=sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426 \
+ --hash=sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405 \
+ --hash=sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375 \
+ --hash=sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a \
+ --hash=sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e \
+ --hash=sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc \
+ --hash=sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf \
+ --hash=sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185 \
+ --hash=sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497 \
+ --hash=sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3 \
+ --hash=sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35 \
+ --hash=sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c \
+ --hash=sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83 \
+ --hash=sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21 \
+ --hash=sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca \
+ --hash=sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984 \
+ --hash=sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac \
+ --hash=sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd \
+ --hash=sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee \
+ --hash=sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a \
+ --hash=sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2 \
+ --hash=sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192 \
+ --hash=sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7 \
+ --hash=sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585 \
+ --hash=sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f \
+ --hash=sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e \
+ --hash=sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27 \
+ --hash=sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b \
+ --hash=sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e \
+ --hash=sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e \
+ --hash=sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d \
+ --hash=sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c \
+ --hash=sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415 \
+ --hash=sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82 \
+ --hash=sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02 \
+ --hash=sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314 \
+ --hash=sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325 \
+ --hash=sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c \
+ --hash=sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3 \
+ --hash=sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914 \
+ --hash=sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045 \
+ --hash=sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d \
+ --hash=sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9 \
+ --hash=sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5 \
+ --hash=sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2 \
+ --hash=sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c \
+ --hash=sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3 \
+ --hash=sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2 \
+ --hash=sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8 \
+ --hash=sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d \
+ --hash=sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d \
+ --hash=sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9 \
+ --hash=sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162 \
+ --hash=sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76 \
+ --hash=sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4 \
+ --hash=sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e \
+ --hash=sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9 \
+ --hash=sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6 \
+ --hash=sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b \
+ --hash=sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01 \
+ --hash=sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0
+ # via cryptography
+charset-normalizer==2.1.1 \
+ --hash=sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845 \
+ --hash=sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f
+ # via
+ # aiohttp
+ # requests
+click==8.1.3 \
+ --hash=sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e \
+ --hash=sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48
+ # via mar
+colorama==0.4.4 \
+ --hash=sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b \
+ --hash=sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2
+ # via awscli
+construct==2.10.68 \
+ --hash=sha256:7b2a3fd8e5f597a5aa1d614c3bd516fa065db01704c72a1efaaeec6ef23d8b45
+ # via mar
+cryptography==39.0.0 \
+ --hash=sha256:1a6915075c6d3a5e1215eab5d99bcec0da26036ff2102a1038401d6ef5bef25b \
+ --hash=sha256:1ee1fd0de9851ff32dbbb9362a4d833b579b4a6cc96883e8e6d2ff2a6bc7104f \
+ --hash=sha256:407cec680e811b4fc829de966f88a7c62a596faa250fc1a4b520a0355b9bc190 \
+ --hash=sha256:50386acb40fbabbceeb2986332f0287f50f29ccf1497bae31cf5c3e7b4f4b34f \
+ --hash=sha256:6f97109336df5c178ee7c9c711b264c502b905c2d2a29ace99ed761533a3460f \
+ --hash=sha256:754978da4d0457e7ca176f58c57b1f9de6556591c19b25b8bcce3c77d314f5eb \
+ --hash=sha256:76c24dd4fd196a80f9f2f5405a778a8ca132f16b10af113474005635fe7e066c \
+ --hash=sha256:7dacfdeee048814563eaaec7c4743c8aea529fe3dd53127313a792f0dadc1773 \
+ --hash=sha256:80ee674c08aaef194bc4627b7f2956e5ba7ef29c3cc3ca488cf15854838a8f72 \
+ --hash=sha256:844ad4d7c3850081dffba91cdd91950038ee4ac525c575509a42d3fc806b83c8 \
+ --hash=sha256:875aea1039d78557c7c6b4db2fe0e9d2413439f4676310a5f269dd342ca7a717 \
+ --hash=sha256:887cbc1ea60786e534b00ba8b04d1095f4272d380ebd5f7a7eb4cc274710fad9 \
+ --hash=sha256:ad04f413436b0781f20c52a661660f1e23bcd89a0e9bb1d6d20822d048cf2856 \
+ --hash=sha256:bae6c7f4a36a25291b619ad064a30a07110a805d08dc89984f4f441f6c1f3f96 \
+ --hash=sha256:c52a1a6f81e738d07f43dab57831c29e57d21c81a942f4602fac7ee21b27f288 \
+ --hash=sha256:e0a05aee6a82d944f9b4edd6a001178787d1546ec7c6223ee9a848a7ade92e39 \
+ --hash=sha256:e324de6972b151f99dc078defe8fb1b0a82c6498e37bff335f5bc6b1e3ab5a1e \
+ --hash=sha256:e5d71c5d5bd5b5c3eebcf7c5c2bb332d62ec68921a8c593bea8c394911a005ce \
+ --hash=sha256:f3ed2d864a2fa1666e749fe52fb8e23d8e06b8012e8bd8147c73797c506e86f1 \
+ --hash=sha256:f671c1bb0d6088e94d61d80c606d65baacc0d374e67bf895148883461cd848de \
+ --hash=sha256:f6c0db08d81ead9576c4d94bbb27aed8d7a430fa27890f39084c2d0e2ec6b0df \
+ --hash=sha256:f964c7dcf7802d133e8dbd1565914fa0194f9d683d82411989889ecd701e8adf \
+ --hash=sha256:fec8b932f51ae245121c4671b4bbc030880f363354b2f0e0bd1366017d891458
+ # via
+ # mar
+ # pyjwt
+ # scriptworker
+dictdiffer==0.9.0 \
+ --hash=sha256:17bacf5fbfe613ccf1b6d512bd766e6b21fb798822a133aa86098b8ac9997578 \
+ --hash=sha256:442bfc693cfcadaf46674575d2eba1c53b42f5e404218ca2c2ff549f2df56595
+ # via scriptworker
+docutils==0.16 \
+ --hash=sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af \
+ --hash=sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc
+ # via awscli
+frozenlist==1.3.3 \
+ --hash=sha256:008a054b75d77c995ea26629ab3a0c0d7281341f2fa7e1e85fa6153ae29ae99c \
+ --hash=sha256:02c9ac843e3390826a265e331105efeab489ffaf4dd86384595ee8ce6d35ae7f \
+ --hash=sha256:034a5c08d36649591be1cbb10e09da9f531034acfe29275fc5454a3b101ce41a \
+ --hash=sha256:05cdb16d09a0832eedf770cb7bd1fe57d8cf4eaf5aced29c4e41e3f20b30a784 \
+ --hash=sha256:0693c609e9742c66ba4870bcee1ad5ff35462d5ffec18710b4ac89337ff16e27 \
+ --hash=sha256:0771aed7f596c7d73444c847a1c16288937ef988dc04fb9f7be4b2aa91db609d \
+ --hash=sha256:0af2e7c87d35b38732e810befb9d797a99279cbb85374d42ea61c1e9d23094b3 \
+ --hash=sha256:14143ae966a6229350021384870458e4777d1eae4c28d1a7aa47f24d030e6678 \
+ --hash=sha256:180c00c66bde6146a860cbb81b54ee0df350d2daf13ca85b275123bbf85de18a \
+ --hash=sha256:1841e200fdafc3d51f974d9d377c079a0694a8f06de2e67b48150328d66d5483 \
+ --hash=sha256:23d16d9f477bb55b6154654e0e74557040575d9d19fe78a161bd33d7d76808e8 \
+ --hash=sha256:2b07ae0c1edaa0a36339ec6cce700f51b14a3fc6545fdd32930d2c83917332cf \
+ --hash=sha256:2c926450857408e42f0bbc295e84395722ce74bae69a3b2aa2a65fe22cb14b99 \
+ --hash=sha256:2e24900aa13212e75e5b366cb9065e78bbf3893d4baab6052d1aca10d46d944c \
+ --hash=sha256:303e04d422e9b911a09ad499b0368dc551e8c3cd15293c99160c7f1f07b59a48 \
+ --hash=sha256:352bd4c8c72d508778cf05ab491f6ef36149f4d0cb3c56b1b4302852255d05d5 \
+ --hash=sha256:3843f84a6c465a36559161e6c59dce2f2ac10943040c2fd021cfb70d58c4ad56 \
+ --hash=sha256:394c9c242113bfb4b9aa36e2b80a05ffa163a30691c7b5a29eba82e937895d5e \
+ --hash=sha256:3bbdf44855ed8f0fbcd102ef05ec3012d6a4fd7c7562403f76ce6a52aeffb2b1 \
+ --hash=sha256:40de71985e9042ca00b7953c4f41eabc3dc514a2d1ff534027f091bc74416401 \
+ --hash=sha256:41fe21dc74ad3a779c3d73a2786bdf622ea81234bdd4faf90b8b03cad0c2c0b4 \
+ --hash=sha256:47df36a9fe24054b950bbc2db630d508cca3aa27ed0566c0baf661225e52c18e \
+ --hash=sha256:4ea42116ceb6bb16dbb7d526e242cb6747b08b7710d9782aa3d6732bd8d27649 \
+ --hash=sha256:58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a \
+ --hash=sha256:5c11e43016b9024240212d2a65043b70ed8dfd3b52678a1271972702d990ac6d \
+ --hash=sha256:5cf820485f1b4c91e0417ea0afd41ce5cf5965011b3c22c400f6d144296ccbc0 \
+ --hash=sha256:5d8860749e813a6f65bad8285a0520607c9500caa23fea6ee407e63debcdbef6 \
+ --hash=sha256:6327eb8e419f7d9c38f333cde41b9ae348bec26d840927332f17e887a8dcb70d \
+ --hash=sha256:65a5e4d3aa679610ac6e3569e865425b23b372277f89b5ef06cf2cdaf1ebf22b \
+ --hash=sha256:66080ec69883597e4d026f2f71a231a1ee9887835902dbe6b6467d5a89216cf6 \
+ --hash=sha256:783263a4eaad7c49983fe4b2e7b53fa9770c136c270d2d4bbb6d2192bf4d9caf \
+ --hash=sha256:7f44e24fa70f6fbc74aeec3e971f60a14dde85da364aa87f15d1be94ae75aeef \
+ --hash=sha256:7fdfc24dcfce5b48109867c13b4cb15e4660e7bd7661741a391f821f23dfdca7 \
+ --hash=sha256:810860bb4bdce7557bc0febb84bbd88198b9dbc2022d8eebe5b3590b2ad6c842 \
+ --hash=sha256:841ea19b43d438a80b4de62ac6ab21cfe6827bb8a9dc62b896acc88eaf9cecba \
+ --hash=sha256:84610c1502b2461255b4c9b7d5e9c48052601a8957cd0aea6ec7a7a1e1fb9420 \
+ --hash=sha256:899c5e1928eec13fd6f6d8dc51be23f0d09c5281e40d9cf4273d188d9feeaf9b \
+ --hash=sha256:8bae29d60768bfa8fb92244b74502b18fae55a80eac13c88eb0b496d4268fd2d \
+ --hash=sha256:8df3de3a9ab8325f94f646609a66cbeeede263910c5c0de0101079ad541af332 \
+ --hash=sha256:8fa3c6e3305aa1146b59a09b32b2e04074945ffcfb2f0931836d103a2c38f936 \
+ --hash=sha256:924620eef691990dfb56dc4709f280f40baee568c794b5c1885800c3ecc69816 \
+ --hash=sha256:9309869032abb23d196cb4e4db574232abe8b8be1339026f489eeb34a4acfd91 \
+ --hash=sha256:9545a33965d0d377b0bc823dcabf26980e77f1b6a7caa368a365a9497fb09420 \
+ --hash=sha256:9ac5995f2b408017b0be26d4a1d7c61bce106ff3d9e3324374d66b5964325448 \
+ --hash=sha256:9bbbcedd75acdfecf2159663b87f1bb5cfc80e7cd99f7ddd9d66eb98b14a8411 \
+ --hash=sha256:a4ae8135b11652b08a8baf07631d3ebfe65a4c87909dbef5fa0cdde440444ee4 \
+ --hash=sha256:a6394d7dadd3cfe3f4b3b186e54d5d8504d44f2d58dcc89d693698e8b7132b32 \
+ --hash=sha256:a97b4fe50b5890d36300820abd305694cb865ddb7885049587a5678215782a6b \
+ --hash=sha256:ae4dc05c465a08a866b7a1baf360747078b362e6a6dbeb0c57f234db0ef88ae0 \
+ --hash=sha256:b1c63e8d377d039ac769cd0926558bb7068a1f7abb0f003e3717ee003ad85530 \
+ --hash=sha256:b1e2c1185858d7e10ff045c496bbf90ae752c28b365fef2c09cf0fa309291669 \
+ --hash=sha256:b4395e2f8d83fbe0c627b2b696acce67868793d7d9750e90e39592b3626691b7 \
+ --hash=sha256:b756072364347cb6aa5b60f9bc18e94b2f79632de3b0190253ad770c5df17db1 \
+ --hash=sha256:ba64dc2b3b7b158c6660d49cdb1d872d1d0bf4e42043ad8d5006099479a194e5 \
+ --hash=sha256:bed331fe18f58d844d39ceb398b77d6ac0b010d571cba8267c2e7165806b00ce \
+ --hash=sha256:c188512b43542b1e91cadc3c6c915a82a5eb95929134faf7fd109f14f9892ce4 \
+ --hash=sha256:c21b9aa40e08e4f63a2f92ff3748e6b6c84d717d033c7b3438dd3123ee18f70e \
+ --hash=sha256:ca713d4af15bae6e5d79b15c10c8522859a9a89d3b361a50b817c98c2fb402a2 \
+ --hash=sha256:cd4210baef299717db0a600d7a3cac81d46ef0e007f88c9335db79f8979c0d3d \
+ --hash=sha256:cfe33efc9cb900a4c46f91a5ceba26d6df370ffddd9ca386eb1d4f0ad97b9ea9 \
+ --hash=sha256:d5cd3ab21acbdb414bb6c31958d7b06b85eeb40f66463c264a9b343a4e238642 \
+ --hash=sha256:dfbac4c2dfcc082fcf8d942d1e49b6aa0766c19d3358bd86e2000bf0fa4a9cf0 \
+ --hash=sha256:e235688f42b36be2b6b06fc37ac2126a73b75fb8d6bc66dd632aa35286238703 \
+ --hash=sha256:eb82dbba47a8318e75f679690190c10a5e1f447fbf9df41cbc4c3afd726d88cb \
+ --hash=sha256:ebb86518203e12e96af765ee89034a1dbb0c3c65052d1b0c19bbbd6af8a145e1 \
+ --hash=sha256:ee78feb9d293c323b59a6f2dd441b63339a30edf35abcb51187d2fc26e696d13 \
+ --hash=sha256:eedab4c310c0299961ac285591acd53dc6723a1ebd90a57207c71f6e0c2153ab \
+ --hash=sha256:efa568b885bca461f7c7b9e032655c0c143d305bf01c30caf6db2854a4532b38 \
+ --hash=sha256:efce6ae830831ab6a22b9b4091d411698145cb9b8fc869e1397ccf4b4b6455cb \
+ --hash=sha256:f163d2fd041c630fed01bc48d28c3ed4a3b003c00acd396900e11ee5316b56bb \
+ --hash=sha256:f20380df709d91525e4bee04746ba612a4df0972c1b8f8e1e8af997e678c7b81 \
+ --hash=sha256:f30f1928162e189091cf4d9da2eac617bfe78ef907a761614ff577ef4edfb3c8 \
+ --hash=sha256:f470c92737afa7d4c3aacc001e335062d582053d4dbe73cda126f2d7031068dd \
+ --hash=sha256:ff8bf625fe85e119553b5383ba0fb6aa3d0ec2ae980295aaefa552374926b3f4
+ # via
+ # aiohttp
+ # aiosignal
+github3-py==3.2.0 \
+ --hash=sha256:09b72be1497d346b0968cde8360a0d6af79dc206d0149a63cd3ec86c65c377cc \
+ --hash=sha256:a9016e40609c6f5cb9954dd188d08257dafd09c4da8c0e830a033fca00054b0d
+ # via scriptworker
+idna==3.4 \
+ --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \
+ --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2
+ # via
+ # requests
+ # yarl
+immutabledict==2.2.3 \
+ --hash=sha256:0e1e8a3f2b3ff062daa19795f947e9ec7a58add269d44e34d3ab4319e1343853 \
+ --hash=sha256:a7b078ebcc4a58ddc73b55f808b26e7c8c2d5183fad325615112689e1a63e714
+ # via scriptworker
+jmespath==1.0.1 \
+ --hash=sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980 \
+ --hash=sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe
+ # via botocore
+json-e==4.5.0 \
+ --hash=sha256:618a94aecc8b8bc7733d6cd0ee7b676e45675566625a38958aa8b30379d9758f \
+ --hash=sha256:e733ce77b4acbbc2c48211057f8cb5af45999e6be4ce0f07585c5580df45826e
+ # via scriptworker
+jsonschema==4.17.3 \
+ --hash=sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d \
+ --hash=sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6
+ # via scriptworker
+mar==3.2.0 \
+ --hash=sha256:602f64a99fb2db578a3d76c9f1ac3efd29bd5f8f0ae8568759fb205162b017d0 \
+ --hash=sha256:dd032cf72b65c62fb4e58e04a347076fda41f84265b41dd248098cc11e396c6e
+ # via -r requirements.in
+mohawk==1.1.0 \
+ --hash=sha256:3ed296a30453d0b724679e0fd41e4e940497f8e461a9a9c3b7f36e43bab0fa09 \
+ --hash=sha256:d2a0e3ab10a209cc79e95e28f2dd54bd4a73fd1998ffe27b7ba0f962b6be9723
+ # via taskcluster
+multidict==6.0.4 \
+ --hash=sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9 \
+ --hash=sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8 \
+ --hash=sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03 \
+ --hash=sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710 \
+ --hash=sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161 \
+ --hash=sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664 \
+ --hash=sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569 \
+ --hash=sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067 \
+ --hash=sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313 \
+ --hash=sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706 \
+ --hash=sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2 \
+ --hash=sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636 \
+ --hash=sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49 \
+ --hash=sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93 \
+ --hash=sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603 \
+ --hash=sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0 \
+ --hash=sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60 \
+ --hash=sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4 \
+ --hash=sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e \
+ --hash=sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1 \
+ --hash=sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60 \
+ --hash=sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951 \
+ --hash=sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc \
+ --hash=sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe \
+ --hash=sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95 \
+ --hash=sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d \
+ --hash=sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8 \
+ --hash=sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed \
+ --hash=sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2 \
+ --hash=sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775 \
+ --hash=sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87 \
+ --hash=sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c \
+ --hash=sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2 \
+ --hash=sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98 \
+ --hash=sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3 \
+ --hash=sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe \
+ --hash=sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78 \
+ --hash=sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660 \
+ --hash=sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176 \
+ --hash=sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e \
+ --hash=sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988 \
+ --hash=sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c \
+ --hash=sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c \
+ --hash=sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0 \
+ --hash=sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449 \
+ --hash=sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f \
+ --hash=sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde \
+ --hash=sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5 \
+ --hash=sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d \
+ --hash=sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac \
+ --hash=sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a \
+ --hash=sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9 \
+ --hash=sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca \
+ --hash=sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11 \
+ --hash=sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35 \
+ --hash=sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063 \
+ --hash=sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b \
+ --hash=sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982 \
+ --hash=sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258 \
+ --hash=sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1 \
+ --hash=sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52 \
+ --hash=sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480 \
+ --hash=sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7 \
+ --hash=sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461 \
+ --hash=sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d \
+ --hash=sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc \
+ --hash=sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779 \
+ --hash=sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a \
+ --hash=sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547 \
+ --hash=sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0 \
+ --hash=sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171 \
+ --hash=sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf \
+ --hash=sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d \
+ --hash=sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba
+ # via
+ # aiohttp
+ # yarl
+pyasn1==0.4.8 \
+ --hash=sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d \
+ --hash=sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba
+ # via rsa
+pycparser==2.21 \
+ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \
+ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206
+ # via cffi
+pyjwt[crypto]==2.6.0 \
+ --hash=sha256:69285c7e31fc44f68a1feb309e948e0df53259d579295e6cfe2b1792329f05fd \
+ --hash=sha256:d83c3d892a77bbb74d3e1a2cfa90afaadb60945205d1095d9221f04466f64c14
+ # via github3-py
+pyrsistent==0.19.3 \
+ --hash=sha256:016ad1afadf318eb7911baa24b049909f7f3bb2c5b1ed7b6a8f21db21ea3faa8 \
+ --hash=sha256:1a2994773706bbb4995c31a97bc94f1418314923bd1048c6d964837040376440 \
+ --hash=sha256:20460ac0ea439a3e79caa1dbd560344b64ed75e85d8703943e0b66c2a6150e4a \
+ --hash=sha256:3311cb4237a341aa52ab8448c27e3a9931e2ee09561ad150ba94e4cfd3fc888c \
+ --hash=sha256:3a8cb235fa6d3fd7aae6a4f1429bbb1fec1577d978098da1252f0489937786f3 \
+ --hash=sha256:3ab2204234c0ecd8b9368dbd6a53e83c3d4f3cab10ecaf6d0e772f456c442393 \
+ --hash=sha256:42ac0b2f44607eb92ae88609eda931a4f0dfa03038c44c772e07f43e738bcac9 \
+ --hash=sha256:49c32f216c17148695ca0e02a5c521e28a4ee6c5089f97e34fe24163113722da \
+ --hash=sha256:4b774f9288dda8d425adb6544e5903f1fb6c273ab3128a355c6b972b7df39dcf \
+ --hash=sha256:4c18264cb84b5e68e7085a43723f9e4c1fd1d935ab240ce02c0324a8e01ccb64 \
+ --hash=sha256:5a474fb80f5e0d6c9394d8db0fc19e90fa540b82ee52dba7d246a7791712f74a \
+ --hash=sha256:64220c429e42a7150f4bfd280f6f4bb2850f95956bde93c6fda1b70507af6ef3 \
+ --hash=sha256:878433581fc23e906d947a6814336eee031a00e6defba224234169ae3d3d6a98 \
+ --hash=sha256:99abb85579e2165bd8522f0c0138864da97847875ecbd45f3e7e2af569bfc6f2 \
+ --hash=sha256:a2471f3f8693101975b1ff85ffd19bb7ca7dd7c38f8a81701f67d6b4f97b87d8 \
+ --hash=sha256:aeda827381f5e5d65cced3024126529ddc4289d944f75e090572c77ceb19adbf \
+ --hash=sha256:b735e538f74ec31378f5a1e3886a26d2ca6351106b4dfde376a26fc32a044edc \
+ --hash=sha256:c147257a92374fde8498491f53ffa8f4822cd70c0d85037e09028e478cababb7 \
+ --hash=sha256:c4db1bd596fefd66b296a3d5d943c94f4fac5bcd13e99bffe2ba6a759d959a28 \
+ --hash=sha256:c74bed51f9b41c48366a286395c67f4e894374306b197e62810e0fdaf2364da2 \
+ --hash=sha256:c9bb60a40a0ab9aba40a59f68214eed5a29c6274c83b2cc206a359c4a89fa41b \
+ --hash=sha256:cc5d149f31706762c1f8bda2e8c4f8fead6e80312e3692619a75301d3dbb819a \
+ --hash=sha256:ccf0d6bd208f8111179f0c26fdf84ed7c3891982f2edaeae7422575f47e66b64 \
+ --hash=sha256:e42296a09e83028b3476f7073fcb69ffebac0e66dbbfd1bd847d61f74db30f19 \
+ --hash=sha256:e8f2b814a3dc6225964fa03d8582c6e0b6650d68a232df41e3cc1b66a5d2f8d1 \
+ --hash=sha256:f0774bf48631f3a20471dd7c5989657b639fd2d285b861237ea9e82c36a415a9 \
+ --hash=sha256:f0e7c4b2f77593871e918be000b96c8107da48444d57005b6a6bc61fb4331b2c
+ # via jsonschema
+python-dateutil==2.8.2 \
+ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \
+ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9
+ # via
+ # arrow
+ # botocore
+ # github3-py
+ # taskcluster
+pyyaml==5.4.1 \
+ --hash=sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf \
+ --hash=sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696 \
+ --hash=sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393 \
+ --hash=sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77 \
+ --hash=sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922 \
+ --hash=sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5 \
+ --hash=sha256:4465124ef1b18d9ace298060f4eccc64b0850899ac4ac53294547536533800c8 \
+ --hash=sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10 \
+ --hash=sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc \
+ --hash=sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018 \
+ --hash=sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e \
+ --hash=sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253 \
+ --hash=sha256:72a01f726a9c7851ca9bfad6fd09ca4e090a023c00945ea05ba1638c09dc3347 \
+ --hash=sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183 \
+ --hash=sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541 \
+ --hash=sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb \
+ --hash=sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185 \
+ --hash=sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc \
+ --hash=sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db \
+ --hash=sha256:cb333c16912324fd5f769fff6bc5de372e9e7a202247b48870bc251ed40239aa \
+ --hash=sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46 \
+ --hash=sha256:d483ad4e639292c90170eb6f7783ad19490e7a8defb3e46f97dfe4bacae89122 \
+ --hash=sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b \
+ --hash=sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63 \
+ --hash=sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df \
+ --hash=sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc \
+ --hash=sha256:fd7f6999a8070df521b6384004ef42833b9bd62cfee11a09bda1079b4b704247 \
+ --hash=sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6 \
+ --hash=sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0
+ # via
+ # awscli
+ # scriptworker
+redo==2.0.4 \
+ --hash=sha256:81066955041c853b0e6491eb65a0877dce45131c4cfa3d42d923fc2aa8f7a043 \
+ --hash=sha256:c76e4c23ab2f8840261736a851323cd98493710e7a9d36a1058535dca501f293
+ # via -r requirements.in
+requests==2.28.1 \
+ --hash=sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983 \
+ --hash=sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349
+ # via
+ # -r requirements.in
+ # github3-py
+ # taskcluster
+rsa==4.7.2 \
+ --hash=sha256:78f9a9bf4e7be0c5ded4583326e7461e3a3c5aae24073648b4bdfa797d78c9d2 \
+ --hash=sha256:9d689e6ca1b3038bc82bf8d23e944b6b6037bc02301a574935b2dd946e0353b9
+ # via awscli
+s3transfer==0.6.0 \
+ --hash=sha256:06176b74f3a15f61f1b4f25a1fc29a4429040b7647133a463da8fa5bd28d5ecd \
+ --hash=sha256:2ed07d3866f523cc561bf4a00fc5535827981b117dd7876f036b0c1aca42c947
+ # via awscli
+scriptworker==46.0.0 \
+ --hash=sha256:94efa759e539f36079abad40db074e9b3c1945602716f7facdd82fe5b53aa6a9 \
+ --hash=sha256:e0b0b88c9d722c06d7a5bf19eab4f6f282613b36d171ba950b5501d8ad198207
+ # via -r requirements.in
+sh==1.14.3 \
+ --hash=sha256:e4045b6c732d9ce75d571c79f5ac2234edd9ae4f5fa9d59b09705082bdca18c7
+ # via -r requirements.in
+six==1.16.0 \
+ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \
+ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254
+ # via
+ # mar
+ # mohawk
+ # python-dateutil
+slugid==2.0.0 \
+ --hash=sha256:a950d98b72691178bdd4d6c52743c4a2aa039207cf7a97d71060a111ff9ba297 \
+ --hash=sha256:aec8b0e01c4ad32e38e12d609eab3ec912fd129aaf6b2ded0199b56a5f8fd67c
+ # via taskcluster
+taskcluster==46.1.1 \
+ --hash=sha256:1f49339b725a465d2ef4c9fb8bbe5ecaaf449707e5353fd6a5a453c776d057b6 \
+ --hash=sha256:222c2511c9dfca4cc70ee64082c2b940e2e8513ae9df3adb7afedacac4ebc97d
+ # via scriptworker
+taskcluster-urls==13.0.1 \
+ --hash=sha256:5e25e7e6818e8877178b175ff43d2e6548afad72694aa125f404a7329ece0973 \
+ --hash=sha256:b25e122ecec249c4299ac7b20b08db76e3e2025bdaeb699a9d444556de5fd367 \
+ --hash=sha256:f66dcbd6572a6216ab65949f0fa0b91f2df647918028436c384e6af5cd12ae2b
+ # via taskcluster
+uritemplate==4.1.1 \
+ --hash=sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0 \
+ --hash=sha256:830c08b8d99bdd312ea4ead05994a38e8936266f84b9a7878232db50b044e02e
+ # via github3-py
+urllib3==1.26.13 \
+ --hash=sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc \
+ --hash=sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8
+ # via
+ # botocore
+ # requests
+yarl==1.8.2 \
+ --hash=sha256:009a028127e0a1755c38b03244c0bea9d5565630db9c4cf9572496e947137a87 \
+ --hash=sha256:0414fd91ce0b763d4eadb4456795b307a71524dbacd015c657bb2a39db2eab89 \
+ --hash=sha256:0978f29222e649c351b173da2b9b4665ad1feb8d1daa9d971eb90df08702668a \
+ --hash=sha256:0ef8fb25e52663a1c85d608f6dd72e19bd390e2ecaf29c17fb08f730226e3a08 \
+ --hash=sha256:10b08293cda921157f1e7c2790999d903b3fd28cd5c208cf8826b3b508026996 \
+ --hash=sha256:1684a9bd9077e922300ecd48003ddae7a7474e0412bea38d4631443a91d61077 \
+ --hash=sha256:1b372aad2b5f81db66ee7ec085cbad72c4da660d994e8e590c997e9b01e44901 \
+ --hash=sha256:1e21fb44e1eff06dd6ef971d4bdc611807d6bd3691223d9c01a18cec3677939e \
+ --hash=sha256:2305517e332a862ef75be8fad3606ea10108662bc6fe08509d5ca99503ac2aee \
+ --hash=sha256:24ad1d10c9db1953291f56b5fe76203977f1ed05f82d09ec97acb623a7976574 \
+ --hash=sha256:272b4f1599f1b621bf2aabe4e5b54f39a933971f4e7c9aa311d6d7dc06965165 \
+ --hash=sha256:2a1fca9588f360036242f379bfea2b8b44cae2721859b1c56d033adfd5893634 \
+ --hash=sha256:2b4fa2606adf392051d990c3b3877d768771adc3faf2e117b9de7eb977741229 \
+ --hash=sha256:3150078118f62371375e1e69b13b48288e44f6691c1069340081c3fd12c94d5b \
+ --hash=sha256:326dd1d3caf910cd26a26ccbfb84c03b608ba32499b5d6eeb09252c920bcbe4f \
+ --hash=sha256:34c09b43bd538bf6c4b891ecce94b6fa4f1f10663a8d4ca589a079a5018f6ed7 \
+ --hash=sha256:388a45dc77198b2460eac0aca1efd6a7c09e976ee768b0d5109173e521a19daf \
+ --hash=sha256:3adeef150d528ded2a8e734ebf9ae2e658f4c49bf413f5f157a470e17a4a2e89 \
+ --hash=sha256:3edac5d74bb3209c418805bda77f973117836e1de7c000e9755e572c1f7850d0 \
+ --hash=sha256:3f6b4aca43b602ba0f1459de647af954769919c4714706be36af670a5f44c9c1 \
+ --hash=sha256:3fc056e35fa6fba63248d93ff6e672c096f95f7836938241ebc8260e062832fe \
+ --hash=sha256:418857f837347e8aaef682679f41e36c24250097f9e2f315d39bae3a99a34cbf \
+ --hash=sha256:42430ff511571940d51e75cf42f1e4dbdded477e71c1b7a17f4da76c1da8ea76 \
+ --hash=sha256:44ceac0450e648de86da8e42674f9b7077d763ea80c8ceb9d1c3e41f0f0a9951 \
+ --hash=sha256:47d49ac96156f0928f002e2424299b2c91d9db73e08c4cd6742923a086f1c863 \
+ --hash=sha256:48dd18adcf98ea9cd721a25313aef49d70d413a999d7d89df44f469edfb38a06 \
+ --hash=sha256:49d43402c6e3013ad0978602bf6bf5328535c48d192304b91b97a3c6790b1562 \
+ --hash=sha256:4d04acba75c72e6eb90745447d69f84e6c9056390f7a9724605ca9c56b4afcc6 \
+ --hash=sha256:57a7c87927a468e5a1dc60c17caf9597161d66457a34273ab1760219953f7f4c \
+ --hash=sha256:58a3c13d1c3005dbbac5c9f0d3210b60220a65a999b1833aa46bd6677c69b08e \
+ --hash=sha256:5df5e3d04101c1e5c3b1d69710b0574171cc02fddc4b23d1b2813e75f35a30b1 \
+ --hash=sha256:63243b21c6e28ec2375f932a10ce7eda65139b5b854c0f6b82ed945ba526bff3 \
+ --hash=sha256:64dd68a92cab699a233641f5929a40f02a4ede8c009068ca8aa1fe87b8c20ae3 \
+ --hash=sha256:6604711362f2dbf7160df21c416f81fac0de6dbcf0b5445a2ef25478ecc4c778 \
+ --hash=sha256:6c4fcfa71e2c6a3cb568cf81aadc12768b9995323186a10827beccf5fa23d4f8 \
+ --hash=sha256:6d88056a04860a98341a0cf53e950e3ac9f4e51d1b6f61a53b0609df342cc8b2 \
+ --hash=sha256:705227dccbe96ab02c7cb2c43e1228e2826e7ead880bb19ec94ef279e9555b5b \
+ --hash=sha256:728be34f70a190566d20aa13dc1f01dc44b6aa74580e10a3fb159691bc76909d \
+ --hash=sha256:74dece2bfc60f0f70907c34b857ee98f2c6dd0f75185db133770cd67300d505f \
+ --hash=sha256:75c16b2a900b3536dfc7014905a128a2bea8fb01f9ee26d2d7d8db0a08e7cb2c \
+ --hash=sha256:77e913b846a6b9c5f767b14dc1e759e5aff05502fe73079f6f4176359d832581 \
+ --hash=sha256:7a66c506ec67eb3159eea5096acd05f5e788ceec7b96087d30c7d2865a243918 \
+ --hash=sha256:8c46d3d89902c393a1d1e243ac847e0442d0196bbd81aecc94fcebbc2fd5857c \
+ --hash=sha256:93202666046d9edadfe9f2e7bf5e0782ea0d497b6d63da322e541665d65a044e \
+ --hash=sha256:97209cc91189b48e7cfe777237c04af8e7cc51eb369004e061809bcdf4e55220 \
+ --hash=sha256:a48f4f7fea9a51098b02209d90297ac324241bf37ff6be6d2b0149ab2bd51b37 \
+ --hash=sha256:a783cd344113cb88c5ff7ca32f1f16532a6f2142185147822187913eb989f739 \
+ --hash=sha256:ae0eec05ab49e91a78700761777f284c2df119376e391db42c38ab46fd662b77 \
+ --hash=sha256:ae4d7ff1049f36accde9e1ef7301912a751e5bae0a9d142459646114c70ecba6 \
+ --hash=sha256:b05df9ea7496df11b710081bd90ecc3a3db6adb4fee36f6a411e7bc91a18aa42 \
+ --hash=sha256:baf211dcad448a87a0d9047dc8282d7de59473ade7d7fdf22150b1d23859f946 \
+ --hash=sha256:bb81f753c815f6b8e2ddd2eef3c855cf7da193b82396ac013c661aaa6cc6b0a5 \
+ --hash=sha256:bcd7bb1e5c45274af9a1dd7494d3c52b2be5e6bd8d7e49c612705fd45420b12d \
+ --hash=sha256:bf071f797aec5b96abfc735ab97da9fd8f8768b43ce2abd85356a3127909d146 \
+ --hash=sha256:c15163b6125db87c8f53c98baa5e785782078fbd2dbeaa04c6141935eb6dab7a \
+ --hash=sha256:cb6d48d80a41f68de41212f3dfd1a9d9898d7841c8f7ce6696cf2fd9cb57ef83 \
+ --hash=sha256:ceff9722e0df2e0a9e8a79c610842004fa54e5b309fe6d218e47cd52f791d7ef \
+ --hash=sha256:cfa2bbca929aa742b5084fd4663dd4b87c191c844326fcb21c3afd2d11497f80 \
+ --hash=sha256:d617c241c8c3ad5c4e78a08429fa49e4b04bedfc507b34b4d8dceb83b4af3588 \
+ --hash=sha256:d881d152ae0007809c2c02e22aa534e702f12071e6b285e90945aa3c376463c5 \
+ --hash=sha256:da65c3f263729e47351261351b8679c6429151ef9649bba08ef2528ff2c423b2 \
+ --hash=sha256:de986979bbd87272fe557e0a8fcb66fd40ae2ddfe28a8b1ce4eae22681728fef \
+ --hash=sha256:df60a94d332158b444301c7f569659c926168e4d4aad2cfbf4bce0e8fb8be826 \
+ --hash=sha256:dfef7350ee369197106805e193d420b75467b6cceac646ea5ed3049fcc950a05 \
+ --hash=sha256:e59399dda559688461762800d7fb34d9e8a6a7444fd76ec33220a926c8be1516 \
+ --hash=sha256:e6f3515aafe0209dd17fb9bdd3b4e892963370b3de781f53e1746a521fb39fc0 \
+ --hash=sha256:e7fd20d6576c10306dea2d6a5765f46f0ac5d6f53436217913e952d19237efc4 \
+ --hash=sha256:ebb78745273e51b9832ef90c0898501006670d6e059f2cdb0e999494eb1450c2 \
+ --hash=sha256:efff27bd8cbe1f9bd127e7894942ccc20c857aa8b5a0327874f30201e5ce83d0 \
+ --hash=sha256:f37db05c6051eff17bc832914fe46869f8849de5b92dc4a3466cd63095d23dfd \
+ --hash=sha256:f8ca8ad414c85bbc50f49c0a106f951613dfa5f948ab69c10ce9b128d368baf8 \
+ --hash=sha256:fb742dcdd5eec9f26b61224c23baea46c9055cf16f62475e11b9b15dfd5c117b \
+ --hash=sha256:fc77086ce244453e074e445104f0ecb27530d6fd3a46698e33f6c38951d5a0f1 \
+ --hash=sha256:ff205b58dc2929191f68162633d5e10e8044398d7a45265f90a0f1d51f85f72c
+ # via aiohttp
diff --git a/taskcluster/docker/funsize-update-generator/runme.sh b/taskcluster/docker/funsize-update-generator/runme.sh
new file mode 100644
index 0000000000..62f888b995
--- /dev/null
+++ b/taskcluster/docker/funsize-update-generator/runme.sh
@@ -0,0 +1,61 @@
+#!/bin/sh
+
+set -xe
+
+test "$TASK_ID"
+test "$SIGNING_CERT"
+
+ARTIFACTS_DIR="/home/worker/artifacts"
+mkdir -p "$ARTIFACTS_DIR"
+
+# Strip trailing / if present
+TASKCLUSTER_ROOT_URL="${TASKCLUSTER_ROOT_URL%/}"
+export TASKCLUSTER_ROOT_URL
+
+# duplicate the functionality of taskcluster-lib-urls, but in bash..
+queue_base="${TASKCLUSTER_ROOT_URL%/}/api/queue/v1"
+
+curl --location --retry 10 --retry-delay 10 -o /home/worker/task.json "$queue_base/task/$TASK_ID"
+
+# auth:aws-s3:read-write:tc-gp-private-1d-us-east-1/releng/mbsdiff-cache/
+# -> bucket of tc-gp-private-1d-us-east-1, path of releng/mbsdiff-cache/
+# Trailing slash is important, due to prefix permissions in S3.
+S3_BUCKET_AND_PATH=$(jq -r '.scopes[] | select(contains ("auth:aws-s3"))' /home/worker/task.json | awk -F: '{print $4}')
+
+# Will be empty if there's no scope for AWS S3.
+if [ -n "${S3_BUCKET_AND_PATH}" ] && getent hosts taskcluster
+then
+ # Does this parse as we expect?
+ S3_PATH=${S3_BUCKET_AND_PATH#*/}
+ AWS_BUCKET_NAME=${S3_BUCKET_AND_PATH%/${S3_PATH}*}
+ test "${S3_PATH}"
+ test "${AWS_BUCKET_NAME}"
+
+ set +x # Don't echo these.
+ secret_url="${TASKCLUSTER_PROXY_URL}/api/auth/v1/aws/s3/read-write/${AWS_BUCKET_NAME}/${S3_PATH}"
+ AUTH=$(curl "${secret_url}")
+ AWS_ACCESS_KEY_ID=$(echo "${AUTH}" | jq -r '.credentials.accessKeyId')
+ AWS_SECRET_ACCESS_KEY=$(echo "${AUTH}" | jq -r '.credentials.secretAccessKey')
+ AWS_SESSION_TOKEN=$(echo "${AUTH}" | jq -r '.credentials.sessionToken')
+ export AWS_ACCESS_KEY_ID
+ export AWS_SECRET_ACCESS_KEY
+ export AWS_SESSION_TOKEN
+ AUTH=
+
+ if [ -n "$AWS_ACCESS_KEY_ID" ] && [ -n "$AWS_SECRET_ACCESS_KEY" ]; then
+ # Pass the full bucket/path prefix, as the script just appends local files.
+ export MBSDIFF_HOOK="/home/worker/bin/mbsdiff_hook.sh -S ${S3_BUCKET_AND_PATH}"
+ fi
+ set -x
+else
+ # disable caching
+ export MBSDIFF_HOOK=
+fi
+
+# EXTRA_PARAMS is optional
+# shellcheck disable=SC2086
+python3 /home/worker/bin/funsize.py \
+ --artifacts-dir "$ARTIFACTS_DIR" \
+ --task-definition /home/worker/task.json \
+ --signing-cert "/home/worker/keys/${SIGNING_CERT}.pubkey" \
+ $EXTRA_PARAMS
diff --git a/taskcluster/docker/funsize-update-generator/scripts/funsize.py b/taskcluster/docker/funsize-update-generator/scripts/funsize.py
new file mode 100644
index 0000000000..84fd2fbd0b
--- /dev/null
+++ b/taskcluster/docker/funsize-update-generator/scripts/funsize.py
@@ -0,0 +1,471 @@
+#!/usr/bin/env python3
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import argparse
+import asyncio
+import configparser
+import json
+import logging
+import os
+import shutil
+import tempfile
+import time
+from contextlib import AsyncExitStack
+from distutils.util import strtobool
+from pathlib import Path
+
+import aiohttp
+from mardor.reader import MarReader
+from mardor.signing import get_keysize
+from scriptworker.utils import get_hash, retry_async
+
+log = logging.getLogger(__name__)
+
+
+ROOT_URL = os.environ.get(
+ "TASKCLUSTER_ROOT_URL", "https://firefox-ci-tc.services.mozilla.com"
+)
+QUEUE_PREFIX = f"{ROOT_URL}/api/queue/"
+ALLOWED_URL_PREFIXES = (
+ "http://download.cdn.mozilla.net/pub/mozilla.org/firefox/nightly/",
+ "http://download.cdn.mozilla.net/pub/firefox/nightly/",
+ "http://ftp.mozilla.org/",
+ "http://download.mozilla.org/",
+ "https://archive.mozilla.org/",
+ "http://archive.mozilla.org/",
+ QUEUE_PREFIX,
+)
+STAGING_URL_PREFIXES = (
+ "http://ftp.stage.mozaws.net/",
+ "https://ftp.stage.mozaws.net/",
+)
+
+BCJ_OPTIONS = {
+ "x86": ["--x86"],
+ "x86_64": ["--x86"],
+ "aarch64": [],
+ # macOS Universal Builds
+ "macos-x86_64-aarch64": [],
+}
+
+
+def verify_signature(mar, cert):
+ log.info("Checking %s signature", mar)
+ with open(mar, "rb") as mar_fh:
+ m = MarReader(mar_fh)
+ if not m.verify(verify_key=cert):
+ raise ValueError(
+ "MAR Signature invalid: %s (%s) against %s", mar, m.signature_type, cert
+ )
+
+
+def process_arguments():
+ parser = argparse.ArgumentParser()
+ parser.add_argument("--artifacts-dir", required=True)
+ parser.add_argument("--signing-cert", type=argparse.FileType("rb"), required=True)
+ parser.add_argument("--task-definition", required=True, type=argparse.FileType("r"))
+ parser.add_argument(
+ "--allow-staging-prefixes",
+ action="store_true",
+ default=strtobool(os.environ.get("FUNSIZE_ALLOW_STAGING_PREFIXES", "false")),
+ help="Allow files from staging buckets.",
+ )
+ parser.add_argument(
+ "-q",
+ "--quiet",
+ dest="log_level",
+ action="store_const",
+ const=logging.INFO,
+ default=logging.DEBUG,
+ )
+ parser.add_argument(
+ "--arch",
+ type=str,
+ required=True,
+ choices=BCJ_OPTIONS.keys(),
+ help="The archtecture you are building.",
+ )
+ return parser.parse_args()
+
+
+def validate_mar_channel_id(mar, channel_ids):
+ log.info("Checking %s for MAR_CHANNEL_ID %s", mar, channel_ids)
+ # We may get a string with a list representation, or a single entry string.
+ channel_ids = set(channel_ids.split(","))
+
+ product_info = MarReader(open(mar, "rb")).productinfo
+ if not isinstance(product_info, tuple):
+ raise ValueError(
+ "Malformed product information in mar: {}".format(product_info)
+ )
+
+ found_channel_ids = set(product_info[1].split(","))
+
+ if not found_channel_ids.issubset(channel_ids):
+ raise ValueError(
+ "MAR_CHANNEL_ID mismatch, {} not in {}".format(product_info[1], channel_ids)
+ )
+
+ log.info("%s channel %s in %s", mar, product_info[1], channel_ids)
+
+
+async def retry_download(*args, semaphore=None, **kwargs): # noqa: E999
+ """Retry download() calls."""
+ async with AsyncExitStack() as stack:
+ if semaphore:
+ await stack.enter_async_context(semaphore)
+ await retry_async(
+ download,
+ retry_exceptions=(aiohttp.ClientError, asyncio.TimeoutError),
+ args=args,
+ kwargs=kwargs,
+ )
+
+
+def verify_allowed_url(mar, allowed_url_prefixes):
+ if not any(mar.startswith(prefix) for prefix in allowed_url_prefixes):
+ raise ValueError(
+ "{mar} is not in allowed URL prefixes: {p}".format(
+ mar=mar, p=allowed_url_prefixes
+ )
+ )
+
+
+async def download(url, dest, mode=None): # noqa: E999
+ log.info("Downloading %s to %s", url, dest)
+ chunk_size = 4096
+ bytes_downloaded = 0
+ async with aiohttp.ClientSession(raise_for_status=True) as session:
+ start = time.time()
+ async with session.get(url, timeout=120) as resp:
+ # Additional early logging for download timeouts.
+ log.debug("Fetching from url %s", resp.url)
+ for history in resp.history:
+ log.debug("Redirection history: %s", history.url)
+ log.debug("Headers for %s: %s", resp.url, resp.headers)
+ if "Content-Length" in resp.headers:
+ log.debug(
+ "Content-Length expected for %s: %s",
+ url,
+ resp.headers["Content-Length"],
+ )
+ log_interval = chunk_size * 1024
+ with open(dest, "wb") as fd:
+ while True:
+ chunk = await resp.content.read(chunk_size)
+ if not chunk:
+ break
+ fd.write(chunk)
+ bytes_downloaded += len(chunk)
+ log_interval -= len(chunk)
+ if log_interval <= 0:
+ log.debug("Bytes downloaded for %s: %d", url, bytes_downloaded)
+ log_interval = chunk_size * 1024
+ end = time.time()
+ log.info(
+ "Downloaded %s, %s bytes in %s seconds: sha256:%s",
+ url,
+ bytes_downloaded,
+ int(end - start),
+ get_hash(dest, hash_alg="sha256"),
+ )
+ if mode:
+ log.info("chmod %o %s", mode, dest)
+ os.chmod(dest, mode)
+
+
+async def download_buildsystem_bits(partials_config, downloads, tools_dir):
+ """Download external tools needed to make partials."""
+
+ # We're making the assumption that the "to" mar is the same for all,
+ # as that's the way this task is currently used.
+ to_url = extract_download_urls(partials_config, mar_type="to").pop()
+
+ repo = get_option(
+ downloads[to_url]["extracted_path"],
+ filename="platform.ini",
+ section="Build",
+ option="SourceRepository",
+ )
+ revision = get_option(
+ downloads[to_url]["extracted_path"],
+ filename="platform.ini",
+ section="Build",
+ option="SourceStamp",
+ )
+
+ urls = {
+ "make_incremental_update.sh": f"{repo}/raw-file/{revision}/tools/"
+ "update-packaging/make_incremental_update.sh",
+ "common.sh": f"{repo}/raw-file/{revision}/tools/update-packaging/common.sh",
+ "mar": "https://archive.mozilla.org/pub/mozilla.org/firefox/nightly/"
+ "latest-mozilla-central/mar-tools/linux64/mar",
+ "mbsdiff": "https://archive.mozilla.org/pub/mozilla.org/firefox/nightly/"
+ "latest-mozilla-central/mar-tools/linux64/mbsdiff",
+ }
+ for filename, url in urls.items():
+ filename = tools_dir / filename
+ await retry_download(url, dest=filename, mode=0o755)
+
+
+def find_file(directory, filename):
+ log.debug("Searching for %s in %s", filename, directory)
+ return next(Path(directory).rglob(filename))
+
+
+def get_option(directory, filename, section, option):
+ log.info("Extracting [%s]: %s from %s/**/%s", section, option, directory, filename)
+ f = find_file(directory, filename)
+ config = configparser.ConfigParser()
+ config.read(f)
+ rv = config.get(section, option)
+ log.info("Found %s", rv)
+ return rv
+
+
+def extract_download_urls(partials_config, mar_type):
+ """Extract a set of urls to download from the task configuration.
+
+ mar_type should be one of "from", "to"
+ """
+ return {definition[f"{mar_type}_mar"] for definition in partials_config}
+
+
+async def download_and_verify_mars(partials_config, allowed_url_prefixes, signing_cert):
+ """Download, check signature, channel ID and unpack MAR files."""
+ # Separate these categories so we can opt to perform checks on only 'to' downloads.
+ from_urls = extract_download_urls(partials_config, mar_type="from")
+ to_urls = extract_download_urls(partials_config, mar_type="to")
+ tasks = list()
+ downloads = dict()
+
+ semaphore = asyncio.Semaphore(2) # Magic 2 to reduce network timeout errors.
+ for url in from_urls.union(to_urls):
+ verify_allowed_url(url, allowed_url_prefixes)
+ downloads[url] = {
+ "download_path": Path(tempfile.mkdtemp()) / Path(url).name,
+ }
+ tasks.append(
+ retry_download(url, downloads[url]["download_path"], semaphore=semaphore)
+ )
+
+ await asyncio.gather(*tasks)
+
+ for url in downloads:
+ # Verify signature, but not from an artifact as we don't
+ # depend on the signing task
+ if not os.getenv("MOZ_DISABLE_MAR_CERT_VERIFICATION") and not url.startswith(
+ QUEUE_PREFIX
+ ):
+ verify_signature(downloads[url]["download_path"], signing_cert)
+
+ # Only validate the target channel ID, as we update from beta->release
+ if url in to_urls:
+ validate_mar_channel_id(
+ downloads[url]["download_path"], os.environ["MAR_CHANNEL_ID"]
+ )
+
+ downloads[url]["extracted_path"] = tempfile.mkdtemp()
+ with open(downloads[url]["download_path"], "rb") as mar_fh:
+ log.info(
+ "Unpacking %s into %s",
+ downloads[url]["download_path"],
+ downloads[url]["extracted_path"],
+ )
+ m = MarReader(mar_fh)
+ m.extract(downloads[url]["extracted_path"])
+
+ return downloads
+
+
+async def run_command(cmd, cwd="/", env=None, label=None, silent=False):
+ log.info("Running: %s", cmd)
+ if not env:
+ env = dict()
+ process = await asyncio.create_subprocess_shell(
+ cmd,
+ stdout=asyncio.subprocess.PIPE,
+ stderr=asyncio.subprocess.PIPE,
+ cwd=cwd,
+ env=env,
+ )
+ if label:
+ label = "{}: ".format(label)
+ else:
+ label = ""
+
+ async def read_output(stream, label, printcmd):
+ while True:
+ line = await stream.readline()
+ if line == b"":
+ break
+ printcmd("%s%s", label, line.decode("utf-8").rstrip())
+
+ if silent:
+ await process.wait()
+ else:
+ await asyncio.gather(
+ read_output(process.stdout, label, log.info),
+ read_output(process.stderr, label, log.warning),
+ )
+ await process.wait()
+
+
+async def generate_partial(from_dir, to_dir, dest_mar, mar_data, tools_dir, arch):
+ log.info("Generating partial %s", dest_mar)
+ env = os.environ.copy()
+ env["LC_ALL"] = "C"
+ env["MAR"] = tools_dir / "mar"
+ env["MBSDIFF"] = tools_dir / "mbsdiff"
+ if arch:
+ env["BCJ_OPTIONS"] = " ".join(BCJ_OPTIONS[arch])
+ env["MOZ_PRODUCT_VERSION"] = mar_data["version"]
+ env["MAR_CHANNEL_ID"] = mar_data["MAR_CHANNEL_ID"]
+ env["BRANCH"] = mar_data["branch"]
+
+ make_incremental_update = tools_dir / "make_incremental_update.sh"
+ cmd = f"{make_incremental_update} {dest_mar} {from_dir} {to_dir}"
+
+ await run_command(cmd, cwd=dest_mar.parent, env=env, label=dest_mar.name)
+ validate_mar_channel_id(dest_mar, mar_data["MAR_CHANNEL_ID"])
+
+
+async def manage_partial(
+ partial_def, artifacts_dir, tools_dir, downloads, semaphore, arch=None
+):
+ from_url = partial_def["from_mar"]
+ to_url = partial_def["to_mar"]
+ from_path = downloads[from_url]["extracted_path"]
+ to_path = downloads[to_url]["extracted_path"]
+
+ mar_data = {
+ "MAR_CHANNEL_ID": os.environ["MAR_CHANNEL_ID"],
+ "version": get_option(
+ to_path, filename="application.ini", section="App", option="Version"
+ ),
+ "appName": get_option(
+ from_path, filename="application.ini", section="App", option="Name"
+ ),
+ # Use Gecko repo and rev from platform.ini, not application.ini
+ "repo": get_option(
+ to_path, filename="platform.ini", section="Build", option="SourceRepository"
+ ),
+ "revision": get_option(
+ to_path, filename="platform.ini", section="Build", option="SourceStamp"
+ ),
+ "locale": partial_def["locale"],
+ "from_mar": partial_def["from_mar"],
+ "from_size": os.path.getsize(downloads[from_url]["download_path"]),
+ "from_hash": get_hash(downloads[from_url]["download_path"], hash_alg="sha512"),
+ "from_buildid": get_option(
+ from_path, filename="application.ini", section="App", option="BuildID"
+ ),
+ "to_mar": partial_def["to_mar"],
+ "to_size": os.path.getsize(downloads[to_url]["download_path"]),
+ "to_hash": get_hash(downloads[to_url]["download_path"], hash_alg="sha512"),
+ "to_buildid": get_option(
+ to_path, filename="application.ini", section="App", option="BuildID"
+ ),
+ "mar": partial_def["dest_mar"],
+ }
+ # if branch not set explicitly use repo-name
+ mar_data["branch"] = partial_def.get("branch", Path(mar_data["repo"]).name)
+
+ for field in (
+ "update_number",
+ "previousVersion",
+ "previousBuildNumber",
+ "toVersion",
+ "toBuildNumber",
+ ):
+ if field in partial_def:
+ mar_data[field] = partial_def[field]
+
+ dest_mar = Path(artifacts_dir) / mar_data["mar"]
+
+ async with semaphore:
+ await generate_partial(from_path, to_path, dest_mar, mar_data, tools_dir, arch)
+
+ mar_data["size"] = os.path.getsize(dest_mar)
+ mar_data["hash"] = get_hash(dest_mar, hash_alg="sha512")
+ return mar_data
+
+
+async def async_main(args, signing_cert):
+ tasks = []
+
+ allowed_url_prefixes = list(ALLOWED_URL_PREFIXES)
+ if args.allow_staging_prefixes:
+ allowed_url_prefixes += STAGING_URL_PREFIXES
+
+ task = json.load(args.task_definition)
+
+ downloads = await download_and_verify_mars(
+ task["extra"]["funsize"]["partials"], allowed_url_prefixes, signing_cert
+ )
+
+ tools_dir = Path(tempfile.mkdtemp())
+ await download_buildsystem_bits(
+ partials_config=task["extra"]["funsize"]["partials"],
+ downloads=downloads,
+ tools_dir=tools_dir,
+ )
+
+ # May want to consider os.cpu_count() if we ever run on osx/win.
+ # sched_getaffinity is the list of cores we can run on, not the total.
+ semaphore = asyncio.Semaphore(len(os.sched_getaffinity(0)))
+ for definition in task["extra"]["funsize"]["partials"]:
+ tasks.append(
+ asyncio.ensure_future(
+ retry_async(
+ manage_partial,
+ retry_exceptions=(aiohttp.ClientError, asyncio.TimeoutError),
+ kwargs=dict(
+ partial_def=definition,
+ artifacts_dir=args.artifacts_dir,
+ tools_dir=tools_dir,
+ arch=args.arch,
+ downloads=downloads,
+ semaphore=semaphore,
+ ),
+ )
+ )
+ )
+ manifest = await asyncio.gather(*tasks)
+
+ for url in downloads:
+ downloads[url]["download_path"].unlink()
+ shutil.rmtree(downloads[url]["extracted_path"])
+ shutil.rmtree(tools_dir)
+
+ return manifest
+
+
+def main():
+ args = process_arguments()
+
+ logging.basicConfig(format="%(asctime)s - %(levelname)s - %(message)s")
+ log.setLevel(args.log_level)
+
+ signing_cert = args.signing_cert.read()
+ assert get_keysize(signing_cert) == 4096
+
+ artifacts_dir = Path(args.artifacts_dir)
+ if not artifacts_dir.exists():
+ artifacts_dir.mkdir()
+
+ loop = asyncio.get_event_loop()
+ manifest = loop.run_until_complete(async_main(args, signing_cert))
+ loop.close()
+
+ manifest_file = artifacts_dir / "manifest.json"
+ with open(manifest_file, "w") as fp:
+ json.dump(manifest, fp, indent=2, sort_keys=True)
+
+ log.debug("{}".format(json.dumps(manifest, indent=2, sort_keys=True)))
+
+
+if __name__ == "__main__":
+ main()
diff --git a/taskcluster/docker/funsize-update-generator/scripts/mbsdiff_hook.sh b/taskcluster/docker/funsize-update-generator/scripts/mbsdiff_hook.sh
new file mode 100755
index 0000000000..965d938247
--- /dev/null
+++ b/taskcluster/docker/funsize-update-generator/scripts/mbsdiff_hook.sh
@@ -0,0 +1,157 @@
+#!/bin/bash
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#
+# This tool contains functions that are to be used to handle/enable funsize
+# Author: Mihai Tabara
+#
+
+HOOK=
+AWS_BUCKET_NAME=
+LOCAL_CACHE_DIR=
+
+# Don't cache files smaller than this, as it's slower with S3
+# Bug 1437473
+CACHE_THRESHOLD=500000
+
+S3_CACHE_HITS=0
+S3_CACHE_MISSES=0
+
+getsha512(){
+ openssl sha512 "${1}" | awk '{print $2}'
+}
+
+print_usage(){
+ echo "$(basename "$0") [-S S3-BUCKET-NAME] [-c LOCAL-CACHE-DIR-PATH] [-g] [-u] PATH-FROM-URL PATH-TO-URL PATH-PATCH"
+ echo "Script that saves/retrieves from cache presumptive patches as args"
+ echo ""
+ echo "-A SERVER-URL - host where to send the files"
+ echo "-c LOCAL-CACHE-DIR-PATH local path to which patches are cached"
+ echo "-g pre hook - tests whether patch already in cache"
+ echo "-u post hook - upload patch to cache for future use"
+ echo ""
+ echo "PATH-FROM-URL : path on disk for source file"
+ echo "PATH-TO-URL : path on disk for destination file"
+ echo "PATH-PATCH : path on disk for patch between source and destination"
+}
+
+upload_patch(){
+ if [ "$(stat -c "%s" "$2")" -lt ${CACHE_THRESHOLD} ]
+ then
+ return 0
+ fi
+ sha_from=$(getsha512 "$1")
+ sha_to=$(getsha512 "$2")
+ patch_path="$3"
+ patch_filename="$(basename "$3")"
+
+ # save to local cache first
+ if [ -n "$LOCAL_CACHE_DIR" ]; then
+ local_cmd="mkdir -p "$LOCAL_CACHE_DIR/$sha_from""
+ if $local_cmd >&2; then
+ cp -avf "${patch_path}" "$LOCAL_CACHE_DIR/$sha_from/$sha_to"
+ echo "${patch_path} saved on local cache."
+ fi
+ fi
+
+ if [ -n "${AWS_BUCKET_NAME}" ]; then
+ BUCKET_PATH="s3://${AWS_BUCKET_NAME}${sha_from}/${sha_to}/${patch_filename}"
+ if aws s3 cp "${patch_path}" "${BUCKET_PATH}"; then
+ echo "${patch_path} saved on s://${AWS_BUCKET_NAME}"
+ return 0
+ fi
+ echo "${patch_path} failed to be uploaded to s3://${AWS_BUCKET_NAME}"
+ return 1
+ fi
+ return 0
+}
+
+get_patch(){
+ # $1 and $2 are the /path/to/filename
+ if [ "$(stat -c "%s" "$2")" -lt ${CACHE_THRESHOLD} ]
+ then
+ return 1
+ fi
+ sha_from=$(getsha512 "$1")
+ sha_to=$(getsha512 "$2")
+ destination_file="$3"
+ s3_filename="$(basename "$3")"
+
+ # Try to retrieve from local cache first.
+ if [ -n "$LOCAL_CACHE_DIR" ]; then
+ if [ -r "$LOCAL_CACHE_DIR/$sha_from/$sha_to" ]; then
+ cp -avf "$LOCAL_CACHE_DIR/$sha_from/$sha_to" "$destination_file"
+ echo "Successful retrieved ${destination_file} from local cache."
+ return 0
+ fi
+ fi
+ # If not in the local cache, we might find it remotely.
+
+ if [ -n "${AWS_BUCKET_NAME}" ]; then
+ BUCKET_PATH="s3://${AWS_BUCKET_NAME}${sha_from}/${sha_to}/${s3_filename}"
+ if aws s3 ls "${BUCKET_PATH}"; then
+ ((S3_CACHE_HITS++))
+ echo "s3 cache hit for ${s3_filename} (${S3_CACHE_HITS} total hits)"
+ if aws s3 cp "${BUCKET_PATH}" "${destination_file}"; then
+ echo "Successful retrieved ${destination_file} from s3://${AWS_BUCKET_NAME}"
+ return 0
+ else
+ echo "Failed to retrieve ${destination_file} from s3://${AWS_BUCKET_NAME}"
+ return 1
+ fi
+ # Not found, fall through to default error
+ else
+ ((S3_CACHE_MISSES++))
+ echo "s3 cache miss for ${s3_filename} (${S3_CACHE_MISSES} total misses)"
+ fi
+ fi
+ return 1
+}
+
+OPTIND=1
+
+while getopts ":S:c:gu" option; do
+ case $option in
+ S)
+ # This will probably be bucketname/path/prefix but we can use it either way
+ AWS_BUCKET_NAME="$OPTARG"
+ # Ensure trailing slash is there.
+ if [[ ! $AWS_BUCKET_NAME =~ .*/$ ]]; then
+ AWS_BUCKET_NAME="${AWS_BUCKET_NAME}/"
+ fi
+ ;;
+ c)
+ LOCAL_CACHE_DIR="$OPTARG"
+ ;;
+ g)
+ HOOK="PRE"
+ ;;
+ u)
+ HOOK="POST"
+ ;;
+ \?)
+ echo "Invalid option: -$OPTARG" >&2
+ print_usage
+ exit 1
+ ;;
+ :)
+ echo "Option -$OPTARG requires an argument." >&2
+ print_usage
+ exit 1
+ ;;
+ *)
+ echo "Unimplemented option: -$OPTARG" >&2
+ print_usage
+ exit 1
+ ;;
+ esac
+done
+shift $((OPTIND-1))
+
+if [ "$HOOK" == "PRE" ]; then
+ get_patch "$1" "$2" "$3"
+elif [ "$HOOK" == "POST" ]; then
+ upload_patch "$1" "$2" "$3"
+fi
diff --git a/taskcluster/docker/gdb-test/Dockerfile b/taskcluster/docker/gdb-test/Dockerfile
new file mode 100644
index 0000000000..d00504cdd1
--- /dev/null
+++ b/taskcluster/docker/gdb-test/Dockerfile
@@ -0,0 +1,15 @@
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER Mike Hommey <mhommey@mozilla.com>
+
+VOLUME /builds/worker/checkouts
+VOLUME /builds/worker/workspace
+VOLUME /builds/worker/tooltool-cache
+
+ENV XZ_OPT=-T0
+
+ARG TASKCLUSTER_ROOT_URL
+ARG DOCKER_IMAGE_PACKAGES
+RUN /usr/local/sbin/setup_packages.sh $TASKCLUSTER_ROOT_URL $DOCKER_IMAGE_PACKAGES
+
+RUN apt-get update && \
+ apt-get install gdb
diff --git a/taskcluster/docker/github-sync/Dockerfile b/taskcluster/docker/github-sync/Dockerfile
new file mode 100644
index 0000000000..bff131ad7b
--- /dev/null
+++ b/taskcluster/docker/github-sync/Dockerfile
@@ -0,0 +1,14 @@
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER Kartikaya Gupta <kgupta@mozilla.com>
+
+VOLUME /builds/worker/checkouts
+VOLUME /builds/worker/workspace
+VOLUME /builds/worker/tooltool-cache
+VOLUME /builds/worker/.ghsync
+
+ADD prepare.sh /setup/prepare-docker.sh
+ADD requirements.txt /setup/requirements.txt
+RUN /bin/bash /setup/prepare-docker.sh /setup/requirements.txt && rm -R /setup
+
+# Set a default command useful for debugging
+CMD ["/bin/bash", "--login"]
diff --git a/taskcluster/docker/github-sync/prepare.sh b/taskcluster/docker/github-sync/prepare.sh
new file mode 100755
index 0000000000..8efdec2e27
--- /dev/null
+++ b/taskcluster/docker/github-sync/prepare.sh
@@ -0,0 +1,31 @@
+#!/usr/bin/env bash
+
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+set -o errexit
+set -o nounset
+set -o pipefail
+set -o xtrace
+
+test "$(whoami)" == 'root'
+
+# Install stuff we need
+apt-get -y update
+apt-get install -y \
+ cmake \
+ curl \
+ gcc \
+ git \
+ g++ \
+ libffi-dev \
+ libgit2-dev \
+ libssl-dev \
+ python3 \
+ python3-dev \
+ python3-pip \
+ python3-setuptools
+
+# Python packages
+pip3 install -r "$1"
diff --git a/taskcluster/docker/github-sync/requirements.txt b/taskcluster/docker/github-sync/requirements.txt
new file mode 100644
index 0000000000..13fd42681d
--- /dev/null
+++ b/taskcluster/docker/github-sync/requirements.txt
@@ -0,0 +1,3 @@
+requests == 2.21.0
+pygit2 == 1.11.1
+python-hglib == 2.6.1
diff --git a/taskcluster/docker/image_builder/Dockerfile b/taskcluster/docker/image_builder/Dockerfile
new file mode 100644
index 0000000000..ad38a48c49
--- /dev/null
+++ b/taskcluster/docker/image_builder/Dockerfile
@@ -0,0 +1,99 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+FROM golang:1.14 as skopeo
+
+WORKDIR /go/src/
+RUN ["git", "clone", "--no-checkout", "--depth=1", "--branch=v1.1.1", "https://github.com/containers/skopeo", "."]
+RUN ["git", "checkout", "67abbb3cefbdc876447583d5ea45e76bf441eba7"]
+ENV GO111MODULE=on CGO_ENABLED=0
+RUN ["go", "build", \
+ "-mod=vendor", "-o", "out/skopeo", \
+ "-tags", "exclude_graphdriver_devicemapper exclude_graphdriver_btrfs containers_image_openpgp", \
+ # Set unixTempDirForBigFiles so skopeo will extract in a directory hidden by kaniko
+ # We create the directory below.
+ "-ldflags", " -X github.com/containers/image/v5/internal/tmpdir.unixTempDirForBigFiles=/workspace/tmp -X github.com/containers/image/v5/signature.systemDefaultPolicyPath=/kaniko/containers/policy.json -extldflags \"-static\" -w -s", \
+ "./cmd/skopeo"]
+
+FROM golang:1.14 as kaniko
+WORKDIR /go/src/
+RUN ["git", "clone", "--no-checkout", "--depth=1", "--branch=v1.0.0", "https://github.com/GoogleContainerTools/kaniko", "."]
+RUN ["git", "checkout", "146ec6a9cd6f87b4a12e8119ded575d5edca35ac"]
+RUN ["make"]
+
+# Build the `build-image` command as a static binary using musl
+# The setup is loosely based on a stripped down version of
+# https://github.com/emk/rust-musl-builder/blob/master/Dockerfile
+FROM debian:buster as build-image
+
+COPY apt.conf /etc/apt/apt.conf.d/99taskcluster
+
+RUN apt-get update && \
+ apt-get install \
+ build-essential \
+ ca-certificates \
+ curl \
+ musl-dev \
+ musl-tools \
+ && \
+ useradd rust --user-group --create-home --shell /bin/bash
+
+# Run all further code as user `rust`, and create our working directories
+# as the appropriate user.
+USER rust
+
+# Set up our path with all our binary directories, including those for the
+# musl-gcc toolchain and for our Rust toolchain.
+ENV PATH=/home/rust/.cargo/bin:$PATH
+
+# The Rust toolchain to use when building our image. Set by `hooks/build`.
+ENV TOOLCHAIN=1.42.0 \
+ TARGET=x86_64-unknown-linux-musl
+
+# Install our Rust toolchain and the `musl` target. We patch the
+# command-line we pass to the installer so that it won't attempt to
+# interact with the user or fool around with TTYs. We also set the default
+# `--target` to musl so that our users don't need to keep overriding it
+# manually.
+RUN curl https://sh.rustup.rs -sSf | \
+ sh -s -- -y \
+ --profile minimal \
+ --default-toolchain $TOOLCHAIN \
+ --target $TARGET
+
+# Expect our source code to live in /home/rust/src. We'll run the build as
+# user `rust`, which will be uid 1000, gid 1000 outside the container.
+RUN mkdir -p /home/rust/src
+WORKDIR /home/rust/src
+# Add our source code.
+ADD --chown=rust:rust build-image/ ./
+
+# --out-dir is not yet stable
+ENV RUSTC_BOOTSTRAP=1
+# Build our application.
+RUN ["cargo", "build", "--target", "x86_64-unknown-linux-musl", "--out-dir=bin", "--release", "-Zunstable-options"]
+
+FROM scratch as empty
+
+FROM scratch
+
+COPY --from=skopeo /go/src/out/skopeo /kaniko-bootstrap/skopeo
+COPY --from=kaniko /go/src/out/executor /kaniko-bootstrap/executor
+COPY --from=build-image \
+ /home/rust/src/bin/build-image \
+ /kaniko-bootstrap/build-image
+
+ADD https://mkcert.org/generate/ /kaniko-bootstrap/ssl/certs/ca-certificats.crt
+ENV SSL_CERT_DIR=/kaniko/ssl/certs
+
+ADD policy.json /kaniko-bootstrap/containers/policy.json
+
+ENV HOME /root
+ENV USER /root
+WORKDIR /workspace
+
+ENV PATH /usr/local/bin:/kaniko
+
+VOLUME /workspace
+ENTRYPOINT ["/kaniko-bootstrap/build-image"]
diff --git a/taskcluster/docker/image_builder/VERSION b/taskcluster/docker/image_builder/VERSION
new file mode 100644
index 0000000000..fcdb2e109f
--- /dev/null
+++ b/taskcluster/docker/image_builder/VERSION
@@ -0,0 +1 @@
+4.0.0
diff --git a/taskcluster/docker/image_builder/apt.conf b/taskcluster/docker/image_builder/apt.conf
new file mode 100644
index 0000000000..84c0cf10ef
--- /dev/null
+++ b/taskcluster/docker/image_builder/apt.conf
@@ -0,0 +1,5 @@
+quiet "true";
+APT::Get::Assume-Yes "true";
+APT::Install-Recommends "false";
+Acquire::Check-Valid-Until "false";
+Acquire::Retries "5";
diff --git a/taskcluster/docker/image_builder/build-image/Cargo.lock b/taskcluster/docker/image_builder/build-image/Cargo.lock
new file mode 100644
index 0000000000..7e07920591
--- /dev/null
+++ b/taskcluster/docker/image_builder/build-image/Cargo.lock
@@ -0,0 +1,1085 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "anyhow"
+version = "1.0.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "autocfg"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "base64"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "base64"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "bitflags"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "build-image"
+version = "0.1.0"
+dependencies = [
+ "anyhow 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)",
+ "envy 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "reqwest 0.10.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde_json 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)",
+ "url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "zstd 0.5.3+zstd.1.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "bytes"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "loom 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "cc"
+version = "1.0.56"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "jobserver 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "cfg-if"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "dtoa"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "either"
+version = "1.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "encoding_rs"
+version = "0.8.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "envy"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "serde 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "fs_extra"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "fuchsia-zircon"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "fuchsia-zircon-sys"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "futures-channel"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "futures-io"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "futures-macro"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "proc-macro-hack 0.5.16 (registry+https://github.com/rust-lang/crates.io-index)",
+ "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)",
+ "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "syn 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "futures-sink"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "futures-task"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "once_cell 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "futures-util"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-io 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-macro 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-task 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pin-project 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pin-utils 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "proc-macro-hack 0.5.16 (registry+https://github.com/rust-lang/crates.io-index)",
+ "proc-macro-nested 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "generator"
+version = "0.6.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "cc 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "glob"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "h2"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "bytes 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "fnv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-sink 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-util 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "http 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "indexmap 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "tokio 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
+ "tokio-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "hermit-abi"
+version = "0.1.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "http"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "bytes 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "fnv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "itoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "http-body"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "bytes 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "http 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "httparse"
+version = "1.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "hyper"
+version = "0.13.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "bytes 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-channel 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-util 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "h2 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "http 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "http-body 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "itoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pin-project 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)",
+ "socket2 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
+ "tokio 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
+ "tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "want 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "hyper-rustls"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "bytes 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-util 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "hyper 0.13.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "rustls 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "tokio 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
+ "tokio-rustls 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "webpki 0.21.3 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "idna"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "unicode-normalization 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "indexmap"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "iovec"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "itertools"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "itoa"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "jobserver"
+version = "0.1.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "js-sys"
+version = "0.3.41"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "wasm-bindgen 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "kernel32-sys"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "libc"
+version = "0.2.71"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "log"
+version = "0.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "loom"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "generator 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)",
+ "scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "matches"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "memchr"
+version = "2.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "mime"
+version = "0.3.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "mime_guess"
+version = "2.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "mime 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)",
+ "unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "mio"
+version = "0.6.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "net2 0.2.34 (registry+https://github.com/rust-lang/crates.io-index)",
+ "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "miow"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "net2 0.2.34 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "net2"
+version = "0.2.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "num_cpus"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "hermit-abi 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "percent-encoding"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "pin-project"
+version = "0.4.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "pin-project-internal 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "pin-project-internal"
+version = "0.4.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)",
+ "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "syn 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "pin-project-lite"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "pin-utils"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "proc-macro-hack"
+version = "0.5.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "proc-macro-nested"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.1.56"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "reqwest"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "base64 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "bytes 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "encoding_rs 0.8.23 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-util 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "http 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "http-body 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "hyper 0.13.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "hyper-rustls 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "js-sys 0.3.41 (registry+https://github.com/rust-lang/crates.io-index)",
+ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "mime 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)",
+ "mime_guess 2.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pin-project-lite 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "rustls 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "tokio 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
+ "tokio-rustls 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "wasm-bindgen 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)",
+ "wasm-bindgen-futures 0.4.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "web-sys 0.3.41 (registry+https://github.com/rust-lang/crates.io-index)",
+ "webpki-roots 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winreg 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "ring"
+version = "0.16.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "cc 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)",
+ "once_cell 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "untrusted 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "web-sys 0.3.41 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "rustc_version"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "rustls"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "ring 0.16.15 (registry+https://github.com/rust-lang/crates.io-index)",
+ "sct 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "webpki 0.21.3 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "ryu"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "scoped-tls"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "sct"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "ring 0.16.15 (registry+https://github.com/rust-lang/crates.io-index)",
+ "untrusted 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "semver"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "semver-parser"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "serde"
+version = "1.0.114"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "serde_derive 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.114"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)",
+ "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "syn 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.56"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "itoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "ryu 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "serde_urlencoded"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "dtoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "itoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)",
+ "url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "slab"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "socket2"
+version = "0.3.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)",
+ "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "spin"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "syn"
+version = "1.0.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)",
+ "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "time"
+version = "0.1.43"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "tinyvec"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "tokio"
+version = "0.2.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "bytes 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "fnv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)",
+ "num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pin-project-lite 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "tokio-rustls"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "rustls 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "tokio 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
+ "webpki 0.21.3 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "tokio-util"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "bytes 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-sink 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pin-project-lite 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "tokio 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "tower-service"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "try-lock"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "unicase"
+version = "2.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "unicode-bidi"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "unicode-normalization"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "tinyvec 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "unicode-xid"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "untrusted"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "url"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "version_check"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "want"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.64"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde_json 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)",
+ "wasm-bindgen-macro 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.64"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "bumpalo 3.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)",
+ "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "syn 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)",
+ "wasm-bindgen-shared 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "wasm-bindgen-futures"
+version = "0.4.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "js-sys 0.3.41 (registry+https://github.com/rust-lang/crates.io-index)",
+ "wasm-bindgen 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)",
+ "web-sys 0.3.41 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.64"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "wasm-bindgen-macro-support 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.64"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)",
+ "quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "syn 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)",
+ "wasm-bindgen-backend 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)",
+ "wasm-bindgen-shared 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.64"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "web-sys"
+version = "0.3.41"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "js-sys 0.3.41 (registry+https://github.com/rust-lang/crates.io-index)",
+ "wasm-bindgen 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "webpki"
+version = "0.21.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "ring 0.16.15 (registry+https://github.com/rust-lang/crates.io-index)",
+ "untrusted 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "webpki-roots"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "webpki 0.21.3 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "winapi"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "winapi-build"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winreg"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "ws2_32-sys"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "zstd"
+version = "0.5.3+zstd.1.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "zstd-safe 2.0.5+zstd.1.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "zstd-safe"
+version = "2.0.5+zstd.1.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)",
+ "zstd-sys 1.4.17+zstd.1.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "zstd-sys"
+version = "1.4.17+zstd.1.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "cc 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "itertools 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[metadata]
+"checksum anyhow 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)" = "85bb70cc08ec97ca5450e6eba421deeea5f172c0fc61f78b5357b2a8e8be195f"
+"checksum autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d"
+"checksum base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7"
+"checksum base64 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff"
+"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
+"checksum bumpalo 3.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820"
+"checksum bytes 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "118cf036fbb97d0816e3c34b2d7a1e8cfc60f68fcf63d550ddbe9bd5f59c213b"
+"checksum cc 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)" = "77c1f1d60091c1b73e2b1f4560ab419204b178e625fa945ded7b660becd2bd46"
+"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
+"checksum dtoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "134951f4028bdadb9b84baf4232681efbf277da25144b9b0ad65df75946c422b"
+"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3"
+"checksum encoding_rs 0.8.23 (registry+https://github.com/rust-lang/crates.io-index)" = "e8ac63f94732332f44fe654443c46f6375d1939684c17b0afb6cb56b0456e171"
+"checksum envy 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f938a4abd5b75fe3737902dbc2e79ca142cc1526827a9e40b829a086758531a9"
+"checksum fnv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+"checksum fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674"
+"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82"
+"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
+"checksum futures-channel 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f366ad74c28cca6ba456d95e6422883cfb4b252a83bed929c83abfdbbf2967d5"
+"checksum futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "59f5fff90fd5d971f936ad674802482ba441b6f09ba5e15fd8b39145582ca399"
+"checksum futures-io 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "de27142b013a8e869c14957e6d2edeef89e97c289e69d042ee3a49acd8b51789"
+"checksum futures-macro 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d0b5a30a4328ab5473878237c447333c093297bded83a4983d10f4deea240d39"
+"checksum futures-sink 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3f2032893cb734c7a05d85ce0cc8b8c4075278e93b24b66f9de99d6eb0fa8acc"
+"checksum futures-task 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "bdb66b5f09e22019b1ab0830f7785bcea8e7a42148683f99214f73f8ec21a626"
+"checksum futures-util 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "8764574ff08b701a084482c3c7031349104b07ac897393010494beaa18ce32c6"
+"checksum generator 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)" = "add72f17bb81521258fcc8a7a3245b1e184e916bfbe34f0ea89558f440df5c68"
+"checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
+"checksum h2 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "79b7246d7e4b979c03fa093da39cfb3617a96bbeee6310af63991668d7e843ff"
+"checksum hermit-abi 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "b9586eedd4ce6b3c498bc3b4dd92fc9f11166aa908a914071953768066c67909"
+"checksum http 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "28d569972648b2c512421b5f2a405ad6ac9666547189d0c5477a3f200f3e02f9"
+"checksum http-body 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b"
+"checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9"
+"checksum hyper 0.13.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a6e7655b9594024ad0ee439f3b5a7299369dc2a3f459b47c696f9ff676f9aa1f"
+"checksum hyper-rustls 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac965ea399ec3a25ac7d13b8affd4b8f39325cca00858ddf5eb29b79e6b14b08"
+"checksum idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9"
+"checksum indexmap 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c398b2b113b55809ceb9ee3e753fcbac793f1956663f3c36549c1346015c2afe"
+"checksum iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e"
+"checksum itertools 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
+"checksum itoa 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6"
+"checksum jobserver 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)" = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2"
+"checksum js-sys 0.3.41 (registry+https://github.com/rust-lang/crates.io-index)" = "c4b9172132a62451e56142bff9afc91c8e4a4500aa5b847da36815b63bfda916"
+"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
+"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+"checksum libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)" = "9457b06509d27052635f90d6466700c65095fdf75409b3fbdd903e988b886f49"
+"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7"
+"checksum loom 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4ecc775857611e1df29abba5c41355cdf540e7e9d4acfdf0f355eefee82330b7"
+"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
+"checksum memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400"
+"checksum mime 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)" = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
+"checksum mime_guess 2.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2684d4c2e97d99848d30b324b00c8fcc7e5c897b7cbb5819b09e7c90e8baf212"
+"checksum mio 0.6.22 (registry+https://github.com/rust-lang/crates.io-index)" = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430"
+"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"
+"checksum net2 0.2.34 (registry+https://github.com/rust-lang/crates.io-index)" = "2ba7c918ac76704fb42afcbbb43891e72731f3dcca3bef2a19786297baf14af7"
+"checksum num_cpus 1.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3"
+"checksum once_cell 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0b631f7e854af39a1739f401cf34a8a013dfe09eac4fa4dba91e9768bd28168d"
+"checksum percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
+"checksum pin-project 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)" = "12e3a6cdbfe94a5e4572812a0201f8c0ed98c1c452c7b8563ce2276988ef9c17"
+"checksum pin-project-internal 0.4.22 (registry+https://github.com/rust-lang/crates.io-index)" = "6a0ffd45cf79d88737d7cc85bfd5d2894bee1139b356e616fe85dc389c61aaf7"
+"checksum pin-project-lite 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "282adbf10f2698a7a77f8e983a74b2d18176c19a7fd32a45446139ae7b02b715"
+"checksum pin-utils 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+"checksum proc-macro-hack 0.5.16 (registry+https://github.com/rust-lang/crates.io-index)" = "7e0456befd48169b9f13ef0f0ad46d492cf9d2dbb918bcf38e01eed4ce3ec5e4"
+"checksum proc-macro-nested 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a"
+"checksum proc-macro2 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)" = "beae6331a816b1f65d04c45b078fd8e6c93e8071771f41b8163255bbd8d7c8fa"
+"checksum quote 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37"
+"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84"
+"checksum reqwest 0.10.6 (registry+https://github.com/rust-lang/crates.io-index)" = "3b82c9238b305f26f53443e3a4bc8528d64b8d0bee408ec949eb7bf5635ec680"
+"checksum ring 0.16.15 (registry+https://github.com/rust-lang/crates.io-index)" = "952cd6b98c85bbc30efa1ba5783b8abf12fec8b3287ffa52605b9432313e34e4"
+"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
+"checksum rustls 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c0d4a31f5d68413404705d6982529b0e11a9aacd4839d1d6222ee3b8cb4015e1"
+"checksum ryu 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
+"checksum scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "332ffa32bf586782a3efaeb58f127980944bbc8c4d6913a86107ac2a5ab24b28"
+"checksum sct 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c"
+"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
+"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
+"checksum serde 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)" = "5317f7588f0a5078ee60ef675ef96735a1442132dc645eb1d12c018620ed8cd3"
+"checksum serde_derive 1.0.114 (registry+https://github.com/rust-lang/crates.io-index)" = "2a0be94b04690fbaed37cddffc5c134bf537c8e3329d53e982fe04c374978f8e"
+"checksum serde_json 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)" = "3433e879a558dde8b5e8feb2a04899cf34fdde1fafb894687e52105fc1162ac3"
+"checksum serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9ec5d77e2d4c73717816afac02670d5c4f534ea95ed430442cad02e7a6e32c97"
+"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
+"checksum socket2 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)" = "03088793f677dce356f3ccc2edb1b314ad191ab702a5de3faf49304f7e104918"
+"checksum spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
+"checksum syn 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)" = "e8d5d96e8cbb005d6959f119f773bfaebb5684296108fb32600c00cde305b2cd"
+"checksum time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
+"checksum tinyvec 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "53953d2d3a5ad81d9f844a32f14ebb121f50b650cd59d0ee2a07cf13c617efed"
+"checksum tokio 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)" = "d099fa27b9702bed751524694adbe393e18b36b204da91eb1cbbbbb4a5ee2d58"
+"checksum tokio-rustls 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "15cb62a0d2770787abc96e99c1cd98fcf17f94959f3af63ca85bdfb203f051b4"
+"checksum tokio-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499"
+"checksum tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860"
+"checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382"
+"checksum unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6"
+"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"
+"checksum unicode-normalization 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977"
+"checksum unicode-xid 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564"
+"checksum untrusted 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"
+"checksum url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb"
+"checksum version_check 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed"
+"checksum want 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0"
+"checksum wasm-bindgen 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)" = "6a634620115e4a229108b71bde263bb4220c483b3f07f5ba514ee8d15064c4c2"
+"checksum wasm-bindgen-backend 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)" = "3e53963b583d18a5aa3aaae4b4c1cb535218246131ba22a71f05b518098571df"
+"checksum wasm-bindgen-futures 0.4.14 (registry+https://github.com/rust-lang/crates.io-index)" = "dba48d66049d2a6cc8488702e7259ab7afc9043ad0dc5448444f46f2a453b362"
+"checksum wasm-bindgen-macro 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)" = "3fcfd5ef6eec85623b4c6e844293d4516470d8f19cd72d0d12246017eb9060b8"
+"checksum wasm-bindgen-macro-support 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)" = "9adff9ee0e94b926ca81b57f57f86d5545cdcb1d259e21ec9bdd95b901754c75"
+"checksum wasm-bindgen-shared 0.2.64 (registry+https://github.com/rust-lang/crates.io-index)" = "7f7b90ea6c632dd06fd765d44542e234d5e63d9bb917ecd64d79778a13bd79ae"
+"checksum web-sys 0.3.41 (registry+https://github.com/rust-lang/crates.io-index)" = "863539788676619aac1a23e2df3655e96b32b0e05eb72ca34ba045ad573c625d"
+"checksum webpki 0.21.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ab146130f5f790d45f82aeeb09e55a256573373ec64409fc19a6fb82fb1032ae"
+"checksum webpki-roots 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8eff4b7516a57307f9349c64bf34caa34b940b66fed4b2fb3136cb7386e5739"
+"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
+"checksum winapi 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
+"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+"checksum winreg 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69"
+"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"
+"checksum zstd 0.5.3+zstd.1.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "01b32eaf771efa709e8308605bbf9319bf485dc1503179ec0469b611937c0cd8"
+"checksum zstd-safe 2.0.5+zstd.1.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1cfb642e0d27f64729a639c52db457e0ae906e7bc6f5fe8f5c453230400f1055"
+"checksum zstd-sys 1.4.17+zstd.1.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "b89249644df056b522696b1bb9e7c18c87e8ffa3e2f0dc3b0155875d6498f01b"
diff --git a/taskcluster/docker/image_builder/build-image/Cargo.toml b/taskcluster/docker/image_builder/build-image/Cargo.toml
new file mode 100644
index 0000000000..be42fe1e34
--- /dev/null
+++ b/taskcluster/docker/image_builder/build-image/Cargo.toml
@@ -0,0 +1,23 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+[package]
+name = "build-image"
+version = "0.1.0"
+authors = ["Tom Prince <tom.prince@twistedmatrix.com>"]
+edition = "2018"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+reqwest = { version= "0.10.4", features = ["rustls-tls", "blocking"], default-features = false}
+zstd = "0.5.1"
+url = "2.1.1"
+anyhow = "1.0.27"
+serde = { version = "1.0.105", features = ["derive"]}
+serde_json = "1.0.50"
+envy = "0.4.1"
+fs_extra = "1.1"
+
+[workspace]
diff --git a/taskcluster/docker/image_builder/build-image/src/config.rs b/taskcluster/docker/image_builder/build-image/src/config.rs
new file mode 100644
index 0000000000..94c1d55a10
--- /dev/null
+++ b/taskcluster/docker/image_builder/build-image/src/config.rs
@@ -0,0 +1,112 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+use anyhow::Result;
+use serde::de::Error;
+use serde::Deserialize;
+use std::collections::HashMap;
+
+fn default_image_name() -> String {
+ "mozilla.org/taskgraph/default-image:latest".into()
+}
+fn default_zstd_level() -> i32 {
+ 3
+}
+
+fn from_json<'de, D, T>(deserializer: D) -> Result<T, D::Error>
+where
+ D: serde::de::Deserializer<'de>,
+ T: serde::de::DeserializeOwned,
+{
+ let value: String = serde::Deserialize::deserialize(deserializer)?;
+ serde_json::from_str(&value).map_err(|err| {
+ D::Error::invalid_value(serde::de::Unexpected::Str(&value), &&*err.to_string())
+ })
+}
+
+#[derive(Deserialize, Debug, PartialEq, Eq)]
+pub struct Config {
+ pub context_task_id: String,
+ pub context_path: String,
+ pub parent_task_id: Option<String>,
+ #[serde(default = "default_image_name")]
+ pub image_name: String,
+ #[serde(default = "default_zstd_level")]
+ pub docker_image_zstd_level: i32,
+ #[serde(default)]
+ pub debug: bool,
+ #[serde(default, deserialize_with = "from_json")]
+ pub docker_build_args: HashMap<String, String>,
+}
+
+impl Config {
+ pub fn from_env() -> Result<Config> {
+ Ok(envy::from_env()?)
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use anyhow::Result;
+
+ #[test]
+ fn test() -> Result<()> {
+ let env: Vec<(String, String)> = vec![
+ ("CONTEXT_TASK_ID".into(), "xGRRgzG6QlCCwsFsyuqm0Q".into()),
+ (
+ "CONTEXT_PATH".into(),
+ "public/docker-contexts/image.tar.gz".into(),
+ ),
+ ];
+ let config: super::Config = envy::from_iter(env.into_iter())?;
+ assert_eq!(
+ config,
+ super::Config {
+ context_task_id: "xGRRgzG6QlCCwsFsyuqm0Q".into(),
+ context_path: "public/docker-contexts/image.tar.gz".into(),
+ parent_task_id: None,
+ image_name: "mozilla.org/taskgraph/default-image:latest".into(),
+ docker_image_zstd_level: 3,
+ debug: false,
+ docker_build_args: Default::default()
+ }
+ );
+ Ok(())
+ }
+
+ #[test]
+ fn test_docker_build_args() -> Result<()> {
+ let env: Vec<(String, String)> = vec![
+ ("CONTEXT_TASK_ID".into(), "xGRRgzG6QlCCwsFsyuqm0Q".into()),
+ (
+ "CONTEXT_PATH".into(),
+ "public/docker-contexts/image.tar.gz".into(),
+ ),
+ (
+ "DOCKER_BUILD_ARGS".into(),
+ serde_json::json! ({
+ "test": "Value",
+ })
+ .to_string(),
+ ),
+ ];
+ let config: super::Config = envy::from_iter(env.into_iter())?;
+ assert_eq!(
+ config,
+ super::Config {
+ context_task_id: "xGRRgzG6QlCCwsFsyuqm0Q".into(),
+ context_path: "public/docker-contexts/image.tar.gz".into(),
+ parent_task_id: None,
+ image_name: "mozilla.org/taskgraph/default-image:latest".into(),
+ docker_image_zstd_level: 3,
+ debug: false,
+ docker_build_args: [("test".to_string(), "Value".to_string())]
+ .iter()
+ .cloned()
+ .collect(),
+ }
+ );
+ Ok(())
+ }
+}
diff --git a/taskcluster/docker/image_builder/build-image/src/main.rs b/taskcluster/docker/image_builder/build-image/src/main.rs
new file mode 100644
index 0000000000..997617c84e
--- /dev/null
+++ b/taskcluster/docker/image_builder/build-image/src/main.rs
@@ -0,0 +1,182 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#![forbid(unsafe_code)]
+
+use std::collections::HashMap;
+use std::path::Path;
+use std::process::Command;
+
+use anyhow::{ensure, Context, Result};
+use fs_extra::dir::{move_dir, CopyOptions};
+use serde::Deserialize;
+
+mod config;
+mod taskcluster;
+
+use config::Config;
+
+fn log_step(msg: &str) {
+ println!("[build-image] {}", msg);
+}
+
+fn read_image_digest(path: &str) -> Result<String> {
+ let output = Command::new("/kaniko/skopeo")
+ .arg("inspect")
+ .arg(format!("docker-archive:{}", path))
+ .stdout(std::process::Stdio::piped())
+ .spawn()?
+ .wait_with_output()?;
+ ensure!(output.status.success(), "Could not inspect parent image.");
+
+ #[derive(Deserialize, Debug)]
+ #[serde(rename_all = "PascalCase")]
+ struct ImageInfo {
+ #[serde(skip_serializing_if = "Option::is_none")]
+ name: Option<String>,
+ #[serde(skip_serializing_if = "Option::is_none")]
+ tag: Option<String>,
+ digest: String,
+ // ...
+ }
+
+ let image_info: ImageInfo = serde_json::from_slice(&output.stdout)
+ .with_context(|| format!("Could parse image info from {:?}", path))?;
+ Ok(image_info.digest)
+}
+
+fn download_parent_image(
+ cluster: &taskcluster::TaskCluster,
+ task_id: &str,
+ dest: &str,
+) -> Result<String> {
+ zstd::stream::copy_decode(
+ cluster.stream_artifact(&task_id, "public/image.tar.zst")?,
+ std::fs::File::create(dest)?,
+ )
+ .context("Could not download parent image.")?;
+
+ read_image_digest(dest)
+}
+
+fn build_image(
+ context_path: &str,
+ dest: &str,
+ debug: bool,
+ build_args: HashMap<String, String>,
+) -> Result<()> {
+ let mut command = Command::new("/kaniko/executor");
+ command
+ .stderr(std::process::Stdio::inherit())
+ .args(&["--context", &format!("tar://{}", context_path)])
+ .args(&["--destination", "image"])
+ .args(&["--dockerfile", "Dockerfile"])
+ .arg("--no-push")
+ .args(&["--cache-dir", "/workspace/cache"])
+ .arg("--single-snapshot")
+ // FIXME: Generating reproducible layers currently causes OOM.
+ // .arg("--reproducible")
+ .arg("--whitelist-var-run=false")
+ .args(&["--tarPath", dest]);
+ if debug {
+ command.args(&["-v", "debug"]);
+ }
+ for (key, value) in build_args {
+ command.args(&["--build-arg", &format!("{}={}", key, value)]);
+ }
+ let status = command.status()?;
+ ensure!(status.success(), "Could not build image.");
+ Ok(())
+}
+
+fn repack_image(source: &str, dest: &str, image_name: &str) -> Result<()> {
+ let status = Command::new("/kaniko/skopeo")
+ .arg("copy")
+ .arg(format!("docker-archive:{}", source))
+ .arg(format!("docker-archive:{}:{}", dest, image_name))
+ .stderr(std::process::Stdio::inherit())
+ .status()?;
+ ensure!(status.success(), "Could repack image.");
+ Ok(())
+}
+
+fn main() -> Result<()> {
+ // Kaniko expects everything to be in /kaniko, so if not running from there, move
+ // everything there.
+ if let Some(path) = std::env::current_exe()?.parent() {
+ if path != Path::new("/kaniko") {
+ let mut options = CopyOptions::new();
+ options.copy_inside = true;
+ move_dir(path, "/kaniko", &options)?;
+ }
+ }
+
+ let config = Config::from_env().context("Could not parse environment variables.")?;
+
+ let cluster = taskcluster::TaskCluster::from_env()?;
+
+ let mut build_args = config.docker_build_args;
+
+ build_args.insert("TASKCLUSTER_ROOT_URL".into(), cluster.root_url());
+
+ log_step("Downloading context.");
+
+ std::io::copy(
+ &mut cluster.stream_artifact(&config.context_task_id, &config.context_path)?,
+ &mut std::fs::File::create("/workspace/context.tar.gz")?,
+ )
+ .context("Could not download image context.")?;
+
+ if let Some(parent_task_id) = config.parent_task_id {
+ log_step("Downloading image.");
+ let digest = download_parent_image(&cluster, &parent_task_id, "/workspace/parent.tar")?;
+
+ log_step(&format!("Parent image digest {}", &digest));
+ std::fs::create_dir_all("/workspace/cache")?;
+ std::fs::rename(
+ "/workspace/parent.tar",
+ format!("/workspace/cache/{}", digest),
+ )?;
+
+ build_args.insert(
+ "DOCKER_IMAGE_PARENT".into(),
+ format!("parent:latest@{}", digest),
+ );
+ }
+
+ log_step("Building image.");
+ build_image(
+ "/workspace/context.tar.gz",
+ "/workspace/image-pre.tar",
+ config.debug,
+ build_args,
+ )?;
+ log_step("Repacking image.");
+ repack_image(
+ "/workspace/image-pre.tar",
+ "/workspace/image.tar",
+ &config.image_name,
+ )?;
+
+ log_step("Compressing image.");
+ compress_file(
+ "/workspace/image.tar",
+ "/workspace/image.tar.zst",
+ config.docker_image_zstd_level,
+ )?;
+
+ Ok(())
+}
+
+fn compress_file(
+ source: impl AsRef<std::path::Path>,
+ dest: impl AsRef<std::path::Path>,
+ zstd_level: i32,
+) -> Result<()> {
+ Ok(zstd::stream::copy_encode(
+ std::fs::File::open(source)?,
+ std::fs::File::create(dest)?,
+ zstd_level,
+ )?)
+}
diff --git a/taskcluster/docker/image_builder/build-image/src/taskcluster.rs b/taskcluster/docker/image_builder/build-image/src/taskcluster.rs
new file mode 100644
index 0000000000..3b39d669f0
--- /dev/null
+++ b/taskcluster/docker/image_builder/build-image/src/taskcluster.rs
@@ -0,0 +1,55 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+use anyhow::{Context, Result};
+
+pub struct TaskCluster {
+ root_url: url::Url,
+ client: reqwest::blocking::Client,
+}
+
+impl TaskCluster {
+ pub fn from_env() -> Result<Self> {
+ std::env::var("TASKCLUSTER_ROOT_URL")
+ .context("TASKCLUSTER_ROOT_URL not set.")
+ .and_then(|var| var.parse().context("Couldn't parse TASKCLUSTER_ROOT_URL."))
+ .map(|root_url| TaskCluster {
+ root_url,
+ client: reqwest::blocking::Client::new(),
+ })
+ }
+
+ /// Return the root URL as suitable for passing to other processes.
+ ///
+ /// In particular, any trailing slashes are removed.
+ pub fn root_url(&self) -> String {
+ self.root_url.as_str().trim_end_matches("/").to_string()
+ }
+
+ pub fn task_artifact_url(&self, task_id: &str, path: &str) -> url::Url {
+ let mut url = self.root_url.clone();
+ url.set_path(&format!("api/queue/v1/task/{}/artifacts/{}", task_id, path));
+ url
+ }
+
+ pub fn stream_artifact(&self, task_id: &str, path: &str) -> Result<impl std::io::Read> {
+ let url = self.task_artifact_url(task_id, path);
+ Ok(self.client.get(url).send()?.error_for_status()?)
+ }
+}
+
+#[cfg(test)]
+mod test {
+ #[test]
+ fn test_url() {
+ let cluster = super::TaskCluster {
+ root_url: url::Url::parse("http://taskcluster.example").unwrap(),
+ client: reqwest::blocking::Client::new(),
+ };
+ assert_eq!(
+ cluster.task_artifact_url("QzDLgP4YRwanIvgPt6ClfA","public/docker-contexts/decision.tar.gz"),
+ url::Url::parse("http://taskcluster.example/api/queue/v1/task/QzDLgP4YRwanIvgPt6ClfA/artifacts/public/docker-contexts/decision.tar.gz").unwrap(),
+ );
+ }
+}
diff --git a/taskcluster/docker/image_builder/policy.json b/taskcluster/docker/image_builder/policy.json
new file mode 100644
index 0000000000..c9a9b225cf
--- /dev/null
+++ b/taskcluster/docker/image_builder/policy.json
@@ -0,0 +1,11 @@
+{
+ "default": [{ "type": "reject" }],
+ "transports": {
+ "docker-archive": {
+ "": [{ "type": "insecureAcceptAnything" }]
+ },
+ "dir": {
+ "": [{ "type": "insecureAcceptAnything" }]
+ }
+ }
+}
diff --git a/taskcluster/docker/index-task/.eslintrc.js b/taskcluster/docker/index-task/.eslintrc.js
new file mode 100644
index 0000000000..ff84d9cb69
--- /dev/null
+++ b/taskcluster/docker/index-task/.eslintrc.js
@@ -0,0 +1,11 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+module.exports = {
+ env: {
+ node: true,
+ },
+};
diff --git a/taskcluster/docker/index-task/Dockerfile b/taskcluster/docker/index-task/Dockerfile
new file mode 100644
index 0000000000..493eda4e20
--- /dev/null
+++ b/taskcluster/docker/index-task/Dockerfile
@@ -0,0 +1,11 @@
+FROM node:10-alpine
+
+ENV NODE_ENV production
+RUN mkdir /app
+ADD insert-indexes.js /app/
+ADD package.json /app/
+ADD yarn.lock /app/
+WORKDIR /app
+RUN yarn --frozen-lockfile && yarn cache clean
+
+ENTRYPOINT ["node"]
diff --git a/taskcluster/docker/index-task/README b/taskcluster/docker/index-task/README
new file mode 100644
index 0000000000..9ec00e7897
--- /dev/null
+++ b/taskcluster/docker/index-task/README
@@ -0,0 +1,36 @@
+Index-Image
+===========
+
+This image is designed to be used for indexing other tasks. It takes a task
+definition as follows:
+```js
+{
+ ...,
+ scopes: [
+ 'index:insert-task:my-index.namespace',
+ 'index:insert-task:...',
+ ],
+ payload: {
+ image: '...',
+ env: {
+ TARGET_TASKID: '<taskId-to-be-indexed>',
+ },
+ command: [
+ 'insert-indexes.js',
+ 'my-index.namespace.one',
+ 'my-index.namespace.two',
+ '....',
+ ],
+ features: {
+ taskclusterProxy: true,
+ },
+ maxRunTime: 600,
+ },
+}
+```
+
+As can be seen the `taskId` to be indexed is given by the environment variable
+`TARGET_TASKID` and the `command` arguments specifies namespaces that it must
+be index under. It is **important** to also include scopes on the form
+`index:insert-task:<...>` for all namespaces `<...>` given as `command`
+arguments.
diff --git a/taskcluster/docker/index-task/insert-indexes.js b/taskcluster/docker/index-task/insert-indexes.js
new file mode 100644
index 0000000000..39ff45fd9c
--- /dev/null
+++ b/taskcluster/docker/index-task/insert-indexes.js
@@ -0,0 +1,73 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+let taskcluster = require("taskcluster-client");
+
+// Create instance of index client
+let index = new taskcluster.Index({
+ delayFactor: 750, // Good solid delay for background process
+ retries: 8, // A few extra retries for robustness
+ rootUrl:
+ process.env.TASKCLUSTER_PROXY_URL || process.env.TASKCLUSTER_ROOT_URL,
+});
+
+// Create queue instance for fetching taskId
+let queue = new taskcluster.Queue({
+ delayFactor: 750, // Good solid delay for background process
+ retries: 8, // A few extra retries for robustness
+ rootUrl:
+ process.env.TASKCLUSTER_PROXY_URL || process.env.TASKCLUSTER_ROOT_URL,
+});
+
+// Load input
+let taskId = process.env.TARGET_TASKID;
+let rank = parseInt(process.env.INDEX_RANK, 10);
+let namespaces = process.argv.slice(2);
+
+// Validate input
+if (!taskId) {
+ console.log("Expected target task as environment variable: TARGET_TASKID");
+ process.exit(1);
+}
+
+if (isNaN(rank)) {
+ console.log("Expected index rank as environment variable: INDEX_RANK");
+ process.exit(1);
+}
+
+// Fetch task definition to get expiration and then insert into index
+queue
+ .task(taskId)
+ .then(task => task.expires)
+ .then(expires => {
+ return Promise.all(
+ namespaces.map(namespace => {
+ console.log(
+ "Inserting %s into index (rank %d) under: %s",
+ taskId,
+ rank,
+ namespace
+ );
+ return index.insertTask(namespace, {
+ taskId,
+ rank,
+ data: {},
+ expires,
+ });
+ })
+ );
+ })
+ .then(() => {
+ console.log("indexing successfully completed.");
+ process.exit(0);
+ })
+ .catch(err => {
+ console.log("Error:\n%s", err);
+ if (err.stack) {
+ console.log("Stack:\n%s", err.stack);
+ }
+ console.log("Properties:\n%j", err);
+ throw err;
+ })
+ .catch(() => process.exit(1));
diff --git a/taskcluster/docker/index-task/package.json b/taskcluster/docker/index-task/package.json
new file mode 100644
index 0000000000..14c035123c
--- /dev/null
+++ b/taskcluster/docker/index-task/package.json
@@ -0,0 +1,12 @@
+{
+ "private": true,
+ "scripts": {
+ "start": "node index.js"
+ },
+ "dependencies": {
+ "taskcluster-client": "^12.2.0"
+ },
+ "engines": {
+ "node": "10"
+ }
+}
diff --git a/taskcluster/docker/index-task/yarn.lock b/taskcluster/docker/index-task/yarn.lock
new file mode 100644
index 0000000000..326936d8a6
--- /dev/null
+++ b/taskcluster/docker/index-task/yarn.lock
@@ -0,0 +1,326 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+amqplib@^0.5.1:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/amqplib/-/amqplib-0.5.3.tgz#7ccfc85d12ee7cd3c6dc861bb07f0648ec3d7193"
+ integrity sha512-ZOdUhMxcF+u62rPI+hMtU1NBXSDFQ3eCJJrenamtdQ7YYwh7RZJHOIM1gonVbZ5PyVdYH4xqBPje9OYqk7fnqw==
+ dependencies:
+ bitsyntax "~0.1.0"
+ bluebird "^3.5.2"
+ buffer-more-ints "~1.0.0"
+ readable-stream "1.x >=1.1.9"
+ safe-buffer "~5.1.2"
+ url-parse "~1.4.3"
+
+asap@~2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
+ integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
+
+bitsyntax@~0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/bitsyntax/-/bitsyntax-0.1.0.tgz#b0c59acef03505de5a2ed62a2f763c56ae1d6205"
+ integrity sha512-ikAdCnrloKmFOugAfxWws89/fPc+nw0OOG1IzIE72uSOg/A3cYptKCjSUhDTuj7fhsJtzkzlv7l3b8PzRHLN0Q==
+ dependencies:
+ buffer-more-ints "~1.0.0"
+ debug "~2.6.9"
+ safe-buffer "~5.1.2"
+
+bluebird@^3.5.2:
+ version "3.5.3"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7"
+ integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==
+
+boom@4.x.x:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31"
+ integrity sha1-T4owBctKfjiJ90kDD9JbluAdLjE=
+ dependencies:
+ hoek "4.x.x"
+
+boom@5.x.x:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02"
+ integrity sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==
+ dependencies:
+ hoek "4.x.x"
+
+buffer-more-ints@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz#ef4f8e2dddbad429ed3828a9c55d44f05c611422"
+ integrity sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==
+
+combined-stream@^1.0.6:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828"
+ integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==
+ dependencies:
+ delayed-stream "~1.0.0"
+
+component-emitter@^1.2.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
+ integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=
+
+cookiejar@^2.1.0:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c"
+ integrity sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==
+
+core-util-is@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+ integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+
+cryptiles@3.x.x:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.4.tgz#769a68c95612b56faadfcebf57ac86479cbe8322"
+ integrity sha512-8I1sgZHfVwcSOY6mSGpVU3lw/GSIZvusg8dD2+OGehCJpOhQRLNcH0qb9upQnOH4XhgxxFJSg6E2kx95deb1Tw==
+ dependencies:
+ boom "5.x.x"
+
+debug@^3.1.0:
+ version "3.2.6"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
+ integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
+ dependencies:
+ ms "^2.1.1"
+
+debug@~2.6.9:
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
+
+extend@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
+ integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+
+form-data@^2.3.1:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
+ integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.6"
+ mime-types "^2.1.12"
+
+formidable@^1.2.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.1.tgz#70fb7ca0290ee6ff961090415f4b3df3d2082659"
+ integrity sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==
+
+hawk@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038"
+ integrity sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==
+ dependencies:
+ boom "4.x.x"
+ cryptiles "3.x.x"
+ hoek "4.x.x"
+ sntp "2.x.x"
+
+hoek@4.x.x:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb"
+ integrity sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==
+
+inherits@~2.0.1, inherits@~2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+ integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+
+isarray@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
+ integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
+
+isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+lodash@^4.17.4:
+ version "4.17.11"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
+ integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
+
+methods@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
+ integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
+
+mime-db@~1.37.0:
+ version "1.37.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8"
+ integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==
+
+mime-types@^2.1.12:
+ version "2.1.21"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96"
+ integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==
+ dependencies:
+ mime-db "~1.37.0"
+
+mime@^1.4.1:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
+ integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
+
+ms@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
+ integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
+
+process-nextick-args@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
+ integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==
+
+promise@^8.0.1:
+ version "8.0.2"
+ resolved "https://registry.yarnpkg.com/promise/-/promise-8.0.2.tgz#9dcd0672192c589477d56891271bdc27547ae9f0"
+ integrity sha512-EIyzM39FpVOMbqgzEHhxdrEhtOSDOtjMZQ0M6iVfCE+kWNgCkAyOdnuCWqfmflylftfadU6FkiMgHZA2kUzwRw==
+ dependencies:
+ asap "~2.0.6"
+
+qs@^6.5.1:
+ version "6.6.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.6.0.tgz#a99c0f69a8d26bf7ef012f871cdabb0aee4424c2"
+ integrity sha512-KIJqT9jQJDQx5h5uAVPimw6yVg2SekOKu959OCtktD3FjzbpvaPr8i4zzg07DOMz+igA4W/aNM7OV8H37pFYfA==
+
+querystringify@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.0.tgz#7ded8dfbf7879dcc60d0a644ac6754b283ad17ef"
+ integrity sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==
+
+"readable-stream@1.x >=1.1.9":
+ version "1.1.14"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
+ integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk=
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "0.0.1"
+ string_decoder "~0.10.x"
+
+readable-stream@^2.3.5:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
+ integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~2.0.0"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.1.1"
+ util-deprecate "~1.0.1"
+
+requires-port@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
+ integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
+
+safe-buffer@~5.1.0, safe-buffer@~5.1.1, safe-buffer@~5.1.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+slugid@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/slugid/-/slugid-1.1.0.tgz#e09f00899c09f5a7058edc36dd49f046fd50a82a"
+ integrity sha1-4J8AiZwJ9acFjtw23UnwRv1QqCo=
+ dependencies:
+ uuid "^2.0.1"
+
+sntp@2.x.x:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8"
+ integrity sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==
+ dependencies:
+ hoek "4.x.x"
+
+string_decoder@~0.10.x:
+ version "0.10.31"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+ integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
+
+string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
+
+superagent@~3.8.1:
+ version "3.8.3"
+ resolved "https://registry.yarnpkg.com/superagent/-/superagent-3.8.3.tgz#460ea0dbdb7d5b11bc4f78deba565f86a178e128"
+ integrity sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==
+ dependencies:
+ component-emitter "^1.2.0"
+ cookiejar "^2.1.0"
+ debug "^3.1.0"
+ extend "^3.0.0"
+ form-data "^2.3.1"
+ formidable "^1.2.0"
+ methods "^1.1.1"
+ mime "^1.4.1"
+ qs "^6.5.1"
+ readable-stream "^2.3.5"
+
+taskcluster-client@^12.2.0:
+ version "12.2.0"
+ resolved "https://registry.yarnpkg.com/taskcluster-client/-/taskcluster-client-12.2.0.tgz#423aee3b17566d14f8ad23e4e47532265a74fb89"
+ integrity sha512-2Fu5ICS2663kC2t8ymJYzRDnipj3DsCK//b+H/83RjJvC6cWZ0akKzq0ySvPlNA6ic2UcL4I03bJTCJYBX1dqg==
+ dependencies:
+ amqplib "^0.5.1"
+ debug "^3.1.0"
+ hawk "^6.0.2"
+ lodash "^4.17.4"
+ promise "^8.0.1"
+ slugid "^1.1.0"
+ superagent "~3.8.1"
+ taskcluster-lib-urls "^10.0.0"
+
+taskcluster-lib-urls@^10.0.0:
+ version "10.1.1"
+ resolved "https://registry.yarnpkg.com/taskcluster-lib-urls/-/taskcluster-lib-urls-10.1.1.tgz#67d5b9449b947e5234eafdd15c46267dde29bf74"
+ integrity sha512-tdrK++rCX73FMXk/cXwS6RLTjA3pX8hJlxg1ECLs3L3llCOPMNhQ4wi6lb6yMgHc/s5on/Edj6AlAH7gkxzgPg==
+
+url-parse@~1.4.3:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.4.tgz#cac1556e95faa0303691fec5cf9d5a1bc34648f8"
+ integrity sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==
+ dependencies:
+ querystringify "^2.0.0"
+ requires-port "^1.0.0"
+
+util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
+uuid@^2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a"
+ integrity sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=
diff --git a/taskcluster/docker/lint/Dockerfile b/taskcluster/docker/lint/Dockerfile
new file mode 100644
index 0000000000..e34d9730d7
--- /dev/null
+++ b/taskcluster/docker/lint/Dockerfile
@@ -0,0 +1,36 @@
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER Andrew Halberstadt <ahalberstadt@mozilla.com>
+
+VOLUME /builds/worker/.cache
+VOLUME /builds/worker/checkouts
+
+# We do want to install recommended packages.
+RUN sed -i /APT::Install-Recommends/d /etc/apt/apt.conf.d/99taskcluster
+
+RUN mkdir /build
+# %include python/mozbuild/mozbuild/action/tooltool.py
+ADD topsrcdir/python/mozbuild/mozbuild/action/tooltool.py /build/tooltool.py
+
+# %include taskcluster/docker/recipes/install-node.sh
+ADD topsrcdir/taskcluster/docker/recipes/install-node.sh /build/install-node.sh
+
+ADD system-setup.sh /tmp/system-setup.sh
+# %include tools/lint/eslint/manifest.tt
+ADD topsrcdir/tools/lint/eslint/manifest.tt /tmp/eslint.tt
+# %include tools/lint/eslint/eslint-plugin-mozilla/manifest.tt
+ADD topsrcdir/tools/lint/eslint/eslint-plugin-mozilla/manifest.tt /tmp/eslint-plugin-mozilla.tt
+# %include tools/lint/spell/codespell_requirements.txt
+ADD topsrcdir/tools/lint/spell/codespell_requirements.txt /tmp/codespell_requirements.txt
+# %include tools/lint/tox/tox_requirements.txt
+ADD topsrcdir/tools/lint/tox/tox_requirements.txt /tmp/tox_requirements.txt
+RUN bash /tmp/system-setup.sh
+
+RUN chown -R worker:worker /builds/worker/bin && chmod 755 /builds/worker/bin/*
+
+# Set variable normally configured at login, by the shells parent process, these
+# are taken from GNU su manual
+ENV LANG en_US.UTF-8
+ENV LC_ALL en_US.UTF-8
+
+# Set a default command useful for debugging
+CMD ["/bin/bash", "--login"]
diff --git a/taskcluster/docker/lint/system-setup.sh b/taskcluster/docker/lint/system-setup.sh
new file mode 100644
index 0000000000..18da4b7ade
--- /dev/null
+++ b/taskcluster/docker/lint/system-setup.sh
@@ -0,0 +1,92 @@
+#!/usr/bin/env bash
+
+set -ve
+
+test "$(whoami)" == 'root'
+
+mkdir -p /setup
+cd /setup
+
+apt_packages=()
+apt_packages+=('curl')
+apt_packages+=('iproute2')
+apt_packages+=('locales')
+apt_packages+=('graphviz')
+apt_packages+=('python3-pip')
+apt_packages+=('python-is-python3')
+apt_packages+=('shellcheck')
+apt_packages+=('sudo')
+apt_packages+=('wget')
+apt_packages+=('unzip')
+apt_packages+=('tar')
+apt_packages+=('zstd')
+
+apt-get update
+apt-get install "${apt_packages[@]}"
+
+# Without this we get spurious "LC_ALL: cannot change locale (en_US.UTF-8)" errors,
+# and python scripts raise UnicodeEncodeError when trying to print unicode characters.
+locale-gen en_US.UTF-8
+dpkg-reconfigure locales
+
+su -c 'git config --global user.email "worker@mozilla.test"' worker
+su -c 'git config --global user.name "worker"' worker
+
+tooltool_fetch() {
+ cat >manifest.tt
+ /build/tooltool.py fetch
+ rm manifest.tt
+}
+
+cd /build
+
+###
+# ESLint Setup
+###
+
+# install node
+# shellcheck disable=SC1091
+. install-node.sh
+
+npm install -g yarn@1.22.18
+
+/build/tooltool.py fetch -m /tmp/eslint.tt
+mv /build/node_modules /build/node_modules_eslint
+/build/tooltool.py fetch -m /tmp/eslint-plugin-mozilla.tt
+mv /build/node_modules /build/node_modules_eslint-plugin-mozilla
+
+###
+# fzf setup
+###
+
+tooltool_fetch <<EOF
+[
+ {
+ "size": 1161860,
+ "digest": "3246470715e1ddf4c7e5136fdddd2ca269928c2de3074a98233faef189efd88fc9b28ddbe68642a31cf647a97f630941d764187006c5115e6f357d49322ef58d",
+ "algorithm": "sha512",
+ "filename": "fzf-0.20.0-linux_amd64.tgz",
+ "unpack": true
+ }
+]
+EOF
+mv fzf /usr/local/bin
+
+###
+# codespell Setup
+###
+
+cd /setup
+
+pip3 install --require-hashes -r /tmp/codespell_requirements.txt
+
+###
+# tox Setup
+###
+
+cd /setup
+
+pip3 install --require-hashes -r /tmp/tox_requirements.txt
+
+cd /
+rm -rf /setup
diff --git a/taskcluster/docker/partner-repack/Dockerfile b/taskcluster/docker/partner-repack/Dockerfile
new file mode 100644
index 0000000000..aae9d893da
--- /dev/null
+++ b/taskcluster/docker/partner-repack/Dockerfile
@@ -0,0 +1,20 @@
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER Ben Hearsum <bhearsum@mozilla.com>
+
+VOLUME /builds/worker/checkouts
+VOLUME /builds/worker/workspace
+
+RUN dpkg --add-architecture amd64
+
+RUN apt-get update && \
+ apt-get install \
+ bzip2 \
+ curl \
+ git \
+ gzip \
+ openssh-client \
+ python2 \
+ unzip \
+ zip
+
+COPY known_hosts /etc/ssh/ssh_known_hosts
diff --git a/taskcluster/docker/partner-repack/known_hosts b/taskcluster/docker/partner-repack/known_hosts
new file mode 100644
index 0000000000..f4c560e0e7
--- /dev/null
+++ b/taskcluster/docker/partner-repack/known_hosts
@@ -0,0 +1,3 @@
+github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl
+github.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=
+github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=
diff --git a/taskcluster/docker/periodic-updates/.eslintrc.js b/taskcluster/docker/periodic-updates/.eslintrc.js
new file mode 100644
index 0000000000..9828adaa40
--- /dev/null
+++ b/taskcluster/docker/periodic-updates/.eslintrc.js
@@ -0,0 +1,70 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+module.exports = {
+ globals: {
+ // JS files in this folder are commonly xpcshell scripts where |arguments|
+ // is defined in the global scope.
+ arguments: false,
+ },
+ rules: {
+ // Enforce return statements in callbacks of array methods.
+ "array-callback-return": "error",
+
+ // Verify calls of super() in constructors.
+ "constructor-super": "error",
+
+ // Require default case in switch statements.
+ "default-case": "error",
+
+ // Disallow use of alert(), confirm(), and prompt().
+ "no-alert": "error",
+
+ // Disallow likely erroneous `switch` scoped lexical declarations in
+ // case/default clauses.
+ "no-case-declarations": "error",
+
+ // Disallow use of the console API.
+ "no-console": "error",
+
+ // Disallow constant expressions in conditions (except for loops).
+ "no-constant-condition": ["error", { checkLoops: false }],
+
+ // Disallow extending of native objects.
+ "no-extend-native": "error",
+
+ // Disallow case statement fallthrough without explicit `// falls through`
+ // annotation.
+ "no-fallthrough": "error",
+
+ // No reassigning native JS objects or read only globals.
+ "no-global-assign": "error",
+
+ // Disallow use of assignment in return statement.
+ "no-return-assign": ["error", "always"],
+
+ // Disallow template literal placeholder syntax in regular strings.
+ "no-template-curly-in-string": "error",
+
+ // Disallow use of this/super before calling super() in constructors.
+ "no-this-before-super": "error",
+
+ // Disallow unmodified loop conditions.
+ "no-unmodified-loop-condition": "error",
+
+ // No expressions where a statement is expected
+ "no-unused-expressions": "error",
+
+ // Disallow unnecessary escape usage in strings and regular expressions.
+ "no-useless-escape": "error",
+
+ // Require "use strict" to be defined globally in the script.
+ strict: ["error", "global"],
+
+ // Disallow Yoda conditions.
+ yoda: ["error", "never"],
+ },
+};
diff --git a/taskcluster/docker/periodic-updates/Dockerfile b/taskcluster/docker/periodic-updates/Dockerfile
new file mode 100644
index 0000000000..24cabe02b5
--- /dev/null
+++ b/taskcluster/docker/periodic-updates/Dockerfile
@@ -0,0 +1,11 @@
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER Julien Cristau <jcristau@mozilla.com>
+
+ADD setup.sh /setup/setup.sh
+
+RUN cd /setup && ./setup.sh
+
+COPY runme.sh /
+COPY scripts/* /home/worker/scripts/
+
+CMD ["/runme.sh"]
diff --git a/taskcluster/docker/periodic-updates/README.md b/taskcluster/docker/periodic-updates/README.md
new file mode 100644
index 0000000000..d21c0c3656
--- /dev/null
+++ b/taskcluster/docker/periodic-updates/README.md
@@ -0,0 +1,96 @@
+
+==Periodic File Updates==
+
+This docker image examines the in-tree files for HSTS preload data, HPKP pinning and blocklisting, and
+will produce a diff for each necessary to update the in-tree files.
+
+If given a conduit API token, it will also use the arcanist client to submit the commits for review.
+
+
+==Quick Start==
+
+```sh
+docker build -t hsts-local --no-cache --rm .
+
+docker run -e DO_HSTS=1 -e DO_HPKP=1 -e PRODUCT="firefox" -e BRANCH="mozilla-central" -e USE_MOZILLA_CENTRAL=1 hsts-local
+```
+
+HSTS checks will only be run if the `DO_HSTS` environment variable is set.
+Likewise for `DO_HPKP` and the HPKP checks. Environment variables are used
+rather than command line arguments to make constructing taskcluster tasks
+easier.
+
+To prevent a full build when landing with Phabricator, set the `DONTBUILD`
+environment variable.
+
+==Background==
+
+These scripts have been moved from
+`https://hg.mozilla.org/build/tools/scripts/periodic_file_updates/` and
+`security/manager/tools/` in the main repos.
+
+==HSTS Checks==
+
+`scripts/getHSTSPreloadList.js` will examine the current contents of
+nsSTSPreloadList.inc from whichever `BRANCH` is specified, add in the mandatory
+hosts, and those from the Chromium source, and check them all to see if their
+SSL configuration is valid, and whether or not they have the
+Strict-Transport-Security header set with an appropriate `max-age`.
+
+This javascript has been modified to use async calls to improve performance.
+
+==HPKP Checks==
+
+`scripts/genHPKPStaticPins.js` will ensure the list of pinned public keys are
+up to date.
+
+==Example Taskcluster Task==
+
+https://firefox-ci-tc.services.mozilla.com/tasks/create/
+
+```yaml
+provisionerId: aws-provisioner-v1
+workerType: gecko-1-b-linux
+retries: 0
+created: '2018-02-07T14:45:57.347Z'
+deadline: '2018-02-07T17:45:57.348Z'
+expires: '2019-02-07T17:45:57.348Z'
+scopes: []
+payload:
+ image: srfraser/hsts1
+ maxRunTime: 1800
+ artifacts:
+ public/build/nsSTSPreloadList.diff:
+ path: /home/worker/artifacts/nsSTSPreloadList.diff
+ expires: '2019-02-07T13:57:35.448Z'
+ type: file
+ public/build/StaticHPKPins.h.diff:
+ path: /home/worker/artifacts/StaticHPKPins.h.diff
+ expires: '2019-02-07T13:57:35.448Z'
+ type: file
+ public/build/blocklist.diff:
+ path: /home/worker/artifacts/blocklist.diff
+ expires: '2019-02-07T13:57:35.448Z'
+ type: file
+ env:
+ DO_HSTS: 1
+ DO_HPKP: 1
+ PRODUCT: firefox
+ BRANCH: mozilla-central
+ USE_MOZILLA_CENTRAL: 1
+ REVIEWERS: catlee
+metadata:
+ name: Periodic updates testing
+ description: Produce diffs for HSTS and HPKP in-tree files.
+ owner: sfraser@mozilla.com
+ source: 'https://firefox-ci-tc.services.mozilla.com/tasks/create'
+tags: {}
+extra:
+ treeherder:
+ jobKind: test
+ machine:
+ platform: linux64
+ tier: 1
+ symbol: 'hsts'
+
+```
diff --git a/taskcluster/docker/periodic-updates/runme.sh b/taskcluster/docker/periodic-updates/runme.sh
new file mode 100755
index 0000000000..368963aff6
--- /dev/null
+++ b/taskcluster/docker/periodic-updates/runme.sh
@@ -0,0 +1,93 @@
+#!/bin/bash
+
+set -xe
+
+# Things to be set by task definition.
+# --pinset --hsts --hpkp
+# -b branch
+# --use-mozilla-central
+# -p firefox
+# Artifact directory
+# Artifact names.
+
+
+test "${BRANCH}"
+test "${PRODUCT}"
+
+PARAMS=""
+
+if [ -n "${USE_MOZILLA_CENTRAL}" ]
+then
+ PARAMS="${PARAMS} --use-mozilla-central"
+fi
+
+# TODO change these, so that they're run if the artifact location is specified?
+if [ -n "${DO_HSTS}" ]
+then
+ PARAMS="${PARAMS} --hsts"
+fi
+
+if [ -n "${DO_HPKP}" ]
+then
+ PARAMS="${PARAMS} --hpkp"
+fi
+
+if [ -n "${DO_REMOTE_SETTINGS}" ]
+then
+ PARAMS="${PARAMS} --remote-settings"
+fi
+
+if [ -n "${DO_SUFFIX_LIST}" ]
+then
+ PARAMS="${PARAMS} --suffix-list"
+fi
+
+if [ -n "${DONTBUILD}" ]
+then
+ PARAMS="${PARAMS} -d"
+fi
+
+
+export ARTIFACTS_DIR="/home/worker/artifacts"
+mkdir -p "$ARTIFACTS_DIR"
+
+# duplicate the functionality of taskcluster-lib-urls, but in bash..
+queue_base="$TASKCLUSTER_ROOT_URL/api/queue/v1"
+
+# Get Arcanist API token
+
+if [ -n "${TASK_ID}" ]
+then
+ curl --location --retry 10 --retry-delay 10 -o /home/worker/task.json "$queue_base/task/$TASK_ID"
+ ARC_SECRET=$(jq -r '.scopes[] | select(contains ("arc-phabricator-token"))' /home/worker/task.json | awk -F: '{print $3}')
+fi
+if [ -n "${ARC_SECRET}" ] && getent hosts taskcluster
+then
+ set +x # Don't echo these
+ secrets_url="${TASKCLUSTER_PROXY_URL}/api/secrets/v1/secret/${ARC_SECRET}"
+ SECRET=$(curl "${secrets_url}")
+ TOKEN=$(echo "${SECRET}" | jq -r '.secret.token')
+elif [ -n "${ARC_TOKEN}" ] # Allow for local testing.
+then
+ TOKEN="${ARC_TOKEN}"
+fi
+
+if [ -n "${TOKEN}" ]
+then
+ cat >"${HOME}/.arcrc" <<END
+{
+ "hosts": {
+ "https://phabricator.services.mozilla.com/api/": {
+ "token": "${TOKEN}"
+ }
+ }
+}
+END
+ set -x
+ chmod 600 "${HOME}/.arcrc"
+fi
+
+export HGPLAIN=1
+
+# shellcheck disable=SC2086
+/home/worker/scripts/periodic_file_updates.sh -p "${PRODUCT}" -b "${BRANCH}" -a ${PARAMS}
diff --git a/taskcluster/docker/periodic-updates/scripts/genHPKPStaticPins.js b/taskcluster/docker/periodic-updates/scripts/genHPKPStaticPins.js
new file mode 100644
index 0000000000..af297374b1
--- /dev/null
+++ b/taskcluster/docker/periodic-updates/scripts/genHPKPStaticPins.js
@@ -0,0 +1,674 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// How to run this file:
+// 1. [obtain firefox source code]
+// 2. [build/obtain firefox binaries]
+// 3. run `[path to]/run-mozilla.sh [path to]/xpcshell \
+// [path to]/genHPKPStaticpins.js \
+// [absolute path to]/PreloadedHPKPins.json \
+// [absolute path to]/StaticHPKPins.h
+"use strict";
+
+if (arguments.length != 2) {
+ throw new Error(
+ "Usage: genHPKPStaticPins.js " +
+ "<absolute path to PreloadedHPKPins.json> " +
+ "<absolute path to StaticHPKPins.h>"
+ );
+}
+
+var { NetUtil } = ChromeUtils.import("resource://gre/modules/NetUtil.jsm");
+var { FileUtils } = ChromeUtils.importESModule(
+ "resource://gre/modules/FileUtils.sys.mjs"
+);
+
+var gCertDB = Cc["@mozilla.org/security/x509certdb;1"].getService(
+ Ci.nsIX509CertDB
+);
+
+const SHA256_PREFIX = "sha256/";
+const GOOGLE_PIN_PREFIX = "GOOGLE_PIN_";
+
+// Pins expire in 14 weeks (6 weeks on Beta + 8 weeks on stable)
+const PINNING_MINIMUM_REQUIRED_MAX_AGE = 60 * 60 * 24 * 7 * 14;
+
+const FILE_HEADER =
+ "/* This Source Code Form is subject to the terms of the Mozilla Public\n" +
+ " * License, v. 2.0. If a copy of the MPL was not distributed with this\n" +
+ " * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\n" +
+ "\n" +
+ "/*****************************************************************************/\n" +
+ "/* This is an automatically generated file. If you're not */\n" +
+ "/* PublicKeyPinningService.cpp, you shouldn't be #including it. */\n" +
+ "/*****************************************************************************/\n" +
+ "#include <stdint.h>" +
+ "\n";
+
+const DOMAINHEADER =
+ "/* Domainlist */\n" +
+ "struct TransportSecurityPreload {\n" +
+ " // See bug 1338873 about making these fields const.\n" +
+ " const char* mHost;\n" +
+ " bool mIncludeSubdomains;\n" +
+ " bool mTestMode;\n" +
+ " bool mIsMoz;\n" +
+ " int32_t mId;\n" +
+ " const StaticFingerprints* pinset;\n" +
+ "};\n\n";
+
+const PINSETDEF =
+ "/* Pinsets are each an ordered list by the actual value of the fingerprint */\n" +
+ "struct StaticFingerprints {\n" +
+ " // See bug 1338873 about making these fields const.\n" +
+ " size_t size;\n" +
+ " const char* const* data;\n" +
+ "};\n\n";
+
+// Command-line arguments
+var gStaticPins = parseJson(arguments[0]);
+
+// Open the output file.
+var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
+file.initWithPath(arguments[1]);
+var gFileOutputStream = FileUtils.openSafeFileOutputStream(file);
+
+function writeString(string) {
+ gFileOutputStream.write(string, string.length);
+}
+
+function readFileToString(filename) {
+ let file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
+ file.initWithPath(filename);
+ let stream = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(
+ Ci.nsIFileInputStream
+ );
+ stream.init(file, -1, 0, 0);
+ let buf = NetUtil.readInputStreamToString(stream, stream.available());
+ return buf;
+}
+
+function stripComments(buf) {
+ let lines = buf.split("\n");
+ let entryRegex = /^\s*\/\//;
+ let data = "";
+ for (let i = 0; i < lines.length; ++i) {
+ let match = entryRegex.exec(lines[i]);
+ if (!match) {
+ data = data + lines[i];
+ }
+ }
+ return data;
+}
+
+function download(filename) {
+ let req = new XMLHttpRequest();
+ req.open("GET", filename, false); // doing the request synchronously
+ try {
+ req.send();
+ } catch (e) {
+ throw new Error(`ERROR: problem downloading '${filename}': ${e}`);
+ }
+
+ if (req.status != 200) {
+ throw new Error(
+ "ERROR: problem downloading '" + filename + "': status " + req.status
+ );
+ }
+
+ let resultDecoded;
+ try {
+ resultDecoded = atob(req.responseText);
+ } catch (e) {
+ throw new Error(
+ "ERROR: could not decode data as base64 from '" + filename + "': " + e
+ );
+ }
+ return resultDecoded;
+}
+
+function downloadAsJson(filename) {
+ // we have to filter out '//' comments, while not mangling the json
+ let result = download(filename).replace(/^(\s*)?\/\/[^\n]*\n/gm, "");
+ let data = null;
+ try {
+ data = JSON.parse(result);
+ } catch (e) {
+ throw new Error(
+ "ERROR: could not parse data from '" + filename + "': " + e
+ );
+ }
+ return data;
+}
+
+// Returns a Subject Public Key Digest from the given pem, if it exists.
+function getSKDFromPem(pem) {
+ let cert = gCertDB.constructX509FromBase64(pem, pem.length);
+ return cert.sha256SubjectPublicKeyInfoDigest;
+}
+
+/**
+ * Hashes |input| using the SHA-256 algorithm in the following manner:
+ * btoa(sha256(atob(input)))
+ *
+ * @param {string} input Base64 string to decode and return the hash of.
+ * @returns {string} Base64 encoded SHA-256 hash.
+ */
+function sha256Base64(input) {
+ let decodedValue;
+ try {
+ decodedValue = atob(input);
+ } catch (e) {
+ throw new Error(`ERROR: could not decode as base64: '${input}': ${e}`);
+ }
+
+ // Convert |decodedValue| to an array so that it can be hashed by the
+ // nsICryptoHash instance below.
+ // In most cases across the code base, convertToByteArray() of
+ // nsIScriptableUnicodeConverter is used to do this, but the method doesn't
+ // seem to work here.
+ let data = [];
+ for (let i = 0; i < decodedValue.length; i++) {
+ data[i] = decodedValue.charCodeAt(i);
+ }
+
+ let hasher = Cc["@mozilla.org/security/hash;1"].createInstance(
+ Ci.nsICryptoHash
+ );
+ hasher.init(hasher.SHA256);
+ hasher.update(data, data.length);
+
+ // true is passed so that the hasher returns a Base64 encoded string.
+ return hasher.finish(true);
+}
+
+// Downloads the static certs file and tries to map Google Chrome nicknames
+// to Mozilla nicknames, as well as storing any hashes for pins for which we
+// don't have root PEMs. Each entry consists of a line containing the name of
+// the pin followed either by a hash in the format "sha256/" + base64(hash),
+// a PEM encoded public key, or a PEM encoded certificate.
+// For certificates that we have in our database,
+// return a map of Google's nickname to ours. For ones that aren't return a
+// map of Google's nickname to SHA-256 values. This code is modeled after agl's
+// https://github.com/agl/transport-security-state-generate, which doesn't
+// live in the Chromium repo because go is not an official language in
+// Chromium.
+// For all of the entries in this file:
+// - If the entry has a hash format, find the Mozilla pin name (cert nickname)
+// and stick the hash into certSKDToName
+// - If the entry has a PEM format, parse the PEM, find the Mozilla pin name
+// and stick the hash in certSKDToName
+// We MUST be able to find a corresponding cert nickname for the Chrome names,
+// otherwise we skip all pinsets referring to that Chrome name.
+function downloadAndParseChromeCerts(filename, certNameToSKD, certSKDToName) {
+ // Prefixes that we care about.
+ const BEGIN_CERT = "-----BEGIN CERTIFICATE-----";
+ const END_CERT = "-----END CERTIFICATE-----";
+ const BEGIN_PUB_KEY = "-----BEGIN PUBLIC KEY-----";
+ const END_PUB_KEY = "-----END PUBLIC KEY-----";
+
+ // Parsing states.
+ const PRE_NAME = 0;
+ const POST_NAME = 1;
+ const IN_CERT = 2;
+ const IN_PUB_KEY = 3;
+ let state = PRE_NAME;
+
+ let lines = download(filename).split("\n");
+ let pemCert = "";
+ let pemPubKey = "";
+ let hash = "";
+ let chromeNameToHash = {};
+ let chromeNameToMozName = {};
+ let chromeName;
+ for (let line of lines) {
+ // Skip comments and newlines.
+ if (!line.length || line[0] == "#") {
+ continue;
+ }
+ switch (state) {
+ case PRE_NAME:
+ chromeName = line;
+ state = POST_NAME;
+ break;
+ case POST_NAME:
+ if (line.startsWith(SHA256_PREFIX)) {
+ hash = line.substring(SHA256_PREFIX.length);
+ chromeNameToHash[chromeName] = hash;
+ certNameToSKD[chromeName] = hash;
+ certSKDToName[hash] = chromeName;
+ state = PRE_NAME;
+ } else if (line.startsWith(BEGIN_CERT)) {
+ state = IN_CERT;
+ } else if (line.startsWith(BEGIN_PUB_KEY)) {
+ state = IN_PUB_KEY;
+ } else if (
+ chromeName == "PinsListTimestamp" &&
+ line.match(/^[0-9]+$/)
+ ) {
+ // If the name of this entry is "PinsListTimestamp", this line should
+ // be the pins list timestamp. It should consist solely of digits.
+ // Ignore it and expect other entries to come.
+ state = PRE_NAME;
+ } else {
+ throw new Error(
+ "ERROR: couldn't parse Chrome certificate file line: " + line
+ );
+ }
+ break;
+ case IN_CERT:
+ if (line.startsWith(END_CERT)) {
+ state = PRE_NAME;
+ hash = getSKDFromPem(pemCert);
+ pemCert = "";
+ let mozName;
+ if (hash in certSKDToName) {
+ mozName = certSKDToName[hash];
+ } else {
+ // Not one of our built-in certs. Prefix the name with
+ // GOOGLE_PIN_.
+ mozName = GOOGLE_PIN_PREFIX + chromeName;
+ dump(
+ "Can't find hash in builtin certs for Chrome nickname " +
+ chromeName +
+ ", inserting " +
+ mozName +
+ "\n"
+ );
+ certSKDToName[hash] = mozName;
+ certNameToSKD[mozName] = hash;
+ }
+ chromeNameToMozName[chromeName] = mozName;
+ } else {
+ pemCert += line;
+ }
+ break;
+ case IN_PUB_KEY:
+ if (line.startsWith(END_PUB_KEY)) {
+ state = PRE_NAME;
+ hash = sha256Base64(pemPubKey);
+ pemPubKey = "";
+ chromeNameToHash[chromeName] = hash;
+ certNameToSKD[chromeName] = hash;
+ certSKDToName[hash] = chromeName;
+ } else {
+ pemPubKey += line;
+ }
+ break;
+ default:
+ throw new Error(
+ "ERROR: couldn't parse Chrome certificate file " + line
+ );
+ }
+ }
+ return [chromeNameToHash, chromeNameToMozName];
+}
+
+// We can only import pinsets from chrome if for every name in the pinset:
+// - We have a hash from Chrome's static certificate file
+// - We have a builtin cert
+// If the pinset meets these requirements, we store a map array of pinset
+// objects:
+// {
+// pinset_name : {
+// // Array of names with entries in certNameToSKD
+// sha256_hashes: []
+// }
+// }
+// and an array of imported pinset entries:
+// { name: string, include_subdomains: boolean, test_mode: boolean,
+// pins: pinset_name }
+function downloadAndParseChromePins(
+ filename,
+ chromeNameToHash,
+ chromeNameToMozName,
+ certNameToSKD,
+ certSKDToName
+) {
+ let chromePreloads = downloadAsJson(filename);
+ let chromePins = chromePreloads.pinsets;
+ let chromeImportedPinsets = {};
+ let chromeImportedEntries = [];
+
+ chromePins.forEach(function (pin) {
+ let valid = true;
+ let pinset = { name: pin.name, sha256_hashes: [] };
+ // Translate the Chrome pinset format to ours
+ pin.static_spki_hashes.forEach(function (name) {
+ if (name in chromeNameToHash) {
+ let hash = chromeNameToHash[name];
+ pinset.sha256_hashes.push(certSKDToName[hash]);
+
+ // We should have already added hashes for all of these when we
+ // imported the certificate file.
+ if (!certNameToSKD[name]) {
+ throw new Error("ERROR: No hash for name: " + name);
+ }
+ } else if (name in chromeNameToMozName) {
+ pinset.sha256_hashes.push(chromeNameToMozName[name]);
+ } else {
+ dump(
+ "Skipping Chrome pinset " +
+ pinset.name +
+ ", couldn't find " +
+ "builtin " +
+ name +
+ " from cert file\n"
+ );
+ valid = false;
+ }
+ });
+ if (valid) {
+ chromeImportedPinsets[pinset.name] = pinset;
+ }
+ });
+
+ // Grab the domain entry lists. Chrome's entry format is similar to
+ // ours, except theirs includes a HSTS mode.
+ const cData = gStaticPins.chromium_data;
+ let entries = chromePreloads.entries;
+ entries.forEach(function (entry) {
+ // HSTS entry only
+ if (!entry.pins) {
+ return;
+ }
+ let pinsetName = cData.substitute_pinsets[entry.pins];
+ if (!pinsetName) {
+ pinsetName = entry.pins;
+ }
+
+ // We trim the entry name here to avoid breaking hostname comparisons in the
+ // HPKP implementation.
+ entry.name = entry.name.trim();
+
+ let isProductionDomain = cData.production_domains.includes(entry.name);
+ let isProductionPinset = cData.production_pinsets.includes(pinsetName);
+ let excludeDomain = cData.exclude_domains.includes(entry.name);
+ let isTestMode = !isProductionPinset && !isProductionDomain;
+ if (entry.pins && !excludeDomain && chromeImportedPinsets[entry.pins]) {
+ chromeImportedEntries.push({
+ name: entry.name,
+ include_subdomains: entry.include_subdomains,
+ test_mode: isTestMode,
+ is_moz: false,
+ pins: pinsetName,
+ });
+ }
+ });
+ return [chromeImportedPinsets, chromeImportedEntries];
+}
+
+// Returns a pair of maps [certNameToSKD, certSKDToName] between cert
+// nicknames and digests of the SPKInfo for the mozilla trust store
+function loadNSSCertinfo(extraCertificates) {
+ let allCerts = gCertDB.getCerts();
+ let certNameToSKD = {};
+ let certSKDToName = {};
+ for (let cert of allCerts) {
+ if (!cert.isBuiltInRoot) {
+ continue;
+ }
+ let name = cert.displayName;
+ let SKD = cert.sha256SubjectPublicKeyInfoDigest;
+ certNameToSKD[name] = SKD;
+ certSKDToName[SKD] = name;
+ }
+
+ for (let cert of extraCertificates) {
+ let name = cert.commonName;
+ let SKD = cert.sha256SubjectPublicKeyInfoDigest;
+ certNameToSKD[name] = SKD;
+ certSKDToName[SKD] = name;
+ }
+
+ {
+ // This is the pinning test certificate. The key hash identifies the
+ // default RSA key from pykey.
+ let name = "End Entity Test Cert";
+ let SKD = "VCIlmPM9NkgFQtrs4Oa5TeFcDu6MWRTKSNdePEhOgD8=";
+ certNameToSKD[name] = SKD;
+ certSKDToName[SKD] = name;
+ }
+ return [certNameToSKD, certSKDToName];
+}
+
+function parseJson(filename) {
+ let json = stripComments(readFileToString(filename));
+ return JSON.parse(json);
+}
+
+function nameToAlias(certName) {
+ // change the name to a string valid as a c identifier
+ // remove non-ascii characters
+ certName = certName.replace(/[^[:ascii:]]/g, "_");
+ // replace non word characters
+ certName = certName.replace(/[^A-Za-z0-9]/g, "_");
+
+ return "k" + certName + "Fingerprint";
+}
+
+function compareByName(a, b) {
+ return a.name.localeCompare(b.name);
+}
+
+function genExpirationTime() {
+ let now = new Date();
+ let nowMillis = now.getTime();
+ let expirationMillis = nowMillis + PINNING_MINIMUM_REQUIRED_MAX_AGE * 1000;
+ let expirationMicros = expirationMillis * 1000;
+ return (
+ "static const PRTime kPreloadPKPinsExpirationTime = INT64_C(" +
+ expirationMicros +
+ ");\n"
+ );
+}
+
+function writeFullPinset(certNameToSKD, certSKDToName, pinset) {
+ if (!pinset.sha256_hashes || !pinset.sha256_hashes.length) {
+ throw new Error(`ERROR: Pinset ${pinset.name} does not contain any hashes`);
+ }
+ writeFingerprints(
+ certNameToSKD,
+ certSKDToName,
+ pinset.name,
+ pinset.sha256_hashes
+ );
+}
+
+function writeFingerprints(certNameToSKD, certSKDToName, name, hashes) {
+ let varPrefix = "kPinset_" + name;
+ writeString("static const char* const " + varPrefix + "_Data[] = {\n");
+ let SKDList = [];
+ for (let certName of hashes) {
+ if (!(certName in certNameToSKD)) {
+ throw new Error(`ERROR: Can't find '${certName}' in certNameToSKD`);
+ }
+ SKDList.push(certNameToSKD[certName]);
+ }
+ for (let skd of SKDList.sort()) {
+ writeString(" " + nameToAlias(certSKDToName[skd]) + ",\n");
+ }
+ if (!hashes.length) {
+ // ANSI C requires that an initialiser list be non-empty.
+ writeString(" 0\n");
+ }
+ writeString("};\n");
+ writeString(
+ "static const StaticFingerprints " +
+ varPrefix +
+ " = {\n " +
+ "sizeof(" +
+ varPrefix +
+ "_Data) / sizeof(const char*),\n " +
+ varPrefix +
+ "_Data\n};\n\n"
+ );
+}
+
+function writeEntry(entry) {
+ let printVal = ` { "${entry.name}", `;
+ if (entry.include_subdomains) {
+ printVal += "true, ";
+ } else {
+ printVal += "false, ";
+ }
+ // Default to test mode if not specified.
+ let testMode = true;
+ if (entry.hasOwnProperty("test_mode")) {
+ testMode = entry.test_mode;
+ }
+ if (testMode) {
+ printVal += "true, ";
+ } else {
+ printVal += "false, ";
+ }
+ if (
+ entry.is_moz ||
+ (entry.pins.includes("mozilla") && entry.pins != "mozilla_test")
+ ) {
+ printVal += "true, ";
+ } else {
+ printVal += "false, ";
+ }
+ if ("id" in entry) {
+ if (entry.id >= 256) {
+ throw new Error("ERROR: Not enough buckets in histogram");
+ }
+ if (entry.id >= 0) {
+ printVal += entry.id + ", ";
+ }
+ } else {
+ printVal += "-1, ";
+ }
+ printVal += "&kPinset_" + entry.pins;
+ printVal += " },\n";
+ writeString(printVal);
+}
+
+function writeDomainList(chromeImportedEntries) {
+ writeString("/* Sort hostnames for binary search. */\n");
+ writeString(
+ "static const TransportSecurityPreload " +
+ "kPublicKeyPinningPreloadList[] = {\n"
+ );
+ let count = 0;
+ let mozillaDomains = {};
+ gStaticPins.entries.forEach(function (entry) {
+ mozillaDomains[entry.name] = true;
+ });
+ // For any domain for which we have set pins, exclude them from
+ // chromeImportedEntries.
+ for (let i = chromeImportedEntries.length - 1; i >= 0; i--) {
+ if (mozillaDomains[chromeImportedEntries[i].name]) {
+ dump(
+ "Skipping duplicate pinset for domain " +
+ JSON.stringify(chromeImportedEntries[i], undefined, 2) +
+ "\n"
+ );
+ chromeImportedEntries.splice(i, 1);
+ }
+ }
+ let sortedEntries = gStaticPins.entries;
+ sortedEntries.push.apply(sortedEntries, chromeImportedEntries);
+ for (let entry of sortedEntries.sort(compareByName)) {
+ count++;
+ writeEntry(entry);
+ }
+ writeString("};\n");
+
+ writeString("\n// Pinning Preload List Length = " + count + ";\n");
+ writeString("\nstatic const int32_t kUnknownId = -1;\n");
+}
+
+function writeFile(
+ certNameToSKD,
+ certSKDToName,
+ chromeImportedPinsets,
+ chromeImportedEntries
+) {
+ // Compute used pins from both Chrome's and our pinsets, so we can output
+ // them later.
+ let usedFingerprints = {};
+ let mozillaPins = {};
+ gStaticPins.pinsets.forEach(function (pinset) {
+ mozillaPins[pinset.name] = true;
+ pinset.sha256_hashes.forEach(function (name) {
+ usedFingerprints[name] = true;
+ });
+ });
+ for (let key in chromeImportedPinsets) {
+ let pinset = chromeImportedPinsets[key];
+ pinset.sha256_hashes.forEach(function (name) {
+ usedFingerprints[name] = true;
+ });
+ }
+
+ writeString(FILE_HEADER);
+
+ // Write actual fingerprints.
+ Object.keys(usedFingerprints)
+ .sort()
+ .forEach(function (certName) {
+ if (certName) {
+ writeString("/* " + certName + " */\n");
+ writeString("static const char " + nameToAlias(certName) + "[] =\n");
+ writeString(' "' + certNameToSKD[certName] + '";\n');
+ writeString("\n");
+ }
+ });
+
+ // Write the pinsets
+ writeString(PINSETDEF);
+ writeString("/* PreloadedHPKPins.json pinsets */\n");
+ gStaticPins.pinsets.sort(compareByName).forEach(function (pinset) {
+ writeFullPinset(certNameToSKD, certSKDToName, pinset);
+ });
+ writeString("/* Chrome static pinsets */\n");
+ for (let key in chromeImportedPinsets) {
+ if (mozillaPins[key]) {
+ dump("Skipping duplicate pinset " + key + "\n");
+ } else {
+ dump("Writing pinset " + key + "\n");
+ writeFullPinset(certNameToSKD, certSKDToName, chromeImportedPinsets[key]);
+ }
+ }
+
+ // Write the domainlist entries.
+ writeString(DOMAINHEADER);
+ writeDomainList(chromeImportedEntries);
+ writeString("\n");
+ writeString(genExpirationTime());
+}
+
+function loadExtraCertificates(certStringList) {
+ let constructedCerts = [];
+ for (let certString of certStringList) {
+ constructedCerts.push(gCertDB.constructX509FromBase64(certString));
+ }
+ return constructedCerts;
+}
+
+var extraCertificates = loadExtraCertificates(gStaticPins.extra_certificates);
+var [certNameToSKD, certSKDToName] = loadNSSCertinfo(extraCertificates);
+var [chromeNameToHash, chromeNameToMozName] = downloadAndParseChromeCerts(
+ gStaticPins.chromium_data.cert_file_url,
+ certNameToSKD,
+ certSKDToName
+);
+var [chromeImportedPinsets, chromeImportedEntries] = downloadAndParseChromePins(
+ gStaticPins.chromium_data.json_file_url,
+ chromeNameToHash,
+ chromeNameToMozName,
+ certNameToSKD,
+ certSKDToName
+);
+
+writeFile(
+ certNameToSKD,
+ certSKDToName,
+ chromeImportedPinsets,
+ chromeImportedEntries
+);
+
+FileUtils.closeSafeFileOutputStream(gFileOutputStream);
diff --git a/taskcluster/docker/periodic-updates/scripts/getHSTSPreloadList.js b/taskcluster/docker/periodic-updates/scripts/getHSTSPreloadList.js
new file mode 100644
index 0000000000..aeaa29bc2d
--- /dev/null
+++ b/taskcluster/docker/periodic-updates/scripts/getHSTSPreloadList.js
@@ -0,0 +1,557 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+"use strict";
+
+// How to run this file:
+// 1. [obtain firefox source code]
+// 2. [build/obtain firefox binaries]
+// 3. run `[path to]/run-mozilla.sh [path to]/xpcshell [path to]/getHSTSPreloadlist.js [absolute path to]/nsSTSPreloadlist.inc'
+// Note: Running this file outputs a new nsSTSPreloadlist.inc in the current
+// working directory.
+
+var gSSService = Cc["@mozilla.org/ssservice;1"].getService(
+ Ci.nsISiteSecurityService
+);
+
+const { FileUtils } = ChromeUtils.importESModule(
+ "resource://gre/modules/FileUtils.sys.mjs"
+);
+
+const SOURCE =
+ "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/net/http/transport_security_state_static.json?format=TEXT";
+const TOOL_SOURCE =
+ "https://hg.mozilla.org/mozilla-central/file/default/taskcluster/docker/periodic-updates/scripts/getHSTSPreloadList.js";
+const OUTPUT = "nsSTSPreloadList.inc";
+const MINIMUM_REQUIRED_MAX_AGE = 60 * 60 * 24 * 7 * 18;
+const MAX_CONCURRENT_REQUESTS = 500;
+const MAX_RETRIES = 1;
+const REQUEST_TIMEOUT = 30 * 1000;
+const ERROR_NONE = "no error";
+const ERROR_CONNECTING_TO_HOST = "could not connect to host";
+const ERROR_NO_HSTS_HEADER = "did not receive HSTS header";
+const ERROR_MAX_AGE_TOO_LOW = "max-age too low: ";
+const HEADER = `/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/*****************************************************************************/
+/* This is an automatically generated file. If you're not */
+/* nsSiteSecurityService.cpp, you shouldn't be #including it. */
+/*****************************************************************************/
+
+#include <stdint.h>
+`;
+
+const GPERF_DELIM = "%%\n";
+
+function download() {
+ let req = new XMLHttpRequest();
+ req.open("GET", SOURCE, false); // doing the request synchronously
+ try {
+ req.send();
+ } catch (e) {
+ throw new Error(`ERROR: problem downloading '${SOURCE}': ${e}`);
+ }
+
+ if (req.status != 200) {
+ throw new Error(
+ "ERROR: problem downloading '" + SOURCE + "': status " + req.status
+ );
+ }
+
+ let resultDecoded;
+ try {
+ resultDecoded = atob(req.responseText);
+ } catch (e) {
+ throw new Error(
+ "ERROR: could not decode data as base64 from '" + SOURCE + "': " + e
+ );
+ }
+
+ // we have to filter out '//' comments, while not mangling the json
+ let result = resultDecoded.replace(/^(\s*)?\/\/[^\n]*\n/gm, "");
+ let data = null;
+ try {
+ data = JSON.parse(result);
+ } catch (e) {
+ throw new Error(`ERROR: could not parse data from '${SOURCE}': ${e}`);
+ }
+ return data;
+}
+
+function getHosts(rawdata) {
+ let hosts = [];
+
+ if (!rawdata || !rawdata.entries) {
+ throw new Error(
+ "ERROR: source data not formatted correctly: 'entries' not found"
+ );
+ }
+
+ for (let entry of rawdata.entries) {
+ if (entry.mode && entry.mode == "force-https") {
+ if (entry.name) {
+ // We trim the entry name here to avoid malformed URI exceptions when we
+ // later try to connect to the domain.
+ entry.name = entry.name.trim();
+ entry.retries = MAX_RETRIES;
+ // We prefer the camelCase variable to the JSON's snake case version
+ entry.includeSubdomains = entry.include_subdomains;
+ hosts.push(entry);
+ } else {
+ throw new Error("ERROR: entry not formatted correctly: no name found");
+ }
+ }
+ }
+
+ return hosts;
+}
+
+function processStsHeader(host, header, status, securityInfo) {
+ let maxAge = {
+ value: 0,
+ };
+ let includeSubdomains = {
+ value: false,
+ };
+ let error = ERROR_NONE;
+ if (
+ header != null &&
+ securityInfo != null &&
+ securityInfo.overridableErrorCategory ==
+ Ci.nsITransportSecurityInfo.ERROR_UNSET
+ ) {
+ try {
+ let uri = Services.io.newURI("https://" + host.name);
+ gSSService.processHeader(uri, header, {}, maxAge, includeSubdomains);
+ } catch (e) {
+ dump(
+ "ERROR: could not process header '" +
+ header +
+ "' from " +
+ host.name +
+ ": " +
+ e +
+ "\n"
+ );
+ error = e;
+ }
+ } else if (status == 0) {
+ error = ERROR_CONNECTING_TO_HOST;
+ } else {
+ error = ERROR_NO_HSTS_HEADER;
+ }
+
+ if (error == ERROR_NONE && maxAge.value < MINIMUM_REQUIRED_MAX_AGE) {
+ error = ERROR_MAX_AGE_TOO_LOW;
+ }
+
+ return {
+ name: host.name,
+ maxAge: maxAge.value,
+ includeSubdomains: includeSubdomains.value,
+ error,
+ retries: host.retries - 1,
+ forceInclude: host.forceInclude,
+ };
+}
+
+// RedirectAndAuthStopper prevents redirects and HTTP authentication
+function RedirectAndAuthStopper() {}
+
+RedirectAndAuthStopper.prototype = {
+ // nsIChannelEventSink
+ asyncOnChannelRedirect(oldChannel, newChannel, flags, callback) {
+ throw Components.Exception("", Cr.NS_ERROR_ENTITY_CHANGED);
+ },
+
+ // nsIAuthPrompt2
+ promptAuth(channel, level, authInfo) {
+ return false;
+ },
+
+ asyncPromptAuth(channel, callback, context, level, authInfo) {
+ throw Components.Exception("", Cr.NS_ERROR_NOT_IMPLEMENTED);
+ },
+
+ getInterface(iid) {
+ return this.QueryInterface(iid);
+ },
+
+ QueryInterface: ChromeUtils.generateQI([
+ "nsIChannelEventSink",
+ "nsIAuthPrompt2",
+ ]),
+};
+
+function fetchstatus(host) {
+ return new Promise((resolve, reject) => {
+ let xhr = new XMLHttpRequest();
+ let uri = "https://" + host.name + "/";
+
+ xhr.open("head", uri, true);
+ xhr.setRequestHeader("X-Automated-Tool", TOOL_SOURCE);
+ xhr.timeout = REQUEST_TIMEOUT;
+
+ let errorHandler = () => {
+ dump("ERROR: exception making request to " + host.name + "\n");
+ resolve(
+ processStsHeader(
+ host,
+ null,
+ xhr.status,
+ xhr.channel && xhr.channel.securityInfo
+ )
+ );
+ };
+
+ xhr.onerror = errorHandler;
+ xhr.ontimeout = errorHandler;
+ xhr.onabort = errorHandler;
+
+ xhr.onload = () => {
+ let header = xhr.getResponseHeader("strict-transport-security");
+ resolve(
+ processStsHeader(host, header, xhr.status, xhr.channel.securityInfo)
+ );
+ };
+
+ xhr.channel.notificationCallbacks = new RedirectAndAuthStopper();
+ xhr.send();
+ });
+}
+
+async function getHSTSStatus(host) {
+ do {
+ host = await fetchstatus(host);
+ } while (shouldRetry(host));
+ return host;
+}
+
+function compareHSTSStatus(a, b) {
+ if (a.name > b.name) {
+ return 1;
+ }
+ if (a.name < b.name) {
+ return -1;
+ }
+ return 0;
+}
+
+function writeTo(string, fos) {
+ fos.write(string, string.length);
+}
+
+// Determines and returns a string representing a declaration of when this
+// preload list should no longer be used.
+// This is the current time plus MINIMUM_REQUIRED_MAX_AGE.
+function getExpirationTimeString() {
+ let now = new Date();
+ let nowMillis = now.getTime();
+ // MINIMUM_REQUIRED_MAX_AGE is in seconds, so convert to milliseconds
+ let expirationMillis = nowMillis + MINIMUM_REQUIRED_MAX_AGE * 1000;
+ let expirationMicros = expirationMillis * 1000;
+ return (
+ "const PRTime gPreloadListExpirationTime = INT64_C(" +
+ expirationMicros +
+ ");\n"
+ );
+}
+
+function shouldRetry(response) {
+ return (
+ response.error != ERROR_NO_HSTS_HEADER &&
+ response.error != ERROR_MAX_AGE_TOO_LOW &&
+ response.error != ERROR_NONE &&
+ response.retries > 0
+ );
+}
+
+// Copied from browser/components/migration/MigrationUtils.sys.mjs
+function spinResolve(promise) {
+ if (!(promise instanceof Promise)) {
+ return promise;
+ }
+ let done = false;
+ let result = null;
+ let error = null;
+ promise
+ .catch(e => {
+ error = e;
+ })
+ .then(r => {
+ result = r;
+ done = true;
+ });
+
+ Services.tm.spinEventLoopUntil(
+ "getHSTSPreloadList.js:spinResolve",
+ () => done
+ );
+ if (error) {
+ throw error;
+ } else {
+ return result;
+ }
+}
+
+async function probeHSTSStatuses(inHosts) {
+ let totalLength = inHosts.length;
+ dump("Examining " + totalLength + " hosts.\n");
+
+ // Make requests in batches of MAX_CONCURRENT_REQUESTS. Otherwise, we have
+ // too many in-flight requests and the time it takes to process them causes
+ // them all to time out.
+ let allResults = [];
+ while (inHosts.length) {
+ let promises = [];
+ for (let i = 0; i < MAX_CONCURRENT_REQUESTS && inHosts.length; i++) {
+ let host = inHosts.shift();
+ promises.push(getHSTSStatus(host));
+ }
+ let results = await Promise.all(promises);
+ let progress = (
+ (100 * (totalLength - inHosts.length)) /
+ totalLength
+ ).toFixed(2);
+ dump(progress + "% done\n");
+ allResults = allResults.concat(results);
+ }
+
+ dump("HSTS Probe received " + allResults.length + " statuses.\n");
+ return allResults;
+}
+
+function readCurrentList(filename) {
+ var currentHosts = {};
+ var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
+ file.initWithPath(filename);
+ var fis = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(
+ Ci.nsILineInputStream
+ );
+ fis.init(file, -1, -1, Ci.nsIFileInputStream.CLOSE_ON_EOF);
+ var line = {};
+
+ // While we generate entries matching the latest version format,
+ // we still need to be able to read entries in the previous version formats
+ // for bootstrapping a latest version preload list from a previous version
+ // preload list. Hence these regexes.
+ const entryRegexes = [
+ /([^,]+), (0|1)/, // v3
+ / {2}\/\* "([^"]*)", (true|false) \*\//, // v2
+ / {2}{ "([^"]*)", (true|false) },/, // v1
+ ];
+
+ while (fis.readLine(line)) {
+ let match;
+ entryRegexes.find(r => {
+ match = r.exec(line.value);
+ return match;
+ });
+ if (match) {
+ currentHosts[match[1]] = match[2] == "1" || match[2] == "true";
+ }
+ }
+ return currentHosts;
+}
+
+function combineLists(newHosts, currentHosts) {
+ let newHostsSet = new Set();
+
+ for (let newHost of newHosts) {
+ newHostsSet.add(newHost.name);
+ }
+
+ for (let currentHost in currentHosts) {
+ if (!newHostsSet.has(currentHost)) {
+ newHosts.push({ name: currentHost, retries: MAX_RETRIES });
+ }
+ }
+}
+
+const TEST_ENTRIES = [
+ {
+ name: "includesubdomains.preloaded.test",
+ includeSubdomains: true,
+ },
+ {
+ name: "includesubdomains2.preloaded.test",
+ includeSubdomains: true,
+ },
+ {
+ name: "noincludesubdomains.preloaded.test",
+ includeSubdomains: false,
+ },
+];
+
+function deleteTestHosts(currentHosts) {
+ for (let testEntry of TEST_ENTRIES) {
+ delete currentHosts[testEntry.name];
+ }
+}
+
+function getTestHosts() {
+ let hosts = [];
+ for (let testEntry of TEST_ENTRIES) {
+ hosts.push({
+ name: testEntry.name,
+ maxAge: MINIMUM_REQUIRED_MAX_AGE,
+ includeSubdomains: testEntry.includeSubdomains,
+ error: ERROR_NONE,
+ // This deliberately doesn't have a value for `retries` (because we should
+ // never attempt to connect to this host).
+ forceInclude: true,
+ });
+ }
+ return hosts;
+}
+
+async function insertHosts(inoutHostList, inAddedHosts) {
+ for (let host of inAddedHosts) {
+ inoutHostList.push(host);
+ }
+}
+
+function filterForcedInclusions(inHosts, outNotForced, outForced) {
+ // Apply our filters (based on policy today) to determine which entries
+ // will be included without being checked (forced); the others will be
+ // checked using active probing.
+ for (let host of inHosts) {
+ if (
+ host.policy == "google" ||
+ host.policy == "public-suffix" ||
+ host.policy == "public-suffix-requested"
+ ) {
+ host.forceInclude = true;
+ host.error = ERROR_NONE;
+ outForced.push(host);
+ } else {
+ outNotForced.push(host);
+ }
+ }
+}
+
+function output(statuses) {
+ dump("INFO: Writing output to " + OUTPUT + "\n");
+ try {
+ let file = new FileUtils.File(
+ PathUtils.join(Services.dirsvc.get("CurWorkD", Ci.nsIFile).path, OUTPUT)
+ );
+ let fos = FileUtils.openSafeFileOutputStream(file);
+ writeTo(HEADER, fos);
+ writeTo(getExpirationTimeString(), fos);
+
+ writeTo(GPERF_DELIM, fos);
+
+ for (let status of statuses) {
+ let includeSubdomains = status.includeSubdomains ? 1 : 0;
+ writeTo(status.name + ", " + includeSubdomains + "\n", fos);
+ }
+
+ writeTo(GPERF_DELIM, fos);
+ FileUtils.closeSafeFileOutputStream(fos);
+ dump("finished writing output file\n");
+ } catch (e) {
+ dump("ERROR: problem writing output to '" + OUTPUT + "': " + e + "\n");
+ throw e;
+ }
+}
+
+function errorToString(status) {
+ return status.error == ERROR_MAX_AGE_TOO_LOW
+ ? status.error + status.maxAge
+ : status.error;
+}
+
+async function main(args) {
+ if (args.length != 1) {
+ throw new Error(
+ "Usage: getHSTSPreloadList.js <absolute path to current nsSTSPreloadList.inc>"
+ );
+ }
+
+ // get the current preload list
+ let currentHosts = readCurrentList(args[0]);
+ // delete any hosts we use in tests so we don't actually connect to them
+ deleteTestHosts(currentHosts);
+ // disable the current preload list so it won't interfere with requests we make
+ Services.prefs.setBoolPref(
+ "network.stricttransportsecurity.preloadlist",
+ false
+ );
+ // download and parse the raw json file from the Chromium source
+ let rawdata = download();
+ // get just the hosts with mode: "force-https"
+ let hosts = getHosts(rawdata);
+ // add hosts in the current list to the new list (avoiding duplicates)
+ combineLists(hosts, currentHosts);
+
+ // Don't contact hosts that are forced to be included anyway
+ let hostsToContact = [];
+ let forcedHosts = [];
+ filterForcedInclusions(hosts, hostsToContact, forcedHosts);
+
+ // Initialize the final status list
+ let hstsStatuses = [];
+ // Add the hosts we use in tests
+ dump("Adding test hosts\n");
+ insertHosts(hstsStatuses, getTestHosts());
+ // Add in the hosts that are forced
+ dump("Adding forced hosts\n");
+ insertHosts(hstsStatuses, forcedHosts);
+
+ let total = await probeHSTSStatuses(hostsToContact)
+ .then(function (probedStatuses) {
+ return hstsStatuses.concat(probedStatuses);
+ })
+ .then(function (statuses) {
+ return statuses.sort(compareHSTSStatus);
+ })
+ .then(function (statuses) {
+ for (let status of statuses) {
+ // If we've encountered an error for this entry (other than the site not
+ // sending an HSTS header), be safe and don't remove it from the list
+ // (given that it was already on the list).
+ if (
+ !status.forceInclude &&
+ status.error != ERROR_NONE &&
+ status.error != ERROR_NO_HSTS_HEADER &&
+ status.error != ERROR_MAX_AGE_TOO_LOW &&
+ status.name in currentHosts
+ ) {
+ // dump("INFO: error connecting to or processing " + status.name + " - using previous status on list\n");
+ status.maxAge = MINIMUM_REQUIRED_MAX_AGE;
+ status.includeSubdomains = currentHosts[status.name];
+ }
+ }
+ return statuses;
+ })
+ .then(function (statuses) {
+ // Filter out entries we aren't including.
+ var includedStatuses = statuses.filter(function (status) {
+ if (status.maxAge < MINIMUM_REQUIRED_MAX_AGE && !status.forceInclude) {
+ // dump("INFO: " + status.name + " NOT ON the preload list\n");
+ return false;
+ }
+
+ // dump("INFO: " + status.name + " ON the preload list (includeSubdomains: " + status.includeSubdomains + ")\n");
+ if (status.forceInclude && status.error != ERROR_NONE) {
+ dump(
+ status.name +
+ ": " +
+ errorToString(status) +
+ " (error ignored - included regardless)\n"
+ );
+ }
+ return true;
+ });
+ return includedStatuses;
+ });
+
+ // Write the output file
+ output(total);
+
+ dump("HSTS probing all done\n");
+}
+
+// arguments is a global within xpcshell
+spinResolve(main(arguments));
diff --git a/taskcluster/docker/periodic-updates/scripts/periodic_file_updates.sh b/taskcluster/docker/periodic-updates/scripts/periodic_file_updates.sh
new file mode 100755
index 0000000000..b88ee476da
--- /dev/null
+++ b/taskcluster/docker/periodic-updates/scripts/periodic_file_updates.sh
@@ -0,0 +1,618 @@
+#!/bin/bash
+
+set -ex
+
+function usage {
+ cat <<EOF
+
+Usage: $(basename "$0") -h # Displays this usage/help text
+Usage: $(basename "$0") -x # lists exit codes
+Usage: $(basename "$0") [-p product]
+ [-r existing_repo_dir]
+ # Use mozilla-central builds to check HSTS & HPKP
+ [--use-mozilla-central]
+ # Use archive.m.o instead of the taskcluster index to get xpcshell
+ [--use-ftp-builds]
+ # One (or more) of the following actions must be specified.
+ --hsts | --hpkp | --remote-settings | --suffix-list
+ -b branch
+
+EOF
+}
+
+PRODUCT="firefox"
+BRANCH=""
+PLATFORM_EXT="tar.bz2"
+UNPACK_CMD="tar jxf"
+CLOSED_TREE=false
+DONTBUILD=false
+APPROVAL=false
+COMMIT_AUTHOR='ffxbld <ffxbld@mozilla.com>'
+REPODIR=''
+HGHOST="hg.mozilla.org"
+STAGEHOST="archive.mozilla.org"
+WGET="wget -nv"
+UNTAR="tar -zxf"
+DIFF="$(command -v diff) -u"
+BASEDIR="${HOME}"
+
+SCRIPTDIR="$(realpath "$(dirname "$0")")"
+HG="$(command -v hg)"
+DATADIR="${BASEDIR}/data"
+mkdir -p "${DATADIR}"
+
+USE_MC=false
+USE_TC=true
+JQ="$(command -v jq)"
+
+DO_HSTS=false
+HSTS_PRELOAD_SCRIPT="${SCRIPTDIR}/getHSTSPreloadList.js"
+HSTS_PRELOAD_ERRORS="nsSTSPreloadList.errors"
+HSTS_PRELOAD_INC_OLD="${DATADIR}/nsSTSPreloadList.inc"
+HSTS_PRELOAD_INC_NEW="${BASEDIR}/${PRODUCT}/nsSTSPreloadList.inc"
+HSTS_UPDATED=false
+
+DO_HPKP=false
+HPKP_PRELOAD_SCRIPT="${SCRIPTDIR}/genHPKPStaticPins.js"
+HPKP_PRELOAD_ERRORS="StaticHPKPins.errors"
+HPKP_PRELOAD_JSON="${DATADIR}/PreloadedHPKPins.json"
+HPKP_PRELOAD_INC="StaticHPKPins.h"
+HPKP_PRELOAD_INPUT="${DATADIR}/${HPKP_PRELOAD_INC}"
+HPKP_PRELOAD_OUTPUT="${DATADIR}/${HPKP_PRELOAD_INC}.out"
+HPKP_UPDATED=false
+
+DO_REMOTE_SETTINGS=false
+REMOTE_SETTINGS_SERVER=''
+REMOTE_SETTINGS_INPUT="${DATADIR}/remote-settings.in"
+REMOTE_SETTINGS_OUTPUT="${DATADIR}/remote-settings.out"
+REMOTE_SETTINGS_DIR="/services/settings/dumps"
+REMOTE_SETTINGS_UPDATED=false
+
+DO_SUFFIX_LIST=false
+GITHUB_SUFFIX_URL="https://raw.githubusercontent.com/publicsuffix/list/master/public_suffix_list.dat"
+GITHUB_SUFFIX_LOCAL="public_suffix_list.dat"
+HG_SUFFIX_LOCAL="effective_tld_names.dat"
+HG_SUFFIX_PATH="/netwerk/dns/${HG_SUFFIX_LOCAL}"
+SUFFIX_LIST_UPDATED=false
+
+ARTIFACTS_DIR="${ARTIFACTS_DIR:-.}"
+# Defaults
+HSTS_DIFF_ARTIFACT="${ARTIFACTS_DIR}/${HSTS_DIFF_ARTIFACT:-"nsSTSPreloadList.diff"}"
+HPKP_DIFF_ARTIFACT="${ARTIFACTS_DIR}/${HPKP_DIFF_ARTIFACT:-"StaticHPKPins.h.diff"}"
+REMOTE_SETTINGS_DIFF_ARTIFACT="${ARTIFACTS_DIR}/${REMOTE_SETTINGS_DIFF_ARTIFACT:-"remote-settings.diff"}"
+SUFFIX_LIST_DIFF_ARTIFACT="${ARTIFACTS_DIR}/${SUFFIX_LIST_DIFF_ARTIFACT:-"effective_tld_names.diff"}"
+
+# duplicate the functionality of taskcluster-lib-urls, but in bash..
+queue_base="$TASKCLUSTER_ROOT_URL/api/queue/v1"
+index_base="$TASKCLUSTER_ROOT_URL/api/index/v1"
+
+# Cleanup common artifacts.
+function preflight_cleanup {
+ cd "${BASEDIR}"
+ rm -rf "${PRODUCT}" tests "${BROWSER_ARCHIVE}" "${TESTS_ARCHIVE}"
+}
+
+function download_shared_artifacts_from_ftp {
+ cd "${BASEDIR}"
+
+ # Download everything we need to run js with xpcshell
+ echo "INFO: Downloading all the necessary pieces from ${STAGEHOST}..."
+ ARTIFACT_DIR="nightly/latest-${REPODIR}"
+ if [ "${USE_MC}" == "true" ]; then
+ ARTIFACT_DIR="nightly/latest-mozilla-central"
+ fi
+
+ BROWSER_ARCHIVE_URL="https://${STAGEHOST}/pub/mozilla.org/${PRODUCT}/${ARTIFACT_DIR}/${BROWSER_ARCHIVE}"
+ TESTS_ARCHIVE_URL="https://${STAGEHOST}/pub/mozilla.org/${PRODUCT}/${ARTIFACT_DIR}/${TESTS_ARCHIVE}"
+
+ echo "INFO: ${WGET} ${BROWSER_ARCHIVE_URL}"
+ ${WGET} "${BROWSER_ARCHIVE_URL}"
+ echo "INFO: ${WGET} ${TESTS_ARCHIVE_URL}"
+ ${WGET} "${TESTS_ARCHIVE_URL}"
+}
+
+function download_shared_artifacts_from_tc {
+ cd "${BASEDIR}"
+ TASKID_FILE="taskId.json"
+
+ # Download everything we need to run js with xpcshell
+ echo "INFO: Downloading all the necessary pieces from the taskcluster index..."
+ TASKID_URL="$index_base/task/gecko.v2.${REPODIR}.shippable.latest.${PRODUCT}.linux64-opt"
+ if [ "${USE_MC}" == "true" ]; then
+ TASKID_URL="$index_base/task/gecko.v2.mozilla-central.shippable.latest.${PRODUCT}.linux64-opt"
+ fi
+ ${WGET} -O ${TASKID_FILE} "${TASKID_URL}"
+ INDEX_TASK_ID="$($JQ -r '.taskId' ${TASKID_FILE})"
+ if [ -z "${INDEX_TASK_ID}" ]; then
+ echo "Failed to look up taskId at ${TASKID_URL}"
+ exit 22
+ else
+ echo "INFO: Got taskId of $INDEX_TASK_ID"
+ fi
+
+ TASKSTATUS_FILE="taskstatus.json"
+ STATUS_URL="$queue_base/task/${INDEX_TASK_ID}/status"
+ ${WGET} -O "${TASKSTATUS_FILE}" "${STATUS_URL}"
+ LAST_RUN_INDEX=$(($(jq '.status.runs | length' ${TASKSTATUS_FILE}) - 1))
+ echo "INFO: Examining run number ${LAST_RUN_INDEX}"
+
+ BROWSER_ARCHIVE_URL="$queue_base/task/${INDEX_TASK_ID}/runs/${LAST_RUN_INDEX}/artifacts/public/build/${BROWSER_ARCHIVE}"
+ echo "INFO: ${WGET} ${BROWSER_ARCHIVE_URL}"
+ ${WGET} "${BROWSER_ARCHIVE_URL}"
+
+ TESTS_ARCHIVE_URL="$queue_base/task/${INDEX_TASK_ID}/runs/${LAST_RUN_INDEX}/artifacts/public/build/${TESTS_ARCHIVE}"
+ echo "INFO: ${WGET} ${TESTS_ARCHIVE_URL}"
+ ${WGET} "${TESTS_ARCHIVE_URL}"
+}
+
+function unpack_artifacts {
+ cd "${BASEDIR}"
+ if [ ! -f "${BROWSER_ARCHIVE}" ]; then
+ echo "Downloaded file '${BROWSER_ARCHIVE}' not found in directory '$(pwd)'." >&2
+ exit 31
+ fi
+ if [ ! -f "${TESTS_ARCHIVE}" ]; then
+ echo "Downloaded file '${TESTS_ARCHIVE}' not found in directory '$(pwd)'." >&2
+ exit 32
+ fi
+ # Unpack the browser and move xpcshell in place for updating the preload list.
+ echo "INFO: Unpacking resources..."
+ ${UNPACK_CMD} "${BROWSER_ARCHIVE}"
+ mkdir -p tests
+ cd tests
+ ${UNTAR} "../${TESTS_ARCHIVE}"
+ cd "${BASEDIR}"
+ cp tests/bin/xpcshell "${PRODUCT}"
+}
+
+# Downloads the current in-tree HSTS (HTTP Strict Transport Security) files.
+# Runs a simple xpcshell script to generate up-to-date HSTS information.
+# Compares the new HSTS output with the old to determine whether we need to update.
+function compare_hsts_files {
+ cd "${BASEDIR}"
+
+ HSTS_PRELOAD_INC_HG="${HGREPO}/raw-file/default/security/manager/ssl/$(basename "${HSTS_PRELOAD_INC_OLD}")"
+
+ echo "INFO: Downloading existing include file..."
+ rm -rf "${HSTS_PRELOAD_ERRORS}" "${HSTS_PRELOAD_INC_OLD}"
+ echo "INFO: ${WGET} ${HSTS_PRELOAD_INC_HG}"
+ ${WGET} -O "${HSTS_PRELOAD_INC_OLD}" "${HSTS_PRELOAD_INC_HG}"
+
+ if [ ! -f "${HSTS_PRELOAD_INC_OLD}" ]; then
+ echo "Downloaded file '${HSTS_PRELOAD_INC_OLD}' not found in directory '$(pwd)' - this should have been downloaded above from ${HSTS_PRELOAD_INC_HG}." >&2
+ exit 41
+ fi
+
+ # Run the script to get an updated preload list.
+ echo "INFO: Generating new HSTS preload list..."
+ cd "${BASEDIR}/${PRODUCT}"
+ if ! LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:. ./xpcshell "${HSTS_PRELOAD_SCRIPT}" "${HSTS_PRELOAD_INC_OLD}"; then
+ echo "HSTS preload list generation failed" >&2
+ exit 43
+ fi
+
+ # The created files should be non-empty.
+ echo "INFO: Checking whether new HSTS preload list is valid..."
+ if [ ! -s "${HSTS_PRELOAD_INC_NEW}" ]; then
+ echo "New HSTS preload list ${HSTS_PRELOAD_INC_NEW} is empty. That's less good." >&2
+ exit 42
+ fi
+ cd "${BASEDIR}"
+
+ # Check for differences
+ echo "INFO: diffing old/new HSTS preload lists into ${HSTS_DIFF_ARTIFACT}"
+ ${DIFF} "${HSTS_PRELOAD_INC_OLD}" "${HSTS_PRELOAD_INC_NEW}" | tee "${HSTS_DIFF_ARTIFACT}"
+ if [ -s "${HSTS_DIFF_ARTIFACT}" ]
+ then
+ return 0
+ fi
+ return 1
+}
+
+# Downloads the current in-tree HPKP (HTTP public key pinning) files.
+# Runs a simple xpcshell script to generate up-to-date HPKP information.
+# Compares the new HPKP output with the old to determine whether we need to update.
+function compare_hpkp_files {
+ cd "${BASEDIR}"
+ HPKP_PRELOAD_JSON_HG="${HGREPO}/raw-file/default/security/manager/tools/$(basename "${HPKP_PRELOAD_JSON}")"
+
+ HPKP_PRELOAD_OUTPUT_HG="${HGREPO}/raw-file/default/security/manager/ssl/${HPKP_PRELOAD_INC}"
+
+ rm -f "${HPKP_PRELOAD_OUTPUT}"
+ ${WGET} -O "${HPKP_PRELOAD_INPUT}" "${HPKP_PRELOAD_OUTPUT_HG}"
+ ${WGET} -O "${HPKP_PRELOAD_JSON}" "${HPKP_PRELOAD_JSON_HG}"
+
+ # Run the script to get an updated preload list.
+ echo "INFO: Generating new HPKP preload list..."
+ cd "${BASEDIR}/${PRODUCT}"
+ if ! LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:. ./xpcshell "${HPKP_PRELOAD_SCRIPT}" "${HPKP_PRELOAD_JSON}" "${HPKP_PRELOAD_OUTPUT}" > "${HPKP_PRELOAD_ERRORS}"; then
+ echo "HPKP preload list generation failed" >&2
+ exit 54
+ fi
+
+ # The created files should be non-empty.
+ echo "INFO: Checking whether new HPKP preload list is valid..."
+
+ if [ ! -s "${HPKP_PRELOAD_OUTPUT}" ]; then
+ echo "${HPKP_PRELOAD_OUTPUT} is empty. That's less good." >&2
+ exit 52
+ fi
+ if ! grep kPreloadPKPinsExpirationTime "${HPKP_PRELOAD_OUTPUT}"; then
+ echo "${HPKP_PRELOAD_OUTPUT} is missing an expiration time. Truncated?" >&2
+ exit 53
+ fi
+ cd "${BASEDIR}"
+
+ echo "INFO: diffing old/new HPKP preload lists..."
+ ${DIFF} "${HPKP_PRELOAD_INPUT}" "${HPKP_PRELOAD_OUTPUT}" | tee "${HPKP_DIFF_ARTIFACT}"
+ if [ -s "${HPKP_DIFF_ARTIFACT}" ]
+ then
+ return 0
+ fi
+ return 1
+}
+
+function is_valid_xml {
+ xmlfile=$1
+ XMLLINT=$(command -v xmllint 2>/dev/null | head -n1)
+
+ if [ ! -x "${XMLLINT}" ]; then
+ echo "ERROR: xmllint not found in PATH"
+ exit 60
+ fi
+ ${XMLLINT} --nonet --noout "${xmlfile}"
+}
+
+# Downloads the public suffix list
+function compare_suffix_lists {
+ HG_SUFFIX_URL="${HGREPO}/raw-file/default/${HG_SUFFIX_PATH}"
+ cd "${BASEDIR}"
+
+ echo "INFO: ${WGET} -O ${GITHUB_SUFFIX_LOCAL} ${GITHUB_SUFFIX_URL}"
+ rm -f "${GITHUB_SUFFIX_LOCAL}"
+ ${WGET} -O "${GITHUB_SUFFIX_LOCAL}" "${GITHUB_SUFFIX_URL}"
+
+ echo "INFO: ${WGET} -O ${HG_SUFFIX_LOCAL} ${HG_SUFFIX_URL}"
+ rm -f "${HG_SUFFIX_LOCAL}"
+ ${WGET} -O "${HG_SUFFIX_LOCAL}" "${HG_SUFFIX_URL}"
+
+ echo "INFO: diffing in-tree suffix list against the suffix list from AMO..."
+ ${DIFF} ${GITHUB_SUFFIX_LOCAL} ${HG_SUFFIX_LOCAL} | tee "${SUFFIX_LIST_DIFF_ARTIFACT}"
+ if [ -s "${SUFFIX_LIST_DIFF_ARTIFACT}" ]
+ then
+ return 0
+ fi
+ return 1
+}
+
+function compare_remote_settings_files {
+ REMOTE_SETTINGS_SERVER="https://firefox.settings.services.mozilla.com/v1"
+
+ # 1. List remote settings collections from server.
+ echo "INFO: fetch remote settings list from server"
+ ${WGET} -qO- "${REMOTE_SETTINGS_SERVER}/buckets/monitor/collections/changes/records" |\
+ ${JQ} -r '.data[] | .bucket+"/"+.collection+"/"+(.last_modified|tostring)' |\
+ # 2. For each entry ${bucket, collection, last_modified}
+ while IFS="/" read -r bucket collection last_modified; do
+
+ # 3. Download the dump from HG into REMOTE_SETTINGS_INPUT folder
+ hg_dump_url="${HGREPO}/raw-file/default${REMOTE_SETTINGS_DIR}/${bucket}/${collection}.json"
+ local_location_input="$REMOTE_SETTINGS_INPUT/${bucket}/${collection}.json"
+ mkdir -p "$REMOTE_SETTINGS_INPUT/${bucket}"
+ ${WGET} -qO "$local_location_input" "$hg_dump_url"
+ if [ $? -eq 8 ]; then
+ # We don't keep any dump for this collection, skip it.
+ # Try to clean up in case no collection in this bucket has dump.
+ rmdir "$REMOTE_SETTINGS_INPUT/${bucket}" --ignore-fail-on-non-empty
+ continue
+ fi
+
+ # 4. Download server version into REMOTE_SETTINGS_OUTPUT folder
+ remote_records_url="$REMOTE_SETTINGS_SERVER/buckets/${bucket}/collections/${collection}/changeset?_expected=${last_modified}"
+ local_location_output="$REMOTE_SETTINGS_OUTPUT/${bucket}/${collection}.json"
+ mkdir -p "$REMOTE_SETTINGS_OUTPUT/${bucket}"
+ ${WGET} -qO- "$remote_records_url" | ${JQ} '{"data": .changes, "timestamp": .timestamp}' > "${local_location_output}"
+
+ # 5. Download attachments if needed.
+ if [ "${bucket}" = "blocklists" ] && [ "${collection}" = "addons-bloomfilters" ]; then
+ # Find the attachment with the most recent generation_time, like _updateMLBF in Blocklist.jsm.
+ # The server should return one "bloomfilter-base" record, but in case it returns multiple,
+ # return the most recent one. The server may send multiple entries if we ever decide to use
+ # the "filter_expression" feature of Remote Settings to send different records to specific
+ # channels. In that case this code should be updated to recognize the filter expression,
+ # but until we do, simply select the most recent record - can't go wrong with that.
+ # Note that "attachment_type" and "generation_time" are specific to addons-bloomfilters.
+ update_remote_settings_attachment "${bucket}" "${collection}" addons-mlbf.bin \
+ 'map(select(.attachment_type == "bloomfilter-base")) | sort_by(.generation_time) | last'
+ fi
+ # Here is an example to download an attachment with record identifier "ID":
+ # update_remote_settings_attachment "${bucket}" "${collection}" ID '.[] | select(.id == "ID")'
+ # NOTE: The downloaded data is not validated. xpcshell should be used for that.
+ done
+
+ echo "INFO: diffing old/new remote settings dumps..."
+ ${DIFF} -r "${REMOTE_SETTINGS_INPUT}" "${REMOTE_SETTINGS_OUTPUT}" > "${REMOTE_SETTINGS_DIFF_ARTIFACT}"
+ if [ -s "${REMOTE_SETTINGS_DIFF_ARTIFACT}" ]
+ then
+ return 0
+ fi
+ return 1
+}
+
+# Helper for compare_remote_settings_files to download attachments from remote settings.
+# The format and location is documented at:
+# https://firefox-source-docs.mozilla.org/services/common/services/RemoteSettings.html#packaging-attachments
+function update_remote_settings_attachment() {
+ local bucket=$1
+ local collection=$2
+ local attachment_id=$3
+ # $4 is a jq filter on the arrays that should return one record with the attachment
+ local jq_attachment_selector=".data | map(select(.attachment)) | $4"
+
+ # These paths match _readAttachmentDump in services/settings/Attachments.jsm.
+ local path_to_attachment="${bucket}/${collection}/${attachment_id}"
+ local path_to_meta="${bucket}/${collection}/${attachment_id}.meta.json"
+ local old_meta="$REMOTE_SETTINGS_INPUT/${path_to_meta}"
+ local new_meta="$REMOTE_SETTINGS_OUTPUT/${path_to_meta}"
+
+ # Those files should have been created by compare_remote_settings_files before the function call.
+ local local_location_input="$REMOTE_SETTINGS_INPUT/${bucket}/${collection}.json"
+ local local_location_output="$REMOTE_SETTINGS_OUTPUT/${bucket}/${collection}.json"
+
+ # Compute the metadata based on already-downloaded records.
+ mkdir -p "$REMOTE_SETTINGS_INPUT/${bucket}/${collection}"
+ ${JQ} -cj <"$local_location_input" "${jq_attachment_selector}" > "${old_meta}"
+ mkdir -p "$REMOTE_SETTINGS_OUTPUT/${bucket}/${collection}"
+ ${JQ} -cj <"$local_location_output" "${jq_attachment_selector}" > "${new_meta}"
+
+ if cmp --silent "${old_meta}" "${new_meta}" ; then
+ # Metadata not changed, don't bother downloading the attachments themselves.
+ return
+ fi
+ # Metadata changed. Download attachments.
+
+ echo "INFO: Downloading updated remote settings dump: ${bucket}/${collection}/${attachment_id}"
+
+ # Overwrited old_meta with the actual file from the repo. The content should be equivalent,
+ # but can have minor differences (e.g. different line endings) if the checked in file was not
+ # generated by this script (e.g. manually checked in).
+ ${WGET} -qO "${old_meta}" "${HGREPO}/raw-file/default${REMOTE_SETTINGS_DIR}/${path_to_meta}"
+
+ ${WGET} -qO "${REMOTE_SETTINGS_INPUT}/${path_to_attachment}" "${HGREPO}/raw-file/default${REMOTE_SETTINGS_DIR}/${path_to_attachment}"
+
+ if [ -z "${ATTACHMENT_BASE_URL}" ] ; then
+ ATTACHMENT_BASE_URL=$(${WGET} -qO- "${REMOTE_SETTINGS_SERVER}" | ${JQ} -r .capabilities.attachments.base_url)
+ fi
+ attachment_path_from_meta=$(${JQ} -r < "${new_meta}" .attachment.location)
+ ${WGET} -qO "${REMOTE_SETTINGS_OUTPUT}/${path_to_attachment}" "${ATTACHMENT_BASE_URL}${attachment_path_from_meta}"
+}
+
+# Clones an hg repo
+function clone_repo {
+ cd "${BASEDIR}"
+ if [ ! -d "${REPODIR}" ]; then
+ ${HG} robustcheckout --sharebase /tmp/hg-store -b default "${HGREPO}" "${REPODIR}"
+ fi
+
+ ${HG} -R "${REPODIR}" pull
+ ${HG} -R "${REPODIR}" update -C default
+}
+
+# Copies new HSTS files in place, and commits them.
+function stage_hsts_files {
+ cd "${BASEDIR}"
+ cp -f "${HSTS_PRELOAD_INC_NEW}" "${REPODIR}/security/manager/ssl/"
+}
+
+function stage_hpkp_files {
+ cd "${BASEDIR}"
+ cp -f "${HPKP_PRELOAD_OUTPUT}" "${REPODIR}/security/manager/ssl/${HPKP_PRELOAD_INC}"
+}
+
+function stage_remote_settings_files {
+ cd "${BASEDIR}"
+ cp -a "${REMOTE_SETTINGS_OUTPUT}"/* "${REPODIR}${REMOTE_SETTINGS_DIR}"
+}
+
+function stage_tld_suffix_files {
+ cd "${BASEDIR}"
+ cp -a "${GITHUB_SUFFIX_LOCAL}" "${REPODIR}/${HG_SUFFIX_PATH}"
+}
+
+# Push all pending commits to Phabricator
+function push_repo {
+ cd "${REPODIR}"
+ if [ ! -r "${HOME}/.arcrc" ]
+ then
+ return 1
+ fi
+ if ! ARC=$(command -v arc)
+ then
+ return 1
+ fi
+ if [ -z "${REVIEWERS}" ]
+ then
+ return 1
+ fi
+ # Clean up older review requests
+ # Turn Needs Review D624: No bug, Automated HSTS ...
+ # into D624
+ for diff in $($ARC list | grep "Needs Review" | grep -E "${BRANCH} repo-update" | awk 'match($0, /D[0-9]+[^: ]/) { print substr($0, RSTART, RLENGTH) }')
+ do
+ echo "Removing old request $diff"
+ # There is no 'arc abandon', see bug 1452082
+ echo '{"transactions": [{"type":"abandon", "value": true}], "objectIdentifier": "'"${diff}"'"}' | $ARC call-conduit -- differential.revision.edit
+ done
+
+ $ARC diff --verbatim --reviewers "${REVIEWERS}"
+}
+
+
+
+# Main
+
+# Parse our command-line options.
+while [ $# -gt 0 ]; do
+ case "$1" in
+ -h) usage; exit 0 ;;
+ -p) PRODUCT="$2"; shift ;;
+ -b) BRANCH="$2"; shift ;;
+ -n) DRY_RUN=true ;;
+ -c) CLOSED_TREE=true ;;
+ -d) DONTBUILD=true ;;
+ -a) APPROVAL=true ;;
+ --pinset) DO_PRELOAD_PINSET=true ;;
+ --hsts) DO_HSTS=true ;;
+ --hpkp) DO_HPKP=true ;;
+ --remote-settings) DO_REMOTE_SETTINGS=true ;;
+ --suffix-list) DO_SUFFIX_LIST=true ;;
+ -r) REPODIR="$2"; shift ;;
+ --use-mozilla-central) USE_MC=true ;;
+ --use-ftp-builds) USE_TC=false ;;
+ -*) usage
+ exit 11 ;;
+ *) break ;; # terminate while loop
+ esac
+ shift
+done
+
+# Must supply a code branch to work with.
+if [ "${BRANCH}" == "" ]; then
+ echo "Error: You must specify a branch with -b branchname." >&2
+ usage
+ exit 12
+fi
+
+# Must choose at least one update action.
+if [ "$DO_HSTS" == "false" ] && [ "$DO_HPKP" == "false" ] && [ "$DO_REMOTE_SETTINGS" == "false" ] && [ "$DO_SUFFIX_LIST" == "false" ]
+then
+ echo "Error: you must specify at least one action from: --hsts, --hpkp, --remote-settings, or --suffix-list" >&2
+ usage
+ exit 13
+fi
+
+# per-product constants
+case "${PRODUCT}" in
+ thunderbird)
+ COMMIT_AUTHOR="tbirdbld <tbirdbld@thunderbird.net>"
+ ;;
+ firefox)
+ ;;
+ *)
+ echo "Error: Invalid product specified"
+ usage
+ exit 14
+ ;;
+esac
+
+if [ "${REPODIR}" == "" ]; then
+ REPODIR="$(basename "${BRANCH}")"
+fi
+
+case "${BRANCH}" in
+ mozilla-central|comm-central|try )
+ HGREPO="https://${HGHOST}/${BRANCH}"
+ ;;
+ mozilla-*|comm-* )
+ HGREPO="https://${HGHOST}/releases/${BRANCH}"
+ ;;
+ * )
+ HGREPO="https://${HGHOST}/projects/${BRANCH}"
+ ;;
+esac
+
+BROWSER_ARCHIVE="target.${PLATFORM_EXT}"
+TESTS_ARCHIVE="target.common.tests.tar.gz"
+
+preflight_cleanup
+if [ "${DO_HSTS}" == "true" ] || [ "${DO_HPKP}" == "true" ] || [ "${DO_PRELOAD_PINSET}" == "true" ]
+then
+ if [ "${USE_TC}" == "true" ]; then
+ download_shared_artifacts_from_tc
+ else
+ download_shared_artifacts_from_ftp
+ fi
+ unpack_artifacts
+fi
+
+if [ "${DO_HSTS}" == "true" ]; then
+ if compare_hsts_files
+ then
+ HSTS_UPDATED=true
+ fi
+fi
+if [ "${DO_HPKP}" == "true" ]; then
+ if compare_hpkp_files
+ then
+ HPKP_UPDATED=true
+ fi
+fi
+if [ "${DO_REMOTE_SETTINGS}" == "true" ]; then
+ if compare_remote_settings_files
+ then
+ REMOTE_SETTINGS_UPDATED=true
+ fi
+fi
+if [ "${DO_SUFFIX_LIST}" == "true" ]; then
+ if compare_suffix_lists
+ then
+ SUFFIX_LIST_UPDATED=true
+ fi
+fi
+
+
+if [ "${HSTS_UPDATED}" == "false" ] && [ "${HPKP_UPDATED}" == "false" ] && [ "${REMOTE_SETTINGS_UPDATED}" == "false" ] && [ "${SUFFIX_LIST_UPDATED}" == "false" ]; then
+ echo "INFO: no updates required. Exiting."
+ exit 0
+else
+ if [ "${DRY_RUN}" == "true" ]; then
+ echo "INFO: Updates are available, not updating hg in dry-run mode."
+ exit 2
+ fi
+fi
+
+clone_repo
+
+COMMIT_MESSAGE="No Bug, ${BRANCH} repo-update"
+if [ "${HSTS_UPDATED}" == "true" ]
+then
+ stage_hsts_files
+ COMMIT_MESSAGE="${COMMIT_MESSAGE} HSTS"
+fi
+
+if [ "${HPKP_UPDATED}" == "true" ]
+then
+ stage_hpkp_files
+ COMMIT_MESSAGE="${COMMIT_MESSAGE} HPKP"
+fi
+
+if [ "${REMOTE_SETTINGS_UPDATED}" == "true" ]
+then
+ stage_remote_settings_files
+ COMMIT_MESSAGE="${COMMIT_MESSAGE} remote-settings"
+fi
+
+if [ "${SUFFIX_LIST_UPDATED}" == "true" ]
+then
+ stage_tld_suffix_files
+ COMMIT_MESSAGE="${COMMIT_MESSAGE} tld-suffixes"
+fi
+
+
+if [ ${DONTBUILD} == true ]; then
+ COMMIT_MESSAGE="${COMMIT_MESSAGE} - (DONTBUILD)"
+fi
+if [ ${CLOSED_TREE} == true ]; then
+ COMMIT_MESSAGE="${COMMIT_MESSAGE} - CLOSED TREE"
+fi
+if [ ${APPROVAL} == true ]; then
+ COMMIT_MESSAGE="${COMMIT_MESSAGE} - a=repo-update"
+fi
+
+
+if ${HG} -R "${REPODIR}" commit -u "${COMMIT_AUTHOR}" -m "${COMMIT_MESSAGE}"
+then
+ push_repo
+fi
+
+echo "All done"
diff --git a/taskcluster/docker/periodic-updates/setup.sh b/taskcluster/docker/periodic-updates/setup.sh
new file mode 100755
index 0000000000..d05c60883c
--- /dev/null
+++ b/taskcluster/docker/periodic-updates/setup.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+set -ve
+
+apt-get update -q
+apt-get install \
+ arcanist \
+ curl \
+ jq \
+ libasound2 \
+ libdbus-glib-1-2 \
+ libgtk-3-0 \
+ libx11-xcb1 \
+ libxml2-utils \
+ libxt6 \
+ libxtst6 \
+ shellcheck \
+ unzip \
+ bzip2 \
+ wget
+
+rm -rf /setup
diff --git a/taskcluster/docker/push-to-try/Dockerfile b/taskcluster/docker/push-to-try/Dockerfile
new file mode 100644
index 0000000000..4725c7e48b
--- /dev/null
+++ b/taskcluster/docker/push-to-try/Dockerfile
@@ -0,0 +1,22 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+FROM $DOCKER_IMAGE_PARENT
+
+VOLUME /builds/worker/checkouts
+VOLUME /builds/worker/workspace
+VOLUME /builds/worker/tooltool-cache
+
+RUN apt-get update && \
+ apt-get install \
+ openssh-client
+
+COPY known_hosts /etc/ssh/ssh_known_hosts
+COPY hgrc /etc/mercurial/hgrc.d/push-to-try.rc
+
+RUN hg clone -r 19a77a5d7b2a90ba225cf5015afd1ac44787abec https://hg.mozilla.org/hgcustom/version-control-tools /builds/worker/.mozbuild/version-control-tools
+
+# Create directory for scripts to put an hg config in, for configuring ssh
+RUN mkdir /builds/worker/.config/hg
+RUN chown -R worker:worker /builds/worker/.config/hg
diff --git a/taskcluster/docker/push-to-try/hgrc b/taskcluster/docker/push-to-try/hgrc
new file mode 100644
index 0000000000..d1a0318499
--- /dev/null
+++ b/taskcluster/docker/push-to-try/hgrc
@@ -0,0 +1,2 @@
+[extensions]
+push-to-try = ~/.mozbuild/version-control-tools/hgext/push-to-try
diff --git a/taskcluster/docker/push-to-try/known_hosts b/taskcluster/docker/push-to-try/known_hosts
new file mode 100644
index 0000000000..1dc2e39e70
--- /dev/null
+++ b/taskcluster/docker/push-to-try/known_hosts
@@ -0,0 +1,2 @@
+hg.mozilla.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDEsS2fK+TVkHl4QvvOHB6R5xxngsSYJR+pA4+xDhw4mZT9tgCRU9BBG3LazSLp6PUxnpfok78475/tx6Z8QwbTyUTmLElZ9Z9eJzjaGz/olHzQSWv0VB3kT+VZt0LK7pEuaG+Ph/qwxbtUZZOApYLEvu8uctDlS66doofxZylbsgl1kpRQ5HNu+/DgVo9K9dyMOm9OLoy4tXHSE5pofn4tKYdFRa2lt6OVtIP5/hKNb2i0+JmgM8C3bJTPvzJ4C8p2h83ro29XPUkNAfWrgD5CmAPPqHFXyefDCfdefcvI8B8Za9v4j4LynBDZHsGfII+wIfzyLIxy9K6Op6nqDZgCciBRdgxh4uZQINEhB/JJP03Pxo42ExdG28oU3aL8kRRTORT5ehFtImFfr9QESHaUnbVzBbU5DmOB5voYDMle3RgyY+RXJ7+4OxjLRnJvGks9QCn8QrIvabs/PTCnenI8+yDhMlLUkWTiR4JK8vDBYB2Rm++EmVsN9WjllfDNg3Aj1aYe8XiBD4tS+lg7Ur4rJL8X20H4yMvq56sQ0qfH8PCIQGyGL725E7Yuwj/MHvou5xrPM/Lqo/MtX5T2njrzkeaBmI/zFJaLwbphdrwmrzepbcim7OYJFF2pz8u56KDPD1pUQ7C1gEIAx/4mHiDOGCYooSvyfD+JRdjkZUZMiQ==
+hg.mozilla.org ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGuRsL+/OrvIekv3iBST1zdVBLBuh/DMIj+ZN72N9a0g
diff --git a/taskcluster/docker/recipes/common.sh b/taskcluster/docker/recipes/common.sh
new file mode 100644
index 0000000000..0182154495
--- /dev/null
+++ b/taskcluster/docker/recipes/common.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+tooltool_fetch() {
+ cat >manifest.tt
+ python3 /setup/tooltool.py fetch
+ rm manifest.tt
+}
diff --git a/taskcluster/docker/recipes/debian-test-system-setup.sh b/taskcluster/docker/recipes/debian-test-system-setup.sh
new file mode 100644
index 0000000000..a0023220a9
--- /dev/null
+++ b/taskcluster/docker/recipes/debian-test-system-setup.sh
@@ -0,0 +1,84 @@
+#!/usr/bin/env bash
+
+set -ve
+
+test "$(whoami)" == 'root'
+
+mkdir -p /setup
+cd /setup
+
+apt_packages=()
+
+apt_packages+=('autoconf2.13')
+apt_packages+=('bluez-cups')
+apt_packages+=('build-essential')
+apt_packages+=('ccache')
+apt_packages+=('curl')
+apt_packages+=('fonts-kacst')
+apt_packages+=('fonts-kacst-one')
+apt_packages+=('fonts-liberation')
+apt_packages+=('fonts-stix')
+apt_packages+=('fonts-unfonts-core')
+apt_packages+=('fonts-unfonts-extra')
+apt_packages+=('fonts-vlgothic')
+apt_packages+=('g++-multilib')
+apt_packages+=('gcc-multilib')
+apt_packages+=('gir1.2-gnomebluetooth-1.0')
+apt_packages+=('gnome-keyring')
+apt_packages+=('libasound2-dev')
+apt_packages+=('libcanberra-pulse')
+apt_packages+=('libcurl4-openssl-dev')
+apt_packages+=('libdbus-1-dev')
+apt_packages+=('libdbus-glib-1-dev')
+apt_packages+=('libgconf2-dev')
+apt_packages+=('libiw-dev')
+apt_packages+=('libnotify-dev')
+apt_packages+=('libpulse-dev')
+apt_packages+=('libsox-fmt-alsa')
+apt_packages+=('libxt-dev')
+apt_packages+=('libxxf86vm1')
+apt_packages+=('llvm')
+apt_packages+=('llvm-dev')
+apt_packages+=('llvm-runtime')
+apt_packages+=('locales')
+apt_packages+=('locales-all')
+apt_packages+=('net-tools')
+apt_packages+=('openssh-client')
+apt_packages+=('qemu-kvm')
+apt_packages+=('rlwrap')
+apt_packages+=('screen')
+apt_packages+=('software-properties-common')
+apt_packages+=('sudo')
+apt_packages+=('tar')
+apt_packages+=('ttf-dejavu')
+apt_packages+=('unzip')
+apt_packages+=('uuid')
+apt_packages+=('wget')
+apt_packages+=('xdg-user-dirs')
+apt_packages+=('xvfb')
+apt_packages+=('zip')
+
+# use Ubuntu's Python-2.7 (2.7.3 on Precise)
+apt_packages+=('python-dev')
+apt_packages+=('python-pip')
+
+apt-get update
+apt-get install "${apt_packages[@]}"
+
+dpkg-reconfigure locales
+
+# pip 19.3 is causing errors building the docker image, pin to 19.2.3 for now.
+# See https://github.com/pypa/pip/issues/7206
+pip install --upgrade pip==19.2.3
+hash -r
+pip install virtualenv==15.2.0
+
+# clean up
+apt-get autoremove
+
+# We don't need no docs!
+rm -rf /usr/share/help /usr/share/doc /usr/share/man
+
+cd /
+rm -rf /setup ~/.ccache ~/.cache ~/.npm
+rm -f "$0"
diff --git a/taskcluster/docker/recipes/dot-config/pip/pip.conf b/taskcluster/docker/recipes/dot-config/pip/pip.conf
new file mode 100644
index 0000000000..73c2b2a52c
--- /dev/null
+++ b/taskcluster/docker/recipes/dot-config/pip/pip.conf
@@ -0,0 +1,2 @@
+[global]
+disable-pip-version-check = true
diff --git a/taskcluster/docker/recipes/hgrc b/taskcluster/docker/recipes/hgrc
new file mode 100755
index 0000000000..f6a2f6643c
--- /dev/null
+++ b/taskcluster/docker/recipes/hgrc
@@ -0,0 +1,33 @@
+# By default the progress bar starts after 3s and updates every 0.1s. We
+# change this so it shows and updates every 1.0s.
+# We also tell progress to assume a TTY is present so updates are printed
+# even if there is no known TTY.
+[progress]
+delay = 1.0
+refresh = 1.0
+assume-tty = true
+
+[extensions]
+share =
+sparse =
+robustcheckout = /usr/local/mercurial/robustcheckout.py
+
+[hostsecurity]
+# When running a modern Python, Mercurial will default to TLS 1.1+.
+# When running on a legacy Python, Mercurial will default to TLS 1.0+.
+# There is no good reason we shouldn't be running a modern Python
+# capable of speaking TLS 1.2. And the only Mercurial servers we care
+# about should be running TLS 1.2. So make TLS 1.2 the minimum.
+minimumprotocol = tls1.2
+
+# Settings to make 1-click loaners more useful.
+[extensions]
+histedit =
+rebase =
+
+[diff]
+git = 1
+showfunc = 1
+
+[pager]
+pager = LESS=FRSXQ less
diff --git a/taskcluster/docker/recipes/install-node.sh b/taskcluster/docker/recipes/install-node.sh
new file mode 100644
index 0000000000..daeba2edc9
--- /dev/null
+++ b/taskcluster/docker/recipes/install-node.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# This script installs Node v16.
+# XXX For now, this should match the version installed in
+# taskcluster/scripts/misc/repack-node.sh. Later we'll get the ESLint builder
+# to use the linux64-node toolchain directly.
+
+wget -O node.xz --progress=dot:mega https://nodejs.org/dist/v16.19.0/node-v16.19.0-linux-x64.tar.xz
+echo 'c88b52497ab38a3ddf526e5b46a41270320409109c3f74171b241132984fd08f' node.xz | sha256sum -c
+tar -C /usr/local -xJ --strip-components 1 < node.xz
+node -v # verify
+npm -v
diff --git a/taskcluster/docker/recipes/setup_packages.sh b/taskcluster/docker/recipes/setup_packages.sh
new file mode 100755
index 0000000000..48dbf493f3
--- /dev/null
+++ b/taskcluster/docker/recipes/setup_packages.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+TASKCLUSTER_ROOT_URL=$1
+shift
+
+# duplicate the functionality of taskcluster-lib-urls, but in bash..
+queue_base="$TASKCLUSTER_ROOT_URL/api/queue/v1"
+
+
+for task in "$@"; do
+ echo "adding package source $queue_base/task/$task/artifacts/public/build/"
+ echo "deb [trusted=yes] $queue_base/task/$task/artifacts/public/build/ apt/" > "/etc/apt/sources.list.d/99$task.list"
+done
diff --git a/taskcluster/docker/recipes/ubuntu1804-test-system-setup-base.sh b/taskcluster/docker/recipes/ubuntu1804-test-system-setup-base.sh
new file mode 100644
index 0000000000..cb934529bf
--- /dev/null
+++ b/taskcluster/docker/recipes/ubuntu1804-test-system-setup-base.sh
@@ -0,0 +1,163 @@
+#!/usr/bin/env bash
+
+set -ve
+
+test "$(whoami)" == 'root'
+
+# We do want to install recommended packages.
+sed -i /APT::Install-Recommends/d /etc/apt/apt.conf.d/99taskcluster
+
+# To speed up docker image build times as well as number of network/disk I/O
+# build a list of packages to be installed nad call it in one go.
+apt_packages=()
+
+apt_packages+=('autoconf2.13')
+apt_packages+=('bluez-cups')
+apt_packages+=('build-essential')
+apt_packages+=('ca-certificates')
+apt_packages+=('ccache')
+apt_packages+=('compiz')
+apt_packages+=('curl')
+apt_packages+=('fontconfig')
+apt_packages+=('fonts-kacst')
+apt_packages+=('fonts-kacst-one')
+apt_packages+=('fonts-liberation')
+apt_packages+=('fonts-stix')
+apt_packages+=('fonts-unfonts-core')
+apt_packages+=('fonts-unfonts-extra')
+apt_packages+=('fonts-vlgothic')
+apt_packages+=('g++-multilib')
+apt_packages+=('gcc-multilib')
+apt_packages+=('gir1.2-gnomebluetooth-1.0')
+apt_packages+=('git')
+apt_packages+=('gnome-icon-theme')
+apt_packages+=('gstreamer1.0-gtk3')
+apt_packages+=('gstreamer1.0-plugins-base')
+apt_packages+=('gstreamer1.0-plugins-good')
+apt_packages+=('gstreamer1.0-tools')
+apt_packages+=('gstreamer1.0-pulseaudio')
+apt_packages+=('language-pack-en-base')
+apt_packages+=('libc6-dbg')
+apt_packages+=('libasound2-dev')
+apt_packages+=('libavcodec-extra57')
+apt_packages+=('libcanberra-gtk3-module')
+apt_packages+=('libcanberra-pulse')
+apt_packages+=('libcurl4-openssl-dev')
+apt_packages+=('libdbus-1-dev')
+apt_packages+=('libdbus-glib-1-dev')
+apt_packages+=('libfreetype6')
+apt_packages+=('libgconf2-dev')
+apt_packages+=('libgl1-mesa-dri')
+apt_packages+=('libgl1-mesa-glx')
+apt_packages+=('libgstreamer-plugins-base1.0-dev')
+apt_packages+=('libgstreamer1.0-dev')
+apt_packages+=('libgtk-3-0')
+apt_packages+=('libiw-dev')
+apt_packages+=('libx11-xcb1')
+apt_packages+=('libxcb1')
+apt_packages+=('libxcb-render0')
+apt_packages+=('libxcb-shm0')
+apt_packages+=('libxcb-glx0')
+apt_packages+=('libxcb-shape0')
+apt_packages+=('libnotify-dev')
+apt_packages+=('libpulse0')
+apt_packages+=('libpulse-dev')
+apt_packages+=('libxt-dev')
+apt_packages+=('libxxf86vm1')
+apt_packages+=('llvm')
+apt_packages+=('llvm-dev')
+apt_packages+=('llvm-runtime')
+apt_packages+=('mesa-common-dev')
+apt_packages+=('net-tools')
+apt_packages+=('pulseaudio')
+apt_packages+=('pulseaudio-module-bluetooth')
+apt_packages+=('pulseaudio-module-gconf')
+apt_packages+=('python-dev')
+apt_packages+=('python-pip')
+apt_packages+=('python3-pip')
+apt_packages+=('qemu-kvm')
+apt_packages+=('rlwrap')
+apt_packages+=('screen')
+apt_packages+=('software-properties-common')
+apt_packages+=('sudo')
+apt_packages+=('ttf-dejavu')
+apt_packages+=('ubuntu-desktop')
+apt_packages+=('unzip')
+apt_packages+=('uuid')
+apt_packages+=('wget')
+apt_packages+=('xvfb')
+apt_packages+=('xwit')
+apt_packages+=('yasm')
+apt_packages+=('zip')
+
+# xvinfo for test-linux.sh to monitor Xvfb startup
+apt_packages+=('x11-utils')
+
+# Bug 1232407 - this allows the user to start vnc
+apt_packages+=('x11vnc')
+
+# Bug 1176031 - need `xset` to disable screensavers
+apt_packages+=('x11-xserver-utils')
+
+# Build a list of packages to install from the multiverse repo.
+apt_packages+=('ubuntu-restricted-extras')
+
+# APT update takes very long on Ubuntu. Run it at the last possible minute.
+apt-get update
+
+# Also force the cleanup after installation of packages to reduce image size.
+apt-get install --allow-downgrades "${apt_packages[@]}"
+
+# Enable i386 packages
+dpkg --add-architecture i386
+apt-get update
+
+# Make sure we have libraries for 32-bit tests
+apt_packages=()
+apt_packages+=('libavcodec-extra57:i386')
+apt_packages+=('libdbus-glib-1-2:i386')
+apt_packages+=('libpulse0:i386')
+apt_packages+=('libxt6:i386')
+apt_packages+=('libxtst6:i386')
+apt_packages+=('libsecret-1-0:i386')
+apt_packages+=('libgtk-3-0:i386')
+apt_packages+=('libx11-xcb1:i386')
+apt_packages+=('libxcb1:i386')
+apt_packages+=('libasound2:i386')
+
+apt-get install --allow-downgrades "${apt_packages[@]}"
+rm -rf /var/lib/apt/lists/*
+
+# Build a list of packages to purge from the image.
+apt_packages=()
+apt_packages+=('*cheese*')
+apt_packages+=('example-content')
+apt_packages+=('git')
+apt_packages+=('gnome-calendar')
+apt_packages+=('gnome-initial-setup')
+apt_packages+=('gnome-mahjongg')
+apt_packages+=('gnome-mines')
+apt_packages+=('gnome-sudoku')
+apt_packages+=('libx11-doc')
+apt_packages+=('manpages-dev')
+apt_packages+=('orca')
+apt_packages+=('rhythmbox')
+apt_packages+=('thunderbird')
+apt_packages+=('ubuntu-release-upgrader*')
+apt_packages+=('update-manager-core')
+apt_packages+=('update-manager')
+apt_packages+=('yelp')
+
+# Purge unnecessary packages
+apt-get purge "${apt_packages[@]}"
+
+# We don't need no docs!
+rm -rf /usr/share/help /usr/share/doc /usr/share/man
+
+# Remove all locale files other than en_US.UTF-8
+rm -rf /usr/share/locale/ /usr/share/locale-langpack/ /usr/share/locales/
+
+# Further cleanup
+apt-get autoremove
+
+rm -f "$0"
diff --git a/taskcluster/docker/recipes/ubuntu1804-test-system-setup.sh b/taskcluster/docker/recipes/ubuntu1804-test-system-setup.sh
new file mode 100644
index 0000000000..e22b21f51d
--- /dev/null
+++ b/taskcluster/docker/recipes/ubuntu1804-test-system-setup.sh
@@ -0,0 +1,24 @@
+#!/usr/bin/env bash
+
+set -ve
+
+test "$(whoami)" == 'root'
+
+cd /setup
+
+# Install tooltool and node now that dependencies are in place.
+. /setup/common.sh
+. /setup/install-node.sh
+
+# Upgrade pip and install virtualenv to specified versions.
+pip install --upgrade pip==19.2.3
+hash -r
+pip install virtualenv==15.2.0
+
+pip3 install -r /setup/psutil_requirements.txt
+pip install -r /setup/psutil_requirements.txt
+
+# Cleanup
+cd /
+rm -rf /setup ~/.ccache ~/.cache ~/.npm
+rm -f "$0"
diff --git a/taskcluster/docker/recipes/xvfb.sh b/taskcluster/docker/recipes/xvfb.sh
new file mode 100644
index 0000000000..6e0e79f7d4
--- /dev/null
+++ b/taskcluster/docker/recipes/xvfb.sh
@@ -0,0 +1,75 @@
+#! /bin/bash -x
+
+set -x
+
+fail() {
+ echo # make sure error message is on a new line
+ echo "[xvfb.sh:error]" "${@}"
+ exit 1
+}
+
+cleanup_xvfb() {
+ # When you call this script with START_VNC or TASKCLUSTER_INTERACTIVE
+ # we make sure we do not kill xvfb so you do not lose your connection
+ local xvfb_pid=`pidof Xvfb`
+ local vnc=${START_VNC:-false}
+ local interactive=${TASKCLUSTER_INTERACTIVE:-false}
+ if [ -n "$xvfb_pid" ] && [[ $vnc == false ]] && [[ $interactive == false ]] ; then
+ kill $xvfb_pid || true
+ screen -XS xvfb quit || true
+ fi
+}
+
+# Attempt to start xvfb in a screen session with the given resolution and display
+# number. Up to 5 attempts will be made to start xvfb with a short delay
+# between retries
+try_xvfb() {
+ screen -dmS xvfb Xvfb :$2 -nolisten tcp -screen 0 $1 \
+ > ~/artifacts/xvfb/xvfb.log 2>&1
+ export DISPLAY=:$2
+
+ # Only error code 255 matters, because it signifies that no
+ # display could be opened. As long as we can open the display
+ # tests should work. We'll retry a few times with a sleep before
+ # failing.
+ local retry_count=0
+ local max_retries=5
+ xvfb_test=0
+ until [ $retry_count -gt $max_retries ]; do
+ xvinfo || xvfb_test=$?
+ if [ $xvfb_test != 255 ]; then
+ retry_count=$(($max_retries + 1))
+ else
+ retry_count=$(($retry_count + 1))
+ echo "Failed to start Xvfb, retry: $retry_count"
+ sleep 2
+ fi
+ done
+ if [ $xvfb_test == 255 ]; then
+ return 1
+ else
+ return 0
+ fi
+}
+
+start_xvfb() {
+ set +e
+ mkdir -p ~/artifacts/xvfb
+ local retry_count=0
+ local max_retries=2
+ local success=1
+ until [ $retry_count -gt $max_retries ]; do
+ try_xvfb $1 $2
+ success=$?
+ if [ $success -eq 0 ]; then
+ retry_count=$(($max_retries + 1))
+ else
+ retry_count=$(($retry_count + 1))
+ sleep 10
+ fi
+ done
+ set -e
+ if [ $success -eq 1 ]; then
+ fail "Could not start xvfb after ${max_retries} attempts"
+ fi
+}
diff --git a/taskcluster/docker/sentry/Dockerfile b/taskcluster/docker/sentry/Dockerfile
new file mode 100644
index 0000000000..2f606c5529
--- /dev/null
+++ b/taskcluster/docker/sentry/Dockerfile
@@ -0,0 +1,11 @@
+FROM $DOCKER_IMAGE_PARENT
+LABEL maintainer="Mitchell Hentges mhentges@mozilla.com"
+
+VOLUME /builds/worker/checkouts
+
+ADD prepare.sh /setup/prepare-docker.sh
+ADD submit_sentry_release.sh /usr/bin/submit_sentry_release.sh
+RUN /bin/bash /setup/prepare-docker.sh && rm -R /setup
+
+# Set a default command useful for debugging
+CMD ["/bin/sh", "--login"]
diff --git a/taskcluster/docker/sentry/prepare.sh b/taskcluster/docker/sentry/prepare.sh
new file mode 100755
index 0000000000..7cce3e1955
--- /dev/null
+++ b/taskcluster/docker/sentry/prepare.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+set -o errexit
+set -o nounset
+set -o xtrace
+
+apt-get -y update
+
+# Install:
+# * curl to fetch sentry-cli
+# * jq to parse hgmo pushlog
+apt-get install -y \
+ curl \
+ jq
+
+# Install sentry-cli to publish releases
+curl -L https://github.com/getsentry/sentry-cli/releases/download/1.63.1/sentry-cli-Linux-x86_64 -o /usr/bin/sentry-cli
+chmod +x /usr/bin/sentry-cli
diff --git a/taskcluster/docker/sentry/submit_sentry_release.sh b/taskcluster/docker/sentry/submit_sentry_release.sh
new file mode 100644
index 0000000000..136e06a58a
--- /dev/null
+++ b/taskcluster/docker/sentry/submit_sentry_release.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+set -o nounset
+set -o pipefail
+
+run() {
+ revisions=$(curl "$HG_PUSHLOG_URL" | jq -c -r ".pushes[].changesets | @sh" | tr -d \') || return 1
+ sentry_api_key=$(curl "http://taskcluster/secrets/v1/secret/$SENTRY_SECRET" | jq -r ".secret.sentryToken") || return 1
+ for revision in $revisions; do
+ SENTRY_AUTH_TOKEN=$sentry_api_key SENTRY_ORG=mozilla sentry-cli --url https://sentry.io/ releases --project mach new "hg-rev-$revision" || return 1
+ done
+}
+
+with_backoff() {
+ failures=0
+ while ! "$@"; do
+ failures=$(( failures + 1 ))
+ if (( failures >= 5 )); then
+ echo "[with_backoff] Unable to succeed after 5 tries, failing the job."
+ return 1
+ else
+ seconds=$(( 2 ** (failures - 1) ))
+ echo "[with_backoff] Retrying in $seconds second(s)"
+ sleep $seconds
+ fi
+ done
+}
+
+with_backoff run
diff --git a/taskcluster/docker/static-analysis-build/Dockerfile b/taskcluster/docker/static-analysis-build/Dockerfile
new file mode 100644
index 0000000000..e53ff4fa2e
--- /dev/null
+++ b/taskcluster/docker/static-analysis-build/Dockerfile
@@ -0,0 +1,61 @@
+FROM $DOCKER_IMAGE_PARENT
+LABEL maintainer="Andi-Bogdan Postelnicu <andi@mozilla.com>"
+
+VOLUME /builds/worker/checkouts
+VOLUME /builds/worker/workspace
+VOLUME /builds/worker/tooltool-cache
+
+ENV XZ_OPT=-T0
+
+ARG TASKCLUSTER_ROOT_URL
+ARG DOCKER_IMAGE_PACKAGES
+RUN /usr/local/sbin/setup_packages.sh $TASKCLUSTER_ROOT_URL $DOCKER_IMAGE_PACKAGES
+
+RUN apt-get update && \
+ apt-get install \
+ autoconf2.13 \
+ automake \
+ bison \
+ bzip2 \
+ cmake \
+ flex \
+ curl \
+ libsqlite3-dev \
+ file \
+ gawk \
+ gcc-multilib \
+ gnupg \
+ jq \
+ libc6-dev \
+ libstdc++-*-dev \
+ libmpfr-dev \
+ nasm \
+ opam \
+ patch \
+ p7zip-full \
+ procps \
+ python3-dev \
+ rsync \
+ screen \
+ tar \
+ unzip \
+ uuid \
+ valgrind \
+ wget \
+ zip \
+ zlib1g-dev \
+ x11-utils \
+ xvfb \
+ linux-libc-dev \
+ libdbus-glib-1-dev \
+ libfontconfig1-dev \
+ libfreetype6-dev \
+ libgconf2-dev \
+ libgmp-dev \
+ libgtk-3-dev \
+ libpango1.0-dev \
+ libpulse-dev \
+ libx11-xcb-dev \
+ libxt-dev \
+ lib32z1 \
+ patchelf
diff --git a/taskcluster/docker/system-symbols-linux-scraper/Dockerfile b/taskcluster/docker/system-symbols-linux-scraper/Dockerfile
new file mode 100644
index 0000000000..1b2c340ff0
--- /dev/null
+++ b/taskcluster/docker/system-symbols-linux-scraper/Dockerfile
@@ -0,0 +1,28 @@
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER Gabriele Svelto <gsvelto@mozilla.com>
+
+RUN mkdir -p /builds
+RUN id worker || useradd -d /builds/worker -s /bin/bash -m worker
+WORKDIR /builds/worker
+
+# We need to declare all potentially cache volumes as caches. Also,
+# making high I/O paths volumes increase I/O throughput because of
+# AUFS slowness.
+VOLUME /builds/worker/checkouts
+
+RUN apt-get update && \
+ apt-get install --no-install-recommends -y \
+ binutils build-essential cpio curl elfutils jq libxml2-utils \
+ python3-pip rpm2cpio squashfs-tools unzip wget zip && \
+ apt-get autoremove -y && rm -rf /var/lib/apt/lists/*
+
+COPY run.sh /builds/worker/run.sh
+
+COPY SHA256SUMS.txt /builds/worker/
+
+RUN chown -R worker:worker /builds/worker
+
+RUN pip3 install crashstats-tools==1.3.0
+
+# Set a default command useful for debugging
+CMD ["/bin/bash", "--login"]
diff --git a/taskcluster/docker/system-symbols-linux-scraper/SHA256SUMS.txt b/taskcluster/docker/system-symbols-linux-scraper/SHA256SUMS.txt
new file mode 100644
index 0000000000..46a456d21a
--- /dev/null
+++ b/taskcluster/docker/system-symbols-linux-scraper/SHA256SUMS.txt
@@ -0,0 +1,6 @@
+b4ba66e218aa6f27e19bfbc48142f86f3fddb64b6540fd5beb30bad11f73a409 arch/SHA256SUMS.zip
+6083ab8cb46a5be2a4d9bc51dce1443375f71d9536c325da39a14ba68c1de81a debian/SHA256SUMS.zip
+64003a50133900e5d01b29e37022b3029652788a0e094b67330e5e32f1bf5e12 fedora/SHA256SUMS.zip
+00e3e54788b2d7867535eb25bc9ce41541dc6299dca0a8ce8d0d4e5b49839ac3 mint/SHA256SUMS.zip
+c4d02cc24f2a50b0caea20dd5fd0cd6bc960d0a619e8a355f7fec14a766e7966 opensuse/SHA256SUMS.zip
+aed77c596f5652f4ecdc48b37aaa1c2b0b516c7e74ccc0cf183e7d7de101b6d7 ubuntu/SHA256SUMS.zip
diff --git a/taskcluster/docker/system-symbols-linux-scraper/run.sh b/taskcluster/docker/system-symbols-linux-scraper/run.sh
new file mode 100755
index 0000000000..d7837d112e
--- /dev/null
+++ b/taskcluster/docker/system-symbols-linux-scraper/run.sh
@@ -0,0 +1,80 @@
+#!/bin/bash
+
+set -ex
+
+SHA256SUMS=SHA256SUMS.zip
+
+function get_route()
+{
+ local task_url=${TASKCLUSTER_ROOT_URL}/api/queue/v1/task/${TASK_ID}
+ local payload
+ payload=$(curl -sSL "${task_url}")
+
+ local route
+ route=$(echo "${payload}" | jq -r '.routes[] | select(contains("latest")) | select(contains("pushdate") | not) ' | sed -e 's/^index\.//')
+ echo "${route}"
+}
+
+function get_sha256sum_url()
+{
+ local route
+ route=$(get_route)
+ local sha256sums_url=${TASKCLUSTER_ROOT_URL}/api/index/v1/task/${route}/artifacts/public/build/${SHA256SUMS}
+ echo "${sha256sums_url}"
+}
+
+function has_sha256sums_on_index()
+{
+ local url
+ url=$(get_sha256sum_url)
+ curl -sSL --head --fail -o /dev/null "${url}"
+}
+
+function download_verify_extract_sha256sums()
+{
+ local url=$1
+
+ if [ ! -f "/builds/worker/SHA256SUMS.txt" ]; then
+ echo "Missing checksums, aborting."
+ exit 1
+ fi
+
+ curl -sSL "${url}" -o ${SHA256SUMS}
+
+ # We verify SHA256SUMS when we bootstrap and thus download from GitHub
+ # The one downloaded from TaskCluster will have been updated by previous tasks
+ if [ -n "${BOOTSTRAP_SHA256}" ]; then
+ echo "BOOTSTRAP_SHA256 was set, ensuring consistent set of SHA256SUMS"
+ local sha_check
+ sha256sum --quiet --status -c <(grep "${DISTRO}/" /builds/worker/SHA256SUMS.txt | sed -e "s/${DISTRO}\///")
+ sha_check=$?
+ if [ ${sha_check} -ne 0 ]; then
+ echo "Checksum verification failed, aborting."
+ exit 1
+ fi
+ fi
+
+ unzip ${SHA256SUMS} && rm ${SHA256SUMS}
+}
+
+DISTRO=$1
+
+sha256=https://mozilla.github.io/symbol-scrapers/${DISTRO}/${SHA256SUMS}
+if [ -z "${BOOTSTRAP_SHA256}" ]; then
+ if has_sha256sums_on_index; then
+ sha256=$(get_sha256sum_url)
+ fi
+fi
+
+mkdir -p /builds/worker/artifacts/
+
+pushd "${MOZ_FETCHES_DIR}/symbol-scrapers/${DISTRO}"
+ download_verify_extract_sha256sums "${sha256}"
+ DUMP_SYMS=${MOZ_FETCHES_DIR}/dump_syms/dump_syms /bin/bash script.sh
+ zip -r9 /builds/worker/artifacts/${SHA256SUMS} SHA256SUMS
+ cp wget*.log /builds/worker/artifacts/
+popd
+
+if [ ! -f "/builds/worker/artifacts/target.crashreporter-symbols.zip" ]; then
+ echo "No symbols zip produced, upload task will fail"
+fi
diff --git a/taskcluster/docker/system-symbols-mac/Dockerfile b/taskcluster/docker/system-symbols-mac/Dockerfile
new file mode 100644
index 0000000000..6b4c1fbec2
--- /dev/null
+++ b/taskcluster/docker/system-symbols-mac/Dockerfile
@@ -0,0 +1,37 @@
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER Gabriele Svelto <gsvelto@mozilla.com>
+
+RUN mkdir -p /builds
+RUN id worker || useradd -d /builds/worker -s /bin/bash -m worker
+WORKDIR /builds/worker
+
+# We need to declare all potentially cache volumes as caches. Also,
+# making high I/O paths volumes increase I/O throughput because of
+# AUFS slowness.
+VOLUME /builds/worker/checkouts
+
+RUN apt-get update && \
+ apt-get install --no-install-recommends -y python3-dev python3-pip python3-requests-futures python3-setuptools curl pax build-essential libxml2-dev libssl-dev zlib1g-dev libusb-dev cmake libbz2-dev libpng-dev wget zip liblzma-dev && \
+ rm -rf /var/lib/apt/lists/*
+
+RUN mkdir /opt/data-reposado/
+RUN chown -R worker.worker /opt/data-reposado/
+
+COPY setup.sh /setup/
+COPY requirements.txt /setup/
+# %include tools/crashreporter/system-symbols/mac
+
+RUN /bin/sh /setup/setup.sh
+
+ADD https://github.com/marco-c/breakpad-mac-update-symbols/raw/21221733edfbcac49d40e50fc219fab7d17437a0/lipo /usr/local/bin/
+RUN chmod +x /usr/local/bin/lipo
+
+COPY topsrcdir/tools/crashreporter/system-symbols/mac /builds/worker/mac-update-symbols
+# %include python/mozbuild/mozpack/macpkg.py
+COPY topsrcdir/python/mozbuild/mozpack/macpkg.py /builds/worker/mac-update-symbols/mozpack/
+WORKDIR /builds/worker/mac-update-symbols
+
+RUN chown -R worker:worker /builds/worker
+
+# Set a default command useful for debugging
+CMD ["/bin/bash", "--login"]
diff --git a/taskcluster/docker/system-symbols-mac/requirements.txt b/taskcluster/docker/system-symbols-mac/requirements.txt
new file mode 100644
index 0000000000..775756115c
--- /dev/null
+++ b/taskcluster/docker/system-symbols-mac/requirements.txt
@@ -0,0 +1,2 @@
+futures
+requests
diff --git a/taskcluster/docker/system-symbols-mac/setup.sh b/taskcluster/docker/system-symbols-mac/setup.sh
new file mode 100644
index 0000000000..c0c4e766ac
--- /dev/null
+++ b/taskcluster/docker/system-symbols-mac/setup.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+set -v -e -x
+
+ncpu=-j$(grep -c ^processor /proc/cpuinfo)
+
+WORK=/setup/
+cd $WORK
+git clone --depth=1 --single-branch -b system-symbols-mac https://github.com/gabrielesvelto/libdmg-hfsplus.git
+cd libdmg-hfsplus
+cmake .
+make "$ncpu" dmg-bin hfsplus
+# `make install` installs way too much stuff
+cp dmg/dmg hfs/hfsplus /builds/worker/bin
+strip /builds/worker/bin/dmg /builds/worker/bin/hfsplus
+
+pip3 install --no-cache-dir git+https://github.com/mozilla/reposado
+
+python3 /usr/local/bin/repoutil --configure <<EOF
+/opt/data-reposado/html/
+/opt/data-reposado/metadata/
+http://example.com/
+EOF
+
+pip3 install --no-cache-dir -r /setup/requirements.txt
+
+cd /
+rm -rf /setup
diff --git a/taskcluster/docker/system-symbols-win/Dockerfile b/taskcluster/docker/system-symbols-win/Dockerfile
new file mode 100644
index 0000000000..93a91bf199
--- /dev/null
+++ b/taskcluster/docker/system-symbols-win/Dockerfile
@@ -0,0 +1,26 @@
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER Gabriele Svelto <gsvelto@mozilla.com>
+
+RUN mkdir -p /builds
+RUN id worker || useradd -d /builds/worker -s /bin/bash -m worker
+WORKDIR /builds/worker
+
+# We need to declare all potentially cache volumes as caches. Also,
+# making high I/O paths volumes increase I/O throughput because of
+# AUFS slowness.
+VOLUME /builds/worker/checkouts
+
+COPY requirements.txt /builds/worker/requirements.txt
+RUN apt-get update && \
+ apt-get install --no-install-recommends -y gcc python3-dev python3-pip python3-setuptools libffi-dev && \
+ rm -rf /var/lib/apt/lists/*
+RUN pip3 install pip==20.3.4 --upgrade
+RUN pip3 install --no-cache-dir --require-hashes -r /builds/worker/requirements.txt
+
+# %include tools/crashreporter/system-symbols/win
+COPY topsrcdir/tools/crashreporter/system-symbols/win /builds/worker
+
+RUN chown -R worker:worker /builds/worker
+
+# Set a default command useful for debugging
+CMD ["/bin/bash", "--login"]
diff --git a/taskcluster/docker/system-symbols-win/requirements.txt b/taskcluster/docker/system-symbols-win/requirements.txt
new file mode 100644
index 0000000000..d717b6efda
--- /dev/null
+++ b/taskcluster/docker/system-symbols-win/requirements.txt
@@ -0,0 +1,19 @@
+aiodns==3.0.0 --hash=sha256:2b19bc5f97e5c936638d28e665923c093d8af2bf3aa88d35c43417fa25d136a2
+aiofile==3.7.4 --hash=sha256:0e2a524e4714efda47ce8964b13d4da94cf553411f9f6da813df615a4cd73d95
+aiohttp==3.8.1 --hash=sha256:d15367ce87c8e9e09b0f989bfd72dc641bcd04ba091c68cd305312d00962addd
+aiosignal==1.2.0 --hash=sha256:26e62109036cd181df6e6ad646f91f0dcfd05fe16d0cb924138ff2ab75d64e3a
+asyncio==3.4.3 --hash=sha256:c4d18b22701821de07bd6aea8b53d21449ec0ec5680645e5317062ea21817d2d
+asynctest==0.13.0 --hash=sha256:5da6118a7e6d6b54d83a8f7197769d046922a44d2a99c21382f0a6e4fadae676
+async-timeout==4.0.2 --hash=sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c
+attrs==21.4.0 --hash=sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4
+caio==0.9.0 --hash=sha256:399de8f266ede4e87ffa1c647c8bb6859df14039354b6fcf74a47d3d756fdc41
+cffi==1.15.0 --hash=sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954
+chardet==4.0.0 --hash=sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5
+charset-normalizer==2.0.12 --hash=sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df
+frozenlist==1.3.0 --hash=sha256:acb267b09a509c1df5a4ca04140da96016f40d2ed183cdc356d237286c971b51
+idna==3.3 --hash=sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff
+multidict==6.0.2 --hash=sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013
+pycares==4.1.2 --hash=sha256:dc942692fca0e27081b7bb414bb971d34609c80df5e953f6d0c62ecc8019acd9
+pycparser==2.21 --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9
+typing_extensions==4.2.0 --hash=sha256:6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708
+yarl==1.7.2 --hash=sha256:f64394bd7ceef1237cc604b5a89bf748c95982a84bcd3c4bbeb40f685c810794
diff --git a/taskcluster/docker/toolchain-build/Dockerfile b/taskcluster/docker/toolchain-build/Dockerfile
new file mode 100644
index 0000000000..6e56172ab2
--- /dev/null
+++ b/taskcluster/docker/toolchain-build/Dockerfile
@@ -0,0 +1,62 @@
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER Mike Hommey <mhommey@mozilla.com>
+
+VOLUME /builds/worker/checkouts
+VOLUME /builds/worker/workspace
+VOLUME /builds/worker/tooltool-cache
+
+ENV XZ_OPT=-T0
+
+ARG DOCKER_IMAGE_PACKAGES
+ARG TASKCLUSTER_ROOT_URL
+RUN /usr/local/sbin/setup_packages.sh $TASKCLUSTER_ROOT_URL $DOCKER_IMAGE_PACKAGES
+
+RUN apt-get update && \
+ apt-get install \
+ autoconf \
+ autoconf2.13 \
+ automake \
+ bison \
+ build-essential \
+ cabextract \
+ curl \
+ clang-13 \
+ cmake \
+ flex \
+ gawk \
+ gcc-multilib \
+ git \
+ gnupg \
+ jq \
+ libbz2-dev \
+ libexpat1-dev \
+ libffi-dev \
+ libncursesw5-dev \
+ libsqlite3-dev \
+ libssl-dev \
+ libtool \
+ libucl-dev \
+ libxml2-dev \
+ lld-13 \
+ msitools \
+ ninja-build \
+ openssh-client \
+ p7zip-full \
+ pkg-config \
+ procps \
+ python3-distutils-extra \
+ python3-requests \
+ python3-toml \
+ scons \
+ subversion \
+ tar \
+ unzip \
+ uuid \
+ uuid-dev \
+ wget \
+ zip \
+ zlib1g-dev
+
+# mmdebstrap is not available in jessie, but we only need it in the buster-based image.
+# We also want zstd when available.
+RUN apt-get install fakechroot fakeroot mmdebstrap zstd || true
diff --git a/taskcluster/docker/ubuntu1804-base/Dockerfile b/taskcluster/docker/ubuntu1804-base/Dockerfile
new file mode 100644
index 0000000000..3a54e58180
--- /dev/null
+++ b/taskcluster/docker/ubuntu1804-base/Dockerfile
@@ -0,0 +1,70 @@
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER Mike Hommey <mhommey@mozilla.com>
+
+### Add worker user and setup its workspace.
+RUN mkdir /builds && \
+ groupadd -g 1000 worker && \
+ useradd -u 1000 -g 1000 -d /builds/worker -s /bin/bash -m worker && \
+ mkdir -p /builds/worker/workspace && \
+ chown -R worker:worker /builds
+
+# Declare default working folder
+WORKDIR /builds/worker
+
+VOLUME /builds/worker/checkouts
+VOLUME /builds/worker/workspace
+VOLUME /builds/worker/tooltool-cache
+
+# Set variable normally configured at login, by the shells parent process, these
+# are taken from GNU su manual
+ENV HOME=/builds/worker \
+ SHELL=/bin/bash \
+ USER=worker \
+ LOGNAME=worker \
+ HOSTNAME=taskcluster-worker
+
+# Set a default command useful for debugging
+CMD ["/bin/bash", "--login"]
+
+ARG TASKCLUSTER_ROOT_URL
+ARG DOCKER_IMAGE_PACKAGES
+RUN /usr/local/sbin/setup_packages.sh $TASKCLUSTER_ROOT_URL $DOCKER_IMAGE_PACKAGES && \
+ apt-get update && \
+ apt-get dist-upgrade && \
+ apt-get install \
+ git \
+ less \
+ make \
+ mercurial \
+ patch \
+ python3.7 \
+ python3.7-dev \
+ python3.7-venv \
+ python3-distutils-extra \
+ python3-minimal \
+ python3-zstandard \
+ python3-psutil \
+ python3-venv \
+ vim-tiny \
+ xz-utils \
+ zstd
+
+RUN test $(readlink /usr/bin/python3) = python3.6 && ln -sf python3.7 /usr/bin/python3
+
+# %include testing/mozharness/external_tools/robustcheckout.py
+COPY topsrcdir/testing/mozharness/external_tools/robustcheckout.py /usr/local/mercurial/robustcheckout.py
+
+# %include taskcluster/docker/recipes/hgrc
+COPY topsrcdir/taskcluster/docker/recipes/hgrc /etc/mercurial/hgrc.d/mozilla.rc
+
+# Add pip configuration, among other things.
+# %include taskcluster/docker/recipes/dot-config
+COPY topsrcdir/taskcluster/docker/recipes/dot-config /builds/worker/.config
+
+# %include taskcluster/scripts/run-task
+COPY topsrcdir/taskcluster/scripts/run-task /builds/worker/bin/run-task
+
+# %include taskcluster/scripts/misc/fetch-content
+ADD topsrcdir/taskcluster/scripts/misc/fetch-content /builds/worker/bin/fetch-content
+
+RUN chown -R worker:worker /builds/worker/bin && chmod 755 /builds/worker/bin/*
diff --git a/taskcluster/docker/ubuntu1804-test-base/Dockerfile b/taskcluster/docker/ubuntu1804-test-base/Dockerfile
new file mode 100644
index 0000000000..a8556340e5
--- /dev/null
+++ b/taskcluster/docker/ubuntu1804-test-base/Dockerfile
@@ -0,0 +1,24 @@
+# This docker image only sets up packages on top of the original Ubuntu image.
+# Everything else is setup is a child docker image derived from this one, such
+# that changes to our scripts don't trigger the rebuild of this base image,
+# possibly leading to breakage. (See bug 1503756 and bug 1678451 for examples
+# of such recent breakages)
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER Edwin Takahashi <egao@mozilla.com>
+
+ARG TASKCLUSTER_ROOT_URL
+ARG DOCKER_IMAGE_PACKAGES
+RUN /usr/local/sbin/setup_packages.sh $TASKCLUSTER_ROOT_URL $DOCKER_IMAGE_PACKAGES
+
+# %include taskcluster/docker/recipes/ubuntu1804-test-system-setup-base.sh
+ADD topsrcdir/taskcluster/docker/recipes/ubuntu1804-test-system-setup-base.sh /setup/system-setup.sh
+RUN bash /setup/system-setup.sh
+
+# gnome-keyring-daemon is configured to have the IPC_LOCK capability (to lock pages with secrets in
+# memory), but docker isn't run with that capability granted. So, if we were to try running
+# gnome-keyring-daemon without first clearing the capability, it would just exit with the message
+# "Operation not permitted". Luckily it doesn't actually require the capability.
+RUN setcap -r /usr/bin/gnome-keyring-daemon
+
+# Set a default command useful for debugging
+CMD ["/bin/bash", "--login"]
diff --git a/taskcluster/docker/ubuntu1804-test/Dockerfile b/taskcluster/docker/ubuntu1804-test/Dockerfile
new file mode 100644
index 0000000000..69385ca632
--- /dev/null
+++ b/taskcluster/docker/ubuntu1804-test/Dockerfile
@@ -0,0 +1,86 @@
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER Edwin Takahashi <egao@mozilla.com>
+
+# Create necessary directories
+RUN mkdir -p /artifacts
+
+# We need to declare all potentially cache volumes as caches. Also,
+# making high I/O paths volumes increase I/O throughput because of
+# AUFS slowness.
+VOLUME /builds/worker/.cache
+VOLUME /builds/worker/checkouts
+VOLUME /builds/worker/tooltool-cache
+VOLUME /builds/worker/workspace
+
+# In test.sh we accept START_VNC to start a vnc daemon.
+# Exposing this port allows it to work.
+EXPOSE 5900
+
+# %include python/mozbuild/mozbuild/action/tooltool.py
+ADD topsrcdir/python/mozbuild/mozbuild/action/tooltool.py /setup/tooltool.py
+
+# %include taskcluster/docker/recipes/common.sh
+ADD topsrcdir/taskcluster/docker/recipes/common.sh /setup/common.sh
+
+# %include taskcluster/docker/recipes/install-node.sh
+ADD topsrcdir/taskcluster/docker/recipes/install-node.sh /setup/install-node.sh
+
+# Add wrapper scripts for xvfb allowing tasks to easily retry starting up xvfb
+# %include taskcluster/docker/recipes/xvfb.sh
+ADD topsrcdir/taskcluster/docker/recipes/xvfb.sh /builds/worker/scripts/xvfb.sh
+
+ADD topsrcdir/python/mozbuild/mozbuild/action/tooltool.py /builds/worker/scripts/tooltool.py
+
+# %include build/psutil_requirements.txt
+ADD topsrcdir/build/psutil_requirements.txt /setup/psutil_requirements.txt
+# %include taskcluster/docker/recipes/ubuntu1804-test-system-setup.sh
+ADD topsrcdir/taskcluster/docker/recipes/ubuntu1804-test-system-setup.sh /setup/system-setup.sh
+RUN bash /setup/system-setup.sh
+
+# %include taskcluster/scripts/tester/test-linux.sh
+ADD topsrcdir/taskcluster/scripts/tester/test-linux.sh /builds/worker/bin/test-linux.sh
+
+# Set variable normally configured at login, by the shells parent process, these
+# are taken from GNU su manual
+ENV LANG en_US.UTF-8
+ENV LC_ALL en_US.UTF-8
+ENV PATH $PATH:/builds/worker/bin
+
+# This helps not forgetting setting DISPLAY=:0 when running
+# tests outside of test.sh
+ENV DISPLAY :0
+
+# Add utilities and configuration
+COPY dot-files/config /builds/worker/.config
+
+# Disable apport (app crash reporter) to avoid stealing focus from test runs
+ADD apport /etc/default/apport
+
+# Disable font antialiasing for now to match releng's setup
+ADD fonts.conf /builds/worker/.fonts.conf
+
+# Bug 1345105 - Do not run periodical update checks and downloads
+ADD autostart/gnome-software-service.desktop /etc/xdg/autostart/
+
+# allow the worker user to access video devices
+RUN usermod -a -G video worker
+
+# Set execution and ownership privileges
+RUN chmod +x bin/*; chown -R worker:worker /builds/worker
+
+# Set up first-run experience for interactive mode
+ADD motd /etc/taskcluster-motd
+ADD taskcluster-interactive-shell /bin/taskcluster-interactive-shell
+RUN chmod +x /bin/taskcluster-interactive-shell
+
+# Bug 1638183 - increase xserver maximum client count
+COPY dot-files/config/xorg/99-serverflags.conf /usr/share/X11/xorg.conf.d/
+
+# Ubuntu 18.04 (or any other GNOME3 based systems) needs dbus to have various
+# test function as expected. Use entrypoint to initialize dbus as root.
+COPY dbus.sh /usr/local/bin/dbus.sh
+RUN chmod +x /usr/local/bin/dbus.sh
+ENTRYPOINT ["/usr/local/bin/dbus.sh"]
+
+# Set a default command useful for debugging
+CMD ["/bin/bash", "--login"]
diff --git a/taskcluster/docker/ubuntu1804-test/apport b/taskcluster/docker/ubuntu1804-test/apport
new file mode 100644
index 0000000000..42e5f8d3a1
--- /dev/null
+++ b/taskcluster/docker/ubuntu1804-test/apport
@@ -0,0 +1 @@
+enabled=0
diff --git a/taskcluster/docker/ubuntu1804-test/autostart/deja-dup-monitor.desktop b/taskcluster/docker/ubuntu1804-test/autostart/deja-dup-monitor.desktop
new file mode 100644
index 0000000000..c3b8a4c676
--- /dev/null
+++ b/taskcluster/docker/ubuntu1804-test/autostart/deja-dup-monitor.desktop
@@ -0,0 +1,19 @@
+[Desktop Entry]
+Version=1.0
+X-Ubuntu-Gettext-Domain=deja-dup
+
+Name=Backup Monitor
+Comment=Schedules backups at regular intervals
+
+Icon=deja-dup
+TryExec=/usr/lib/deja-dup/deja-dup/deja-dup-monitor
+Exec=/usr/lib/deja-dup/deja-dup/deja-dup-monitor
+
+# Bug 984944/1240084 - It prevents taking screenshots
+X-GNOME-Autostart-Delay=false
+
+StartupNotify=false
+NoDisplay=true
+
+Type=Application
+Categories=System;Utility;Archiving;
diff --git a/taskcluster/docker/ubuntu1804-test/autostart/gnome-software-service.desktop b/taskcluster/docker/ubuntu1804-test/autostart/gnome-software-service.desktop
new file mode 100644
index 0000000000..b563cc306b
--- /dev/null
+++ b/taskcluster/docker/ubuntu1804-test/autostart/gnome-software-service.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Type=Application
+Name=GNOME Software
+Exec=/usr/bin/gnome-software --gapplication-service
+OnlyShowIn=GNOME;Unity;
+X-Ubuntu-Gettext-Domain=gnome-software
+
+# Bug 1345105 - Do not run periodical update checks and downloads
+X-GNOME-Autostart-enabled=false
diff --git a/taskcluster/docker/ubuntu1804-test/dbus.sh b/taskcluster/docker/ubuntu1804-test/dbus.sh
new file mode 100644
index 0000000000..f27ec664f1
--- /dev/null
+++ b/taskcluster/docker/ubuntu1804-test/dbus.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+set -e
+
+/etc/init.d/dbus start 2>&1
+
+exec "${@}"
diff --git a/taskcluster/docker/ubuntu1804-test/dot-files/config/user-dirs.dirs b/taskcluster/docker/ubuntu1804-test/dot-files/config/user-dirs.dirs
new file mode 100644
index 0000000000..2db2718d24
--- /dev/null
+++ b/taskcluster/docker/ubuntu1804-test/dot-files/config/user-dirs.dirs
@@ -0,0 +1,15 @@
+# This file is written by xdg-user-dirs-update
+# If you want to change or add directories, just edit the line you're
+# interested in. All local changes will be retained on the next run
+# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
+# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
+# absolute path. No other format is supported.
+
+XDG_DESKTOP_DIR="$HOME/Desktop"
+XDG_DOWNLOAD_DIR="$HOME/Downloads"
+XDG_TEMPLATES_DIR="$HOME/Templates"
+XDG_PUBLICSHARE_DIR="$HOME/Public"
+XDG_DOCUMENTS_DIR="$HOME/Documents"
+XDG_MUSIC_DIR="$HOME/Music"
+XDG_PICTURES_DIR="$HOME/Pictures"
+XDG_VIDEOS_DIR="$HOME/Videos"
diff --git a/taskcluster/docker/ubuntu1804-test/dot-files/config/user-dirs.locale b/taskcluster/docker/ubuntu1804-test/dot-files/config/user-dirs.locale
new file mode 100644
index 0000000000..7741b83a3e
--- /dev/null
+++ b/taskcluster/docker/ubuntu1804-test/dot-files/config/user-dirs.locale
@@ -0,0 +1 @@
+en_US
diff --git a/taskcluster/docker/ubuntu1804-test/dot-files/config/xorg/99-serverflags.conf b/taskcluster/docker/ubuntu1804-test/dot-files/config/xorg/99-serverflags.conf
new file mode 100644
index 0000000000..4c335f44e3
--- /dev/null
+++ b/taskcluster/docker/ubuntu1804-test/dot-files/config/xorg/99-serverflags.conf
@@ -0,0 +1,3 @@
+Section "ServerFlags"
+ Option "MaxClients" "2048"
+EndSection \ No newline at end of file
diff --git a/taskcluster/docker/ubuntu1804-test/dot-files/pulse/client.conf b/taskcluster/docker/ubuntu1804-test/dot-files/pulse/client.conf
new file mode 100644
index 0000000000..4b2dab2a66
--- /dev/null
+++ b/taskcluster/docker/ubuntu1804-test/dot-files/pulse/client.conf
@@ -0,0 +1 @@
+autospawn = no \ No newline at end of file
diff --git a/taskcluster/docker/ubuntu1804-test/fonts.conf b/taskcluster/docker/ubuntu1804-test/fonts.conf
new file mode 100644
index 0000000000..9784fcc981
--- /dev/null
+++ b/taskcluster/docker/ubuntu1804-test/fonts.conf
@@ -0,0 +1,5 @@
+<match target="font">
+ <edit name="antialias" mode="assign">
+ <bool>false</bool>
+ </edit>
+</match>
diff --git a/taskcluster/docker/ubuntu1804-test/motd b/taskcluster/docker/ubuntu1804-test/motd
new file mode 100644
index 0000000000..f958393cd8
--- /dev/null
+++ b/taskcluster/docker/ubuntu1804-test/motd
@@ -0,0 +1,6 @@
+Welcome to your taskcluster interactive shell! The regularly scheduled task
+has been paused to give you a chance to set up your debugging environment.
+
+For your convenience, the exact mozharness command needed for this task can
+be invoked using the 'run-mozharness' command.
+
diff --git a/taskcluster/docker/ubuntu1804-test/taskcluster-interactive-shell b/taskcluster/docker/ubuntu1804-test/taskcluster-interactive-shell
new file mode 100644
index 0000000000..c782c0ea96
--- /dev/null
+++ b/taskcluster/docker/ubuntu1804-test/taskcluster-interactive-shell
@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+
+download() {
+ name=`basename $1`
+ url=${GECKO_HEAD_REPOSITORY}/raw-file/${GECKO_HEAD_REV}/$1
+ if ! curl --fail --silent -o ./$name --retry 10 $url; then
+ fail "failed downloading $1 from ${GECKO_HEAD_REPOSITORY}"
+ fi
+}
+
+cd $HOME/bin;
+download taskcluster/scripts/tester/run-wizard;
+chmod +x run-wizard;
+./run-wizard;
+
+SPAWN="$SHELL";
+if [ "$SHELL" = "bash" ]; then
+ SPAWN="bash -li";
+fi;
+
+cd $HOME;
+exec $SPAWN;
diff --git a/taskcluster/docker/update-verify/Dockerfile b/taskcluster/docker/update-verify/Dockerfile
new file mode 100644
index 0000000000..5cddeac1f0
--- /dev/null
+++ b/taskcluster/docker/update-verify/Dockerfile
@@ -0,0 +1,32 @@
+# This is an LTS! We should upgrade after the next LTS is released, unless
+# we've switched to the in-tree debian base images by then.
+FROM $DOCKER_IMAGE_PARENT
+
+MAINTAINER release@mozilla.com
+
+# We do want to install recommended packages.
+RUN sed -i /APT::Install-Recommends/d /etc/apt/apt.conf.d/99taskcluster
+
+RUN dpkg --add-architecture i386 && apt-get -q update \
+ # p7zip-full is for extracting Windows and OS X packages
+ # wget is for downloading update.xml, installers, and MARs
+ # libgtk-3-0 is required to run the Firefox updater
+ && apt-get -q --yes install p7zip-full wget libgtk-3-0 libgtk-3.0:i386 python3-cairo
+
+VOLUME /builds/worker/.cache
+VOLUME /builds/worker/checkouts
+
+RUN mkdir /build
+ADD system-setup.sh /tmp/system-setup.sh
+RUN bash /tmp/system-setup.sh
+
+RUN chown -R worker:worker /builds/worker/bin && chmod 755 /builds/worker/bin/*
+ENV PATH $PATH:/builds/worker/bin
+
+# Set variable normally configured at login, by the shells parent process, these
+# are taken from GNU su manual
+ENV LANG en_US.UTF-8
+ENV LC_ALL en_US.UTF-8
+
+# Set a default command useful for debugging
+CMD ["/bin/bash", "--login"]
diff --git a/taskcluster/docker/update-verify/system-setup.sh b/taskcluster/docker/update-verify/system-setup.sh
new file mode 100644
index 0000000000..8a55f255f8
--- /dev/null
+++ b/taskcluster/docker/update-verify/system-setup.sh
@@ -0,0 +1,29 @@
+#!/usr/bin/env bash
+
+set -ve
+
+test "$(whoami)" == 'root'
+
+mkdir -p /setup
+cd /setup
+
+apt_packages=()
+apt_packages+=('curl')
+apt_packages+=('locales')
+apt_packages+=('python3-pip')
+apt_packages+=('python3-aiohttp')
+apt_packages+=('shellcheck')
+apt_packages+=('sudo')
+
+apt-get update
+apt-get install "${apt_packages[@]}"
+
+# Without this we get spurious "LC_ALL: cannot change locale (en_US.UTF-8)" errors,
+# and python scripts raise UnicodeEncodeError when trying to print unicode characters.
+locale-gen en_US.UTF-8
+dpkg-reconfigure locales
+
+su -c 'git config --global user.email "worker@mozilla.test"' worker
+su -c 'git config --global user.name "worker"' worker
+
+rm -rf /setup
diff --git a/taskcluster/docker/updatebot/Dockerfile b/taskcluster/docker/updatebot/Dockerfile
new file mode 100644
index 0000000000..a58c9c07a8
--- /dev/null
+++ b/taskcluster/docker/updatebot/Dockerfile
@@ -0,0 +1,24 @@
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER Tom Ritter <tom@mozilla.com>
+
+VOLUME /builds/worker/checkouts
+
+# %include taskcluster/docker/recipes/install-node.sh
+ADD topsrcdir/taskcluster/docker/recipes/install-node.sh /setup/install-node.sh
+
+COPY privileged-setup.sh /setup/privileged-setup.sh
+COPY updatebot-version.sh /setup/updatebot-version.sh
+COPY setup.sh /builds/worker/setup.sh
+COPY run.py /builds/worker/run.py
+COPY hgrc /etc/mercurial/hgrc.d/updatebot.rc
+
+RUN cd /setup && ./privileged-setup.sh
+
+ENV HOME /builds/worker
+ENV SHELL /bin/bash
+ENV USER worker
+ENV LOGNAME worker
+ENV PYTHONUNBUFFERED 1
+ENV PATH "/builds/worker/go/bin:/builds/worker/fetches/rustc/bin:/builds/worker/fetches/cargo-vet:${PATH}"
+
+RUN cd /builds/worker && ./setup.sh
diff --git a/taskcluster/docker/updatebot/VERSION b/taskcluster/docker/updatebot/VERSION
new file mode 100644
index 0000000000..56a6051ca2
--- /dev/null
+++ b/taskcluster/docker/updatebot/VERSION
@@ -0,0 +1 @@
+1 \ No newline at end of file
diff --git a/taskcluster/docker/updatebot/arcanist_patch_size.patch b/taskcluster/docker/updatebot/arcanist_patch_size.patch
new file mode 100644
index 0000000000..7540c76fbd
--- /dev/null
+++ b/taskcluster/docker/updatebot/arcanist_patch_size.patch
@@ -0,0 +1,13 @@
+diff --git a/src/workflow/ArcanistDiffWorkflow.php b/src/workflow/ArcanistDiffWorkflow.php
+index 38aa4b62..c9b7e215 100644
+--- a/src/workflow/ArcanistDiffWorkflow.php
++++ b/src/workflow/ArcanistDiffWorkflow.php
+@@ -899,7 +899,7 @@ EOTEXT
+ throw new Exception(pht('Repository API is not supported.'));
+ }
+
+- $limit = 1024 * 1024 * 4;
++ $limit = 1024 * 1024 * 12;
+ foreach ($changes as $change) {
+ $size = 0;
+ foreach ($change->getHunks() as $hunk) {
diff --git a/taskcluster/docker/updatebot/arcanist_windows_stream.patch b/taskcluster/docker/updatebot/arcanist_windows_stream.patch
new file mode 100644
index 0000000000..953fbdce85
--- /dev/null
+++ b/taskcluster/docker/updatebot/arcanist_windows_stream.patch
@@ -0,0 +1,19 @@
+diff --git a/src/channel/PhutilSocketChannel.php b/src/channel/PhutilSocketChannel.php
+index 4bd2a47a..2ad3fd85 100644
+--- a/src/channel/PhutilSocketChannel.php
++++ b/src/channel/PhutilSocketChannel.php
+@@ -46,9 +46,11 @@ final class PhutilSocketChannel extends PhutilChannel {
+ if (!$socket) {
+ continue;
+ }
+- $ok = stream_set_blocking($socket, false);
+- if (!$ok) {
+- throw new Exception(pht('Failed to set socket nonblocking!'));
++ if (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') {
++ $ok = stream_set_blocking($socket, false);
++ if (!$ok) {
++ throw new Exception(pht('Failed to set socket nonblocking!'));
++ }
+ }
+ }
+
diff --git a/taskcluster/docker/updatebot/hgrc b/taskcluster/docker/updatebot/hgrc
new file mode 100644
index 0000000000..7d1db24ae0
--- /dev/null
+++ b/taskcluster/docker/updatebot/hgrc
@@ -0,0 +1,7 @@
+[ui]
+ssh = ssh -i $HOME/id_rsa -l updatebot@mozilla.com -o UserKnownHostsFile=$HOME/ssh_known_hosts
+username = Updatebot <updatebot@mozilla.com>
+
+[extensions]
+strip =
+push-to-try = $HOME/.mozbuild/version-control-tools/hgext/push-to-try \ No newline at end of file
diff --git a/taskcluster/docker/updatebot/moz.build b/taskcluster/docker/updatebot/moz.build
new file mode 100644
index 0000000000..315dc32600
--- /dev/null
+++ b/taskcluster/docker/updatebot/moz.build
@@ -0,0 +1,8 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+with Files("**"):
+ BUG_COMPONENT = ("Developer Infrastructure", "Mach Vendor & Updatebot")
diff --git a/taskcluster/docker/updatebot/privileged-setup.sh b/taskcluster/docker/updatebot/privileged-setup.sh
new file mode 100755
index 0000000000..640b0826e2
--- /dev/null
+++ b/taskcluster/docker/updatebot/privileged-setup.sh
@@ -0,0 +1,82 @@
+#!/bin/bash
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+set -vex
+
+. ./updatebot-version.sh # Get UPDATEBOT_REVISION
+
+# If you edit this, be sure to edit fetch/updatebot.yml
+export SQLPROXY_REVISION=fb1939ab92846761595833361c6b0b0ecd543861
+
+export DEBIAN_FRONTEND=noninteractive
+
+# Update apt-get lists
+apt-get update -y
+
+# Install dependencies
+apt-get install -y --no-install-recommends \
+ arcanist \
+ ca-certificates \
+ curl \
+ ed \
+ golang-go \
+ gcc \
+ libc6-dev \
+ python3-minimal \
+ python3-wheel \
+ python3-pip \
+ python3-venv \
+ python3-requests \
+ python3-requests-unixsocket \
+ python3-setuptools \
+ openssh-client \
+ rsync \
+ wget
+
+mkdir -p /builds/worker/.mozbuild
+chown -R worker:worker /builds/worker/
+export GOPATH=/builds/worker/go
+
+# nodejs 16 for pdfjs
+. install-node.sh
+
+# pdf.js setup
+# We want to aviod downloading a ton of packages all the time, so
+# we will preload the pdf.js repo (and packages) in the Docker image
+# and only update it at runtime. This means that the `./mach vendor`
+# behavior for pdf.js will also be kind of custom
+npm install -g gulp-cli
+cd /builds/worker/
+git clone https://github.com/mozilla/pdf.js.git
+cd /builds/worker/pdf.js
+npm ci --legacy-peer-deps
+
+# seed a v8 repository because it's large, and doing an update will
+# be much faster than a new clone each time.
+cd /builds/worker/
+git clone https://github.com/v8/v8.git
+
+# Build Google's Cloud SQL Proxy from source
+cd /builds/worker/
+mkdir cloud_sql_proxy
+cd cloud_sql_proxy
+go mod init cloud_sql_proxy
+go get github.com/GoogleCloudPlatform/cloudsql-proxy/cmd/cloud_sql_proxy@$SQLPROXY_REVISION
+
+# Check out source code
+cd /builds/worker/
+git clone https://github.com/mozilla-services/updatebot.git
+cd updatebot
+git checkout "$UPDATEBOT_REVISION"
+
+# Set up dependencies
+cd /builds/worker/
+chown -R worker:worker .
+chown -R worker:worker .*
+
+python3 -m pip install -U pip
+python3 -m pip install poetry==1.2.2
+
+rm -rf /setup
diff --git a/taskcluster/docker/updatebot/run.py b/taskcluster/docker/updatebot/run.py
new file mode 100755
index 0000000000..ad9bcb8788
--- /dev/null
+++ b/taskcluster/docker/updatebot/run.py
@@ -0,0 +1,223 @@
+#!/usr/bin/env python3
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, # You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import sys
+
+sys.path.append("/builds/worker/checkouts/gecko/third_party/python")
+sys.path.append(".")
+
+import base64
+import os
+import platform
+import signal
+import stat
+import subprocess
+
+import requests
+
+import taskcluster
+
+# Bump this number when you need to cause a commit for the job to re-run: 21
+
+if len(sys.argv) < 3:
+ print("Usage:", sys.argv[0], "gecko-dev-path updatebot-path [moz-fetches-dir]")
+ sys.exit(1)
+
+GECKO_DEV_PATH = sys.argv[1].replace("/", os.path.sep)
+UPDATEBOT_PATH = sys.argv[2].replace("/", os.path.sep)
+
+# Only needed on Windows
+if len(sys.argv) > 3:
+ FETCHES_PATH = sys.argv[3].replace("/", os.path.sep)
+else:
+ FETCHES_PATH = None
+
+HOME_PATH = os.path.expanduser("~")
+
+OPERATING_MODE = (
+ "prod"
+ if os.environ.get("GECKO_HEAD_REPOSITORY", "")
+ == "https://hg.mozilla.org/mozilla-central"
+ else "dev"
+)
+
+DEV_PHAB_URL = "https://phabricator-dev.allizom.org/"
+PROD_PHAB_URL = "https://phabricator.services.mozilla.com/"
+
+phabricator_url = DEV_PHAB_URL if OPERATING_MODE == "dev" else PROD_PHAB_URL
+
+
+def log(*args):
+ print(*args)
+
+
+def get_secret(name):
+ secret = None
+ if "TASK_ID" in os.environ:
+ secrets_url = (
+ "http://taskcluster/secrets/v1/secret/project/updatebot/"
+ + ("3" if OPERATING_MODE == "prod" else "2")
+ + "/"
+ + name
+ )
+ res = requests.get(secrets_url)
+ res.raise_for_status()
+ secret = res.json()
+ else:
+ secrets = taskcluster.Secrets(taskcluster.optionsFromEnvironment())
+ secret = secrets.get("project/updatebot/" + OPERATING_MODE + "/" + name)
+ secret = secret["secret"] if "secret" in secret else None
+ secret = secret["value"] if "value" in secret else None
+ return secret
+
+
+# Get TC Secrets =======================================
+log("Operating mode is ", OPERATING_MODE)
+log("Getting secrets...")
+bugzilla_api_key = get_secret("bugzilla-api-key")
+phabricator_token = get_secret("phabricator-token")
+try_sshkey = get_secret("try-sshkey")
+database_config = get_secret("database-password")
+sentry_url = get_secret("sentry-url")
+sql_proxy_config = get_secret("sql-proxy-config")
+
+# Update Updatebot =======================================
+if OPERATING_MODE == "dev":
+ """
+ If we are in development mode, we will update from github.
+ (This command will probably only work if we checkout a branch FWIW.)
+
+ This allows us to iterate faster by committing to github and
+ re-running the cron job on Taskcluster, without rebuilding the
+ Docker image.
+
+ However, this mechanism is bypassing the security feature we
+ have in-tree, where upstream out-of-tree code is fixed at a known
+ revision and cannot be changed without a commit to m-c.
+
+ Therefore, we only do this in dev mode when running on try.
+ """
+
+ os.chdir(UPDATEBOT_PATH)
+ log("Performing git repo update...")
+ command = ["git", "symbolic-ref", "-q", "HEAD"]
+
+ r = subprocess.run(command)
+ if r.returncode == 0:
+ # This indicates we are on a branch, and not a specific revision
+ subprocess.check_call(["git", "pull", "origin"])
+
+# Set Up SSH & Phabricator ==============================
+os.chdir(HOME_PATH)
+log("Setting up ssh and phab keys...")
+with open("id_rsa", "w") as sshkey:
+ sshkey.write(try_sshkey)
+os.chmod("id_rsa", stat.S_IRUSR | stat.S_IWUSR)
+
+arc_filename = ".arcrc"
+if platform.system() == "Windows":
+ arc_path = os.path.join(FETCHES_PATH, "..", "AppData", "Roaming")
+ os.makedirs(arc_path, exist_ok=True)
+ os.chdir(arc_path)
+ log("Writing %s to %s" % (arc_filename, arc_path))
+else:
+ os.chdir(HOME_PATH)
+
+arcrc = open(arc_filename, "w")
+towrite = """
+{
+ "hosts": {
+ "PHAB_URL_HERE": {
+ "token": "TOKENHERE"
+ }
+ }
+}
+""".replace(
+ "TOKENHERE", phabricator_token
+).replace(
+ "PHAB_URL_HERE", phabricator_url + "api/"
+)
+arcrc.write(towrite)
+arcrc.close()
+os.chmod(arc_filename, stat.S_IRUSR | stat.S_IWUSR)
+
+# Set up the Cloud SQL Proxy =============================
+os.chdir(HOME_PATH)
+log("Setting up cloud_sql_proxy...")
+with open("sql-proxy-key", "w") as proxy_key_file:
+ proxy_key_file.write(
+ base64.b64decode(sql_proxy_config["key-value"]).decode("utf-8")
+ )
+
+instance_name = sql_proxy_config["instance-name"]
+if platform.system() == "Linux":
+ sql_proxy_command = "/builds/worker/go/bin/cloud_sql_proxy"
+else:
+ sql_proxy_command = os.path.join(UPDATEBOT_PATH, "..", "cloud_sql_proxy.exe")
+
+sql_proxy_command += (
+ " -instances=" + instance_name + "=tcp:3306 -credential_file=sql-proxy-key"
+)
+sql_proxy_args = {
+ "stdout": subprocess.PIPE,
+ "stderr": subprocess.PIPE,
+ "shell": True,
+ "start_new_session": True,
+}
+
+if platform.system() == "Windows":
+ si = subprocess.STARTUPINFO()
+ si.dwFlags = subprocess.CREATE_NEW_PROCESS_GROUP
+
+ sql_proxy_args["startupinfo"] = si
+
+sql_proxy = subprocess.Popen((sql_proxy_command), **sql_proxy_args)
+
+try:
+ (stdout, stderr) = sql_proxy.communicate(input=None, timeout=2)
+ log("sql proxy stdout:", stdout.decode("utf-8"))
+ log("sql proxy stderr:", stderr.decode("utf-8"))
+except subprocess.TimeoutExpired:
+ log("no sqlproxy output in 2 seconds, this means it probably didn't error.")
+ log("sqlproxy pid:", sql_proxy.pid)
+
+database_config["host"] = "127.0.0.1"
+
+# Vendor =================================================
+log("Getting Updatebot ready...")
+os.chdir(UPDATEBOT_PATH)
+localconfig = {
+ "General": {
+ "env": OPERATING_MODE,
+ "gecko-path": GECKO_DEV_PATH,
+ },
+ "Logging": {
+ "local": True,
+ "sentry": True,
+ "sentry_config": {"url": sentry_url, "debug": False},
+ },
+ "Database": database_config,
+ "Bugzilla": {
+ "apikey": bugzilla_api_key,
+ },
+ "Taskcluster": {
+ "url_treeherder": "https://treeherder.mozilla.org/",
+ "url_taskcluster": "http://taskcluster/",
+ },
+}
+
+log("Writing local config file")
+config = open("localconfig.py", "w")
+config.write("localconfig = " + str(localconfig))
+config.close()
+
+log("Running updatebot")
+# On Windows, Updatebot is run by windows-setup.sh
+if platform.system() == "Linux":
+ subprocess.check_call(["python3", "-m", "poetry", "run", "./automation.py"])
+
+ # Clean up ===============================================
+ log("Killing cloud_sql_proxy")
+ os.kill(sql_proxy.pid, signal.SIGTERM)
diff --git a/taskcluster/docker/updatebot/setup.sh b/taskcluster/docker/updatebot/setup.sh
new file mode 100755
index 0000000000..e7c6fe03e0
--- /dev/null
+++ b/taskcluster/docker/updatebot/setup.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+set -vex
+
+# Copy the system known_hosts to the home directory so we have uniformity with Windows
+# and the ssh command will find them in the same place.
+cp /etc/ssh/ssh_known_hosts "$HOME/ssh_known_hosts"
+
+# If poetry is not run as worker, then it won't work when run as user later.
+cd /builds/worker/updatebot
+/usr/local/bin/poetry install --no-ansi
diff --git a/taskcluster/docker/updatebot/updatebot-version.sh b/taskcluster/docker/updatebot/updatebot-version.sh
new file mode 100644
index 0000000000..2dd61412ce
--- /dev/null
+++ b/taskcluster/docker/updatebot/updatebot-version.sh
@@ -0,0 +1,2 @@
+export UPDATEBOT_REVISION=dee7a25bb71daf3356d146ab9582720d4a490264
+
diff --git a/taskcluster/docker/updatebot/windows-php.ini b/taskcluster/docker/updatebot/windows-php.ini
new file mode 100644
index 0000000000..8ccaa05ce4
--- /dev/null
+++ b/taskcluster/docker/updatebot/windows-php.ini
@@ -0,0 +1,130 @@
+[PHP]
+
+engine = On
+short_open_tag = Off
+precision = 14
+output_buffering = 4096
+zlib.output_compression = Off
+implicit_flush = Off
+unserialize_callback_func =
+serialize_precision = -1
+disable_functions =
+disable_classes =
+zend.enable_gc = On
+zend.exception_ignore_args = Off
+expose_php = On
+max_execution_time = 30
+max_input_time = 60
+memory_limit = 128M
+error_reporting = E_ALL
+display_errors = On
+display_startup_errors = On
+log_errors = On
+log_errors_max_len = 1024
+ignore_repeated_errors = Off
+ignore_repeated_source = Off
+report_memleaks = On
+variables_order = "GPCS"
+request_order = "GP"
+register_argc_argv = Off
+auto_globals_jit = On
+post_max_size = 8M
+auto_prepend_file =
+auto_append_file =
+default_mimetype = "text/html"
+default_charset = "UTF-8"
+doc_root =
+user_dir =
+extension_dir = "ext"
+enable_dl = Off
+file_uploads = On
+upload_max_filesize = 2M
+max_file_uploads = 20
+allow_url_fopen = On
+allow_url_include = Off
+default_socket_timeout = 60
+extension=curl
+
+[CLI Server]
+cli_server.color = On
+
+[Pdo_mysql]
+pdo_mysql.default_socket=
+
+[mail function]
+SMTP = localhost
+smtp_port = 25
+mail.add_x_header = Off
+
+[ODBC]
+odbc.allow_persistent = On
+odbc.check_persistent = On
+odbc.max_persistent = -1
+odbc.max_links = -1
+odbc.defaultlrl = 4096
+odbc.defaultbinmode = 1
+
+[MySQLi]
+mysqli.max_persistent = -1
+mysqli.allow_persistent = On
+mysqli.max_links = -1
+mysqli.default_port = 3306
+mysqli.default_socket =
+mysqli.default_host =
+mysqli.default_user =
+mysqli.default_pw =
+mysqli.reconnect = Off
+
+[mysqlnd]
+mysqlnd.collect_statistics = On
+mysqlnd.collect_memory_statistics = On
+
+[PostgreSQL]
+pgsql.allow_persistent = On
+pgsql.auto_reset_persistent = Off
+pgsql.max_persistent = -1
+pgsql.max_links = -1
+pgsql.ignore_notice = 0
+pgsql.log_notice = 0
+
+[bcmath]
+bcmath.scale = 0
+
+[Session]
+session.save_handler = files
+session.use_strict_mode = 0
+session.use_cookies = 1
+session.use_only_cookies = 1
+session.name = PHPSESSID
+session.auto_start = 0
+session.cookie_lifetime = 0
+session.cookie_path = /
+session.cookie_domain =
+session.cookie_httponly =
+session.cookie_samesite =
+session.serialize_handler = php
+session.gc_probability = 1
+session.gc_divisor = 1000
+session.gc_maxlifetime = 1440
+session.referer_check =
+session.cache_limiter = nocache
+session.cache_expire = 180
+session.use_trans_sid = 0
+session.sid_length = 26
+session.trans_sid_tags = "a=href,area=href,frame=src,form="
+session.sid_bits_per_character = 5
+
+[Assertion]
+zend.assertions = 1
+
+[Tidy]
+tidy.clean_output = Off
+
+[soap]
+soap.wsdl_cache_enabled=1
+soap.wsdl_cache_dir="/tmp"
+soap.wsdl_cache_ttl=86400
+soap.wsdl_cache_limit = 5
+
+[ldap]
+ldap.max_links = -1
diff --git a/taskcluster/docker/updatebot/windows-setup.sh b/taskcluster/docker/updatebot/windows-setup.sh
new file mode 100644
index 0000000000..c04d0a6fbf
--- /dev/null
+++ b/taskcluster/docker/updatebot/windows-setup.sh
@@ -0,0 +1,135 @@
+#!/bin/bash
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+set -vex
+
+. ./taskcluster/docker/updatebot/updatebot-version.sh # Get UPDATEBOT_REVISION
+
+HOME=$(python3 -c "import os;print(os.path.expanduser('~'))")
+export HOME
+GECKO_PATH="$PWD"
+UPDATEBOT_PATH="$MOZ_FETCHES_DIR/updatebot"
+
+# MOZ_FETCHES_DIR is in Z:/ format. When we update the PATH we need to use
+# /z/ format. Fortunately, we can translate them like so:
+cd "$MOZ_FETCHES_DIR"
+MOZ_FETCHES_PATH="$PWD"
+
+#########################################################
+# Install dependencies
+
+# Move depot_tools
+cd "$MOZ_FETCHES_DIR"
+mv depot_tools.git depot_tools
+
+
+# Generating a new version of the preloaded depot_tools download can be done by:
+# 1) Running the task, uncommenting the variable assignment below, uncommenting the
+# _GENERATE_DEPOT_TOOLS_BINARIES_ section in taskcluster/ci/updatebot/kind.yml,
+# and ensuring that an angle update will actually take place (so it downloads the depot_tools)
+# 2) Downloading and sanity-checking the depot_tools-preloaded-binaries-GIT_HASH-DATE.zip artifact
+# 3) Adding it to tooltool
+# 4) Updating the updatebot manifest
+# Note that even for the same git revision the downloaded tools can change, so they are tagged
+# with both the git hash and the date it was generated
+
+# export GENERATE_DEPOT_TOOLS_BINARIES=1
+
+if test -n "$GENERATE_DEPOT_TOOLS_BINARIES"; then
+ cp -r depot_tools depot_tools-from-git
+fi
+
+# Git is at /c/Program Files/Git/cmd/git.exe
+# It's in PATH for this script (confusingly) but not in PATH so we need to add it
+export PATH="/c/Program Files/Git/cmd:$PATH"
+
+# php & arcanist
+if [ -n "$TOOLTOOL_MANIFEST" ]; then
+ . "$GECKO_PATH/taskcluster/scripts/misc/tooltool-download.sh"
+fi
+
+cp "$MOZ_FETCHES_DIR/vcruntime140.dll" "$MOZ_FETCHES_DIR/php-win"
+cp "$GECKO_PATH/taskcluster/docker/updatebot/windows-php.ini" "$MOZ_FETCHES_DIR/php-win/php.ini"
+
+cd "$MOZ_FETCHES_DIR/arcanist"
+patch -p1 < "$GECKO_PATH/taskcluster/docker/updatebot/arcanist_windows_stream.patch"
+patch -p1 < "$GECKO_PATH/taskcluster/docker/updatebot/arcanist_patch_size.patch"
+cd "$MOZ_FETCHES_DIR"
+
+export PATH="$MOZ_FETCHES_PATH/php-win:$PATH"
+export PATH="$MOZ_FETCHES_PATH/arcanist/bin:$PATH"
+
+# get Updatebot
+cd "$MOZ_FETCHES_DIR"
+git clone https://github.com/mozilla-services/updatebot.git
+cd updatebot
+git checkout "$UPDATEBOT_REVISION"
+
+# base python needs
+python3 -m pip install --no-warn-script-location --user -U pip
+python3 -m pip install --no-warn-script-location --user poetry wheel requests setuptools
+
+# updatebot dependencies
+cd "$UPDATEBOT_PATH"
+python3 -m poetry install
+
+# taskcluster secrets and writing out localconfig
+cd "$GECKO_PATH"
+python3 ./taskcluster/docker/updatebot/run.py "$GECKO_PATH" "$UPDATEBOT_PATH" "$MOZ_FETCHES_PATH"
+
+# mercurial configuration
+cp "$GECKO_PATH/taskcluster/docker/updatebot/hgrc" "$HOME/.hgrc"
+# Windows is not happy with $HOME in the hgrc so we need to do a hack to replace it
+# with the actual value
+( echo "cat <<EOF" ; cat "$HOME/.hgrc" ) | sh > tmp
+mv tmp "$HOME/.hgrc"
+
+# ssh known hosts
+cp "$GECKO_PATH/taskcluster/docker/push-to-try/known_hosts" "$HOME/ssh_known_hosts"
+
+#########################################################
+# Run it
+export PYTHONIOENCODING=utf8
+export PYTHONUNBUFFERED=1
+
+cd "$UPDATEBOT_PATH"
+python3 -m poetry run python3 ./automation.py
+
+#########################################################
+if test -n "$GENERATE_DEPOT_TOOLS_BINARIES"; then
+ # Artifacts
+
+ cd "$MOZ_FETCHES_PATH"
+ mv depot_tools depot_tools-from-tc
+
+ # Clean out unneeded files
+ # Need to use cmd because for some reason rm from bash throws 'Access Denied'
+ cmd '/c for /d /r %i in (*__pycache__) do rmdir /s /q %i'
+ rm -rf depot_tools-from-git/.git || true
+
+ # Delete the files that are already in git
+ find depot_tools-from-git -mindepth 1 -maxdepth 1 | sed s/depot_tools-from-git/depot_tools-from-tc/ | while read -r d; do rm -rf "$d"; done
+
+ # Make the artifact
+ rm -rf depot_tools-preloaded-binaries #remove it if it existed (i.e. we probably have one from tooltool already)
+ mv depot_tools-from-tc depot_tools-preloaded-binaries
+
+ # zip can't add symbolic links, and exits with an error code. || true avoids a script crash
+ zip -r depot_tools-preloaded-binaries.zip depot_tools-preloaded-binaries/ || true
+
+ # Convoluted way to get the git hash, because we don't have a .git directory
+ # Adding extra print statements just in case we need to debug it
+ GIT_HASH=$(grep depot_tools -A 1 "$GECKO_PATH/taskcluster/ci/fetch/updatebot.yml" | tee /dev/tty | grep revision | tee /dev/tty | awk -F': *' '{print $2}' | tee /dev/tty)
+ DATE=$(date -I)
+ mv depot_tools-preloaded-binaries.zip "depot_tools-preloaded-binaries-$GIT_HASH-$DATE.zip"
+
+ # Put the artifact into the directory we will look for it
+ mkdir -p "$GECKO_PATH/obj-build/depot_tools" || true
+ mv "depot_tools-preloaded-binaries-$GIT_HASH-$DATE.zip" "$GECKO_PATH/obj-build/depot_tools"
+fi
+
+#########################################################
+echo "Killing SQL Proxy"
+taskkill -f -im cloud_sql_proxy.exe || true
diff --git a/taskcluster/docker/valgrind-build/Dockerfile b/taskcluster/docker/valgrind-build/Dockerfile
new file mode 100644
index 0000000000..a585b5771c
--- /dev/null
+++ b/taskcluster/docker/valgrind-build/Dockerfile
@@ -0,0 +1,66 @@
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER Mike Hommey <mhommey@mozilla.com>
+
+VOLUME /builds/worker/checkouts
+VOLUME /builds/worker/workspace
+VOLUME /builds/worker/tooltool-cache
+
+ARG TASKCLUSTER_ROOT_URL
+ARG DOCKER_IMAGE_PACKAGES
+RUN /usr/local/sbin/setup_packages.sh $TASKCLUSTER_ROOT_URL $DOCKER_IMAGE_PACKAGES
+
+# We could try to be smart and install all the -dbg packages corresponding to
+# the installed packages, but, not all of them are actually for libraries used
+# by Firefox, leading to a larger docker image. Moreover, some of the -dbg
+# packages for unnecessary libraries pull other packages through dependencies,
+# that make for even larger docker images.
+RUN apt-get update && apt-get install \
+ dbus-x11 \
+ libgtk-3-bin \
+ libdbus-1-3-dbgsym \
+ libatk-bridge2.0-0-dbgsym \
+ libatk1.0-0-dbgsym \
+ libcairo2-dbgsym \
+ libdbus-glib-1-2-dbgsym \
+ libdrm2-dbgsym \
+ libffi7-dbgsym \
+ libfontconfig1-dbgsym \
+ libglx-mesa0-dbgsym \
+ libglapi-mesa-dbgsym \
+ libglib2.0-0-dbgsym \
+ libgdk-pixbuf-2.0-0-dbgsym \
+ libgtk-3-0-dbgsym \
+ libice6-dbgsym \
+ libicu67-dbgsym \
+ libpango-1.0-0-dbgsym \
+ libpcre3-dbg \
+ libpixman-1-0-dbgsym \
+ libsm6-dbgsym \
+ libvorbis0a-dbgsym \
+ libwayland-client0-dbgsym \
+ libwayland-cursor0-dbgsym \
+ libx11-6-dbgsym \
+ libx11-xcb1-dbgsym \
+ libxau6-dbgsym \
+ libxcb-glx0-dbgsym \
+ libxcb-render0-dbgsym \
+ libxcb-shm0-dbgsym \
+ libxcb1-dbgsym \
+ libxcomposite1-dbgsym \
+ libxcursor1-dbgsym \
+ libxdamage1-dbgsym \
+ libxdmcp6-dbg \
+ libxext6-dbg \
+ libxfixes3-dbgsym \
+ libxi6-dbgsym \
+ libxinerama1-dbgsym \
+ libxrandr2-dbgsym \
+ libxrender1-dbgsym \
+ libxt6-dbgsym \
+ libxxf86vm1-dbg \
+ valgrind-dbgsym \
+ xvfb \
+ zlib1g-dbgsym
+
+# %include taskcluster/docker/recipes/xvfb.sh
+COPY topsrcdir/taskcluster/docker/recipes/xvfb.sh /builds/worker/scripts/xvfb.sh
diff --git a/taskcluster/docker/webrender/Dockerfile b/taskcluster/docker/webrender/Dockerfile
new file mode 100644
index 0000000000..73b876cf78
--- /dev/null
+++ b/taskcluster/docker/webrender/Dockerfile
@@ -0,0 +1,16 @@
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER Kartikaya Gupta <kgupta@mozilla.com>
+
+VOLUME /builds/worker/checkouts
+VOLUME /builds/worker/workspace
+VOLUME /builds/worker/tooltool-cache
+
+# %include gfx/wr/ci-scripts/docker-image/setup.sh
+ADD topsrcdir/gfx/wr/ci-scripts/docker-image/setup.sh /tmp/wr-setup.sh
+RUN /bin/bash /tmp/wr-setup.sh && rm /tmp/wr-setup.sh
+
+# We need this to install cargo-vendor as part of the wrench-deps task
+RUN apt-get install libssl-dev
+
+# Set a default command useful for debugging
+CMD ["/bin/bash", "--login"]
diff --git a/taskcluster/docs/attributes.rst b/taskcluster/docs/attributes.rst
new file mode 100644
index 0000000000..6808d8fb20
--- /dev/null
+++ b/taskcluster/docs/attributes.rst
@@ -0,0 +1,461 @@
+===============
+Task Attributes
+===============
+
+Tasks can be filtered, for example to support "try" pushes which only perform a
+subset of the task graph or to link dependent tasks. This filtering is the
+difference between a full task graph and a target task graph.
+
+Filtering takes place on the basis of attributes. Each task has a dictionary
+of attributes and filters over those attributes can be expressed in Python. A
+task may not have a value for every attribute.
+
+The attributes, and acceptable values, are defined here. In general, attribute
+names and values are the short, lower-case form, with underscores.
+
+kind
+====
+
+A task's ``kind`` attribute gives the name of the kind that generated it, e.g.,
+``build`` or ``spidermonkey``.
+
+run_on_projects
+===============
+
+The projects where this task should be in the target task set. This is how
+requirements like "only run this on autoland" get implemented.
+
+.. note::
+
+ Please use this configuration. Running a job for all projects can quickly add up
+ in term of cost while not providing any value for some projects.
+
+`run-on-projects` can use either aliases or project names.
+
+These are the aliases:
+
+ * `integration` -- integration repository (autoland)
+ * `trunk` -- integration repository plus mozilla-central
+ * `release` -- release repositories (beta, release, esr) including mozilla-central
+ * `all` -- everywhere (the default)
+
+Project names are the repositories. They can be:
+
+* `autoland`
+* `mozilla-central`
+* `mozilla-beta`
+* `mozilla-release`
+* `mozilla-esr102`
+* ... A partial list can be found in taskcluster/gecko_taskgraph/util/attributes.py
+
+For try, this attribute applies only if ``-p all`` is specified. All jobs can
+be specified by name regardless of ``run_on_projects``.
+
+If ``run_on_projects`` is set to an empty list, then the task will not run
+anywhere, unless its build platform is specified explicitly in try syntax.
+
+
+.. note::
+
+ As `try` pushes don't use filter_for_projects by design, there isn't a way
+ to define that a task will run on `try`.
+
+
+.. note::
+
+ A given task `[taskA]` may not respect `run-on-projects` if there another task
+ `[taskB]` which is scheduled to run (such as via run-on-projects) which depends it
+ `[taskA]`. Because by nature of `TaskB` running we must run `TaskA`.
+
+ See `bug 1640603 <https://bugzilla.mozilla.org/show_bug.cgi?id=1640603#c5>`_ as example.
+
+run_on_hg_branches
+==================
+
+On a given project, the mercurial branch where this task should be in the target
+task set. This is how requirements like "only run this RELBRANCH" get implemented.
+These are either the regular expression of a branch (e.g.: ``GECKOVIEW_\d+_RELBRANCH``)
+or the following alias:
+
+ * `all` -- everywhere (the default)
+
+Like ``run_on_projects``, the same behavior applies if it is set to an empty list.
+
+task_duplicates
+===============
+
+This is used to indicate that we want multiple copies of the task created.
+This feature is used to track down intermittent job failures.
+
+If this value is set to N, the task-creation machinery will create a total of N
+copies of the task. Only the first copy will be included in the taskgraph
+output artifacts, although all tasks will be contained in the same taskGroup.
+
+While most attributes are considered read-only, target task methods may alter
+this attribute of tasks they include in the target set.
+
+build_platform
+==============
+
+The build platform defines the platform for which the binary was built. It is
+set for both build and test jobs, although test jobs may have a different
+``test_platform``.
+
+build_type
+==========
+
+The type of build being performed. This is a subdivision of ``build_platform``,
+used for different kinds of builds that target the same platform. Values are
+
+ * ``debug``
+ * ``opt``
+
+test_platform
+=============
+
+The test platform defines the platform on which tests are run. It is only
+defined for test jobs and may differ from ``build_platform`` when the same binary
+is tested on several platforms (for example, on several versions of Windows).
+This applies for both talos and unit tests.
+
+Unlike build_platform, the test platform is represented in a slash-separated
+format, e.g., ``linux64/opt``.
+
+unittest_suite
+==============
+
+This is the unit test suite being run in a unit test task. For example,
+``mochitest`` or ``cppunittest``.
+
+unittest_category
+=================
+
+This is the high-level category of test the suite corresponds to. This is
+usually the test harness used to run the suite.
+
+unittest_try_name
+=================
+
+This is the name used to refer to a unit test via try syntax. It
+may not match ``unittest_suite``.
+
+unittest_variant
+================
+
+The configuration variant the test suite is running with. If set, this usually
+means the tests are running with a special pref enabled. These are defined in
+``taskgraph.transforms.test.TEST_VARIANTS``.
+
+talos_try_name
+==============
+
+This is the name used to refer to a talos job via try syntax.
+
+raptor_try_name
+===============
+
+This is the name used to refer to a raptor job via try syntax.
+
+job_try_name
+============
+
+This is the name used to refer to a "job" via try syntax (``-j``). Note that for
+some kinds, ``-j`` also matches against ``build_platform``.
+
+test_chunk
+==========
+
+This is the chunk number of a chunked test suite. Note that this is a string!
+
+test_manifests
+==============
+
+A list of the test manifests that run in this task.
+
+image_name
+==========
+
+For the ``docker_image`` kind, this attribute contains the docker image name.
+
+nightly
+=======
+
+Signals whether the task is part of a nightly graph. Useful when filtering
+out nightly tasks from full task set at target stage.
+
+shippable
+=========
+Signals whether the task is considered "shippable", that it should get signed and is ok to
+be used for nightlies or releases.
+
+all_locales
+===========
+
+For the ``l10n`` and ``shippable-l10n`` kinds, this attribute contains the list
+of relevant locales for the platform.
+
+all_locales_with_changesets
+===========================
+
+Contains a dict of l10n changesets, mapped by locales (same as in ``all_locales``).
+
+l10n_chunk
+==========
+For the ``l10n`` and ``shippable-l10n`` kinds, this attribute contains the chunk
+number of the job. Note that this is a string!
+
+chunk_locales
+=============
+For the ``l10n`` and ``shippable-l10n`` kinds, this attribute contains an array of
+the individual locales this chunk is responsible for processing.
+
+locale
+======
+For jobs that operate on only one locale, we set the attribute ``locale`` to the
+specific locale involved. Currently this is only in l10n versions of the
+``beetmover`` and ``balrog`` kinds.
+
+signed
+======
+Signals that the output of this task contains signed artifacts.
+
+stub-installer
+==============
+Signals to the build system that this build is expected to have a stub installer
+present, and informs followon tasks to expect it.
+
+repackage_type
+==============
+This is the type of repackage. Can be ``repackage`` or
+``repackage_signing``.
+
+fetch-artifact
+==============
+
+For fetch jobs, this is the path to the artifact for that fetch operation.
+
+fetch-alias
+===========
+An alias that can be used instead of the real fetch job name in fetch
+stanzas for jobs.
+
+toolchain-artifact
+==================
+For toolchain jobs, this is the path to the artifact for that toolchain.
+
+toolchain-alias
+===============
+An alias that can be used instead of the real toolchain job name in fetch
+stanzas for jobs.
+
+toolchain-env
+=============
+Extra environment variables that will be set on the worker when fetching this
+toolchain.
+
+toolchain-command
+=================
+An extra attribute used to communicate to the build system bootstrap code the
+command used to build the toolchain. This is useful because the commands are
+formatted differently depending on the worker type, sometimes unconveniently
+to parse afterwards.
+
+always_target
+=============
+
+Tasks with this attribute will be included in the ``target_task_graph`` if
+``parameters["tasks_for"]`` is ``hg-push``, regardless of any target task
+filtering that occurs. When a task is included in this manner (i.e it otherwise
+would have been filtered out), it will be considered for optimization even if
+the ``optimize_target_tasks`` parameter is False.
+
+This is meant to be used for tasks which a developer would almost always want to
+run. Typically these tasks will be short running and have a high risk of causing
+a backout. For example ``lint`` or ``python-unittest`` tasks.
+
+shipping_product
+================
+For release promotion jobs, this is the product we are shipping.
+
+shipping_phase
+==============
+For release promotion jobs, this is the shipping phase (build, promote, push, ship).
+During the build phase, we build and sign shippable builds. During the promote phase,
+we generate l10n repacks and push to the candidates directory. During the push phase,
+we push to the releases directory. During the ship phase, we update bouncer, push to
+Google Play, version bump, mark as shipped in ship-it.
+
+Using the "snowman model", we depend on previous graphs if they're defined. So if we
+ask for a ``push`` (the head of the snowman) and point at the body and base, we only
+build the head. If we don't point at the body and base, we build the whole snowman
+(build, promote, push).
+
+artifact_prefix
+===============
+Most taskcluster artifacts are public, so we've hardcoded ``public/build`` in a
+lot of places. To support private artifacts, we've moved this to the
+``artifact_prefix`` attribute. It will default to ``public/build`` but will be
+overridable per-task.
+
+artifact_map
+===============
+For beetmover jobs, this indicates which yaml file should be used to
+generate the upstream artifacts and payload instructions to the task.
+
+release_artifacts
+=================
+A set of artifacts that are candidates for downstream release tasks to operate
+on.
+
+batch
+=====
+Used by `perftest` to indicates that a task can be run as a batch.
+
+
+enable-full-crashsymbols
+========================
+In automation, full crashsymbol package generation is normally disabled. For
+build kinds where the full crashsymbols should be enabled, set this attribute
+to True. The full symbol packages will then be generated and uploaded on
+release branches and on try.
+
+skip-upload-crashsymbols
+========================
+Shippable/nightly builds are normally required to set enable-full-crashsymbols,
+but in some limited corner cases (universal builds), that is not wanted, because
+the symbols are uploaded independently already.
+
+upload-generated-sources
+========================
+generated-sources are normally only uploaded to S3 for shippable/nightly
+builds. This attributes turns that on for other builds such as macosx
+before unification.
+
+cron
+====
+Indicates that a task is meant to be run via cron tasks, and should not be run
+on push.
+
+cached_task
+===========
+Some tasks generate artifacts that are cached between pushes. This is a
+dictionary with the type and name of the cache, and the unique string used to
+identify the current version of the artifacts. See :py:mod:`taskgraph.util.cached_task`.
+
+.. code:: yaml
+
+ cached_task:
+ digest: 66dfc2204600b48d92a049b6a18b83972bb9a92f9504c06608a9c20eb4c9d8ae
+ name: debian7-base
+ type: docker-images.v2
+
+eager_indexes
+=============
+A list of strings of indexes to populate before the task ever completes. Some tasks (e.g. cached tasks) we
+want to exist in the index before they even run/complete. Our current use is to allow us to depend on an
+unfinished cached task in future pushes. This avoids extra overhead from multiple tasks running, and
+can allow us to have our results in just a bit earlier.
+
+required_signoffs
+=================
+A list of release signoffs that this kind requires, should the release also
+require these signoffs. For example, ``mar-signing`` signoffs may be required
+by some releases in the future; for any releases that require ``mar-signing``
+signoffs, the kinds that also require that signoff are marked with this
+attribute.
+
+update-channel
+==============
+The update channel the build is configured to use.
+
+mar-channel-id
+==============
+The mar-channel-id the build is configured to use.
+
+accepted-mar-channel-ids
+========================
+The mar-channel-ids this build will accept updates to. It should usually be the same as
+the value mar_channel_id. If more than one ID is needed, then you should use a
+comma separated list of values.
+
+openh264_rev
+============
+Only used for openh264 plugin builds, used to signify the revision (and thus inform artifact name) of the given build.
+
+code-review
+===========
+If a task set this boolean attribute to `true`, it will be processed by the code
+review bot, the task will ran for every new Phabricator diff.
+Any supported and detected issue will be automatically reported on the
+Phabricator revision.
+
+resource-monitor
+================
+If a task set this boolean attribute to `true`, it will collect CPU, memory, and
+- if available - Disk and Network IO by running the resource-monitor utility,
+provided through fetches.
+
+retrigger
+=========
+Whether the task can be retriggered, or if it needs to be re-run.
+
+disable-push-apk
+================
+Some GeckoView-only Android tasks produce APKs that shouldn't be
+pushed to the Google Play Store. Set this to ``true`` to disable
+pushing.
+
+disable-build-signing
+=====================
+Some GeckoView-only tasks produce APKs, but not APKs that should be
+signed. Set this to ``true`` to disable APK signing.
+
+enable-build-signing
+====================
+We enable build-signing for ``shippable``, ``nightly``, and ``enable-build-signing`` tasks.
+
+run-visual-metrics
+==================
+If set to true, will run the visual metrics task on the provided
+video files.
+
+skip-verify-test-packaging
+==========================
+If set to true, this task will not be checked to see that
+MOZ_AUTOMATION_PACKAGE_TESTS is set correctly based on whether or not the task
+has dependent tests. This should only be used in very unique situations, such
+as Windows AArch64 builds that copy test packages between build tasks.
+
+geckodriver
+===========
+If non-empty, declares that the (toolchain) task is a `geckodriver`
+task that produces a binary that should be signed.
+
+rebuild-on-release
+==================
+If true, the digest for this task will also depend on if the branch is a
+release branch. This will cause tasks like toolchains to be rebuilt as they
+move from e.g. autoland to mozilla-central.
+
+local-toolchain
+===============
+This toolchain is used for local development, so should be built on trunk, even
+if it does not have any in-graph consumers.
+
+artifact-build
+==============
+
+This build is an artifact build.
+
+This deliberately excludes builds that are implemented using the artifact build
+machinery, but are not primarily intended to short-circuit build time. In
+particular the Windows aarch64 builds are not marked this way.
+
+maven_packages
+===============
+List of maven packages produced by the build.
+
+supports-artifact-builds
+========================
+
+If false, the task requires a compiled build and will not work with artifact builds.
diff --git a/taskcluster/docs/balrog.rst b/taskcluster/docs/balrog.rst
new file mode 100644
index 0000000000..cd00fbb325
--- /dev/null
+++ b/taskcluster/docs/balrog.rst
@@ -0,0 +1,45 @@
+Balrog in Release Promotion
+===========================
+
+Overview
+--------
+Balrog is Mozilla's update server. It is responsible for delivering newer versions of Firefox to existing Firefox installations. If you are not already, it would be useful to be familiar with Balrog's core concepts before continuing with this doc. You can find that information on `Balrog's official documentation`_.
+
+The basic interactions that Release Promotion has with Balrog are as follows:
+
+#. Submit new release metadata to Balrog with a number of ``balrog`` tasks and the ``release-balrog-submit-toplevel`` task.
+#. Update test channels to point at the new release in the ``release-balrog-submit-toplevel`` task.
+#. Verify the new release updates with ``release-update-verify`` and ``release-final-verify`` tasks.
+#. Schedule the new release to be shipped in the ``release-balrog-scheduling`` task.
+
+Submit New Release Metadata
+---------------------------
+Balrog requires many different pieces of information before it can ship updates. Most of this information revolves around update file (MAR) metadata (hash, filesize, target platform, target locale). This information is submitted by ``balrog`` tasks.
+
+We also submit some more general information about releases (version number, MAR url templates, release name, etc.) as part of the ``release-balrog-submit-toplevel`` task.
+
+All balrog submission is done by `balrogscript workers`_, and happens in the ``promote`` phase.
+
+Update Test Channels
+--------------------
+Balrog has "test" channels that we use to allow verification of new release updates prior to shipping. The ``release-balrog-submit-toplevel`` task is responsible for updating these test channels whenever we prepare a new release. This happens in the ``promote`` phase.
+
+Verify the Release
+------------------
+Once a release is live on a test channel ``release-update-verify`` begins and performs same sanity checks. This happens in the ``promote`` phase.
+
+After a release has been pushed to cdns, ``release-final-verify`` runs and performs some additional checks. This happens in the ``push`` phase.
+
+Schedule Shipping
+-----------------
+When we're ready to ship a release we need to let Balrog know about it by scheduling a change to the appropriate Balrog rule. If ``release_eta`` is set it will be used as the ship date and time. If not, the release will be scheduled for shipping 5 minutes in the future. In either case, signoff will need to be done in Balrog by multiple parties before the release is actually made live.
+
+This step is done by the ``release-balrog-scheduling`` task in the ``ship`` phase.
+
+``secondary`` tasks
+-------------------
+You may have noticed ``secondary`` variants of the ``release-balrog-submit-toplevel``, ``release-update-verify``, ``release-final-verify``, and ``release-balrog-scheduling`` tasks. These fulfill the same function as their primary counterparts, but for the "beta" update channel. They are only used when we build Release Candidates.
+
+
+.. _Balrog's official documentation: http://mozilla-balrog.readthedocs.io/en/latest/
+.. _balrogscript workers: https://github.com/mozilla-releng/balrogscript
diff --git a/taskcluster/docs/caches.rst b/taskcluster/docs/caches.rst
new file mode 100644
index 0000000000..dcda4102dd
--- /dev/null
+++ b/taskcluster/docs/caches.rst
@@ -0,0 +1,98 @@
+.. taskcluster_caches:
+
+Caches
+======
+
+There are various caches used by the in-tree tasks. This page attempts to
+document them and their appropriate use.
+
+Caches are essentially isolated filesystems that are persisted between
+tasks. For example, if 2 tasks run on a worker - one after the other -
+and both tasks request the same cache, the subsequent task will be
+able to see files in the cache that were created by the first task.
+It's also worth noting that TaskCluster workers ensure a cache can only
+be used by 1 task at a time. If a worker is simultaneously running
+multiple tasks requesting the same named cache, the worker will
+have multiple caches of the same name on the worker.
+
+Caches and ``run-task``
+-----------------------
+
+``run-task`` is our generic task wrapper script. It does common activities
+like ensure a version control checkout is present.
+
+One of the roles of ``run-task`` is to verify and sanitize caches.
+It does this by storing state in a cache on its first use. If the recorded
+*capabilities* of an existing cache don't match expectations for the
+current task, ``run-task`` bails. This ensures that caches are only
+reused by tasks with similar execution *profiles*. This prevents
+accidental cache use across incompatible tasks. It also allows run-task
+to make assumptions about the state of caches, which can help avoid
+costly operations.
+
+In addition, the hash of ``run-task`` is used to derive the cache name.
+So any time ``run-task`` changes, a new set of caches are used. This
+ensures that any backwards incompatible changes or bug fixes to
+``run-task`` result in fresh caches.
+
+Some caches are reserved for use with run-task. That property will be denoted
+below.
+
+Common Caches
+-------------
+
+Version Control Caches
+::::::::::::::::::::::
+
+``level-{{level}}-checkouts-{{hash}}``
+ This cache holds version control checkouts, each in a subdirectory named
+ after the repo (e.g., ``gecko``).
+
+ Checkouts should be read-only. If a task needs to create new files from
+ content of a checkout, this content should be written in a separate
+ directory/cache (like a workspace).
+
+ This cache name pattern is managed by ``run-task`` and must only be
+ used with ``run-task``.
+
+``level-{{level}}-checkouts-sparse-{{hash}}``
+ This is like the above but is used when the checkout is sparse (contains
+ a subset of files).
+
+``level-{{level}}-checkouts-{{version}}`` (deprecated)
+ This cache holds version control checkouts, each in a subdirectory named
+ after the repo (e.g., ``gecko``).
+
+ Checkouts should be read-only. If a task needs to create new files from
+ content of a checkout, this content should be written in a separate
+ directory/cache (like a workspace).
+
+ A ``version`` parameter appears in the cache name to allow
+ backwards-incompatible changes to the cache's behavior.
+
+ The ``hg-store`` contains a `shared store <https://www.mercurial-scm.org/wiki/ShareExtension>`
+ that is is used by ``hg robustcheckout``. If you are using ``run-task`` you
+ should set the ``HG_STORE_PATH`` environment variable to point to this
+ directory. If you are using ``hg robustcheckout``, pass this directory to the
+ ``--sharebase`` option.
+
+Workspace Caches
+::::::::::::::::
+
+``level-{{level}}-*-workspace``
+ These caches (of various names typically ending with ``workspace``)
+ contain state to be shared between task invocations. Use cases are
+ dependent on the task.
+
+Other
+:::::
+
+``level-{{level}}-tooltool-cache-{{hash}}``
+ Tooltool invocations should use this cache. Tooltool will store files here
+ indexed by their hash.
+
+ This cache name pattern is reserved for use with ``run-task`` and must only
+ be used by ``run-task``
+
+``tooltool-cache`` (deprecated)
+ Legacy location for tooltool files. Use the per-level one instead.
diff --git a/taskcluster/docs/config.rst b/taskcluster/docs/config.rst
new file mode 100644
index 0000000000..fefe1265b9
--- /dev/null
+++ b/taskcluster/docs/config.rst
@@ -0,0 +1,35 @@
+Taskcluster Configuration
+=========================
+
+Taskcluster requires configuration of many resources to correctly support Firefox CI.
+Many of those span multiple projects (branches) instead of riding the trains.
+
+Global Settings
+---------------
+
+The data behind configuration of all of these resources is kept in the `ci-configuration`_ repository.
+The files in this repository are intended to be self-documenting, but one of particular interest is ``projects.yml``, which describes the needs of each project.
+
+Configuration Implementation
+----------------------------
+
+Translation of `ci-configuration`_ to Taskcluster resources, and updating those resources, is handled by `ci-admin`_.
+This is a small Python application with commands to generate the expected configuration, compare the expected to actual configuration, and apply the expected configuration.
+Only the ``apply`` subcommand requires elevated privileges.
+
+This tool automatically annotates all managed resources with "DO NOT EDIT", warning users of the administrative UI that changes made through the UI may be reverted.
+
+Changing Configuration
+----------------------
+
+To change Taskcluster configuration, make patches to `ci-configuration`_ or (if necessary) `ci-admin`_, using the Firefox Build System :: Task Configuration Bugzilla component.
+Part of the landing process is for someone with administrative scopes to apply the resulting configuration.
+
+You can test your patches with something like this, assuming ``.`` is a checkout of the `ci-configuration`_ repository containing your changes:
+
+.. code-block: shell
+
+ ci-admin diff --ci-configuration-directory .
+
+.. _ci-configuration: https://hg.mozilla.org/ci/ci-configuration/file
+.. _ci-admin: https://hg.mozilla.org/ci/ci-admin/file
diff --git a/taskcluster/docs/cron.rst b/taskcluster/docs/cron.rst
new file mode 100644
index 0000000000..86552114c1
--- /dev/null
+++ b/taskcluster/docs/cron.rst
@@ -0,0 +1,102 @@
+Periodic Taskgraphs
+===================
+
+The cron functionality allows in-tree scheduling of task graphs that run
+periodically, instead of on a push.
+
+Cron.yml
+--------
+
+In the root of the Gecko directory, you will find `.cron.yml`. This defines
+the periodic tasks ("cron jobs") run for Gecko. Each specifies a name, what to
+do, and some parameters to determine when the cron job should occur.
+
+See `the scema <https://hg.mozilla.org/ci/ci-configuration/file/tip/build-decision/src/build_decision/cron/schema.yml>`_
+for details on the format and meaning of this file.
+
+How It Works
+------------
+
+The `TaskCluster Hooks Service <https://firefox-ci-tc.services.mozilla.com/hooks>`_
+has a hook configured for each repository supporting periodic task graphs. The
+hook runs every 15 minutes, and the resulting task is referred to as a "cron task".
+That cron task runs the `build-decision
+<https://hg.mozilla.org/ci/ci-admin/file/default/build-decision>`_ image in a
+checkout of the Gecko source tree.
+
+The task reads ``.cron.yml``, then consults the current time (actually the time
+the cron task was created, rounded down to the nearest 15 minutes) and creates
+tasks for any cron jobs scheduled at that time.
+
+Each cron job in ``.cron.yml`` specifies a ``job.type``, corresponding to a
+function responsible for creating TaskCluster tasks when the job runs.
+
+Describing Time
+---------------
+
+This cron implementation understands the following directives when
+describing when to run:
+
+* ``minute``: The minute in which to run, must be in 15 minute increments (see above)
+* ``hour``: The hour of the day in which to run, in 24 hour time.
+* ``day``: The day of the month as an integer, such as `1`, `16`. Be cautious above `28`, remember February.
+* ``weekday``: The day of the week, `Monday`, `Tuesday`, etc. Full length ISO compliant words.
+
+Setting both 'day' and 'weekday' will result in a cron job that won't run very often,
+and so is undesirable.
+
+*Examples*
+
+.. code-block:: yaml
+
+ # Never
+ when: []
+
+ # 4 AM and 4 PM, on the hour, every day.
+ when:
+ - {hour: 16, minute: 0}
+ - {hour: 4, minute: 0}
+
+ # The same as above, on a single line
+ when: [{hour: 16, minute: 0}, {hour: 4, minute: 0}]
+
+ # 4 AM on the second day of every month.
+ when:
+ - {day: 2, hour: 4, minute: 0}
+
+ # Mondays and Thursdays at 10 AM
+ when:
+ - {weekday: 'Monday', hour: 10, minute: 0}
+ - {weekday: 'Thursday', hour: 10, minute: 0}
+
+.. note::
+
+ Times are expressed in UTC (Coordinated Universal Time)
+
+
+Decision Tasks
+..............
+
+For ``job.type`` "decision-task", tasks are created based on
+``.taskcluster.yml`` just like the decision tasks that result from a push to a
+repository. They run with a distinct ``taskGroupId``, and are free to create
+additional tasks comprising a task graph.
+
+Scopes
+------
+
+The cron task runs with the sum of all cron job scopes for the given repo. For
+example, for the "sequoia" project, the scope would be
+``assume:repo:hg.mozilla.org/projects/sequoia:cron:*``. Each cron job creates
+tasks with scopes for that particular job, by name. For example, the
+``check-frob`` cron job on that repo would run with
+``assume:repo:hg.mozilla.org/projects/sequoia:cron:check-frob``.
+
+.. important::
+
+ The individual cron scopes are a useful check to ensure that a job is not
+ accidentally doing something it should not, but cannot actually *prevent* a
+ job from using any of the scopes afforded to the cron task itself (the
+ ``..cron:*`` scope). This is simply because the cron task runs arbitrary
+ code from the repo, and that code can be easily modified to create tasks
+ with any scopes that it possesses.
diff --git a/taskcluster/docs/howto/index.rst b/taskcluster/docs/howto/index.rst
new file mode 100644
index 0000000000..ab1010666b
--- /dev/null
+++ b/taskcluster/docs/howto/index.rst
@@ -0,0 +1,203 @@
+How Tos
+=======
+
+All of this equipment is here to help you get your work done more efficiently.
+However, learning how task-graphs are generated is probably not the work you
+are interested in doing. This section should help you accomplish some of the
+more common changes to the task graph with minimal fuss.
+
+Taskgraph's documentation provides many relevant how-to guides:
+
+.. note::
+
+ If you come across references to the ``taskgraph`` command, simply prepend
+ ``./mach`` to the command to make it work in ``mozilla-central``.
+
+.. toctree::
+
+ Run Taskgraph Locally <https://taskcluster-taskgraph.readthedocs.io/en/latest/howto/run-locally.html>
+ Debug Taskgraph <https://taskcluster-taskgraph.readthedocs.io/en/latest/howto/debugging.html>
+ Use Fetches <https://taskcluster-taskgraph.readthedocs.io/en/latest/howto/use-fetches.html>
+ Use Docker Images <https://taskcluster-taskgraph.readthedocs.io/en/latest/howto/docker.html>
+ Create Actions <https://taskcluster-taskgraph.readthedocs.io/en/latest/howto/create-actions.html>
+
+See Taskgraph's `how-to section`_ for even more guides!
+
+.. _how-to section: https://taskcluster-taskgraph.readthedocs.io/en/latest/howto/index.html
+
+Common Changes
+--------------
+
+Additionally, here are some tips for common changes you wish to make within
+``mozilla-central``.
+
+Changing Test Characteristics
+.............................
+
+First, find the test description. This will be in
+``taskcluster/ci/*/tests.yml``, for the appropriate kind (consult
+:ref:`kinds`). You will find a YAML stanza for each test suite, and each
+stanza defines the test's characteristics. For example, the ``chunks``
+property gives the number of chunks to run. This can be specified as a simple
+integer if all platforms have the same chunk count, or it can be keyed by test
+platform. For example:
+
+.. code-block:: yaml
+
+ chunks:
+ by-test-platform:
+ linux64/debug: 10
+ default: 8
+
+The full set of available properties is in
+``taskcluster/gecko_taskgraph/transforms/test/__init__.py``. Some other
+commonly-modified properties are ``max-run-time`` (useful if tests are being
+killed for exceeding maxRunTime) and ``treeherder-symbol``.
+
+.. note::
+
+ Android tests are also chunked at the mozharness level, so you will need to
+ modify the relevant mozharness config, as well.
+
+Adding a Test Suite
+...................
+
+To add a new test suite, you will need to know the proper mozharness invocation
+for that suite, and which kind it fits into (consult :ref:`kinds`).
+
+Add a new stanza to ``taskcluster/ci/<kind>/tests.yml``, copying from the other
+stanzas in that file. The meanings should be clear, but authoritative
+documentation is in
+``taskcluster/gecko_taskgraph/transforms/test/__init__.py`` should you need
+it. The stanza name is the name by which the test will be referenced in try
+syntax.
+
+Add your new test to a test set in ``test-sets.yml`` in the same directory. If
+the test should only run on a limited set of platforms, you may need to define
+a new test set and reference that from the appropriate platforms in
+``test-platforms.yml``. If you do so, include some helpful comments in
+``test-sets.yml`` for the next person.
+
+Greening Up a New Test
+......................
+
+When a test is not yet reliably green, configuration for that test should not
+be landed on integration branches. Of course, you can control where the
+configuration is landed! For many cases, it is easiest to green up a test in
+try: push the configuration to run the test to try along with your work to fix
+the remaining test failures.
+
+When working with a group, check out a "twig" repository to share among your
+group, and land the test configuration in that repository. Once the test is
+green, merge to an integration branch and the test will begin running there as
+well.
+
+Adding a New Task
+.................
+
+If you are adding a new task that is not a test suite, there are a number of
+options. A few questions to consider:
+
+ * Is this a new build platform or variant that will produce an artifact to
+ be run through the usual test suites?
+
+ * Does this task depend on other tasks? Do other tasks depend on it?
+
+ * Is this one of a few related tasks, or will you need to generate a large
+ set of tasks using some programmatic means (for example, chunking)?
+
+ * How is the task actually executed? Mozharness? Mach?
+
+ * What kind of environment does the task require?
+
+Armed with that information, you can choose among a few options for
+implementing this new task. Try to choose the simplest solution that will
+satisfy your near-term needs. Since this is all implemented in-tree, it
+is not difficult to refactor later when you need more generality.
+
+Existing Kind
+`````````````
+
+The simplest option is to add your task to an existing kind. This is most
+practical when the task "makes sense" as part of that kind -- for example, if
+your task is building an installer for a new platform using mozharness scripts
+similar to the existing build tasks, it makes most sense to add your task to
+the ``build`` kind. If you need some additional functionality in the kind,
+it's OK to modify the implementation as necessary, as long as the modification
+is complete and useful to the next developer to come along.
+
+Tasks in the ``build`` kind generate Firefox installers, and the ``test`` kind
+will add a full set of Firefox tests for each ``build`` task.
+
+New Kind
+````````
+
+The next option to consider is adding a new kind. A distinct kind gives you
+some isolation from other task types, which can be nice if you are adding an
+experimental kind of task.
+
+Kinds can range in complexity. The simplest sort of kind uses the transform
+loader to read a list of jobs from the ``jobs`` key, and applies the standard
+``job`` and ``task`` transforms:
+
+.. code-block:: yaml
+
+ implementation: taskgraph.task.transform:TransformTask
+ transforms:
+ - taskgraph.transforms.job:transforms
+ - taskgraph.transforms.task:transforms
+ jobs:
+ - ..your job description here..
+
+Job descriptions are defined and documented in
+``taskcluster/gecko_taskgraph/transforms/job/__init__.py``.
+
+Custom Kind Loader
+``````````````````
+
+If your task depends on other tasks, then the decision of which tasks to create
+may require some code. For example, the ``test`` kind iterates over
+the builds in the graph, generating a full set of test tasks for each one. This specific
+post-build behavior is implemented as a loader defined in ``taskcluster/gecko_taskgraph/loader/test.py``.
+
+A custom loader is useful when the set of tasks you want to create is not
+static but based on something else (such as the available builds) or when the
+dependency relationships for your tasks are complex.
+
+Custom Transforms
+`````````````````
+
+Most loaders apply a series of ":ref:`transforms`" that start with
+an initial human-friendly description of a task and end with a task definition
+suitable for insertion into a Taskcluster queue.
+
+Custom transforms can be useful to apply defaults, simplifying the YAML files
+in your kind. They can also apply business logic that is more easily expressed
+in code than in YAML.
+
+Transforms need not be one-to-one: a transform can produce zero or more outputs
+for each input. For example, the test transforms perform chunking by producing
+an output for each chunk of a given input.
+
+Ideally those transforms will produce job descriptions, so you can use the
+existing ``job`` and ``task`` transforms:
+
+.. code-block:: yaml
+
+ transforms:
+ - taskgraph.transforms.my_stuff:transforms
+ - taskgraph.transforms.job:transforms
+ - taskgraph.transforms.task:transforms
+
+Try to keep transforms simple, single-purpose and well-documented!
+
+Custom Run-Using
+````````````````
+
+If the way your task is executed is unique (so, not a mach command or
+mozharness invocation), you can add a new implementation of the job
+description's "run" section. Before you do this, consider that it might be a
+better investment to modify your task to support invocation via mozharness or
+mach, instead. If this is not possible, then adding a new file in
+``taskcluster/gecko_taskgraph/transforms/jobs`` with a structure similar to its peers
+will make the new run-using option available for job descriptions.
diff --git a/taskcluster/docs/img/enableSourceServer.png b/taskcluster/docs/img/enableSourceServer.png
new file mode 100644
index 0000000000..2a3a469129
--- /dev/null
+++ b/taskcluster/docs/img/enableSourceServer.png
Binary files differ
diff --git a/taskcluster/docs/img/windbg-srcfix.png b/taskcluster/docs/img/windbg-srcfix.png
new file mode 100644
index 0000000000..f9102ea913
--- /dev/null
+++ b/taskcluster/docs/img/windbg-srcfix.png
Binary files differ
diff --git a/taskcluster/docs/index.rst b/taskcluster/docs/index.rst
new file mode 100644
index 0000000000..c157db056c
--- /dev/null
+++ b/taskcluster/docs/index.rst
@@ -0,0 +1,79 @@
+.. taskcluster_index:
+
+Firefox CI and Taskgraph
+========================
+
+Firefox's `continuous integration`_ (CI) system is made up of three parts.
+
+First there's `Taskcluster`_, a task execution framework developed by Mozilla.
+Taskcluster is capable of building complex, scalable and highly customizable CI
+systems. Taskcluster is more like a set of building blocks that can be used to
+create CI systems, rather than a fully-fledged CI system itself.
+
+The second part is the `Firefox CI`_ instance of Taskcluster. This is the
+Taskcluster deployment responsible for running most of Mozilla's CI needs. This
+component is comprised of a Kubernetes cluster to run the Taskcluster services
+(maintained by SRE Services), some customizations to support Taskcluster
+on ``hg.mozilla.org`` and access control in the `ci-configuration`_ repo
+(maintained by Release Engineering).
+
+The third part is `Taskgraph`_. Taskgraph is a Python library that can generate
+a `DAG`_ of tasks and submit them to a Taskcluster instance. This is the
+component that most Gecko and Mozilla developers will interact with when
+working with tasks, and will be the focal point of the rest of this
+documentation.
+
+.. note::
+
+ Historically Taskgraph started out inside ``mozilla-central``. It was then
+ forked to standalone `Taskgraph`_ in order to support projects on Github.
+ Over time maintaining two forks grew cumbersome so they are in the process
+ of being merged back together.
+
+ Today the version of Taskgraph under ``taskcluster/gecko_taskgraph`` depends
+ on the standalone version, which is vendored under
+ ``third_party/python/taskcluster-taskgraph``. There is still a lot of
+ duplication between these places, but ``gecko_taskgraph`` is slowly being
+ re-written to consume standalone Taskgraph.
+
+The ``taskcluster`` directory contains all the files needed to define the graph
+of tasks that must be executed to build and test the Gecko tree. This is more
+complex than you think! There are 30,000+ tasks and counting in Gecko's CI
+graphs.
+
+Taskgraph supports:
+
+ * A huge array of tasks
+ * Different behavior for different repositories
+ * "Try" pushes, with special means to select a subset of the graph for execution
+ * Optimization -- skipping tasks that have already been performed
+ * Extremely flexible generation of a variety of tasks using an approach of
+ incrementally transforming job descriptions into task definitions.
+
+The most comprehensive resource on Taskgraph is `Taskgraph's documentation`_. These docs
+will refer there when appropriate and expand on topics specific to ``gecko_taskgraph``
+where necessary.
+
+If you are reading this with a particular goal in mind and would rather avoid
+becoming a task-graph expert, check out the :doc:`how-to section <howto/index>`.
+
+.. _continuous integration: https://en.wikipedia.org/wiki/Continuous_integration
+.. _Taskcluster: https://taskcluster.net/
+.. _Firefox CI: https://firefox-ci-tc.services.mozilla.com/
+.. _ci-configuration: https://hg.mozilla.org/ci/ci-configuration/
+.. _Taskgraph: https://github.com/taskcluster/taskgraph
+.. _DAG: https://en.wikipedia.org/wiki/Directed_acyclic_graph
+.. _Taskgraph's documentation: https://taskcluster-taskgraph.readthedocs.io/en/latest/
+
+.. toctree::
+
+ taskgraph
+ howto/index
+ transforms/index
+ optimization/index
+ cron
+ try
+ release-promotion
+ versioncontrol
+ config
+ reference
diff --git a/taskcluster/docs/kinds.rst b/taskcluster/docs/kinds.rst
new file mode 100644
index 0000000000..b88ff40d75
--- /dev/null
+++ b/taskcluster/docs/kinds.rst
@@ -0,0 +1,796 @@
+Task Kinds
+==========
+
+This section lists and documents the available task kinds.
+
+build
+-----
+
+Builds are tasks that produce an installer or other output that can be run by
+users or automated tests. This is more restrictive than most definitions of
+"build" in a Mozilla context: it does not include tasks that run build-like
+actions for static analysis or to produce instrumented artifacts.
+
+build-fat-aar
+-------------
+
+Build architecture-independent GeckoView AAR (Android ARchive) files. This build-like tasks is an
+artifact build (ARMv7, but this is arbitrary) that itself depends on arch-specific Android build
+jobs. It fetches arch-specific AAR files, extracts arch-specific libraries and preference files,
+and then assembles a multi-architecture "fat AAR". Downstream consumers are expected to use
+per-ABI feature splits to produce arch-specific APKs.
+
+If you want to run this task locally, you need to specify these environment variable:
+ - MOZ_ANDROID_FAT_AAR_ARCHITECTURES: must be a comma-separated list of architecture.
+ Eg: "armeabi-v7a,arm64-v8a,x86,x86_64".
+ - each of MOZ_ANDROID_FAT_AAR_ARM64_V8A, MOZ_ANDROID_FAT_AAR_ARMEABI_V7A,
+ MOZ_ANDROID_FAT_AAR_X86, MOZ_ANDROID_FAT_AAR_X86_64 must be a path relative to
+ MOZ_FETCHES_DIR.
+
+build-signing
+-------------
+
+Many builds must be signed. The build-signing task takes the unsigned `build`
+kind artifacts and passes them through signingscriptworker to a signing server
+and returns signed results.
+
+build-mac-signing
+-----------------
+
+Mac signing without notarization.
+
+Uses a self-signed certificate on level 1 environments.
+
+Shippable downstream tasks should use artifacts from build-mac-notarization.
+
+build-mac-notarization
+----------------------
+
+Mac notarization on signingscript (linux) using rcodesign.
+
+Only available in production environments, as Apple doesn't offer a test
+endpoint for notarizing apps.
+
+Downstream tasks switch to build-mac-signing in non-shippable builds or level 1
+environments.
+
+artifact-build
+--------------
+
+This kind performs an artifact build: one based on precompiled binaries
+discovered via the TaskCluster index. This task verifies that such builds
+continue to work correctly.
+
+bootstrap
+---------
+
+This kind performs a standalone bootstrap of a Firefox build from various system environments.
+
+hazard
+------
+
+Hazard builds are similar to "regular' builds, but use a compiler extension to
+extract a bunch of data from the build and then analyze that data looking for
+hazardous behaviors.
+
+l10n
+----
+
+The l10n kind takes the last published nightly build, and generates localized builds
+from it. You can read more about how to trigger these on the `wiki
+<https://wiki.mozilla.org/ReleaseEngineering/TryServer#Desktop_l10n_jobs_.28on_Taskcluster.29>`_.
+
+shippable-l10n
+--------------
+
+The nightly l10n kind repacks a specific nightly build (from the same source code)
+in order to provide localized versions of the same source.
+
+shippable-l10n-signing
+----------------------
+
+The shippable l10n signing kind takes artifacts from the shippable-l10n kind and
+passes them to signing servers to have their contents signed appropriately, based
+on an appropriate signing format. One signing job is created for each shippable-l10n
+job (usually chunked).
+
+shippable-l10n-mac-signing
+--------------------------
+
+Mac signing without notarization.
+
+Uses a self-signed certificate on level 1 environments.
+
+Shippable downstream tasks should use artifacts from build-mac-notarization.
+
+shippable-l10n-mac-notarization
+-------------------------------
+
+Mac notarization on signingscript (linux) using rcodesign.
+
+Only available in production environments, as Apple doesn't offer a test
+endpoint for notarizing apps.
+
+Downstream tasks switch to build-mac-signing in non-shippable builds or level 1
+environments.
+
+source-test
+-----------
+
+Source-tests are tasks that run directly from the Gecko source. This can include linting,
+unit tests, source-code analysis, or measurement work. While source-test tasks run from
+a source checkout, it is still possible for them to depend on a build artifact, though
+often they do not.
+
+code-review
+-----------
+
+Publish issues found by source-test tasks on Phabricator.
+This is a part of Release Management code review Bot.
+
+upload-symbols
+--------------
+
+Upload-symbols tasks run after builds and upload the symbols files generated by
+build tasks to Socorro for later use in crash analysis.
+
+upload-symbols-dummy
+--------------------
+
+Upload-symbols-dummy ensures both x64 and macosx64 tasks run for nightlies and releases.
+
+upload-generated-sources
+------------------------
+
+Upload-generated-sources tasks run after builds and upload source files that were generated as part of the build process to an s3 bucket for later use in links from crash reports or when debugging shipped builds.
+
+upload-generated-sources-dummy
+------------------------------
+
+Upload-generated-sources-dummy ensures both x64 and macosx64 tasks run for nightlies and releases.
+
+valgrind
+--------
+
+Valgrind tasks produce builds instrumented by valgrind.
+
+searchfox
+---------
+
+Searchfox builds generate C++ index data for Searchfox.
+
+static-analysis-autotest
+------------------------
+
+Static analysis autotest utility in order to be sure that there is no regression
+when upgrading utilities that impact static-analysis.
+
+toolchain
+---------
+
+Toolchain builds create the compiler toolchains used to build Firefox. These
+will eventually be dependencies of the builds themselves, but for the moment
+are run manually via try pushes and the results uploaded to tooltool.
+
+spidermonkey
+------------
+
+Spidermonkey tasks check out the full gecko source tree, then compile only the
+spidermonkey portion. Each task runs specific tests after the build.
+
+test
+----
+
+See the :doc:`test kind documentation <kinds/test>` for more info.
+
+.. toctree::
+ :hidden:
+
+ kinds/test
+
+
+docker-image
+------------
+
+Tasks of the ``docker-image`` kind build the Docker images in which other
+Docker tasks run.
+
+The tasks to generate each docker image have predictable labels:
+``docker-image-<name>``.
+
+Docker images are built from subdirectories of ``taskcluster/docker``, using
+``docker build``. There is currently no capability for one Docker image to
+depend on another in-tree docker image, without uploading the latter to a
+Docker repository.
+
+balrog
+------
+
+Balrog tasks are responsible for submitting metadata to our update server (Balrog).
+They are typically downstream of a beetmover job that moves signed MARs somewhere
+(eg: beetmover and beetmover-l10n for releases, beetmover-repackage for nightlies).
+
+beetmover
+---------
+
+Beetmover, takes specific artifacts, "Beets", and pushes them to a location outside
+of Taskcluster's task artifacts, (archive.mozilla.org as one place) and in the
+process determines the final location and a "pretty" name (versioned product name)
+
+beetmover-l10n
+--------------
+
+Beetmover L10n, takes specific artifacts, "Beets", and pushes them to a location outside
+of Taskcluster's task artifacts, (archive.mozilla.org as one place) and in the
+process determines the final location and a "pretty" name (versioned product name)
+This separate kind uses logic specific to localized artifacts, such as including
+the language in the final artifact names.
+
+beetmover-repackage
+-------------------
+
+Beetmover-repackage is beetmover but for tasks that need an intermediate step
+between signing and packaging, such as OSX. For more details see the definitions
+of the Beetmover kind above and the repackage kind below.
+
+release-beetmover-push-to-release
+---------------------------------
+
+release-beetmover-push-to-release publishes promoted releases from the
+candidates directory to the release directory. This is part of release
+promotion.
+
+beetmover-snap
+--------------
+Beetmover-source publishes Ubuntu's snap. This is part of release promotion.
+
+beetmover-source
+----------------
+Beetmover-source publishes release source. This is part of release promotion.
+
+beetmover-geckoview
+-------------------
+Beetmover-geckoview publishes the Android library called "geckoview".
+
+beetmover-apt
+-------------------
+Beetmover-apt publishes Linux .deb packages from the Mozilla archive to our APT repositories.
+
+condprof
+--------
+condprof creates and updates realistic profiles.
+
+release-source-checksums-signing
+--------------------------------
+release-source-checksums-signing take as input the checksums file generated by
+source-related beetmover task and sign it via the signing scriptworkers.
+Returns the same file signed and additional detached signature.
+
+beetmover-checksums
+-------------------
+Beetmover, takes specific artifact checksums and pushes it to a location outside
+of Taskcluster's task artifacts (archive.mozilla.org as one place) and in the
+process determines the final location and "pretty" names it (version product name)
+
+release-beetmover-source-checksums
+----------------------------------
+Beetmover, takes source specific artifact checksums and pushes it to a location outside
+of Taskcluster's task artifacts (archive.mozilla.org as one place) and in the
+process determines the final location and "pretty" names it (version product name)
+
+perftest
+--------
+Runs performance tests using mozperftest.
+
+release-balrog-submit-toplevel
+------------------------------
+Toplevel tasks are responsible for submitting metadata to Balrog that is not specific to any
+particular platform+locale. For example: fileUrl templates, versions, and platform aliases.
+
+Toplevel tasks are also responsible for updating test channel rules to point at the Release
+being generated.
+
+release-secondary-balrog-submit-toplevel
+----------------------------------------
+Performs the same function as `release-balrog-submit-toplevel`, but against the beta channel
+during RC builds.
+
+release-balrog-scheduling
+-------------------------
+Schedules a Release for shipping in Balrog. If a `release_eta` was provided when starting the Release,
+it will be scheduled to go live at that day and time.
+
+release-secondary-balrog-scheduling
+-----------------------------------
+Performs the same function as `release-balrog-scheduling`, except for the beta channel as part of RC
+Releases.
+
+release-binary-transparency
+---------------------------
+Binary transparency creates a publicly verifiable log of binary shas for downstream
+release auditing. https://wiki.mozilla.org/Security/Binary_Transparency
+
+release-snap-repackage
+----------------------
+Generate an installer using Ubuntu's Snap format.
+
+release-flatpak-repackage
+-------------------------
+Generate an installer using Flathub's Flatpak format.
+
+release-flatpak-push
+--------------------
+Pushes Flatpak repackage on Flathub
+
+release-secondary-flatpak-push
+------------------------------
+Performs the same function as `release-flatpak-push`, except for the beta channel as part of RC
+Releases.
+
+release-notify-av-announce
+--------------------------
+Notify anti-virus vendors when a release is likely shipping.
+
+release-notify-push
+-------------------
+Notify when a release has been pushed to CDNs.
+
+release-notify-ship
+-------------------
+Notify when a release has been shipped.
+
+release-secondary-notify-ship
+-----------------------------
+Notify when an RC release has been shipped to the beta channel.
+
+release-notify-promote
+----------------------
+Notify when a release has been promoted.
+
+release-notify-started
+----------------------
+Notify when a release has been started.
+
+release-bouncer-sub
+-------------------
+Submits bouncer information for releases.
+
+release-mark-as-shipped
+-----------------------
+Marks releases as shipped in Ship-It v1
+
+release-bouncer-aliases
+-----------------------
+Update Bouncer's (download.mozilla.org) "latest" aliases.
+
+cron-bouncer-check
+------------------
+Checks Bouncer (download.mozilla.org) uptake.
+
+bouncer-locations
+-----------------
+Updates nightly bouncer locations for version bump.
+
+release-bouncer-check
+---------------------
+Checks Bouncer (download.mozilla.org) uptake as part of the release tasks.
+
+release-generate-checksums
+--------------------------
+Generate the per-release checksums along with the summaries
+
+release-generate-checksums-signing
+----------------------------------
+Sign the pre-release checksums produced by the above task
+
+release-generate-checksums-beetmover
+------------------------------------
+Submit to S3 the artifacts produced by the release-checksums task and its signing counterpart.
+
+release-final-verify
+--------------------
+Verifies the contents and package of release update MARs.
+
+release-secondary-final-verify
+------------------------------
+Verifies the contents and package of release update MARs for RC releases.
+
+release-push-langpacks
+-------------------------------
+Publishes language packs onto addons.mozilla.org.
+
+release-beetmover-signed-langpacks
+----------------------------------
+Publishes signed langpacks to archive.mozilla.org
+
+release-beetmover-signed-langpacks-checksums
+--------------------------------------------
+Publishes signed langpacks to archive.mozilla.org
+
+release-update-verify
+---------------------
+Verifies the contents and package of release update MARs.
+release-secondary-update-verify
+-------------------------------
+Verifies the contents and package of release update MARs.
+
+release-update-verify-next
+--------------------------
+Verifies the contents and package of release and updare MARs from the previous ESR release.
+
+release-update-verify-config
+----------------------------
+Creates configs for release-update-verify tasks
+
+release-secondary-update-verify-config
+--------------------------------------
+Creates configs for release-secondary-update-verify tasks
+
+release-update-verify-config-next
+---------------------------------
+Creates configs for release-update-verify-next tasks
+
+release-updates-builder
+-----------------------
+Top level Balrog blob submission & patcher/update verify config updates.
+
+release-version-bump
+--------------------
+Bumps to the next version.
+
+release-source
+--------------
+Generates source for the release
+
+release-source-signing
+----------------------
+Signs source for the release
+
+release-partner-repack
+----------------------
+Generates customized versions of releases for partners.
+
+release-partner-attribution
+---------------------------
+Generates attributed versions of releases for partners.
+
+release-partner-repack-chunking-dummy
+-------------------------------------
+Chunks the partner repacks by locale.
+
+release-partner-repack-signing
+------------------------------
+Internal signing of partner repacks.
+
+release-partner-repack-mac-signing
+----------------------------------
+
+Mac signing without notarization.
+
+Uses a self-signed certificate on level 1 environments.
+
+Shippable downstream tasks should use artifacts from build-mac-notarization.
+
+release-partner-repack-mac-notarization
+---------------------------------------
+
+Mac notarization on signingscript (linux) using rcodesign.
+
+Only available in production environments, as Apple doesn't offer a test
+endpoint for notarizing apps.
+
+Downstream tasks switch to build-mac-signing in non-shippable builds or level 1
+environments.
+
+release-partner-repack-repackage
+--------------------------------
+Repackaging of partner repacks.
+
+release-partner-repack-repackage-signing
+----------------------------------------
+External signing of partner repacks.
+
+release-partner-repack-beetmover
+--------------------------------
+Moves the partner repacks to S3 buckets.
+
+release-partner-attribution-beetmover
+-------------------------------------
+Moves the partner attributions to S3 buckets.
+
+release-partner-repack-bouncer-sub
+----------------------------------
+Sets up bouncer products for partners.
+
+release-early-tagging
+---------------------
+Utilises treescript to perform tagging that should happen near the start of a release.
+
+release-eme-free-repack
+-----------------------
+Generates customized versions of releases for eme-free repacks.
+
+release-eme-free-repack-signing
+-------------------------------
+Internal signing of eme-free repacks
+
+release-eme-free-repack-repackage
+---------------------------------
+Repackaging of eme-free repacks.
+
+release-eme-free-repack-repackage-signing
+-----------------------------------------
+External signing of eme-free repacks.
+
+release-eme-free-repack-beetmover
+---------------------------------
+Moves the eme-free repacks to S3 buckets.
+
+release-eme-free-repack-beetmover-checksums
+-------------------------------------------
+Moves the beetmover checksum for eme-free repacks to S3 buckets.
+
+release-eme-free-repack-mac-signing
+-----------------------------------
+
+Mac signing without notarization.
+
+Uses a self-signed certificate on level 1 environments.
+
+Shippable downstream tasks should use artifacts from build-mac-notarization.
+
+release-eme-free-repack-mac-notarization
+----------------------------------------
+
+Mac notarization on signingscript (linux) using rcodesign.
+
+Only available in production environments, as Apple doesn't offer a test
+endpoint for notarizing apps.
+
+Downstream tasks switch to build-mac-signing in non-shippable builds or level 1
+environments.
+
+repackage
+---------
+Repackage tasks take a signed output and package them up into something suitable
+for shipping to our users. For example, on OSX we return a tarball as the signed output
+and this task would package that up as an Apple Disk Image (.dmg)
+
+repackage-l10n
+--------------
+Repackage-L10n is a ```Repackage``` task split up to be suitable for use after l10n repacks.
+
+repackage-deb
+----------------
+These repackage tasks take signed Firefox Linux binaries and puts them in Debian packages.
+
+repackage-deb-l10n
+------------------
+These repackage tasks take the signed langpacks (.xpi) binaries and puts them in Debian packages.
+
+repackage-signing
+-----------------
+Repackage-signing take the repackaged installers (windows) and signs them.
+
+repackage-signing-l10n
+----------------------
+Repackage-signing-l10n take the repackaged installers (windows) and signs them for localized versions.
+
+mar-signing
+-----------
+Mar-signing takes the complete update MARs and signs them.
+
+mar-signing-l10n
+----------------
+Mar-signing-l10n takes the complete update MARs and signs them for localized versions.
+
+mar-signing-autograph-stage
+---------------------------
+These tasks are only to test autograph-stage, when the autograph team asks for their staging environment to be tested.
+
+repackage-msi
+-------------
+Repackage-msi takes the signed full installer and produces an msi installer (that wraps the full installer)
+Using the ```./mach repackage``` command
+
+repackage-signing-msi
+---------------------
+Repackage-signing-msi takes the repackaged msi installers and signs them.
+
+repackage-msix
+--------------
+Repackage-msix takes a (possibly unsigned) package and produces a Windows MSIX package containing no langpacks using the
+```./mach repackage``` command.
+
+These tasks are supposed intended for rapid iteration in ```try```.
+
+repackage-shippable-l10n-msix
+-----------------------------
+Repackage-msix takes a signed package and a list of signed langpacks and produces a Windows MSIX package using the
+```./mach repackage``` command.
+
+The signed langpacks are produced on Linux, since langpacks are platform agnostic.
+
+These tasks are for releases; they are complete, and therefore slower, and not intended for rapid iteration in
+```try```.
+
+repackage-signing-msix
+----------------------
+Repackage-signing-msix takes Windows MSIX packages produced in ```repackage-msix``` and signs them.
+
+repackage-signing-shippable-l10n-msix
+-------------------------------------
+Repackage-signing-shippable-l10n-msix takes Windows MSIX packages produced in
+```repackage-signing-shippable-l10n-msix``` and signs them.
+
+release-msix-push
+--------------------
+Pushes msix repackage to the Microsoft Store.
+
+repo-update
+-----------
+Repo-Update tasks are tasks that perform some action on the project repo itself,
+in order to update its state in some way.
+
+partials
+--------
+Partials takes the complete.mar files produced in previous tasks and generates partial
+updates between previous nightly releases and the new one. Requires a release_history
+in the parameters. See ``mach release-history`` if doing this manually.
+
+partials-signing
+----------------
+Partials-signing takes the partial updates produced in Partials and signs them.
+
+post-balrog-dummy
+-----------------
+Dummy tasks to consolidate balrog dependencies to avoid taskcluster limits on number of dependencies per task.
+
+post-beetmover-dummy
+--------------------
+Dummy tasks to consolidate beetmover dependencies to avoid taskcluster limits on number of dependencies per task.
+
+post-beetmover-checksums-dummy
+------------------------------
+Dummy tasks to consolidate beetmover-checksums dependencies to avoid taskcluster limits on number of dependencies per task.
+
+post-langpack-dummy
+-------------------
+Dummy tasks to consolidate language pack beetmover dependencies to avoid taskcluster limits on number of dependencies per task.
+
+post-update-verify-dummy
+------------------------
+Dummy tasks to consolidate update verify dependencies to avoid taskcluster limits on number of dependencies per task.
+
+fetch
+-----
+Tasks that obtain something from a remote service and re-expose it as a
+task artifact. These tasks are used to effectively cache and re-host
+remote content so it is reliably and deterministically available.
+
+packages
+--------
+Tasks used to build packages for use in docker images.
+
+diffoscope
+----------
+Tasks used to compare pairs of Firefox builds using https://diffoscope.org/.
+As of writing, this is mainly meant to be used in try builds, by editing
+taskcluster/ci/diffoscope/kind.yml for your needs.
+
+addon
+-----
+Tasks used to build/package add-ons.
+
+openh264-plugin
+---------------
+Tasks used to build the openh264 plugin.
+
+openh264-signing
+----------------
+Signing for the openh264 plugin.
+
+webrender
+---------
+Tasks used to do testing of WebRender standalone (without gecko). The
+WebRender code lives in gfx/wr and has its own testing infrastructure.
+
+github-sync
+------------
+Tasks used to do synchronize parts of Gecko that have downstream GitHub
+repositories.
+
+instrumented-build
+------------------
+Tasks that generate builds with PGO instrumentation enabled. This is an
+intermediate build that can be used to generate profiling information for a
+final PGO build. This is the 1st stage of the full 3-step PGO process.
+
+generate-profile
+----------------
+Tasks that take a build configured for PGO and run the binary against a sample
+set to generate profile data. This is the 2nd stage of the full 3-step PGO
+process.
+
+geckodriver-signing
+-------------------
+Signing for geckodriver binary.
+
+geckodriver-mac-notarization
+----------------------------
+Apple notarization for mac geckodriver binary.
+
+maybe-release
+-------------
+A shipitscript task that does the following:
+
+1. Checks if automated releases are disabled
+2. Checks if the changes between the current revision and the previous releases
+ revision are considered "worthwhile" for a new release.
+3. Triggers the release via ship-it, which will then create an action task.
+
+l10n-bump
+---------
+Cron-driven tasks that bump l10n-changesets files in-tree, using data from the l10n dashboard.
+
+merge-automation
+----------------
+Hook-driven tasks that automate "Merge Day" tasks during the release cycle.
+
+sentry
+------
+Interact with Sentry, such as by publishing new project releases.
+
+system-symbols
+--------------
+Generate missing macOS and windows system symbols from crash reports.
+
+system-symbols-upload
+---------------------
+Upload macOS and windows system symbols to tecken.
+
+system-symbols-reprocess
+------------------------
+Call Crash-Stats API to reprocess after symbols upload.
+
+scriptworker-canary
+-------------------
+Push tasks to try to test new scriptworker deployments.
+
+updatebot
+------------------
+Check for updates to (supported) third party libraries, and manage their lifecycle.
+
+fuzzing
+-------
+
+Performs fuzzing smoke tests
+
+startup-test
+------------
+
+Runs Firefox for a short period of time to see if it crashes
+
+l10n-cross-channel
+------------------
+
+Compiles a set of en-US strings from all shipping release trains and pushes to
+the quarantine strings repo.
+
+fxrecord
+--------
+
+Visual metrics computation of desktop Firefox startup. The performance team
+monitors this task to watch for regressions in Firefox startup performance.
+
+are-we-esmified-yet
+---------------------
+Collects data about the transition to ECMAScript Modules from JSMs.
+
+attribution
+-----------
+Injects attribution information into en-US installers.
+
+attribution-l10n
+----------------
+Injects attribution information into localized installers.
diff --git a/taskcluster/docs/kinds/test.rst b/taskcluster/docs/kinds/test.rst
new file mode 100644
index 0000000000..20d3635c5c
--- /dev/null
+++ b/taskcluster/docs/kinds/test.rst
@@ -0,0 +1,161 @@
+Test Kind
+=========
+
+The ``test`` kind defines both desktop and mobile tests for builds. Each YAML
+file referenced in ``kind.yml`` defines the full set of tests for the
+associated suite.
+
+The process of generating tests goes like this, based on a set of YAML files
+named in ``kind.yml``:
+
+ * For each build task, determine the related test platforms based on the build
+ platform. For example, a Windows 2010 build might be tested on Windows 7
+ and Windows 10. Each test platform specifies "test sets" indicating which
+ tests to run. This is configured in the file named
+ ``test-platforms.yml``.
+
+ * Each test set is expanded to a list of tests to run. This is configured in
+ the file named by ``test-sets.yml``. A platform may specify several test
+ sets, in which case the union of those sets is used.
+
+ * Each named test is looked up in the file named by ``tests.yml`` to find a
+ test description. This test description indicates what the test does, how
+ it is reported to treeherder, and how to perform the test, all in a
+ platform-independent fashion.
+
+ * Each test description is converted into one or more tasks. This is
+ performed by a sequence of transforms defined in the ``transforms`` key in
+ ``kind.yml``. See :ref:`transforms` for more information.
+
+ * The resulting tasks become a part of the task graph.
+
+.. important::
+
+ This process generates *all* test jobs, regardless of tree or try syntax.
+ It is up to a later stages of the task-graph generation (the target set and
+ optimization) to select the tests that will actually be performed.
+
+Variants
+--------
+
+Sometimes we want to run the same tests under a different Firefox context,
+usually this means with a pref set. The concept of ``variants`` was invented to
+handle this use case. A variant is a stanza of configuration that can be merged
+into each test definition. Variants are defined in the `variants.yml`_ file.
+See this file for an up to date list of active variants and the pref(s) they
+set.
+
+Each variant must conform to the
+:py:data:`~gecko_taskgraph.transforms.test.variant_description_schema`:
+
+* **description** (required) - A description explaining what the variant is for.
+* **component** (required) - The name of the component that owns the variant. It
+ should be formatted as ``PRODUCT``::``COMPONENT``.
+* **expiration** (required) - The date when the variant will be expired (maximum
+ 6 months).
+* **suffix** (required) - A suffix to apply to the task label and treeherder symbol.
+* **when** - A `json-e`_ expression that must evaluate to ``true`` for the variant
+ to be applied. The ``task`` definition is passed in as context.
+* **replace** - A dictionary that will overwrite keys in the task definition.
+* **merge** - A dictionary that will be merged into the task definition using
+ the :py:func:`~gecko_taskgraph.util.templates.merge` function.
+
+.. note::
+
+ Exceptions can be requested to have a variant without expiration (using
+ "never") if this is a shipped mode we support. Teams should contact the CI
+ team to discuss this before submitting a patch if they think their variant
+ qualifies. All exceptions will require director approval.
+
+
+Defining Variants
+~~~~~~~~~~~~~~~~~
+
+Variants can be defined in the test YAML files using the ``variants`` key. E.g:
+
+.. code-block:: yaml
+
+ example-suite:
+ variants:
+ - foo
+ - bar
+
+This will split the task into three. The original task, the task with the
+config from the variant named 'foo' merged in and the task with the config from
+the variant named 'bar' merged in.
+
+
+Composite Variants
+~~~~~~~~~~~~~~~~~~
+
+Sometimes we want to run tasks with multiple variants enabled at once. This can
+be achieved with "composite variants". Composite variants are simply two or
+more variant names joined with the ``+`` sign. Using the previous example, if
+we wanted to run both the ``foo`` and ``bar`` variants together, we could do:
+
+.. code-block:: yaml
+
+ example-suite:
+ variants:
+ - foo+bar
+
+This will first merge or replace the config of ``foo`` into the task, followed
+by the config of ``bar``. Care should be taken if both variants are replacing
+the same keys. The last variant's configuration will be the one that gets used.
+
+
+Expired Variants
+~~~~~~~~~~~~~~~~
+Ideally, when a variant is not needed anymore, it should be dropped (even if it
+has not expired). If you need to extend the expiration date, you can submit a
+patch to modify the expiration date in the `variants.yml`_ file. Variants will
+not be scheduled to run after the expiration date.
+
+If an expired variant is not dropped, the triage owner of the component will be
+notified. If the expired variant persists for an extended period, the autonag
+bot will escalate to notify the manager and director of the triage owner. Once
+at that point, we will submit a patch to remove the variant from Taskcluster and
+manifest conditions pending the triage owner / manager to review.
+
+Please subscribe to alerts from `firefox-ci <https://groups.google.com/a/mozilla.com/g/firefox-ci>`
+group in order to be aware of changes to the CI, scheduling, or the policy.
+
+.. _variants.yml: https://searchfox.org/mozilla-central/source/taskcluster/ci/test/variants.yml
+.. _json-e: https://json-e.js.org/
+
+
+Setting
+-------
+
+A test ``setting`` is the set of conditions under which a test is running.
+Aside from the chunk number, a ``setting`` uniquely distinguishes a task from
+another that is running the same set of tests. There are three types of inputs
+that make up a ``setting``:
+
+1. Platform - Bits of information that describe the underlying platform the
+ test is running on. This includes things like the operating system and
+ version, CPU architecture, etc.
+
+2. Build - Bits of information that describe the build being tested. This
+ includes things like the build type and which build attributes (like
+ ``asan``, ``ccov``, etc) are enabled.
+
+3. Runtime - Bits of information that describe the configured state of Firefox.
+ This includes things like prefs and environment variables. Note that tasks
+ should only set runtime configuration via the variants system (see
+ `Variants`_).
+
+Test ``settings`` are available in the ``task.extra.test-setting`` object in
+all test tasks. They are defined by the
+:py:func:`~gecko_taskgraph.transforms.test.set_test_setting` transform
+function.
+
+The full schema is defined in the
+:py:data:`~gecko_taskgraph.transforms.test.test_setting_description_schema`.
+
+Setting Hash
+~~~~~~~~~~~~
+
+In addition to the three top-level objects, there is also a ``_hash`` key which
+contains a hash of the rest of the setting object. This is a convenient way for
+consumers to group or compare tasks that run under the same setting.
diff --git a/taskcluster/docs/optimization/index.rst b/taskcluster/docs/optimization/index.rst
new file mode 100644
index 0000000000..c6b31163ca
--- /dev/null
+++ b/taskcluster/docs/optimization/index.rst
@@ -0,0 +1,20 @@
+Optimization Strategies
+=======================
+
+This section documents some of the `optimization`_ strategies available in
+``mozilla-central``.
+
+
+.. toctree::
+
+ schedules
+
+.. _optimization: https://taskcluster-taskgraph.readthedocs.io/en/latest/concepts/optimization.html
+
+Other Strategies
+----------------
+
+There are many other undocumented strategies available here. See the
+`taskcluster/gecko_taskgraph/optimize`_ module for more available strategies.
+
+.. _taskcluster/gecko_taskgraph/optimize: https://searchfox.org/mozilla-central/source/taskcluster/gecko_taskgraph/optimize
diff --git a/taskcluster/docs/optimization/schedules.rst b/taskcluster/docs/optimization/schedules.rst
new file mode 100644
index 0000000000..2398e8b45f
--- /dev/null
+++ b/taskcluster/docs/optimization/schedules.rst
@@ -0,0 +1,97 @@
+Schedules Optimization Strategy
+===============================
+
+Most optimization of builds and tests is handled with ``SCHEDULES``.
+The concept is this: we allocate tasks into named components, and associate a set of such components to each file in the source tree.
+Given a set of files changed in a push, we then calculate the union of components affected by each file, and remove tasks that are not tagged with any of them.
+
+This optimization system is intended to be *conservative*.
+It represents what could *possibly* be affected, rather than any intuitive notion of what tasks would be useful to run for changes to a particular file.
+For example:
+
+* ``dom/url/URL.cpp`` schedules tasks on all platform and could potentially cause failures in any test suite
+
+* ``dom/system/mac/CoreLocationLocationProvider.mm`` could not possibly affect any platform but ``macosx``, but potentially any test suite
+
+* ``python/mozbuild/mozbuild/preprocessor.py`` could possibly affect any platform, and should also schedule Python lint tasks
+
+Exclusive and Inclusive
+-----------------------
+
+The first wrinkle in this "simple" plan is that there are a lot of files, and for the most part they all affect most components.
+But there are some components which are only affected by a well-defined set of files.
+For example, a Python lint component need only be scheduled when Python files are changed.
+
+We divide the components into "exclusive" and "inclusive" components.
+Absent any other configuration, any file in the repository is assumed to affect all of the exclusive components and none of the inclusive components.
+
+Exclusive components can be thought of as a series of families.
+For example, the platform (linux, windows, macosx, android) is a component family.
+The test suite (mochitest, reftest, xpcshell, etc.) is another.
+By default, source files are associated with every component in every family.
+This means tasks tagged with an exclusive component will *always* run, unless none of the modified source files are associated with that component.
+
+But what if we only want to run a particular task when a pre-determined file is modified?
+This is where inclusive components are used.
+Any task tagged with an inclusive component will *only* be run when a source file associated with that component is modified.
+Lint tasks and well separated unittest tasks are good examples of things you might want to schedule inclusively.
+
+A good way to keep this straight is to think of exclusive platform-family components (``macosx``, ``android``, ``windows``, ``linux``) and inclusive linting components (``py-lint``, ``js-lint``).
+An arbitrary file in the repository affects all platform families, but does not necessarily require a lint run.
+But we can configure mac-only files such as ``CoreLocationLocationProvider.mm`` to affect exclusively ``macosx``, and Python files like ``preprocessor.py`` to affect ``py-lint`` in addition to the exclusive components.
+
+It is also possible to define a file as affecting an inclusive component and nothing else.
+For example, the source code and configuration for the Python linting tasks does not affect any tasks other than linting.
+
+.. note::
+
+ Most unit test suite tasks are allocated to components for their platform family and for the test suite.
+ This indicates that if a platform family is affected (for example, ``android``) then the builds for that platform should execute as well as the full test suite.
+ If only a single suite is affected (for example, by a change to a reftest source file), then the reftests should execute for all platforms.
+
+ However, some test suites, for which the set of contributing files are well-defined, are represented as inclusive components.
+ These components will not be executed by default for any platform families, but only when one or more of the contributing files are changed.
+
+Specification
+-------------
+
+Components are defined as either inclusive or exclusive in :py:mod:`mozbuild.schedules`.
+
+File Annotation
+:::::::::::::::
+
+Files are annotated with their affected components in ``moz.build`` files with stanzas like ::
+
+ with Files('**/*.py'):
+ SCHEDULES.inclusive += ['py-lint']
+
+for inclusive components and ::
+
+ with Files('*gradle*'):
+ SCHEDULES.exclusive = ['android']
+
+for exclusive components.
+Note the use of ``+=`` for inclusive compoenents (as this is adding to the existing set of affected components) but ``=`` for exclusive components (as this is resetting the affected set to something smaller).
+For cases where an inclusive component is affected exclusively (such as the python-lint configuration in the example above), that component can be assigned to ``SCHEDULES.exclusive``::
+
+ with Files('**/pep8rc'):
+ SCHEDULES.exclusive = ['py-lint']
+
+If multiple stanzas set ``SCHEDULES.exclusive``, the last one will take precedence. Thus the following
+will set ``SCHEDULES.exclusive`` to ``hpux`` for all files except those under ``docs/``. ::
+
+ with Files('**'):
+ SCHEDULES.exclusive = ['hpux']
+
+ with Files('**/docs'):
+ SCHEDULES.exclusive = ['docs']
+
+Task Annotation
+:::::::::::::::
+
+Tasks are annotated with the components they belong to using the ``"skip-unless-schedules"`` optimization, which takes a list of components for this task::
+
+ task['optimization'] = {'skip-unless-schedules': ['windows', 'gtest']}
+
+For tests, this value is set automatically by the test transform based on the suite name and the platform family, doing the correct thing for inclusive test suites.
+Tests can also use a variety of other optimizers, such as ``relevant_tests``, ``bugbug`` (uses machine learning) or ``backstop`` (ensures regressions aren't missed).
diff --git a/taskcluster/docs/parameters.rst b/taskcluster/docs/parameters.rst
new file mode 100644
index 0000000000..562ed2c54f
--- /dev/null
+++ b/taskcluster/docs/parameters.rst
@@ -0,0 +1,262 @@
+==========
+Parameters
+==========
+
+Task-graph generation takes a collection of parameters as input, in the form of
+a JSON or YAML file.
+
+During decision-task processing, some of these parameters are supplied on the
+command line or by environment variables. The decision task helpfully produces
+a full parameters file as one of its output artifacts. The other ``mach
+taskgraph`` commands can take this file as input. This can be very helpful
+when working on a change to the task graph.
+
+When experimenting with local runs of the task-graph generation, it is always
+best to find a recent decision task's ``parameters.yml`` file, and modify that
+file if necessary, rather than starting from scratch. This ensures you have a
+complete set of parameters.
+
+The properties of the parameters object are described here, divided roughly by
+topic.
+
+Push Information
+----------------
+
+``backstop``
+ Whether or not this push is a "backstop" push. That is a push where all
+ builds and tests should run to ensure regressions aren't accidentally
+ missed.
+
+``base_repository``
+ The repository from which to do an initial clone, utilizing any available
+ caching.
+
+``head_repository``
+ The repository containing the changeset to be built. This may differ from
+ ``base_repository`` in cases where ``base_repository`` is likely to be cached
+ and only a few additional commits are needed from ``head_repository``.
+
+``base_rev``
+ The previous revision before ``head_rev`` got merged into. This can be a short revision string.
+
+``head_rev``
+ The revision to check out; this can be a short revision string
+
+``base_ref``
+ Reference where ``head_rev`` got merged into. It is usually a branch or a tag.
+
+``head_ref``
+ For Mercurial repositories, this is the same as ``head_rev``. For
+ git repositories, which do not allow pulling explicit revisions, this gives
+ the symbolic ref containing ``head_rev`` that should be pulled from
+ ``head_repository``.
+
+``head_tag``
+ The tag attached to the revision, if any.
+
+``owner``
+ Email address indicating the person who made the push. Note that this
+ value may be forged and *must not* be relied on for authentication.
+
+``message``
+ The try syntax in the commit message, if any.
+
+``pushlog_id``
+ The ID from the ``hg.mozilla.org`` pushlog
+
+``pushdate``
+ The timestamp of the push to the repository that triggered this decision
+ task. Expressed as an integer seconds since the UNIX epoch.
+
+``hg_branch``
+ The mercurial branch where the revision lives in.
+
+``build_date``
+ The timestamp of the build date. Defaults to ``pushdate`` and falls back to present time of
+ taskgraph invocation. Expressed as an integer seconds since the UNIX epoch.
+
+``moz_build_date``
+ A formatted timestamp of ``build_date``. Expressed as a string with the following
+ format: %Y%m%d%H%M%S
+
+``repository_type``
+ The type of repository, either ``hg`` or ``git``.
+
+``tasks_for``
+ The ``tasks_for`` value used to generate the decision task.
+
+Tree Information
+----------------
+
+``project``
+ Another name for what may otherwise be called tree or branch or
+ repository. This is the unqualified name, such as ``mozilla-central`` or
+ ``cedar``.
+
+``level``
+ The `SCM level
+ <https://www.mozilla.org/en-US/about/governance/policies/commit/access-policy/>`_
+ associated with this tree. This dictates the names of resources used in the
+ generated tasks, and those tasks will fail if it is incorrect.
+
+Try Configuration
+-----------------
+
+``try_mode``
+ The mode in which a try push is operating. This can be one of:
+
+ * ``"try_task_config"`` - Used to configure the taskgraph.
+ * ``"try_option_syntax"`` - Used when pushing to try with legacy try syntax.
+ * ``"try_auto"`` - Used to make try pushes behave more like a push on ``autoland``.
+ * ``"try_select"`` - Used by ``mach try`` to build a list of tasks locally.
+ * ``None`` - Not a try push or ``mach try release``.
+
+``try_options``
+ The arguments given as try syntax (as a dictionary), or ``None`` if
+ ``try_mode`` is not ``try_option_syntax``.
+
+``try_task_config``
+ The contents of the ``try_task_config.json`` file, or ``{}`` if
+ ``try_mode`` is not ``try_task_config``.
+
+Test Configuration
+------------------
+
+``test_manifest_loader``
+ The test manifest loader to use as defined in ``taskgraph.util.chunking.manifest_loaders``.
+
+Target Set
+----------
+
+The "target set" is the set of task labels which must be included in a task
+graph. The task graph generation process will include any tasks required by
+those in the target set, recursively. In a decision task, this set can be
+specified programmatically using one of a variety of methods (e.g., parsing try
+syntax or reading a project-specific configuration file).
+
+``enable_always_target``
+ When ``True``, any task with the ``always_target`` attribute will be
+ included in the ``target_task_graph`` regardless of whether they were
+ filtered out by the ``target_tasks_method`` or not. Because they are not
+ part of the ``target_set``, they will still be eligible for optimization
+ when the ``optimize_target_tasks`` parameter is ``False``.
+
+``filters``
+ List of filter functions (from ``taskcluster/gecko_taskgraph/filter_tasks.py``) to
+ apply. This is usually defined internally, as filters are typically
+ global.
+
+``target_tasks_method``
+ The method to use to determine the target task set. This is the suffix of
+ one of the functions in ``taskcluster/gecko_taskgraph/target_tasks.py``.
+
+``release_history``
+ History of recent releases by platform and locale, used when generating
+ partial updates for nightly releases.
+ Suitable contents can be generated with ``mach release-history``,
+ which will print to the console by default.
+
+Optimization
+------------
+
+``optimize_strategies``
+ A python path of the form ``<module>:<object>`` containing a dictionary of
+ optimization strategies to use, overwriting the defaults.
+
+``optimize_target_tasks``
+ If true, then target tasks are eligible for optimization.
+
+``do_not_optimize``
+ Specify tasks to not optimize out of the graph. This is a list of labels.
+ Any tasks in the graph matching one of the labels will not be optimized out
+ of the graph.
+
+``existing_tasks``
+ Specify tasks to optimize out of the graph. This is a dictionary of label to taskId.
+ Any tasks in the graph matching one of the labels will use the previously-run
+ taskId rather than submitting a new task.
+
+Release Promotion
+-----------------
+
+``build_number``
+ Specify the release promotion build number.
+
+``version``
+ Specify the version for release tasks.
+
+``app_version``
+ Specify the application version for release tasks. For releases, this is often a less specific version number than ``version``.
+
+``next_version``
+ Specify the next version for version bump tasks.
+
+``release_type``
+ The type of release being promoted. One of "nightly", "beta", "esr102", "esr115", "release-rc", or "release".
+
+``release_eta``
+ The time and date when a release is scheduled to live. This value is passed to Balrog.
+
+``release_enable_partner_repack``
+ Boolean which controls repacking vanilla Firefox builds for partners.
+
+``release_enable_partner_attribution``
+ Boolean which controls adding attribution to vanilla Firefox builds for partners.
+
+``release_enable_emefree``
+ Boolean which controls repacking vanilla Firefox builds into EME-free builds.
+
+``release_partners``
+ List of partners to repack or attribute if a subset of the whole config. A null value defaults to all.
+
+``release_partner_config``
+ Configuration for partner repacks & attribution, as well as EME-free repacks.
+
+``release_partner_build_number``
+ The build number for partner repacks. We sometimes have multiple partner build numbers per release build number; this parameter lets us bump them independently. Defaults to 1.
+
+``release_product``
+ The product that is being released.
+
+``required_signoffs``
+ A list of signoffs that are required for this release promotion flavor. If specified, and if the corresponding `signoff_urls` url isn't specified, tasks that require these signoffs will not be scheduled.
+
+``signoff_urls``
+ A dictionary of signoff keys to url values. These are the urls marking the corresponding ``required_signoffs`` as signed off.
+
+
+Repository Merge Day
+--------------------
+
+``merge_config``
+ Merge config describes the repository merge behaviour, using an alias to cover which set of file replacements and version increments are required, along with overrides for the source and target repository URIs.
+
+``source_repo``
+ The clone/push URI of the source repository, such as https://hg.mozilla.org/mozilla-central
+
+``target_repo``
+ The clone/push URI of the target repository, such as https://hg.mozilla.org/releases/mozilla-beta
+
+``source_branch``
+ The firefoxtree alias of the source branch, such as 'central', 'beta'
+
+``target_branch``
+ The firefoxtree alias of the target branch, such as 'beta', 'release'
+
+``force-dry-run``
+ Don't push any results to target repositories.
+
+
+Code Review
+-----------
+
+``phabricator_diff``
+ The code review process needs to know the Phabricator Differential diff that
+ started the analysis. This parameter must start with `PHID-DIFF-`
+
+Local configuration
+-------------------
+
+``target-kind``
+ Generate only the given kind and its kind-dependencies. This is used for local inspection of the graph
+ and is not supported at run-time.
diff --git a/taskcluster/docs/partials.rst b/taskcluster/docs/partials.rst
new file mode 100644
index 0000000000..e4cb369354
--- /dev/null
+++ b/taskcluster/docs/partials.rst
@@ -0,0 +1,123 @@
+Partial Update Generation
+=========================
+
+Overview
+--------
+
+Windows, Mac and Linux releases have partial updates, to reduce
+the file size end-users have to download in order to receive new
+versions. These are created using a docker image, some Python,
+``mbsdiff``, and the tools in ``tools/update-packaging``
+
+The task has been called 'Funsize' for quite some time. This might
+make sense depending on what brands of chocolate bar are available
+near you.
+
+How the Task Works
+------------------
+
+Funsize uses a docker image that's built in-tree, named funsize-update-generator.
+The image contains some Python to examine the task definition and determine
+what needs to be done, but it downloads tools like ``mar`` and ``mbsdiff``
+from either locations specified in the task definition, or default mozilla-central
+locations.
+
+The 'extra' section of the task definition contains most of the payload, under
+the 'funsize' key. In here is a list of partials that this specific task will
+generate, and each entry includes the earlier (or 'from') version, and the most
+recent (or 'to') version, which for most releases will likely be a taskcluster
+artifact.
+
+.. code-block:: json
+
+ {
+ "to_mar": "https://tc.net/api/queue/v1/task/EWtBFqVuT-WqG3tGLxWhmA/artifacts/public/build/ach/target.complete.mar",
+ "product": "Firefox",
+ "dest_mar": "target-60.0b8.partial.mar",
+ "locale": "ach",
+ "from_mar": "http://archive.mozilla.org/pub/firefox/candidates/60.0b8-candidates/build1/update/linux-i686/ach/firefox-60.0b8.complete.mar",
+ "update_number": 2,
+ "platform": "linux32",
+ "previousVersion": "60.0b8",
+ "previousBuildNumber": "1",
+ "branch": "mozilla-beta"
+ }
+
+The 'update number' indicates how many released versions there are between 'to' and the current 'from'.
+For example, if we are building a partial update for the current nightly from the previous one, the update
+number will be 1. For the release before that, it will be 2. This lets us use generic output artifact
+names that we can rename in the later ``beetmover`` tasks.
+
+Inside the task, for each partial it has been told to generate, it will download, unpack and virus
+scan the 'from_mar' and 'to_mar', download the tools, and run ``make_incremental_update.sh`` from
+``tools/update-packaging``.
+
+If a scope is given for a set of temporary S3 credentials, the task will use a caching script,
+to allow re-use of the diffs made for larger files. Some of the larger files are not localised,
+and this allows us to save a lot of compute time.
+
+For Releases
+------------
+
+Partials are made as part of the ``promote`` task group. The previous
+versions used to create the update are specified in ship-it by
+Release Management.
+
+Nightly Partials
+----------------
+
+Since nightly releases don't appear in ship-it, the partials to create
+are determined in the decision task. This was controversial, and so here
+are the assumptions and reasons, so that when an alternative solution is
+discovered, we can assess it in context:
+
+1. Balrog is the source of truth for previous nightly releases.
+2. Re-running a task should produce the same results.
+3. A task's input and output should be specified in the definition.
+4. A task transform should avoid external dependencies. This is to
+ increase the number of scenarios in which 'mach taskgraph' works.
+5. A task graph doesn't explicitly know that it's intended for nightlies,
+ only that specific tasks are only present for nightly.
+6. The decision task is explicitly told that its target is nightly
+ using the target-tasks-method argument.
+
+a. From 2 and 3, this means that the partials task itself cannot query
+ balrog for the history, as it may get different results when re-run,
+ and hides the inputs and outputs from the task definition.
+b. From 4, anything run by 'mach taskgraph' is an inappropriate place
+ to query Balrog, even if it results in a repeatable task graph.
+c. Since these restrictions don't apply to the decision task, and given
+ 6, we can query Balrog in the decision task if the target-tasks-method
+ given contains 'nightly', such as 'nightly_desktop' or 'nightly_linux'
+
+Using the decision task involves making fewer, larger queries to Balrog,
+and storing the results for task graph regeneration and later audit. At
+the moment this data is stored in the ``parameters`` under the label
+``release_history``, since the parameters are an existing method for
+passing data to the task transforms, but a case could be made
+for adding a separate store, as it's a significantly larger number of
+records than anything else in the parameters.
+
+Nightly Partials and Beetmover
+------------------------------
+
+A release for a specific platform and locale may not have a history of
+prior releases that can be used to build partial updates. This could be
+for a variety of reasons, such as a new locale, or a hiatus in nightly
+releases creating too long a gap in the history.
+
+This means that the ``partials`` and ``partials-signing`` tasks may have
+nothing to do for a platform and locale. If this is true, then the tasks
+are filtered out in the ``transform``.
+
+This does mean that the downstream task, ``beetmover-repackage`` can not
+rely on the ``partials-signing`` task existing. It depends on both the
+``partials-signing`` and ``repackage-signing`` task, and chooses which
+to depend on in the transform.
+
+If there is a history in the ``parameters`` ``release_history`` section
+then ``beetmover-repackage`` will depend on ``partials-signing``.
+Otherwise, it will depend on ``repackage-signing``.
+
+This is not ideal, as it results in unclear logic in the task graph
+generation. It will be improved.
diff --git a/taskcluster/docs/partner-attribution.rst b/taskcluster/docs/partner-attribution.rst
new file mode 100644
index 0000000000..058000fe4e
--- /dev/null
+++ b/taskcluster/docs/partner-attribution.rst
@@ -0,0 +1,121 @@
+Partner attribution
+===================
+.. _partner attribution:
+
+In contrast to :ref:`partner repacks`, attributed builds only differ from the normal Firefox
+builds by the adding a string in the dummy windows signing certificate. We support doing this for
+full installers but not stub. The parameters of the string are carried into the telemetry system,
+tagging an install into a cohort of users. This a lighter weight process because we don't
+repackage or re-sign the builds.
+
+Parameters & Scheduling
+-----------------------
+
+Partner attribution uses a number of parameters to control how they work:
+
+* ``release_enable_partner_attribution``
+* ``release_partner_config``
+* ``release_partner_build_number``
+* ``release_partners``
+
+The enable parameter is a boolean, a simple on/off switch. We set it in shipit's
+`is_partner_enabled() <https://github.com/mozilla-releng/shipit/blob/main/api/src/shipit_api/admin/release.py#L93>`_ when starting a
+release. It's true for Firefox betas >= b8 and releases, but otherwise false, the same as
+partner repacks.
+
+``release_partner_config`` is a dictionary of configuration data which drives the task generation
+logic. It's usually looked up during the release promotion action task, using the Github
+GraphQL API in the `get_partner_config_by_url()
+<python/taskgraph.util.html#taskgraph.util.partners.get_partner_config_by_url>`_ function, with the
+url defined in `taskcluster/ci/config.yml <https://searchfox.org/mozilla-central/search?q=partner-urls&path=taskcluster%2Fci%2Fconfig.yml&case=true&regexp=false&redirect=true>`_.
+
+``release_partner_build_number`` is an integer used to create unique upload paths in the firefox
+candidates directory, while ``release_partners`` is a list of partners that should be
+attributed (i.e. a subset of the whole config). Both are intended for use when respinning a partner after
+the regular Firefox has shipped. More information on that can be found in the
+`RelEng Docs <https://moz-releng-docs.readthedocs.io/en/latest/procedures/misc-operations/off-cycle-partner-repacks-and-funnelcake.html>`_.
+
+``release_partners`` is shared with partner repacks but we don't support doing both at the same time.
+
+
+Configuration
+-------------
+
+This is done using an ``attribution_config.yml`` file which next lives to the ``default.xml`` used
+for partner repacks. There are no repos for each partner, the whole configuration exists in the one
+file because the amount of information to be tracked is much smaller.
+
+An example config looks like this:
+
+.. code-block:: yaml
+
+ defaults:
+ medium: distribution
+ source: mozilla
+ configs:
+ - campaign: sample
+ content: sample-001
+ locales:
+ - en-US
+ - de
+ - ru
+ platforms:
+ - win64-shippable
+ - win32-shippable
+ upload_to_candidates: true
+
+The four main parameters are ``medium, source, campaign, content``, of which the first two are
+common to all attributions. The combination of ``campaign`` and ``content`` should be unique
+to avoid confusion in telemetry data. They correspond to the repo name and sub-directory in partner repacks,
+so avoid any overlap between values in partner repacks and atrribution.
+The optional parameters of ``variation``, and ``experiment`` may also be specified.
+
+Non-empty lists of locales and platforms are required parameters (NB the `-shippable` suffix should be used on
+the platforms).
+
+``upload_to_candidates`` is an optional setting which controls whether the Firefox installers
+are uploaded into the `candidates directory <https://archive.mozilla.org/pub/firefox/candidates/>`_.
+If not set the files are uploaded to the private S3 bucket for partner builds.
+
+
+Repacking process
+-----------------
+
+Attribution only has two kinds:
+
+* attribution - add attribution code to the regular builds
+* beetmover - move the files to a partner-specific destination
+
+Attribution
+^^^^^^^^^^^
+
+* kinds: ``release-partner-attribution``
+* platforms: Any Windows, runs on linux
+* upstreams: ``repackage-signing`` ``repackage-signing-l10n``
+
+There is one task, calling out to `python/mozrelease/mozrelease/attribute_builds.py
+<https://hg.mozilla.org/releases/mozilla-release/file/default/python/mozrelease/mozrelease/attribute_builds.py>`_.
+
+It takes as input the repackage-signing and repackage-signing-l10n artifacts, which are all
+target.exe full installers. The ``ATTRIBUTION_CONFIG`` environment variable controls the script.
+It produces more target.exe installers.
+
+The size of ``ATTRIBUTION_CONFIG`` variable may grow large if the number of configurations
+increases, and it may be necesssary to pass the content of ``attribution_config.yml`` to the
+script instead, or via an artifact of the promotion task.
+
+Beetmover
+^^^^^^^^^
+
+* kinds: ``release-partner-attribution-beetmover``
+* platforms: N/A, scriptworker
+* upstreams: ``release-partner-attribution``
+
+Moves and renames the artifacts to their public location in the `candidates directory
+<https://archive.mozilla.org/pub/firefox/candidates/>`_, or a private S3 bucket. There is one task
+for public artifacts and another for private.
+
+Each task will have the ``project:releng:beetmover:action:push-to-partner`` scope, with public uploads having
+``project:releng:beetmover:bucket:release`` and private uploads using
+``project:releng:beetmover:bucket:partner``. There's a partner-specific code path in
+`beetmoverscript <https://github.com/mozilla-releng/scriptworker-scripts/tree/master/beetmoverscript>`_.
diff --git a/taskcluster/docs/partner-repacks.rst b/taskcluster/docs/partner-repacks.rst
new file mode 100644
index 0000000000..f2342dbbc3
--- /dev/null
+++ b/taskcluster/docs/partner-repacks.rst
@@ -0,0 +1,255 @@
+Partner repacks
+===============
+.. _partner repacks:
+
+We create slightly-modified Firefox releases for some extra audiences
+
+* EME-free builds, which disable DRM plugins by default
+* Funnelcake builds, which are used for Mozilla experiments
+* partner builds, which customize Firefox for external partners
+
+We use the phrase "partner repacks" to refer to all these builds because they
+use the same process of repacking regular Firefox releases with additional files.
+The specific differences depend on the type of build.
+
+We produce partner repacks for some beta builds, and for release builds, as part of the release
+automation. We don't produce any files to update these builds as they are handled automatically
+(see updates_).
+
+We also produce :ref:`partner attribution` builds, which are Firefox Windows installers with a cohort identifier
+added.
+
+Parameters & Scheduling
+-----------------------
+
+Partner repacks have a number of parameters which control how they work:
+
+* ``release_enable_emefree``
+* ``release_enable_partner_repack``
+* ``release_partner_config``
+* ``release_partner_build_number``
+* ``release_partners``
+
+We split the repacks into two 'paths', EME-free and everything else, to retain some
+flexibility over enabling/disabling them separately. This costs us some duplication of the kinds
+in the repacking stack. The two enable parameters are booleans to turn these two paths
+on/off. We set them in shipit's `is_partner_enabled() <https://github.com/mozilla-releng/shipit/blob/main/api/src/shipit_api/admin/release.py#L93>`_ when starting a
+release. They're both true for Firefox betas >= b8 and releases, but otherwise disabled.
+
+``release_partner_config`` is a dictionary of configuration data which drives the task generation
+logic. It's usually looked up during the release promotion action task, using the Github
+GraphQL API in the `get_partner_config_by_url()
+<python/taskgraph.util.html#taskgraph.util.partners.get_partner_config_by_url>`_ function, with the
+url defined in `taskcluster/ci/config.yml <https://searchfox
+.org/mozilla-release/search?q=regexp%3A^partner+path%3Aconfig.yml&redirect=true>`_.
+
+``release_partner_build_number`` is an integer used to create unique upload paths in the firefox
+candidates directory, while ``release_partners`` is a list of partners that should be
+repacked (i.e. a subset of the whole config). Both are intended for use when respinning a few partners after
+the regular Firefox has shipped. More information on that can be found in the
+`RelEng Docs <https://moz-releng-docs.readthedocs.io/en/latest/procedures/misc-operations/off-cycle-partner-repacks-and-funnelcake.html>`_.
+
+Most of the machine time for generating partner repacks takes place in the `promote` phase of the
+automation, or `promote_rc` in the case of X.0 release candidates. The EME-free builds are copied into the
+Firefox releases directory in the `push` phase, along with the regular bits.
+
+
+Configuration
+-------------
+
+We need some configuration to know *what* to repack, and *how* to do that. The *what* is defined by
+default.xml manifests, as used with the `repo <https://gerrit.googlesource.com/git-repo>`_ tool
+for git. The `default.xml for EME-free <https://github
+.com/mozilla-partners/mozilla-EME-free-manifest/blob/master/default.xml>`_ illustrates this::
+
+ <?xml version="1.0" ?>
+ <manifest>
+ <remote fetch="git@github.com:mozilla-partners/" name="mozilla-partners"/>
+ <remote fetch="git@github.com:mozilla/" name="mozilla"/>
+
+ <project name="repack-scripts" path="scripts" remote="mozilla-partners" revision="master"/>
+ <project name="build-tools" path="scripts/tools" remote="mozilla" revision="master"/>
+ <project name="mozilla-EME-free" path="partners/mozilla-EME-free" remote="mozilla-partners" revision="master"/>
+ </manifest>
+
+The repack-scripts and build-tools repos are found in all manifests, and then there is a list of
+partner repositories which contain the *how* configuration. Some of these repos are not publicly
+visible.
+
+A partner repository may contain multiple configurations inside the ``desktop`` directory. Each
+subdirectory must contain a ``repack.cfg`` and a ``distribution`` directory, the latter
+containing the customizations needed. Here's `EME-free's repack.cfg <https://github.com/mozilla-partners/mozilla-EME-free/blob/master/desktop/mozilla-EME-free/repack.cfg>`_::
+
+ aus="mozilla-EMEfree"
+ dist_id="mozilla-EMEfree"
+ dist_version="1.0"
+ linux-i686=false
+ linux-x86_64=false
+ locales="ach af an ar" # truncated for display here
+ mac=true
+ win32=true
+ win64=true
+ output_dir="%(platform)s-EME-free/%(locale)s"
+
+ # Upload params
+ upload_to_candidates=true
+
+Note the list of locales and boolean toggles for enabling platforms. The ``output_dir`` and
+``upload_to_candidates`` parameters are only present for repacks which are uploaded into the
+`candidates directory <https://archive.mozilla.org/pub/firefox/candidates/>`_.
+
+All customizations will be placed in the ``distribution`` directory at the root of the Firefox
+install directory, or in the case of OS X in ``Firefox.app/Contents/Resources/distribution/``. A
+``distribution.ini`` file is the minimal requirement, here's an example from `EME-free
+<https://github.com/mozilla-partners/mozilla-EME-free/blob/master/desktop/mozilla-EME-free/distribution
+/distribution.ini>`_::
+
+ # Partner Distribution Configuration File
+ # Author: Mozilla
+ # Date: 2015-03-27
+
+ [Global]
+ id=mozilla-EMEfree
+ version=1.0
+ about=Mozilla Firefox EME-free
+
+ [Preferences]
+ media.eme.enabled=false
+ app.partner.mozilla-EMEfree="mozilla-EMEfree"
+
+Extensions and other customizations might also be included in repacks.
+
+
+Repacking process
+-----------------
+
+The stack of tasks to create partner repacks is broadly similar to localised nightlies and
+regular releases. The basic form is
+
+* partner repack - insert the customisations into the the regular builds
+* signing - sign the internals which will become the installer (Mac only)
+* repackage - create the "installer" (Mac and Windows)
+* chunking dummy - a linux only bridge to ...
+* repackage signing - sign the "installers" (mainly Windows)
+* beetmover - move the files to a partner-specific destination
+* beetmover checksums - possibly beetmove the checksums from previous step
+
+Some key divergences are:
+
+* all intermediate artifacts are uploaded with a ``releng/partner`` prefix
+* we don't insert any binaries on Windows so no need for internal signing
+* there's no need to create any complete mar files at the repackage step
+* we support both public and private destinations in beetmover
+* we only need beetmover checksums for EME-free builds
+
+
+Partner repack
+^^^^^^^^^^^^^^
+
+* kinds: ``release-partner-repack`` ``release-eme-free-repack``
+* platforms: Typically all (but depends on what's enabled by partner configuration)
+* upstreams: ``build-signing`` ``l10n-signing``
+
+There is one task per platform in this step, calling out to `scripts/desktop_partner_repacks.py
+<https://hg.mozilla.org/mozilla-central/file/default/testing/mozharness/scripts
+/desktop_partner_repacks.py>`_ in mozharness to prepare an environment and then perform the repacks.
+The actual repacking is done by `python/mozrelease/mozrelease/partner_repack.py
+<https://hg.mozilla.org/mozilla-central/file/default/python/mozrelease/mozrelease/partner_repack.py>`_.
+
+It takes as input the build-signing and l10n-signing artifacts, which are all zip/tar.gz/tar.bz2
+archives, simplifying the repack process by avoiding dmg and exe. Windows produces ``target.zip``
+& ``setup.exe``, Mac is ``target.tar.gz``, Linux is the final product ``target.tar.bz2``
+(beetmover handles pretty naming as usual).
+
+Signing
+^^^^^^^
+
+* kinds: ``release-partner-repack-mac-signing`` ``release-partner-repack-mac-notarization``
+* platforms: Mac
+* upstreams: ``release-partner-repack`` ``release-eme-free-repack``
+
+We chunk the single partner repack task out to a signing task with 5 artifacts each. For
+example, EME-free will become 19 tasks. We collect the target.tar.gz from the
+upstream, and return a signed target.tar.gz. We use a ``target.dmg`` artifact for
+nightlies/regular releases, but this is converted to ``target.tar.gz`` by the signing
+scriptworker before sending it to the signing server, so partners are equivalent. The ``mac-signing`` task
+signs the binary, and then ``mac-notarization`` submits it to Apple and staples the ticket to it.
+
+Repackage
+^^^^^^^^^
+
+* kinds: ``release-partner-repack-repackage`` ``release-eme-free-repack-repackage``
+* platforms: Mac & Windows
+* upstreams:
+
+ * Mac: ``release-partner-signing`` ``release-eme-free-signing``
+ * Windows: ``release-partner-repack`` ``release-eme-free-repack``
+
+Mac has a repackage job for each of the signing tasks. Windows repackages are chunked here to
+the same granularity as mac. Takes ``target.zip`` & ``setup.exe`` to produce ``target.exe`` on
+Windows, and ``target.tar.gz`` to produce ``target.dmg`` on Mac. There's no need to produce any
+complete.mar files here like regular release bits do because we can reuse those.
+
+Chunking dummy
+^^^^^^^^^^^^^^
+
+* kinds: ``release-partner-repack-chunking-dummy``
+* platforms: Linux
+* upstreams: ``release-partner-repack``
+
+We're need Linux chunked at the next step so this dummy takes care of that for the relatively simple path
+Linux follows. One task per sub config+locale combination, the same as Windows and Mac. This doesn't need to
+exist for EME-free because we don't need to create Linux builds there.
+
+Repackage Signing
+^^^^^^^^^^^^^^^^^
+
+* kinds: ``release-partner-repack-repackage-signing`` ``release-eme-free-repack-repackage-signing``
+* platforms: All
+* upstreams:
+
+ * Mac & Windows: ``release-partner-repackage`` ``release-eme-free-repackage``
+ * Linux: ``release-partner-repack-chunking-dummy``
+
+This step GPG signs all platforms, and authenticode signs the Windows installer.
+
+Beetmover
+^^^^^^^^^
+
+* kinds: ``release-partner-repack-beetmover`` ``release-eme-free-repack-beetmover``
+* platforms: All
+* upstreams: ``release-partner-repack-repackage-signing`` ``release-eme-free-repack-repackage-signing``
+
+Moves and renames the artifacts to their public location in the `candidates directory
+<https://archive.mozilla.org/pub/firefox/candidates/>`_, or a private S3 bucket. Each task will
+have the ``project:releng:beetmover:action:push-to-partner`` scope, with public uploads having
+``project:releng:beetmover:bucket:release`` and private uploads using
+``project:releng:beetmover:bucket:partner``. The ``upload_to_candidates`` key in the partner config
+controls the second scope. There's a separate partner code path in `beetmoverscript <https://github.com/mozilla-releng/scriptworker-scripts/tree/master/beetmoverscript>`_.
+
+Beetmover checksums
+^^^^^^^^^^^^^^^^^^^
+
+* kinds: ``release-eme-free-repack-beetmover-checksums``
+* platforms: Mac & Windows
+* upstreams: ``release-eme-free-repack-repackage-beetmover``
+
+The EME-free builds should be present in our SHA256SUMS file and friends (`e.g. <https://archive
+.mozilla.org/pub/firefox/releases/61.0/SHA256SUMS>`_) so we beetmove the target.checksums from
+the beetmover tasks into the candidates directory. They get picked up by the
+``release-generate-checksums`` kind.
+
+.. _updates:
+
+Updates
+-------
+
+It's very rare to need to update a partner repack differently from the original
+release build but we retain that capability. A partner build with distribution name ``foo``,
+based on a release Firefox build, will query for an update on the ``release-cck-foo`` channel. If
+the update server `Balrog <http://mozilla-balrog.readthedocs.io/en/latest/>`_ finds no rule for
+that channel it will fallback to the ``release`` channel. The update files for the regular releases do not
+modify the ``distribution/`` directory, so the customizations are not modified.
+
+`Bug 1430254 <https://bugzilla.mozilla.org/show_bug.cgi?id=1430254>`_ is an example of an exception to this
+logic.
diff --git a/taskcluster/docs/platforms.rst b/taskcluster/docs/platforms.rst
new file mode 100644
index 0000000000..e73f1cb82e
--- /dev/null
+++ b/taskcluster/docs/platforms.rst
@@ -0,0 +1,190 @@
+Platforms in the CI
+===================
+
+
+.. https://raw.githubusercontent.com/mozilla/treeherder/HEAD/ui/helpers/constants.js
+ awk -e /thPlatformMap = {/,/};/ constants.js |grep ""|cut -d: -f2|sed -e s/^/ /|sed -e "s/$/ ,, /g"
+ TODO:
+ * Leverage verify_docs - https://bugzilla.mozilla.org/show_bug.cgi?id=1636400
+ * Add a new column (when executed ? ie always, rarely, etc)
+ * asan reporter isn't listed for mac os x
+
+Build Platforms
+---------------
+
+.. csv-table::
+ :header: "Platform", "Owner", "Why?"
+ :widths: 40, 20, 40
+
+ Linux, ,
+ Linux DevEdition, ,
+ Linux shippable, ,
+ Linux x64, ,
+ Linux x64 addon, ,
+ Linux x64 DevEdition, ,
+ Linux x64 WebRender Shippable, Jeff Muizelaar, Build with WebRender
+ Linux x64 WebRender, Jeff Muizelaar, Build with WebRender
+ Linux x64 shippable, , "| What we ship to our users.
+ | Builds with PGO"
+ Linux x64 NoOpt, , "| Developer build - Disable optimizations, enable debug options
+ | Only runs on m-c"
+ Linux AArch64, ,
+ OS X 10.14, ,
+ OS X Cross Compiled, ,
+ OS X 10.14 shippable, ,
+ OS X Cross Compiled shippable, , What we ship to our users
+ OS X Cross Compiled NoOpt, , "| Developer build - Disable optimizations, enable debug options
+ | Only runs on m-c"
+ OS X Cross Compiled addon, ,
+ OS X Cross Compiled DevEdition, ,
+ OS X 10.14, ,
+ OS X 10.14 WebRender, Jeff Muizelaar, Build with WebRender
+ OS X 10.14 Shippable, ,
+ OS X 10.14 WebRender Shippable, Jeff Muizelaar, Build with WebRender
+ OS X 10.14 DevEdition, ,
+ Windows 2012, ,
+ Windows 2012 shippable, , What we ship to our users
+ Windows 2012 addon, ,
+ Windows 2012 NoOpt, , "| Developer build - Disable optimizations, enable debug options
+ | Only runs on m-c"
+ Windows 2012 DevEdition, ,
+ Windows 2012 x64, ,
+ Windows 2012 x64 shippable, ,
+ Windows 2012 AArch64, ,
+ Windows 2012 AArch64 Shippable, ,
+ Windows 2012 AArch64 DevEdition, ,
+ Windows 2012 x64 addon, ,
+ Windows 2012 x64 NoOpt, , "| Developer build - Disable optimizations, enable debug options
+ | Only runs on m-c"
+ Windows 2012 x64 DevEdition, ,
+ Windows MinGW, Tom Ritter, "| the Tor project uses MinGW; make sure we test that for them
+ | Only runs on autoland, m-c and m-esr"
+ Android 4.1 API16+, , "| All Android jobs are for GeckoView. Fenix nightly uses m-c, Fenix beta => m-b, Fenix release => m-r and Focus uses m-r.
+ | We run these tests in the CI to make sure that GeckoView tests do not regress."
+ Android 4.1 API16+ Beta, Agi Sferro, To ship/test Android 4.1 on arm v7 CPU
+ Android 4.1 API16+ Release, , To ship/test Android 4.1 on arm v7 CPU
+ Android 4.1 API16+ GeckoView multi-arch fat AAR, ,
+ Android 5.0 AArch64, ,
+ Android 5.0 AArch64 Beta, ,
+ Android 5.0 AArch64 Release, ,
+ Android 5.0 x86-64, ,
+ Android 5.0 x86-64 Beta, ,
+ Android 5.0 x86-64 Release, ,
+ Android 7.0 x86, ,
+ Android 7.0 x86 Beta, ,
+ Android 7.0 x86 Release, ,
+ Android 7.0 x86-64, ,
+ Android 7.0 x86-64 WebRender, Kris Taeleman, Build and test GeckoView with WebRender
+ Android 7.0 x86-64 Beta, ,
+ Android 7.0 x86-64 Release, ,
+ Android 7.0 MotoG5, ,
+ Android 8.0 Pixel2, ,
+ Android 8.0 Pixel2 WebRender, Kris Taeleman, Build and test GeckoView with WebRender
+ Android 8.0 Pixel2 AArch64, ,
+ Android 8.0 Pixel2 AArch64 WebRender, Kris Taeleman, Build and test GeckoView with WebRender
+ Android, ,
+
+Testing configurations
+----------------------
+
+We have some platforms used to run the tests to make sure they run correctly on different versions of the operating systems.
+
+.. csv-table::
+ :header: "Platform", "Owner", "Why?"
+ :widths: 40, 20, 40
+
+ Linux 18.04 shippable, ,
+ Linux 18.04 x64, ,
+ Linux 18.04 x64 DevEdition, ,
+ Linux 18.04 x64 WebRender Shippable, Jeff Muizelaar, Build with WebRender for testing
+ Linux 18.04 x64 WebRender, Jeff Muizelaar, Build with WebRender for testing
+ Linux 18.04 x64 shippable, ,
+ Linux 18.04 x64 Stylo-Seq, ,
+ Windows 7, ,
+ Windows 7 DevEdition, ,
+ Windows 7 Shippable, ,
+ Windows 7 MinGW, Tom Ritter, "| the Tor project uses MinGW; make sure we test that for them
+ | Only runs on autoland, m-c and m-esr"
+ Windows 10 x64, ,
+ Windows 10 x64 DevEdition, ,
+ Windows 10 x64 Shippable, ,
+ Windows 10 x64 WebRender Shippable, Jeff Muizelaar, Build with WebRender for testing
+ Windows 10 x64 WebRender, Jeff Muizelaar, Build with WebRender for testing
+ Windows 10 x64 2017 Ref HW, ,
+ Windows 10 x64 MinGW, Tom Ritter, "| the Tor project uses MinGW; make sure we test that for them
+ | Only runs on autoland, m-c and m-esr"
+ Windows 10 AArch64, ,
+
+
+Quality platforms
+-----------------
+
+We have many platforms used to run various quality tools. They aren't directly focussing on user quality but on code quality,
+or prevening some classes of errors (memory, threading, etc).
+
+.. csv-table::
+ :header: "Platform", "Owner", "Why?"
+ :widths: 40, 20, 40
+
+ Linux 18.04 x64 tsan, Christian Holler, Identify threading issues with :ref:`ThreadSanitizer <Thread Sanitizer>`
+ Linux x64 asan, "| Christian Holler
+ | Tyson Smith (ubsan)", "| Identify memory issues with :ref:`Address Sanitizer`.
+ | Also includes the UndefinedBehaviorSanitizer"
+ Linux x64 WebRender asan, "| Christian Holler
+ | Tyson Smith (ubsan)", "| Identify memory issues with :ref:`Address Sanitizer`.
+ | Also includes the UndefinedBehaviorSanitizer"
+ Linux x64 asan reporter, Christian Holler, Generate :ref:`ASan Nightly Project <ASan Nightly>` builds
+ Linux x64 CCov, Marco Castelluccio , Collect :ref:`Code coverage` information to identify what is tested (or not)
+ Linux 18.04 x64 asan, "| Christian Holler
+ | Tyson Smith (ubsan)", "| Identify memory issues with :ref:`Address Sanitizer`.
+ | Also includes the UndefinedBehaviorSanitizer"
+ Linux 18.04 x64 WebRender asan, "| Christian Holler
+ | Tyson Smith (ubsan)", "| Identify memory issues with :ref:`Address Sanitizer`.
+ | Also includes the UndefinedBehaviorSanitizer"
+ Linux 18.04 x64 CCov, Marco Castelluccio , Collect :ref:`Code coverage` information to identify what is tested (or not)
+ OS X Cross Compiled CCov, Marco Castelluccio , Collect :ref:`Code coverage` information to identify what is tested (or not)
+ OS X 10.14 Cross Compiled CCov, Marco Castelluccio , Collect :ref:`Code coverage` information to identify what is tested (or not)
+ Windows 2012 x64 asan reporter, Christian Holler, Generate :ref:`ASan Nightly Project <ASan Nightly>` builds
+ Windows 10 x64 CCov, Marco Castelluccio , Collect :ref:`Code coverage` information to identify what is tested (or not)
+ Android 4.0 API16+ CCov, Marco Castelluccio , Collect :ref:`Code coverage` information to identify what is tested (or not)
+ Android 4.3 API16+ CCov, Marco Castelluccio , Collect :ref:`Code coverage` information to identify what is tested (or not)
+ Diffoscope, Mike Hommey, Make sure the build remains reproducible
+ Linting, "| Sylvestre Ledru
+ | Andrew Halberstadt", "| Identify :ref:`code quality` earlier
+ | Also contains some Bugzilla
+ | Run on all branches (except the Bugzilla task)"
+ Documentation, "| Sylvestre Ledru
+ | Andrew Halberstadt", "| :ref:`Documentation jobs <Managing Documentation>`
+ | integration repository plus mozilla-central"
+
+
+
+Infrastructure tasks
+--------------------
+
+The decision tasks responsible for creating the task graph.
+
+.. csv-table::
+ :header: "Task", "Owner", "Why?"
+ :widths: 40, 20, 40
+
+ Gecko Decision Task, , Define the tasks to run and their order
+ Firefox Release Tasks, ,
+ Devedition Release Tasks, ,
+ Fennec Beta Tasks, ,
+ Fennec Release Tasks, ,
+ Thunderbird Release Tasks, ,
+
+
+Others
+------
+
+.. csv-table::
+ :header: "Platform", "Owner", "Why?"
+ :widths: 40, 20, 40
+
+ Docker Images, ,
+ Fetch, ,
+ Packages, ,
+ Toolchains, ,
+ Other, ,
diff --git a/taskcluster/docs/reference.rst b/taskcluster/docs/reference.rst
new file mode 100644
index 0000000000..813a3f630a
--- /dev/null
+++ b/taskcluster/docs/reference.rst
@@ -0,0 +1,12 @@
+Reference
+=========
+
+These sections contain some reference documentation for various aspects of
+taskgraph generation.
+
+.. toctree::
+
+ kinds
+ parameters
+ attributes
+ caches
diff --git a/taskcluster/docs/release-promotion-action.rst b/taskcluster/docs/release-promotion-action.rst
new file mode 100644
index 0000000000..e7f183f2b1
--- /dev/null
+++ b/taskcluster/docs/release-promotion-action.rst
@@ -0,0 +1,158 @@
+Release Promotion Action
+========================
+
+The release promotion action is how Releng triggers `release promotion`_
+taskgraphs. The one action covers all release promotion needs: different
+*flavors* allow for us to trigger the different :ref:`release promotion phases`
+for each product. The input schema and release promotion flavors are defined in
+the `release promotion action`_.
+
+.. _snowman model:
+
+The snowman model
+-----------------
+
+The `release promotion action`_ allows us to chain multiple taskgraphs (aka graphs, aka task groups) together.
+Essentially, we're using `optimization`_ logic to replace task labels in the
+current taskgraph with task IDs from the previous taskgraph(s).
+
+This is the ``snowman`` model. If you request the body of
+the snowman and point at the base, we only create the middle section of the snowman.
+If you request the body of the snowman and don't point it at the base, we build the
+first base and body of the snowman from scratch.
+
+For example, let's generate a task ``t2`` that depends on ``t1``. Let's call our new taskgraph ``G``::
+
+ G
+ |
+ t1
+ |
+ t2
+
+Task ``t2`` will wait on task ``t1`` to finish, and downloads some artifacts from task ``t1``.
+
+Now let's specify task group ``G1`` and ``G2`` as previous task group IDs. If task ``t1`` is in one of them, ``t2`` will depend on that task, rather than spawning a new ``t1`` in task group ``G``::
+
+ G1 G2 G
+ | | |
+ t1 t1 |
+ \______ |
+ \|
+ t2
+
+ or
+
+ G1 G2 G
+ | | |
+ t1 t0 |
+ \________________ |
+ \|
+ t2
+
+For a more real-world example::
+
+ G
+ |
+ build
+ |
+ signing
+ |
+ l10n-repack
+ |
+ l10n-signing
+
+If we point the ``promote`` task group G at the on-push build task group ``G1``, the l10n-repack job will depend on the previously finished build and build-signing tasks::
+
+ G1 G
+ | |
+ build |
+ | |
+ signing |
+ \_________|
+ |
+ l10n-repack
+ |
+ l10n-signing
+
+We can also explicitly exclude certain tasks from being optimized out.
+We currently do this by specifying ``rebuild_kinds`` in the action; these
+are `kinds`_ that we want to explicitly rebuild in the current task group,
+even if they existed in previous task groups. We also allow for specifying a list of
+``do_not_optimize`` labels, which would be more verbose and specific than
+specifying kinds to rebuild.
+
+Release promotion action mechanics
+----------------------------------
+
+There are a number of inputs defined in the `release promotion action`_. Among these are the ``previous_graph_ids``, which is an ordered list of taskGroupIds of the task groups that we want to build our task group, off of. In the :ref:`snowman model`, these define the already-built portions of the snowman.
+
+The action downloads the ``parameters.yml`` from the initial ``previous_graph_id``, which matches the decision- or action- taskId. (See :ref:`taskid vs taskgroupid`.) This is most likely the decision task of the revision to promote, which is generally the same revision the release promotion action is run against.
+
+.. note:: If the parameters have been changed since the build happened, *and* we explicitly want the new parameters for the release promotion action task, the first ``previous_graph_id`` should be the new revision's decision task. Then the build and other previous action task group IDs can follow, so we're still replacing the task labels with the task IDs from the original revision.
+
+The action then downloads the various ``label-to-taskid.json`` artifacts from each previous task group, and builds an ``existing_tasks`` parameter of which labels to replace with which task IDs. Each successive update to this dictionary overwrites existing keys with new task IDs, so the rightmost task group with a given label takes precedence. Any labels that match the ``do_not_optimize`` list or that belong to tasks in the ``rebuild_kinds`` list are excluded from the ``existing_tasks`` parameter.
+
+Once all that happens, and we've gotten our configuration from the original parameters and our action config and inputs, we run the decision task function with our custom parameters. The `optimization`_ phase replaces any ``existing_tasks`` with the task IDs we've built from the previous task groups.
+
+Release Promotion Flavors
+-------------------------
+
+For the most part, release promotion flavors match the pattern ``phase_product``,
+e.g. ``promote_firefox``, ``push_devedition``, or ``ship_firefox``.
+
+We've added ``_rc`` suffix flavors, to deal with special RC behavior around rolling out updates using a different rate or channel.
+
+We are planning on adding ``_partners`` suffix flavors, to allow for creating partner repacks off-cycle.
+
+The various flavors are defined in the `release promotion action`_.
+
+Triggering the release promotion action via Treeherder
+------------------------------------------------------
+
+Currently, we're able to trigger this action via `Treeherder`_; we sometimes use this method for testing purposes. This is powerful, because we can modify the inputs directly, but is less production friendly, because it requires us to enter the inputs manually. At some point we may disable the ability to trigger the action via Treeherder.
+
+This requires being signed in with the right scopes. On `Release Promotion Projects`_, there's a dropdown in the top right of a given revision. Choose ``Custom Push Action``, then ``Release Promotion``. The inputs are specifiable as raw yaml on the left hand column.
+
+Release promotion action taskId and taskGroupId
+-----------------------------------------------
+
+The ``taskGroupId`` of a release promotion action task will be the same as the ``taskId`` of the decision task.
+
+The ``taskGroupId`` of a release promotion *task group* will be the same as the ``taskId`` of the release promotion action task.
+
+So:
+
+* for a given push, the decision taskId ``D`` will create the taskGroupId ``D``
+* we create a release promotion action task with the taskId ``A``. The ``A`` task will be part of the ``D`` task group, but will spawn a task group with the taskGroupId ``A``.
+
+Another way of looking at it:
+
+* If you're looking at a task ``t1`` in the action taskGroup, ``t1``'s taskGroupId is the action task's taskId. (In the above example, this would be ``A``.)
+* Then if you look at the action task's taskGroupId, that's the original decision task's taskId. (In the above example, this would be ``D``.)
+
+Testing and developing the release promotion action
+---------------------------------------------------
+
+To test the release promotion, action, we can use ``./mach taskgraph test-action-callback`` to debug.
+
+The full command for a ``promote_firefox`` test might look like::
+
+ ./mach taskgraph test-action-callback \
+ --task-group-id LR-xH1ViTTi2jrI-N1Mf2A \
+ --input /src/gecko/params/promote_firefox.yml \
+ -p /src/gecko/params/maple-promote-firefox.yml \
+ release_promotion_action > ../promote.json
+
+The input file (in the above example, that would be ``/src/gecko/params/promote_firefox.yml``), contains the action inputs. The input schema is defined in the `release promotion action`_. Previous example inputs are embedded in previous promotion task group action task definitions (``task.extra.action.input``).
+
+The ``parameters.yml`` file is downloadable from a previous decision or action task.
+
+.. _release promotion: release-promotion.html
+.. _optimization: optimization.html
+.. _kinds: kinds.html
+.. _release promotion action: https://searchfox.org/mozilla-central/source/taskcluster/gecko_taskgraph/actions/release_promotion.py
+.. _Treeherder: https://treeherder.mozilla.org
+.. _Release Promotion Projects: https://searchfox.org/mozilla-central/search?q=RELEASE_PROMOTION_PROJECTS&path=taskcluster/gecko_taskgraph/util/attributes.py
+.. _releasewarrior docs: https://github.com/mozilla-releng/releasewarrior-2.0/blob/master/docs/release-promotion/desktop/howto.md#how
+.. _trigger_action.py: https://searchfox.org/build-central/source/tools/buildfarm/release/trigger_action.py#118
+.. _.taskcluster.yml: https://searchfox.org/mozilla-central/source/.taskcluster.yml
diff --git a/taskcluster/docs/release-promotion.rst b/taskcluster/docs/release-promotion.rst
new file mode 100644
index 0000000000..c0239351cc
--- /dev/null
+++ b/taskcluster/docs/release-promotion.rst
@@ -0,0 +1,54 @@
+Release Promotion
+=================
+
+Release promotion allows us to ship the same compiled binaries that we've
+already tested.
+
+In the olden days, we used to re-compile our release builds with separate
+configs, which led to release-specific bugs which weren't caught by continuous
+integration tests. This meant we required new builds at release time, which
+increased the end-to-end time for a given release significantly. Release
+promotion removes these anti-patterns.
+
+By running our continuous integration tests against our shippable builds, we
+have a higher degree of confidence at release time. By separating the build
+phase tasks (compilation, packaging, and related tests) from the promotion
+phase tasks, we can schedule each phase at their own independent cadence, as
+needed, and the end-to-end time for promotion is reduced significantly.
+
+.. _release promotion phases:
+
+Release Promotion Phases
+------------------------
+
+Currently, we have the ``build``, ``promote``, ``push``, and ``ship`` phases.
+
+The ``build`` phase creates ``shippable builds``. These optimize for correctness
+over speed, and are designed to be of shipping quality, should we decide to
+ship that revision of code. These are triggered on push on release branches.
+(We also schedule ``depend`` builds on most branches, which optimize for speed
+over correctness, so we can detect new code bustage sooner.)
+
+The ``promote`` phase localizes the shippable builds, creates any update MARs,
+and populates the candidates directories on S3. (On Android, we rebuild, because
+we haven't been successful repacking the APK.)
+
+The ``push`` phase pushes the candidates files to the appropriate release directory
+on S3.
+
+The ``ship`` phase ships or schedules updates to users. These are often at a
+limited rollout percentage or are dependent on multiple downstream signoffs to
+fully ship.
+
+In-depth relpro guide
+---------------------
+
+.. toctree::
+
+ release-promotion-action
+ balrog
+ setting-up-an-update-server
+ partials
+ signing
+ partner-repacks
+ partner-attribution
diff --git a/taskcluster/docs/signing.rst b/taskcluster/docs/signing.rst
new file mode 100644
index 0000000000..d3a3a902bd
--- /dev/null
+++ b/taskcluster/docs/signing.rst
@@ -0,0 +1,188 @@
+Signing
+=======
+
+Overview
+--------
+
+Our `code signing`_ happens in discrete tasks, for both performance reasons
+and to limit which machines have access to the signing servers and keys.
+
+In general, the binary-to-be-signed is generated in one task, and the request
+to sign it is in a second task. We verify the request via the `chain of trust`_,
+sign the binary, then upload the signed binary or original binary + detached
+signature as artifacts.
+
+How the Task Works
+------------------
+
+Scriptworker_ verifies the task definition and the upstream tasks until it
+determines the graph comes from a trusted tree; this is `chain of trust`_
+verification. Part of this verification is downloading and verifying the shas
+of the ``upstreamArtifacts`` in the task payload.
+
+An example signing task payload:
+
+::
+
+ {
+ "payload": {
+ "upstreamArtifacts": [{
+ "paths": ["public/build/target.dmg"],
+ "formats": ["macapp"],
+ "taskId": "abcde",
+ "taskType": "build"
+ }, {
+ "paths": ["public/build/target.tar.gz"],
+ "formats": ["autograph_gpg"],
+ "taskId": "12345",
+ "taskType": "build"
+ }]
+ }
+ }
+
+In the above example, scriptworker would download the ``target.dmg`` from task
+``abcde`` and ``target.tar.gz`` from task ``12345`` and verify their shas and
+task definitions via `chain of trust`_ verification. Then it will launch
+`signingscript`_, which requests a signing token from the signing server pool.
+
+Signingscript determines it wants to sign ``target.dmg`` with the ``macapp``
+format, and ``target.tar.gz`` with the ``autograph_gpg`` format. Each of the
+`signing formats`_ has their own behavior. After performing any format-specific
+checks or optimizations, it calls `signtool`_ to submit the file to the signing
+servers and poll them for signed output. Once it downloads all of the signed
+output files, it exits and scriptworker uploads the signed binaries.
+
+We can specify multiple paths from a single task for a given set of formats,
+and multiple formats for a given set of paths.
+
+Signing kinds
+-------------
+
+We currently have multiple signing kinds. These fall into several categories:
+
+**Build internal signing**: Certain package types require the internals to be signed.
+For certain package types, e.g. exe or dmg, we extract the internal binaries
+(e.g. xul.dll) and sign them. This is true for certain zipfiles, exes, and dmgs;
+we need to sign the internals before we [re]create the package. For linux
+tarballs, we don't need special packaging, so we can sign everything in this
+task. These kinds include ``build-signing``, ``shippable-l10n-signing``,
+``release-eme-free-repack-signing``, and ``release-partner-repack-signing``.
+
+**Build repackage signing**: Once we take the signed internals and package them
+(known as a ``repackage``), certain formats require a signed external package.
+If we have created an update MAR file from the signed internals, the MAR
+file will also need to be signed. These kinds include ``repackage-signing``,
+``release-eme-free-repack-repackage-signing``, and ``release-partner-repack-repackage-signing``.
+
+``release-source-signing`` and ``partials-signing`` sign the release source tarball
+and partial update MARs.
+
+**Mac signing and notarization**: For mac, we have ``*-mac-signing``, which signs the app and pkg, ``*-mac-notarization`` submits to Apple and staples the resulting ticket to the binaries.
+
+We generate signed checksums at the top of the releases directories, like
+in `60.0`_. To generate these, we have the checksums signing kinds, including
+``release-generate-checksums-signing``, ``checksums-signing``, and
+``release-source-checksums-signing``
+
+.. _signing formats:
+
+Signing formats
+---------------
+
+The known signingscript formats are listed in the fourth column of the
+`signing password files`_.
+
+The formats are specified in the ``upstreamArtifacts`` list-of-dicts.
+``autograph_gpg`` signing results in a detached ``.asc`` signature file. Because of its
+nature, we gpg-sign at the end if given multiple formats for a given set of
+files.
+
+``jar`` signing is Android apk signing. After signing, we ``zipalign`` the apk.
+This includes the ``focus-jar`` format, which is just a way to specify a different
+set of keys for the Focus app.
+
+``macapp`` signing accepts either a ``dmg`` or ``tar.gz``; it converts ``dmg``
+files to ``tar.gz`` before submitting to the signing server. The signed binary
+is a ``tar.gz``.
+
+``authenticode`` signing takes individual binaries or a zipfile. We sign the
+individual file or internals of the zipfile, skipping any already-signed files
+and a select few blocklisted files (using the `should_sign_windows`_ function).
+It returns a signed individual binary or zipfile with signed internals, depending
+on the input. This format includes ``autograph_authenticode``, and
+``autograph_authenticode_stub``.
+
+``mar`` signing signs our update files (Mozilla ARchive). ``mar_sha384`` is
+the same, but with a different hashing algorithm.
+
+``autograph_widevine`` is also video-related; see the
+`widevine site`_. We sign specific files inside the package and rebuild the
+``precomplete`` file that we use for updates.
+
+Cert levels
+-----------
+
+Cert levels are how we separate signing privileges. We have the following levels:
+
+``dep`` is short for ``depend``, which is a term from the Netscape days. (This
+refers to builds that don't clobber, so they keep their dependency object files
+cached from the previous build.) These certs and keys are designed to be used
+for Try or on-push builds that we don't intend to ship. Many of these are
+self-signed and not of high security value; they're intended for testing
+purposes.
+
+``nightly`` refers to the Nightly product and channel. We use these keys for
+signing and shipping nightly builds, as well as Devedition on the beta channel.
+Because these are shipping keys, they are restricted; only a subset of branches
+can request the use of these keys.
+
+``release`` refers to our releases, off the beta, release, or esr channels.
+These are the most restricted keys.
+
+We request a certain cert level via scopes:
+``project:releng:signing:cert:dep-signing``,
+``project:releng:signing:cert:nightly-signing``, or
+``project:releng:signing:cert:release-signing``. Each signing task is required
+to have exactly one of those scopes, and only nightly- and release-enabled
+branches are able to use the latter two scopes. If a task is scheduled with one
+of those restricted scopes on a non-allowlisted branch, Chain of Trust
+verification will raise an exception.
+
+Signing scriptworker workerTypes
+--------------------------------
+
+The `linux-depsigning`_ pool handles all of the non-mac dep signing. These are
+heavily in use on try and autoland, but also other branches. These verify
+the `chain of trust`_ artifact but not its signature, and they don't have a
+gpg key to sign their own chain of trust artifact. This is by design; the chain
+of trust should and will break if a production scriptworker is downstream from
+a depsigning worker.
+
+The `linux-signing`_ pool is the production signing pool; it handles the
+nightly- and release- signing requests. As such, it verifies the upstream
+chain of trust and all signatures, and signs its chain of trust artifact.
+
+The `linux-devsigning`_ pool is intended for signingscript and scriptworker
+development use. Because it isn't used on any Firefox-developer-facing branch,
+Mozilla Releng is able to make breaking changes on this pool without affecting
+any other team.
+
+Similarly, we have the `mac-depsigning`_ and `mac-signing`_ pools, which handle
+CI and nightly/release signing, respectively.
+
+.. _60.0: https://archive.mozilla.org/pub/firefox/releases/60.0/
+.. _addonscript: https://github.com/mozilla-releng/addonscript/
+.. _code signing: https://en.wikipedia.org/wiki/Code_signing
+.. _chain of trust: https://scriptworker.readthedocs.io/en/latest/chain_of_trust.html
+.. _linux-depsigning: https://firefox-ci-tc.services.mozilla.com/provisioners/scriptworker-k8s/worker-types/gecko-t-signing
+.. _should_sign_windows: https://github.com/mozilla-releng/signingscript/blob/65cbb99ea53896fda9f4844e050a9695c762d24f/signingscript/sign.py#L369
+.. _Encrypted Media Extensions: https://hacks.mozilla.org/2014/05/reconciling-mozillas-mission-and-w3c-eme/
+.. _signing password files: https://github.com/mozilla/build-puppet/tree/feff5e12ab70f2c060b29940464e77208c7f0ef2/modules/signing_scriptworker/templates
+.. _signingscript: https://github.com/mozilla-releng/signingscript/
+.. _linux-devsigning: https://firefox-ci-tc.services.mozilla.com/provisioners/scriptworker-k8s/worker-types/gecko-t-signing-dev
+.. _linux-signing: https://firefox-ci-tc.services.mozilla.com/provisioners/scriptworker-k8s/worker-types/gecko-3-signing
+.. _mac-depsigning: https://firefox-ci-tc.services.mozilla.com/provisioners/scriptworker-prov-v1/worker-types/depsigning-mac-v1
+.. _mac-signing: https://firefox-ci-tc.services.mozilla.com/provisioners/scriptworker-prov-v1/worker-types/signing-mac-v1
+.. _signtool: https://github.com/mozilla-releng/signtool
+.. _Scriptworker: https://github.com/mozilla-releng/scriptworker/
+.. _widevine site: https://www.widevine.com/wv_drm.html
diff --git a/taskcluster/docs/taskgraph.rst b/taskcluster/docs/taskgraph.rst
new file mode 100644
index 0000000000..5b3ac83643
--- /dev/null
+++ b/taskcluster/docs/taskgraph.rst
@@ -0,0 +1,140 @@
+Taskgraph Overview
+==================
+
+Taskgraph builds a directed acyclic graph, where each node in the graph
+represents a task, and each edge represents the dependency relationships
+between them.
+
+See Taskgraph's `graph generation documentation`_ for more details.
+
+Decision Task
+-------------
+
+The decision task is the first task created when a new graph begins. It is
+responsible for creating the rest of the task graph.
+
+The decision task for pushes is defined in-tree, in ``.taskcluster.yml``. That
+task description invokes ``mach taskcluster decision`` with some metadata about
+the push. That mach command determines the required graph of tasks to submit,
+then calls the Taskcluster API to create the tasks.
+
+.. note::
+
+ ``mach taskgraph decision`` is *not* meant to be invoked by humans.
+ Instead, follow `this guide`_ (prepending ``mach`` to all commands) to
+ invoke Taskgraph locally without submitting anything to Taskcluster.
+
+.. _kinds:
+
+Kinds
+-----
+
+Generation starts with "kinds". These are yaml files that denote groupings of
+tasks that are loosely related to one another. For example, in Gecko there are
+``build`` and ``test`` kinds. Each kind has its own directory under
+`taskcluster/ci`_ which contains a ``kind.yml`` file.
+
+For more information on kinds, see Taskgraph's `kind documentation`_. For a
+list of available kinds in ``mozilla-central``, see the :doc:`kinds reference
+</taskcluster/kinds>`.
+
+Loader
+------
+
+Next, a "loader" is responsible for parsing each ``kind.yml`` file and turning
+it into an initial set of tasks. Loaders will always parse kinds in an ordering
+satisfying the ``kind-dependencies`` key.
+
+See Taskgraph's `loader documentation`_ for more details.
+
+.. _transforms:
+
+Transforms
+----------
+
+After the initial set of tasks are loaded, transformations are applied to each
+task. Transforms are Python functions that take a generator of tasks as input,
+and yields a generator of tasks as output. Possibly modifying, adding or removing
+tasks along the way.
+
+See Taskgrpah's `transforms documentation`_ for more details on transforms, or
+the :doc:`transforms section </taskcluster/transforms/index>` for information
+on some of the transforms available in ``mozilla-central``.
+
+Target Tasks
+------------
+
+After transformation is finished, the `target_tasks`_ module filters out any
+tasks that aren't applicable to the current :doc:`parameter set
+</taskcluster/parameters>`.
+
+Optimization
+------------
+
+After the "target graph" is generated, an optimization process looks to remove
+or replace unnecessary tasks in the graph. For instance, a task may be removed
+if the push doesn't modify any of the files that could affect it.
+
+See Taskgraph's `optimization documentation`_ for more details, or the
+:doc:`optimization strategies <optimization/index>` available in
+``mozilla-central``.
+
+
+Task Parameterization
+---------------------
+
+A few components of tasks are only known at the very end of the decision task
+-- just before the ``queue.createTask`` call is made. These are specified
+using simple parameterized values, as follows:
+
+``{"relative-datestamp": "certain number of seconds/hours/days/years"}``
+ Objects of this form will be replaced with an offset from the current time
+ just before the ``queue.createTask`` call is made. For example, an
+ artifact expiration might be specified as ``{"relative-datestamp": "1
+ year"}``.
+
+``{"task-reference": "string containing <dep-name>"}``
+ The task definition may contain "task references" of this form. These will
+ be replaced during the optimization step, with the appropriate taskId for
+ the named dependency substituted for ``<dep-name>`` in the string.
+ Additionally, `decision` and `self` can be used a dependency names to refer
+ to the decision task, and the task itself. Multiple labels may be
+ substituted in a single string, and ``<<>`` can be used to escape a literal
+ ``<``.
+
+``{"artifact-reference": "..<dep-name/artifact/name>.."}``
+ Similar to a ``task-reference``, but this substitutes a URL to the queue's
+ ``getLatestArtifact`` API method (for which a GET will redirect to the
+ artifact itself).
+
+.. _taskgraph-graph-config:
+
+Graph Configuration
+-------------------
+
+There are several configuration settings that are pertain to the entire
+taskgraph. These are specified in :file:`config.yml` at the root of the
+taskgraph configuration (typically :file:`taskcluster/ci/`). The available
+settings are documented inline in `taskcluster/gecko_taskgraph/config.py
+<https://searchfox.org/mozilla-central/source/taskcluster/gecko_taskgraph/config.py>`_.
+
+.. _taskgraph-trust-domain:
+
+Action Tasks
+------------
+
+Action Tasks are tasks which perform an action based on a manual trigger (e.g
+clicking a button in Treeherder). Actions are how it is possible to retrigger
+or "Add New Jobs".
+
+For more information, see Taskgraph's `actions documentation`_.
+
+.. _graph generation documentation: https://taskcluster-taskgraph.readthedocs.io/en/latest/concepts/task-graphs.html
+.. _this guide: https://taskcluster-taskgraph.readthedocs.io/en/latest/howto/run-locally.html
+.. _taskcluster/ci: https://searchfox.org/mozilla-central/source/taskcluster/ci
+.. _kind documentation: https://taskcluster-taskgraph.readthedocs.io/en/latest/concepts/kind.html
+.. _loader documentation: https://taskcluster-taskgraph.readthedocs.io/en/latest/concepts/loading.html
+.. _transforms documentation: https://taskcluster-taskgraph.readthedocs.io/en/latest/concepts/transforms.html
+.. _target_tasks:
+.. _optimization documentation: https://taskcluster-taskgraph.readthedocs.io/en/latest/concepts/optimization.html
+.. _actions documentation: https://taskcluster-taskgraph.readthedocs.io/en/latest/howto/create-actions.html
diff --git a/taskcluster/docs/transforms/index.rst b/taskcluster/docs/transforms/index.rst
new file mode 100644
index 0000000000..641f1abbc4
--- /dev/null
+++ b/taskcluster/docs/transforms/index.rst
@@ -0,0 +1,22 @@
+Transforms
+==========
+
+`Transforms`_ are Python functions that can modify (or sometimes add and
+remove) tasks from the graph. This section describes some of the transform
+functions that are available in ``mozilla-central``.
+
+.. toctree::
+
+ signing
+ test
+ job
+ task
+
+Other Transforms
+----------------
+
+There are tons of transforms that are not documented here. Consult the source
+files under `taskcluster/gecko_taskgraph/transforms`_ which provide lots of
+additional detail, both in the code itself and in comments and docstrings.
+
+.. _taskcluster/gecko_taskgraph/transforms: https://searchfox.org/mozilla-central/source/taskcluster/gecko_taskgraph/transforms
diff --git a/taskcluster/docs/transforms/job.rst b/taskcluster/docs/transforms/job.rst
new file mode 100644
index 0000000000..160402dd36
--- /dev/null
+++ b/taskcluster/docs/transforms/job.rst
@@ -0,0 +1,42 @@
+Job Transforms
+==============
+
+.. note::
+
+ These transforms are currently duplicated by standalone Taskgraph
+ and will likely be refactored / removed at a later date.
+
+A job description says what to run in the task. It is a combination of a
+``run`` section and all of the fields from a task description. The run section
+has a ``using`` property that defines how this task should be run; for example,
+``mozharness`` to run a mozharness script, or ``mach`` to run a mach command.
+The remainder of the run section is specific to the run-using implementation.
+
+The effect of a job description is to say "run this thing on this worker". The
+job description must contain enough information about the worker to identify
+the workerType and the implementation (docker-worker, generic-worker, etc.).
+Alternatively, job descriptions can specify the ``platforms`` field in
+conjunction with the ``by-platform`` key to specify multiple workerTypes and
+implementations. Any other task-description information is passed along
+verbatim, although it is augmented by the run-using implementation.
+
+The run-using implementations are all located in
+``taskcluster/gecko_taskgraph/transforms/job``, along with the schemas for their
+implementations. Those well-commented source files are the canonical
+documentation for what constitutes a job description, and should be considered
+part of the documentation.
+
+following ``run-using`` are available
+
+ * ``hazard``
+ * ``mach``
+ * ``mozharness``
+ * ``mozharness-test``
+ * ``run-task``
+ * ``spidermonkey`` or ``spidermonkey-package``
+ * ``debian-package``
+ * ``ubuntu-package``
+ * ``toolchain-script``
+ * ``always-optimized``
+ * ``fetch-url``
+ * ``python-test``
diff --git a/taskcluster/docs/transforms/signing.rst b/taskcluster/docs/transforms/signing.rst
new file mode 100644
index 0000000000..52b13765bf
--- /dev/null
+++ b/taskcluster/docs/transforms/signing.rst
@@ -0,0 +1,15 @@
+Signing Transforms
+==================
+
+Signing kinds are passed a single dependent job (from its kind dependency) to act
+on.
+
+The transforms in ``taskcluster/gecko_taskgraph/transforms/signing.py`` implement
+this common functionality. They expect a "signing description", and produce a
+task definition. The schema for a signing description is defined at the top of
+``signing.py``, with copious comments.
+
+In particular you define a set of upstream artifact urls (that point at the
+dependent task) and can optionally provide a dependent name (defaults to build)
+for use in ``task-reference``/``artifact-reference``. You also need to provide
+the signing formats to use.
diff --git a/taskcluster/docs/transforms/task.rst b/taskcluster/docs/transforms/task.rst
new file mode 100644
index 0000000000..f19b4a7e15
--- /dev/null
+++ b/taskcluster/docs/transforms/task.rst
@@ -0,0 +1,45 @@
+Task Transforms
+===============
+
+.. note::
+
+ These transforms are currently duplicated by standalone Taskgraph
+ and will likely be refactored / removed at a later date.
+
+Every kind needs to create tasks, and all of those tasks have some things in
+common. They all run on one of a small set of worker implementations, each
+with their own idiosyncrasies. And they all report to TreeHerder in a similar
+way.
+
+The transforms in ``taskcluster/gecko_taskgraph/transforms/task.py`` implement
+this common functionality. They expect a "task description", and produce a
+task definition. The schema for a task description is defined at the top of
+``task.py``, with copious comments. Go forth and read it now!
+
+In general, the task-description transforms handle functionality that is common
+to all Gecko tasks. While the schema is the definitive reference, the
+functionality includes:
+
+* TreeHerder metadata
+
+* Build index routes
+
+* Information about the projects on which this task should run
+
+* Optimizations
+
+* Defaults for ``expires-after`` and and ``deadline-after``, based on project
+
+* Worker configuration
+
+The parts of the task description that are specific to a worker implementation
+are isolated in a ``task_description['worker']`` object which has an
+``implementation`` property naming the worker implementation. Each worker
+implementation has its own section of the schema describing the fields it
+expects. Thus the transforms that produce a task description must be aware of
+the worker implementation to be used, but need not be aware of the details of
+its payload format.
+
+The ``task.py`` file also contains a dictionary mapping treeherder groups to
+group names using an internal list of group names. Feel free to add additional
+groups to this list as necessary.
diff --git a/taskcluster/docs/transforms/test.rst b/taskcluster/docs/transforms/test.rst
new file mode 100644
index 0000000000..901aaa7cc1
--- /dev/null
+++ b/taskcluster/docs/transforms/test.rst
@@ -0,0 +1,15 @@
+Test Transforms
+===============
+
+Test descriptions specify how to run a unittest or talos run. They aim to
+describe this abstractly, although in many cases the unique nature of
+invocation on different platforms leaves a lot of specific behavior in the test
+description, divided by ``by-test-platform``.
+
+Test descriptions are validated to conform to the schema in
+``taskcluster/gecko_taskgraph/transforms/test/__init__.py``. This schema is
+extensively documented and is a the primary reference for anyone modifying
+tests.
+
+The output of ``tests.py`` is a task description. Test dependencies are
+produced in the form of a dictionary mapping dependency name to task label.
diff --git a/taskcluster/docs/try.rst b/taskcluster/docs/try.rst
new file mode 100644
index 0000000000..5639cdb615
--- /dev/null
+++ b/taskcluster/docs/try.rst
@@ -0,0 +1,153 @@
+Try
+===
+
+"Try" is a way to "try out" a proposed change safely before review, without
+officially landing it. This functionality has been around for a *long* time in
+various forms, and can sometimes show its age.
+
+Access to "push to try" is typically available to a much larger group of
+developers than those who can land changes in integration and release branches.
+Specifically, try pushes are allowed for anyone with `SCM Level`_ 1, while
+integration branches are at SCM level 3.
+
+Scheduling a Task on Try
+------------------------
+
+There are three methods for scheduling a task on try: legacy try option syntax,
+try task config, and an empty try.
+
+Try Option Syntax
+:::::::::::::::::
+
+The first, older method is a command line string called ``try syntax`` which is passed
+into the decision task via the commit message. The resulting commit is then
+pushed to the https://hg.mozilla.org/try repository. An example try syntax
+might look like:
+
+.. parsed-literal::
+
+ try: -b o -p linux64 -u mochitest-1 -t none
+
+This gets parsed by ``taskgraph.try_option_syntax:TryOptionSyntax`` and returns
+a list of matching task labels. For more information see the
+`TryServer wiki page <https://wiki.mozilla.org/Try>`_.
+
+Try Task Config
+:::::::::::::::
+
+The second, more modern method specifies exactly the tasks to run. That list
+of tasks is usually generated locally with some :doc:`local tool </tools/try/selectors/fuzzy>`
+and attached to the commit pushed to the try repository. This gives
+finer control over exactly what runs and enables growth of an
+ecosystem of tooling appropriate to varied circumstances.
+
+Implementation
+,,,,,,,,,,,,,,
+
+This method uses a checked-in file called ``try_task_config.json`` which lives
+at the root of the source dir. The JSON object in this file contains a
+``tasks`` key giving the labels of the tasks to run. For example, the
+``try_task_config.json`` file might look like:
+
+.. parsed-literal::
+
+ {
+ "version": 1,
+ "tasks": [
+ "test-windows10-64/opt-web-platform-tests-12",
+ "test-windows7-32/opt-reftest-1",
+ "test-windows7-32/opt-reftest-2",
+ "test-windows7-32/opt-reftest-3",
+ "build-linux64/debug",
+ "source-test-mozlint-eslint"
+ ]
+ }
+
+Very simply, this will run any task label that gets passed in as well as their
+dependencies. While it is possible to manually commit this file and push to
+try, it is mainly meant to be a generation target for various :ref:`try server <Pushing to Try>`
+choosers. For example:
+
+.. parsed-literal::
+
+ $ ./mach try fuzzy
+
+A list of all possible task labels can be obtained by running:
+
+.. parsed-literal::
+
+ $ ./mach taskgraph tasks
+
+A list of task labels relevant to a tree (defaults to mozilla-central) can be
+obtained with:
+
+.. parsed-literal::
+
+ $ ./mach taskgraph target
+
+Modifying Tasks in a Try Push
+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+
+It's possible to alter the definition of a task by defining additional
+configuration in ``try_task_config.json``. For example, to set an environment
+variable in all tasks, you can add:
+
+.. parsed-literal::
+
+ {
+ "version": 1,
+ "tasks": [...],
+ "env": {
+ "FOO": "bar"
+ }
+ }
+
+The allowed configs are defined in :py:obj:`taskgraph.decision.try_task_config_schema`.
+The values will be available to all transforms, so how each config applies will
+vary wildly from one context to the next. Some (such as ``env``) will affect
+all tasks in the graph. Others might only affect certain kinds of task. The
+``use-artifact-builds`` config only applies to build tasks for instance.
+
+Empty Try
+:::::::::
+
+If there is no try syntax or ``try_task_config.json``, the ``try_mode``
+parameter is None and no tasks are selected to run. The resulting push will
+only have a decision task, but one with an "add jobs" action that can be used
+to add the desired jobs to the try push.
+
+
+Complex Configuration
+:::::::::::::::::::::
+
+If you need more control over the build configuration,
+(:doc:`staging releases </tools/try/selectors/release>`, for example),
+you can directly specify :doc:`parameters <parameters>`
+to override from the ``try_task_config.json`` like this:
+
+.. parsed-literal::
+
+ {
+ "version": 2,
+ "parameters": {
+ "optimize_target_tasks": true,
+ "release_type": "beta",
+ "target_tasks_method": "staging_release_builds"
+ }
+ }
+
+This format can express a superset of the version 1 format, as the
+version one configuration is equivalent to the following version 2
+config.
+
+.. parsed-literal::
+
+ {
+ "version": 2,
+ "parameters": {
+ "try_task_config": {...},
+ "try_mode": "try_task_config",
+ }
+ }
+
+.. _SCM Level: https://www.mozilla.org/en-US/about/governance/policies/commit/access-policy/
diff --git a/taskcluster/docs/using-the-mozilla-source-server.rst b/taskcluster/docs/using-the-mozilla-source-server.rst
new file mode 100644
index 0000000000..7164e7fe56
--- /dev/null
+++ b/taskcluster/docs/using-the-mozilla-source-server.rst
@@ -0,0 +1,40 @@
+Using The Mozilla Source Server
+===============================
+
+Using the Mozilla source server is now even more feature-packed. The
+nightly debug builds are now also Source Indexed so that by following a
+couple of simple steps you can also have the source code served to you
+for debugging without a local build.
+
+What you'll need
+----------------
+
+- `WinDbg <https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/>`__ or Visual Studio (not Code)
+- A nightly build; go to the
+ `/pub/firefox/nightly/latest-mozilla-central/ <https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/>`__
+ folder and grab the installer
+
+Set up symbols
+--------------
+
+Follow the instructions for :ref:`Using the Mozilla symbol
+server <Using The Mozilla Symbol Server>`. Once
+the symbol path is set you must now enable Source Server.
+
+Using the source server in WinDbg
+---------------------------------
+
+In the WinDbg command line, type ``.srcfix`` and hit enter. This enables
+source server support.
+
+.. image:: img/windbg-srcfix.png
+
+
+Using the source server in Visual Studio
+----------------------------------------
+
+Enable source server support under Tools -> Options. Also, disable
+(uncheck) the box that says "Require source files to exactly match the
+original version".
+
+.. image:: img/enableSourceServer.png
diff --git a/taskcluster/docs/versioncontrol.rst b/taskcluster/docs/versioncontrol.rst
new file mode 100644
index 0000000000..835f8915cf
--- /dev/null
+++ b/taskcluster/docs/versioncontrol.rst
@@ -0,0 +1,74 @@
+=====================
+Version Control in CI
+=====================
+
+Upgrading Mercurial
+===================
+
+Upgrading Mercurial in CI requires touching a handful of different
+components.
+
+Vendored robustcheckout
+-----------------------
+
+The ``robustcheckout`` Mercurial extension is used throughout CI to
+perform clones and working directory updates. The canonical home of
+the extension is in the
+https://hg.mozilla.org/hgcustom/version-control-tools repository
+at the path ``hgext/robustcheckout/__init__.py``.
+
+
+When upgrading Mercurial, the ``robustcheckout`` extension should also
+be updated to ensure it is compatible with the version of Mercurial
+being upgraded to. Typically, one simply copies the latest version
+from ``version-control-tools`` into the vendored locations.
+
+The locations are as follows:
+
+- In-tree: ``testing/mozharness/external_tools/robustcheckout.py``
+- Treescript: ``https://github.com/mozilla-releng/scriptworker-scripts/blob/master/treescript/treescript/py2/robustcheckout.py``
+- build-puppet: ``https://github.com/mozilla-releng/build-puppet/blob/master/modules/mercurial/files/robustcheckout.py``
+- ronin_puppet: ``https://github.com/mozilla-platform-ops/ronin_puppet/blob/master/modules/mercurial/files/robustcheckout.py``
+- OpenCloudConfig: ``https://github.com/mozilla-releng/OpenCloudConfig/blob/master/userdata/Configuration/FirefoxBuildResources/robustcheckout.py``
+
+
+Debian Packages for Debian and Ubuntu Based Docker Images
+---------------------------------------------------------
+
+``taskcluster/ci/packages/debian.yml`` and ``taskcluster/ci/packages/ubuntu.yml``
+define custom Debian packages for Mercurial. These are installed in various
+Docker images.
+
+To upgrade Mercurial, typically you just need to update the source URL
+and its hash in this file.
+
+
+Windows AMIs
+------------
+
+https://github.com/mozilla-releng/OpenCloudConfig defines the Windows
+environment for various Windows AMIs used by Taskcluster. Several of
+the files reference a ``mercurial-x.y.z-*.msi`` installer. These references
+will need to be updated to the Mercurial version being upgraded to.
+
+The ``robustcheckout`` extension is also vendored into this repository
+at ``userdata/Configuration/FirefoxBuildResources/robustcheckout.py``. It
+should also be updated if needed.
+
+Puppet Maintained Hosts
+-----------------------
+
+Some hosts (namely macOS machines) are managed by Puppet and Puppet is used
+to install Mercurial.
+
+Puppet code lives in the https://github.com/mozilla-releng/build-puppet repository.
+Relevant files are in ``modules/mercurial/``,
+``modules/packages/manifests/mozilla/mozilla-python27-mercurial-debian/``,
+and ``modules/packages/manifests/mozilla/py27_mercurial*``. A copy of
+``robustcheckout`` is also vendored at
+``modules/mercurial/files/robustcheckout.py``.
+
+.. note::
+
+ The steps to upgrade Mercurial in Puppet aren't currently captured here.
+ Someone should capture those...
diff --git a/taskcluster/gecko_taskgraph/.ruff.toml b/taskcluster/gecko_taskgraph/.ruff.toml
new file mode 100644
index 0000000000..0cd744c1cb
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/.ruff.toml
@@ -0,0 +1,4 @@
+extend = "../../pyproject.toml"
+
+[isort]
+known-first-party = ["gecko_taskgraph"]
diff --git a/taskcluster/gecko_taskgraph/__init__.py b/taskcluster/gecko_taskgraph/__init__.py
new file mode 100644
index 0000000000..1346bf3c33
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/__init__.py
@@ -0,0 +1,64 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import os
+
+from taskgraph import config as taskgraph_config
+from taskgraph import morph as taskgraph_morph
+from taskgraph.util import schema
+from taskgraph.util import taskcluster as tc_util
+
+from gecko_taskgraph.config import graph_config_schema
+
+GECKO = os.path.normpath(os.path.realpath(os.path.join(__file__, "..", "..", "..")))
+
+# Maximum number of dependencies a single task can have
+# https://firefox-ci-tc.services.mozilla.com/docs/reference/platform/queue/task-schema
+# specifies 100, but we also optionally add the decision task id as a dep in
+# taskgraph.create, so let's set this to 99.
+MAX_DEPENDENCIES = 99
+
+# Overwrite Taskgraph's default graph_config_schema with a custom one.
+taskgraph_config.graph_config_schema = graph_config_schema
+
+# Don't use any of the upstream morphs.
+# TODO Investigate merging our morphs with upstream.
+taskgraph_morph.registered_morphs = []
+
+# Default rootUrl to use if none is given in the environment; this should point
+# to the production Taskcluster deployment used for CI.
+tc_util.PRODUCTION_TASKCLUSTER_ROOT_URL = "https://firefox-ci-tc.services.mozilla.com"
+
+# Schemas for YAML files should use dashed identifiers by default. If there are
+# components of the schema for which there is a good reason to use another format,
+# exceptions can be added here.
+schema.EXCEPTED_SCHEMA_IDENTIFIERS.extend(
+ [
+ "test_name",
+ "json_location",
+ "video_location",
+ ]
+)
+
+
+def register(graph_config):
+ """Used to register Gecko specific extensions.
+
+ Args:
+ graph_config: The graph configuration object.
+ """
+ from taskgraph import generator
+
+ from gecko_taskgraph import ( # noqa: trigger target task method registration
+ morph, # noqa: trigger morph registration
+ target_tasks,
+ )
+ from gecko_taskgraph.parameters import register_parameters
+ from gecko_taskgraph.util.verify import verifications
+
+ # Don't use the upstream verifications, and replace them with our own.
+ # TODO Investigate merging our verifications with upstream.
+ generator.verifications = verifications
+
+ register_parameters()
diff --git a/taskcluster/gecko_taskgraph/actions/__init__.py b/taskcluster/gecko_taskgraph/actions/__init__.py
new file mode 100644
index 0000000000..590a957282
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/actions/__init__.py
@@ -0,0 +1,16 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+from .registry import (
+ register_callback_action,
+ render_actions_json,
+ trigger_action_callback,
+)
+
+__all__ = [
+ "register_callback_action",
+ "render_actions_json",
+ "trigger_action_callback",
+]
diff --git a/taskcluster/gecko_taskgraph/actions/add_new_jobs.py b/taskcluster/gecko_taskgraph/actions/add_new_jobs.py
new file mode 100644
index 0000000000..39200cff68
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/actions/add_new_jobs.py
@@ -0,0 +1,59 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+from .registry import register_callback_action
+from .util import combine_task_graph_files, create_tasks, fetch_graph_and_labels
+
+
+@register_callback_action(
+ name="add-new-jobs",
+ title="Add new jobs",
+ symbol="add-new",
+ description="Add new jobs using task labels.",
+ order=100,
+ context=[],
+ schema={
+ "type": "object",
+ "properties": {
+ "tasks": {
+ "type": "array",
+ "description": "An array of task labels",
+ "items": {"type": "string"},
+ },
+ "times": {
+ "type": "integer",
+ "default": 1,
+ "minimum": 1,
+ "maximum": 100,
+ "title": "Times",
+ "description": "How many times to run each task.",
+ },
+ },
+ },
+)
+def add_new_jobs_action(parameters, graph_config, input, task_group_id, task_id):
+ decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels(
+ parameters, graph_config
+ )
+
+ to_run = []
+ for elem in input["tasks"]:
+ if elem in full_task_graph.tasks:
+ to_run.append(elem)
+ else:
+ raise Exception(f"{elem} was not found in the task-graph")
+
+ times = input.get("times", 1)
+ for i in range(times):
+ create_tasks(
+ graph_config,
+ to_run,
+ full_task_graph,
+ label_to_taskid,
+ parameters,
+ decision_task_id,
+ i,
+ )
+ combine_task_graph_files(list(range(times)))
diff --git a/taskcluster/gecko_taskgraph/actions/add_talos.py b/taskcluster/gecko_taskgraph/actions/add_talos.py
new file mode 100644
index 0000000000..56b0c49cc9
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/actions/add_talos.py
@@ -0,0 +1,59 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import logging
+
+from ..target_tasks import standard_filter
+from .registry import register_callback_action
+from .util import create_tasks, fetch_graph_and_labels
+
+logger = logging.getLogger(__name__)
+
+
+@register_callback_action(
+ name="run-all-talos",
+ title="Run All Talos Tests",
+ symbol="raT",
+ description="Add all Talos tasks to a push.",
+ order=150,
+ context=[],
+ schema={
+ "type": "object",
+ "properties": {
+ "times": {
+ "type": "integer",
+ "default": 1,
+ "minimum": 1,
+ "maximum": 6,
+ "title": "Times",
+ "description": "How many times to run each task.",
+ }
+ },
+ "additionalProperties": False,
+ },
+)
+def add_all_talos(parameters, graph_config, input, task_group_id, task_id):
+ decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels(
+ parameters, graph_config
+ )
+
+ times = input.get("times", 1)
+ for i in range(times):
+ to_run = [
+ label
+ for label, entry in full_task_graph.tasks.items()
+ if "talos_try_name" in entry.attributes
+ and standard_filter(entry, parameters)
+ ]
+
+ create_tasks(
+ graph_config,
+ to_run,
+ full_task_graph,
+ label_to_taskid,
+ parameters,
+ decision_task_id,
+ )
+ logger.info(f"Scheduled {len(to_run)} talos tasks (time {i + 1}/{times})")
diff --git a/taskcluster/gecko_taskgraph/actions/backfill.py b/taskcluster/gecko_taskgraph/actions/backfill.py
new file mode 100644
index 0000000000..81f29394d6
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/actions/backfill.py
@@ -0,0 +1,426 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import json
+import logging
+import re
+import sys
+from functools import partial
+
+from taskgraph.util.taskcluster import get_task_definition
+
+from .registry import register_callback_action
+from .util import (
+ combine_task_graph_files,
+ create_tasks,
+ fetch_graph_and_labels,
+ get_decision_task_id,
+ get_pushes,
+ get_pushes_from_params_input,
+ trigger_action,
+)
+
+logger = logging.getLogger(__name__)
+SYMBOL_REGEX = re.compile("^(.*)-[a-z0-9]{11}-bk$")
+GROUP_SYMBOL_REGEX = re.compile("^(.*)-bk$")
+
+
+def input_for_support_action(revision, task, times=1, retrigger=True):
+ """Generate input for action to be scheduled.
+
+ Define what label to schedule with 'label'.
+ If it is a test task that uses explicit manifests add that information.
+ """
+ input = {
+ "label": task["metadata"]["name"],
+ "revision": revision,
+ "times": times,
+ # We want the backfilled tasks to share the same symbol as the originating task
+ "symbol": task["extra"]["treeherder"]["symbol"],
+ "retrigger": retrigger,
+ }
+
+ # Support tasks that are using manifest based scheduling
+ if task["payload"].get("env", {}).get("MOZHARNESS_TEST_PATHS"):
+ input["test_manifests"] = json.loads(
+ task["payload"]["env"]["MOZHARNESS_TEST_PATHS"]
+ )
+
+ return input
+
+
+@register_callback_action(
+ title="Backfill",
+ name="backfill",
+ permission="backfill",
+ symbol="Bk",
+ description=("Given a task schedule it on previous pushes in the same project."),
+ order=200,
+ context=[{}], # This will be available for all tasks
+ schema={
+ "type": "object",
+ "properties": {
+ "depth": {
+ "type": "integer",
+ "default": 19,
+ "minimum": 1,
+ "maximum": 25,
+ "title": "Depth",
+ "description": (
+ "The number of previous pushes before the current "
+ "push to attempt to trigger this task on."
+ ),
+ },
+ "inclusive": {
+ "type": "boolean",
+ "default": False,
+ "title": "Inclusive Range",
+ "description": (
+ "If true, the backfill will also retrigger the task "
+ "on the selected push."
+ ),
+ },
+ "times": {
+ "type": "integer",
+ "default": 1,
+ "minimum": 1,
+ "maximum": 10,
+ "title": "Times",
+ "description": (
+ "The number of times to execute each job you are backfilling."
+ ),
+ },
+ "retrigger": {
+ "type": "boolean",
+ "default": True,
+ "title": "Retrigger",
+ "description": (
+ "If False, the task won't retrigger on pushes that have already "
+ "ran it."
+ ),
+ },
+ },
+ "additionalProperties": False,
+ },
+ available=lambda parameters: True,
+)
+def backfill_action(parameters, graph_config, input, task_group_id, task_id):
+ """
+ This action takes a task ID and schedules it on previous pushes (via support action).
+
+ To execute this action locally follow the documentation here:
+ https://firefox-source-docs.mozilla.org/taskcluster/actions.html#testing-the-action-locally
+ """
+ task = get_task_definition(task_id)
+ pushes = get_pushes_from_params_input(parameters, input)
+ failed = False
+ input_for_action = input_for_support_action(
+ revision=parameters["head_rev"],
+ task=task,
+ times=input.get("times", 1),
+ retrigger=input.get("retrigger", True),
+ )
+
+ for push_id in pushes:
+ try:
+ # The Gecko decision task can sometimes fail on a push and we need to handle
+ # the exception that this call will produce
+ push_decision_task_id = get_decision_task_id(parameters["project"], push_id)
+ except Exception:
+ logger.warning(f"Could not find decision task for push {push_id}")
+ # The decision task may have failed, this is common enough that we
+ # don't want to report an error for it.
+ continue
+
+ try:
+ trigger_action(
+ action_name="backfill-task",
+ # This lets the action know on which push we want to add a new task
+ decision_task_id=push_decision_task_id,
+ input=input_for_action,
+ )
+ except Exception:
+ logger.exception(f"Failed to trigger action for {push_id}")
+ failed = True
+
+ if failed:
+ sys.exit(1)
+
+
+def add_backfill_suffix(regex, symbol, suffix):
+ m = regex.match(symbol)
+ if m is None:
+ symbol += suffix
+ return symbol
+
+
+def backfill_modifier(task, input):
+ if task.label != input["label"]:
+ return task
+
+ logger.debug(f"Modifying test_manifests for {task.label}")
+ times = input.get("times", 1)
+
+ # Set task duplicates based on 'times' value.
+ if times > 1:
+ task.attributes["task_duplicates"] = times
+
+ # If the original task has defined test paths
+ test_manifests = input.get("test_manifests")
+ if test_manifests:
+ revision = input.get("revision")
+
+ task.attributes["test_manifests"] = test_manifests
+ task.task["payload"]["env"]["MOZHARNESS_TEST_PATHS"] = json.dumps(
+ test_manifests
+ )
+ # The name/label might have been modify in new_label, thus, change it here as well
+ task.task["metadata"]["name"] = task.label
+ th_info = task.task["extra"]["treeherder"]
+ # Use a job symbol of the originating task as defined in the backfill action
+ th_info["symbol"] = add_backfill_suffix(
+ SYMBOL_REGEX, th_info["symbol"], f"-{revision[0:11]}-bk"
+ )
+ if th_info.get("groupSymbol"):
+ # Group all backfilled tasks together
+ th_info["groupSymbol"] = add_backfill_suffix(
+ GROUP_SYMBOL_REGEX, th_info["groupSymbol"], "-bk"
+ )
+ task.task["tags"]["action"] = "backfill-task"
+ return task
+
+
+def do_not_modify(task):
+ return task
+
+
+def new_label(label, tasks):
+ """This is to handle the case when a previous push does not contain a specific task label
+ and we try to find a label we can reuse.
+
+ For instance, we try to backfill chunk #3, however, a previous push does not contain such
+ chunk, thus, we try to reuse another task/label.
+ """
+ begining_label, ending = label.rsplit("-", 1)
+ if ending.isdigit():
+ # We assume that the taskgraph has chunk #1 OR unnumbered chunk and we hijack it
+ if begining_label in tasks:
+ return begining_label
+ if begining_label + "-1" in tasks:
+ return begining_label + "-1"
+ raise Exception(f"New label ({label}) was not found in the task-graph")
+ else:
+ raise Exception(f"{label} was not found in the task-graph")
+
+
+@register_callback_action(
+ name="backfill-task",
+ title="Backfill task on a push.",
+ permission="backfill",
+ symbol="backfill-task",
+ description="This action is normally scheduled by the backfill action. "
+ "The intent is to schedule a task on previous pushes.",
+ order=500,
+ context=[],
+ schema={
+ "type": "object",
+ "properties": {
+ "label": {"type": "string", "description": "A task label"},
+ "revision": {
+ "type": "string",
+ "description": "Revision of the original push from where we backfill.",
+ },
+ "symbol": {
+ "type": "string",
+ "description": "Symbol to be used by the scheduled task.",
+ },
+ "test_manifests": {
+ "type": "array",
+ "default": [],
+ "description": "An array of test manifest paths",
+ "items": {"type": "string"},
+ },
+ "times": {
+ "type": "integer",
+ "default": 1,
+ "minimum": 1,
+ "maximum": 10,
+ "title": "Times",
+ "description": (
+ "The number of times to execute each job " "you are backfilling."
+ ),
+ },
+ "retrigger": {
+ "type": "boolean",
+ "default": True,
+ "title": "Retrigger",
+ "description": (
+ "If False, the task won't retrigger on pushes that have already "
+ "ran it."
+ ),
+ },
+ },
+ },
+)
+def add_task_with_original_manifests(
+ parameters, graph_config, input, task_group_id, task_id
+):
+ """
+ This action is normally scheduled by the backfill action. The intent is to schedule a test
+ task with the test manifests from the original task (if available).
+
+ The push in which we want to schedule a new task is defined by the parameters object.
+
+ To execute this action locally follow the documentation here:
+ https://firefox-source-docs.mozilla.org/taskcluster/actions.html#testing-the-action-locally
+ """
+ # This step takes a lot of time when executed locally
+ logger.info("Retreving the full task graph and labels.")
+ decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels(
+ parameters, graph_config
+ )
+
+ label = input.get("label")
+ if not input.get("retrigger") and label in label_to_taskid:
+ logger.info(
+ f"Skipping push with decision task ID {decision_task_id} as it already has this test."
+ )
+ return
+
+ if label not in full_task_graph.tasks:
+ label = new_label(label, full_task_graph.tasks)
+
+ to_run = [label]
+
+ logger.info("Creating tasks...")
+ create_tasks(
+ graph_config,
+ to_run,
+ full_task_graph,
+ label_to_taskid,
+ parameters,
+ decision_task_id,
+ suffix="0",
+ modifier=partial(backfill_modifier, input=input),
+ )
+
+ # TODO Implement a way to write out artifacts without assuming there's
+ # multiple sets of them so we can stop passing in "suffix".
+ combine_task_graph_files(["0"])
+
+
+@register_callback_action(
+ title="Backfill all browsertime",
+ name="backfill-all-browsertime",
+ permission="backfill",
+ symbol="baB",
+ description=(
+ "Schedule all browsertime tests for the current and previous push in the same project."
+ ),
+ order=800,
+ context=[], # This will be available for all tasks
+ available=lambda parameters: True,
+)
+def backfill_all_browsertime(parameters, graph_config, input, task_group_id, task_id):
+ """
+ This action takes a revision and schedules it on previous pushes (via support action).
+
+ To execute this action locally follow the documentation here:
+ https://firefox-source-docs.mozilla.org/taskcluster/actions.html#testing-the-action-locally
+ """
+ pushes = get_pushes(
+ project=parameters["head_repository"],
+ end_id=int(parameters["pushlog_id"]),
+ depth=2,
+ )
+
+ for push_id in pushes:
+ try:
+ # The Gecko decision task can sometimes fail on a push and we need to handle
+ # the exception that this call will produce
+ push_decision_task_id = get_decision_task_id(parameters["project"], push_id)
+ except Exception:
+ logger.warning(f"Could not find decision task for push {push_id}")
+ # The decision task may have failed, this is common enough that we
+ # don't want to report an error for it.
+ continue
+
+ try:
+ trigger_action(
+ action_name="add-all-browsertime",
+ # This lets the action know on which push we want to add a new task
+ decision_task_id=push_decision_task_id,
+ )
+ except Exception:
+ logger.exception(f"Failed to trigger action for {push_id}")
+ sys.exit(1)
+
+
+def filter_raptor_jobs(full_task_graph, label_to_taskid):
+ to_run = []
+ for label, entry in full_task_graph.tasks.items():
+ if entry.kind != "test":
+ continue
+ if entry.task.get("extra", {}).get("suite", "") != "raptor":
+ continue
+ if "browsertime" not in entry.attributes.get("raptor_try_name", ""):
+ continue
+ if not entry.attributes.get("test_platform", "").endswith("shippable-qr/opt"):
+ continue
+ if "android" in entry.attributes.get("test_platform", ""):
+ # Bug 1786254 - The backfill bot is scheduling too many tests atm
+ continue
+ exceptions = ("live", "profiling", "youtube-playback")
+ if any(e in entry.attributes.get("raptor_try_name", "") for e in exceptions):
+ continue
+ if "firefox" in entry.attributes.get(
+ "raptor_try_name", ""
+ ) and entry.attributes.get("test_platform", "").endswith("64-shippable-qr/opt"):
+ # add the browsertime test
+ if label not in label_to_taskid:
+ to_run.append(label)
+ if "geckoview" in entry.attributes.get("raptor_try_name", ""):
+ # add the pageload test
+ if label not in label_to_taskid:
+ to_run.append(label)
+ return to_run
+
+
+@register_callback_action(
+ name="add-all-browsertime",
+ title="Add All Browsertime Tests.",
+ permission="backfill",
+ symbol="aaB",
+ description="This action is normally scheduled by the backfill-all-browsertime action. "
+ "The intent is to schedule all browsertime tests on a specific pushe.",
+ order=900,
+ context=[],
+)
+def add_all_browsertime(parameters, graph_config, input, task_group_id, task_id):
+ """
+ This action is normally scheduled by the backfill-all-browsertime action. The intent is to
+ trigger all browsertime tasks for the current revision.
+
+ The push in which we want to schedule a new task is defined by the parameters object.
+
+ To execute this action locally follow the documentation here:
+ https://firefox-source-docs.mozilla.org/taskcluster/actions.html#testing-the-action-locally
+ """
+ logger.info("Retreving the full task graph and labels.")
+ decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels(
+ parameters, graph_config
+ )
+
+ to_run = filter_raptor_jobs(full_task_graph, label_to_taskid)
+
+ create_tasks(
+ graph_config,
+ to_run,
+ full_task_graph,
+ label_to_taskid,
+ parameters,
+ decision_task_id,
+ )
+ logger.info(f"Scheduled {len(to_run)} raptor tasks (time 1)")
diff --git a/taskcluster/gecko_taskgraph/actions/cancel.py b/taskcluster/gecko_taskgraph/actions/cancel.py
new file mode 100644
index 0000000000..d895781395
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/actions/cancel.py
@@ -0,0 +1,36 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import logging
+
+import requests
+from taskgraph.util.taskcluster import cancel_task
+
+from .registry import register_callback_action
+
+logger = logging.getLogger(__name__)
+
+
+@register_callback_action(
+ title="Cancel Task",
+ name="cancel",
+ symbol="cx",
+ description=("Cancel the given task"),
+ order=350,
+ context=[{}],
+)
+def cancel_action(parameters, graph_config, input, task_group_id, task_id):
+ # Note that this is limited by the scopes afforded to generic actions to
+ # only cancel tasks with the level-specific schedulerId.
+ try:
+ cancel_task(task_id, use_proxy=True)
+ except requests.HTTPError as e:
+ if e.response.status_code == 409:
+ # A 409 response indicates that this task is past its deadline. It
+ # cannot be cancelled at this time, but it's also not running
+ # anymore, so we can ignore this error.
+ logger.info(f"Task {task_id} is past its deadline and cannot be cancelled.")
+ return
+ raise
diff --git a/taskcluster/gecko_taskgraph/actions/cancel_all.py b/taskcluster/gecko_taskgraph/actions/cancel_all.py
new file mode 100644
index 0000000000..d74b83b7d8
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/actions/cancel_all.py
@@ -0,0 +1,60 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import concurrent.futures as futures
+import logging
+import os
+
+import requests
+from taskgraph.util.taskcluster import CONCURRENCY, cancel_task
+
+from gecko_taskgraph.util.taskcluster import list_task_group_incomplete_task_ids
+
+from .registry import register_callback_action
+
+logger = logging.getLogger(__name__)
+
+
+@register_callback_action(
+ title="Cancel All",
+ name="cancel-all",
+ symbol="cAll",
+ description=(
+ "Cancel all running and pending tasks created by the decision task "
+ "this action task is associated with."
+ ),
+ order=400,
+ context=[],
+)
+def cancel_all_action(parameters, graph_config, input, task_group_id, task_id):
+ def do_cancel_task(task_id):
+ logger.info(f"Cancelling task {task_id}")
+ try:
+ cancel_task(task_id, use_proxy=True)
+ except requests.HTTPError as e:
+ if e.response.status_code == 409:
+ # A 409 response indicates that this task is past its deadline. It
+ # cannot be cancelled at this time, but it's also not running
+ # anymore, so we can ignore this error.
+ logger.info(
+ "Task {} is past its deadline and cannot be cancelled.".format(
+ task_id
+ )
+ )
+ return
+ raise
+
+ own_task_id = os.environ.get("TASK_ID", "")
+ to_cancel = [
+ t
+ for t in list_task_group_incomplete_task_ids(task_group_id)
+ if t != own_task_id
+ ]
+
+ logger.info(f"Cancelling {len(to_cancel)} tasks")
+ with futures.ThreadPoolExecutor(CONCURRENCY) as e:
+ cancel_futs = [e.submit(do_cancel_task, t) for t in to_cancel]
+ for f in futures.as_completed(cancel_futs):
+ f.result()
diff --git a/taskcluster/gecko_taskgraph/actions/confirm_failure.py b/taskcluster/gecko_taskgraph/actions/confirm_failure.py
new file mode 100644
index 0000000000..3d0b572a2e
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/actions/confirm_failure.py
@@ -0,0 +1,238 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import json
+import logging
+import re
+
+from taskgraph.util.parameterization import resolve_task_references
+from taskgraph.util.taskcluster import get_artifact, get_task_definition, list_artifacts
+
+from gecko_taskgraph.util.copy_task import copy_task
+
+from .registry import register_callback_action
+from .util import add_args_to_command, create_task_from_def, fetch_graph_and_labels
+
+logger = logging.getLogger(__name__)
+
+
+def get_failures(task_id):
+ """Returns a dict containing properties containing a list of
+ directories containing test failures and a separate list of
+ individual test failures from the errorsummary.log artifact for
+ the task.
+
+ Calls the helper function munge_test_path to attempt to find an
+ appropriate test path to pass to the task in
+ MOZHARNESS_TEST_PATHS. If no appropriate test path can be
+ determined, nothing is returned.
+ """
+
+ def re_compile_list(*lst):
+ # Ideally we'd just use rb"" literals and avoid the encode, but
+ # this file needs to be importable in python2 for now.
+ return [re.compile(s.encode("utf-8")) for s in lst]
+
+ re_bad_tests = re_compile_list(
+ r"Last test finished",
+ r"LeakSanitizer",
+ r"Main app process exited normally",
+ r"ShutdownLeaks",
+ r"[(]SimpleTest/TestRunner.js[)]",
+ r"automation.py",
+ r"https?://localhost:\d+/\d+/\d+/.*[.]html",
+ r"jsreftest",
+ r"leakcheck",
+ r"mozrunner-startup",
+ r"pid: ",
+ r"RemoteProcessMonitor",
+ r"unknown test url",
+ )
+ re_extract_tests = re_compile_list(
+ r'"test": "(?:[^:]+:)?(?:https?|file):[^ ]+/reftest/tests/([^ "]+)',
+ r'"test": "(?:[^:]+:)?(?:https?|file):[^:]+:[0-9]+/tests/([^ "]+)',
+ r'xpcshell-?[^ "]*\.ini:([^ "]+)',
+ r'/tests/([^ "]+) - finished .*',
+ r'"test": "([^ "]+)"',
+ r'"message": "Error running command run_test with arguments '
+ r"[(]<wptrunner[.]wpttest[.]TestharnessTest ([^>]+)>",
+ r'"message": "TEST-[^ ]+ [|] ([^ "]+)[^|]*[|]',
+ )
+
+ def munge_test_path(line):
+ test_path = None
+ for r in re_bad_tests:
+ if r.search(line):
+ return None
+ for r in re_extract_tests:
+ m = r.search(line)
+ if m:
+ test_path = m.group(1)
+ break
+ return test_path
+
+ # collect dirs that don't have a specific manifest
+ dirs = set()
+ tests = set()
+ artifacts = list_artifacts(task_id)
+ for artifact in artifacts:
+ if "name" not in artifact or not artifact["name"].endswith("errorsummary.log"):
+ continue
+
+ stream = get_artifact(task_id, artifact["name"])
+ if not stream:
+ continue
+
+ # We handle the stream as raw bytes because it may contain invalid
+ # UTF-8 characters in portions other than those containing the error
+ # messages we're looking for.
+ for line in stream.read().split(b"\n"):
+ if not line.strip():
+ continue
+
+ l = json.loads(line)
+ if "group_results" in l.keys() and l["status"] != "OK":
+ dirs.add(l["group_results"].group())
+
+ elif "test" in l.keys():
+ test_path = munge_test_path(line.strip())
+ tests.add(test_path.decode("utf-8"))
+
+ # only run the failing test not both test + dir
+ if l["group"] in dirs:
+ dirs.remove(l["group"])
+
+ if len(tests) > 4:
+ break
+
+ # turn group into dir by stripping off leafname
+ dirs = set([d.split("/")[0:-1] for d in dirs])
+
+ return {"dirs": sorted(dirs), "tests": sorted(tests)}
+
+
+def create_confirm_failure_tasks(task_definition, failures, level):
+ """
+ Create tasks to re-run the original task plus tasks to test
+ each failing test directory and individual path.
+
+ """
+ logger.info(f"Confirm Failures task:\n{json.dumps(task_definition, indent=2)}")
+
+ # Operate on a copy of the original task_definition
+ task_definition = copy_task(task_definition)
+
+ task_name = task_definition["metadata"]["name"]
+ repeatable_task = False
+ if (
+ "crashtest" in task_name
+ or "mochitest" in task_name
+ or "reftest" in task_name
+ or "xpcshell" in task_name
+ and "jsreftest" not in task_name
+ ):
+ repeatable_task = True
+
+ th_dict = task_definition["extra"]["treeherder"]
+ symbol = th_dict["symbol"]
+ is_windows = "windows" in th_dict["machine"]["platform"]
+
+ suite = task_definition["extra"]["suite"]
+ if "-coverage" in suite:
+ suite = suite[: suite.index("-coverage")]
+ is_wpt = "web-platform-tests" in suite
+
+ # command is a copy of task_definition['payload']['command'] from the original task.
+ # It is used to create the new version containing the
+ # task_definition['payload']['command'] with repeat_args which is updated every time
+ # through the failure_group loop.
+
+ command = copy_task(task_definition["payload"]["command"])
+
+ th_dict["groupSymbol"] = th_dict["groupSymbol"] + "-cf"
+ th_dict["tier"] = 3
+
+ if repeatable_task:
+ task_definition["payload"]["maxRunTime"] = 3600 * 3
+
+ for failure_group in failures:
+ if len(failures[failure_group]) == 0:
+ continue
+ if failure_group == "dirs":
+ failure_group_suffix = "-d"
+ # execute 5 total loops
+ repeat_args = ["--repeat=4"] if repeatable_task else []
+ elif failure_group == "tests":
+ failure_group_suffix = "-t"
+ # execute 10 total loops
+ repeat_args = ["--repeat=9"] if repeatable_task else []
+ else:
+ logger.error(
+ "create_confirm_failure_tasks: Unknown failure_group {}".format(
+ failure_group
+ )
+ )
+ continue
+
+ if repeat_args:
+ task_definition["payload"]["command"] = add_args_to_command(
+ command, extra_args=repeat_args
+ )
+ else:
+ task_definition["payload"]["command"] = command
+
+ for failure_path in failures[failure_group]:
+ th_dict["symbol"] = symbol + failure_group_suffix
+ if is_wpt:
+ failure_path = "testing/web-platform/tests" + failure_path
+ if is_windows:
+ failure_path = "\\".join(failure_path.split("/"))
+ task_definition["payload"]["env"]["MOZHARNESS_TEST_PATHS"] = json.dumps(
+ {suite: [failure_path]}, sort_keys=True
+ )
+
+ logger.info(
+ "Creating task for path {} with command {}".format(
+ failure_path, task_definition["payload"]["command"]
+ )
+ )
+ create_task_from_def(task_definition, level)
+
+
+@register_callback_action(
+ name="confirm-failures",
+ title="Confirm failures in job",
+ symbol="cf",
+ description="Re-run Tests for original manifest, directories or tests for failing tests.",
+ order=150,
+ context=[{"kind": "test"}],
+ schema={
+ "type": "object",
+ "properties": {},
+ "additionalProperties": False,
+ },
+)
+def confirm_failures(parameters, graph_config, input, task_group_id, task_id):
+ task = get_task_definition(task_id)
+ decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels(
+ parameters, graph_config
+ )
+
+ pre_task = full_task_graph.tasks[task["metadata"]["name"]]
+
+ # fix up the task's dependencies, similar to how optimization would
+ # have done in the decision
+ dependencies = {
+ name: label_to_taskid[label] for name, label in pre_task.dependencies.items()
+ }
+
+ task_definition = resolve_task_references(
+ pre_task.label, pre_task.task, task_id, decision_task_id, dependencies
+ )
+ task_definition.setdefault("dependencies", []).extend(dependencies.values())
+
+ failures = get_failures(task_id)
+ logger.info("confirm_failures: %s" % failures)
+ create_confirm_failure_tasks(task_definition, failures, parameters["level"])
diff --git a/taskcluster/gecko_taskgraph/actions/create_interactive.py b/taskcluster/gecko_taskgraph/actions/create_interactive.py
new file mode 100644
index 0000000000..c8d196782e
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/actions/create_interactive.py
@@ -0,0 +1,192 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import logging
+import os
+import re
+
+import taskcluster_urls
+from taskgraph.util.taskcluster import get_root_url, get_task_definition, send_email
+
+from gecko_taskgraph.actions.registry import register_callback_action
+from gecko_taskgraph.actions.util import create_tasks, fetch_graph_and_labels
+
+logger = logging.getLogger(__name__)
+
+EMAIL_SUBJECT = "Your Interactive Task for {label}"
+EMAIL_CONTENT = """\
+As you requested, Firefox CI has created an interactive task to run {label}
+on revision {revision} in {repo}. Click the button below to connect to the
+task. You may need to wait for it to begin running.
+"""
+
+###
+# Security Concerns
+#
+# An "interactive task" is, quite literally, shell access to a worker. That
+# is limited by being in a Docker container, but we assume that Docker has
+# bugs so we do not want to rely on container isolation exclusively.
+#
+# Interactive tasks should never be allowed on hosts that build binaries
+# leading to a release -- level 3 builders.
+#
+# Users must not be allowed to create interactive tasks for tasks above
+# their own level.
+#
+# Interactive tasks must not have any routes that might make them appear
+# in the index to be used by other production tasks.
+#
+# Interactive tasks should not be able to write to any docker-worker caches.
+
+SCOPE_WHITELIST = [
+ # these are not actually secrets, and just about everything needs them
+ re.compile(r"^secrets:get:project/taskcluster/gecko/(hgfingerprint|hgmointernal)$"),
+ # public downloads are OK
+ re.compile(r"^docker-worker:relengapi-proxy:tooltool.download.public$"),
+ re.compile(r"^project:releng:services/tooltool/api/download/public$"),
+ # internal downloads are OK
+ re.compile(r"^docker-worker:relengapi-proxy:tooltool.download.internal$"),
+ re.compile(r"^project:releng:services/tooltool/api/download/internal$"),
+ # private toolchain artifacts from tasks
+ re.compile(r"^queue:get-artifact:project/gecko/.*$"),
+ # level-appropriate secrets are generally necessary to run a task; these
+ # also are "not that secret" - most of them are built into the resulting
+ # binary and could be extracted by someone with `strings`.
+ re.compile(r"^secrets:get:project/releng/gecko/build/level-[0-9]/\*"),
+ # ptracing is generally useful for interactive tasks, too!
+ re.compile(r"^docker-worker:feature:allowPtrace$"),
+ # docker-worker capabilities include loopback devices
+ re.compile(r"^docker-worker:capability:device:.*$"),
+ re.compile(r"^docker-worker:capability:privileged$"),
+ re.compile(r"^docker-worker:cache:gecko-level-1-checkouts.*$"),
+ re.compile(r"^docker-worker:cache:gecko-level-1-tooltool-cache.*$"),
+]
+
+
+def context(params):
+ # available for any docker-worker tasks at levels 1, 2; and for
+ # test tasks on level 3 (level-3 builders are firewalled off)
+ if int(params["level"]) < 3:
+ return [{"worker-implementation": "docker-worker"}]
+ return [{"worker-implementation": "docker-worker", "kind": "test"}]
+ # Windows is not supported by one-click loaners yet. See
+ # https://wiki.mozilla.org/ReleaseEngineering/How_To/Self_Provision_a_TaskCluster_Windows_Instance
+ # for instructions for using them.
+
+
+@register_callback_action(
+ title="Create Interactive Task",
+ name="create-interactive",
+ symbol="create-inter",
+ description=("Create a a copy of the task that you can interact with"),
+ order=50,
+ context=context,
+ schema={
+ "type": "object",
+ "properties": {
+ "notify": {
+ "type": "string",
+ "format": "email",
+ "title": "Who to notify of the pending interactive task",
+ "description": (
+ "Enter your email here to get an email containing a link "
+ "to interact with the task"
+ ),
+ # include a default for ease of users' editing
+ "default": "noreply@noreply.mozilla.org",
+ },
+ },
+ "additionalProperties": False,
+ },
+)
+def create_interactive_action(parameters, graph_config, input, task_group_id, task_id):
+ # fetch the original task definition from the taskgraph, to avoid
+ # creating interactive copies of unexpected tasks. Note that this only applies
+ # to docker-worker tasks, so we can assume the docker-worker payload format.
+ decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels(
+ parameters, graph_config
+ )
+ task = get_task_definition(task_id)
+ label = task["metadata"]["name"]
+
+ def edit(task):
+ if task.label != label:
+ return task
+ task_def = task.task
+
+ # drop task routes (don't index this!)
+ task_def["routes"] = []
+
+ # only try this once
+ task_def["retries"] = 0
+
+ # short expirations, at least 3 hour maxRunTime
+ task_def["deadline"] = {"relative-datestamp": "12 hours"}
+ task_def["created"] = {"relative-datestamp": "0 hours"}
+ task_def["expires"] = {"relative-datestamp": "1 day"}
+
+ # filter scopes with the SCOPE_WHITELIST
+ task.task["scopes"] = [
+ s
+ for s in task.task.get("scopes", [])
+ if any(p.match(s) for p in SCOPE_WHITELIST)
+ ]
+
+ payload = task_def["payload"]
+
+ # make sure the task runs for long enough..
+ payload["maxRunTime"] = max(3600 * 3, payload.get("maxRunTime", 0))
+
+ # no caches or artifacts
+ payload["cache"] = {}
+ payload["artifacts"] = {}
+
+ # enable interactive mode
+ payload.setdefault("features", {})["interactive"] = True
+ payload.setdefault("env", {})["TASKCLUSTER_INTERACTIVE"] = "true"
+
+ for key in task_def["payload"]["env"].keys():
+ payload["env"][key] = task_def["payload"]["env"].get(key, "")
+
+ return task
+
+ # Create the task and any of its dependencies. This uses a new taskGroupId to avoid
+ # polluting the existing taskGroup with interactive tasks.
+ action_task_id = os.environ.get("TASK_ID")
+ label_to_taskid = create_tasks(
+ graph_config,
+ [label],
+ full_task_graph,
+ label_to_taskid,
+ parameters,
+ decision_task_id=action_task_id,
+ modifier=edit,
+ )
+
+ taskId = label_to_taskid[label]
+ logger.info(f"Created interactive task {taskId}; sending notification")
+
+ if input and "notify" in input:
+ email = input["notify"]
+ # no point sending to a noreply address!
+ if email == "noreply@noreply.mozilla.org":
+ return
+
+ info = {
+ "url": taskcluster_urls.ui(get_root_url(False), f"tasks/{taskId}/connect"),
+ "label": label,
+ "revision": parameters["head_rev"],
+ "repo": parameters["head_repository"],
+ }
+ send_email(
+ email,
+ subject=EMAIL_SUBJECT.format(**info),
+ content=EMAIL_CONTENT.format(**info),
+ link={
+ "text": "Connect",
+ "href": info["url"],
+ },
+ use_proxy=True,
+ )
diff --git a/taskcluster/gecko_taskgraph/actions/gecko_profile.py b/taskcluster/gecko_taskgraph/actions/gecko_profile.py
new file mode 100644
index 0000000000..ce4394e77c
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/actions/gecko_profile.py
@@ -0,0 +1,138 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import logging
+
+import requests
+from requests.exceptions import HTTPError
+from taskgraph.taskgraph import TaskGraph
+from taskgraph.util.taskcluster import get_artifact_from_index, get_task_definition
+
+from gecko_taskgraph.util.taskgraph import find_decision_task
+
+from .registry import register_callback_action
+from .util import combine_task_graph_files, create_tasks
+
+PUSHLOG_TMPL = "{}/json-pushes?version=2&startID={}&endID={}"
+INDEX_TMPL = "gecko.v2.{}.pushlog-id.{}.decision"
+
+logger = logging.getLogger(__name__)
+
+
+@register_callback_action(
+ title="GeckoProfile",
+ name="geckoprofile",
+ symbol="Gp",
+ description=(
+ "Take the label of the current task, "
+ "and trigger the task with that label "
+ "on previous pushes in the same project "
+ "while adding the --gecko-profile cmd arg."
+ ),
+ order=200,
+ context=[{"test-type": "talos"}, {"test-type": "raptor"}],
+ schema={},
+ available=lambda parameters: True,
+)
+def geckoprofile_action(parameters, graph_config, input, task_group_id, task_id):
+ task = get_task_definition(task_id)
+ label = task["metadata"]["name"]
+ pushes = []
+ depth = 2
+ end_id = int(parameters["pushlog_id"])
+
+ while True:
+ start_id = max(end_id - depth, 0)
+ pushlog_url = PUSHLOG_TMPL.format(
+ parameters["head_repository"], start_id, end_id
+ )
+ r = requests.get(pushlog_url)
+ r.raise_for_status()
+ pushes = pushes + list(r.json()["pushes"].keys())
+ if len(pushes) >= depth:
+ break
+
+ end_id = start_id - 1
+ start_id -= depth
+ if start_id < 0:
+ break
+
+ pushes = sorted(pushes)[-depth:]
+ backfill_pushes = []
+
+ for push in pushes:
+ try:
+ full_task_graph = get_artifact_from_index(
+ INDEX_TMPL.format(parameters["project"], push),
+ "public/full-task-graph.json",
+ )
+ _, full_task_graph = TaskGraph.from_json(full_task_graph)
+ label_to_taskid = get_artifact_from_index(
+ INDEX_TMPL.format(parameters["project"], push),
+ "public/label-to-taskid.json",
+ )
+ push_params = get_artifact_from_index(
+ INDEX_TMPL.format(parameters["project"], push), "public/parameters.yml"
+ )
+ push_decision_task_id = find_decision_task(push_params, graph_config)
+ except HTTPError as e:
+ logger.info(f"Skipping {push} due to missing index artifacts! Error: {e}")
+ continue
+
+ if label in full_task_graph.tasks.keys():
+
+ def modifier(task):
+ if task.label != label:
+ return task
+
+ cmd = task.task["payload"]["command"]
+ task.task["payload"]["command"] = add_args_to_perf_command(
+ cmd, ["--gecko-profile"]
+ )
+ task.task["extra"]["treeherder"]["symbol"] += "-p"
+ task.task["extra"]["treeherder"]["groupName"] += " (profiling)"
+ return task
+
+ create_tasks(
+ graph_config,
+ [label],
+ full_task_graph,
+ label_to_taskid,
+ push_params,
+ push_decision_task_id,
+ push,
+ modifier=modifier,
+ )
+ backfill_pushes.append(push)
+ else:
+ logging.info(f"Could not find {label} on {push}. Skipping.")
+ combine_task_graph_files(backfill_pushes)
+
+
+def add_args_to_perf_command(payload_commands, extra_args=[]):
+ """
+ Add custom command line args to a given command.
+ args:
+ payload_commands: the raw command as seen by taskcluster
+ extra_args: array of args we want to inject
+ """
+ perf_command_idx = -1 # currently, it's the last (or only) command
+ perf_command = payload_commands[perf_command_idx]
+
+ command_form = "default"
+ if isinstance(perf_command, str):
+ # windows has a single command, in long string form
+ perf_command = perf_command.split(" ")
+ command_form = "string"
+ # osx & linux have an array of subarrays
+
+ perf_command.extend(extra_args)
+
+ if command_form == "string":
+ # pack it back to list
+ perf_command = " ".join(perf_command)
+
+ payload_commands[perf_command_idx] = perf_command
+ return payload_commands
diff --git a/taskcluster/gecko_taskgraph/actions/merge_automation.py b/taskcluster/gecko_taskgraph/actions/merge_automation.py
new file mode 100644
index 0000000000..8b9455536b
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/actions/merge_automation.py
@@ -0,0 +1,99 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from taskgraph.parameters import Parameters
+
+from gecko_taskgraph.actions.registry import register_callback_action
+from gecko_taskgraph.decision import taskgraph_decision
+from gecko_taskgraph.util.attributes import RELEASE_PROMOTION_PROJECTS
+
+
+def is_release_promotion_available(parameters):
+ return parameters["project"] in RELEASE_PROMOTION_PROJECTS
+
+
+@register_callback_action(
+ name="merge-automation",
+ title="Merge Day Automation",
+ symbol="${input.behavior}",
+ description="Merge repository branches.",
+ permission="merge-automation",
+ order=500,
+ context=[],
+ available=is_release_promotion_available,
+ schema=lambda graph_config: {
+ "type": "object",
+ "properties": {
+ "force-dry-run": {
+ "type": "boolean",
+ "description": "Override other options and do not push changes",
+ "default": True,
+ },
+ "push": {
+ "type": "boolean",
+ "description": "Push changes using to_repo and to_branch",
+ "default": False,
+ },
+ "behavior": {
+ "type": "string",
+ "description": "The type of release promotion to perform.",
+ "enum": sorted(graph_config["merge-automation"]["behaviors"].keys()),
+ "default": "central-to-beta",
+ },
+ "from-repo": {
+ "type": "string",
+ "description": "The URI of the source repository",
+ },
+ "to-repo": {
+ "type": "string",
+ "description": "The push URI of the target repository",
+ },
+ "from-branch": {
+ "type": "string",
+ "description": "The fx head of the source, such as central",
+ },
+ "to-branch": {
+ "type": "string",
+ "description": "The fx head of the target, such as beta",
+ },
+ "ssh-user-alias": {
+ "type": "string",
+ "description": "The alias of an ssh account to use when pushing changes.",
+ },
+ "fetch-version-from": {
+ "type": "string",
+ "description": "Path to file used when querying current version.",
+ },
+ },
+ "required": ["behavior"],
+ },
+)
+def merge_automation_action(parameters, graph_config, input, task_group_id, task_id):
+
+ # make parameters read-write
+ parameters = dict(parameters)
+
+ parameters["target_tasks_method"] = "merge_automation"
+ parameters["merge_config"] = {
+ "force-dry-run": input.get("force-dry-run", False),
+ "behavior": input["behavior"],
+ }
+
+ for field in [
+ "from-repo",
+ "from-branch",
+ "to-repo",
+ "to-branch",
+ "ssh-user-alias",
+ "push",
+ "fetch-version-from",
+ ]:
+ if input.get(field):
+ parameters["merge_config"][field] = input[field]
+ parameters["tasks_for"] = "action"
+
+ # make parameters read-only
+ parameters = Parameters(**parameters)
+
+ taskgraph_decision({"root": graph_config.root_dir}, parameters=parameters)
diff --git a/taskcluster/gecko_taskgraph/actions/openh264.py b/taskcluster/gecko_taskgraph/actions/openh264.py
new file mode 100644
index 0000000000..226817f696
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/actions/openh264.py
@@ -0,0 +1,33 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+from .registry import register_callback_action
+from .util import create_tasks, fetch_graph_and_labels
+
+
+@register_callback_action(
+ name="openh264",
+ title="OpenH264 Binaries",
+ symbol="h264",
+ description="Action to prepare openh264 binaries for shipping",
+ context=[],
+)
+def openh264_action(parameters, graph_config, input, task_group_id, task_id):
+ decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels(
+ parameters, graph_config
+ )
+ to_run = [
+ label
+ for label, entry in full_task_graph.tasks.items()
+ if "openh264" in entry.kind
+ ]
+ create_tasks(
+ graph_config,
+ to_run,
+ full_task_graph,
+ label_to_taskid,
+ parameters,
+ decision_task_id,
+ )
diff --git a/taskcluster/gecko_taskgraph/actions/purge_caches.py b/taskcluster/gecko_taskgraph/actions/purge_caches.py
new file mode 100644
index 0000000000..4905526f6c
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/actions/purge_caches.py
@@ -0,0 +1,34 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import logging
+
+from taskgraph.util.taskcluster import get_task_definition, purge_cache
+
+from .registry import register_callback_action
+
+logger = logging.getLogger(__name__)
+
+
+@register_callback_action(
+ title="Purge Worker Caches",
+ name="purge-cache",
+ symbol="purge-cache",
+ description=(
+ "Purge any caches associated with this task "
+ "across all workers of the same workertype as the task."
+ ),
+ order=450,
+ context=[{"worker-implementation": "docker-worker"}],
+)
+def purge_caches_action(parameters, graph_config, input, task_group_id, task_id):
+ task = get_task_definition(task_id)
+ if task["payload"].get("cache"):
+ for cache in task["payload"]["cache"]:
+ purge_cache(
+ task["provisionerId"], task["workerType"], cache, use_proxy=True
+ )
+ else:
+ logger.info("Task has no caches. Will not clear anything!")
diff --git a/taskcluster/gecko_taskgraph/actions/raptor_extra_options.py b/taskcluster/gecko_taskgraph/actions/raptor_extra_options.py
new file mode 100644
index 0000000000..43b26d284d
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/actions/raptor_extra_options.py
@@ -0,0 +1,77 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import logging
+
+from taskgraph.util.taskcluster import get_task_definition
+
+from .registry import register_callback_action
+from .util import create_tasks, fetch_graph_and_labels
+
+logger = logging.getLogger(__name__)
+
+
+@register_callback_action(
+ title="Raptor Extra Options",
+ name="raptor-extra-options",
+ symbol="rxo",
+ description=(
+ "Allows the user to rerun raptor-browsertime tasks with additional arguments."
+ ),
+ order=200,
+ context=[{"test-type": "raptor"}],
+ schema={
+ "type": "object",
+ "properties": {
+ "extra_options": {
+ "type": "string",
+ "default": "",
+ "description": "A space-delimited string of extra options "
+ "to be passed into a raptor-browsertime test."
+ "This also works with options with values, where the values "
+ "should be set as an assignment e.g. browser-cycles=3 "
+ "Passing multiple extra options could look something this: "
+ "`verbose browser-cycles=3` where the test runs with verbose "
+ "mode on and the browser cycles only 3 times.",
+ }
+ },
+ },
+ available=lambda parameters: True,
+)
+def raptor_extra_options_action(
+ parameters, graph_config, input, task_group_id, task_id
+):
+ decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels(
+ parameters, graph_config
+ )
+ task = get_task_definition(task_id)
+ label = task["metadata"]["name"]
+
+ def modifier(task):
+ if task.label != label:
+ return task
+
+ if task.task["payload"]["env"].get("PERF_FLAGS"):
+ task.task["payload"]["env"]["PERF_FLAGS"] += " " + input.get(
+ "extra_options"
+ )
+ else:
+ task.task["payload"]["env"].setdefault(
+ "PERF_FLAGS", input.get("extra_options")
+ )
+
+ task.task["extra"]["treeherder"]["symbol"] += "-rxo"
+ task.task["extra"]["treeherder"]["groupName"] += " (extra options run)"
+ return task
+
+ create_tasks(
+ graph_config,
+ [label],
+ full_task_graph,
+ label_to_taskid,
+ parameters,
+ decision_task_id,
+ modifier=modifier,
+ )
diff --git a/taskcluster/gecko_taskgraph/actions/rebuild_cached_tasks.py b/taskcluster/gecko_taskgraph/actions/rebuild_cached_tasks.py
new file mode 100644
index 0000000000..9d8906caf1
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/actions/rebuild_cached_tasks.py
@@ -0,0 +1,37 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+from .registry import register_callback_action
+from .util import create_tasks, fetch_graph_and_labels
+
+
+@register_callback_action(
+ name="rebuild-cached-tasks",
+ title="Rebuild Cached Tasks",
+ symbol="rebuild-cached",
+ description="Rebuild cached tasks.",
+ order=1000,
+ context=[],
+)
+def rebuild_cached_tasks_action(
+ parameters, graph_config, input, task_group_id, task_id
+):
+ decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels(
+ parameters, graph_config
+ )
+ cached_tasks = [
+ label
+ for label, task in full_task_graph.tasks.items()
+ if task.attributes.get("cached_task", False)
+ ]
+ if cached_tasks:
+ create_tasks(
+ graph_config,
+ cached_tasks,
+ full_task_graph,
+ label_to_taskid,
+ parameters,
+ decision_task_id,
+ )
diff --git a/taskcluster/gecko_taskgraph/actions/registry.py b/taskcluster/gecko_taskgraph/actions/registry.py
new file mode 100644
index 0000000000..0c99e68d20
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/actions/registry.py
@@ -0,0 +1,371 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import json
+import re
+from collections import namedtuple
+from types import FunctionType
+
+from mozbuild.util import memoize
+from taskgraph import create
+from taskgraph.config import load_graph_config
+from taskgraph.parameters import Parameters
+from taskgraph.util import taskcluster, yaml
+from taskgraph.util.python_path import import_sibling_modules
+
+from gecko_taskgraph.util import hash
+
+actions = []
+callbacks = {}
+
+Action = namedtuple("Action", ["order", "cb_name", "permission", "action_builder"])
+
+
+def is_json(data):
+ """Return ``True``, if ``data`` is a JSON serializable data structure."""
+ try:
+ json.dumps(data)
+ except ValueError:
+ return False
+ return True
+
+
+@memoize
+def read_taskcluster_yml(filename):
+ """Load and parse .taskcluster.yml, memoized to save some time"""
+ return yaml.load_yaml(filename)
+
+
+@memoize
+def hash_taskcluster_yml(filename):
+ """
+ Generate a hash of the given .taskcluster.yml. This is the first 10 digits
+ of the sha256 of the file's content, and is used by administrative scripts
+ to create a hook based on this content.
+ """
+ return hash.hash_path(filename)[:10]
+
+
+def register_callback_action(
+ name,
+ title,
+ symbol,
+ description,
+ order=10000,
+ context=[],
+ available=lambda parameters: True,
+ schema=None,
+ permission="generic",
+ cb_name=None,
+):
+ """
+ Register an action callback that can be triggered from supporting
+ user interfaces, such as Treeherder.
+
+ This function is to be used as a decorator for a callback that takes
+ parameters as follows:
+
+ ``parameters``:
+ Decision task parameters, see ``taskgraph.parameters.Parameters``.
+ ``input``:
+ Input matching specified JSON schema, ``None`` if no ``schema``
+ parameter is given to ``register_callback_action``.
+ ``task_group_id``:
+ The id of the task-group this was triggered for.
+ ``task_id`` and `task``:
+ task identifier and task definition for task the action was triggered
+ for, ``None`` if no ``context`` parameters was given to
+ ``register_callback_action``.
+
+ Parameters
+ ----------
+ name : str
+ An identifier for this action, used by UIs to find the action.
+ title : str
+ A human readable title for the action to be used as label on a button
+ or text on a link for triggering the action.
+ symbol : str
+ Treeherder symbol for the action callback, this is the symbol that the
+ task calling your callback will be displayed as. This is usually 1-3
+ letters abbreviating the action title.
+ description : str
+ A human readable description of the action in **markdown**.
+ This will be display as tooltip and in dialog window when the action
+ is triggered. This is a good place to describe how to use the action.
+ order : int
+ Order of the action in menus, this is relative to the ``order`` of
+ other actions declared.
+ context : list of dict
+ List of tag-sets specifying which tasks the action is can take as input.
+ If no tag-sets is specified as input the action is related to the
+ entire task-group, and won't be triggered with a given task.
+
+ Otherwise, if ``context = [{'k': 'b', 'p': 'l'}, {'k': 't'}]`` will only
+ be displayed in the context menu for tasks that has
+ ``task.tags.k == 'b' && task.tags.p = 'l'`` or ``task.tags.k = 't'``.
+ Esentially, this allows filtering on ``task.tags``.
+
+ If this is a function, it is given the decision parameters and must return
+ a value of the form described above.
+ available : function
+ An optional function that given decision parameters decides if the
+ action is available. Defaults to a function that always returns ``True``.
+ schema : dict
+ JSON schema specifying input accepted by the action.
+ This is optional and can be left ``null`` if no input is taken.
+ permission : string
+ This defaults to ``generic`` and needs to be set for actions that need
+ additional permissions. It appears appears in ci-configuration and
+ various role and hook
+ names.
+ cb_name : string
+ The name under which this function should be registered, defaulting to
+ `name`. Unlike `name`, which can appear multiple times, cb_name must be
+ unique among all registered callbacks.
+
+ Returns
+ -------
+ function
+ To be used as decorator for the callback function.
+ """
+ mem = {"registered": False} # workaround nonlocal missing in 2.x
+
+ assert isinstance(title, str), "title must be a string"
+ assert isinstance(description, str), "description must be a string"
+ title = title.strip()
+ description = description.strip()
+
+ if not cb_name:
+ cb_name = name
+
+ # ensure that context is callable
+ if not callable(context):
+ context_value = context
+
+ # Because of the same name as param it must be redefined
+ # pylint: disable=E0102
+ def context(params):
+ return context_value # noqa
+
+ def register_callback(cb):
+ assert isinstance(name, str), "name must be a string"
+ assert isinstance(order, int), "order must be an integer"
+ assert callable(schema) or is_json(
+ schema
+ ), "schema must be a JSON compatible object"
+ assert isinstance(cb, FunctionType), "callback must be a function"
+ # Allow for json-e > 25 chars in the symbol.
+ if "$" not in symbol:
+ assert 1 <= len(symbol) <= 25, "symbol must be between 1 and 25 characters"
+ assert isinstance(symbol, str), "symbol must be a string"
+
+ assert not mem[
+ "registered"
+ ], "register_callback_action must be used as decorator"
+ assert cb_name not in callbacks, "callback name {} is not unique".format(
+ cb_name
+ )
+
+ def action_builder(parameters, graph_config, decision_task_id):
+ if not available(parameters):
+ return None
+
+ # gather up the common decision-task-supplied data for this action
+ repo_param = "{}head_repository".format(
+ graph_config["project-repo-param-prefix"]
+ )
+ repository = {
+ "url": parameters[repo_param],
+ "project": parameters["project"],
+ "level": parameters["level"],
+ }
+
+ revision = parameters[
+ "{}head_rev".format(graph_config["project-repo-param-prefix"])
+ ]
+ base_revision = parameters[
+ "{}base_rev".format(graph_config["project-repo-param-prefix"])
+ ]
+ push = {
+ "owner": "mozilla-taskcluster-maintenance@mozilla.com",
+ "pushlog_id": parameters["pushlog_id"],
+ "revision": revision,
+ "base_revision": base_revision,
+ }
+
+ match = re.match(
+ r"https://(hg.mozilla.org)/(.*?)/?$", parameters[repo_param]
+ )
+ if not match:
+ raise Exception(f"Unrecognized {repo_param}")
+ action = {
+ "name": name,
+ "title": title,
+ "description": description,
+ # target taskGroupId (the task group this decision task is creating)
+ "taskGroupId": decision_task_id,
+ "cb_name": cb_name,
+ "symbol": symbol,
+ }
+
+ rv = {
+ "name": name,
+ "title": title,
+ "description": description,
+ "context": context(parameters),
+ }
+ if schema:
+ rv["schema"] = (
+ schema(graph_config=graph_config) if callable(schema) else schema
+ )
+
+ trustDomain = graph_config["trust-domain"]
+ level = parameters["level"]
+ tcyml_hash = hash_taskcluster_yml(graph_config.taskcluster_yml)
+
+ # the tcyml_hash is prefixed with `/` in the hookId, so users will be granted
+ # hooks:trigger-hook:project-gecko/in-tree-action-3-myaction/*; if another
+ # action was named `myaction/release`, then the `*` in the scope would also
+ # match that action. To prevent such an accident, we prohibit `/` in hook
+ # names.
+ if "/" in permission:
+ raise Exception("`/` is not allowed in action names; use `-`")
+
+ rv.update(
+ {
+ "kind": "hook",
+ "hookGroupId": f"project-{trustDomain}",
+ "hookId": "in-tree-action-{}-{}/{}".format(
+ level, permission, tcyml_hash
+ ),
+ "hookPayload": {
+ # provide the decision-task parameters as context for triggerHook
+ "decision": {
+ "action": action,
+ "repository": repository,
+ "push": push,
+ },
+ # and pass everything else through from our own context
+ "user": {
+ "input": {"$eval": "input"},
+ "taskId": {"$eval": "taskId"}, # target taskId (or null)
+ "taskGroupId": {
+ "$eval": "taskGroupId"
+ }, # target task group
+ },
+ },
+ "extra": {
+ "actionPerm": permission,
+ },
+ }
+ )
+
+ return rv
+
+ actions.append(Action(order, cb_name, permission, action_builder))
+
+ mem["registered"] = True
+ callbacks[cb_name] = cb
+ return cb
+
+ return register_callback
+
+
+def render_actions_json(parameters, graph_config, decision_task_id):
+ """
+ Render JSON object for the ``public/actions.json`` artifact.
+
+ Parameters
+ ----------
+ parameters : taskgraph.parameters.Parameters
+ Decision task parameters.
+
+ Returns
+ -------
+ dict
+ JSON object representation of the ``public/actions.json`` artifact.
+ """
+ assert isinstance(parameters, Parameters), "requires instance of Parameters"
+ actions = []
+ for action in sorted(_get_actions(graph_config), key=lambda action: action.order):
+ action = action.action_builder(parameters, graph_config, decision_task_id)
+ if action:
+ assert is_json(action), "action must be a JSON compatible object"
+ actions.append(action)
+ return {
+ "version": 1,
+ "variables": {},
+ "actions": actions,
+ }
+
+
+def sanity_check_task_scope(callback, parameters, graph_config):
+ """
+ If this action is not generic, then verify that this task has the necessary
+ scope to run the action. This serves as a backstop preventing abuse by
+ running non-generic actions using generic hooks. While scopes should
+ prevent serious damage from such abuse, it's never a valid thing to do.
+ """
+ for action in _get_actions(graph_config):
+ if action.cb_name == callback:
+ break
+ else:
+ raise Exception(f"No action with cb_name {callback}")
+
+ repo_param = "{}head_repository".format(graph_config["project-repo-param-prefix"])
+ head_repository = parameters[repo_param]
+ assert head_repository.startswith("https://hg.mozilla.org/")
+ expected_scope = "assume:repo:{}:action:{}".format(
+ head_repository[8:], action.permission
+ )
+
+ # the scope should appear literally; no need for a satisfaction check. The use of
+ # get_current_scopes here calls the auth service through the Taskcluster Proxy, giving
+ # the precise scopes available to this task.
+ if expected_scope not in taskcluster.get_current_scopes():
+ raise Exception(f"Expected task scope {expected_scope} for this action")
+
+
+def trigger_action_callback(
+ task_group_id, task_id, input, callback, parameters, root, test=False
+):
+ """
+ Trigger action callback with the given inputs. If `test` is true, then run
+ the action callback in testing mode, without actually creating tasks.
+ """
+ graph_config = load_graph_config(root)
+ graph_config.register()
+ callbacks = _get_callbacks(graph_config)
+ cb = callbacks.get(callback, None)
+ if not cb:
+ raise Exception(
+ "Unknown callback: {}. Known callbacks: {}".format(
+ callback, ", ".join(callbacks)
+ )
+ )
+
+ if test:
+ create.testing = True
+ taskcluster.testing = True
+
+ if not test:
+ sanity_check_task_scope(callback, parameters, graph_config)
+
+ cb(Parameters(**parameters), graph_config, input, task_group_id, task_id)
+
+
+def _load(graph_config):
+ # Load all modules from this folder, relying on the side-effects of register_
+ # functions to populate the action registry.
+ import_sibling_modules(exceptions=("util.py",))
+ return callbacks, actions
+
+
+def _get_callbacks(graph_config):
+ return _load(graph_config)[0]
+
+
+def _get_actions(graph_config):
+ return _load(graph_config)[1]
diff --git a/taskcluster/gecko_taskgraph/actions/release_promotion.py b/taskcluster/gecko_taskgraph/actions/release_promotion.py
new file mode 100644
index 0000000000..9d6b7ad0b7
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/actions/release_promotion.py
@@ -0,0 +1,426 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import json
+import os
+
+import requests
+from taskgraph.parameters import Parameters
+from taskgraph.taskgraph import TaskGraph
+from taskgraph.util.taskcluster import get_artifact, list_task_group_incomplete_tasks
+
+from gecko_taskgraph.actions.registry import register_callback_action
+from gecko_taskgraph.decision import taskgraph_decision
+from gecko_taskgraph.util.attributes import RELEASE_PROMOTION_PROJECTS, release_level
+from gecko_taskgraph.util.partials import populate_release_history
+from gecko_taskgraph.util.partners import (
+ fix_partner_config,
+ get_partner_config_by_url,
+ get_partner_url_config,
+ get_token,
+)
+from gecko_taskgraph.util.taskgraph import (
+ find_decision_task,
+ find_existing_tasks_from_previous_kinds,
+)
+
+RELEASE_PROMOTION_SIGNOFFS = ("mar-signing",)
+
+
+def is_release_promotion_available(parameters):
+ return parameters["project"] in RELEASE_PROMOTION_PROJECTS
+
+
+def get_partner_config(partner_url_config, github_token):
+ partner_config = {}
+ for kind, url in partner_url_config.items():
+ if url:
+ partner_config[kind] = get_partner_config_by_url(url, kind, github_token)
+ return partner_config
+
+
+def get_signoff_properties():
+ props = {}
+ for signoff in RELEASE_PROMOTION_SIGNOFFS:
+ props[signoff] = {
+ "type": "string",
+ }
+ return props
+
+
+def get_required_signoffs(input, parameters):
+ input_signoffs = set(input.get("required_signoffs", []))
+ params_signoffs = set(parameters["required_signoffs"] or [])
+ return sorted(list(input_signoffs | params_signoffs))
+
+
+def get_signoff_urls(input, parameters):
+ signoff_urls = parameters["signoff_urls"]
+ signoff_urls.update(input.get("signoff_urls", {}))
+ return signoff_urls
+
+
+def get_flavors(graph_config, param):
+ """
+ Get all flavors with the given parameter enabled.
+ """
+ promotion_flavors = graph_config["release-promotion"]["flavors"]
+ return sorted(
+ flavor
+ for (flavor, config) in promotion_flavors.items()
+ if config.get(param, False)
+ )
+
+
+@register_callback_action(
+ name="release-promotion",
+ title="Release Promotion",
+ symbol="${input.release_promotion_flavor}",
+ description="Promote a release.",
+ permission="release-promotion",
+ order=500,
+ context=[],
+ available=is_release_promotion_available,
+ schema=lambda graph_config: {
+ "type": "object",
+ "properties": {
+ "build_number": {
+ "type": "integer",
+ "default": 1,
+ "minimum": 1,
+ "title": "The release build number",
+ "description": (
+ "The release build number. Starts at 1 per "
+ "release version, and increments on rebuild."
+ ),
+ },
+ "do_not_optimize": {
+ "type": "array",
+ "description": (
+ "Optional: a list of labels to avoid optimizing out "
+ "of the graph (to force a rerun of, say, "
+ "funsize docker-image tasks)."
+ ),
+ "items": {
+ "type": "string",
+ },
+ },
+ "revision": {
+ "type": "string",
+ "title": "Optional: revision to promote",
+ "description": (
+ "Optional: the revision to promote. If specified, "
+ "and `previous_graph_kinds is not specified, find the "
+ "push graph to promote based on the revision."
+ ),
+ },
+ "release_promotion_flavor": {
+ "type": "string",
+ "description": "The flavor of release promotion to perform.",
+ "default": "FILL ME OUT",
+ "enum": sorted(graph_config["release-promotion"]["flavors"].keys()),
+ },
+ "rebuild_kinds": {
+ "type": "array",
+ "description": (
+ "Optional: an array of kinds to ignore from the previous "
+ "graph(s)."
+ ),
+ "items": {
+ "type": "string",
+ },
+ },
+ "previous_graph_ids": {
+ "type": "array",
+ "description": (
+ "Optional: an array of taskIds of decision or action "
+ "tasks from the previous graph(s) to use to populate "
+ "our `previous_graph_kinds`."
+ ),
+ "items": {
+ "type": "string",
+ },
+ },
+ "version": {
+ "type": "string",
+ "description": (
+ "Optional: override the version for release promotion. "
+ "Occasionally we'll land a taskgraph fix in a later "
+ "commit, but want to act on a build from a previous "
+ "commit. If a version bump has landed in the meantime, "
+ "relying on the in-tree version will break things."
+ ),
+ "default": "",
+ },
+ "next_version": {
+ "type": "string",
+ "description": (
+ "Next version. Required in the following flavors: "
+ "{}".format(get_flavors(graph_config, "version-bump"))
+ ),
+ "default": "",
+ },
+ # Example:
+ # 'partial_updates': {
+ # '38.0': {
+ # 'buildNumber': 1,
+ # 'locales': ['de', 'en-GB', 'ru', 'uk', 'zh-TW']
+ # },
+ # '37.0': {
+ # 'buildNumber': 2,
+ # 'locales': ['de', 'en-GB', 'ru', 'uk']
+ # }
+ # }
+ "partial_updates": {
+ "type": "object",
+ "description": (
+ "Partial updates. Required in the following flavors: "
+ "{}".format(get_flavors(graph_config, "partial-updates"))
+ ),
+ "default": {},
+ "additionalProperties": {
+ "type": "object",
+ "properties": {
+ "buildNumber": {
+ "type": "number",
+ },
+ "locales": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ },
+ },
+ },
+ "required": [
+ "buildNumber",
+ "locales",
+ ],
+ "additionalProperties": False,
+ },
+ },
+ "release_eta": {
+ "type": "string",
+ "default": "",
+ },
+ "release_enable_partner_repack": {
+ "type": "boolean",
+ "default": False,
+ "description": "Toggle for creating partner repacks",
+ },
+ "release_enable_partner_attribution": {
+ "type": "boolean",
+ "default": False,
+ "description": "Toggle for creating partner attribution",
+ },
+ "release_partner_build_number": {
+ "type": "integer",
+ "default": 1,
+ "minimum": 1,
+ "description": (
+ "The partner build number. This translates to, e.g. "
+ "`v1` in the path. We generally only have to "
+ "bump this on off-cycle partner rebuilds."
+ ),
+ },
+ "release_partners": {
+ "type": "array",
+ "description": (
+ "A list of partners to repack, or if null or empty then use "
+ "the current full set"
+ ),
+ "items": {
+ "type": "string",
+ },
+ },
+ "release_partner_config": {
+ "type": "object",
+ "description": "Partner configuration to use for partner repacks.",
+ "properties": {},
+ "additionalProperties": True,
+ },
+ "release_enable_emefree": {
+ "type": "boolean",
+ "default": False,
+ "description": "Toggle for creating EME-free repacks",
+ },
+ "required_signoffs": {
+ "type": "array",
+ "description": ("The flavor of release promotion to perform."),
+ "items": {
+ "enum": RELEASE_PROMOTION_SIGNOFFS,
+ },
+ },
+ "signoff_urls": {
+ "type": "object",
+ "default": {},
+ "additionalProperties": False,
+ "properties": get_signoff_properties(),
+ },
+ },
+ "required": ["release_promotion_flavor", "build_number"],
+ },
+)
+def release_promotion_action(parameters, graph_config, input, task_group_id, task_id):
+ release_promotion_flavor = input["release_promotion_flavor"]
+ promotion_config = graph_config["release-promotion"]["flavors"][
+ release_promotion_flavor
+ ]
+ release_history = {}
+ product = promotion_config["product"]
+
+ next_version = str(input.get("next_version") or "")
+ if promotion_config.get("version-bump", False):
+ # We force str() the input, hence the 'None'
+ if next_version in ["", "None"]:
+ raise Exception(
+ "`next_version` property needs to be provided for `{}` "
+ "target.".format(release_promotion_flavor)
+ )
+
+ if promotion_config.get("partial-updates", False):
+ partial_updates = input.get("partial_updates", {})
+ if not partial_updates and release_level(parameters["project"]) == "production":
+ raise Exception(
+ "`partial_updates` property needs to be provided for `{}`"
+ "target.".format(release_promotion_flavor)
+ )
+ balrog_prefix = product.title()
+ os.environ["PARTIAL_UPDATES"] = json.dumps(partial_updates, sort_keys=True)
+ release_history = populate_release_history(
+ balrog_prefix, parameters["project"], partial_updates=partial_updates
+ )
+
+ target_tasks_method = promotion_config["target-tasks-method"].format(
+ project=parameters["project"]
+ )
+ rebuild_kinds = input.get(
+ "rebuild_kinds", promotion_config.get("rebuild-kinds", [])
+ )
+ do_not_optimize = input.get(
+ "do_not_optimize", promotion_config.get("do-not-optimize", [])
+ )
+
+ # Make sure no pending tasks remain from a previous run
+ own_task_id = os.environ.get("TASK_ID", "")
+ try:
+ for t in list_task_group_incomplete_tasks(own_task_id):
+ if t == own_task_id:
+ continue
+ raise Exception(
+ "task group has unexpected pre-existing incomplete tasks (e.g. {})".format(
+ t
+ )
+ )
+ except requests.exceptions.HTTPError as e:
+ # 404 means the task group doesn't exist yet, and we're fine
+ if e.response.status_code != 404:
+ raise
+
+ # Build previous_graph_ids from ``previous_graph_ids``, ``revision``,
+ # or the action parameters.
+ previous_graph_ids = input.get("previous_graph_ids")
+ if not previous_graph_ids:
+ revision = input.get("revision")
+ if revision:
+ head_rev_param = "{}head_rev".format(
+ graph_config["project-repo-param-prefix"]
+ )
+ push_parameters = {
+ head_rev_param: revision,
+ "project": parameters["project"],
+ }
+ else:
+ push_parameters = parameters
+ previous_graph_ids = [find_decision_task(push_parameters, graph_config)]
+
+ # Download parameters from the first decision task
+ parameters = get_artifact(previous_graph_ids[0], "public/parameters.yml")
+ # Download and combine full task graphs from each of the previous_graph_ids.
+ # Sometimes previous relpro action tasks will add tasks, like partials,
+ # that didn't exist in the first full_task_graph, so combining them is
+ # important. The rightmost graph should take precedence in the case of
+ # conflicts.
+ combined_full_task_graph = {}
+ for graph_id in previous_graph_ids:
+ full_task_graph = get_artifact(graph_id, "public/full-task-graph.json")
+ combined_full_task_graph.update(full_task_graph)
+ _, combined_full_task_graph = TaskGraph.from_json(combined_full_task_graph)
+ parameters["existing_tasks"] = find_existing_tasks_from_previous_kinds(
+ combined_full_task_graph, previous_graph_ids, rebuild_kinds
+ )
+ parameters["do_not_optimize"] = do_not_optimize
+ parameters["target_tasks_method"] = target_tasks_method
+ parameters["build_number"] = int(input["build_number"])
+ parameters["next_version"] = next_version
+ parameters["release_history"] = release_history
+ if promotion_config.get("is-rc"):
+ parameters["release_type"] += "-rc"
+ parameters["release_eta"] = input.get("release_eta", "")
+ parameters["release_product"] = product
+ # When doing staging releases on try, we still want to re-use tasks from
+ # previous graphs.
+ parameters["optimize_target_tasks"] = True
+
+ if release_promotion_flavor == "promote_firefox_partner_repack":
+ release_enable_partner_repack = True
+ release_enable_partner_attribution = False
+ release_enable_emefree = False
+ elif release_promotion_flavor == "promote_firefox_partner_attribution":
+ release_enable_partner_repack = False
+ release_enable_partner_attribution = True
+ release_enable_emefree = False
+ else:
+ # for promotion or ship phases, we use the action input to turn the repacks/attribution off
+ release_enable_partner_repack = input["release_enable_partner_repack"]
+ release_enable_partner_attribution = input["release_enable_partner_attribution"]
+ release_enable_emefree = input["release_enable_emefree"]
+
+ partner_url_config = get_partner_url_config(parameters, graph_config)
+ if (
+ release_enable_partner_repack
+ and not partner_url_config["release-partner-repack"]
+ ):
+ raise Exception("Can't enable partner repacks when no config url found")
+ if (
+ release_enable_partner_attribution
+ and not partner_url_config["release-partner-attribution"]
+ ):
+ raise Exception("Can't enable partner attribution when no config url found")
+ if release_enable_emefree and not partner_url_config["release-eme-free-repack"]:
+ raise Exception("Can't enable EMEfree repacks when no config url found")
+ parameters["release_enable_partner_repack"] = release_enable_partner_repack
+ parameters[
+ "release_enable_partner_attribution"
+ ] = release_enable_partner_attribution
+ parameters["release_enable_emefree"] = release_enable_emefree
+
+ partner_config = input.get("release_partner_config")
+ if not partner_config and any(
+ [
+ release_enable_partner_repack,
+ release_enable_partner_attribution,
+ release_enable_emefree,
+ ]
+ ):
+ github_token = get_token(parameters)
+ partner_config = get_partner_config(partner_url_config, github_token)
+ if partner_config:
+ parameters["release_partner_config"] = fix_partner_config(partner_config)
+ parameters["release_partners"] = input.get("release_partners")
+ if input.get("release_partner_build_number"):
+ parameters["release_partner_build_number"] = input[
+ "release_partner_build_number"
+ ]
+
+ if input["version"]:
+ parameters["version"] = input["version"]
+
+ parameters["required_signoffs"] = get_required_signoffs(input, parameters)
+ parameters["signoff_urls"] = get_signoff_urls(input, parameters)
+
+ # make parameters read-only
+ parameters = Parameters(**parameters)
+
+ taskgraph_decision({"root": graph_config.root_dir}, parameters=parameters)
diff --git a/taskcluster/gecko_taskgraph/actions/retrigger.py b/taskcluster/gecko_taskgraph/actions/retrigger.py
new file mode 100644
index 0000000000..fc8c05c83f
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/actions/retrigger.py
@@ -0,0 +1,301 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import logging
+import sys
+import textwrap
+
+from taskgraph.util.taskcluster import get_task_definition, rerun_task
+
+from gecko_taskgraph.util.taskcluster import state_task
+
+from .registry import register_callback_action
+from .util import (
+ combine_task_graph_files,
+ create_task_from_def,
+ create_tasks,
+ fetch_graph_and_labels,
+ get_tasks_with_downstream,
+ relativize_datestamps,
+)
+
+logger = logging.getLogger(__name__)
+
+RERUN_STATES = ("exception", "failed")
+
+
+def _should_retrigger(task_graph, label):
+ """
+ Return whether a given task in the taskgraph should be retriggered.
+
+ This handles the case where the task isn't there by assuming it should not be.
+ """
+ if label not in task_graph:
+ logger.info(
+ "Task {} not in full taskgraph, assuming task should not be retriggered.".format(
+ label
+ )
+ )
+ return False
+ return task_graph[label].attributes.get("retrigger", False)
+
+
+@register_callback_action(
+ title="Retrigger",
+ name="retrigger",
+ symbol="rt",
+ cb_name="retrigger-decision",
+ description=textwrap.dedent(
+ """\
+ Create a clone of the task (retriggering decision, action, and cron tasks requires
+ special scopes)."""
+ ),
+ order=11,
+ context=[
+ {"kind": "decision-task"},
+ {"kind": "action-callback"},
+ {"kind": "cron-task"},
+ {"action": "backfill-task"},
+ ],
+)
+def retrigger_decision_action(parameters, graph_config, input, task_group_id, task_id):
+ """For a single task, we try to just run exactly the same task once more.
+ It's quite possible that we don't have the scopes to do so (especially for
+ an action), but this is best-effort."""
+
+ # make all of the timestamps relative; they will then be turned back into
+ # absolute timestamps relative to the current time.
+ task = get_task_definition(task_id)
+ task = relativize_datestamps(task)
+ create_task_from_def(
+ task, parameters["level"], action_tag="retrigger-decision-task"
+ )
+
+
+@register_callback_action(
+ title="Retrigger",
+ name="retrigger",
+ symbol="rt",
+ description=("Create a clone of the task."),
+ order=19, # must be greater than other orders in this file, as this is the fallback version
+ context=[{"retrigger": "true"}],
+ schema={
+ "type": "object",
+ "properties": {
+ "downstream": {
+ "type": "boolean",
+ "description": (
+ "If true, downstream tasks from this one will be cloned as well. "
+ "The dependencies will be updated to work with the new task at the root."
+ ),
+ "default": False,
+ },
+ "times": {
+ "type": "integer",
+ "default": 1,
+ "minimum": 1,
+ "maximum": 100,
+ "title": "Times",
+ "description": "How many times to run each task.",
+ },
+ },
+ },
+)
+@register_callback_action(
+ title="Retrigger (disabled)",
+ name="retrigger",
+ cb_name="retrigger-disabled",
+ symbol="rt",
+ description=(
+ "Create a clone of the task.\n\n"
+ "This type of task should typically be re-run instead of re-triggered."
+ ),
+ order=20, # must be greater than other orders in this file, as this is the fallback version
+ context=[{}],
+ schema={
+ "type": "object",
+ "properties": {
+ "downstream": {
+ "type": "boolean",
+ "description": (
+ "If true, downstream tasks from this one will be cloned as well. "
+ "The dependencies will be updated to work with the new task at the root."
+ ),
+ "default": False,
+ },
+ "times": {
+ "type": "integer",
+ "default": 1,
+ "minimum": 1,
+ "maximum": 100,
+ "title": "Times",
+ "description": "How many times to run each task.",
+ },
+ "force": {
+ "type": "boolean",
+ "default": False,
+ "description": (
+ "This task should not be re-triggered. "
+ "This can be overridden by passing `true` here."
+ ),
+ },
+ },
+ },
+)
+def retrigger_action(parameters, graph_config, input, task_group_id, task_id):
+ decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels(
+ parameters, graph_config
+ )
+
+ task = get_task_definition(task_id)
+ label = task["metadata"]["name"]
+
+ with_downstream = " "
+ to_run = [label]
+
+ if not input.get("force", None) and not _should_retrigger(full_task_graph, label):
+ logger.info(
+ "Not retriggering task {}, task should not be retrigged "
+ "and force not specified.".format(label)
+ )
+ sys.exit(1)
+
+ if input.get("downstream"):
+ to_run = get_tasks_with_downstream(to_run, full_task_graph, label_to_taskid)
+ with_downstream = " (with downstream) "
+
+ times = input.get("times", 1)
+ for i in range(times):
+ create_tasks(
+ graph_config,
+ to_run,
+ full_task_graph,
+ label_to_taskid,
+ parameters,
+ decision_task_id,
+ i,
+ action_tag="retrigger-task",
+ )
+
+ logger.info(f"Scheduled {label}{with_downstream}(time {i + 1}/{times})")
+ combine_task_graph_files(list(range(times)))
+
+
+@register_callback_action(
+ title="Rerun",
+ name="rerun",
+ symbol="rr",
+ description=(
+ "Rerun a task.\n\n"
+ "This only works on failed or exception tasks in the original taskgraph,"
+ " and is CoT friendly."
+ ),
+ order=300,
+ context=[{}],
+ schema={"type": "object", "properties": {}},
+)
+def rerun_action(parameters, graph_config, input, task_group_id, task_id):
+ task = get_task_definition(task_id)
+ parameters = dict(parameters)
+ decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels(
+ parameters, graph_config
+ )
+ label = task["metadata"]["name"]
+ if task_id not in label_to_taskid.values():
+ logger.error(
+ "Refusing to rerun {}: taskId {} not in decision task {} label_to_taskid!".format(
+ label, task_id, decision_task_id
+ )
+ )
+
+ _rerun_task(task_id, label)
+
+
+def _rerun_task(task_id, label):
+ state = state_task(task_id)
+ if state not in RERUN_STATES:
+ logger.warning(
+ "No need to rerun {}: state '{}' not in {}!".format(
+ label, state, RERUN_STATES
+ )
+ )
+ return
+ rerun_task(task_id)
+ logger.info(f"Reran {label}")
+
+
+@register_callback_action(
+ title="Retrigger",
+ name="retrigger-multiple",
+ symbol="rt",
+ description=("Create a clone of the task."),
+ context=[],
+ schema={
+ "type": "object",
+ "properties": {
+ "requests": {
+ "type": "array",
+ "items": {
+ "tasks": {
+ "type": "array",
+ "description": "An array of task labels",
+ "items": {"type": "string"},
+ },
+ "times": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 100,
+ "title": "Times",
+ "description": "How many times to run each task.",
+ },
+ "additionalProperties": False,
+ },
+ },
+ "additionalProperties": False,
+ },
+ },
+)
+def retrigger_multiple(parameters, graph_config, input, task_group_id, task_id):
+ decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels(
+ parameters, graph_config
+ )
+
+ suffixes = []
+ for i, request in enumerate(input.get("requests", [])):
+ times = request.get("times", 1)
+ rerun_tasks = [
+ label
+ for label in request.get("tasks")
+ if not _should_retrigger(full_task_graph, label)
+ ]
+ retrigger_tasks = [
+ label
+ for label in request.get("tasks")
+ if _should_retrigger(full_task_graph, label)
+ ]
+
+ for label in rerun_tasks:
+ # XXX we should not re-run tasks pulled in from other pushes
+ # In practice, this shouldn't matter, as only completed tasks
+ # are pulled in from other pushes and treeherder won't pass
+ # those labels.
+ _rerun_task(label_to_taskid[label], label)
+
+ for j in range(times):
+ suffix = f"{i}-{j}"
+ suffixes.append(suffix)
+ create_tasks(
+ graph_config,
+ retrigger_tasks,
+ full_task_graph,
+ label_to_taskid,
+ parameters,
+ decision_task_id,
+ suffix,
+ action_tag="retrigger-multiple-task",
+ )
+
+ if suffixes:
+ combine_task_graph_files(suffixes)
diff --git a/taskcluster/gecko_taskgraph/actions/retrigger_custom.py b/taskcluster/gecko_taskgraph/actions/retrigger_custom.py
new file mode 100644
index 0000000000..677cb00a11
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/actions/retrigger_custom.py
@@ -0,0 +1,185 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import json
+import logging
+
+from taskgraph.util.parameterization import resolve_task_references
+from taskgraph.util.taskcluster import get_task_definition
+
+from .registry import register_callback_action
+from .util import create_task_from_def, fetch_graph_and_labels
+
+logger = logging.getLogger(__name__)
+
+# Properties available for custom retrigger of any supported test suites
+basic_properties = {
+ "path": {
+ "type": "string",
+ "maxLength": 255,
+ "default": "",
+ "title": "Path name",
+ "description": "Path of test(s) to retrigger",
+ },
+ "logLevel": {
+ "type": "string",
+ "enum": ["debug", "info", "warning", "error", "critical"],
+ "default": "info",
+ "title": "Log level",
+ "description": "Log level for output (INFO is normal, DEBUG gives more detail)",
+ },
+ "environment": {
+ "type": "object",
+ "default": {"MOZ_LOG": ""},
+ "title": "Extra environment variables",
+ "description": "Extra environment variables to use for this run",
+ "additionalProperties": {"type": "string"},
+ },
+}
+
+# Additional properties available for custom retrigger of some additional test suites
+extended_properties = basic_properties.copy()
+extended_properties.update(
+ {
+ "runUntilFail": {
+ "type": "boolean",
+ "default": False,
+ "title": "Run until failure",
+ "description": (
+ "Runs the specified set of tests repeatedly "
+ "until failure (up to REPEAT times)"
+ ),
+ },
+ "repeat": {
+ "type": "integer",
+ "default": 0,
+ "minimum": 0,
+ "title": "Repeat test(s) N times",
+ "description": (
+ "Run test(s) repeatedly (usually used in "
+ "conjunction with runUntilFail)"
+ ),
+ },
+ "preferences": {
+ "type": "object",
+ "default": {"remote.log.level": "Info"},
+ "title": "Extra gecko (about:config) preferences",
+ "description": "Extra gecko (about:config) preferences to use for this run",
+ "additionalProperties": {"type": "string"},
+ },
+ }
+)
+
+
+@register_callback_action(
+ name="retrigger-custom",
+ title="Retrigger task with custom parameters",
+ symbol="rt",
+ description="Retriggers the specified task with custom environment and parameters",
+ context=[
+ {"test-type": "mochitest", "worker-implementation": "docker-worker"},
+ {"test-type": "reftest", "worker-implementation": "docker-worker"},
+ {"test-type": "geckoview-junit", "worker-implementation": "docker-worker"},
+ ],
+ order=10,
+ schema={
+ "type": "object",
+ "properties": extended_properties,
+ "additionalProperties": False,
+ "required": ["path"],
+ },
+)
+def extended_custom_retrigger_action(
+ parameters, graph_config, input, task_group_id, task_id
+):
+ handle_custom_retrigger(parameters, graph_config, input, task_group_id, task_id)
+
+
+@register_callback_action(
+ name="retrigger-custom (gtest)",
+ title="Retrigger gtest task with custom parameters",
+ symbol="rt",
+ description="Retriggers the specified task with custom environment and parameters",
+ context=[{"test-type": "gtest", "worker-implementation": "docker-worker"}],
+ order=10,
+ schema={
+ "type": "object",
+ "properties": basic_properties,
+ "additionalProperties": False,
+ "required": ["path"],
+ },
+)
+def basic_custom_retrigger_action_basic(
+ parameters, graph_config, input, task_group_id, task_id
+):
+ handle_custom_retrigger(parameters, graph_config, input, task_group_id, task_id)
+
+
+def handle_custom_retrigger(parameters, graph_config, input, task_group_id, task_id):
+ task = get_task_definition(task_id)
+ decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels(
+ parameters, graph_config
+ )
+
+ pre_task = full_task_graph.tasks[task["metadata"]["name"]]
+
+ # fix up the task's dependencies, similar to how optimization would
+ # have done in the decision
+ dependencies = {
+ name: label_to_taskid[label] for name, label in pre_task.dependencies.items()
+ }
+ new_task_definition = resolve_task_references(
+ pre_task.label, pre_task.task, task_id, decision_task_id, dependencies
+ )
+ new_task_definition.setdefault("dependencies", []).extend(dependencies.values())
+
+ # don't want to run mozharness tests, want a custom mach command instead
+ new_task_definition["payload"]["command"] += ["--no-run-tests"]
+
+ custom_mach_command = [task["tags"]["test-type"]]
+
+ # mochitests may specify a flavor
+ if new_task_definition["payload"]["env"].get("MOCHITEST_FLAVOR"):
+ custom_mach_command += [
+ "--keep-open=false",
+ "-f",
+ new_task_definition["payload"]["env"]["MOCHITEST_FLAVOR"],
+ ]
+
+ enable_e10s = json.loads(
+ new_task_definition["payload"]["env"].get("ENABLE_E10S", "true")
+ )
+ if not enable_e10s:
+ custom_mach_command += ["--disable-e10s"]
+
+ custom_mach_command += [
+ "--log-tbpl=-",
+ "--log-tbpl-level={}".format(input.get("logLevel", "debug")),
+ ]
+ if input.get("runUntilFail"):
+ custom_mach_command += ["--run-until-failure"]
+ if input.get("repeat"):
+ custom_mach_command += ["--repeat", str(input.get("repeat", 30))]
+
+ # add any custom gecko preferences
+ for (key, val) in input.get("preferences", {}).items():
+ custom_mach_command += ["--setpref", f"{key}={val}"]
+
+ custom_mach_command += [input["path"]]
+ new_task_definition["payload"]["env"]["CUSTOM_MACH_COMMAND"] = " ".join(
+ custom_mach_command
+ )
+
+ # update environment
+ new_task_definition["payload"]["env"].update(input.get("environment", {}))
+
+ # tweak the treeherder symbol
+ new_task_definition["extra"]["treeherder"]["symbol"] += "-custom"
+
+ logging.info("New task definition: %s", new_task_definition)
+
+ create_task_from_def(
+ new_task_definition, parameters["level"], action_tag="retrigger-custom-task"
+ )
diff --git a/taskcluster/gecko_taskgraph/actions/run_missing_tests.py b/taskcluster/gecko_taskgraph/actions/run_missing_tests.py
new file mode 100644
index 0000000000..92310445f3
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/actions/run_missing_tests.py
@@ -0,0 +1,62 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import logging
+
+from taskgraph.util.taskcluster import get_artifact
+
+from .registry import register_callback_action
+from .util import create_tasks, fetch_graph_and_labels
+
+logger = logging.getLogger(__name__)
+
+
+@register_callback_action(
+ name="run-missing-tests",
+ title="Run Missing Tests",
+ symbol="rmt",
+ description=(
+ "Run tests in the selected push that were optimized away, usually by SETA."
+ "\n"
+ "This action is for use on pushes that will be merged into another branch,"
+ "to check that optimization hasn't hidden any failures."
+ ),
+ order=250,
+ context=[], # Applies to decision task
+)
+def run_missing_tests(parameters, graph_config, input, task_group_id, task_id):
+ decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels(
+ parameters, graph_config
+ )
+ target_tasks = get_artifact(decision_task_id, "public/target-tasks.json")
+
+ # The idea here is to schedule all tasks of the `test` kind that were
+ # targetted but did not appear in the final task-graph -- those were the
+ # optimized tasks.
+ to_run = []
+ already_run = 0
+ for label in target_tasks:
+ task = full_task_graph.tasks[label]
+ if task.kind != "test":
+ continue # not a test
+ if label in label_to_taskid:
+ already_run += 1
+ continue
+ to_run.append(label)
+
+ create_tasks(
+ graph_config,
+ to_run,
+ full_task_graph,
+ label_to_taskid,
+ parameters,
+ decision_task_id,
+ )
+
+ logger.info(
+ "Out of {} test tasks, {} already existed and the action created {}".format(
+ already_run + len(to_run), already_run, len(to_run)
+ )
+ )
diff --git a/taskcluster/gecko_taskgraph/actions/scriptworker_canary.py b/taskcluster/gecko_taskgraph/actions/scriptworker_canary.py
new file mode 100644
index 0000000000..e0057da9a6
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/actions/scriptworker_canary.py
@@ -0,0 +1,45 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from taskgraph.parameters import Parameters
+
+from gecko_taskgraph.actions.registry import register_callback_action
+from gecko_taskgraph.decision import taskgraph_decision
+
+
+@register_callback_action(
+ title="Push scriptworker canaries.",
+ name="scriptworker-canary",
+ symbol="scriptworker-canary",
+ description="Trigger scriptworker-canary pushes for the given scriptworkers.",
+ schema={
+ "type": "object",
+ "properties": {
+ "scriptworkers": {
+ "type": "array",
+ "description": "List of scriptworker types to run canaries for.",
+ "items": {"type": "string"},
+ },
+ },
+ },
+ order=1000,
+ permission="scriptworker-canary",
+ context=[],
+)
+def scriptworker_canary(parameters, graph_config, input, task_group_id, task_id):
+ scriptworkers = input["scriptworkers"]
+
+ # make parameters read-write
+ parameters = dict(parameters)
+
+ parameters["target_tasks_method"] = "scriptworker_canary"
+ parameters["try_task_config"] = {
+ "scriptworker-canary-workers": scriptworkers,
+ }
+ parameters["tasks_for"] = "action"
+
+ # make parameters read-only
+ parameters = Parameters(**parameters)
+
+ taskgraph_decision({"root": graph_config.root_dir}, parameters=parameters)
diff --git a/taskcluster/gecko_taskgraph/actions/side_by_side.py b/taskcluster/gecko_taskgraph/actions/side_by_side.py
new file mode 100644
index 0000000000..816e716fde
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/actions/side_by_side.py
@@ -0,0 +1,189 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import logging
+import os
+import sys
+from functools import partial
+
+from taskgraph.util.taskcluster import get_artifact, get_task_definition
+
+from ..util.taskcluster import list_task_group_complete_tasks
+from .registry import register_callback_action
+from .util import create_tasks, fetch_graph_and_labels, get_decision_task_id, get_pushes
+
+logger = logging.getLogger(__name__)
+
+
+def input_for_support_action(revision, base_revision, base_branch, task):
+ """Generate input for action to be scheduled.
+
+ Define what label to schedule with 'label'.
+ If it is a test task that uses explicit manifests add that information.
+ """
+ platform, test_name = task["metadata"]["name"].split("/opt-")
+ new_branch = os.environ.get("GECKO_HEAD_REPOSITORY", "/try").split("/")[-1]
+ symbol = task["extra"]["treeherder"]["symbol"]
+ input = {
+ "label": "perftest-linux-side-by-side",
+ "symbol": symbol,
+ "new_revision": revision,
+ "base_revision": base_revision,
+ "test_name": test_name,
+ "platform": platform,
+ "base_branch": base_branch,
+ "new_branch": new_branch,
+ }
+
+ return input
+
+
+def side_by_side_modifier(task, input):
+ if task.label != input["label"]:
+ return task
+
+ # Make side-by-side job searchable by the platform, test name, and revisions
+ # it was triggered for
+ task.task["metadata"][
+ "name"
+ ] = f"{input['platform']} {input['test_name']} {input['base_revision'][:12]} {input['new_revision'][:12]}"
+ # Use a job symbol to include the symbol of the job the side-by-side
+ # is running for
+ task.task["extra"]["treeherder"]["symbol"] += f"-{input['symbol']}"
+
+ cmd = task.task["payload"]["command"]
+ task.task["payload"]["command"][1][-1] = cmd[1][-1].format(**input)
+
+ return task
+
+
+@register_callback_action(
+ title="Side by side",
+ name="side-by-side",
+ symbol="gen-sxs",
+ description=(
+ "Given a performance test pageload job generate a side-by-side comparison against"
+ "the pageload job from the revision at the input."
+ ),
+ order=200,
+ context=[{"test-type": "raptor"}],
+ schema={
+ "type": "object",
+ "properties": {
+ "revision": {
+ "type": "string",
+ "default": "",
+ "description": "Revision of the push against the comparison is wanted.",
+ },
+ "project": {
+ "type": "string",
+ "default": "autoland",
+ "description": "Revision of the push against the comparison is wanted.",
+ },
+ },
+ "additionalProperties": False,
+ },
+)
+def side_by_side_action(parameters, graph_config, input, task_group_id, task_id):
+ """
+ This action does a side-by-side comparison between current revision and
+ the revision entered manually or the latest revision that ran the
+ pageload job (via support action).
+
+ To execute this action locally follow the documentation here:
+ https://firefox-source-docs.mozilla.org/taskcluster/actions.html#testing-the-action-locally
+ """
+ task = get_task_definition(task_id)
+ decision_task_id, full_task_graph, label_to_taskid = fetch_graph_and_labels(
+ parameters, graph_config
+ )
+ # TODO: find another way to detect side-by-side comparable jobs
+ # (potentially lookig at the visual metrics flag)
+ if not (
+ "browsertime-tp6" in task["metadata"]["name"]
+ or "welcome" in task["metadata"]["name"]
+ ):
+ logger.exception(
+ f"Task {task['metadata']['name']} is not side-by-side comparable."
+ )
+ return
+
+ failed = False
+ input_for_action = {}
+
+ if input.get("revision"):
+ # If base_revision was introduced manually, use that
+ input_for_action = input_for_support_action(
+ revision=parameters["head_rev"],
+ base_revision=input.get("revision"),
+ base_branch=input.get("project"),
+ task=task,
+ )
+ else:
+ current_push_id = int(parameters["pushlog_id"]) - 1
+ # Go decrementally through pushlog_id, get push data, decision task id,
+ # full task graph and everything needed to find which of the past revisions
+ # ran the pageload job to compare against
+ while int(parameters["pushlog_id"]) - current_push_id < 30:
+ pushes = get_pushes(
+ project=parameters["head_repository"],
+ end_id=current_push_id,
+ depth=1,
+ full_response=True,
+ )
+ try:
+ # Get label-to-taskid.json artifact + the tasks triggered
+ # by the action tasks at a later time than the decision task
+ current_decision_task_id = get_decision_task_id(
+ parameters["project"], current_push_id
+ )
+ current_task_group_id = get_task_definition(current_decision_task_id)[
+ "taskGroupId"
+ ]
+ current_label_to_taskid = get_artifact(
+ current_decision_task_id, "public/label-to-taskid.json"
+ )
+ current_full_label_to_taskid = current_label_to_taskid.copy()
+ action_task_triggered = list_task_group_complete_tasks(
+ current_task_group_id
+ )
+ current_full_label_to_taskid.update(action_task_triggered)
+ if task["metadata"]["name"] in current_full_label_to_taskid.keys():
+ input_for_action = input_for_support_action(
+ revision=parameters["head_rev"],
+ base_revision=pushes[str(current_push_id)]["changesets"][-1],
+ base_branch=input.get("project", parameters["project"]),
+ task=task,
+ )
+ break
+ except Exception:
+ logger.warning(
+ f"Could not find decision task for push {current_push_id}"
+ )
+ # The decision task may have failed, this is common enough that we
+ # don't want to report an error for it.
+ continue
+ current_push_id -= 1
+ if not input_for_action:
+ raise Exception(
+ "Could not find a side-by-side comparable task within a depth of 30 revisions."
+ )
+
+ try:
+ create_tasks(
+ graph_config,
+ [input_for_action["label"]],
+ full_task_graph,
+ label_to_taskid,
+ parameters,
+ decision_task_id,
+ modifier=partial(side_by_side_modifier, input=input_for_action),
+ )
+ except Exception as e:
+ logger.exception(f"Failed to trigger action: {e}.")
+ failed = True
+
+ if failed:
+ sys.exit(1)
diff --git a/taskcluster/gecko_taskgraph/actions/util.py b/taskcluster/gecko_taskgraph/actions/util.py
new file mode 100644
index 0000000000..76181dae2b
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/actions/util.py
@@ -0,0 +1,433 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import concurrent.futures as futures
+import copy
+import logging
+import os
+import re
+from functools import reduce
+
+import jsone
+import requests
+from requests.exceptions import HTTPError
+from slugid import nice as slugid
+from taskgraph import create
+from taskgraph.optimize.base import optimize_task_graph
+from taskgraph.taskgraph import TaskGraph
+from taskgraph.util.taskcluster import (
+ CONCURRENCY,
+ find_task_id,
+ get_artifact,
+ get_session,
+ get_task_definition,
+ list_tasks,
+ parse_time,
+)
+
+from gecko_taskgraph.decision import read_artifact, rename_artifact, write_artifact
+from gecko_taskgraph.util.taskcluster import trigger_hook
+from gecko_taskgraph.util.taskgraph import find_decision_task
+
+logger = logging.getLogger(__name__)
+
+INDEX_TMPL = "gecko.v2.{}.pushlog-id.{}.decision"
+PUSHLOG_TMPL = "{}/json-pushes?version=2&startID={}&endID={}"
+
+
+def _tags_within_context(tags, context=[]):
+ """A context of [] means that it *only* applies to a task group"""
+ return any(
+ all(tag in tags and tags[tag] == tag_set[tag] for tag in tag_set.keys())
+ for tag_set in context
+ )
+
+
+def _extract_applicable_action(actions_json, action_name, task_group_id, task_id):
+ """Extract action that applies to the given task or task group.
+
+ A task (as defined by its tags) is said to match a tag-set if its
+ tags are a super-set of the tag-set. A tag-set is a set of key-value pairs.
+
+ An action (as defined by its context) is said to be relevant for
+ a given task, if the task's tags match one of the tag-sets given
+ in the context property of the action.
+
+ The order of the actions is significant. When multiple actions apply to a
+ task the first one takes precedence.
+
+ For more details visit:
+ https://docs.taskcluster.net/docs/manual/design/conventions/actions/spec
+ """
+ if task_id:
+ tags = get_task_definition(task_id).get("tags")
+
+ for _action in actions_json["actions"]:
+ if action_name != _action["name"]:
+ continue
+
+ context = _action.get("context", [])
+ # Ensure the task is within the context of the action
+ if task_id and tags and _tags_within_context(tags, context):
+ return _action
+ if context == []:
+ return _action
+
+ available_actions = ", ".join(sorted({a["name"] for a in actions_json["actions"]}))
+ raise LookupError(
+ "{} action is not available for this task. Available: {}".format(
+ action_name, available_actions
+ )
+ )
+
+
+def trigger_action(action_name, decision_task_id, task_id=None, input={}):
+ if not decision_task_id:
+ raise ValueError("No decision task. We can't find the actions artifact.")
+ actions_json = get_artifact(decision_task_id, "public/actions.json")
+ if actions_json["version"] != 1:
+ raise RuntimeError("Wrong version of actions.json, unable to continue")
+
+ # These values substitute $eval in the template
+ context = {
+ "input": input,
+ "taskId": task_id,
+ "taskGroupId": decision_task_id,
+ }
+ # https://docs.taskcluster.net/docs/manual/design/conventions/actions/spec#variables
+ context.update(actions_json["variables"])
+ action = _extract_applicable_action(
+ actions_json, action_name, decision_task_id, task_id
+ )
+ kind = action["kind"]
+ if create.testing:
+ logger.info(f"Skipped triggering action for {kind} as testing is enabled")
+ elif kind == "hook":
+ hook_payload = jsone.render(action["hookPayload"], context)
+ trigger_hook(action["hookGroupId"], action["hookId"], hook_payload)
+ else:
+ raise NotImplementedError(f"Unable to submit actions with {kind} kind.")
+
+
+def get_pushes_from_params_input(parameters, input):
+ inclusive_tweak = 1 if input.get("inclusive") else 0
+ return get_pushes(
+ project=parameters["head_repository"],
+ end_id=int(parameters["pushlog_id"]) - (1 - inclusive_tweak),
+ depth=input.get("depth", 9) + inclusive_tweak,
+ )
+
+
+def get_pushes(project, end_id, depth, full_response=False):
+ pushes = []
+ while True:
+ start_id = max(end_id - depth, 0)
+ pushlog_url = PUSHLOG_TMPL.format(project, start_id, end_id)
+ logger.debug(pushlog_url)
+ r = requests.get(pushlog_url)
+ r.raise_for_status()
+ pushes = pushes + list(r.json()["pushes"].keys())
+ if len(pushes) >= depth:
+ break
+
+ end_id = start_id - 1
+ start_id -= depth
+ if start_id < 0:
+ break
+
+ pushes = sorted(pushes)[-depth:]
+ push_dict = {push: r.json()["pushes"][push] for push in pushes}
+ return push_dict if full_response else pushes
+
+
+def get_decision_task_id(project, push_id):
+ return find_task_id(INDEX_TMPL.format(project, push_id))
+
+
+def get_parameters(decision_task_id):
+ return get_artifact(decision_task_id, "public/parameters.yml")
+
+
+def get_tasks_with_downstream(labels, full_task_graph, label_to_taskid):
+ # Used to gather tasks when downstream tasks need to run as well
+ return full_task_graph.graph.transitive_closure(
+ set(labels), reverse=True
+ ).nodes & set(label_to_taskid.keys())
+
+
+def fetch_graph_and_labels(parameters, graph_config):
+ decision_task_id = find_decision_task(parameters, graph_config)
+
+ # First grab the graph and labels generated during the initial decision task
+ full_task_graph = get_artifact(decision_task_id, "public/full-task-graph.json")
+ logger.info("Load taskgraph from JSON.")
+ _, full_task_graph = TaskGraph.from_json(full_task_graph)
+ label_to_taskid = get_artifact(decision_task_id, "public/label-to-taskid.json")
+
+ logger.info("Fetching additional tasks from action and cron tasks.")
+ # fetch everything in parallel; this avoids serializing any delay in downloading
+ # each artifact (such as waiting for the artifact to be mirrored locally)
+ with futures.ThreadPoolExecutor(CONCURRENCY) as e:
+ fetches = []
+
+ # fetch any modifications made by action tasks and swap out new tasks
+ # for old ones
+ def fetch_action(task_id):
+ logger.info(f"fetching label-to-taskid.json for action task {task_id}")
+ try:
+ run_label_to_id = get_artifact(task_id, "public/label-to-taskid.json")
+ label_to_taskid.update(run_label_to_id)
+ except HTTPError as e:
+ if e.response.status_code != 404:
+ raise
+ logger.debug(f"No label-to-taskid.json found for {task_id}: {e}")
+
+ head_rev_param = "{}head_rev".format(graph_config["project-repo-param-prefix"])
+
+ namespace = "{}.v2.{}.revision.{}.taskgraph.actions".format(
+ graph_config["trust-domain"],
+ parameters["project"],
+ parameters[head_rev_param],
+ )
+ for task_id in list_tasks(namespace):
+ fetches.append(e.submit(fetch_action, task_id))
+
+ # Similarly for cron tasks..
+ def fetch_cron(task_id):
+ logger.info(f"fetching label-to-taskid.json for cron task {task_id}")
+ try:
+ run_label_to_id = get_artifact(task_id, "public/label-to-taskid.json")
+ label_to_taskid.update(run_label_to_id)
+ except HTTPError as e:
+ if e.response.status_code != 404:
+ raise
+ logger.debug(f"No label-to-taskid.json found for {task_id}: {e}")
+
+ namespace = "{}.v2.{}.revision.{}.cron".format(
+ graph_config["trust-domain"],
+ parameters["project"],
+ parameters[head_rev_param],
+ )
+ for task_id in list_tasks(namespace):
+ fetches.append(e.submit(fetch_cron, task_id))
+
+ # now wait for each fetch to complete, raising an exception if there
+ # were any issues
+ for f in futures.as_completed(fetches):
+ f.result()
+
+ return (decision_task_id, full_task_graph, label_to_taskid)
+
+
+def create_task_from_def(task_def, level, action_tag=None):
+ """Create a new task from a definition rather than from a label
+ that is already in the full-task-graph. The task definition will
+ have {relative-datestamp': '..'} rendered just like in a decision task.
+ Use this for entirely new tasks or ones that change internals of the task.
+ It is useful if you want to "edit" the full_task_graph and then hand
+ it to this function. No dependencies will be scheduled. You must handle
+ this yourself. Seeing how create_tasks handles it might prove helpful."""
+ task_def["schedulerId"] = f"gecko-level-{level}"
+ label = task_def["metadata"]["name"]
+ task_id = slugid()
+ session = get_session()
+ if action_tag:
+ task_def.setdefault("tags", {}).setdefault("action", action_tag)
+ create.create_task(session, task_id, label, task_def)
+
+
+def update_parent(task, graph):
+ task.task.setdefault("extra", {})["parent"] = os.environ.get("TASK_ID", "")
+ return task
+
+
+def update_action_tag(task, graph, action_tag):
+ task.task.setdefault("tags", {}).setdefault("action", action_tag)
+ return task
+
+
+def update_dependencies(task, graph):
+ if os.environ.get("TASK_ID"):
+ task.task.setdefault("dependencies", []).append(os.environ["TASK_ID"])
+ return task
+
+
+def create_tasks(
+ graph_config,
+ to_run,
+ full_task_graph,
+ label_to_taskid,
+ params,
+ decision_task_id,
+ suffix="",
+ modifier=lambda t: t,
+ action_tag=None,
+):
+ """Create new tasks. The task definition will have {relative-datestamp':
+ '..'} rendered just like in a decision task. Action callbacks should use
+ this function to create new tasks,
+ allowing easy debugging with `mach taskgraph action-callback --test`.
+ This builds up all required tasks to run in order to run the tasks requested.
+
+ Optionally this function takes a `modifier` function that is passed in each
+ task before it is put into a new graph. It should return a valid task. Note
+ that this is passed _all_ tasks in the graph, not just the set in to_run. You
+ may want to skip modifying tasks not in your to_run list.
+
+ If `suffix` is given, then it is used to give unique names to the resulting
+ artifacts. If you call this function multiple times in the same action,
+ pass a different suffix each time to avoid overwriting artifacts.
+
+ If you wish to create the tasks in a new group, leave out decision_task_id.
+
+ Returns an updated label_to_taskid containing the new tasks"""
+ import gecko_taskgraph.optimize # noqa: triggers registration of strategies
+
+ if suffix != "":
+ suffix = f"-{suffix}"
+ to_run = set(to_run)
+
+ # Copy to avoid side-effects later
+ full_task_graph = copy.deepcopy(full_task_graph)
+ label_to_taskid = label_to_taskid.copy()
+
+ target_graph = full_task_graph.graph.transitive_closure(to_run)
+ target_task_graph = TaskGraph(
+ {l: modifier(full_task_graph[l]) for l in target_graph.nodes}, target_graph
+ )
+ target_task_graph.for_each_task(update_parent)
+ if action_tag:
+ target_task_graph.for_each_task(update_action_tag, action_tag)
+ if decision_task_id and decision_task_id != os.environ.get("TASK_ID"):
+ target_task_graph.for_each_task(update_dependencies)
+ optimized_task_graph, label_to_taskid = optimize_task_graph(
+ target_task_graph,
+ to_run,
+ params,
+ to_run,
+ decision_task_id,
+ existing_tasks=label_to_taskid,
+ )
+ write_artifact(f"task-graph{suffix}.json", optimized_task_graph.to_json())
+ write_artifact(f"label-to-taskid{suffix}.json", label_to_taskid)
+ write_artifact(f"to-run{suffix}.json", list(to_run))
+ create.create_tasks(
+ graph_config,
+ optimized_task_graph,
+ label_to_taskid,
+ params,
+ decision_task_id,
+ )
+ return label_to_taskid
+
+
+def _update_reducer(accumulator, new_value):
+ "similar to set or dict `update` method, but returning the modified object"
+ accumulator.update(new_value)
+ return accumulator
+
+
+def combine_task_graph_files(suffixes):
+ """Combine task-graph-{suffix}.json files into a single task-graph.json file.
+
+ Since Chain of Trust verification requires a task-graph.json file that
+ contains all children tasks, we can combine the various task-graph-0.json
+ type files into a master task-graph.json file at the end.
+
+ Actions also look for various artifacts, so we combine those in a similar
+ fashion.
+
+ In the case where there is only one suffix, we simply rename it to avoid the
+ additional cost of uploading two copies of the same data.
+ """
+
+ if len(suffixes) == 1:
+ for filename in ["task-graph", "label-to-taskid", "to-run"]:
+ rename_artifact(f"{filename}-{suffixes[0]}.json", f"{filename}.json")
+ return
+
+ def combine(file_contents, base):
+ return reduce(_update_reducer, file_contents, base)
+
+ files = [read_artifact(f"task-graph-{suffix}.json") for suffix in suffixes]
+ write_artifact("task-graph.json", combine(files, dict()))
+
+ files = [read_artifact(f"label-to-taskid-{suffix}.json") for suffix in suffixes]
+ write_artifact("label-to-taskid.json", combine(files, dict()))
+
+ files = [read_artifact(f"to-run-{suffix}.json") for suffix in suffixes]
+ write_artifact("to-run.json", list(combine(files, set())))
+
+
+def relativize_datestamps(task_def):
+ """
+ Given a task definition as received from the queue, convert all datestamps
+ to {relative_datestamp: ..} format, with the task creation time as "now".
+ The result is useful for handing to ``create_task``.
+ """
+ base = parse_time(task_def["created"])
+ # borrowed from https://github.com/epoberezkin/ajv/blob/master/lib/compile/formats.js
+ ts_pattern = re.compile(
+ r"^\d\d\d\d-[0-1]\d-[0-3]\d[t\s]"
+ r"(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?"
+ r"(?:z|[+-]\d\d:\d\d)$",
+ re.I,
+ )
+
+ def recurse(value):
+ if isinstance(value, str):
+ if ts_pattern.match(value):
+ value = parse_time(value)
+ diff = value - base
+ return {"relative-datestamp": f"{int(diff.total_seconds())} seconds"}
+ if isinstance(value, list):
+ return [recurse(e) for e in value]
+ if isinstance(value, dict):
+ return {k: recurse(v) for k, v in value.items()}
+ return value
+
+ return recurse(task_def)
+
+
+def add_args_to_command(cmd_parts, extra_args=[]):
+ """
+ Add custom command line args to a given command.
+ args:
+ cmd_parts: the raw command as seen by taskcluster
+ extra_args: array of args we want to add
+ """
+ # Prevent modification of the caller's copy of cmd_parts
+ cmd_parts = copy.deepcopy(cmd_parts)
+ cmd_type = "default"
+ if len(cmd_parts) == 1 and isinstance(cmd_parts[0], dict):
+ # windows has single cmd part as dict: 'task-reference', with long string
+ cmd_parts = cmd_parts[0]["task-reference"].split(" ")
+ cmd_type = "dict"
+ elif len(cmd_parts) == 1 and isinstance(cmd_parts[0], str):
+ # windows has single cmd part as a long string
+ cmd_parts = cmd_parts[0].split(" ")
+ cmd_type = "unicode"
+ elif len(cmd_parts) == 1 and isinstance(cmd_parts[0], list):
+ # osx has an single value array with an array inside
+ cmd_parts = cmd_parts[0]
+ cmd_type = "subarray"
+ elif len(cmd_parts) == 2 and isinstance(cmd_parts[1], list):
+ # osx has an double value array with an array inside each element.
+ # The first element is a pre-requisite command while the second
+ # is the actual test command.
+ cmd_type = "subarray2"
+
+ if cmd_type == "subarray2":
+ cmd_parts[1].extend(extra_args)
+ else:
+ cmd_parts.extend(extra_args)
+
+ if cmd_type == "dict":
+ cmd_parts = [{"task-reference": " ".join(cmd_parts)}]
+ elif cmd_type == "unicode":
+ cmd_parts = [" ".join(cmd_parts)]
+ elif cmd_type == "subarray":
+ cmd_parts = [cmd_parts]
+ return cmd_parts
diff --git a/taskcluster/gecko_taskgraph/config.py b/taskcluster/gecko_taskgraph/config.py
new file mode 100644
index 0000000000..62c261647a
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/config.py
@@ -0,0 +1,122 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from taskgraph.util.schema import Schema, optionally_keyed_by
+from voluptuous import Any, Optional, Required
+
+graph_config_schema = Schema(
+ {
+ # The trust-domain for this graph.
+ # (See https://firefox-source-docs.mozilla.org/taskcluster/taskcluster/taskgraph.html#taskgraph-trust-domain) # noqa
+ Required("trust-domain"): str,
+ # This specifes the prefix for repo parameters that refer to the project being built.
+ # This selects between `head_rev` and `comm_head_rev` and related paramters.
+ # (See http://firefox-source-docs.mozilla.org/taskcluster/taskcluster/parameters.html#push-information # noqa
+ # and http://firefox-source-docs.mozilla.org/taskcluster/taskcluster/parameters.html#comm-push-information) # noqa
+ Required("project-repo-param-prefix"): str,
+ # This specifies the top level directory of the application being built.
+ # ie. "browser/" for Firefox, "comm/mail/" for Thunderbird.
+ Required("product-dir"): str,
+ Required("treeherder"): {
+ # Mapping of treeherder group symbols to descriptive names
+ Required("group-names"): {str: str}
+ },
+ Required("index"): {Required("products"): [str]},
+ Required("try"): {
+ # We have a few platforms for which we want to do some "extra" builds, or at
+ # least build-ish things. Sort of. Anyway, these other things are implemented
+ # as different "platforms". These do *not* automatically ride along with "-p
+ # all"
+ Required("ridealong-builds"): {str: [str]},
+ },
+ Required("release-promotion"): {
+ Required("products"): [str],
+ Required("flavors"): {
+ str: {
+ Required("product"): str,
+ Required("target-tasks-method"): str,
+ Optional("is-rc"): bool,
+ Optional("rebuild-kinds"): [str],
+ Optional("version-bump"): bool,
+ Optional("partial-updates"): bool,
+ }
+ },
+ },
+ Required("merge-automation"): {
+ Required("behaviors"): {
+ str: {
+ Optional("from-branch"): str,
+ Required("to-branch"): str,
+ Optional("from-repo"): str,
+ Required("to-repo"): str,
+ Required("version-files"): [
+ {
+ Required("filename"): str,
+ Optional("new-suffix"): str,
+ Optional("version-bump"): Any("major", "minor"),
+ }
+ ],
+ Required("replacements"): [[str]],
+ Required("merge-old-head"): bool,
+ Optional("base-tag"): str,
+ Optional("end-tag"): str,
+ Optional("fetch-version-from"): str,
+ }
+ },
+ },
+ Required("scriptworker"): {
+ # Prefix to add to scopes controlling scriptworkers
+ Required("scope-prefix"): str,
+ },
+ Required("task-priority"): optionally_keyed_by(
+ "project",
+ Any(
+ "highest",
+ "very-high",
+ "high",
+ "medium",
+ "low",
+ "very-low",
+ "lowest",
+ ),
+ ),
+ Required("partner-urls"): {
+ Required("release-partner-repack"): optionally_keyed_by(
+ "release-product", "release-level", "release-type", Any(str, None)
+ ),
+ Optional("release-partner-attribution"): optionally_keyed_by(
+ "release-product", "release-level", "release-type", Any(str, None)
+ ),
+ Required("release-eme-free-repack"): optionally_keyed_by(
+ "release-product", "release-level", "release-type", Any(str, None)
+ ),
+ },
+ Required("workers"): {
+ Required("aliases"): {
+ str: {
+ Required("provisioner"): optionally_keyed_by("level", str),
+ Required("implementation"): str,
+ Required("os"): str,
+ Required("worker-type"): optionally_keyed_by(
+ "level", "release-level", "project", str
+ ),
+ }
+ },
+ },
+ Required("mac-notarization"): {
+ Required("mac-entitlements"): optionally_keyed_by(
+ "platform", "release-level", str
+ ),
+ Required("mac-requirements"): optionally_keyed_by("platform", str),
+ },
+ Required("taskgraph"): {
+ Optional(
+ "register",
+ description="Python function to call to register extensions.",
+ ): str,
+ Optional("decision-parameters"): str,
+ },
+ Required("expiration-policy"): optionally_keyed_by("project", {str: str}),
+ }
+)
diff --git a/taskcluster/gecko_taskgraph/decision.py b/taskcluster/gecko_taskgraph/decision.py
new file mode 100644
index 0000000000..1849770481
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/decision.py
@@ -0,0 +1,565 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import json
+import logging
+import os
+import shutil
+import sys
+import time
+from collections import defaultdict
+
+import yaml
+from redo import retry
+from taskgraph import create
+from taskgraph.create import create_tasks
+
+# TODO: Let standalone taskgraph generate parameters instead of calling internals
+from taskgraph.decision import (
+ _determine_more_accurate_base_ref,
+ _determine_more_accurate_base_rev,
+ _get_env_prefix,
+)
+from taskgraph.generator import TaskGraphGenerator
+from taskgraph.parameters import Parameters
+from taskgraph.taskgraph import TaskGraph
+from taskgraph.util.python_path import find_object
+from taskgraph.util.schema import Schema, validate_schema
+from taskgraph.util.taskcluster import get_artifact
+from taskgraph.util.vcs import get_repository
+from taskgraph.util.yaml import load_yaml
+from voluptuous import Any, Optional, Required
+
+from . import GECKO
+from .actions import render_actions_json
+from .parameters import get_app_version, get_version
+from .try_option_syntax import parse_message
+from .util.backstop import BACKSTOP_INDEX, is_backstop
+from .util.bugbug import push_schedules
+from .util.chunking import resolver
+from .util.hg import get_hg_commit_message, get_hg_revision_branch
+from .util.partials import populate_release_history
+from .util.taskcluster import insert_index
+from .util.taskgraph import find_decision_task, find_existing_tasks_from_previous_kinds
+
+logger = logging.getLogger(__name__)
+
+ARTIFACTS_DIR = "artifacts"
+
+# For each project, this gives a set of parameters specific to the project.
+# See `taskcluster/docs/parameters.rst` for information on parameters.
+PER_PROJECT_PARAMETERS = {
+ "try": {
+ "enable_always_target": True,
+ "target_tasks_method": "try_tasks",
+ },
+ "kaios-try": {
+ "target_tasks_method": "try_tasks",
+ },
+ "ash": {
+ "target_tasks_method": "default",
+ },
+ "cedar": {
+ "target_tasks_method": "default",
+ },
+ "holly": {
+ "enable_always_target": True,
+ "target_tasks_method": "holly_tasks",
+ },
+ "oak": {
+ "target_tasks_method": "default",
+ "release_type": "nightly-oak",
+ },
+ "graphics": {
+ "target_tasks_method": "graphics_tasks",
+ },
+ "autoland": {
+ "optimize_strategies": "gecko_taskgraph.optimize:project.autoland",
+ "target_tasks_method": "autoland_tasks",
+ "test_manifest_loader": "bugbug", # Remove this line to disable "manifest scheduling".
+ },
+ "mozilla-central": {
+ "target_tasks_method": "mozilla_central_tasks",
+ "release_type": "nightly",
+ },
+ "mozilla-beta": {
+ "target_tasks_method": "mozilla_beta_tasks",
+ "release_type": "beta",
+ },
+ "mozilla-release": {
+ "target_tasks_method": "mozilla_release_tasks",
+ "release_type": "release",
+ },
+ "mozilla-esr102": {
+ "target_tasks_method": "mozilla_esr102_tasks",
+ "release_type": "esr102",
+ },
+ "mozilla-esr115": {
+ "target_tasks_method": "mozilla_esr115_tasks",
+ "release_type": "esr115",
+ },
+ "pine": {
+ "target_tasks_method": "pine_tasks",
+ },
+ "kaios": {
+ "target_tasks_method": "kaios_tasks",
+ },
+ "toolchains": {
+ "target_tasks_method": "mozilla_central_tasks",
+ },
+ # the default parameters are used for projects that do not match above.
+ "default": {
+ "target_tasks_method": "default",
+ },
+}
+
+try_task_config_schema = Schema(
+ {
+ Required("tasks"): [str],
+ Optional("browsertime"): bool,
+ Optional("chemspill-prio"): bool,
+ Optional("disable-pgo"): bool,
+ Optional("env"): {str: str},
+ Optional("gecko-profile"): bool,
+ Optional("gecko-profile-interval"): float,
+ Optional("gecko-profile-entries"): int,
+ Optional("gecko-profile-features"): str,
+ Optional("gecko-profile-threads"): str,
+ Optional(
+ "perftest-options",
+ description="Options passed from `mach perftest` to try.",
+ ): object,
+ Optional(
+ "optimize-strategies",
+ description="Alternative optimization strategies to use instead of the default. "
+ "A module path pointing to a dict to be use as the `strategy_override` "
+ "argument in `taskgraph.optimize.base.optimize_task_graph`.",
+ ): str,
+ Optional("rebuild"): int,
+ Optional("tasks-regex"): {
+ "include": Any(None, [str]),
+ "exclude": Any(None, [str]),
+ },
+ Optional("use-artifact-builds"): bool,
+ Optional(
+ "worker-overrides",
+ description="Mapping of worker alias to worker pools to use for those aliases.",
+ ): {str: str},
+ Optional("routes"): [str],
+ }
+)
+"""
+Schema for try_task_config.json files.
+"""
+
+try_task_config_schema_v2 = Schema(
+ {
+ Optional("parameters"): {str: object},
+ }
+)
+
+
+def full_task_graph_to_runnable_jobs(full_task_json):
+ runnable_jobs = {}
+ for label, node in full_task_json.items():
+ if not ("extra" in node["task"] and "treeherder" in node["task"]["extra"]):
+ continue
+
+ th = node["task"]["extra"]["treeherder"]
+ runnable_jobs[label] = {"symbol": th["symbol"]}
+
+ for i in ("groupName", "groupSymbol", "collection"):
+ if i in th:
+ runnable_jobs[label][i] = th[i]
+ if th.get("machine", {}).get("platform"):
+ runnable_jobs[label]["platform"] = th["machine"]["platform"]
+ return runnable_jobs
+
+
+def full_task_graph_to_manifests_by_task(full_task_json):
+ manifests_by_task = defaultdict(list)
+ for label, node in full_task_json.items():
+ manifests = node["attributes"].get("test_manifests")
+ if not manifests:
+ continue
+
+ manifests_by_task[label].extend(manifests)
+ return manifests_by_task
+
+
+def try_syntax_from_message(message):
+ """
+ Parse the try syntax out of a commit message, returning '' if none is
+ found.
+ """
+ try_idx = message.find("try:")
+ if try_idx == -1:
+ return ""
+ return message[try_idx:].split("\n", 1)[0]
+
+
+def taskgraph_decision(options, parameters=None):
+ """
+ Run the decision task. This function implements `mach taskgraph decision`,
+ and is responsible for
+
+ * processing decision task command-line options into parameters
+ * running task-graph generation exactly the same way the other `mach
+ taskgraph` commands do
+ * generating a set of artifacts to memorialize the graph
+ * calling TaskCluster APIs to create the graph
+ """
+
+ parameters = parameters or (
+ lambda graph_config: get_decision_parameters(graph_config, options)
+ )
+
+ decision_task_id = os.environ["TASK_ID"]
+
+ # create a TaskGraphGenerator instance
+ tgg = TaskGraphGenerator(
+ root_dir=options.get("root"),
+ parameters=parameters,
+ decision_task_id=decision_task_id,
+ write_artifacts=True,
+ )
+
+ if not create.testing:
+ # set additional index paths for the decision task
+ set_decision_indexes(decision_task_id, tgg.parameters, tgg.graph_config)
+
+ # write out the parameters used to generate this graph
+ write_artifact("parameters.yml", dict(**tgg.parameters))
+
+ # write out the public/actions.json file
+ write_artifact(
+ "actions.json",
+ render_actions_json(tgg.parameters, tgg.graph_config, decision_task_id),
+ )
+
+ # write out the full graph for reference
+ full_task_json = tgg.full_task_graph.to_json()
+ write_artifact("full-task-graph.json", full_task_json)
+
+ # write out the public/runnable-jobs.json file
+ write_artifact(
+ "runnable-jobs.json", full_task_graph_to_runnable_jobs(full_task_json)
+ )
+
+ # write out the public/manifests-by-task.json file
+ write_artifact(
+ "manifests-by-task.json.gz",
+ full_task_graph_to_manifests_by_task(full_task_json),
+ )
+
+ # write out the public/tests-by-manifest.json file
+ write_artifact("tests-by-manifest.json.gz", resolver.tests_by_manifest)
+
+ # this is just a test to check whether the from_json() function is working
+ _, _ = TaskGraph.from_json(full_task_json)
+
+ # write out the target task set to allow reproducing this as input
+ write_artifact("target-tasks.json", list(tgg.target_task_set.tasks.keys()))
+
+ # write out the optimized task graph to describe what will actually happen,
+ # and the map of labels to taskids
+ write_artifact("task-graph.json", tgg.morphed_task_graph.to_json())
+ write_artifact("label-to-taskid.json", tgg.label_to_taskid)
+
+ # write bugbug scheduling information if it was invoked
+ if len(push_schedules) > 0:
+ write_artifact("bugbug-push-schedules.json", push_schedules.popitem()[1])
+
+ # cache run-task & misc/fetch-content
+ scripts_root_dir = os.path.join(
+ "/builds/worker/checkouts/gecko/taskcluster/scripts"
+ )
+ run_task_file_path = os.path.join(scripts_root_dir, "run-task")
+ fetch_content_file_path = os.path.join(scripts_root_dir, "misc/fetch-content")
+ shutil.copy2(run_task_file_path, ARTIFACTS_DIR)
+ shutil.copy2(fetch_content_file_path, ARTIFACTS_DIR)
+
+ # actually create the graph
+ create_tasks(
+ tgg.graph_config,
+ tgg.morphed_task_graph,
+ tgg.label_to_taskid,
+ tgg.parameters,
+ decision_task_id=decision_task_id,
+ )
+
+
+def get_decision_parameters(graph_config, options):
+ """
+ Load parameters from the command-line options for 'taskgraph decision'.
+ This also applies per-project parameters, based on the given project.
+
+ """
+ product_dir = graph_config["product-dir"]
+
+ parameters = {
+ n: options[n]
+ for n in [
+ "base_repository",
+ "base_ref",
+ "base_rev",
+ "head_repository",
+ "head_rev",
+ "head_ref",
+ "head_tag",
+ "project",
+ "pushlog_id",
+ "pushdate",
+ "owner",
+ "level",
+ "repository_type",
+ "target_tasks_method",
+ "tasks_for",
+ ]
+ if n in options
+ }
+
+ commit_message = get_hg_commit_message(os.path.join(GECKO, product_dir))
+
+ repo_path = os.getcwd()
+ repo = get_repository(repo_path)
+ parameters["base_ref"] = _determine_more_accurate_base_ref(
+ repo,
+ candidate_base_ref=options.get("base_ref"),
+ head_ref=options.get("head_ref"),
+ base_rev=options.get("base_rev"),
+ )
+
+ parameters["base_rev"] = _determine_more_accurate_base_rev(
+ repo,
+ base_ref=parameters["base_ref"],
+ candidate_base_rev=options.get("base_rev"),
+ head_rev=options.get("head_rev"),
+ env_prefix=_get_env_prefix(graph_config),
+ )
+
+ # Define default filter list, as most configurations shouldn't need
+ # custom filters.
+ parameters["filters"] = [
+ "target_tasks_method",
+ ]
+ parameters["enable_always_target"] = False
+ parameters["existing_tasks"] = {}
+ parameters["do_not_optimize"] = []
+ parameters["build_number"] = 1
+ parameters["version"] = get_version(product_dir)
+ parameters["app_version"] = get_app_version(product_dir)
+ parameters["message"] = try_syntax_from_message(commit_message)
+ parameters["hg_branch"] = get_hg_revision_branch(
+ GECKO, revision=parameters["head_rev"]
+ )
+ parameters["next_version"] = None
+ parameters["optimize_strategies"] = None
+ parameters["optimize_target_tasks"] = True
+ parameters["phabricator_diff"] = None
+ parameters["release_type"] = ""
+ parameters["release_eta"] = ""
+ parameters["release_enable_partner_repack"] = False
+ parameters["release_enable_partner_attribution"] = False
+ parameters["release_partners"] = []
+ parameters["release_partner_config"] = {}
+ parameters["release_partner_build_number"] = 1
+ parameters["release_enable_emefree"] = False
+ parameters["release_product"] = None
+ parameters["required_signoffs"] = []
+ parameters["signoff_urls"] = {}
+ parameters["test_manifest_loader"] = "default"
+ parameters["try_mode"] = None
+ parameters["try_task_config"] = {}
+ parameters["try_options"] = None
+
+ # owner must be an email, but sometimes (e.g., for ffxbld) it is not, in which
+ # case, fake it
+ if "@" not in parameters["owner"]:
+ parameters["owner"] += "@noreply.mozilla.org"
+
+ # use the pushdate as build_date if given, else use current time
+ parameters["build_date"] = parameters["pushdate"] or int(time.time())
+ # moz_build_date is the build identifier based on build_date
+ parameters["moz_build_date"] = time.strftime(
+ "%Y%m%d%H%M%S", time.gmtime(parameters["build_date"])
+ )
+
+ project = parameters["project"]
+ try:
+ parameters.update(PER_PROJECT_PARAMETERS[project])
+ except KeyError:
+ logger.warning(
+ "using default project parameters; add {} to "
+ "PER_PROJECT_PARAMETERS in {} to customize behavior "
+ "for this project".format(project, __file__)
+ )
+ parameters.update(PER_PROJECT_PARAMETERS["default"])
+
+ # `target_tasks_method` has higher precedence than `project` parameters
+ if options.get("target_tasks_method"):
+ parameters["target_tasks_method"] = options["target_tasks_method"]
+
+ # ..but can be overridden by the commit message: if it contains the special
+ # string "DONTBUILD" and this is an on-push decision task, then use the
+ # special 'nothing' target task method.
+ if "DONTBUILD" in commit_message and options["tasks_for"] == "hg-push":
+ parameters["target_tasks_method"] = "nothing"
+
+ if options.get("include_push_tasks"):
+ get_existing_tasks(options.get("rebuild_kinds", []), parameters, graph_config)
+
+ # If the target method is nightly, we should build partials. This means
+ # knowing what has been released previously.
+ # An empty release_history is fine, it just means no partials will be built
+ parameters.setdefault("release_history", dict())
+ if "nightly" in parameters.get("target_tasks_method", ""):
+ parameters["release_history"] = populate_release_history("Firefox", project)
+
+ if options.get("try_task_config_file"):
+ task_config_file = os.path.abspath(options.get("try_task_config_file"))
+ else:
+ # if try_task_config.json is present, load it
+ task_config_file = os.path.join(os.getcwd(), "try_task_config.json")
+
+ # load try settings
+ if "try" in project and options["tasks_for"] == "hg-push":
+ set_try_config(parameters, task_config_file)
+
+ if options.get("optimize_target_tasks") is not None:
+ parameters["optimize_target_tasks"] = options["optimize_target_tasks"]
+
+ # Determine if this should be a backstop push.
+ parameters["backstop"] = is_backstop(parameters)
+
+ if "decision-parameters" in graph_config["taskgraph"]:
+ find_object(graph_config["taskgraph"]["decision-parameters"])(
+ graph_config, parameters
+ )
+
+ result = Parameters(**parameters)
+ result.check()
+ return result
+
+
+def get_existing_tasks(rebuild_kinds, parameters, graph_config):
+ """
+ Find the decision task corresponding to the on-push graph, and return
+ a mapping of labels to task-ids from it. This will skip the kinds specificed
+ by `rebuild_kinds`.
+ """
+ try:
+ decision_task = retry(
+ find_decision_task,
+ args=(parameters, graph_config),
+ attempts=4,
+ sleeptime=5 * 60,
+ )
+ except Exception:
+ logger.exception("Didn't find existing push task.")
+ sys.exit(1)
+ _, task_graph = TaskGraph.from_json(
+ get_artifact(decision_task, "public/full-task-graph.json")
+ )
+ parameters["existing_tasks"] = find_existing_tasks_from_previous_kinds(
+ task_graph, [decision_task], rebuild_kinds
+ )
+
+
+def set_try_config(parameters, task_config_file):
+ if os.path.isfile(task_config_file):
+ logger.info(f"using try tasks from {task_config_file}")
+ with open(task_config_file) as fh:
+ task_config = json.load(fh)
+ task_config_version = task_config.pop("version", 1)
+ if task_config_version == 1:
+ validate_schema(
+ try_task_config_schema,
+ task_config,
+ "Invalid v1 `try_task_config.json`.",
+ )
+ parameters["try_mode"] = "try_task_config"
+ parameters["try_task_config"] = task_config
+ elif task_config_version == 2:
+ validate_schema(
+ try_task_config_schema_v2,
+ task_config,
+ "Invalid v2 `try_task_config.json`.",
+ )
+ parameters.update(task_config["parameters"])
+ return
+ else:
+ raise Exception(
+ f"Unknown `try_task_config.json` version: {task_config_version}"
+ )
+
+ if "try:" in parameters["message"]:
+ parameters["try_mode"] = "try_option_syntax"
+ parameters.update(parse_message(parameters["message"]))
+ else:
+ parameters["try_options"] = None
+
+ if parameters["try_mode"] == "try_task_config":
+ # The user has explicitly requested a set of jobs, so run them all
+ # regardless of optimization. Their dependencies can be optimized,
+ # though.
+ parameters["optimize_target_tasks"] = False
+ else:
+ # For a try push with no task selection, apply the default optimization
+ # process to all of the tasks.
+ parameters["optimize_target_tasks"] = True
+
+
+def set_decision_indexes(decision_task_id, params, graph_config):
+ index_paths = []
+ if params["backstop"]:
+ index_paths.append(BACKSTOP_INDEX)
+
+ subs = params.copy()
+ subs["trust-domain"] = graph_config["trust-domain"]
+
+ index_paths = [i.format(**subs) for i in index_paths]
+ for index_path in index_paths:
+ insert_index(index_path, decision_task_id, use_proxy=True)
+
+
+def write_artifact(filename, data):
+ logger.info(f"writing artifact file `{filename}`")
+ if not os.path.isdir(ARTIFACTS_DIR):
+ os.mkdir(ARTIFACTS_DIR)
+ path = os.path.join(ARTIFACTS_DIR, filename)
+ if filename.endswith(".yml"):
+ with open(path, "w") as f:
+ yaml.safe_dump(data, f, allow_unicode=True, default_flow_style=False)
+ elif filename.endswith(".json"):
+ with open(path, "w") as f:
+ json.dump(data, f, sort_keys=True, indent=2, separators=(",", ": "))
+ elif filename.endswith(".json.gz"):
+ import gzip
+
+ with gzip.open(path, "wb") as f:
+ f.write(json.dumps(data).encode("utf-8"))
+ else:
+ raise TypeError(f"Don't know how to write to {filename}")
+
+
+def read_artifact(filename):
+ path = os.path.join(ARTIFACTS_DIR, filename)
+ if filename.endswith(".yml"):
+ return load_yaml(path, filename)
+ if filename.endswith(".json"):
+ with open(path) as f:
+ return json.load(f)
+ if filename.endswith(".json.gz"):
+ import gzip
+
+ with gzip.open(path, "rb") as f:
+ return json.load(f.decode("utf-8"))
+ else:
+ raise TypeError(f"Don't know how to read {filename}")
+
+
+def rename_artifact(src, dest):
+ os.rename(os.path.join(ARTIFACTS_DIR, src), os.path.join(ARTIFACTS_DIR, dest))
diff --git a/taskcluster/gecko_taskgraph/docker.py b/taskcluster/gecko_taskgraph/docker.py
new file mode 100644
index 0000000000..a1952f278c
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/docker.py
@@ -0,0 +1,198 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import json
+import os
+import tarfile
+from io import BytesIO
+
+from taskgraph.generator import load_tasks_for_kind
+from taskgraph.parameters import Parameters
+from taskgraph.util.taskcluster import get_artifact_url, get_session
+
+from gecko_taskgraph.optimize.strategies import IndexSearch
+from gecko_taskgraph.util import docker
+
+from . import GECKO
+
+
+def get_image_digest(image_name):
+ params = Parameters(
+ level=os.environ.get("MOZ_SCM_LEVEL", "3"),
+ strict=False,
+ )
+ tasks = load_tasks_for_kind(params, "docker-image")
+ task = tasks[f"docker-image-{image_name}"]
+ return task.attributes["cached_task"]["digest"]
+
+
+def load_image_by_name(image_name, tag=None):
+ params = {"level": os.environ.get("MOZ_SCM_LEVEL", "3")}
+ tasks = load_tasks_for_kind(params, "docker-image")
+ task = tasks[f"docker-image-{image_name}"]
+ deadline = None
+ task_id = IndexSearch().should_replace_task(
+ task, {}, deadline, task.optimization.get("index-search", [])
+ )
+
+ if task_id in (True, False):
+ print(
+ "Could not find artifacts for a docker image "
+ "named `{image_name}`. Local commits and other changes "
+ "in your checkout may cause this error. Try "
+ "updating to a fresh checkout of mozilla-central "
+ "to download image.".format(image_name=image_name)
+ )
+ return False
+
+ return load_image_by_task_id(task_id, tag)
+
+
+def load_image_by_task_id(task_id, tag=None):
+ artifact_url = get_artifact_url(task_id, "public/image.tar.zst")
+ result = load_image(artifact_url, tag)
+ print("Found docker image: {}:{}".format(result["image"], result["tag"]))
+ if tag:
+ print(f"Re-tagged as: {tag}")
+ else:
+ tag = "{}:{}".format(result["image"], result["tag"])
+ print(f"Try: docker run -ti --rm {tag} bash")
+ return True
+
+
+def build_context(name, outputFile, args=None):
+ """Build a context.tar for image with specified name."""
+ if not name:
+ raise ValueError("must provide a Docker image name")
+ if not outputFile:
+ raise ValueError("must provide a outputFile")
+
+ image_dir = docker.image_path(name)
+ if not os.path.isdir(image_dir):
+ raise Exception("image directory does not exist: %s" % image_dir)
+
+ docker.create_context_tar(GECKO, image_dir, outputFile, image_name=name, args=args)
+
+
+def build_image(name, tag, args=None):
+ """Build a Docker image of specified name.
+
+ Output from image building process will be printed to stdout.
+ """
+ if not name:
+ raise ValueError("must provide a Docker image name")
+
+ image_dir = docker.image_path(name)
+ if not os.path.isdir(image_dir):
+ raise Exception("image directory does not exist: %s" % image_dir)
+
+ tag = tag or docker.docker_image(name, by_tag=True)
+
+ buf = BytesIO()
+ docker.stream_context_tar(GECKO, image_dir, buf, name, args)
+ docker.post_to_docker(buf.getvalue(), "/build", nocache=1, t=tag)
+
+ print(f"Successfully built {name} and tagged with {tag}")
+
+ if tag.endswith(":latest"):
+ print("*" * 50)
+ print("WARNING: no VERSION file found in image directory.")
+ print("Image is not suitable for deploying/pushing.")
+ print("Create an image suitable for deploying/pushing by creating")
+ print("a VERSION file in the image directory.")
+ print("*" * 50)
+
+
+def load_image(url, imageName=None, imageTag=None):
+ """
+ Load docker image from URL as imageName:tag, if no imageName or tag is given
+ it will use whatever is inside the zstd compressed tarball.
+
+ Returns an object with properties 'image', 'tag' and 'layer'.
+ """
+ import zstandard as zstd
+
+ # If imageName is given and we don't have an imageTag
+ # we parse out the imageTag from imageName, or default it to 'latest'
+ # if no imageName and no imageTag is given, 'repositories' won't be rewritten
+ if imageName and not imageTag:
+ if ":" in imageName:
+ imageName, imageTag = imageName.split(":", 1)
+ else:
+ imageTag = "latest"
+
+ info = {}
+
+ def download_and_modify_image():
+ # This function downloads and edits the downloaded tar file on the fly.
+ # It emits chunked buffers of the editted tar file, as a generator.
+ print(f"Downloading from {url}")
+ # get_session() gets us a requests.Session set to retry several times.
+ req = get_session().get(url, stream=True)
+ req.raise_for_status()
+
+ with zstd.ZstdDecompressor().stream_reader(req.raw) as ifh:
+
+ tarin = tarfile.open(
+ mode="r|",
+ fileobj=ifh,
+ bufsize=zstd.DECOMPRESSION_RECOMMENDED_OUTPUT_SIZE,
+ )
+
+ # Stream through each member of the downloaded tar file individually.
+ for member in tarin:
+ # Non-file members only need a tar header. Emit one.
+ if not member.isfile():
+ yield member.tobuf(tarfile.GNU_FORMAT)
+ continue
+
+ # Open stream reader for the member
+ reader = tarin.extractfile(member)
+
+ # If member is `repositories`, we parse and possibly rewrite the
+ # image tags.
+ if member.name == "repositories":
+ # Read and parse repositories
+ repos = json.loads(reader.read())
+ reader.close()
+
+ # If there is more than one image or tag, we can't handle it
+ # here.
+ if len(repos.keys()) > 1:
+ raise Exception("file contains more than one image")
+ info["image"] = image = list(repos.keys())[0]
+ if len(repos[image].keys()) > 1:
+ raise Exception("file contains more than one tag")
+ info["tag"] = tag = list(repos[image].keys())[0]
+ info["layer"] = layer = repos[image][tag]
+
+ # Rewrite the repositories file
+ data = json.dumps({imageName or image: {imageTag or tag: layer}})
+ reader = BytesIO(data.encode("utf-8"))
+ member.size = len(data)
+
+ # Emit the tar header for this member.
+ yield member.tobuf(tarfile.GNU_FORMAT)
+ # Then emit its content.
+ remaining = member.size
+ while remaining:
+ length = min(remaining, zstd.DECOMPRESSION_RECOMMENDED_OUTPUT_SIZE)
+ buf = reader.read(length)
+ remaining -= len(buf)
+ yield buf
+ # Pad to fill a 512 bytes block, per tar format.
+ remainder = member.size % 512
+ if remainder:
+ yield ("\0" * (512 - remainder)).encode("utf-8")
+
+ reader.close()
+
+ docker.post_to_docker(download_and_modify_image(), "/images/load", quiet=0)
+
+ # Check that we found a repositories file
+ if not info.get("image") or not info.get("tag") or not info.get("layer"):
+ raise Exception("No repositories file found!")
+
+ return info
diff --git a/taskcluster/gecko_taskgraph/files_changed.py b/taskcluster/gecko_taskgraph/files_changed.py
new file mode 100644
index 0000000000..c814df0806
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/files_changed.py
@@ -0,0 +1,95 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+"""
+Support for optimizing tasks based on the set of files that have changed.
+"""
+
+import logging
+import os
+from subprocess import CalledProcessError
+
+from mozbuild.util import memoize
+from mozpack.path import join as join_path
+from mozpack.path import match as mozpackmatch
+from mozversioncontrol import InvalidRepoPath, get_repository_object
+
+from gecko_taskgraph import GECKO
+from gecko_taskgraph.util.hg import get_json_automationrelevance
+
+logger = logging.getLogger(__name__)
+
+
+@memoize
+def get_changed_files(repository, revision):
+ """
+ Get the set of files changed in the push headed by the given revision.
+ Responses are cached, so multiple calls with the same arguments are OK.
+ """
+ contents = get_json_automationrelevance(repository, revision)
+ try:
+ changesets = contents["changesets"]
+ except KeyError:
+ # We shouldn't hit this error in CI.
+ if os.environ.get("MOZ_AUTOMATION"):
+ raise
+
+ # We're likely on an unpublished commit, grab changed files from
+ # version control.
+ return get_locally_changed_files(GECKO)
+
+ logger.debug("{} commits influencing task scheduling:".format(len(changesets)))
+ changed_files = set()
+ for c in changesets:
+ desc = "" # Support empty desc
+ if c["desc"]:
+ desc = c["desc"].splitlines()[0].encode("ascii", "ignore")
+ logger.debug(" {cset} {desc}".format(cset=c["node"][0:12], desc=desc))
+ changed_files |= set(c["files"])
+
+ return changed_files
+
+
+def check(params, file_patterns):
+ """Determine whether any of the files changed in the indicated push to
+ https://hg.mozilla.org match any of the given file patterns."""
+ repository = params.get("head_repository")
+ revision = params.get("head_rev")
+ if not repository or not revision:
+ logger.warning(
+ "Missing `head_repository` or `head_rev` parameters; "
+ "assuming all files have changed"
+ )
+ return True
+
+ changed_files = get_changed_files(repository, revision)
+
+ if "comm_head_repository" in params:
+ repository = params.get("comm_head_repository")
+ revision = params.get("comm_head_rev")
+ if not revision:
+ logger.warning(
+ "Missing `comm_head_rev` parameters; " "assuming all files have changed"
+ )
+ return True
+
+ changed_files |= {
+ join_path("comm", file) for file in get_changed_files(repository, revision)
+ }
+
+ for pattern in file_patterns:
+ for path in changed_files:
+ if mozpackmatch(path, pattern):
+ return True
+
+ return False
+
+
+@memoize
+def get_locally_changed_files(repo):
+ try:
+ vcs = get_repository_object(repo)
+ return set(vcs.get_outgoing_files("AM"))
+ except (InvalidRepoPath, CalledProcessError):
+ return set()
diff --git a/taskcluster/gecko_taskgraph/loader/__init__.py b/taskcluster/gecko_taskgraph/loader/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/loader/__init__.py
diff --git a/taskcluster/gecko_taskgraph/loader/multi_dep.py b/taskcluster/gecko_taskgraph/loader/multi_dep.py
new file mode 100644
index 0000000000..04fda04415
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/loader/multi_dep.py
@@ -0,0 +1,275 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+from taskgraph.task import Task
+from taskgraph.util.schema import Schema
+from voluptuous import Required
+
+from gecko_taskgraph.util.copy_task import copy_task
+
+from ..util.attributes import sorted_unique_list
+
+schema = Schema(
+ {
+ Required("primary-dependency", "primary dependency task"): Task,
+ Required(
+ "dependent-tasks",
+ "dictionary of dependent tasks, keyed by kind",
+ ): {str: Task},
+ }
+)
+
+
+# Define a collection of group_by functions
+GROUP_BY_MAP = {}
+
+
+def group_by(name):
+ def wrapper(func):
+ GROUP_BY_MAP[name] = func
+ return func
+
+ return wrapper
+
+
+def loader(kind, path, config, params, loaded_tasks):
+ """
+ Load tasks based on the jobs dependant kinds, designed for use as
+ multiple-dependent needs.
+
+ Required ``group-by-fn`` is used to define how we coalesce the
+ multiple deps together to pass to transforms, e.g. all kinds specified get
+ collapsed by platform with `platform`
+
+ Optional ``primary-dependency`` (ordered list or string) is used to determine
+ which upstream kind to inherit attrs from. See ``get_primary_dep``.
+
+ The `only-for-build-platforms` kind configuration, if specified, will limit
+ the build platforms for which a job will be created. Alternatively there is
+ 'not-for-build-platforms' kind configuration which will be consulted only after
+ 'only-for-build-platforms' is checked (if present), and omit any jobs where the
+ build platform matches.
+
+ Optional ``job-template`` kind configuration value, if specified, will be used to
+ pass configuration down to the specified transforms used.
+ """
+ job_template = config.get("job-template")
+
+ for dep_tasks in group_tasks(config, loaded_tasks):
+ job = {"dependent-tasks": dep_tasks}
+ job["primary-dependency"] = get_primary_dep(config, dep_tasks)
+ if job_template:
+ job.update(copy_task(job_template))
+ # copy shipping_product from upstream
+ product = job["primary-dependency"].attributes.get(
+ "shipping_product", job["primary-dependency"].task.get("shipping-product")
+ )
+ if product:
+ job.setdefault("shipping-product", product)
+ job.setdefault("attributes", {})["required_signoffs"] = sorted_unique_list(
+ *(
+ task.attributes.get("required_signoffs", [])
+ for task in dep_tasks.values()
+ )
+ )
+
+ yield job
+
+
+def skip_only_or_not(config, task):
+ """Return True if we should skip this task based on `only_` or `not_` config."""
+ only_platforms = config.get("only-for-build-platforms")
+ not_platforms = config.get("not-for-build-platforms")
+ only_attributes = config.get("only-for-attributes")
+ not_attributes = config.get("not-for-attributes")
+ task_attrs = task.attributes
+ if only_platforms or not_platforms:
+ platform = task_attrs.get("build_platform")
+ build_type = task_attrs.get("build_type")
+ if not platform or not build_type:
+ return True
+ combined_platform = f"{platform}/{build_type}"
+ if only_platforms and combined_platform not in only_platforms:
+ return True
+ if not_platforms and combined_platform in not_platforms:
+ return True
+ if only_attributes:
+ if not set(only_attributes) & set(task_attrs):
+ # make sure any attribute exists
+ return True
+ if not_attributes:
+ if set(not_attributes) & set(task_attrs):
+ return True
+ return False
+
+
+def group_tasks(config, tasks):
+ group_by_fn = GROUP_BY_MAP[config["group-by"]]
+
+ groups = group_by_fn(config, tasks)
+
+ for combinations in groups.values():
+ kinds = [f.kind for f in combinations]
+ assert_unique_members(
+ kinds,
+ error_msg=("Multi_dep.py should have filtered down to one task per kind"),
+ )
+ dependencies = {t.kind: copy_task(t) for t in combinations}
+ yield dependencies
+
+
+@group_by("platform")
+def platform_grouping(config, tasks):
+ groups = {}
+ for task in tasks:
+ if task.kind not in config.get("kind-dependencies", []):
+ continue
+ if skip_only_or_not(config, task):
+ continue
+ platform = task.attributes.get("build_platform")
+ build_type = task.attributes.get("build_type")
+ product = task.attributes.get(
+ "shipping_product", task.task.get("shipping-product")
+ )
+
+ groups.setdefault((platform, build_type, product), []).append(task)
+ return groups
+
+
+@group_by("single-locale")
+def single_locale_grouping(config, tasks):
+ """Split by a single locale (but also by platform, build-type, product)
+
+ The locale can be `None` (en-US build/signing/repackage), a single locale,
+ or multiple locales per task, e.g. for l10n chunking. In the case of a task
+ with, say, five locales, the task will show up in all five locale groupings.
+
+ This grouping is written for non-partner-repack beetmover, but might also
+ be useful elsewhere.
+
+ """
+ groups = {}
+
+ for task in tasks:
+ if task.kind not in config.get("kind-dependencies", []):
+ continue
+ if skip_only_or_not(config, task):
+ continue
+ platform = task.attributes.get("build_platform")
+ build_type = task.attributes.get("build_type")
+ product = task.attributes.get(
+ "shipping_product", task.task.get("shipping-product")
+ )
+ task_locale = task.attributes.get("locale")
+ chunk_locales = task.attributes.get("chunk_locales")
+ locales = chunk_locales or [task_locale]
+
+ for locale in locales:
+ locale_key = (platform, build_type, product, locale)
+ groups.setdefault(locale_key, [])
+ if task not in groups[locale_key]:
+ groups[locale_key].append(task)
+
+ return groups
+
+
+@group_by("chunk-locales")
+def chunk_locale_grouping(config, tasks):
+ """Split by a chunk_locale (but also by platform, build-type, product)
+
+ This grouping is written for mac signing with notarization, but might also
+ be useful elsewhere.
+
+ """
+ groups = {}
+
+ for task in tasks:
+ if task.kind not in config.get("kind-dependencies", []):
+ continue
+ if skip_only_or_not(config, task):
+ continue
+ platform = task.attributes.get("build_platform")
+ build_type = task.attributes.get("build_type")
+ product = task.attributes.get(
+ "shipping_product", task.task.get("shipping-product")
+ )
+ chunk_locales = tuple(sorted(task.attributes.get("chunk_locales", [])))
+
+ chunk_locale_key = (platform, build_type, product, chunk_locales)
+ groups.setdefault(chunk_locale_key, [])
+ if task not in groups[chunk_locale_key]:
+ groups[chunk_locale_key].append(task)
+
+ return groups
+
+
+@group_by("partner-repack-ids")
+def partner_repack_ids_grouping(config, tasks):
+ """Split by partner_repack_ids (but also by platform, build-type, product)
+
+ This grouping is written for release-{eme-free,partner}-repack-signing.
+
+ """
+ groups = {}
+
+ for task in tasks:
+ if task.kind not in config.get("kind-dependencies", []):
+ continue
+ if skip_only_or_not(config, task):
+ continue
+ platform = task.attributes.get("build_platform")
+ build_type = task.attributes.get("build_type")
+ product = task.attributes.get(
+ "shipping_product", task.task.get("shipping-product")
+ )
+ partner_repack_ids = tuple(
+ sorted(task.task.get("extra", {}).get("repack_ids", []))
+ )
+
+ partner_repack_ids_key = (platform, build_type, product, partner_repack_ids)
+ groups.setdefault(partner_repack_ids_key, [])
+ if task not in groups[partner_repack_ids_key]:
+ groups[partner_repack_ids_key].append(task)
+
+ return groups
+
+
+def assert_unique_members(kinds, error_msg=None):
+ if len(kinds) != len(set(kinds)):
+ raise Exception(error_msg)
+
+
+def get_primary_dep(config, dep_tasks):
+ """Find the dependent task to inherit attributes from.
+
+ If ``primary-dependency`` is defined in ``kind.yml`` and is a string,
+ then find the first dep with that task kind and return it. If it is
+ defined and is a list, the first kind in that list with a matching dep
+ is the primary dependency. If it's undefined, return the first dep.
+
+ """
+ primary_dependencies = config.get("primary-dependency")
+ if isinstance(primary_dependencies, str):
+ primary_dependencies = [primary_dependencies]
+ if not primary_dependencies:
+ assert len(dep_tasks) == 1, "Must define a primary-dependency!"
+ return list(dep_tasks.values())[0]
+ primary_dep = None
+ for primary_kind in primary_dependencies:
+ for dep_kind in dep_tasks:
+ if dep_kind == primary_kind:
+ assert (
+ primary_dep is None
+ ), "Too many primary dependent tasks in dep_tasks: {}!".format(
+ [t.label for t in dep_tasks]
+ )
+ primary_dep = dep_tasks[dep_kind]
+ if primary_dep is None:
+ raise Exception(
+ "Can't find dependency of {}: {}".format(
+ config["primary-dependency"], config
+ )
+ )
+ return primary_dep
diff --git a/taskcluster/gecko_taskgraph/loader/single_dep.py b/taskcluster/gecko_taskgraph/loader/single_dep.py
new file mode 100644
index 0000000000..caea4b85d0
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/loader/single_dep.py
@@ -0,0 +1,76 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+from taskgraph.task import Task
+from taskgraph.util.schema import Schema
+from voluptuous import Required
+
+from gecko_taskgraph.util.copy_task import copy_task
+
+schema = Schema(
+ {
+ Required("primary-dependency", "primary dependency task"): Task,
+ }
+)
+
+
+def loader(kind, path, config, params, loaded_tasks):
+ """
+ Load tasks based on the jobs dependant kinds.
+
+ The `only-for-build-platforms` kind configuration, if specified, will limit
+ the build platforms for which a job will be created. Alternatively there is
+ 'not-for-build-platforms' kind configuration which will be consulted only after
+ 'only-for-build-platforms' is checked (if present), and omit any jobs where the
+ build platform matches.
+
+ Optional `only-for-attributes` kind configuration, if specified, will limit
+ the jobs chosen to ones which have the specified attribute, with the specified
+ value.
+
+ Optional `job-template` kind configuration value, if specified, will be used to
+ pass configuration down to the specified transforms used.
+ """
+ only_platforms = config.get("only-for-build-platforms")
+ not_platforms = config.get("not-for-build-platforms")
+ only_attributes = config.get("only-for-attributes")
+ job_template = config.get("job-template")
+
+ for task in loaded_tasks:
+ if task.kind not in config.get("kind-dependencies", []):
+ continue
+
+ if only_platforms or not_platforms:
+ build_platform = task.attributes.get("build_platform")
+ build_type = task.attributes.get("build_type")
+ if not build_platform or not build_type:
+ continue
+ platform = f"{build_platform}/{build_type}"
+ if only_platforms and platform not in only_platforms:
+ continue
+ elif not_platforms and platform in not_platforms:
+ continue
+
+ if only_attributes:
+ config_attrs = set(only_attributes)
+ if not config_attrs & set(task.attributes):
+ # make sure any attribute exists
+ continue
+
+ job = {
+ "primary-dependency": task,
+ }
+
+ if job_template:
+ job.update(copy_task(job_template))
+
+ # copy shipping_product from upstream
+ product = task.attributes.get(
+ "shipping_product", task.task.get("shipping-product")
+ )
+ if product:
+ job.setdefault("shipping-product", product)
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/loader/test.py b/taskcluster/gecko_taskgraph/loader/test.py
new file mode 100644
index 0000000000..c97acecd1a
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/loader/test.py
@@ -0,0 +1,142 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import logging
+
+from taskgraph.util.yaml import load_yaml
+
+from gecko_taskgraph.util.copy_task import copy_task
+
+from .transform import loader as transform_loader
+
+logger = logging.getLogger(__name__)
+
+
+def loader(kind, path, config, params, loaded_tasks):
+ """
+ Generate tasks implementing Gecko tests.
+ """
+
+ builds_by_platform = get_builds_by_platform(
+ dep_kind="build", loaded_tasks=loaded_tasks
+ )
+ signed_builds_by_platform = get_builds_by_platform(
+ dep_kind="build-signing", loaded_tasks=loaded_tasks
+ )
+
+ # get the test platforms for those build tasks
+ test_platforms_cfg = load_yaml(path, "test-platforms.yml")
+ test_platforms = get_test_platforms(
+ test_platforms_cfg, builds_by_platform, signed_builds_by_platform
+ )
+
+ # expand the test sets for each of those platforms
+ test_sets_cfg = load_yaml(path, "test-sets.yml")
+ test_platforms = expand_tests(test_sets_cfg, test_platforms)
+
+ # load the test descriptions
+ tests = transform_loader(kind, path, config, params, loaded_tasks)
+ test_descriptions = {t.pop("name"): t for t in tests}
+
+ # generate all tests for all test platforms
+ for test_platform_name, test_platform in test_platforms.items():
+ for test_name in test_platform["test-names"]:
+ test = copy_task(test_descriptions[test_name])
+ test["build-platform"] = test_platform["build-platform"]
+ test["test-platform"] = test_platform_name
+ test["build-label"] = test_platform["build-label"]
+ if test_platform.get("build-signing-label", None):
+ test["build-signing-label"] = test_platform["build-signing-label"]
+
+ test["build-attributes"] = test_platform["build-attributes"]
+ test["test-name"] = test_name
+ if test_platform.get("shippable"):
+ test.setdefault("attributes", {})["shippable"] = True
+ test["attributes"]["shipping_product"] = test_platform[
+ "shipping_product"
+ ]
+
+ logger.debug(
+ "Generating tasks for test {} on platform {}".format(
+ test_name, test["test-platform"]
+ )
+ )
+ yield test
+
+
+def get_builds_by_platform(dep_kind, loaded_tasks):
+ """Find the build tasks on which tests will depend, keyed by
+ platform/type. Returns a dictionary mapping build platform to task."""
+ builds_by_platform = {}
+ for task in loaded_tasks:
+ if task.kind != dep_kind:
+ continue
+
+ build_platform = task.attributes.get("build_platform")
+ build_type = task.attributes.get("build_type")
+ if not build_platform or not build_type:
+ continue
+ platform = f"{build_platform}/{build_type}"
+ if platform in builds_by_platform:
+ raise Exception("multiple build jobs for " + platform)
+ builds_by_platform[platform] = task
+ return builds_by_platform
+
+
+def get_test_platforms(
+ test_platforms_cfg, builds_by_platform, signed_builds_by_platform={}
+):
+ """Get the test platforms for which test tasks should be generated,
+ based on the available build platforms. Returns a dictionary mapping
+ test platform to {test-set, build-platform, build-label}."""
+ test_platforms = {}
+ for test_platform, cfg in test_platforms_cfg.items():
+ build_platform = cfg["build-platform"]
+ if build_platform not in builds_by_platform:
+ logger.warning(
+ "No build task with platform {}; ignoring test platform {}".format(
+ build_platform, test_platform
+ )
+ )
+ continue
+ test_platforms[test_platform] = {
+ "build-platform": build_platform,
+ "build-label": builds_by_platform[build_platform].label,
+ "build-attributes": builds_by_platform[build_platform].attributes,
+ }
+
+ if builds_by_platform[build_platform].attributes.get("shippable"):
+ test_platforms[test_platform]["shippable"] = builds_by_platform[
+ build_platform
+ ].attributes["shippable"]
+ test_platforms[test_platform]["shipping_product"] = builds_by_platform[
+ build_platform
+ ].attributes["shipping_product"]
+
+ test_platforms[test_platform].update(cfg)
+
+ return test_platforms
+
+
+def expand_tests(test_sets_cfg, test_platforms):
+ """Expand the test sets in `test_platforms` out to sets of test names.
+ Returns a dictionary like `get_test_platforms`, with an additional
+ `test-names` key for each test platform, containing a set of test
+ names."""
+ rv = {}
+ for test_platform, cfg in test_platforms.items():
+ test_sets = cfg["test-sets"]
+ if not set(test_sets) <= set(test_sets_cfg):
+ raise Exception(
+ "Test sets {} for test platform {} are not defined".format(
+ ", ".join(test_sets), test_platform
+ )
+ )
+ test_names = set()
+ for test_set in test_sets:
+ test_names.update(test_sets_cfg[test_set])
+ rv[test_platform] = cfg.copy()
+ rv[test_platform]["test-names"] = test_names
+ return rv
diff --git a/taskcluster/gecko_taskgraph/loader/transform.py b/taskcluster/gecko_taskgraph/loader/transform.py
new file mode 100644
index 0000000000..1e513bcb73
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/loader/transform.py
@@ -0,0 +1,59 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import logging
+
+from taskgraph.util.yaml import load_yaml
+
+from ..util.templates import merge
+
+logger = logging.getLogger(__name__)
+
+
+def loader(kind, path, config, params, loaded_tasks):
+ """
+ Get the input elements that will be transformed into tasks in a generic
+ way. The elements themselves are free-form, and become the input to the
+ first transform.
+
+ By default, this reads jobs from the `jobs` key, or from yaml files
+ named by `jobs-from`. The entities are read from mappings, and the
+ keys to those mappings are added in the `name` key of each entity.
+
+ If there is a `job-defaults` config, then every job is merged with it.
+ This provides a simple way to set default values for all jobs of a kind.
+ The `job-defaults` key can also be specified in a yaml file pointed to by
+ `jobs-from`. In this case it will only apply to tasks defined in the same
+ file.
+
+ Other kind implementations can use a different loader function to
+ produce inputs and hand them to `transform_inputs`.
+ """
+
+ def jobs():
+ defaults = config.get("job-defaults")
+ for name, job in config.get("jobs", {}).items():
+ if defaults:
+ job = merge(defaults, job)
+ job["job-from"] = "kind.yml"
+ yield name, job
+
+ for filename in config.get("jobs-from", []):
+ tasks = load_yaml(path, filename)
+
+ file_defaults = tasks.pop("job-defaults", None)
+ if defaults:
+ file_defaults = merge(defaults, file_defaults or {})
+
+ for name, job in tasks.items():
+ if file_defaults:
+ job = merge(file_defaults, job)
+ job["job-from"] = filename
+ yield name, job
+
+ for name, job in jobs():
+ job["name"] = name
+ logger.debug(f"Generating tasks for {kind} {name}")
+ yield job
diff --git a/taskcluster/gecko_taskgraph/main.py b/taskcluster/gecko_taskgraph/main.py
new file mode 100644
index 0000000000..bb49ba6000
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/main.py
@@ -0,0 +1,765 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import argparse
+import atexit
+import json
+import logging
+import os
+import re
+import shutil
+import subprocess
+import sys
+import tempfile
+import traceback
+from collections import namedtuple
+from concurrent.futures import ProcessPoolExecutor, as_completed
+from pathlib import Path
+from typing import Any, List
+
+import appdirs
+import yaml
+
+Command = namedtuple("Command", ["func", "args", "kwargs", "defaults"])
+commands = {}
+
+
+def command(*args, **kwargs):
+ defaults = kwargs.pop("defaults", {})
+
+ def decorator(func):
+ commands[args[0]] = Command(func, args, kwargs, defaults)
+ return func
+
+ return decorator
+
+
+def argument(*args, **kwargs):
+ def decorator(func):
+ if not hasattr(func, "args"):
+ func.args = []
+ func.args.append((args, kwargs))
+ return func
+
+ return decorator
+
+
+def format_taskgraph_labels(taskgraph):
+ return "\n".join(
+ sorted(
+ taskgraph.tasks[index].label for index in taskgraph.graph.visit_postorder()
+ )
+ )
+
+
+def format_taskgraph_json(taskgraph):
+ return json.dumps(
+ taskgraph.to_json(), sort_keys=True, indent=2, separators=(",", ": ")
+ )
+
+
+def format_taskgraph_yaml(taskgraph):
+ return yaml.safe_dump(taskgraph.to_json(), default_flow_style=False)
+
+
+def get_filtered_taskgraph(taskgraph, tasksregex):
+ """
+ Filter all the tasks on basis of a regular expression
+ and returns a new TaskGraph object
+ """
+ from taskgraph.graph import Graph
+ from taskgraph.taskgraph import TaskGraph
+
+ # return original taskgraph if no regular expression is passed
+ if not tasksregex:
+ return taskgraph
+ named_links_dict = taskgraph.graph.named_links_dict()
+ filteredtasks = {}
+ filterededges = set()
+ regexprogram = re.compile(tasksregex)
+
+ for key in taskgraph.graph.visit_postorder():
+ task = taskgraph.tasks[key]
+ if regexprogram.match(task.label):
+ filteredtasks[key] = task
+ for depname, dep in named_links_dict[key].items():
+ if regexprogram.match(dep):
+ filterededges.add((key, dep, depname))
+ filtered_taskgraph = TaskGraph(
+ filteredtasks, Graph(set(filteredtasks), filterededges)
+ )
+ return filtered_taskgraph
+
+
+FORMAT_METHODS = {
+ "labels": format_taskgraph_labels,
+ "json": format_taskgraph_json,
+ "yaml": format_taskgraph_yaml,
+}
+
+
+def get_taskgraph_generator(root, parameters):
+ """Helper function to make testing a little easier."""
+ from taskgraph.generator import TaskGraphGenerator
+
+ return TaskGraphGenerator(root_dir=root, parameters=parameters)
+
+
+def format_taskgraph(options, parameters, logfile=None):
+ import taskgraph
+ from taskgraph.parameters import parameters_loader
+
+ if logfile:
+ handler = logging.FileHandler(logfile, mode="w")
+ if logging.root.handlers:
+ oldhandler = logging.root.handlers[-1]
+ logging.root.removeHandler(oldhandler)
+ handler.setFormatter(oldhandler.formatter)
+ logging.root.addHandler(handler)
+
+ if options["fast"]:
+ taskgraph.fast = True
+
+ if isinstance(parameters, str):
+ parameters = parameters_loader(
+ parameters,
+ overrides={"target-kind": options.get("target_kind")},
+ strict=False,
+ )
+
+ tgg = get_taskgraph_generator(options.get("root"), parameters)
+
+ tg = getattr(tgg, options["graph_attr"])
+ tg = get_filtered_taskgraph(tg, options["tasks_regex"])
+ format_method = FORMAT_METHODS[options["format"] or "labels"]
+ return format_method(tg)
+
+
+def dump_output(out, path=None, params_spec=None):
+ from taskgraph.parameters import Parameters
+
+ params_name = Parameters.format_spec(params_spec)
+ fh = None
+ if path:
+ # Substitute params name into file path if necessary
+ if params_spec and "{params}" not in path:
+ name, ext = os.path.splitext(path)
+ name += "_{params}"
+ path = name + ext
+
+ path = path.format(params=params_name)
+ fh = open(path, "w")
+ else:
+ print(
+ "Dumping result with parameters from {}:".format(params_name),
+ file=sys.stderr,
+ )
+ print(out + "\n", file=fh)
+
+
+def generate_taskgraph(options, parameters, logdir):
+ from taskgraph.parameters import Parameters
+
+ def logfile(spec):
+ """Determine logfile given a parameters specification."""
+ if logdir is None:
+ return None
+ return os.path.join(
+ logdir,
+ "{}_{}.log".format(options["graph_attr"], Parameters.format_spec(spec)),
+ )
+
+ # Don't bother using futures if there's only one parameter. This can make
+ # tracebacks a little more readable and avoids additional process overhead.
+ if len(parameters) == 1:
+ spec = parameters[0]
+ out = format_taskgraph(options, spec, logfile(spec))
+ dump_output(out, options["output_file"])
+ return
+
+ futures = {}
+ with ProcessPoolExecutor() as executor:
+ for spec in parameters:
+ f = executor.submit(format_taskgraph, options, spec, logfile(spec))
+ futures[f] = spec
+
+ for future in as_completed(futures):
+ output_file = options["output_file"]
+ spec = futures[future]
+ e = future.exception()
+ if e:
+ out = "".join(traceback.format_exception(type(e), e, e.__traceback__))
+ if options["diff"]:
+ # Dump to console so we don't accidentally diff the tracebacks.
+ output_file = None
+ else:
+ out = future.result()
+
+ dump_output(
+ out,
+ path=output_file,
+ params_spec=spec if len(parameters) > 1 else None,
+ )
+
+
+@command(
+ "tasks",
+ help="Show all tasks in the taskgraph.",
+ defaults={"graph_attr": "full_task_set"},
+)
+@command(
+ "full", help="Show the full taskgraph.", defaults={"graph_attr": "full_task_graph"}
+)
+@command(
+ "target",
+ help="Show the set of target tasks.",
+ defaults={"graph_attr": "target_task_set"},
+)
+@command(
+ "target-graph",
+ help="Show the target graph.",
+ defaults={"graph_attr": "target_task_graph"},
+)
+@command(
+ "optimized",
+ help="Show the optimized graph.",
+ defaults={"graph_attr": "optimized_task_graph"},
+)
+@command(
+ "morphed",
+ help="Show the morphed graph.",
+ defaults={"graph_attr": "morphed_task_graph"},
+)
+@argument("--root", "-r", help="root of the taskgraph definition relative to topsrcdir")
+@argument("--quiet", "-q", action="store_true", help="suppress all logging output")
+@argument(
+ "--verbose", "-v", action="store_true", help="include debug-level logging output"
+)
+@argument(
+ "--json",
+ "-J",
+ action="store_const",
+ dest="format",
+ const="json",
+ help="Output task graph as a JSON object",
+)
+@argument(
+ "--yaml",
+ "-Y",
+ action="store_const",
+ dest="format",
+ const="yaml",
+ help="Output task graph as a YAML object",
+)
+@argument(
+ "--labels",
+ "-L",
+ action="store_const",
+ dest="format",
+ const="labels",
+ help="Output the label for each task in the task graph (default)",
+)
+@argument(
+ "--parameters",
+ "-p",
+ default=None,
+ action="append",
+ help="Parameters to use for the generation. Can be a path to file (.yml or "
+ ".json; see `taskcluster/docs/parameters.rst`), a directory (containing "
+ "parameters files), a url, of the form `project=mozilla-central` to download "
+ "latest parameters file for the specified project from CI, or of the form "
+ "`task-id=<decision task id>` to download parameters from the specified "
+ "decision task. Can be specified multiple times, in which case multiple "
+ "generations will happen from the same invocation (one per parameters "
+ "specified).",
+)
+@argument(
+ "--no-optimize",
+ dest="optimize",
+ action="store_false",
+ default="true",
+ help="do not remove tasks from the graph that are found in the "
+ "index (a.k.a. optimize the graph)",
+)
+@argument(
+ "-o",
+ "--output-file",
+ default=None,
+ help="file path to store generated output.",
+)
+@argument(
+ "--tasks-regex",
+ "--tasks",
+ default=None,
+ help="only return tasks with labels matching this regular " "expression.",
+)
+@argument(
+ "--target-kind",
+ default=None,
+ help="only return tasks that are of the given kind, or their dependencies.",
+)
+@argument(
+ "-F",
+ "--fast",
+ default=False,
+ action="store_true",
+ help="enable fast task generation for local debugging.",
+)
+@argument(
+ "--diff",
+ const="default",
+ nargs="?",
+ default=None,
+ help="Generate and diff the current taskgraph against another revision. "
+ "Without args the base revision will be used. A revision specifier such as "
+ "the hash or `.~1` (hg) or `HEAD~1` (git) can be used as well.",
+)
+def show_taskgraph(options):
+ from mozversioncontrol import get_repository_object as get_repository
+ from taskgraph.parameters import Parameters, parameters_loader
+
+ if options.pop("verbose", False):
+ logging.root.setLevel(logging.DEBUG)
+
+ repo = None
+ cur_ref = None
+ diffdir = None
+ output_file = options["output_file"]
+
+ if options["diff"]:
+ repo = get_repository(os.getcwd())
+
+ if not repo.working_directory_clean():
+ print(
+ "abort: can't diff taskgraph with dirty working directory",
+ file=sys.stderr,
+ )
+ return 1
+
+ # We want to return the working directory to the current state
+ # as best we can after we're done. In all known cases, using
+ # branch or bookmark (which are both available on the VCS object)
+ # as `branch` is preferable to a specific revision.
+ cur_ref = repo.branch or repo.head_ref[:12]
+
+ diffdir = tempfile.mkdtemp()
+ atexit.register(
+ shutil.rmtree, diffdir
+ ) # make sure the directory gets cleaned up
+ options["output_file"] = os.path.join(
+ diffdir, f"{options['graph_attr']}_{cur_ref}"
+ )
+ print(f"Generating {options['graph_attr']} @ {cur_ref}", file=sys.stderr)
+
+ parameters: List[Any[str, Parameters]] = options.pop("parameters")
+ if not parameters:
+ overrides = {
+ "target-kind": options.get("target_kind"),
+ }
+ parameters = [
+ parameters_loader(None, strict=False, overrides=overrides)
+ ] # will use default values
+
+ for param in parameters[:]:
+ if isinstance(param, str) and os.path.isdir(param):
+ parameters.remove(param)
+ parameters.extend(
+ [
+ p.as_posix()
+ for p in Path(param).iterdir()
+ if p.suffix in (".yml", ".json")
+ ]
+ )
+
+ logdir = None
+ if len(parameters) > 1:
+ # Log to separate files for each process instead of stderr to
+ # avoid interleaving.
+ basename = os.path.basename(os.getcwd())
+ logdir = os.path.join(appdirs.user_log_dir("taskgraph"), basename)
+ if not os.path.isdir(logdir):
+ os.makedirs(logdir)
+ else:
+ # Only setup logging if we have a single parameter spec. Otherwise
+ # logging will go to files. This is also used as a hook for Gecko
+ # to setup its `mach` based logging.
+ setup_logging()
+
+ generate_taskgraph(options, parameters, logdir)
+
+ if options["diff"]:
+ assert diffdir is not None
+ assert repo is not None
+
+ # Reload taskgraph modules to pick up changes and clear global state.
+ for mod in sys.modules.copy():
+ if mod != __name__ and mod.split(".", 1)[0].endswith(
+ ("taskgraph", "mozbuild")
+ ):
+ del sys.modules[mod]
+
+ # Ensure gecko_taskgraph is ahead of taskcluster_taskgraph in sys.path.
+ # Without this, we may end up validating some things against the wrong
+ # schema.
+ import gecko_taskgraph # noqa
+
+ if options["diff"] == "default":
+ base_ref = repo.base_ref
+ else:
+ base_ref = options["diff"]
+
+ try:
+ repo.update(base_ref)
+ base_ref = repo.head_ref[:12]
+ options["output_file"] = os.path.join(
+ diffdir, f"{options['graph_attr']}_{base_ref}"
+ )
+ print(f"Generating {options['graph_attr']} @ {base_ref}", file=sys.stderr)
+ generate_taskgraph(options, parameters, logdir)
+ finally:
+ repo.update(cur_ref)
+
+ # Generate diff(s)
+ diffcmd = [
+ "diff",
+ "-U20",
+ "--report-identical-files",
+ f"--label={options['graph_attr']}@{base_ref}",
+ f"--label={options['graph_attr']}@{cur_ref}",
+ ]
+
+ non_fatal_failures = []
+ for spec in parameters:
+ base_path = os.path.join(diffdir, f"{options['graph_attr']}_{base_ref}")
+ cur_path = os.path.join(diffdir, f"{options['graph_attr']}_{cur_ref}")
+
+ params_name = None
+ if len(parameters) > 1:
+ params_name = Parameters.format_spec(spec)
+ base_path += f"_{params_name}"
+ cur_path += f"_{params_name}"
+
+ # If the base or cur files are missing it means that generation
+ # failed. If one of them failed but not the other, the failure is
+ # likely due to the patch making changes to taskgraph in modules
+ # that don't get reloaded (safe to ignore). If both generations
+ # failed, there's likely a real issue.
+ base_missing = not os.path.isfile(base_path)
+ cur_missing = not os.path.isfile(cur_path)
+ if base_missing != cur_missing: # != is equivalent to XOR for booleans
+ non_fatal_failures.append(os.path.basename(base_path))
+ continue
+
+ try:
+ # If the output file(s) are missing, this command will raise
+ # CalledProcessError with a returncode > 1.
+ proc = subprocess.run(
+ diffcmd + [base_path, cur_path],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ universal_newlines=True,
+ check=True,
+ )
+ diff_output = proc.stdout
+ returncode = 0
+ except subprocess.CalledProcessError as e:
+ # returncode 1 simply means diffs were found
+ if e.returncode != 1:
+ print(e.stderr, file=sys.stderr)
+ raise
+ diff_output = e.output
+ returncode = e.returncode
+
+ dump_output(
+ diff_output,
+ # Don't bother saving file if no diffs were found. Log to
+ # console in this case instead.
+ path=None if returncode == 0 else output_file,
+ params_spec=spec if len(parameters) > 1 else None,
+ )
+
+ if non_fatal_failures:
+ failstr = "\n ".join(sorted(non_fatal_failures))
+ print(
+ "WARNING: Diff skipped for the following generation{s} "
+ "due to failures:\n {failstr}".format(
+ s="s" if len(non_fatal_failures) > 1 else "", failstr=failstr
+ ),
+ file=sys.stderr,
+ )
+
+ if options["format"] != "json":
+ print(
+ "If you were expecting differences in task bodies "
+ 'you should pass "-J"\n',
+ file=sys.stderr,
+ )
+
+ if len(parameters) > 1:
+ print("See '{}' for logs".format(logdir), file=sys.stderr)
+
+
+@command("build-image", help="Build a Docker image")
+@argument("image_name", help="Name of the image to build")
+@argument(
+ "-t", "--tag", help="tag that the image should be built as.", metavar="name:tag"
+)
+@argument(
+ "--context-only",
+ help="File name the context tarball should be written to."
+ "with this option it will only build the context.tar.",
+ metavar="context.tar",
+)
+def build_image(args):
+ from gecko_taskgraph.docker import build_context, build_image
+
+ if args["context_only"] is None:
+ build_image(args["image_name"], args["tag"], os.environ)
+ else:
+ build_context(args["image_name"], args["context_only"], os.environ)
+
+
+@command(
+ "load-image",
+ help="Load a pre-built Docker image. Note that you need to "
+ "have docker installed and running for this to work.",
+)
+@argument(
+ "--task-id",
+ help="Load the image at public/image.tar.zst in this task, "
+ "rather than searching the index",
+)
+@argument(
+ "-t",
+ "--tag",
+ help="tag that the image should be loaded as. If not "
+ "image will be loaded with tag from the tarball",
+ metavar="name:tag",
+)
+@argument(
+ "image_name",
+ nargs="?",
+ help="Load the image of this name based on the current "
+ "contents of the tree (as built for mozilla-central "
+ "or mozilla-inbound)",
+)
+def load_image(args):
+ from gecko_taskgraph.docker import load_image_by_name, load_image_by_task_id
+
+ if not args.get("image_name") and not args.get("task_id"):
+ print("Specify either IMAGE-NAME or TASK-ID")
+ sys.exit(1)
+ try:
+ if args["task_id"]:
+ ok = load_image_by_task_id(args["task_id"], args.get("tag"))
+ else:
+ ok = load_image_by_name(args["image_name"], args.get("tag"))
+ if not ok:
+ sys.exit(1)
+ except Exception:
+ traceback.print_exc()
+ sys.exit(1)
+
+
+@command("image-digest", help="Print the digest of a docker image.")
+@argument(
+ "image_name",
+ help="Print the digest of the image of this name based on the current "
+ "contents of the tree.",
+)
+def image_digest(args):
+ from gecko_taskgraph.docker import get_image_digest
+
+ try:
+ digest = get_image_digest(args["image_name"])
+ print(digest)
+ except Exception:
+ traceback.print_exc()
+ sys.exit(1)
+
+
+@command("decision", help="Run the decision task")
+@argument("--root", "-r", help="root of the taskgraph definition relative to topsrcdir")
+@argument(
+ "--message",
+ required=False,
+ help=argparse.SUPPRESS,
+)
+@argument(
+ "--project",
+ required=True,
+ help="Project to use for creating task graph. Example: --project=try",
+)
+@argument("--pushlog-id", dest="pushlog_id", required=True, default="0")
+@argument("--pushdate", dest="pushdate", required=True, type=int, default=0)
+@argument("--owner", required=True, help="email address of who owns this graph")
+@argument("--level", required=True, help="SCM level of this repository")
+@argument(
+ "--target-tasks-method", help="method for selecting the target tasks to generate"
+)
+@argument(
+ "--repository-type",
+ required=True,
+ help='Type of repository, either "hg" or "git"',
+)
+@argument("--base-repository", required=True, help='URL for "base" repository to clone')
+@argument(
+ "--base-ref", default="", help='Reference of the revision in the "base" repository'
+)
+@argument(
+ "--base-rev",
+ default="",
+ help="Taskgraph decides what to do based on the revision range between "
+ "`--base-rev` and `--head-rev`. Value is determined automatically if not provided",
+)
+@argument(
+ "--head-repository",
+ required=True,
+ help='URL for "head" repository to fetch revision from',
+)
+@argument(
+ "--head-ref", required=True, help="Reference (this is same as rev usually for hg)"
+)
+@argument(
+ "--head-rev", required=True, help="Commit revision to use from head repository"
+)
+@argument("--head-tag", help="Tag attached to the revision", default="")
+@argument(
+ "--tasks-for", required=True, help="the tasks_for value used to generate this task"
+)
+@argument("--try-task-config-file", help="path to try task configuration file")
+def decision(options):
+ from gecko_taskgraph.decision import taskgraph_decision
+
+ taskgraph_decision(options)
+
+
+@command("action-callback", description="Run action callback used by action tasks")
+@argument(
+ "--root",
+ "-r",
+ default="taskcluster/ci",
+ help="root of the taskgraph definition relative to topsrcdir",
+)
+def action_callback(options):
+ from gecko_taskgraph.actions import trigger_action_callback
+ from gecko_taskgraph.actions.util import get_parameters
+
+ try:
+ # the target task for this action (or null if it's a group action)
+ task_id = json.loads(os.environ.get("ACTION_TASK_ID", "null"))
+ # the target task group for this action
+ task_group_id = os.environ.get("ACTION_TASK_GROUP_ID", None)
+ input = json.loads(os.environ.get("ACTION_INPUT", "null"))
+ callback = os.environ.get("ACTION_CALLBACK", None)
+ root = options["root"]
+
+ parameters = get_parameters(task_group_id)
+
+ return trigger_action_callback(
+ task_group_id=task_group_id,
+ task_id=task_id,
+ input=input,
+ callback=callback,
+ parameters=parameters,
+ root=root,
+ test=False,
+ )
+ except Exception:
+ traceback.print_exc()
+ sys.exit(1)
+
+
+@command("test-action-callback", description="Run an action callback in a testing mode")
+@argument(
+ "--root",
+ "-r",
+ default="taskcluster/ci",
+ help="root of the taskgraph definition relative to topsrcdir",
+)
+@argument(
+ "--parameters",
+ "-p",
+ default="",
+ help="parameters file (.yml or .json; see " "`taskcluster/docs/parameters.rst`)`",
+)
+@argument("--task-id", default=None, help="TaskId to which the action applies")
+@argument(
+ "--task-group-id", default=None, help="TaskGroupId to which the action applies"
+)
+@argument("--input", default=None, help="Action input (.yml or .json)")
+@argument("callback", default=None, help="Action callback name (Python function name)")
+def test_action_callback(options):
+ import taskgraph.parameters
+ from taskgraph.config import load_graph_config
+ from taskgraph.util import yaml
+
+ import gecko_taskgraph.actions
+
+ def load_data(filename):
+ with open(filename) as f:
+ if filename.endswith(".yml"):
+ return yaml.load_stream(f)
+ if filename.endswith(".json"):
+ return json.load(f)
+ raise Exception(f"unknown filename {filename}")
+
+ try:
+ task_id = options["task_id"]
+
+ if options["input"]:
+ input = load_data(options["input"])
+ else:
+ input = None
+
+ root = options["root"]
+ graph_config = load_graph_config(root)
+ trust_domain = graph_config["trust-domain"]
+ graph_config.register()
+
+ parameters = taskgraph.parameters.load_parameters_file(
+ options["parameters"], strict=False, trust_domain=trust_domain
+ )
+ parameters.check()
+
+ return gecko_taskgraph.actions.trigger_action_callback(
+ task_group_id=options["task_group_id"],
+ task_id=task_id,
+ input=input,
+ callback=options["callback"],
+ parameters=parameters,
+ root=root,
+ test=True,
+ )
+ except Exception:
+ traceback.print_exc()
+ sys.exit(1)
+
+
+def create_parser():
+ parser = argparse.ArgumentParser(description="Interact with taskgraph")
+ subparsers = parser.add_subparsers()
+ for _, (func, args, kwargs, defaults) in commands.items():
+ subparser = subparsers.add_parser(*args, **kwargs)
+ for arg in func.args:
+ subparser.add_argument(*arg[0], **arg[1])
+ subparser.set_defaults(command=func, **defaults)
+ return parser
+
+
+def setup_logging():
+ logging.basicConfig(
+ format="%(asctime)s - %(levelname)s - %(message)s", level=logging.INFO
+ )
+
+
+def main(args=sys.argv[1:]):
+ setup_logging()
+ parser = create_parser()
+ args = parser.parse_args(args)
+ try:
+ args.command(vars(args))
+ except Exception:
+ traceback.print_exc()
+ sys.exit(1)
diff --git a/taskcluster/gecko_taskgraph/manifests/fennec_geckoview.yml b/taskcluster/gecko_taskgraph/manifests/fennec_geckoview.yml
new file mode 100644
index 0000000000..18974d3c19
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/manifests/fennec_geckoview.yml
@@ -0,0 +1,210 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+s3_bucket_paths:
+ - maven2
+default_locales: # Ignored for geckoview
+ - en-US
+tasktype_map: # Map task reference to task type.
+ build: build
+ build-fat-aar: build
+ build-signing: signing
+
+# A default entry, which the mappings below extend and override.
+# Final 'destinations' will be the product of:
+# s3_bucket_paths + destinations + locale_prefix + pretty_name
+default: &default
+ locale_prefix: ''
+ source_path_modifier: maven/org/mozilla/geckoview/${artifact_id}/${major_version}.${minor_version}.${build_date}
+ description: "TO_BE_OVERRIDDEN"
+ destinations: # locale_prefix is appended
+ - org/mozilla/geckoview/${artifact_id}/${major_version}.${minor_version}.${build_date}
+
+mapping:
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar:
+ <<: *default
+ from:
+ - build
+ - build-fat-aar
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.asc:
+ <<: *default
+ from: ['build-signing']
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.asc
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.asc
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.md5:
+ <<: *default
+ from:
+ - build
+ - build-fat-aar
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.md5
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.md5
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.sha1:
+ <<: *default
+ from:
+ - build
+ - build-fat-aar
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.sha1
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.sha1
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.sha256:
+ <<: *default
+ from:
+ - build
+ - build-fat-aar
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.sha256
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.sha256
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.sha512:
+ <<: *default
+ from:
+ - build
+ - build-fat-aar
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.sha512
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.aar.sha512
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom:
+ <<: *default
+ from:
+ - build
+ - build-fat-aar
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.asc:
+ <<: *default
+ from: ['build-signing']
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.asc
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.asc
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.md5:
+ <<: *default
+ from:
+ - build
+ - build-fat-aar
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.md5
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.md5
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.sha1:
+ <<: *default
+ from:
+ - build
+ - build-fat-aar
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.sha1
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.sha1
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.sha256:
+ <<: *default
+ from:
+ - build
+ - build-fat-aar
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.sha256
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.sha256
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.sha512:
+ <<: *default
+ from:
+ - build
+ - build-fat-aar
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.sha512
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.pom.sha512
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}.module:
+ <<: *default
+ from:
+ - build
+ - build-fat-aar
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.module
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.module
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.asc:
+ <<: *default
+ from: ['build-signing']
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.asc
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.asc
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.md5:
+ <<: *default
+ from:
+ - build
+ - build-fat-aar
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.md5
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.md5
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.sha1:
+ <<: *default
+ from:
+ - build
+ - build-fat-aar
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.sha1
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.sha1
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.sha256:
+ <<: *default
+ from:
+ - build
+ - build-fat-aar
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.sha256
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.sha256
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.sha512:
+ <<: *default
+ from:
+ - build
+ - build-fat-aar
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.sha512
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}.module.sha512
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar:
+ <<: *default
+ from:
+ - build
+ - build-fat-aar
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.asc:
+ <<: *default
+ from: ['build-signing']
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.asc
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.asc
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.md5:
+ <<: *default
+ from:
+ - build
+ - build-fat-aar
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.md5
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.md5
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.sha1:
+ <<: *default
+ from:
+ - build
+ - build-fat-aar
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.sha1
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.sha1
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.sha256:
+ <<: *default
+ from:
+ - build
+ - build-fat-aar
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.sha256
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.sha256
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.sha512:
+ <<: *default
+ from:
+ - build
+ - build-fat-aar
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.sha512
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}-javadoc.jar.sha512
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}-sources.jar:
+ <<: *default
+ from:
+ - build
+ - build-fat-aar
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}-sources.jar
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}-sources.jar
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}-sources.jar.asc:
+ <<: *default
+ from: ['build-signing']
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}-sources.jar.asc
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}-sources.jar.asc
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}-sources.jar.md5:
+ <<: *default
+ from:
+ - build
+ - build-fat-aar
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}-sources.jar.md5
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}-sources.jar.md5
+ ${artifact_id}-${major_version}.${minor_version}.${build_date}-sources.jar.sha1:
+ <<: *default
+ from:
+ - build
+ - build-fat-aar
+ pretty_name: ${artifact_id}-${major_version}.${minor_version}.${build_date}-sources.jar.sha1
+ checksums_path: ${artifact_id}-${major_version}.${minor_version}.${build_date}-sources.jar.sha1
diff --git a/taskcluster/gecko_taskgraph/manifests/firefox_candidates.yml b/taskcluster/gecko_taskgraph/manifests/firefox_candidates.yml
new file mode 100644
index 0000000000..e8d7061c78
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/manifests/firefox_candidates.yml
@@ -0,0 +1,430 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+# This file contains exhaustive information about all the release artifacs that
+# are needed within a type of release.
+#
+# Structure
+# --------
+# `s3_bucket_paths` -- prefix to be used per product to correctly access our S3 buckets
+# `default_locales` -- list of locales to be used when composing upstream artifacts or the list of
+# destinations. If given an empty locale, it uses these locales instead.
+# `tasktype_map` -- mapping between task reference and task type, particularly usefule when
+# composing the upstreamArtifacts for scriptworker.
+# `platform_names` -- various platform mappings used in reckoning artifacts or other paths
+# `default` -- a default entry, which the mappings extend and override in such a way that
+# final path full-destinations will be a concatenation of the following:
+# `s3_bucket_paths`, `destinations`, `locale_prefix`, `pretty_name`
+# `from` -- specifies the dependency(ies) from which to expect the particular artifact
+# `all_locales` -- boolean argument to specify whether that particular artifact is to be expected
+# for all locales or just the default one
+# `description` -- brief summary of what that artifact is
+# `locale_prefix` -- prefix to be used in the final destination paths, whether that's for default locale or not
+# `source_path_modifier` -- any parent dir that might be used in between artifact prefix and filename at source location
+# for example `public/build` vs `public/build/ach/`.
+# `destinations` -- final list of directories where to push the artifacts in S3
+# `pretty_name` -- the final name the artifact will have at destination
+# `checksums_path` -- the name to identify one artifact within the checksums file
+# `not_for_platforms` -- filtering option to avoid associating an artifact with a specific platform
+# `only_for_platforms` -- filtering option to exclusively include the association of an artifact for a specific platform
+# `partials_only` -- filtering option to avoid associating an artifact unless this flag is present
+# `update_balrog_manifest`-- flag needed downstream in beetmover jobs to reckon the balrog manifest
+# `from_buildid` -- flag needed downstream in beetmover jobs to reckon the balrog manifest
+
+s3_bucket_paths:
+ by-platform:
+ .*devedition.*:
+ - pub/devedition/candidates
+ default:
+ - pub/firefox/candidates
+default_locales:
+ - en-US
+tasktype_map:
+ build: build
+ signing: signing
+ mar-signing: signing
+ partials-signing: signing
+ repackage: repackage
+ repackage-deb: repackage
+ repackage-deb-l10n: repackage
+ repackage-signing: repackage
+ repackage-signing-msi: repackage
+ repackage-signing-shippable-l10n-msix: signing
+ langpack-copy: scriptworker
+ attribution: build
+ attribution-l10n: build
+platform_names:
+ path_platform:
+ by-platform:
+ linux-shippable: 'linux-i686'
+ linux-devedition: 'linux-i686'
+ linux64-shippable: 'linux-x86_64'
+ linux64-devedition: 'linux-x86_64'
+ linux64-asan-reporter-shippable: 'linux-x86_64-asan-reporter'
+ macosx64-shippable: 'mac'
+ macosx64-devedition: 'mac'
+ win32-shippable: 'win32'
+ win32-devedition: 'win32'
+ win64-shippable: 'win64'
+ win64-devedition: 'win64'
+ win64-aarch64-shippable: 'win64-aarch64'
+ win64-aarch64-devedition: 'win64-aarch64'
+ win64-asan-reporter-shippable: 'win64-asan-reporter'
+ tools_platform:
+ by-platform:
+ linux-shippable: 'linux'
+ linux-devedition: 'linux-devedition'
+ linux64-shippable: 'linux64'
+ linux64-devedition: 'linux64-devedition'
+ linux64-asan-reporter-shippable: 'linux-x86_64-asan-reporter'
+ macosx64-shippable: 'macosx64'
+ macosx64-devedition: 'macosx64-devedition'
+ win32-shippable: 'win32'
+ win32-devedition: 'win32-devedition'
+ win64-shippable: 'win64'
+ win64-devedition: 'win64-devedition'
+ win64-aarch64-shippable: 'win64-aarch64'
+ win64-aarch64-devedition: 'win64-aarch64-devedition'
+ win64-asan-reporter-shippable: 'win64-asan-reporter'
+ filename_platform:
+ by-platform:
+ linux-shippable: 'linux'
+ linux-devedition: 'linux'
+ linux64-shippable: 'linux64'
+ linux64-devedition: 'linux64'
+ linux64-asan-reporter-shippable: 'linux-x86_64-asan-reporter'
+ macosx64-shippable: 'macosx64'
+ macosx64-devedition: 'macosx64'
+ win32-shippable: 'win32'
+ win32-devedition: 'win32'
+ win64-shippable: 'win64'
+ win64-devedition: 'win64'
+ win64-aarch64-shippable: 'win64_aarch64'
+ win64-aarch64-devedition: 'win64_aarch64'
+ win64-asan-reporter-shippable: 'win64-asan-reporter'
+
+default: &default
+ from:
+ - build
+ all_locales: false
+ description: "TO_BE_OVERRIDDEN"
+ locale_prefix: '${locale}/'
+ source_path_modifier:
+ by-locale:
+ default: '${locale}'
+ en-US: ''
+ destinations:
+ - ${version}-candidates/build${build_number}/${path_platform}
+
+mapping:
+ buildhub.json:
+ <<: *default
+ all_locales: false
+ description: "Build related information to be consumed by Buildhub service"
+ pretty_name: buildhub.json
+ checksums_path: ${path_platform}/${locale}/buildhub.json
+ target.common.tests.tar.gz:
+ <<: *default
+ description: "Mixture of reftests, mochitests, UI and others, commonly bundled together in a test suite"
+ pretty_name: firefox-${version}.common.tests.tar.gz
+ checksums_path: ${path_platform}/${locale}/firefox-${version}.common.tests.tar.gz
+ target.cppunittest.tests.tar.gz:
+ <<: *default
+ description: "C++ unittests related in-tree test infrastructure"
+ pretty_name: firefox-${version}.cppunittest.tests.tar.gz
+ checksums_path: ${path_platform}/${locale}/firefox-${version}.cppunittest.tests.tar.gz
+ target.crashreporter-symbols.zip:
+ <<: *default
+ description: "Crashreporter symbols to be consumed by Socorro"
+ pretty_name: firefox-${version}.crashreporter-symbols.zip
+ checksums_path: ${path_platform}/${locale}/firefox-${version}.crashreporter-symbols.zip
+ target.json:
+ <<: *default
+ description: "Various compile and moz_app flags baked together in a json file"
+ pretty_name: firefox-${version}.json
+ checksums_path: ${path_platform}/${locale}/firefox-${version}.json
+ target.mochitest.tests.tar.gz:
+ <<: *default
+ description: "Results for running the mochitest testing framework via Javascript function calls"
+ pretty_name: firefox-${version}.mochitest.tests.tar.gz
+ checksums_path: ${path_platform}/${locale}/firefox-${version}.mochitest.tests.tar.gz
+ target.mozinfo.json:
+ <<: *default
+ description: "Various compile and moz_app flags baked together in a json file"
+ pretty_name: firefox-${version}.mozinfo.json
+ checksums_path: ${path_platform}/${locale}/firefox-${version}.mozinfo.json
+ target.reftest.tests.tar.gz:
+ <<: *default
+ description: "Results for running the reftest testing framework via display of two Web pages comparison"
+ pretty_name: firefox-${version}.reftest.tests.tar.gz
+ checksums_path: ${path_platform}/${locale}/firefox-${version}.reftest.tests.tar.gz
+ target.talos.tests.tar.gz:
+ <<: *default
+ description: "Results for running the talos testing framework to measure performance"
+ pretty_name: firefox-${version}.talos.tests.tar.gz
+ checksums_path: ${path_platform}/${locale}/firefox-${version}.talos.tests.tar.gz
+ target.awsy.tests.tar.gz:
+ <<: *default
+ description: "Results for running the awsy testing framework to track memory usage"
+ pretty_name: firefox-${version}.awsy.tests.tar.gz
+ checksums_path: ${path_platform}/${locale}/firefox-${version}.awsy.tests.tar.gz
+ target.test_packages.json:
+ <<: *default
+ description: "File containing metadata about all other files and testing harnesses specifics"
+ pretty_name: firefox-${version}.test_packages.json
+ checksums_path: ${path_platform}/${locale}/firefox-${version}.test_packages.json
+ target.web-platform.tests.tar.gz:
+ <<: *default
+ description: "Results for running the webplatform testing framework to cover standard Web platform features"
+ pretty_name: firefox-${version}.web-platform.tests.tar.gz
+ checksums_path: ${path_platform}/${locale}/firefox-${version}.web-platform.tests.tar.gz
+ target.xpcshell.tests.tar.gz:
+ <<: *default
+ description: "Results for running the xpcshell testing framework to enable XPConnect console application"
+ pretty_name: firefox-${version}.xpcshell.tests.tar.gz
+ checksums_path: ${path_platform}/${locale}/firefox-${version}.xpcshell.tests.tar.gz
+ target_info.txt:
+ <<: *default
+ description: "File containing the buildID"
+ locale_prefix: ''
+ pretty_name: ${filename_platform}_info.txt
+ checksums_path: ${filename_platform}_info.txt
+ destinations:
+ - ${version}-candidates/build${build_number}
+ mozharness.zip:
+ <<: *default
+ description: "File containing the mozharness set of scripts and configuration used by various automation tools"
+ pretty_name: mozharness.zip
+ checksums_path: ${path_platform}/${locale}/mozharness.zip
+ target.jsshell.zip:
+ <<: *default
+ description: "Set of shells to allow test snippets of Javascript code without needing to reload the page"
+ locale_prefix: ''
+ pretty_name: jsshell-${path_platform}.zip
+ checksums_path: jsshell/jsshell-${path_platform}.zip
+ destinations:
+ - ${version}-candidates/build${build_number}/jsshell
+ target.langpack.xpi:
+ <<: *default
+ all_locales: true
+ description: "Localized repack that grabs a packaged en-US Firefox and repackages it as locale-specific Firefox"
+ locale_prefix: ''
+ from:
+ - langpack-copy
+ - signing
+ only_for_platforms:
+ - linux-shippable
+ - linux64-shippable
+ - linux64-devedition
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ pretty_name: ${locale}.xpi
+ checksums_path: ${path_platform}/xpi/${locale}.xpi
+ destinations:
+ - ${version}-candidates/build${build_number}/${path_platform}/xpi
+ target.langpack.deb:
+ <<: *default
+ all_locales: true
+ description: "langpack.xpi repackaged as a .deb"
+ locale_prefix: ''
+ from:
+ - repackage-deb-l10n
+ only_for_platforms:
+ - linux-shippable
+ - linux64-shippable
+ - linux-devedition
+ - linux64-devedition
+ pretty_name: ${locale}.deb
+ checksums_path: ${path_platform}/deb-l10n/${locale}.deb
+ destinations:
+ - ${version}-candidates/build${build_number}/${path_platform}/deb-l10n
+ update_balrog_manifest: false
+ mar:
+ <<: *default
+ description: "Alongside `mbsdiff`, a tool used to generate partials"
+ locale_prefix: ''
+ source_path_modifier: 'host/bin'
+ pretty_name: ${tools_platform}/mar
+ checksums_path: mar-tools/${tools_platform}/mar
+ not_for_platforms:
+ - win32-shippable
+ - win64-shippable
+ - win64-aarch64-shippable
+ - win32-devedition
+ - win64-devedition
+ - win64-aarch64-devedition
+ destinations:
+ - ${version}-candidates/build${build_number}/mar-tools
+ mbsdiff:
+ <<: *default
+ description: "Alongside `mar`, a tool used to generate partials"
+ locale_prefix: ''
+ source_path_modifier: 'host/bin'
+ pretty_name: ${tools_platform}/mbsdiff
+ checksums_path: mar-tools/${tools_platform}/mbsdiff
+ not_for_platforms:
+ - win32-shippable
+ - win64-shippable
+ - win64-aarch64-shippable
+ - win32-devedition
+ - win64-devedition
+ - win64-aarch64-devedition
+ destinations:
+ - ${version}-candidates/build${build_number}/mar-tools
+ target.tar.bz2:
+ <<: *default
+ description: "Main installer for Linux platforms"
+ all_locales: true
+ from:
+ - signing
+ only_for_platforms:
+ - linux-shippable
+ - linux64-shippable
+ - linux-devedition
+ - linux64-devedition
+ pretty_name: firefox-${version}.tar.bz2
+ checksums_path: ${path_platform}/${locale}/firefox-${version}.tar.bz2
+ target.tar.bz2.asc:
+ <<: *default
+ description: "Detached signature for the checksums file"
+ all_locales: true
+ from:
+ - signing
+ only_for_platforms:
+ - linux-shippable
+ - linux64-shippable
+ - linux-devedition
+ - linux64-devedition
+ pretty_name: firefox-${version}.tar.bz2.asc
+ checksums_path: ${path_platform}/${locale}/firefox-${version}.tar.bz2.asc
+ target.pkg:
+ <<: *default
+ description: "Main package installer for Mac OS X platforms"
+ all_locales: true
+ from:
+ - signing
+ only_for_platforms:
+ - macosx64-shippable
+ pretty_name: Firefox ${version}.pkg
+ checksums_path: ${path_platform}/${locale}/Firefox ${version}.pkg
+ target.dmg:
+ <<: *default
+ description: "Main package disk image for Mac OS X platforms"
+ all_locales: true
+ from:
+ - repackage
+ only_for_platforms:
+ - macosx64-shippable
+ - macosx64-devedition
+ pretty_name: Firefox ${version}.dmg
+ checksums_path: ${path_platform}/${locale}/Firefox ${version}.dmg
+ target.zip:
+ <<: *default
+ description: "Main package installer for Windows platforms"
+ all_locales: true
+ from:
+ - signing
+ only_for_platforms:
+ - win64-shippable
+ - win32-shippable
+ - win64-aarch64-shippable
+ - win64-devedition
+ - win32-devedition
+ - win64-aarch64-devedition
+ pretty_name: firefox-${version}.zip
+ checksums_path: ${path_platform}/${locale}/firefox-${version}.zip
+ target.installer.exe:
+ <<: *default
+ description: "Main installer for Windows platforms"
+ all_locales: true
+ source_path_modifier: ''
+ from:
+ - attribution
+ - attribution-l10n
+ only_for_platforms:
+ - win64-shippable
+ - win32-shippable
+ - win64-aarch64-shippable
+ - win64-devedition
+ - win32-devedition
+ - win64-aarch64-devedition
+ pretty_name: Firefox Setup ${version}.exe
+ checksums_path: ${path_platform}/${locale}/Firefox Setup ${version}.exe
+ target.stub-installer.exe:
+ <<: *default
+ description: "Stub installer for Win32 platforms"
+ all_locales: true
+ source_path_modifier: ''
+ from:
+ - attribution
+ - attribution-l10n
+ only_for_platforms:
+ - win32-shippable
+ - win32-devedition
+ pretty_name: Firefox Installer.exe
+ checksums_path: ${path_platform}/${locale}/Firefox Installer.exe
+ target.installer.msi:
+ <<: *default
+ description: "Windows installer for MSI platform"
+ all_locales: true
+ from:
+ - repackage-signing-msi
+ only_for_platforms:
+ - win64-shippable
+ - win32-shippable
+ - win64-devedition
+ - win32-devedition
+ pretty_name: Firefox Setup ${version}.msi
+ checksums_path: ${path_platform}/${locale}/Firefox Setup ${version}.msi
+ target.installer.msix:
+ <<: *default
+ description: "Windows MSIX installer"
+ from:
+ - repackage-signing-shippable-l10n-msix
+ only_for_platforms:
+ - win64-shippable
+ - win32-shippable
+ - win64-devedition
+ - win32-devedition
+ locale_prefix: 'multi/'
+ pretty_name: Firefox Setup ${version}.msix
+ checksums_path: ${path_platform}/multi/Firefox Setup ${version}.msix
+ target.complete.mar:
+ <<: *default
+ description: "Complete MAR to serve as updates"
+ all_locales: true
+ from:
+ - mar-signing
+ pretty_name: firefox-${version}.complete.mar
+ checksums_path: update/${path_platform}/${locale}/firefox-${version}.complete.mar
+ update_balrog_manifest: true
+ destinations:
+ - ${version}-candidates/build${build_number}/update/${path_platform}
+ target.deb:
+ <<: *default
+ description: "Firefox as a .deb package"
+ only_for_platforms:
+ - linux-shippable
+ - linux64-shippable
+ - linux-devedition
+ - linux64-devedition
+ pretty_name: firefox-${version}.deb
+ checksums_path: ${path_platform}/${locale}/firefox-${version}.deb
+ from:
+ - repackage-deb
+ update_balrog_manifest: false
+ ${partial}:
+ <<: *default
+ description: "Partials MAR files to serve as updates"
+ all_locales: true
+ from:
+ - partials-signing
+ partials_only: true
+ pretty_name: firefox-${previous_version}-${version}.partial.mar
+ checksums_path: update/${path_platform}/${locale}/firefox-${previous_version}-${version}.partial.mar
+ update_balrog_manifest: true
+ from_buildid: ${from_buildid}
+ destinations:
+ - ${version}-candidates/build${build_number}/update/${path_platform}
diff --git a/taskcluster/gecko_taskgraph/manifests/firefox_candidates_checksums.yml b/taskcluster/gecko_taskgraph/manifests/firefox_candidates_checksums.yml
new file mode 100644
index 0000000000..43ba4cbf15
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/manifests/firefox_candidates_checksums.yml
@@ -0,0 +1,94 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+# This file contains exhaustive information about all the release artifacs that
+# are needed within a type of release.
+#
+# Structure
+# --------
+# `s3_bucket_paths` -- prefix to be used per product to correctly access our S3 buckets
+# `default_locales` -- list of locales to be used when composing upstream artifacts or the list of
+# destinations. If given an empty locale, it uses these locales instead.
+# `tasktype_map` -- mapping between task reference and task type, particularly usefule when
+# composing the upstreamArtifacts for scriptworker.
+# `platform_names` -- various platform mappings used in reckoning artifacts or other paths
+# `default` -- a default entry, which the mappings extend and override in such a way that
+# final path full-destinations will be a concatenation of the following:
+# `s3_bucket_paths`, `destinations`, `locale_prefix`, `pretty_name`
+# `from` -- specifies the dependency(ies) from which to expect the particular artifact
+# `all_locales` -- boolean argument to specify whether that particular artifact is to be expected
+# for all locales or just the default one
+# `description` -- brief summary of what that artifact is
+# `locale_prefix` -- prefix to be used in the final destination paths, whether that's for default locale or not
+# `source_path_modifier` -- any parent dir that might be used in between artifact prefix and filename at source location
+# for example `public/build` vs `public/build/ach/`.
+# `destinations` -- final list of directories where to push the artifacts in S3
+# `pretty_name` -- the final name the artifact will have at destination
+# `checksums_path` -- the name to identify one artifact within the checksums file
+# `not_for_platforms` -- filtering option to avoid associating an artifact with a specific platform
+# `only_for_platforms` -- filtering option to exclusively include the association of an artifact for a specific platform
+# `partials_only` -- filtering option to avoid associating an artifact unless this flag is present
+# `update_balrog_manifest`-- flag needed downstream in beetmover jobs to reckon the balrog manifest
+# `from_buildid` -- flag needed downstream in beetmover jobs to reckon the balrog manifest
+
+s3_bucket_paths:
+ by-platform:
+ .*devedition.*:
+ - pub/devedition/candidates
+ default:
+ - pub/firefox/candidates
+default_locales:
+ - en-US
+tasktype_map:
+ beetmover-repackage: beetmover
+ release-beetmover-signed-langpacks: signing
+platform_names:
+ path_platform:
+ by-platform:
+ linux-shippable: 'linux-i686'
+ linux-devedition: 'linux-i686'
+ linux64-shippable: 'linux-x86_64'
+ linux64-devedition: 'linux-x86_64'
+ linux64-asan-reporter-shippable: 'linux-x86_64-asan-reporter'
+ macosx64-shippable: 'mac'
+ macosx64-devedition: 'mac'
+ win32-shippable: 'win32'
+ win32-devedition: 'win32'
+ win64-shippable: 'win64'
+ win64-devedition: 'win64'
+ win64-aarch64-shippable: 'win64-aarch64'
+ win64-aarch64-devedition: 'win64-aarch64'
+ win64-asan-reporter-shippable: 'win64-asan-reporter'
+ linux: 'linux-i686'
+ linux64: 'linux-x86_64'
+ macosx64: 'mac'
+ win32: 'win32'
+ win64: 'win64'
+
+default: &default
+ from:
+ - beetmover-repackage
+ all_locales: true
+ description: "TO_BE_OVERRIDDEN"
+ locale_prefix: '${locale}/'
+ source_path_modifier: ''
+ destinations:
+ - ${version}-candidates/build${build_number}/beetmover-checksums/${path_platform}
+
+mapping:
+ target.checksums:
+ <<: *default
+ description: "Checksums file containing size, hash, sha algorithm and filename"
+ pretty_name: firefox-${version}.checksums.beet
+ checksums_path: beetmover-checksums/${path_platform}/${locale}/firefox-${version}.checksums.beet
+ target-langpack.checksums:
+ <<: *default
+ description: "Checksums file containing size, hash, sha algorithm and filename for the langpack"
+ locale_prefix: ''
+ from:
+ - release-beetmover-signed-langpacks
+ pretty_name: ${locale}.checksums.beet
+ checksums_path: beetmover-checksums/${path_platform}/xpi/${locale}.checksums.beet
+ destinations:
+ - ${version}-candidates/build${build_number}/beetmover-checksums/${path_platform}/xpi
diff --git a/taskcluster/gecko_taskgraph/manifests/firefox_nightly.yml b/taskcluster/gecko_taskgraph/manifests/firefox_nightly.yml
new file mode 100644
index 0000000000..d2e4f6adf0
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/manifests/firefox_nightly.yml
@@ -0,0 +1,520 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+# This file contains exhaustive information about all the release artifacs that
+# are needed within a type of release.
+#
+# Structure
+# --------
+# `s3_bucket_paths` -- prefix to be used per product to correctly access our S3 buckets
+# `default_locales` -- list of locales to be used when composing upstream artifacts or the list of
+# destinations. If given an empty locale, it uses these locales instead.
+# `tasktype_map` -- mapping between task reference and task type, particularly usefule when
+# composing the upstreamArtifacts for scriptworker.
+# `platform_names` -- various platform mappings used in reckoning artifacts or other paths
+# `default` -- a default entry, which the mappings extend and override in such a way that
+# final path full-destinations will be a concatenation of the following:
+# `s3_bucket_paths`, `destinations`, `locale_prefix`, `pretty_name`
+# `from` -- specifies the dependency(ies) from which to expect the particular artifact
+# `all_locales` -- boolean argument to specify whether that particular artifact is to be expected
+# for all locales or just the default one
+# `description` -- brief summary of what that artifact is
+# `locale_prefix` -- prefix to be used in the final destination paths, whether that's for default locale or not
+# `source_path_modifier` -- any parent dir that might be used in between artifact prefix and filename at source location
+# for example `public/build` vs `public/build/ach/`.
+# `destinations` -- final list of directories where to push the artifacts in S3
+# `pretty_name` -- the final name the artifact will have at destination
+# `checksums_path` -- the name to identify one artifact within the checksums file
+# `not_for_platforms` -- filtering option to avoid associating an artifact with a specific platform
+# `only_for_platforms` -- filtering option to exclusively include the association of an artifact for a specific platform
+# `partials_only` -- filtering option to avoid associating an artifact unless this flag is present
+# `update_balrog_manifest`-- flag needed downstream in beetmover jobs to reckon the balrog manifest
+# `from_buildid` -- flag needed downstream in beetmover jobs to reckon the balrog manifest
+
+s3_bucket_paths:
+ - pub/firefox/nightly
+default_locales:
+ - en-US
+tasktype_map:
+ build: build
+ signing: signing
+ mar-signing: signing
+ partials-signing: signing
+ repackage: repackage
+ repackage-deb: repackage
+ repackage-deb-l10n: repackage
+ repackage-signing: repackage
+ repackage-signing-msi: repackage
+ repackage-signing-shippable-l10n-msix: signing
+ langpack-copy: signing
+ attribution: build
+ attribution-l10n: build
+platform_names:
+ filename_platform:
+ by-platform:
+ linux-shippable: 'linux-i686'
+ linux-devedition: 'linux-i686'
+ linux64-shippable: 'linux-x86_64'
+ linux64-devedition: 'linux-x86_64'
+ linux64-asan-reporter-shippable: 'linux-x86_64-asan-reporter'
+ macosx64-shippable: 'mac'
+ macosx64-devedition: 'mac'
+ win32-shippable: 'win32'
+ win32-devedition: 'win32'
+ win64-shippable: 'win64'
+ win64-devedition: 'win64'
+ win64-aarch64-shippable: 'win64-aarch64'
+ win64-aarch64-devedition: 'win64-aarch64'
+ win64-asan-reporter-shippable: 'win64-asan-reporter'
+ stage_platform:
+ by-platform:
+ linux-shippable: 'linux'
+ linux-devedition: 'linux'
+ linux64-asan-reporter-shippable: 'linux64-asan-reporter'
+ linux64-shippable: 'linux64'
+ linux64-devedition: 'linux64'
+ macosx64-shippable: 'macosx64'
+ macosx64-devedition: 'macosx64'
+ win32-shippable: 'win32'
+ win32-devedition: 'win32'
+ win64-shippable: 'win64'
+ win64-devedition: 'win64'
+ win64-aarch64-shippable: 'win64-aarch64'
+ win64-aarch64-devedition: 'win64-aarch64'
+ win64-asan-reporter-shippable: 'win64-asan-reporter'
+
+default: &default
+ from:
+ - build
+ all_locales: false
+ description: "TO_BE_OVERRIDDEN"
+ locale_prefix: ''
+ source_path_modifier:
+ by-locale:
+ default: '${locale}'
+ en-US: ''
+ destinations:
+ by-locale:
+ en-US:
+ - ${year}/${month}/${upload_date}-${branch}
+ - latest-${branch}
+ default:
+ - ${year}/${month}/${upload_date}-${branch}-l10n
+ - latest-${branch}-l10n
+
+mapping:
+ buildhub.json:
+ <<: *default
+ description: "Build related information to be consumed by Buildhub service"
+ pretty_name: firefox-${version}.${locale}.${filename_platform}.buildhub.json
+ checksums_path: firefox-${version}.${locale}.${filename_platform}.buildhub.json
+ destinations:
+ by-locale:
+ en-US:
+ - ${year}/${month}/${upload_date}-${branch}
+ - latest-${branch}
+ - latest-${branch}-l10n
+ default:
+ - ${year}/${month}/${upload_date}-${branch}-l10n
+ - latest-${branch}-l10n
+ KEY:
+ <<: *default
+ from:
+ - signing
+ description: "Public GPG Key"
+ pretty_name: KEY
+ checksums_path: KEY
+ only_for_platforms:
+ - linux64-shippable
+ destinations:
+ - ${year}/${month}/${upload_date}-${branch}
+ - latest-${branch}
+ target.common.tests.tar.gz:
+ <<: *default
+ description: "Mixture of reftests, mochitests, UI and others, commonly bundled together in a test suite"
+ pretty_name: firefox-${version}.${locale}.${filename_platform}.common.tests.tar.gz
+ checksums_path: firefox-${version}.${locale}.${filename_platform}.common.tests.tar.gz
+ target.cppunittest.tests.tar.gz:
+ <<: *default
+ description: "C++ unittests related in-tree test infrastructure"
+ pretty_name: firefox-${version}.${locale}.${filename_platform}.cppunittest.tests.tar.gz
+ checksums_path: firefox-${version}.${locale}.${filename_platform}.cppunittest.tests.tar.gz
+ target.crashreporter-symbols.zip:
+ <<: *default
+ description: "Crashreporter symbols to be consumed by Socorro"
+ pretty_name: firefox-${version}.${locale}.${filename_platform}.crashreporter-symbols.zip
+ checksums_path: firefox-${version}.${locale}.${filename_platform}.crashreporter-symbols.zip
+ not_for_platforms:
+ - linux64-asan-reporter-shippable
+ - win64-asan-reporter-shippable
+ target.json:
+ <<: *default
+ description: "Various compile and moz_app flags baked together in a json file"
+ pretty_name: firefox-${version}.${locale}.${filename_platform}.json
+ checksums_path: firefox-${version}.${locale}.${filename_platform}.json
+ target.mochitest.tests.tar.gz:
+ <<: *default
+ description: "Results for running the mochitest testing framework via Javascript function calls"
+ pretty_name: firefox-${version}.${locale}.${filename_platform}.mochitest.tests.tar.gz
+ checksums_path: firefox-${version}.${locale}.${filename_platform}.mochitest.tests.tar.gz
+ target.mozinfo.json:
+ <<: *default
+ description: "Various compile and moz_app flags baked together in a json file"
+ pretty_name: firefox-${version}.${locale}.${filename_platform}.mozinfo.json
+ checksums_path: firefox-${version}.${locale}.${filename_platform}.mozinfo.json
+ target.reftest.tests.tar.gz:
+ <<: *default
+ description: "Results for running the reftest testing framework via display of two Web pages comparison"
+ pretty_name: firefox-${version}.${locale}.${filename_platform}.reftest.tests.tar.gz
+ checksums_path: firefox-${version}.${locale}.${filename_platform}.reftest.tests.tar.gz
+ target.talos.tests.tar.gz:
+ <<: *default
+ description: "Results for running the talos testing framework to measure performance"
+ pretty_name: firefox-${version}.${locale}.${filename_platform}.talos.tests.tar.gz
+ checksums_path: firefox-${version}.${locale}.${filename_platform}.talos.tests.tar.gz
+ target.awsy.tests.tar.gz:
+ <<: *default
+ description: "Results for running the awsy testing framework to track memory usage"
+ pretty_name: firefox-${version}.${locale}.${filename_platform}.awsy.tests.tar.gz
+ checksums_path: firefox-${version}.${locale}.${filename_platform}.awsy.tests.tar.gz
+ target.test_packages.json:
+ <<: *default
+ description: "File containing metadata about all other files and testing harnesses specifics"
+ pretty_name: firefox-${version}.${locale}.${filename_platform}.test_packages.json
+ checksums_path: firefox-${version}.${locale}.${filename_platform}.test_packages.json
+ target.txt:
+ <<: *default
+ description: "File containing buildid and revision"
+ pretty_name: firefox-${version}.${locale}.${filename_platform}.txt
+ checksums_path: firefox-${version}.${locale}.${filename_platform}.txt
+ target.web-platform.tests.tar.gz:
+ <<: *default
+ description: "Results for running the webplatform testing framework to cover standard Web platform features"
+ pretty_name: firefox-${version}.${locale}.${filename_platform}.web-platform.tests.tar.gz
+ checksums_path: firefox-${version}.${locale}.${filename_platform}.web-platform.tests.tar.gz
+ target.xpcshell.tests.tar.gz:
+ <<: *default
+ description: "Results for running the xpcshell testing framework to enable XPConnect console application"
+ pretty_name: firefox-${version}.${locale}.${filename_platform}.xpcshell.tests.tar.gz
+ checksums_path: firefox-${version}.${locale}.${filename_platform}.xpcshell.tests.tar.gz
+ target_info.txt:
+ <<: *default
+ description: "File containing the buildID"
+ pretty_name: firefox-${version}.${locale}.${filename_platform}_info.txt
+ checksums_path: firefox-${version}.${locale}.${filename_platform}_info.txt
+ mozharness.zip:
+ <<: *default
+ description: "File containing the mozharness set of scripts and configuration used by various automation tools"
+ pretty_name: mozharness.zip
+ checksums_path: mozharness.zip
+ target.jsshell.zip:
+ <<: *default
+ description: "Set of shells to allow test snippets of Javascript code without needing to reload the page"
+ pretty_name: jsshell-${filename_platform}.zip
+ checksums_path: jsshell-${filename_platform}.zip
+ not_for_platforms:
+ - linux64-asan-reporter-shippable
+ - win64-asan-reporter-shippable
+ target.langpack.xpi:
+ <<: *default
+ all_locales: true
+ description: "Localized repack that grabs a packaged en-US Firefox and repackages it as locale-specific Firefox"
+ from:
+ - langpack-copy
+ - signing
+ only_for_platforms:
+ - linux-shippable
+ - linux64-shippable
+ - macosx64-shippable
+ - win64-shippable
+ - win32-shippable
+ - win64-shippable
+ - win64-aarch64-shippable
+ - win64-asan-reporter-shippable
+ - linux64-asan-reporter-shippable
+ pretty_name: firefox-${version}.${locale}.langpack.xpi
+ checksums_path: firefox-${version}.${locale}.langpack.xpi
+ destinations:
+ by-locale:
+ en-US:
+ - ${year}/${month}/${upload_date}-${branch}
+ - latest-${branch}
+ default:
+ - ${year}/${month}/${upload_date}-${branch}-l10n/${filename_platform}/xpi
+ - latest-${branch}-l10n/${filename_platform}/xpi
+ target.langpack.deb:
+ <<: *default
+ all_locales: true
+ description: "langpack.xpi repackaged as a .deb"
+ from:
+ - repackage-deb-l10n
+ only_for_platforms:
+ - linux-shippable
+ - linux64-shippable
+ - linux-devedition
+ - linux64-devedition
+ pretty_name: firefox-${version}.${locale}.langpack.deb
+ checksums_path: firefox-${version}.${locale}.langpack.deb
+ destinations:
+ by-locale:
+ en-US:
+ - ${year}/${month}/${upload_date}-${branch}
+ - latest-${branch}
+ default:
+ - ${year}/${month}/${upload_date}-${branch}-l10n/${filename_platform}/deb-l10n
+ - latest-${branch}-l10n/${filename_platform}/deb-l10n
+ mar:
+ <<: *default
+ description: "Alongside `mbsdiff`, a tool used to generate partials"
+ source_path_modifier: 'host/bin'
+ pretty_name: mar
+ checksums_path: mar
+ not_for_platforms:
+ - win32-shippable
+ - win64-shippable
+ - win64-aarch64-shippable
+ - win64-asan-reporter-shippable
+ destinations:
+ - ${year}/${month}/${upload_date}-${branch}/mar-tools/${stage_platform}
+ - latest-${branch}/mar-tools/${stage_platform}
+ mbsdiff:
+ <<: *default
+ description: "Alongside `mar`, a tool used to generate partials"
+ source_path_modifier: 'host/bin'
+ pretty_name: mbsdiff
+ checksums_path: mbsdiff
+ not_for_platforms:
+ - win32-shippable
+ - win64-shippable
+ - win64-aarch64-shippable
+ - win64-asan-reporter-shippable
+ destinations:
+ - ${year}/${month}/${upload_date}-${branch}/mar-tools/${stage_platform}
+ - latest-${branch}/mar-tools/${stage_platform}
+ target.tar.bz2:
+ <<: *default
+ description: "Main installer for Linux platforms"
+ all_locales: true
+ from:
+ - signing
+ only_for_platforms:
+ - linux-shippable
+ - linux64-shippable
+ - linux64-asan-reporter-shippable
+ pretty_name: firefox-${version}.${locale}.${filename_platform}.tar.bz2
+ checksums_path: firefox-${version}.${locale}.${filename_platform}.tar.bz2
+ destinations:
+ by-locale:
+ en-US:
+ - ${year}/${month}/${upload_date}-${branch}
+ - latest-${branch}
+ - latest-${branch}-l10n
+ default:
+ - ${year}/${month}/${upload_date}-${branch}-l10n
+ - latest-${branch}-l10n
+ target.tar.bz2.asc:
+ <<: *default
+ description: "Detached signature for the checksums file"
+ all_locales: true
+ from:
+ - signing
+ only_for_platforms:
+ - linux-shippable
+ - linux64-shippable
+ - linux64-asan-reporter-shippable
+ pretty_name: firefox-${version}.${locale}.${filename_platform}.tar.bz2.asc
+ checksums_path: firefox-${version}.${locale}.${filename_platform}.tar.bz2.asc
+ destinations:
+ by-locale:
+ en-US:
+ - ${year}/${month}/${upload_date}-${branch}
+ - latest-${branch}
+ - latest-${branch}-l10n
+ default:
+ - ${year}/${month}/${upload_date}-${branch}-l10n
+ - latest-${branch}-l10n
+ target.pkg:
+ <<: *default
+ description: "Main package installer for Mac OS X platforms"
+ all_locales: true
+ from:
+ - signing
+ only_for_platforms:
+ - macosx64-shippable
+ pretty_name: firefox-${version}.${locale}.${filename_platform}.pkg
+ checksums_path: firefox-${version}.${locale}.${filename_platform}.pkg
+ destinations:
+ by-locale:
+ en-US:
+ - ${year}/${month}/${upload_date}-${branch}
+ - latest-${branch}
+ - latest-${branch}-l10n
+ default:
+ - ${year}/${month}/${upload_date}-${branch}-l10n
+ - latest-${branch}-l10n
+ target.dmg:
+ <<: *default
+ description: "Main package disk image for Mac OS X platforms"
+ all_locales: true
+ from:
+ - repackage
+ only_for_platforms:
+ - macosx64-shippable
+ pretty_name: firefox-${version}.${locale}.${filename_platform}.dmg
+ checksums_path: firefox-${version}.${locale}.${filename_platform}.dmg
+ destinations:
+ by-locale:
+ en-US:
+ - ${year}/${month}/${upload_date}-${branch}
+ - latest-${branch}
+ - latest-${branch}-l10n
+ default:
+ - ${year}/${month}/${upload_date}-${branch}-l10n
+ - latest-${branch}-l10n
+ target.zip:
+ <<: *default
+ description: "Main package installer for Windows platforms"
+ all_locales: true
+ from:
+ - signing
+ only_for_platforms:
+ - win64-shippable
+ - win32-shippable
+ - win64-aarch64-shippable
+ - win64-asan-reporter-shippable
+ pretty_name: firefox-${version}.${locale}.${filename_platform}.zip
+ checksums_path: firefox-${version}.${locale}.${filename_platform}.zip
+ target.installer.exe:
+ <<: *default
+ description: "Main installer for Windows platforms"
+ all_locales: true
+ source_path_modifier: ''
+ from:
+ by-platform:
+ win64-asan-reporter-shippable:
+ - repackage-signing
+ default:
+ - attribution
+ - attribution-l10n
+ only_for_platforms:
+ - win64-shippable
+ - win32-shippable
+ - win64-aarch64-shippable
+ - win64-asan-reporter-shippable
+ pretty_name: firefox-${version}.${locale}.${filename_platform}.installer.exe
+ checksums_path: firefox-${version}.${locale}.${filename_platform}.installer.exe
+ destinations:
+ by-locale:
+ en-US:
+ - ${year}/${month}/${upload_date}-${branch}
+ - latest-${branch}
+ - latest-${branch}-l10n
+ default:
+ - ${year}/${month}/${upload_date}-${branch}-l10n
+ - latest-${branch}-l10n
+ target.stub-installer.exe:
+ <<: *default
+ description: "Stub installer for Win32 platforms"
+ all_locales: true
+ source_path_modifier: ''
+ from:
+ - attribution
+ - attribution-l10n
+ only_for_platforms:
+ - win32-shippable
+ pretty_name: Firefox Installer.${locale}.exe
+ checksums_path: Firefox Installer.${locale}.exe
+ destinations:
+ by-locale:
+ en-US:
+ - ${year}/${month}/${upload_date}-${branch}
+ - latest-${branch}
+ - latest-${branch}-l10n
+ default:
+ - ${year}/${month}/${upload_date}-${branch}-l10n
+ - latest-${branch}-l10n
+ target.installer.msi:
+ <<: *default
+ description: "Windows installer for MSI platform"
+ all_locales: true
+ from:
+ - repackage-signing-msi
+ only_for_platforms:
+ - win64-shippable
+ - win32-shippable
+ pretty_name: firefox-${version}.${locale}.${filename_platform}.installer.msi
+ checksums_path: firefox-${version}.${locale}.${filename_platform}.installer.msi
+ destinations:
+ by-locale:
+ en-US:
+ - ${year}/${month}/${upload_date}-${branch}
+ - latest-${branch}
+ - latest-${branch}-l10n
+ default:
+ - ${year}/${month}/${upload_date}-${branch}-l10n
+ - latest-${branch}-l10n
+ target.installer.msix:
+ <<: *default
+ description: "Windows MSIX installer"
+ all_locales: true
+ from:
+ - repackage-signing-shippable-l10n-msix
+ only_for_platforms:
+ - win64-shippable
+ - win32-shippable
+ pretty_name: firefox-${version}.multi.${filename_platform}.installer.msix
+ checksums_path: firefox-${version}.multi.${filename_platform}.installer.msix
+ destinations:
+ - ${year}/${month}/${upload_date}-${branch}
+ - latest-${branch}
+ - latest-${branch}-l10n
+ target.complete.mar:
+ <<: *default
+ description: "The main installer we ship our products baked within"
+ all_locales: true
+ from:
+ - mar-signing
+ pretty_name: firefox-${version}.${locale}.${filename_platform}.complete.mar
+ checksums_path: firefox-${version}.${locale}.${filename_platform}.complete.mar
+ update_balrog_manifest: true
+ destinations:
+ by-locale:
+ en-US:
+ - ${year}/${month}/${upload_date}-${branch}
+ - latest-${branch}
+ - latest-${branch}-l10n
+ default:
+ - ${year}/${month}/${upload_date}-${branch}-l10n
+ - latest-${branch}-l10n
+ target.deb:
+ <<: *default
+ description: "Firefox as a .deb package"
+ from:
+ - repackage-deb
+ only_for_platforms:
+ - linux-shippable
+ - linux64-shippable
+ pretty_name: firefox-${version}.${locale}.${filename_platform}.deb
+ checksums_path: firefox-${version}.${locale}.${filename_platform}.deb
+ update_balrog_manifest: false
+ destinations:
+ - ${year}/${month}/${upload_date}-${branch}
+ - latest-${branch}
+ ${partial}:
+ <<: *default
+ description: "Partials MAR files to serve as updates"
+ all_locales: true
+ from:
+ - partials-signing
+ partials_only: true
+ pretty_name: firefox-${branch}-${version}-${filename_platform}-${locale}-${from_buildid}-${buildid}.partial.mar
+ checksums_path: firefox-${branch}-${version}-${filename_platform}-${locale}-${from_buildid}-${buildid}.partial.mar
+ update_balrog_manifest: true
+ from_buildid: ${from_buildid}
+ destinations:
+ by-locale:
+ en-US:
+ - partials/${year}/${month}/${upload_date}-${branch}
+ default:
+ - partials/${year}/${month}/${upload_date}-${branch}-l10n
diff --git a/taskcluster/gecko_taskgraph/manifests/firefox_nightly_checksums.yml b/taskcluster/gecko_taskgraph/manifests/firefox_nightly_checksums.yml
new file mode 100644
index 0000000000..f1b81572ab
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/manifests/firefox_nightly_checksums.yml
@@ -0,0 +1,59 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+s3_bucket_paths:
+ by-platform:
+ .*devedition.*:
+ - pub/devedition/nightly
+ default:
+ - pub/firefox/nightly
+default_locales: # if given an empty locale, use these locales
+ - en-US
+tasktype_map: # Map task reference to task type.
+ beetmover-repackage: beetmover
+platform_names:
+ filename_platform:
+ by-platform:
+ linux-shippable: 'linux-i686'
+ linux-devedition: 'linux-i686'
+ linux64-shippable: 'linux-x86_64'
+ linux64-devedition: 'linux-x86_64'
+ linux64-asan-reporter-shippable: 'linux-x86_64-asan-reporter'
+ macosx64-shippable: 'mac'
+ macosx64-devedition: 'mac'
+ win32-shippable: 'win32'
+ win32-devedition: 'win32'
+ win64-shippable: 'win64'
+ win64-devedition: 'win64'
+ win64-aarch64-shippable: 'win64-aarch64'
+ win64-aarch64-devedition: 'win64-aarch64'
+ win64-asan-reporter-shippable: 'win64-asan-reporter'
+
+# A default entry, which the mappings below extend and override.
+# Final 'destinations' will be the product of:
+# s3_bucket_paths + destinations + locale_prefix + pretty_name
+default: &default
+ from:
+ - beetmover-repackage
+ all_locales: true
+ description: "TO_BE_OVERRIDDEN"
+ locale_prefix: ''
+ source_path_modifier: ''
+ destinations: # locale_prefix is appended
+ by-locale:
+ en-US:
+ - ${year}/${month}/${upload_date}-${branch}
+ - latest-${branch}
+ - latest-${branch}-l10n
+ default:
+ - ${year}/${month}/${upload_date}-${branch}-l10n
+ - latest-${branch}-l10n
+
+# Configuration for individual files. Extends 'default', above.
+mapping:
+ target.checksums:
+ <<: *default
+ description: "Checksums file containing size, hash, sha algorithm and filename"
+ pretty_name: firefox-${version}.${locale}.${filename_platform}.checksums
+ checksums_path: firefox-${version}.${locale}.${filename_platform}.checksums
diff --git a/taskcluster/gecko_taskgraph/manifests/release_checksums.yml b/taskcluster/gecko_taskgraph/manifests/release_checksums.yml
new file mode 100644
index 0000000000..c11e339958
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/manifests/release_checksums.yml
@@ -0,0 +1,70 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+s3_bucket_paths:
+ by-platform:
+ devedition-release:
+ - pub/devedition/candidates
+ firefox-release:
+ - pub/firefox/candidates
+default_locales: # if given an empty locale, use these locales
+ - en-US
+tasktype_map: # Map task reference to task type.
+ release-generate-checksums: build
+ release-generate-checksums-signing: signing
+
+# A default entry, which the mappings below extend and override.
+# Final 'destinations' will be the product of:
+# s3_bucket_paths + destinations + locale_prefix + pretty_name
+default: &default
+ from:
+ - release-generate-checksums-signing
+ all_locales: true
+ description: "TO_BE_OVERRIDDEN"
+ locale_prefix: ''
+ source_path_modifier: ''
+ destinations: # locale_prefix is appended
+ - ${version}-candidates/build${build_number}
+
+# Configuration for individual files. Extends 'default', above.
+mapping:
+ SHA256SUMMARY:
+ <<: *default
+ description: "Merkle-tree for the release artifacts with sha 256 hashes"
+ from:
+ - release-generate-checksums
+ pretty_name: SHA256SUMMARY
+ checksums_path: SHA256SUMMARY
+ SHA512SUMMARY:
+ <<: *default
+ description: "Merkle-tree for the release artifacts with sha 512 hashes"
+ from:
+ - release-generate-checksums
+ pretty_name: SHA512SUMMARY
+ checksums_path: SHA512SUMMARY
+ KEY:
+ <<: *default
+ description: "Public side of the key that was used to sign the release artifacts"
+ pretty_name: KEY
+ checksums_path: KEY
+ SHA256SUMS:
+ <<: *default
+ description: "Aggregated checksums with main installers details per platform in sha512 hashes"
+ pretty_name: SHA256SUMS
+ checksums_path: SHA256SUMS
+ SHA256SUMS.asc:
+ <<: *default
+ description: "Detached signature for the checksums file"
+ pretty_name: SHA256SUMS.asc
+ checksums_path: SHA256SUMS.asc
+ SHA512SUMS:
+ <<: *default
+ description: "Aggregated checksums with main installers details per platform in sha256 hashes"
+ pretty_name: SHA512SUMS
+ checksums_path: SHA512SUMS
+ SHA512SUMS.asc:
+ <<: *default
+ description: "Detached signature for the checksums file"
+ pretty_name: SHA512SUMS.asc
+ checksums_path: SHA512SUMS.asc
diff --git a/taskcluster/gecko_taskgraph/manifests/source_checksums.yml b/taskcluster/gecko_taskgraph/manifests/source_checksums.yml
new file mode 100644
index 0000000000..0789bcfa93
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/manifests/source_checksums.yml
@@ -0,0 +1,52 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+s3_bucket_paths:
+ by-platform:
+ devedition-source:
+ - pub/devedition/candidates
+ firefox-source:
+ - pub/firefox/candidates
+default_locales: # if given an empty locale, use these locales
+ - en-US
+tasktype_map: # Map task reference to task type.
+ release-source-checksums-signing: signing
+
+# A default entry, which the mappings below extend and override.
+# Final 'destinations' will be the product of:
+# s3_bucket_paths + destinations + locale_prefix + pretty_name
+default: &default
+ from:
+ - release-source-checksums-signing
+ all_locales: false
+ description: "TO_BE_OVERRIDDEN"
+ locale_prefix: ''
+ source_path_modifier: ''
+ destinations: # locale_prefix is appended
+ - ${version}-candidates/build${build_number}/beetmover-checksums/source
+
+# Configuration for individual files. Extends 'default', above.
+mapping:
+ target-source.checksums:
+ <<: *default
+ description: "Checksums file for the source zip files"
+ pretty_name:
+ by-platform:
+ firefox-source: firefox-${version}.checksums.beet
+ devedition-source: firefox-${version}.checksums.beet
+ checksums_path:
+ by-platform:
+ firefox-source: firefox-${version}.checksums.beet
+ devedition-source: firefox-${version}.checksums.beet
+ target-source.checksums.asc:
+ <<: *default
+ description: "Detached signature for the checksums file"
+ pretty_name:
+ by-platform:
+ firefox-source: firefox-${version}.checksums.asc
+ devedition-source: firefox-${version}.checksums.asc
+ checksums_path:
+ by-platform:
+ firefox-source: firefox-${version}.checksums.asc
+ devedition-source: firefox-${version}.checksums.asc
diff --git a/taskcluster/gecko_taskgraph/manifests/source_files.yml b/taskcluster/gecko_taskgraph/manifests/source_files.yml
new file mode 100644
index 0000000000..0f5f5b5250
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/manifests/source_files.yml
@@ -0,0 +1,52 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+---
+s3_bucket_paths:
+ by-platform:
+ devedition-source:
+ - pub/devedition/candidates
+ firefox-source:
+ - pub/firefox/candidates
+default_locales: # if given an empty locale, use these locales
+ - en-US
+tasktype_map: # Map task reference to task type.
+ release-source-signing: signing
+
+# A default entry, which the mappings below extend and override.
+# Final 'destinations' will be the product of:
+# s3_bucket_paths + destinations + locale_prefix + pretty_name
+default: &default
+ from:
+ - release-source-signing
+ all_locales: false
+ description: "TO_BE_OVERRIDDEN"
+ locale_prefix: ''
+ source_path_modifier: ''
+ destinations: # locale_prefix is appended
+ - ${version}-candidates/build${build_number}/source
+
+# Configuration for individual files. Extends 'default', above.
+mapping:
+ source.tar.xz:
+ <<: *default
+ description: "Source file with the in-tree code archived"
+ pretty_name:
+ by-platform:
+ firefox-source: firefox-${version}.source.tar.xz
+ devedition-source: firefox-${version}.source.tar.xz
+ checksums_path:
+ by-platform:
+ firefox-source: source/firefox-${version}.source.tar.xz
+ devedition-source: source/firefox-${version}.source.tar.xz
+ source.tar.xz.asc:
+ <<: *default
+ description: "Detached signature for the source file"
+ pretty_name:
+ by-platform:
+ firefox-source: firefox-${version}.source.tar.xz.asc
+ devedition-source: firefox-${version}.source.tar.xz.asc
+ checksums_path:
+ by-platform:
+ firefox-source: source/firefox-${version}.source.tar.xz.asc
+ devedition-source: source/firefox-${version}.source.tar.xz.asc
diff --git a/taskcluster/gecko_taskgraph/morph.py b/taskcluster/gecko_taskgraph/morph.py
new file mode 100644
index 0000000000..1d03ddaab6
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/morph.py
@@ -0,0 +1,263 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+"""
+Graph morphs are modifications to task-graphs that take place *after* the
+optimization phase.
+
+These graph morphs are largely invisible to developers running `./mach`
+locally, so they should be limited to changes that do not modify the meaning of
+the graph.
+"""
+
+# Note that the translation of `{'task-reference': '..'}` and
+# `artifact-reference` are handled in the optimization phase (since
+# optimization involves dealing with taskIds directly). Similarly,
+# `{'relative-datestamp': '..'}` is handled at the last possible moment during
+# task creation.
+
+
+import copy
+import logging
+import os
+import re
+
+from slugid import nice as slugid
+from taskgraph.graph import Graph
+from taskgraph.morph import register_morph
+from taskgraph.task import Task
+from taskgraph.taskgraph import TaskGraph
+
+from .util.workertypes import get_worker_type
+
+here = os.path.abspath(os.path.dirname(__file__))
+logger = logging.getLogger(__name__)
+MAX_ROUTES = 10
+
+
+def amend_taskgraph(taskgraph, label_to_taskid, to_add):
+ """Add the given tasks to the taskgraph, returning a new taskgraph"""
+ new_tasks = taskgraph.tasks.copy()
+ new_edges = set(taskgraph.graph.edges)
+ for task in to_add:
+ new_tasks[task.task_id] = task
+ assert task.label not in label_to_taskid
+ label_to_taskid[task.label] = task.task_id
+ for depname, dep in task.dependencies.items():
+ new_edges.add((task.task_id, dep, depname))
+
+ taskgraph = TaskGraph(new_tasks, Graph(set(new_tasks), new_edges))
+ return taskgraph, label_to_taskid
+
+
+def derive_misc_task(
+ target_task,
+ purpose,
+ image,
+ taskgraph,
+ label_to_taskid,
+ parameters,
+ graph_config,
+ dependencies,
+):
+ """Create the shell of a task that depends on `dependencies` and on the given docker
+ image."""
+ label = f"{purpose}-{target_task.label}"
+
+ # this is why all docker image tasks are included in the target task graph: we
+ # need to find them in label_to_taskid, even if nothing else required them
+ image_taskid = label_to_taskid["docker-image-" + image]
+
+ provisioner_id, worker_type = get_worker_type(
+ graph_config,
+ parameters,
+ "misc",
+ )
+
+ deps = copy.copy(dependencies)
+ deps["docker-image"] = image_taskid
+
+ task_def = {
+ "provisionerId": provisioner_id,
+ "workerType": worker_type,
+ "dependencies": [d for d in deps.values()],
+ "created": {"relative-datestamp": "0 seconds"},
+ "deadline": target_task.task["deadline"],
+ # no point existing past the parent task's deadline
+ "expires": target_task.task["deadline"],
+ "metadata": {
+ "name": label,
+ "description": f"{purpose} for {target_task.description}",
+ "owner": target_task.task["metadata"]["owner"],
+ "source": target_task.task["metadata"]["source"],
+ },
+ "scopes": [],
+ "payload": {
+ "image": {
+ "path": "public/image.tar.zst",
+ "taskId": image_taskid,
+ "type": "task-image",
+ },
+ "features": {"taskclusterProxy": True},
+ "maxRunTime": 600,
+ },
+ }
+
+ if image_taskid not in taskgraph.tasks:
+ # The task above depends on the replaced docker-image not one in
+ # this current graph.
+ del deps["docker-image"]
+
+ task = Task(
+ kind="misc",
+ label=label,
+ attributes={},
+ task=task_def,
+ dependencies=deps,
+ )
+ task.task_id = slugid()
+ return task
+
+
+# these regular expressions capture route prefixes for which we have a star
+# scope, allowing them to be summarized. Each should correspond to a star scope
+# in each Gecko `assume:repo:hg.mozilla.org/...` role.
+SCOPE_SUMMARY_REGEXPS = [
+ re.compile(r"(index:insert-task:docker\.images\.v1\.[^.]*\.).*"),
+ re.compile(r"(index:insert-task:gecko\.v2\.[^.]*\.).*"),
+ re.compile(r"(index:insert-task:comm\.v2\.[^.]*\.).*"),
+]
+
+
+def make_index_task(
+ parent_task,
+ taskgraph,
+ label_to_taskid,
+ parameters,
+ graph_config,
+ index_paths,
+ index_rank,
+ purpose,
+ dependencies,
+):
+ task = derive_misc_task(
+ parent_task,
+ purpose,
+ "index-task",
+ taskgraph,
+ label_to_taskid,
+ parameters,
+ graph_config,
+ dependencies,
+ )
+
+ # we need to "summarize" the scopes, otherwise a particularly
+ # namespace-heavy index task might have more scopes than can fit in a
+ # temporary credential.
+ scopes = set()
+ for path in index_paths:
+ scope = f"index:insert-task:{path}"
+ for summ_re in SCOPE_SUMMARY_REGEXPS:
+ match = summ_re.match(scope)
+ if match:
+ scope = match.group(1) + "*"
+ break
+ scopes.add(scope)
+ task.task["scopes"] = sorted(scopes)
+
+ task.task["payload"]["command"] = ["insert-indexes.js"] + index_paths
+ task.task["payload"]["env"] = {
+ "TARGET_TASKID": parent_task.task_id,
+ "INDEX_RANK": index_rank,
+ }
+ return task
+
+
+@register_morph
+def add_index_tasks(taskgraph, label_to_taskid, parameters, graph_config):
+ """
+ The TaskCluster queue only allows 10 routes on a task, but we have tasks
+ with many more routes, for purposes of indexing. This graph morph adds
+ "index tasks" that depend on such tasks and do the index insertions
+ directly, avoiding the limits on task.routes.
+ """
+ logger.debug("Morphing: adding index tasks")
+
+ # Add indexes for tasks that exceed MAX_ROUTES.
+ added = []
+ for label, task in taskgraph.tasks.items():
+ if len(task.task.get("routes", [])) <= MAX_ROUTES:
+ continue
+ index_paths = [
+ r.split(".", 1)[1] for r in task.task["routes"] if r.startswith("index.")
+ ]
+ task.task["routes"] = [
+ r for r in task.task["routes"] if not r.startswith("index.")
+ ]
+ added.append(
+ make_index_task(
+ task,
+ taskgraph,
+ label_to_taskid,
+ parameters,
+ graph_config,
+ index_paths=index_paths,
+ index_rank=task.task.get("extra", {}).get("index", {}).get("rank", 0),
+ purpose="index-task",
+ dependencies={"parent": task.task_id},
+ )
+ )
+
+ if added:
+ taskgraph, label_to_taskid = amend_taskgraph(taskgraph, label_to_taskid, added)
+ logger.info(f"Added {len(added)} index tasks")
+
+ return taskgraph, label_to_taskid
+
+
+@register_morph
+def add_eager_cache_index_tasks(taskgraph, label_to_taskid, parameters, graph_config):
+ """
+ Some tasks (e.g. cached tasks) we want to exist in the index before they even
+ run/complete. Our current use is to allow us to depend on an unfinished cached
+ task in future pushes. This graph morph adds "eager-index tasks" that depend on
+ the decision task and do the index insertions directly, which does not need to
+ wait on the pointed at task to complete.
+ """
+ logger.debug("Morphing: Adding eager cached index's")
+
+ added = []
+ for label, task in taskgraph.tasks.items():
+ if "eager_indexes" not in task.attributes:
+ continue
+ eager_indexes = task.attributes["eager_indexes"]
+ added.append(
+ make_index_task(
+ task,
+ taskgraph,
+ label_to_taskid,
+ parameters,
+ graph_config,
+ index_paths=eager_indexes,
+ index_rank=0, # Be sure complete tasks get priority
+ purpose="eager-index",
+ dependencies={},
+ )
+ )
+
+ if added:
+ taskgraph, label_to_taskid = amend_taskgraph(taskgraph, label_to_taskid, added)
+ logger.info(f"Added {len(added)} eager index tasks")
+ return taskgraph, label_to_taskid
+
+
+@register_morph
+def add_try_task_duplicates(taskgraph, label_to_taskid, parameters, graph_config):
+ try_config = parameters["try_task_config"]
+ rebuild = try_config.get("rebuild")
+ if rebuild:
+ for task in taskgraph.tasks.values():
+ if task.label in try_config.get("tasks", []):
+ task.attributes["task_duplicates"] = rebuild
+ return taskgraph, label_to_taskid
diff --git a/taskcluster/gecko_taskgraph/optimize/__init__.py b/taskcluster/gecko_taskgraph/optimize/__init__.py
new file mode 100644
index 0000000000..c2d3fdf839
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/optimize/__init__.py
@@ -0,0 +1,287 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+The objective of optimization is to remove as many tasks from the graph as
+possible, as efficiently as possible, thereby delivering useful results as
+quickly as possible. For example, ideally if only a test script is modified in
+a push, then the resulting graph contains only the corresponding test suite
+task.
+
+See ``taskcluster/docs/optimization.rst`` for more information.
+"""
+
+from taskgraph.optimize.base import Alias, All, Any, Not, register_strategy, registry
+from taskgraph.util.python_path import import_sibling_modules
+
+# Use the gecko_taskgraph version of 'skip-unless-changed' for now.
+registry.pop("skip-unless-changed", None)
+
+# Trigger registration in sibling modules.
+import_sibling_modules()
+
+
+def split_bugbug_arg(arg, substrategies):
+ """Split args for bugbug based strategies.
+
+ Many bugbug based optimizations require passing an empty dict by reference
+ to communicate to downstream strategies. This function passes the provided
+ arg to the first (non bugbug) strategies and a shared empty dict to the
+ bugbug strategy and all substrategies after it.
+ """
+ from gecko_taskgraph.optimize.bugbug import BugBugPushSchedules
+
+ index = [
+ i
+ for i, strategy in enumerate(substrategies)
+ if isinstance(strategy, BugBugPushSchedules)
+ ][0]
+
+ return [arg] * index + [{}] * (len(substrategies) - index)
+
+
+# Register composite strategies.
+register_strategy("build", args=("skip-unless-schedules",))(Alias)
+register_strategy("test", args=("skip-unless-schedules",))(Alias)
+register_strategy("test-inclusive", args=("skip-unless-schedules",))(Alias)
+register_strategy("test-verify", args=("skip-unless-schedules",))(Alias)
+register_strategy("upload-symbols", args=("never",))(Alias)
+register_strategy("reprocess-symbols", args=("never",))(Alias)
+
+
+# Strategy overrides used to tweak the default strategies. These are referenced
+# by the `optimize_strategies` parameter.
+
+
+class project:
+ """Strategies that should be applied per-project."""
+
+ autoland = {
+ "test": Any(
+ # This `Any` strategy implements bi-modal behaviour. It allows different
+ # strategies on expanded pushes vs regular pushes.
+ # This first `All` handles "expanded" pushes.
+ All(
+ # There are three substrategies in this `All`, the first two act as barriers
+ # that help determine when to apply the third:
+ # 1. On backstop pushes, `skip-unless-backstop` returns False. Therefore
+ # the overall composite strategy is False and we don't optimize.
+ # 2. On regular pushes, `Not('skip-unless-expanded')` returns False. Therefore
+ # the overall composite strategy is False and we don't optimize.
+ # 3. On expanded pushes, the third strategy will determine whether or
+ # not to optimize each individual task.
+ # The barrier strategies.
+ "skip-unless-backstop",
+ Not("skip-unless-expanded"),
+ # The actual test strategy applied to "expanded" pushes.
+ Any(
+ "skip-unless-schedules",
+ "bugbug-reduced-manifests-fallback-last-10-pushes",
+ "platform-disperse",
+ split_args=split_bugbug_arg,
+ ),
+ ),
+ # This second `All` handles regular (aka not expanded or backstop)
+ # pushes.
+ All(
+ # There are two substrategies in this `All`, the first acts as a barrier
+ # that determines when to apply the second:
+ # 1. On expanded pushes (which includes backstops), `skip-unless-expanded`
+ # returns False. Therefore the overall composite strategy is False and we
+ # don't optimize.
+ # 2. On regular pushes, the second strategy will determine whether or
+ # not to optimize each individual task.
+ # The barrier strategy.
+ "skip-unless-expanded",
+ # The actual test strategy applied to regular pushes.
+ Any(
+ "skip-unless-schedules",
+ "bugbug-reduced-manifests-fallback-low",
+ "platform-disperse",
+ split_args=split_bugbug_arg,
+ ),
+ ),
+ ),
+ "build": All(
+ "skip-unless-expanded",
+ Any(
+ "skip-unless-schedules",
+ "bugbug-reduced-fallback",
+ split_args=split_bugbug_arg,
+ ),
+ ),
+ }
+ """Strategy overrides that apply to autoland."""
+
+
+class experimental:
+ """Experimental strategies either under development or used as benchmarks.
+
+ These run as "shadow-schedulers" on each autoland push (tier 3) and/or can be used
+ with `./mach try auto`. E.g:
+
+ ./mach try auto --strategy relevant_tests
+ """
+
+ bugbug_tasks_medium = {
+ "test": Any(
+ "skip-unless-schedules", "bugbug-tasks-medium", split_args=split_bugbug_arg
+ ),
+ }
+ """Doesn't limit platforms, medium confidence threshold."""
+
+ bugbug_tasks_high = {
+ "test": Any(
+ "skip-unless-schedules", "bugbug-tasks-high", split_args=split_bugbug_arg
+ ),
+ }
+ """Doesn't limit platforms, high confidence threshold."""
+
+ bugbug_debug_disperse = {
+ "test": Any(
+ "skip-unless-schedules",
+ "bugbug-low",
+ "platform-debug",
+ "platform-disperse",
+ split_args=split_bugbug_arg,
+ ),
+ }
+ """Restricts tests to debug platforms."""
+
+ bugbug_disperse_low = {
+ "test": Any(
+ "skip-unless-schedules",
+ "bugbug-low",
+ "platform-disperse",
+ split_args=split_bugbug_arg,
+ ),
+ }
+ """Disperse tests across platforms, low confidence threshold."""
+
+ bugbug_disperse_medium = {
+ "test": Any(
+ "skip-unless-schedules",
+ "bugbug-medium",
+ "platform-disperse",
+ split_args=split_bugbug_arg,
+ ),
+ }
+ """Disperse tests across platforms, medium confidence threshold."""
+
+ bugbug_disperse_reduced_medium = {
+ "test": Any(
+ "skip-unless-schedules",
+ "bugbug-reduced-manifests",
+ "platform-disperse",
+ split_args=split_bugbug_arg,
+ ),
+ }
+ """Disperse tests across platforms, medium confidence threshold with reduced tasks."""
+
+ bugbug_reduced_manifests_config_selection_low = {
+ "test": Any(
+ "skip-unless-schedules",
+ "bugbug-reduced-manifests-config-selection-low",
+ split_args=split_bugbug_arg,
+ ),
+ }
+ """Choose configs selected by bugbug, low confidence threshold with reduced tasks."""
+
+ bugbug_reduced_manifests_config_selection_medium = {
+ "test": Any(
+ "skip-unless-schedules",
+ "bugbug-reduced-manifests-config-selection",
+ split_args=split_bugbug_arg,
+ ),
+ }
+ """Choose configs selected by bugbug, medium confidence threshold with reduced tasks."""
+
+ bugbug_disperse_medium_no_unseen = {
+ "test": Any(
+ "skip-unless-schedules",
+ "bugbug-medium",
+ "platform-disperse-no-unseen",
+ split_args=split_bugbug_arg,
+ ),
+ }
+ """Disperse tests across platforms (no modified for unseen configurations), medium confidence
+ threshold."""
+
+ bugbug_disperse_medium_only_one = {
+ "test": Any(
+ "skip-unless-schedules",
+ "bugbug-medium",
+ "platform-disperse-only-one",
+ split_args=split_bugbug_arg,
+ ),
+ }
+ """Disperse tests across platforms (one platform per group), medium confidence threshold."""
+
+ bugbug_disperse_high = {
+ "test": Any(
+ "skip-unless-schedules",
+ "bugbug-high",
+ "platform-disperse",
+ split_args=split_bugbug_arg,
+ ),
+ }
+ """Disperse tests across platforms, high confidence threshold."""
+
+ bugbug_reduced = {
+ "test": Any(
+ "skip-unless-schedules", "bugbug-reduced", split_args=split_bugbug_arg
+ ),
+ }
+ """Use the reduced set of tasks (and no groups) chosen by bugbug."""
+
+ bugbug_reduced_high = {
+ "test": Any(
+ "skip-unless-schedules", "bugbug-reduced-high", split_args=split_bugbug_arg
+ ),
+ }
+ """Use the reduced set of tasks (and no groups) chosen by bugbug, high
+ confidence threshold."""
+
+ relevant_tests = {
+ "test": Any("skip-unless-schedules", "skip-unless-has-relevant-tests"),
+ }
+ """Runs task containing tests in the same directories as modified files."""
+
+
+class ExperimentalOverride:
+ """Overrides dictionaries that are stored in a container with new values.
+
+ This can be used to modify all strategies in a collection the same way,
+ presumably with strategies affecting kinds of tasks tangential to the
+ current context.
+
+ Args:
+ base (object): A container class supporting attribute access.
+ overrides (dict): Values to update any accessed dictionaries with.
+ """
+
+ def __init__(self, base, overrides):
+ self.base = base
+ self.overrides = overrides
+
+ def __getattr__(self, name):
+ val = getattr(self.base, name).copy()
+ for name, strategy in self.overrides.items():
+ if isinstance(strategy, str) and strategy.startswith("base:"):
+ strategy = val[strategy[len("base:") :]]
+
+ val[name] = strategy
+ return val
+
+
+tryselect = ExperimentalOverride(
+ experimental,
+ {
+ "build": Any(
+ "skip-unless-schedules", "bugbug-reduced", split_args=split_bugbug_arg
+ ),
+ "test-verify": "base:test",
+ "upload-symbols": Alias("always"),
+ "reprocess-symbols": Alias("always"),
+ },
+)
diff --git a/taskcluster/gecko_taskgraph/optimize/backstop.py b/taskcluster/gecko_taskgraph/optimize/backstop.py
new file mode 100644
index 0000000000..7b0c86222b
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/optimize/backstop.py
@@ -0,0 +1,47 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+from taskgraph.optimize.base import All, OptimizationStrategy, register_strategy
+
+from gecko_taskgraph.util.backstop import BACKSTOP_PUSH_INTERVAL
+
+
+@register_strategy("skip-unless-backstop")
+class SkipUnlessBackstop(OptimizationStrategy):
+ """Always removes tasks except on backstop pushes."""
+
+ def should_remove_task(self, task, params, _):
+ return not params["backstop"]
+
+
+class SkipUnlessPushInterval(OptimizationStrategy):
+ """Always removes tasks except every N pushes.
+
+ Args:
+ push_interval (int): Number of pushes
+ """
+
+ def __init__(self, push_interval, remove_on_projects=None):
+ self.push_interval = push_interval
+
+ @property
+ def description(self):
+ return f"skip-unless-push-interval-{self.push_interval}"
+
+ def should_remove_task(self, task, params, _):
+ # On every Nth push, want to run all tasks.
+ return int(params["pushlog_id"]) % self.push_interval != 0
+
+
+# Strategy to run tasks on "expanded" pushes, currently defined as pushes that
+# are half the backstop interval. The 'All' composite strategy means that the
+# "backstop" strategy will prevent "expanded" from applying on backstop pushes.
+register_strategy(
+ "skip-unless-expanded",
+ args=(
+ "skip-unless-backstop",
+ SkipUnlessPushInterval(BACKSTOP_PUSH_INTERVAL / 2),
+ ),
+)(All)
diff --git a/taskcluster/gecko_taskgraph/optimize/bugbug.py b/taskcluster/gecko_taskgraph/optimize/bugbug.py
new file mode 100644
index 0000000000..d8603560ef
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/optimize/bugbug.py
@@ -0,0 +1,321 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+from collections import defaultdict
+from fnmatch import fnmatch
+
+from taskgraph.optimize.base import OptimizationStrategy, register_strategy, registry
+
+from gecko_taskgraph.util.bugbug import (
+ CT_HIGH,
+ CT_LOW,
+ CT_MEDIUM,
+ BugbugTimeoutException,
+ push_schedules,
+)
+from gecko_taskgraph.util.hg import get_push_data
+
+FALLBACK = "skip-unless-has-relevant-tests"
+
+
+def merge_bugbug_replies(data, new_data):
+ """Merge a bugbug reply (stored in the `new_data` argument) into another (stored
+ in the `data` argument).
+ """
+ for key, value in new_data.items():
+ if isinstance(value, dict):
+ if key not in data:
+ data[key] = {}
+
+ if len(value) == 0:
+ continue
+
+ dict_value = next(iter(value.values()))
+ if isinstance(dict_value, list):
+ for name, configs in value.items():
+ if name not in data[key]:
+ data[key][name] = set()
+
+ data[key][name].update(configs)
+ else:
+ for name, confidence in value.items():
+ if name not in data[key] or data[key][name] < confidence:
+ data[key][name] = confidence
+ elif isinstance(value, list):
+ if key not in data:
+ data[key] = set()
+
+ data[key].update(value)
+
+
+@register_strategy("bugbug-low", args=(CT_LOW,))
+@register_strategy("bugbug-medium", args=(CT_MEDIUM,))
+@register_strategy("bugbug-high", args=(CT_HIGH,))
+@register_strategy("bugbug-tasks-medium", args=(CT_MEDIUM, True))
+@register_strategy("bugbug-tasks-high", args=(CT_HIGH, True))
+@register_strategy("bugbug-reduced", args=(CT_MEDIUM, True, True))
+@register_strategy("bugbug-reduced-fallback", args=(CT_MEDIUM, True, True, FALLBACK))
+@register_strategy("bugbug-reduced-high", args=(CT_HIGH, True, True))
+@register_strategy("bugbug-reduced-manifests", args=(CT_MEDIUM, False, True))
+@register_strategy(
+ "bugbug-reduced-manifests-config-selection-low",
+ args=(CT_LOW, False, True, None, 1, True),
+)
+@register_strategy(
+ "bugbug-reduced-manifests-config-selection",
+ args=(CT_MEDIUM, False, True, None, 1, True),
+)
+@register_strategy(
+ "bugbug-reduced-manifests-fallback-low", args=(CT_LOW, False, True, FALLBACK)
+)
+@register_strategy(
+ "bugbug-reduced-manifests-fallback", args=(CT_MEDIUM, False, True, FALLBACK)
+)
+@register_strategy(
+ "bugbug-reduced-manifests-fallback-last-10-pushes",
+ args=(0.3, False, True, FALLBACK, 10),
+)
+class BugBugPushSchedules(OptimizationStrategy):
+ """Query the 'bugbug' service to retrieve relevant tasks and manifests.
+
+ Args:
+ confidence_threshold (float): The minimum confidence threshold (in
+ range [0, 1]) needed for a task to be scheduled.
+ tasks_only (bool): Whether or not to only use tasks and no groups
+ (default: False)
+ use_reduced_tasks (bool): Whether or not to use the reduced set of tasks
+ provided by the bugbug service (default: False).
+ fallback (str): The fallback strategy to use if there
+ was a failure in bugbug (default: None)
+ num_pushes (int): The number of pushes to consider for the selection
+ (default: 1).
+ select_configs (bool): Whether to select configurations for manifests
+ too (default: False).
+ """
+
+ def __init__(
+ self,
+ confidence_threshold,
+ tasks_only=False,
+ use_reduced_tasks=False,
+ fallback=None,
+ num_pushes=1,
+ select_configs=False,
+ ):
+ self.confidence_threshold = confidence_threshold
+ self.use_reduced_tasks = use_reduced_tasks
+ self.fallback = fallback
+ self.tasks_only = tasks_only
+ self.num_pushes = num_pushes
+ self.select_configs = select_configs
+ self.timedout = False
+
+ def should_remove_task(self, task, params, importance):
+ project = params["project"]
+
+ if project not in ("autoland", "try"):
+ return False
+
+ current_push_id = int(params["pushlog_id"])
+
+ rev = params["head_rev"]
+
+ if self.timedout:
+ return registry[self.fallback].should_remove_task(task, params, importance)
+
+ data = {}
+
+ start_push_id = current_push_id - self.num_pushes + 1
+ if self.num_pushes != 1:
+ push_data = get_push_data(
+ params["head_repository"], project, start_push_id, current_push_id - 1
+ )
+
+ for push_id in range(start_push_id, current_push_id + 1):
+ if push_id == current_push_id:
+ rev = params["head_rev"]
+ else:
+ rev = push_data[push_id]["changesets"][-1]
+
+ try:
+ new_data = push_schedules(params["project"], rev)
+ merge_bugbug_replies(data, new_data)
+ except BugbugTimeoutException:
+ if not self.fallback:
+ raise
+
+ self.timedout = True
+ return self.should_remove_task(task, params, importance)
+
+ key = "reduced_tasks" if self.use_reduced_tasks else "tasks"
+ tasks = {
+ task
+ for task, confidence in data.get(key, {}).items()
+ if confidence >= self.confidence_threshold
+ }
+
+ test_manifests = task.attributes.get("test_manifests")
+ if test_manifests is None or self.tasks_only:
+ if data.get("known_tasks") and task.label not in data["known_tasks"]:
+ return False
+
+ if task.label not in tasks:
+ return True
+
+ return False
+
+ # If a task contains more than one group, use the max confidence.
+ groups = data.get("groups", {})
+ confidences = [c for g, c in groups.items() if g in test_manifests]
+ if not confidences or max(confidences) < self.confidence_threshold:
+ return True
+
+ # If the task configuration doesn't match the ones selected by bugbug for
+ # the manifests, optimize out.
+ if self.select_configs:
+ selected_groups = [
+ g
+ for g, c in groups.items()
+ if g in test_manifests and c > self.confidence_threshold
+ ]
+
+ config_groups = data.get("config_groups", defaultdict(list))
+
+ # Configurations returned by bugbug are in a format such as
+ # `test-windows10-64/opt-*-e10s`, while task labels are like
+ # test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-6.
+ # In order to match the strings, we need to ignore the chunk number
+ # from the task label.
+ parts = task.label.split("-")
+ label_without_chunk_number = "-".join(
+ parts[:-1] if parts[-1].isdigit() else parts
+ )
+
+ if not any(
+ fnmatch(label_without_chunk_number, config)
+ for group in selected_groups
+ for config in config_groups[group]
+ ):
+ return True
+
+ # Store group importance so future optimizers can access it.
+ for manifest in test_manifests:
+ if manifest not in groups:
+ continue
+
+ confidence = groups[manifest]
+ if confidence >= CT_HIGH:
+ importance[manifest] = "high"
+ elif confidence >= CT_MEDIUM:
+ importance[manifest] = "medium"
+ elif confidence >= CT_LOW:
+ importance[manifest] = "low"
+ else:
+ importance[manifest] = "lowest"
+
+ return False
+
+
+@register_strategy("platform-debug")
+class SkipUnlessDebug(OptimizationStrategy):
+ """Only run debug platforms."""
+
+ def should_remove_task(self, task, params, arg):
+ return (
+ "build_type" in task.attributes and task.attributes["build_type"] != "debug"
+ )
+
+
+@register_strategy("platform-disperse")
+@register_strategy("platform-disperse-no-unseen", args=(None, 0))
+@register_strategy(
+ "platform-disperse-only-one",
+ args=(
+ {
+ "high": 1,
+ "medium": 1,
+ "low": 1,
+ "lowest": 0,
+ },
+ 0,
+ ),
+)
+class DisperseGroups(OptimizationStrategy):
+ """Disperse groups across test configs.
+
+ Each task has an associated 'importance' dict passed in via the arg. This
+ is of the form `{<group>: <importance>}`.
+
+ Where 'group' is a test group id (usually a path to a manifest), and 'importance' is
+ one of `{'lowest', 'low', 'medium', 'high'}`.
+
+ Each importance value has an associated 'count' as defined in
+ `self.target_counts`. It guarantees that 'manifest' will run in at least
+ 'count' different configurations (assuming there are enough tasks
+ containing 'manifest').
+
+ On configurations that haven't been seen before, we'll increase the target
+ count by `self.unseen_modifier` to increase the likelihood of scheduling a
+ task on that configuration.
+
+ Args:
+ target_counts (dict): Override DEFAULT_TARGET_COUNTS with custom counts. This
+ is a dict mapping the importance value ('lowest', 'low', etc) to the
+ minimum number of configurations manifests with this value should run
+ on.
+
+ unseen_modifier (int): Override DEFAULT_UNSEEN_MODIFIER to a custom
+ value. This is the amount we'll increase 'target_count' by for unseen
+ configurations.
+ """
+
+ DEFAULT_TARGET_COUNTS = {
+ "high": 3,
+ "medium": 2,
+ "low": 1,
+ "lowest": 0,
+ }
+ DEFAULT_UNSEEN_MODIFIER = 1
+
+ def __init__(self, target_counts=None, unseen_modifier=DEFAULT_UNSEEN_MODIFIER):
+ self.target_counts = self.DEFAULT_TARGET_COUNTS.copy()
+ if target_counts:
+ self.target_counts.update(target_counts)
+ self.unseen_modifier = unseen_modifier
+
+ self.count = defaultdict(int)
+ self.seen_configurations = set()
+
+ def should_remove_task(self, task, params, importance):
+ test_manifests = task.attributes.get("test_manifests")
+ test_platform = task.attributes.get("test_platform")
+
+ if not importance or not test_manifests or not test_platform:
+ return False
+
+ # Build the test configuration key.
+ key = test_platform
+ if "unittest_variant" in task.attributes:
+ key += "-" + task.attributes["unittest_variant"]
+
+ important_manifests = set(test_manifests) & set(importance)
+ for manifest in important_manifests:
+ target_count = self.target_counts[importance[manifest]]
+
+ # If this configuration hasn't been seen before, increase the
+ # likelihood of scheduling the task.
+ if key not in self.seen_configurations:
+ target_count += self.unseen_modifier
+
+ if self.count[manifest] < target_count:
+ # Update manifest counts and seen configurations.
+ self.seen_configurations.add(key)
+ for manifest in important_manifests:
+ self.count[manifest] += 1
+ return False
+
+ # Should remove task because all manifests have reached their
+ # importance count (or there were no important manifests).
+ return True
diff --git a/taskcluster/gecko_taskgraph/optimize/schema.py b/taskcluster/gecko_taskgraph/optimize/schema.py
new file mode 100644
index 0000000000..a7f878cf60
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/optimize/schema.py
@@ -0,0 +1,60 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import logging
+
+import voluptuous
+from mozbuild import schedules
+
+logger = logging.getLogger(__name__)
+
+
+default_optimizations = (
+ # always run this task (default)
+ None,
+ # always optimize this task
+ {"always": None},
+ # optimize strategy aliases for build kind
+ {"build": list(schedules.ALL_COMPONENTS)},
+ # search the index for the given index namespaces, and replace this task if found
+ # the search occurs in order, with the first match winning
+ {"index-search": [str]},
+ # never optimize this task
+ {"never": None},
+ # skip the task except for every Nth push
+ {"skip-unless-expanded": None},
+ {"skip-unless-backstop": None},
+ # skip this task if none of the given file patterns match
+ {"skip-unless-changed": [str]},
+ # skip this task if unless the change files' SCHEDULES contains any of these components
+ {"skip-unless-schedules": list(schedules.ALL_COMPONENTS)},
+ # optimize strategy aliases for the test kind
+ {"test": list(schedules.ALL_COMPONENTS)},
+ {"test-inclusive": list(schedules.ALL_COMPONENTS)},
+ # optimize strategy alias for test-verify tasks
+ {"test-verify": list(schedules.ALL_COMPONENTS)},
+ # optimize strategy alias for upload-symbols tasks
+ {"upload-symbols": None},
+ # optimize strategy alias for reprocess-symbols tasks
+ {"reprocess-symbols": None},
+)
+
+OptimizationSchema = voluptuous.Any(*default_optimizations)
+
+
+def set_optimization_schema(schema_tuple):
+ """Sets OptimizationSchema so it can be imported by the task transform.
+ This function is called by projects that extend Firefox's taskgraph.
+ It should be called by the project's taskgraph:register function before
+ any transport or job runner code is imported.
+
+ :param tuple schema_tuple: Tuple of possible optimization strategies
+ """
+ global OptimizationSchema
+ if OptimizationSchema.validators == default_optimizations:
+ logger.info("OptimizationSchema updated.")
+ OptimizationSchema = voluptuous.Any(*schema_tuple)
+ else:
+ raise Exception("Can only call set_optimization_schema once.")
diff --git a/taskcluster/gecko_taskgraph/optimize/strategies.py b/taskcluster/gecko_taskgraph/optimize/strategies.py
new file mode 100644
index 0000000000..2e520c4750
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/optimize/strategies.py
@@ -0,0 +1,136 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import logging
+from datetime import datetime
+
+import mozpack.path as mozpath
+from mozbuild.base import MozbuildObject
+from mozbuild.util import memoize
+from taskgraph.optimize.base import OptimizationStrategy, register_strategy
+from taskgraph.util.taskcluster import find_task_id
+
+from gecko_taskgraph import files_changed
+from gecko_taskgraph.util.taskcluster import status_task
+
+logger = logging.getLogger(__name__)
+
+
+@register_strategy("index-search")
+class IndexSearch(OptimizationStrategy):
+
+ # A task with no dependencies remaining after optimization will be replaced
+ # if artifacts exist for the corresponding index_paths.
+ # Otherwise, we're in one of the following cases:
+ # - the task has un-optimized dependencies
+ # - the artifacts have expired
+ # - some changes altered the index_paths and new artifacts need to be
+ # created.
+ # In every of those cases, we need to run the task to create or refresh
+ # artifacts.
+
+ fmt = "%Y-%m-%dT%H:%M:%S.%fZ"
+
+ def should_replace_task(self, task, params, deadline, index_paths):
+ "Look for a task with one of the given index paths"
+ for index_path in index_paths:
+ try:
+ task_id = find_task_id(index_path)
+ status = status_task(task_id)
+ # status can be `None` if we're in `testing` mode
+ # (e.g. test-action-callback)
+ if not status or status.get("state") in ("exception", "failed"):
+ continue
+
+ if deadline and datetime.strptime(
+ status["expires"], self.fmt
+ ) < datetime.strptime(deadline, self.fmt):
+ continue
+
+ return task_id
+ except KeyError:
+ # 404 will end up here and go on to the next index path
+ pass
+
+ return False
+
+
+@register_strategy("skip-unless-changed")
+class SkipUnlessChanged(OptimizationStrategy):
+ def should_remove_task(self, task, params, file_patterns):
+ # pushlog_id == -1 - this is the case when run from a cron.yml job
+ if params.get("pushlog_id") == -1:
+ return False
+
+ changed = files_changed.check(params, file_patterns)
+ if not changed:
+ logger.debug(
+ "no files found matching a pattern in `skip-unless-changed` for "
+ + task.label
+ )
+ return True
+ return False
+
+
+@register_strategy("skip-unless-schedules")
+class SkipUnlessSchedules(OptimizationStrategy):
+ @memoize
+ def scheduled_by_push(self, repository, revision):
+ changed_files = files_changed.get_changed_files(repository, revision)
+
+ mbo = MozbuildObject.from_environment()
+ # the decision task has a sparse checkout, so, mozbuild_reader will use
+ # a MercurialRevisionFinder with revision '.', which should be the same
+ # as `revision`; in other circumstances, it will use a default reader
+ rdr = mbo.mozbuild_reader(config_mode="empty")
+
+ components = set()
+ for p, m in rdr.files_info(changed_files).items():
+ components |= set(m["SCHEDULES"].components)
+
+ return components
+
+ def should_remove_task(self, task, params, conditions):
+ if params.get("pushlog_id") == -1:
+ return False
+
+ scheduled = self.scheduled_by_push(
+ params["head_repository"], params["head_rev"]
+ )
+ conditions = set(conditions)
+ # if *any* of the condition components are scheduled, do not optimize
+ if conditions & scheduled:
+ return False
+
+ return True
+
+
+@register_strategy("skip-unless-has-relevant-tests")
+class SkipUnlessHasRelevantTests(OptimizationStrategy):
+ """Optimizes tasks that don't run any tests that were
+ in child directories of a modified file.
+ """
+
+ @memoize
+ def get_changed_dirs(self, repo, rev):
+ changed = map(mozpath.dirname, files_changed.get_changed_files(repo, rev))
+ # Filter out empty directories (from files modified in the root).
+ # Otherwise all tasks would be scheduled.
+ return {d for d in changed if d}
+
+ def should_remove_task(self, task, params, _):
+ if not task.attributes.get("test_manifests"):
+ return True
+
+ for d in self.get_changed_dirs(params["head_repository"], params["head_rev"]):
+ for t in task.attributes["test_manifests"]:
+ if t.startswith(d):
+ logger.debug(
+ "{} runs a test path ({}) contained by a modified file ({})".format(
+ task.label, t, d
+ )
+ )
+ return False
+ return True
diff --git a/taskcluster/gecko_taskgraph/parameters.py b/taskcluster/gecko_taskgraph/parameters.py
new file mode 100644
index 0000000000..e7e5df4605
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/parameters.py
@@ -0,0 +1,100 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import logging
+import os
+
+from taskgraph.parameters import extend_parameters_schema
+from voluptuous import Any, Required
+
+from gecko_taskgraph import GECKO
+
+logger = logging.getLogger(__name__)
+
+
+gecko_parameters_schema = {
+ Required("app_version"): str,
+ Required("backstop"): bool,
+ Required("build_number"): int,
+ Required("enable_always_target"): bool,
+ Required("hg_branch"): str,
+ Required("message"): str,
+ Required("next_version"): Any(None, str),
+ Required("optimize_strategies"): Any(None, str),
+ Required("phabricator_diff"): Any(None, str),
+ Required("release_enable_emefree"): bool,
+ Required("release_enable_partner_repack"): bool,
+ Required("release_enable_partner_attribution"): bool,
+ Required("release_eta"): Any(None, str),
+ Required("release_history"): {str: dict},
+ Required("release_partners"): Any(None, [str]),
+ Required("release_partner_config"): Any(None, dict),
+ Required("release_partner_build_number"): int,
+ Required("release_type"): str,
+ Required("release_product"): Any(None, str),
+ Required("required_signoffs"): [str],
+ Required("signoff_urls"): dict,
+ Required("test_manifest_loader"): str,
+ Required("try_mode"): Any(None, str),
+ Required("try_options"): Any(None, dict),
+ Required("try_task_config"): dict,
+ Required("version"): str,
+}
+
+
+def get_contents(path):
+ with open(path, "r") as fh:
+ contents = fh.readline().rstrip()
+ return contents
+
+
+def get_version(product_dir="browser"):
+ version_path = os.path.join(GECKO, product_dir, "config", "version_display.txt")
+ return get_contents(version_path)
+
+
+def get_app_version(product_dir="browser"):
+ app_version_path = os.path.join(GECKO, product_dir, "config", "version.txt")
+ return get_contents(app_version_path)
+
+
+def get_defaults(repo_root=None):
+ return {
+ "app_version": get_app_version(),
+ "backstop": False,
+ "base_repository": "https://hg.mozilla.org/mozilla-unified",
+ "build_number": 1,
+ "enable_always_target": False,
+ "head_repository": "https://hg.mozilla.org/mozilla-central",
+ "hg_branch": "default",
+ "message": "",
+ "next_version": None,
+ "optimize_strategies": None,
+ "phabricator_diff": None,
+ "project": "mozilla-central",
+ "release_enable_emefree": False,
+ "release_enable_partner_repack": False,
+ "release_enable_partner_attribution": False,
+ "release_eta": "",
+ "release_history": {},
+ "release_partners": [],
+ "release_partner_config": None,
+ "release_partner_build_number": 1,
+ "release_product": None,
+ "release_type": "nightly",
+ # This refers to the upstream repo rather than the local checkout, so
+ # should be hardcoded to 'hg' even with git-cinnabar.
+ "repository_type": "hg",
+ "required_signoffs": [],
+ "signoff_urls": {},
+ "test_manifest_loader": "default",
+ "try_mode": None,
+ "try_options": None,
+ "try_task_config": {},
+ "version": get_version(),
+ }
+
+
+def register_parameters():
+ extend_parameters_schema(gecko_parameters_schema, defaults_fn=get_defaults)
diff --git a/taskcluster/gecko_taskgraph/target_tasks.py b/taskcluster/gecko_taskgraph/target_tasks.py
new file mode 100644
index 0000000000..90ebd479ad
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/target_tasks.py
@@ -0,0 +1,1497 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import itertools
+import os
+import re
+from datetime import datetime, timedelta
+
+from redo import retry
+from taskgraph.parameters import Parameters
+from taskgraph.target_tasks import _target_task, get_method
+from taskgraph.util.taskcluster import find_task_id
+
+from gecko_taskgraph import GECKO, try_option_syntax
+from gecko_taskgraph.util.attributes import (
+ match_run_on_hg_branches,
+ match_run_on_projects,
+)
+from gecko_taskgraph.util.hg import find_hg_revision_push_info, get_hg_commit_message
+from gecko_taskgraph.util.platforms import platform_family
+
+# Some tasks show up in the target task set, but are possibly special cases,
+# uncommon tasks, or tasks running against limited hardware set that they
+# should only be selectable with --full.
+UNCOMMON_TRY_TASK_LABELS = [
+ # Platforms and/or Build types
+ r"build-.*-gcp", # Bug 1631990
+ r"mingwclang", # Bug 1631990
+ r"valgrind", # Bug 1631990
+ # Android tasks
+ r"android-geckoview-docs",
+ r"android-hw",
+ # Windows tasks
+ r"windows10-64-ref-hw",
+ r"windows10-aarch64-qr",
+ # Linux tasks
+ r"linux-", # hide all linux32 tasks by default - bug 1599197
+ r"linux1804-32", # hide linux32 tests - bug 1599197
+ # Test tasks
+ r"web-platform-tests.*backlog", # hide wpt jobs that are not implemented yet - bug 1572820
+ r"-ccov",
+ r"-profiling-", # talos/raptor profiling jobs are run too often
+ # Hide shippable versions of tests we have opt versions of because the non-shippable
+ # versions are faster to run. This is mostly perf tests.
+ r"-shippable(?!.*(awsy|browsertime|marionette-headless|mochitest-devtools-chrome-fis|raptor|talos|web-platform-tests-wdspec-headless|mochitest-plain-headless))", # noqa - too long
+]
+
+
+def index_exists(index_path, reason=""):
+ print(f"Looking for existing index {index_path} {reason}...")
+ try:
+ task_id = find_task_id(index_path)
+ print(f"Index {index_path} exists: taskId {task_id}")
+ return True
+ except KeyError:
+ print(f"Index {index_path} doesn't exist.")
+ return False
+
+
+def filter_out_shipping_phase(task, parameters):
+ return (
+ # nightly still here because of geckodriver
+ not task.attributes.get("nightly")
+ and task.attributes.get("shipping_phase") in (None, "build")
+ )
+
+
+def filter_out_devedition(task, parameters):
+ return not task.attributes.get("shipping_product") == "devedition"
+
+
+def filter_out_cron(task, parameters):
+ """
+ Filter out tasks that run via cron.
+ """
+ return not task.attributes.get("cron")
+
+
+def filter_for_project(task, parameters):
+ """Filter tasks by project. Optionally enable nightlies."""
+ run_on_projects = set(task.attributes.get("run_on_projects", []))
+ return match_run_on_projects(parameters["project"], run_on_projects)
+
+
+def filter_for_hg_branch(task, parameters):
+ """Filter tasks by hg branch.
+ If `run_on_hg_branch` is not defined, then task runs on all branches"""
+ run_on_hg_branches = set(task.attributes.get("run_on_hg_branches", ["all"]))
+ return match_run_on_hg_branches(parameters["hg_branch"], run_on_hg_branches)
+
+
+def filter_on_platforms(task, platforms):
+ """Filter tasks on the given platform"""
+ platform = task.attributes.get("build_platform")
+ return platform in platforms
+
+
+def filter_by_uncommon_try_tasks(task, optional_filters=None):
+ """Filters tasks that should not be commonly run on try.
+
+ Args:
+ task (str): String representing the task name.
+ optional_filters (list, optional):
+ Additional filters to apply to task filtering.
+
+ Returns:
+ (Boolean): True if task does not match any known filters.
+ False otherwise.
+ """
+ filters = UNCOMMON_TRY_TASK_LABELS
+ if optional_filters:
+ filters = itertools.chain(filters, optional_filters)
+
+ return not any(re.search(pattern, task) for pattern in filters)
+
+
+def filter_by_regex(task_label, regexes, mode="include"):
+ """Filters tasks according to a list of pre-compiled reguar expressions.
+
+ If mode is "include", a task label must match any regex to pass.
+ If it is "exclude", a task label must _not_ match any regex to pass.
+ """
+ if not regexes:
+ return True
+
+ assert mode in ["include", "exclude"]
+
+ any_match = any(r.search(task_label) for r in regexes)
+ if any_match:
+ return mode == "include"
+ return mode != "include"
+
+
+def filter_release_tasks(task, parameters):
+ platform = task.attributes.get("build_platform")
+ if platform in (
+ "linux",
+ "linux64",
+ "macosx64",
+ "win32",
+ "win64",
+ "win64-aarch64",
+ ):
+ if task.attributes["kind"] == "l10n":
+ # This is on-change l10n
+ return True
+ if (
+ task.attributes["build_type"] == "opt"
+ and task.attributes.get("unittest_suite") != "talos"
+ and task.attributes.get("unittest_suite") != "raptor"
+ ):
+ return False
+
+ if task.attributes.get("shipping_phase") not in (None, "build"):
+ return False
+
+ """ No debug on release, keep on ESR with 4 week cycles, release
+ will not be too different from central, but ESR will live for a long time.
+
+ From June 2019 -> June 2020, we found 1 unique regression on ESR debug
+ and 5 unique regressions on beta/release. Keeping spidermonkey and linux
+ debug finds all but 1 unique regressions (windows found on try) for beta/release.
+
+ ...but debug-only failures started showing up on ESR (esr-91, esr-102) so
+ desktop debug tests were added back for beta.
+ """
+ build_type = task.attributes.get("build_type", "")
+ build_platform = task.attributes.get("build_platform", "")
+ test_platform = task.attributes.get("test_platform", "")
+
+ if parameters["release_type"].startswith("esr") or (
+ parameters["release_type"] == "beta" and "android" not in build_platform
+ ):
+ return True
+
+ # code below here is intended to reduce release debug tasks
+ if task.kind == "hazard" or "toolchain" in build_platform:
+ # keep hazard and toolchain builds around
+ return True
+
+ if build_type == "debug":
+ if "linux" not in build_platform:
+ # filter out windows/mac/android
+ return False
+ if task.kind not in ["spidermonkey"] and "-qr" in test_platform:
+ # filter out linux-qr tests, leave spidermonkey
+ return False
+ if "64" not in build_platform:
+ # filter out linux32 builds
+ return False
+
+ # webrender-android-*-debug doesn't have attributes to find 'debug', using task.label.
+ if task.kind == "webrender" and "debug" in task.label:
+ return False
+ return True
+
+
+def filter_out_missing_signoffs(task, parameters):
+ for signoff in parameters["required_signoffs"]:
+ if signoff not in parameters["signoff_urls"] and signoff in task.attributes.get(
+ "required_signoffs", []
+ ):
+ return False
+ return True
+
+
+def filter_tests_without_manifests(task, parameters):
+ """Remove test tasks that have an empty 'test_manifests' attribute.
+
+ This situation can arise when the test loader (e.g bugbug) decided there
+ weren't any important manifests to run for the given push. We filter tasks
+ out here rather than in the transforms so that the full task graph is still
+ aware that the task exists (which is needed by the backfill action).
+ """
+ if (
+ task.kind == "test"
+ and "test_manifests" in task.attributes
+ and not task.attributes["test_manifests"]
+ ):
+ return False
+ return True
+
+
+def standard_filter(task, parameters):
+ return all(
+ filter_func(task, parameters)
+ for filter_func in (
+ filter_out_cron,
+ filter_for_project,
+ filter_for_hg_branch,
+ filter_tests_without_manifests,
+ )
+ )
+
+
+def accept_raptor_android_build(platform):
+ """Helper function for selecting the correct android raptor builds."""
+ if "android" not in platform:
+ return False
+ if "shippable" not in platform:
+ return False
+ if "p2" in platform and "aarch64" in platform:
+ return False
+ if "p5" in platform and "aarch64" in platform:
+ return False
+ if "g5" in platform:
+ return False
+ if "a51" in platform:
+ return True
+
+
+def filter_unsupported_artifact_builds(task, parameters):
+ try_config = parameters.get("try_task_config", {})
+ if not try_config.get("use-artifact-builds", False):
+ return True
+
+ supports_artifact_builds = task.attributes.get("supports-artifact-builds", True)
+ return supports_artifact_builds
+
+
+def filter_out_shippable(task):
+ return not task.attributes.get("shippable", False)
+
+
+def _try_task_config(full_task_graph, parameters, graph_config):
+ requested_tasks = parameters["try_task_config"]["tasks"]
+ return list(set(requested_tasks) & full_task_graph.graph.nodes)
+
+
+def _try_option_syntax(full_task_graph, parameters, graph_config):
+ """Generate a list of target tasks based on try syntax in
+ parameters['message'] and, for context, the full task graph."""
+ options = try_option_syntax.TryOptionSyntax(
+ parameters, full_task_graph, graph_config
+ )
+ target_tasks_labels = [
+ t.label
+ for t in full_task_graph.tasks.values()
+ if options.task_matches(t)
+ and filter_by_uncommon_try_tasks(t.label)
+ and filter_unsupported_artifact_builds(t, parameters)
+ ]
+
+ attributes = {
+ k: getattr(options, k)
+ for k in [
+ "no_retry",
+ "tag",
+ ]
+ }
+
+ for l in target_tasks_labels:
+ task = full_task_graph[l]
+ if "unittest_suite" in task.attributes:
+ task.attributes["task_duplicates"] = options.trigger_tests
+
+ for l in target_tasks_labels:
+ task = full_task_graph[l]
+ # If the developer wants test jobs to be rebuilt N times we add that value here
+ if options.trigger_tests > 1 and "unittest_suite" in task.attributes:
+ task.attributes["task_duplicates"] = options.trigger_tests
+
+ # If the developer wants test talos jobs to be rebuilt N times we add that value here
+ if (
+ options.talos_trigger_tests > 1
+ and task.attributes.get("unittest_suite") == "talos"
+ ):
+ task.attributes["task_duplicates"] = options.talos_trigger_tests
+
+ # If the developer wants test raptor jobs to be rebuilt N times we add that value here
+ if (
+ options.raptor_trigger_tests
+ and options.raptor_trigger_tests > 1
+ and task.attributes.get("unittest_suite") == "raptor"
+ ):
+ task.attributes["task_duplicates"] = options.raptor_trigger_tests
+
+ task.attributes.update(attributes)
+
+ # Add notifications here as well
+ if options.notifications:
+ for task in full_task_graph:
+ owner = parameters.get("owner")
+ routes = task.task.setdefault("routes", [])
+ if options.notifications == "all":
+ routes.append(f"notify.email.{owner}.on-any")
+ elif options.notifications == "failure":
+ routes.append(f"notify.email.{owner}.on-failed")
+ routes.append(f"notify.email.{owner}.on-exception")
+
+ return target_tasks_labels
+
+
+@_target_task("try_tasks")
+def target_tasks_try(full_task_graph, parameters, graph_config):
+ try_mode = parameters["try_mode"]
+ if try_mode == "try_task_config":
+ return _try_task_config(full_task_graph, parameters, graph_config)
+ if try_mode == "try_option_syntax":
+ return _try_option_syntax(full_task_graph, parameters, graph_config)
+ # With no try mode, we schedule nothing, allowing the user to add tasks
+ # later via treeherder.
+ return []
+
+
+@_target_task("try_select_tasks")
+def target_tasks_try_select(full_task_graph, parameters, graph_config):
+ tasks = target_tasks_try_select_uncommon(full_task_graph, parameters, graph_config)
+ return [l for l in tasks if filter_by_uncommon_try_tasks(l)]
+
+
+@_target_task("try_select_tasks_uncommon")
+def target_tasks_try_select_uncommon(full_task_graph, parameters, graph_config):
+ from gecko_taskgraph.decision import PER_PROJECT_PARAMETERS
+
+ projects = ("autoland", "mozilla-central")
+ if parameters["project"] not in projects:
+ projects = (parameters["project"],)
+
+ tasks = set()
+ for project in projects:
+ params = dict(parameters)
+ params["project"] = project
+ parameters = Parameters(**params)
+
+ try:
+ target_tasks_method = PER_PROJECT_PARAMETERS[project]["target_tasks_method"]
+ except KeyError:
+ target_tasks_method = "default"
+
+ tasks.update(
+ get_method(target_tasks_method)(full_task_graph, parameters, graph_config)
+ )
+
+ return sorted(tasks)
+
+
+@_target_task("try_auto")
+def target_tasks_try_auto(full_task_graph, parameters, graph_config):
+ """Target the tasks which have indicated they should be run on autoland
+ (rather than try) via the `run_on_projects` attributes.
+
+ Should do the same thing as the `default` target tasks method.
+ """
+ params = dict(parameters)
+ params["project"] = "autoland"
+ parameters = Parameters(**params)
+
+ regex_filters = parameters["try_task_config"].get("tasks-regex")
+ include_regexes = exclude_regexes = []
+ if regex_filters:
+ include_regexes = [re.compile(r) for r in regex_filters.get("include", [])]
+ exclude_regexes = [re.compile(r) for r in regex_filters.get("exclude", [])]
+
+ return [
+ l
+ for l, t in full_task_graph.tasks.items()
+ if standard_filter(t, parameters)
+ and filter_out_shipping_phase(t, parameters)
+ and filter_out_devedition(t, parameters)
+ and filter_by_uncommon_try_tasks(t.label)
+ and filter_by_regex(t.label, include_regexes, mode="include")
+ and filter_by_regex(t.label, exclude_regexes, mode="exclude")
+ and filter_unsupported_artifact_builds(t, parameters)
+ and filter_out_shippable(t)
+ ]
+
+
+@_target_task("default")
+def target_tasks_default(full_task_graph, parameters, graph_config):
+ """Target the tasks which have indicated they should be run on this project
+ via the `run_on_projects` attributes."""
+ return [
+ l
+ for l, t in full_task_graph.tasks.items()
+ if standard_filter(t, parameters)
+ and filter_out_shipping_phase(t, parameters)
+ and filter_out_devedition(t, parameters)
+ ]
+
+
+@_target_task("autoland_tasks")
+def target_tasks_autoland(full_task_graph, parameters, graph_config):
+ """In addition to doing the filtering by project that the 'default'
+ filter does, also remove any tests running against shippable builds
+ for non-backstop pushes."""
+ filtered_for_project = target_tasks_default(
+ full_task_graph, parameters, graph_config
+ )
+
+ def filter(task):
+ if task.kind != "test":
+ return True
+
+ if parameters["backstop"]:
+ return True
+
+ build_type = task.attributes.get("build_type")
+
+ if not build_type or build_type != "opt" or filter_out_shippable(task):
+ return True
+
+ return False
+
+ return [l for l in filtered_for_project if filter(full_task_graph[l])]
+
+
+@_target_task("mozilla_central_tasks")
+def target_tasks_mozilla_central(full_task_graph, parameters, graph_config):
+ """In addition to doing the filtering by project that the 'default'
+ filter does, also remove any tests running against regular (aka not shippable,
+ asan, etc.) opt builds."""
+ filtered_for_project = target_tasks_default(
+ full_task_graph, parameters, graph_config
+ )
+
+ def filter(task):
+ if task.kind != "test":
+ return True
+
+ build_platform = task.attributes.get("build_platform")
+ build_type = task.attributes.get("build_type")
+ shippable = task.attributes.get("shippable", False)
+
+ if not build_platform or not build_type:
+ return True
+
+ family = platform_family(build_platform)
+ # We need to know whether this test is against a "regular" opt build
+ # (which is to say, not shippable, asan, tsan, or any other opt build
+ # with other properties). There's no positive test for this, so we have to
+ # do it somewhat hackily. Android doesn't have variants other than shippable
+ # so it is pretty straightforward to check for. Other platforms have many
+ # variants, but none of the regular opt builds we're looking for have a "-"
+ # in their platform name, so this works (for now).
+ is_regular_opt = (
+ family == "android" and not shippable
+ ) or "-" not in build_platform
+
+ if build_type != "opt" or not is_regular_opt:
+ return True
+
+ return False
+
+ return [l for l in filtered_for_project if filter(full_task_graph[l])]
+
+
+@_target_task("graphics_tasks")
+def target_tasks_graphics(full_task_graph, parameters, graph_config):
+ """In addition to doing the filtering by project that the 'default'
+ filter does, also remove artifact builds because we have csets on
+ the graphics branch that aren't on the candidate branches of artifact
+ builds"""
+ filtered_for_project = target_tasks_default(
+ full_task_graph, parameters, graph_config
+ )
+
+ def filter(task):
+ if task.attributes["kind"] == "artifact-build":
+ return False
+ return True
+
+ return [l for l in filtered_for_project if filter(full_task_graph[l])]
+
+
+@_target_task("mozilla_beta_tasks")
+def target_tasks_mozilla_beta(full_task_graph, parameters, graph_config):
+ """Select the set of tasks required for a promotable beta or release build
+ of desktop, plus android CI. The candidates build process involves a pipeline
+ of builds and signing, but does not include beetmover or balrog jobs."""
+
+ return [
+ l
+ for l, t in full_task_graph.tasks.items()
+ if filter_release_tasks(t, parameters) and standard_filter(t, parameters)
+ ]
+
+
+@_target_task("mozilla_release_tasks")
+def target_tasks_mozilla_release(full_task_graph, parameters, graph_config):
+ """Select the set of tasks required for a promotable beta or release build
+ of desktop, plus android CI. The candidates build process involves a pipeline
+ of builds and signing, but does not include beetmover or balrog jobs."""
+
+ return [
+ l
+ for l, t in full_task_graph.tasks.items()
+ if filter_release_tasks(t, parameters) and standard_filter(t, parameters)
+ ]
+
+
+@_target_task("mozilla_esr102_tasks")
+def target_tasks_mozilla_esr102(full_task_graph, parameters, graph_config):
+ """Select the set of tasks required for a promotable beta or release build
+ of desktop, without android CI. The candidates build process involves a pipeline
+ of builds and signing, but does not include beetmover or balrog jobs."""
+
+ def filter(task):
+ if not filter_release_tasks(task, parameters):
+ return False
+
+ if not standard_filter(task, parameters):
+ return False
+
+ platform = task.attributes.get("build_platform")
+
+ # Android is not built on esr102.
+ if platform and "android" in platform:
+ return False
+
+ return True
+
+ return [l for l, t in full_task_graph.tasks.items() if filter(t)]
+
+
+@_target_task("mozilla_esr115_tasks")
+def target_tasks_mozilla_esr115(full_task_graph, parameters, graph_config):
+ """Select the set of tasks required for a promotable beta or release build
+ of desktop, without android CI. The candidates build process involves a pipeline
+ of builds and signing, but does not include beetmover or balrog jobs."""
+
+ def filter(task):
+ if not filter_release_tasks(task, parameters):
+ return False
+
+ if not standard_filter(task, parameters):
+ return False
+
+ platform = task.attributes.get("build_platform")
+
+ # Android is not built on esr115.
+ if platform and "android" in platform:
+ return False
+
+ return True
+
+ return [l for l, t in full_task_graph.tasks.items() if filter(t)]
+
+
+@_target_task("promote_desktop")
+def target_tasks_promote_desktop(full_task_graph, parameters, graph_config):
+ """Select the superset of tasks required to promote a beta or release build
+ of a desktop product. This should include all non-android
+ mozilla_{beta,release} tasks, plus l10n, beetmover, balrog, etc."""
+
+ def filter(task):
+ # Bug 1758507 - geckoview ships in the promote phase
+ if not parameters["release_type"].startswith("esr") and is_geckoview(
+ task, parameters
+ ):
+ return True
+
+ if task.attributes.get("shipping_product") != parameters["release_product"]:
+ return False
+
+ # 'secondary' balrog/update verify/final verify tasks only run for RCs
+ if parameters.get("release_type") != "release-rc":
+ if "secondary" in task.kind:
+ return False
+
+ if not filter_out_missing_signoffs(task, parameters):
+ return False
+
+ if task.attributes.get("shipping_phase") == "promote":
+ return True
+
+ return [l for l, t in full_task_graph.tasks.items() if filter(t)]
+
+
+def is_geckoview(task, parameters):
+ return (
+ task.attributes.get("shipping_product") == "fennec"
+ and task.kind in ("beetmover-geckoview", "upload-symbols")
+ and parameters["release_product"] == "firefox"
+ )
+
+
+@_target_task("push_desktop")
+def target_tasks_push_desktop(full_task_graph, parameters, graph_config):
+ """Select the set of tasks required to push a build of desktop to cdns.
+ Previous build deps will be optimized out via action task."""
+ filtered_for_candidates = target_tasks_promote_desktop(
+ full_task_graph,
+ parameters,
+ graph_config,
+ )
+
+ def filter(task):
+ if not filter_out_missing_signoffs(task, parameters):
+ return False
+ # Include promotion tasks; these will be optimized out
+ if task.label in filtered_for_candidates:
+ return True
+
+ if (
+ task.attributes.get("shipping_product") == parameters["release_product"]
+ and task.attributes.get("shipping_phase") == "push"
+ ):
+ return True
+
+ return [l for l, t in full_task_graph.tasks.items() if filter(t)]
+
+
+@_target_task("ship_desktop")
+def target_tasks_ship_desktop(full_task_graph, parameters, graph_config):
+ """Select the set of tasks required to ship desktop.
+ Previous build deps will be optimized out via action task."""
+ is_rc = parameters.get("release_type") == "release-rc"
+ if is_rc:
+ # ship_firefox_rc runs after `promote` rather than `push`; include
+ # all promote tasks.
+ filtered_for_candidates = target_tasks_promote_desktop(
+ full_task_graph,
+ parameters,
+ graph_config,
+ )
+ else:
+ # ship_firefox runs after `push`; include all push tasks.
+ filtered_for_candidates = target_tasks_push_desktop(
+ full_task_graph,
+ parameters,
+ graph_config,
+ )
+
+ def filter(task):
+ if not filter_out_missing_signoffs(task, parameters):
+ return False
+ # Include promotion tasks; these will be optimized out
+ if task.label in filtered_for_candidates:
+ return True
+
+ if (
+ task.attributes.get("shipping_product") != parameters["release_product"]
+ or task.attributes.get("shipping_phase") != "ship"
+ ):
+ return False
+
+ if "secondary" in task.kind:
+ return is_rc
+ return not is_rc
+
+ return [l for l, t in full_task_graph.tasks.items() if filter(t)]
+
+
+@_target_task("pine_tasks")
+def target_tasks_pine(full_task_graph, parameters, graph_config):
+ """Bug 1339179 - no mobile automation needed on pine"""
+
+ def filter(task):
+ platform = task.attributes.get("build_platform")
+ # disable mobile jobs
+ if str(platform).startswith("android"):
+ return False
+ # disable asan
+ if platform == "linux64-asan":
+ return False
+ # disable non-pine and tasks with a shipping phase
+ if standard_filter(task, parameters) or filter_out_shipping_phase(
+ task, parameters
+ ):
+ return True
+
+ return [l for l, t in full_task_graph.tasks.items() if filter(t)]
+
+
+@_target_task("kaios_tasks")
+def target_tasks_kaios(full_task_graph, parameters, graph_config):
+ """The set of tasks to run for kaios integration"""
+
+ def filter(task):
+ # We disable everything in central, and adjust downstream.
+ return False
+
+ return [l for l, t in full_task_graph.tasks.items() if filter(t)]
+
+
+@_target_task("ship_geckoview")
+def target_tasks_ship_geckoview(full_task_graph, parameters, graph_config):
+ """Select the set of tasks required to ship geckoview nightly. The
+ nightly build process involves a pipeline of builds and an upload to
+ maven.mozilla.org."""
+ index_path = (
+ f"{graph_config['trust-domain']}.v2.{parameters['project']}.revision."
+ f"{parameters['head_rev']}.taskgraph.decision-ship-geckoview"
+ )
+ if os.environ.get("MOZ_AUTOMATION") and retry(
+ index_exists,
+ args=(index_path,),
+ kwargs={
+ "reason": "to avoid triggering multiple nightlies off the same revision",
+ },
+ ):
+ return []
+
+ def filter(task):
+ # XXX Starting 69, we don't ship Fennec Nightly anymore. We just want geckoview to be
+ # uploaded
+ return task.attributes.get("shipping_product") == "fennec" and task.kind in (
+ "beetmover-geckoview",
+ "upload-symbols",
+ )
+
+ return [l for l, t in full_task_graph.tasks.items() if filter(t)]
+
+
+@_target_task("custom-car_perf_testing")
+def target_tasks_custom_car_perf_testing(full_task_graph, parameters, graph_config):
+ """Select tasks required for running daily performance tests for custom chromium-as-release."""
+
+ def filter(task):
+ platform = task.attributes.get("test_platform")
+ attributes = task.attributes
+ if attributes.get("unittest_suite") != "raptor":
+ return False
+
+ try_name = attributes.get("raptor_try_name")
+
+ # Completely ignore all non-shippable platforms
+ if "shippable" not in platform:
+ return False
+
+ # ignore all windows 7 perf jobs scheduled automatically
+ if "windows7" in platform or "windows10-32" in platform:
+ return False
+
+ # Desktop selection only for CaR
+ if "android" not in platform:
+ if "browsertime" in try_name and "custom-car" in try_name:
+ return True
+ return False
+
+ return [l for l, t in full_task_graph.tasks.items() if filter(t)]
+
+
+@_target_task("general_perf_testing")
+def target_tasks_general_perf_testing(full_task_graph, parameters, graph_config):
+ """
+ Select tasks required for running performance tests 3 times a week.
+ """
+
+ def filter(task):
+ platform = task.attributes.get("test_platform")
+ attributes = task.attributes
+ if attributes.get("unittest_suite") != "raptor":
+ return False
+
+ try_name = attributes.get("raptor_try_name")
+
+ # Completely ignore all non-shippable platforms
+ if "shippable" not in platform:
+ return False
+
+ # ignore all windows 7 perf jobs scheduled automatically
+ if "windows7" in platform or "windows10-32" in platform:
+ return False
+
+ # Desktop selection
+ if "android" not in platform:
+ # Select some browsertime tasks as desktop smoke-tests
+ if "browsertime" in try_name:
+ if "chrome" in try_name:
+ return True
+ if "chromium" in try_name:
+ return True
+ # chromium-as-release has it's own cron
+ if "custom-car" in try_name:
+ return False
+ if "-live" in try_name:
+ return True
+ if "-fis" in try_name:
+ return False
+ if "linux" in platform:
+ if "speedometer" in try_name:
+ return True
+ if "safari" and "benchmark" in try_name:
+ # Speedometer 3 is broken on Safari, see bug 1802922
+ if "speedometer3" in try_name:
+ return False
+ return True
+ else:
+ # Don't run tp6 raptor tests
+ if "tp6" in try_name:
+ return False
+ # Android selection
+ elif accept_raptor_android_build(platform):
+ if "chrome-m" in try_name and (
+ ("ebay" in try_name and "live" not in try_name)
+ or (
+ "live" in try_name
+ and ("facebook" in try_name or "dailymail" in try_name)
+ )
+ ):
+ return False
+ # Ignore all fennec tests here, we run those weekly
+ if "fennec" in try_name:
+ return False
+ # Only run webrender tests
+ if "chrome-m" not in try_name and "-qr" not in platform:
+ return False
+ # Select live site tests
+ if "-live" in try_name:
+ return True
+ # Select fenix resource usage tests
+ if "fenix" in try_name:
+ # Bug 1816421 disable fission perf tests
+ if "-fis" in try_name:
+ return False
+ if "-power" in try_name:
+ return True
+ # Select geckoview resource usage tests
+ if "geckoview" in try_name:
+ # Bug 1816421 disable fission perf tests
+ if "-fis" in try_name:
+ return False
+ # Run cpu+memory, and power tests
+ cpu_n_memory_task = "-cpu" in try_name and "-memory" in try_name
+ power_task = "-power" in try_name
+ # Ignore cpu+memory+power tests
+ if power_task and cpu_n_memory_task:
+ return False
+ if cpu_n_memory_task:
+ return False
+ if power_task:
+ return "browsertime" in try_name
+ # Select browsertime-specific tests
+ if "browsertime" in try_name:
+ if "speedometer" in try_name:
+ return True
+ return False
+
+ return [l for l, t in full_task_graph.tasks.items() if filter(t)]
+
+
+def make_desktop_nightly_filter(platforms):
+ """Returns a filter that gets all nightly tasks on the given platform."""
+
+ def filter(task, parameters):
+ return all(
+ [
+ filter_on_platforms(task, platforms),
+ filter_for_project(task, parameters),
+ task.attributes.get("shippable", False),
+ # Tests and nightly only builds don't have `shipping_product` set
+ task.attributes.get("shipping_product")
+ in {None, "firefox", "thunderbird"},
+ task.kind not in {"l10n"}, # no on-change l10n
+ ]
+ )
+
+ return filter
+
+
+@_target_task("sp-perftests")
+def target_tasks_speedometer_tests(full_task_graph, parameters, graph_config):
+ def filter(task):
+ platform = task.attributes.get("test_platform")
+ attributes = task.attributes
+ if attributes.get("unittest_suite") != "raptor":
+ return False
+ if "windows10-32" not in platform:
+ try_name = attributes.get("raptor_try_name")
+ if (
+ "browsertime" in try_name
+ and "speedometer" in try_name
+ and "chrome" in try_name
+ ):
+ return True
+
+ return [l for l, t in full_task_graph.tasks.items() if filter(t)]
+
+
+@_target_task("nightly_linux")
+def target_tasks_nightly_linux(full_task_graph, parameters, graph_config):
+ """Select the set of tasks required for a nightly build of linux. The
+ nightly build process involves a pipeline of builds, signing,
+ and, eventually, uploading the tasks to balrog."""
+ filter = make_desktop_nightly_filter({"linux64-shippable", "linux-shippable"})
+ return [l for l, t in full_task_graph.tasks.items() if filter(t, parameters)]
+
+
+@_target_task("nightly_macosx")
+def target_tasks_nightly_macosx(full_task_graph, parameters, graph_config):
+ """Select the set of tasks required for a nightly build of macosx. The
+ nightly build process involves a pipeline of builds, signing,
+ and, eventually, uploading the tasks to balrog."""
+ filter = make_desktop_nightly_filter({"macosx64-shippable"})
+ return [l for l, t in full_task_graph.tasks.items() if filter(t, parameters)]
+
+
+@_target_task("nightly_win32")
+def target_tasks_nightly_win32(full_task_graph, parameters, graph_config):
+ """Select the set of tasks required for a nightly build of win32 and win64.
+ The nightly build process involves a pipeline of builds, signing,
+ and, eventually, uploading the tasks to balrog."""
+ filter = make_desktop_nightly_filter({"win32-shippable"})
+ return [l for l, t in full_task_graph.tasks.items() if filter(t, parameters)]
+
+
+@_target_task("nightly_win64")
+def target_tasks_nightly_win64(full_task_graph, parameters, graph_config):
+ """Select the set of tasks required for a nightly build of win32 and win64.
+ The nightly build process involves a pipeline of builds, signing,
+ and, eventually, uploading the tasks to balrog."""
+ filter = make_desktop_nightly_filter({"win64-shippable"})
+ return [l for l, t in full_task_graph.tasks.items() if filter(t, parameters)]
+
+
+@_target_task("nightly_win64_aarch64")
+def target_tasks_nightly_win64_aarch64(full_task_graph, parameters, graph_config):
+ """Select the set of tasks required for a nightly build of win32 and win64.
+ The nightly build process involves a pipeline of builds, signing,
+ and, eventually, uploading the tasks to balrog."""
+ filter = make_desktop_nightly_filter({"win64-aarch64-shippable"})
+ return [l for l, t in full_task_graph.tasks.items() if filter(t, parameters)]
+
+
+@_target_task("nightly_asan")
+def target_tasks_nightly_asan(full_task_graph, parameters, graph_config):
+ """Select the set of tasks required for a nightly build of asan. The
+ nightly build process involves a pipeline of builds, signing,
+ and, eventually, uploading the tasks to balrog."""
+ filter = make_desktop_nightly_filter(
+ {"linux64-asan-reporter-shippable", "win64-asan-reporter-shippable"}
+ )
+ return [l for l, t in full_task_graph.tasks.items() if filter(t, parameters)]
+
+
+@_target_task("daily_releases")
+def target_tasks_daily_releases(full_task_graph, parameters, graph_config):
+ """Select the set of tasks required to identify if we should release.
+ If we determine that we should the task will communicate to ship-it to
+ schedule the release itself."""
+
+ def filter(task):
+ return task.kind in ["maybe-release"]
+
+ return [l for l, t in full_task_graph.tasks.items() if filter(t)]
+
+
+@_target_task("nightly_desktop")
+def target_tasks_nightly_desktop(full_task_graph, parameters, graph_config):
+ """Select the set of tasks required for a nightly build of linux, mac,
+ windows."""
+ index_path = (
+ f"{graph_config['trust-domain']}.v2.{parameters['project']}.revision."
+ f"{parameters['head_rev']}.taskgraph.decision-nightly-desktop"
+ )
+ if os.environ.get("MOZ_AUTOMATION") and retry(
+ index_exists,
+ args=(index_path,),
+ kwargs={
+ "reason": "to avoid triggering multiple nightlies off the same revision",
+ },
+ ):
+ return []
+
+ # Tasks that aren't platform specific
+ release_filter = make_desktop_nightly_filter({None})
+ release_tasks = [
+ l for l, t in full_task_graph.tasks.items() if release_filter(t, parameters)
+ ]
+ # Avoid duplicate tasks.
+ return list(
+ set(target_tasks_nightly_win32(full_task_graph, parameters, graph_config))
+ | set(target_tasks_nightly_win64(full_task_graph, parameters, graph_config))
+ | set(
+ target_tasks_nightly_win64_aarch64(
+ full_task_graph, parameters, graph_config
+ )
+ )
+ | set(target_tasks_nightly_macosx(full_task_graph, parameters, graph_config))
+ | set(target_tasks_nightly_linux(full_task_graph, parameters, graph_config))
+ | set(target_tasks_nightly_asan(full_task_graph, parameters, graph_config))
+ | set(release_tasks)
+ )
+
+
+# Run Searchfox analysis once daily.
+@_target_task("searchfox_index")
+def target_tasks_searchfox(full_task_graph, parameters, graph_config):
+ """Select tasks required for indexing Firefox for Searchfox web site each day"""
+ return [
+ "searchfox-linux64-searchfox/debug",
+ "searchfox-macosx64-searchfox/debug",
+ "searchfox-win64-searchfox/debug",
+ "searchfox-android-armv7-searchfox/debug",
+ "source-test-file-metadata-bugzilla-components",
+ "source-test-file-metadata-test-info-all",
+ "source-test-wpt-metadata-summary",
+ ]
+
+
+# Run build linux64-plain-clang-trunk/opt on mozilla-central/beta with perf tests
+@_target_task("linux64_clang_trunk_perf")
+def target_tasks_build_linux64_clang_trunk_perf(
+ full_task_graph, parameters, graph_config
+):
+ """Select tasks required to run perf test on linux64 build with clang trunk"""
+
+ # Only keep tasks generated from platform `linux1804-64-clang-trunk-qr/opt`
+ def filter(task_label):
+ if "linux1804-64-clang-trunk-qr/opt" in task_label:
+ return True
+ return False
+
+ return [l for l, t in full_task_graph.tasks.items() if filter(t.label)]
+
+
+# Run Updatebot's cron job 4 times daily.
+@_target_task("updatebot_cron")
+def target_tasks_updatebot_cron(full_task_graph, parameters, graph_config):
+ """Select tasks required to run Updatebot's cron job"""
+ return ["updatebot-cron"]
+
+
+@_target_task("customv8_update")
+def target_tasks_customv8_update(full_task_graph, parameters, graph_config):
+ """Select tasks required for building latest d8/v8 version."""
+ return ["toolchain-linux64-custom-v8"]
+
+
+@_target_task("chromium_update")
+def target_tasks_chromium_update(full_task_graph, parameters, graph_config):
+ """Select tasks required for building latest chromium versions."""
+ return [
+ "fetch-linux64-chromium",
+ "fetch-win32-chromium",
+ "fetch-win64-chromium",
+ "fetch-mac-chromium",
+ "toolchain-linux64-custom-car",
+ "toolchain-win64-custom-car",
+ ]
+
+
+@_target_task("file_update")
+def target_tasks_file_update(full_task_graph, parameters, graph_config):
+ """Select the set of tasks required to perform nightly in-tree file updates"""
+
+ def filter(task):
+ # For now any task in the repo-update kind is ok
+ return task.kind in ["repo-update"]
+
+ return [l for l, t in full_task_graph.tasks.items() if filter(t)]
+
+
+@_target_task("l10n_bump")
+def target_tasks_l10n_bump(full_task_graph, parameters, graph_config):
+ """Select the set of tasks required to perform l10n bumping."""
+
+ def filter(task):
+ # For now any task in the repo-update kind is ok
+ return task.kind in ["l10n-bump"]
+
+ return [l for l, t in full_task_graph.tasks.items() if filter(t)]
+
+
+@_target_task("merge_automation")
+def target_tasks_merge_automation(full_task_graph, parameters, graph_config):
+ """Select the set of tasks required to perform repository merges."""
+
+ def filter(task):
+ # For now any task in the repo-update kind is ok
+ return task.kind in ["merge-automation"]
+
+ return [l for l, t in full_task_graph.tasks.items() if filter(t)]
+
+
+@_target_task("scriptworker_canary")
+def target_tasks_scriptworker_canary(full_task_graph, parameters, graph_config):
+ """Select the set of tasks required to run scriptworker canaries."""
+
+ def filter(task):
+ # For now any task in the repo-update kind is ok
+ return task.kind in ["scriptworker-canary"]
+
+ return [l for l, t in full_task_graph.tasks.items() if filter(t)]
+
+
+@_target_task("cron_bouncer_check")
+def target_tasks_bouncer_check(full_task_graph, parameters, graph_config):
+ """Select the set of tasks required to perform bouncer version verification."""
+
+ def filter(task):
+ if not filter_for_project(task, parameters):
+ return False
+ # For now any task in the repo-update kind is ok
+ return task.kind in ["cron-bouncer-check"]
+
+ return [l for l, t in full_task_graph.tasks.items() if filter(t)]
+
+
+@_target_task("staging_release_builds")
+def target_tasks_staging_release(full_task_graph, parameters, graph_config):
+ """
+ Select all builds that are part of releases.
+ """
+
+ def filter(task):
+ if not task.attributes.get("shipping_product"):
+ return False
+ if parameters["release_type"].startswith(
+ "esr"
+ ) and "android" in task.attributes.get("build_platform", ""):
+ return False
+ if parameters["release_type"] != "beta" and "devedition" in task.attributes.get(
+ "build_platform", ""
+ ):
+ return False
+ if task.attributes.get("shipping_phase") == "build":
+ return True
+ return False
+
+ return [l for l, t in full_task_graph.tasks.items() if filter(t)]
+
+
+@_target_task("release_simulation")
+def target_tasks_release_simulation(full_task_graph, parameters, graph_config):
+ """
+ Select builds that would run on push on a release branch.
+ """
+ project_by_release = {
+ "nightly": "mozilla-central",
+ "beta": "mozilla-beta",
+ "release": "mozilla-release",
+ "esr102": "mozilla-esr102",
+ "esr115": "mozilla-esr115",
+ }
+ target_project = project_by_release.get(parameters["release_type"])
+ if target_project is None:
+ raise Exception("Unknown or unspecified release type in simulation run.")
+
+ def filter_for_target_project(task):
+ """Filter tasks by project. Optionally enable nightlies."""
+ run_on_projects = set(task.attributes.get("run_on_projects", []))
+ return match_run_on_projects(target_project, run_on_projects)
+
+ def filter_out_android_on_esr(task):
+ if parameters["release_type"].startswith(
+ "esr"
+ ) and "android" in task.attributes.get("build_platform", ""):
+ return False
+ return True
+
+ return [
+ l
+ for l, t in full_task_graph.tasks.items()
+ if filter_release_tasks(t, parameters)
+ and filter_out_cron(t, parameters)
+ and filter_for_target_project(t)
+ and filter_out_android_on_esr(t)
+ ]
+
+
+@_target_task("codereview")
+def target_tasks_codereview(full_task_graph, parameters, graph_config):
+ """Select all code review tasks needed to produce a report"""
+
+ def filter(task):
+ # Ending tasks
+ if task.kind in ["code-review"]:
+ return True
+
+ # Analyzer tasks
+ if task.attributes.get("code-review") is True:
+ return True
+
+ return False
+
+ return [l for l, t in full_task_graph.tasks.items() if filter(t)]
+
+
+@_target_task("nothing")
+def target_tasks_nothing(full_task_graph, parameters, graph_config):
+ """Select nothing, for DONTBUILD pushes"""
+ return []
+
+
+@_target_task("daily_beta_perf")
+def target_tasks_daily_beta_perf(full_task_graph, parameters, graph_config):
+ """
+ Select performance tests on the beta branch to be run daily
+ """
+ index_path = (
+ f"{graph_config['trust-domain']}.v2.{parameters['project']}.revision."
+ f"{parameters['head_rev']}.taskgraph.decision-daily-beta-perf"
+ )
+ if os.environ.get("MOZ_AUTOMATION") and retry(
+ index_exists,
+ args=(index_path,),
+ kwargs={
+ "reason": "to avoid triggering multiple daily beta perftests off of the same revision",
+ },
+ ):
+ return []
+
+ def filter(task):
+ platform = task.attributes.get("test_platform")
+ attributes = task.attributes
+ try_name = attributes.get("raptor_try_name")
+
+ if attributes.get("unittest_suite") != "raptor":
+ return False
+
+ if platform and accept_raptor_android_build(platform):
+ # Select browsertime & geckoview specific tests
+ if "browsertime" and "geckoview" in try_name:
+ if "g5" in platform:
+ return False
+ if "power" in try_name:
+ return False
+ if "cpu" in try_name:
+ return False
+ if "profiling" in try_name:
+ return False
+ if "-live" in try_name:
+ return False
+ if "speedometer" in try_name:
+ return True
+ if "webgl" in try_name:
+ return True
+ if "tp6m" in try_name:
+ return True
+
+ return False
+
+ return [l for l, t in full_task_graph.tasks.items() if filter(t)]
+
+
+@_target_task("weekly_release_perf")
+def target_tasks_weekly_release_perf(full_task_graph, parameters, graph_config):
+ """
+ Select performance tests on the release branch to be run weekly
+ """
+
+ def filter(task):
+ platform = task.attributes.get("test_platform")
+ attributes = task.attributes
+ try_name = attributes.get("raptor_try_name")
+
+ if attributes.get("unittest_suite") != "raptor":
+ return False
+
+ if platform and accept_raptor_android_build(platform):
+ # Select browsertime & geckoview specific tests
+ if "browsertime" and "geckoview" in try_name:
+ if "g5" in platform:
+ return False
+ if "power" in try_name:
+ return False
+ if "cpu" in try_name:
+ return False
+ if "profiling" in try_name:
+ return False
+ if "-live" in try_name:
+ return False
+ if "speedometer" in try_name:
+ return True
+ if "webgl" in try_name:
+ return True
+ if "tp6m" in try_name:
+ return True
+ if "youtube-playback" in try_name:
+ return True
+
+ return False
+
+ return [l for l, t in full_task_graph.tasks.items() if filter(t)]
+
+
+@_target_task("raptor_tp6m")
+def target_tasks_raptor_tp6m(full_task_graph, parameters, graph_config):
+ """
+ Select tasks required for running raptor cold page-load tests on fenix and refbrow
+ """
+
+ def filter(task):
+ platform = task.attributes.get("build_platform")
+ attributes = task.attributes
+
+ if platform and "android" not in platform:
+ return False
+ if attributes.get("unittest_suite") != "raptor":
+ return False
+ try_name = attributes.get("raptor_try_name")
+ if "-cold" in try_name and "shippable" in platform:
+ # Get browsertime amazon smoke tests
+ if (
+ "browsertime" in try_name
+ and "amazon" in try_name
+ and "search" not in try_name
+ and "fenix" in try_name
+ ):
+ return True
+
+ return [l for l, t in full_task_graph.tasks.items() if filter(t)]
+
+
+@_target_task("backfill_all_browsertime")
+def target_tasks_backfill_all_browsertime(full_task_graph, parameters, graph_config):
+ """
+ Search for revisions that contains patches that were reviewed by perftest reviewers
+ and landed the day before the cron is running. Trigger backfill-all-browsertime action
+ task on each of them.
+ """
+ from gecko_taskgraph.actions.util import get_decision_task_id, get_pushes
+
+ def date_is_yesterday(date):
+ yesterday = datetime.today() - timedelta(days=1)
+ date = datetime.fromtimestamp(date)
+ return date.date() == yesterday.date()
+
+ def reviewed_by_perftest(push):
+ try:
+ commit_message = get_hg_commit_message(
+ os.path.join(GECKO, graph_config["product-dir"]), rev=push
+ )
+ except Exception as e:
+ print(e)
+ return False
+
+ for line in commit_message.split("\n\n"):
+ if line.lower().startswith("bug ") and "r=" in line:
+ if "perftest-reviewers" in line.split("r=")[-1]:
+ print(line)
+ return True
+ return False
+
+ pushes = get_pushes(
+ project=parameters["head_repository"],
+ end_id=int(parameters["pushlog_id"]),
+ depth=200,
+ full_response=True,
+ )
+ for push_id in sorted([int(p) for p in pushes.keys()], reverse=True):
+ push_rev = pushes[str(push_id)]["changesets"][-1]
+ push_info = find_hg_revision_push_info(
+ "https://hg.mozilla.org/integration/" + parameters["project"], push_rev
+ )
+ pushdate = int(push_info["pushdate"])
+ if date_is_yesterday(pushdate) and reviewed_by_perftest(push_rev):
+ from gecko_taskgraph.actions.util import trigger_action
+
+ print(
+ f"Revision {push_rev} was created yesterday and was reviewed by "
+ f"#perftest-reviewers."
+ )
+ try:
+ push_decision_task_id = get_decision_task_id(
+ parameters["project"], push_id
+ )
+ except Exception:
+ print(f"Could not find decision task for push {push_id}")
+ continue
+ try:
+ trigger_action(
+ action_name="backfill-all-browsertime",
+ # This lets the action know on which push we want to add a new task
+ decision_task_id=push_decision_task_id,
+ )
+ except Exception as e:
+ print(f"Failed to trigger action for {push_rev}: {e}")
+
+ return []
+
+
+@_target_task("condprof")
+def target_tasks_condprof(full_task_graph, parameters, graph_config):
+ """
+ Select tasks required for building conditioned profiles.
+ """
+ for name, task in full_task_graph.tasks.items():
+ if task.kind == "condprof":
+ if "a51" not in name: # bug 1765348
+ yield name
+
+
+@_target_task("system_symbols")
+def target_tasks_system_symbols(full_task_graph, parameters, graph_config):
+ """
+ Select tasks for scraping and uploading system symbols.
+ """
+ for name, task in full_task_graph.tasks.items():
+ if task.kind in [
+ "system-symbols",
+ "system-symbols-upload",
+ "system-symbols-reprocess",
+ ]:
+ yield name
+
+
+@_target_task("perftest")
+def target_tasks_perftest(full_task_graph, parameters, graph_config):
+ """
+ Select perftest tasks we want to run daily
+ """
+ for name, task in full_task_graph.tasks.items():
+ if task.kind != "perftest":
+ continue
+ if task.attributes.get("cron", False):
+ yield name
+
+
+@_target_task("perftest-on-autoland")
+def target_tasks_perftest_autoland(full_task_graph, parameters, graph_config):
+ """
+ Select perftest tasks we want to run daily
+ """
+ for name, task in full_task_graph.tasks.items():
+ if task.kind != "perftest":
+ continue
+ if task.attributes.get("cron", False) and any(
+ test_name in name for test_name in ["view"]
+ ):
+ yield name
+
+
+@_target_task("l10n-cross-channel")
+def target_tasks_l10n_cross_channel(full_task_graph, parameters, graph_config):
+ """Select the set of tasks required to run l10n cross-channel."""
+
+ def filter(task):
+ return task.kind in ["l10n-cross-channel"]
+
+ return [l for l, t in full_task_graph.tasks.items() if filter(t)]
+
+
+@_target_task("are-we-esmified-yet")
+def target_tasks_are_we_esmified_yet(full_task_graph, parameters, graph_config):
+ """
+ select the task to track the progress of the esmification project
+ """
+ return [
+ l for l, t in full_task_graph.tasks.items() if t.kind == "are-we-esmified-yet"
+ ]
+
+
+@_target_task("eslint-build")
+def target_tasks_eslint_build(full_task_graph, parameters, graph_config):
+ """Select the task to run additional ESLint rules which require a build."""
+
+ for name, task in full_task_graph.tasks.items():
+ if task.kind != "source-test":
+ continue
+ if "eslint-build" in name:
+ yield name
+
+
+@_target_task("holly_tasks")
+def target_tasks_holly(full_task_graph, parameters, graph_config):
+ """Bug 1814661: only run updatebot tasks on holly"""
+
+ def filter(task):
+ return task.kind == "updatebot"
+
+ return [l for l, t in full_task_graph.tasks.items() if filter(t)]
diff --git a/taskcluster/gecko_taskgraph/test/__init__.py b/taskcluster/gecko_taskgraph/test/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/__init__.py
diff --git a/taskcluster/gecko_taskgraph/test/automationrelevance.json b/taskcluster/gecko_taskgraph/test/automationrelevance.json
new file mode 100644
index 0000000000..3bdfa9ed9e
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/automationrelevance.json
@@ -0,0 +1,358 @@
+{
+ "changesets": [
+ {
+ "author": "James Long <longster@gmail.com>",
+ "backsoutnodes": [],
+ "bugs": [
+ {
+ "no": "1300866",
+ "url": "https://bugzilla.mozilla.org/show_bug.cgi?id=1300866"
+ }
+ ],
+ "date": [1473196655.0, 14400],
+ "desc": "Bug 1300866 - expose devtools require to new debugger r=jlast,bgrins",
+ "extra": {
+ "branch": "default"
+ },
+ "files": ["devtools/client/debugger/index.html"],
+ "node": "ae2144aa4356b65c2f8c0de8c9082dcb7e330e24",
+ "parents": ["37c9349b4e8167a61b08b7e119c21ea177b98942"],
+ "perfherderurl": "https://treeherder.mozilla.org/perf.html#/compare?originalProject=mozilla-central&originalRevision=a14f88a9af7a59e677478694bafd9375ac53683e&newProject=mozilla-central&newRevision=ae2144aa4356b65c2f8c0de8c9082dcb7e330e24",
+ "pushdate": [1473261248, 0],
+ "pushhead": "a14f88a9af7a59e677478694bafd9375ac53683e",
+ "pushid": 30664,
+ "pushnodes": [
+ "ae2144aa4356b65c2f8c0de8c9082dcb7e330e24",
+ "73a6a267a50a0e1c41e689b265ad3eebe43d7ac6",
+ "16a1a91f9269ab95dd83eb29dc5d0227665f7d94",
+ "99c542fa43a72ee863c813b5624048d1b443549b",
+ "a6b6a93eb41a05e310a11f0172f01ba9b21d3eac",
+ "541c9086c0f27fba60beecc9bc94543103895c86",
+ "041a925171e431bf51fb50193ab19d156088c89a",
+ "a14f88a9af7a59e677478694bafd9375ac53683e"
+ ],
+ "pushuser": "cbook@mozilla.com",
+ "rev": 312890,
+ "reviewers": [
+ {
+ "name": "jlast",
+ "revset": "reviewer(jlast)"
+ },
+ {
+ "name": "bgrins",
+ "revset": "reviewer(bgrins)"
+ }
+ ],
+ "treeherderrepo": "mozilla-central",
+ "treeherderrepourl": "https://treeherder.mozilla.org/#/jobs?repo=mozilla-central"
+ },
+ {
+ "author": "Wes Kocher <wkocher@mozilla.com>",
+ "backsoutnodes": [],
+ "bugs": [],
+ "date": [1473208638.0, 25200],
+ "desc": "Merge m-c to fx-team, a=merge",
+ "extra": {
+ "branch": "default"
+ },
+ "files": ["taskcluster/scripts/builder/build-l10n.sh"],
+ "node": "73a6a267a50a0e1c41e689b265ad3eebe43d7ac6",
+ "parents": [
+ "ae2144aa4356b65c2f8c0de8c9082dcb7e330e24",
+ "91c2b9d5c1354ca79e5b174591dbb03b32b15bbf"
+ ],
+ "perfherderurl": "https://treeherder.mozilla.org/perf.html#/compare?originalProject=mozilla-central&originalRevision=a14f88a9af7a59e677478694bafd9375ac53683e&newProject=mozilla-central&newRevision=ae2144aa4356b65c2f8c0de8c9082dcb7e330e24",
+ "pushdate": [1473261248, 0],
+ "pushhead": "a14f88a9af7a59e677478694bafd9375ac53683e",
+ "pushid": 30664,
+ "pushnodes": [
+ "ae2144aa4356b65c2f8c0de8c9082dcb7e330e24",
+ "73a6a267a50a0e1c41e689b265ad3eebe43d7ac6",
+ "16a1a91f9269ab95dd83eb29dc5d0227665f7d94",
+ "99c542fa43a72ee863c813b5624048d1b443549b",
+ "a6b6a93eb41a05e310a11f0172f01ba9b21d3eac",
+ "541c9086c0f27fba60beecc9bc94543103895c86",
+ "041a925171e431bf51fb50193ab19d156088c89a",
+ "a14f88a9af7a59e677478694bafd9375ac53683e"
+ ],
+ "pushuser": "cbook@mozilla.com",
+ "rev": 312891,
+ "reviewers": [
+ {
+ "name": "merge",
+ "revset": "reviewer(merge)"
+ }
+ ],
+ "treeherderrepo": "mozilla-central",
+ "treeherderrepourl": "https://treeherder.mozilla.org/#/jobs?repo=mozilla-central"
+ },
+ {
+ "author": "Towkir Ahmed <towkir17@gmail.com>",
+ "backsoutnodes": [],
+ "bugs": [
+ {
+ "no": "1296648",
+ "url": "https://bugzilla.mozilla.org/show_bug.cgi?id=1296648"
+ }
+ ],
+ "date": [1472957580.0, 14400],
+ "desc": "Bug 1296648 - Fix direction of .ruleview-expander.theme-twisty in RTL locales. r=ntim",
+ "extra": {
+ "branch": "default"
+ },
+ "files": ["devtools/client/themes/rules.css"],
+ "node": "16a1a91f9269ab95dd83eb29dc5d0227665f7d94",
+ "parents": ["73a6a267a50a0e1c41e689b265ad3eebe43d7ac6"],
+ "perfherderurl": "https://treeherder.mozilla.org/perf.html#/compare?originalProject=mozilla-central&originalRevision=a14f88a9af7a59e677478694bafd9375ac53683e&newProject=mozilla-central&newRevision=ae2144aa4356b65c2f8c0de8c9082dcb7e330e24",
+ "pushdate": [1473261248, 0],
+ "pushhead": "a14f88a9af7a59e677478694bafd9375ac53683e",
+ "pushid": 30664,
+ "pushnodes": [
+ "ae2144aa4356b65c2f8c0de8c9082dcb7e330e24",
+ "73a6a267a50a0e1c41e689b265ad3eebe43d7ac6",
+ "16a1a91f9269ab95dd83eb29dc5d0227665f7d94",
+ "99c542fa43a72ee863c813b5624048d1b443549b",
+ "a6b6a93eb41a05e310a11f0172f01ba9b21d3eac",
+ "541c9086c0f27fba60beecc9bc94543103895c86",
+ "041a925171e431bf51fb50193ab19d156088c89a",
+ "a14f88a9af7a59e677478694bafd9375ac53683e"
+ ],
+ "pushuser": "cbook@mozilla.com",
+ "rev": 312892,
+ "reviewers": [
+ {
+ "name": "ntim",
+ "revset": "reviewer(ntim)"
+ }
+ ],
+ "treeherderrepo": "mozilla-central",
+ "treeherderrepourl": "https://treeherder.mozilla.org/#/jobs?repo=mozilla-central"
+ },
+ {
+ "author": "Oriol <oriol-bugzilla@hotmail.com>",
+ "backsoutnodes": [],
+ "bugs": [
+ {
+ "no": "1300336",
+ "url": "https://bugzilla.mozilla.org/show_bug.cgi?id=1300336"
+ }
+ ],
+ "date": [1472921160.0, 14400],
+ "desc": "Bug 1300336 - Allow pseudo-arrays to have a length property. r=fitzgen",
+ "extra": {
+ "branch": "default"
+ },
+ "files": [
+ "devtools/client/webconsole/test/browser_webconsole_output_06.js",
+ "devtools/server/actors/object.js"
+ ],
+ "node": "99c542fa43a72ee863c813b5624048d1b443549b",
+ "parents": ["16a1a91f9269ab95dd83eb29dc5d0227665f7d94"],
+ "perfherderurl": "https://treeherder.mozilla.org/perf.html#/compare?originalProject=mozilla-central&originalRevision=a14f88a9af7a59e677478694bafd9375ac53683e&newProject=mozilla-central&newRevision=ae2144aa4356b65c2f8c0de8c9082dcb7e330e24",
+ "pushdate": [1473261248, 0],
+ "pushhead": "a14f88a9af7a59e677478694bafd9375ac53683e",
+ "pushid": 30664,
+ "pushnodes": [
+ "ae2144aa4356b65c2f8c0de8c9082dcb7e330e24",
+ "73a6a267a50a0e1c41e689b265ad3eebe43d7ac6",
+ "16a1a91f9269ab95dd83eb29dc5d0227665f7d94",
+ "99c542fa43a72ee863c813b5624048d1b443549b",
+ "a6b6a93eb41a05e310a11f0172f01ba9b21d3eac",
+ "541c9086c0f27fba60beecc9bc94543103895c86",
+ "041a925171e431bf51fb50193ab19d156088c89a",
+ "a14f88a9af7a59e677478694bafd9375ac53683e"
+ ],
+ "pushuser": "cbook@mozilla.com",
+ "rev": 312893,
+ "reviewers": [
+ {
+ "name": "fitzgen",
+ "revset": "reviewer(fitzgen)"
+ }
+ ],
+ "treeherderrepo": "mozilla-central",
+ "treeherderrepourl": "https://treeherder.mozilla.org/#/jobs?repo=mozilla-central"
+ },
+ {
+ "author": "Ruturaj Vartak <ruturaj@gmail.com>",
+ "backsoutnodes": [],
+ "bugs": [
+ {
+ "no": "1295010",
+ "url": "https://bugzilla.mozilla.org/show_bug.cgi?id=1295010"
+ }
+ ],
+ "date": [1472854020.0, -7200],
+ "desc": "Bug 1295010 - Don't move the eyedropper to the out of browser window by keyboard navigation. r=pbro\n\nMozReview-Commit-ID: vBwmSxVNXK",
+ "extra": {
+ "amend_source": "6885024ef00cfa33d73c59dc03c48ebcda9ccbdd",
+ "branch": "default",
+ "histedit_source": "c43167f0a7cbe9f4c733b15da726e5150a9529ba",
+ "rebase_source": "b74df421630fc46dab6b6cc026bf3e0ae6b4a651"
+ },
+ "files": [
+ "devtools/client/inspector/test/browser_inspector_highlighter-eyedropper-events.js",
+ "devtools/client/inspector/test/head.js",
+ "devtools/server/actors/highlighters/eye-dropper.js"
+ ],
+ "node": "a6b6a93eb41a05e310a11f0172f01ba9b21d3eac",
+ "parents": ["99c542fa43a72ee863c813b5624048d1b443549b"],
+ "perfherderurl": "https://treeherder.mozilla.org/perf.html#/compare?originalProject=mozilla-central&originalRevision=a14f88a9af7a59e677478694bafd9375ac53683e&newProject=mozilla-central&newRevision=ae2144aa4356b65c2f8c0de8c9082dcb7e330e24",
+ "pushdate": [1473261248, 0],
+ "pushhead": "a14f88a9af7a59e677478694bafd9375ac53683e",
+ "pushid": 30664,
+ "pushnodes": [
+ "ae2144aa4356b65c2f8c0de8c9082dcb7e330e24",
+ "73a6a267a50a0e1c41e689b265ad3eebe43d7ac6",
+ "16a1a91f9269ab95dd83eb29dc5d0227665f7d94",
+ "99c542fa43a72ee863c813b5624048d1b443549b",
+ "a6b6a93eb41a05e310a11f0172f01ba9b21d3eac",
+ "541c9086c0f27fba60beecc9bc94543103895c86",
+ "041a925171e431bf51fb50193ab19d156088c89a",
+ "a14f88a9af7a59e677478694bafd9375ac53683e"
+ ],
+ "pushuser": "cbook@mozilla.com",
+ "rev": 312894,
+ "reviewers": [
+ {
+ "name": "pbro",
+ "revset": "reviewer(pbro)"
+ }
+ ],
+ "treeherderrepo": "mozilla-central",
+ "treeherderrepourl": "https://treeherder.mozilla.org/#/jobs?repo=mozilla-central"
+ },
+ {
+ "author": "Matteo Ferretti <mferretti@mozilla.com>",
+ "backsoutnodes": [],
+ "bugs": [
+ {
+ "no": "1299154",
+ "url": "https://bugzilla.mozilla.org/show_bug.cgi?id=1299154"
+ }
+ ],
+ "date": [1472629906.0, -7200],
+ "desc": "Bug 1299154 - added Set/GetOverrideDPPX to restorefromHistory; r=mstange\n\nMozReview-Commit-ID: AsyAcG3Igbn\n",
+ "extra": {
+ "branch": "default",
+ "committer": "Matteo Ferretti <mferretti@mozilla.com> 1473236511 -7200"
+ },
+ "files": [
+ "docshell/base/nsDocShell.cpp",
+ "dom/tests/mochitest/general/test_contentViewer_overrideDPPX.html"
+ ],
+ "node": "541c9086c0f27fba60beecc9bc94543103895c86",
+ "parents": ["a6b6a93eb41a05e310a11f0172f01ba9b21d3eac"],
+ "perfherderurl": "https://treeherder.mozilla.org/perf.html#/compare?originalProject=mozilla-central&originalRevision=a14f88a9af7a59e677478694bafd9375ac53683e&newProject=mozilla-central&newRevision=ae2144aa4356b65c2f8c0de8c9082dcb7e330e24",
+ "pushdate": [1473261248, 0],
+ "pushhead": "a14f88a9af7a59e677478694bafd9375ac53683e",
+ "pushid": 30664,
+ "pushnodes": [
+ "ae2144aa4356b65c2f8c0de8c9082dcb7e330e24",
+ "73a6a267a50a0e1c41e689b265ad3eebe43d7ac6",
+ "16a1a91f9269ab95dd83eb29dc5d0227665f7d94",
+ "99c542fa43a72ee863c813b5624048d1b443549b",
+ "a6b6a93eb41a05e310a11f0172f01ba9b21d3eac",
+ "541c9086c0f27fba60beecc9bc94543103895c86",
+ "041a925171e431bf51fb50193ab19d156088c89a",
+ "a14f88a9af7a59e677478694bafd9375ac53683e"
+ ],
+ "pushuser": "cbook@mozilla.com",
+ "rev": 312895,
+ "reviewers": [
+ {
+ "name": "mstange",
+ "revset": "reviewer(mstange)"
+ }
+ ],
+ "treeherderrepo": "mozilla-central",
+ "treeherderrepourl": "https://treeherder.mozilla.org/#/jobs?repo=mozilla-central"
+ },
+ {
+ "author": "Patrick Brosset <pbrosset@mozilla.com>",
+ "backsoutnodes": [],
+ "bugs": [
+ {
+ "no": "1295010",
+ "url": "https://bugzilla.mozilla.org/show_bug.cgi?id=1295010"
+ }
+ ],
+ "date": [1473239449.0, -7200],
+ "desc": "Bug 1295010 - Removed testActor from highlighterHelper in inspector tests; r=me\n\nMozReview-Commit-ID: GMksl81iGcp",
+ "extra": {
+ "branch": "default"
+ },
+ "files": [
+ "devtools/client/inspector/test/browser_inspector_highlighter-eyedropper-events.js",
+ "devtools/client/inspector/test/head.js"
+ ],
+ "node": "041a925171e431bf51fb50193ab19d156088c89a",
+ "parents": ["541c9086c0f27fba60beecc9bc94543103895c86"],
+ "perfherderurl": "https://treeherder.mozilla.org/perf.html#/compare?originalProject=mozilla-central&originalRevision=a14f88a9af7a59e677478694bafd9375ac53683e&newProject=mozilla-central&newRevision=ae2144aa4356b65c2f8c0de8c9082dcb7e330e24",
+ "pushdate": [1473261248, 0],
+ "pushhead": "a14f88a9af7a59e677478694bafd9375ac53683e",
+ "pushid": 30664,
+ "pushnodes": [
+ "ae2144aa4356b65c2f8c0de8c9082dcb7e330e24",
+ "73a6a267a50a0e1c41e689b265ad3eebe43d7ac6",
+ "16a1a91f9269ab95dd83eb29dc5d0227665f7d94",
+ "99c542fa43a72ee863c813b5624048d1b443549b",
+ "a6b6a93eb41a05e310a11f0172f01ba9b21d3eac",
+ "541c9086c0f27fba60beecc9bc94543103895c86",
+ "041a925171e431bf51fb50193ab19d156088c89a",
+ "a14f88a9af7a59e677478694bafd9375ac53683e"
+ ],
+ "pushuser": "cbook@mozilla.com",
+ "rev": 312896,
+ "reviewers": [
+ {
+ "name": "me",
+ "revset": "reviewer(me)"
+ }
+ ],
+ "treeherderrepo": "mozilla-central",
+ "treeherderrepourl": "https://treeherder.mozilla.org/#/jobs?repo=mozilla-central"
+ },
+ {
+ "author": "Carsten \"Tomcat\" Book <cbook@mozilla.com>",
+ "backsoutnodes": [],
+ "bugs": [],
+ "date": [1473261233.0, -7200],
+ "desc": "merge fx-team to mozilla-central a=merge",
+ "extra": {
+ "branch": "default"
+ },
+ "files": [],
+ "node": "a14f88a9af7a59e677478694bafd9375ac53683e",
+ "parents": [
+ "3d0b41fdd93bd8233745eadb4e0358e385bf2cb9",
+ "041a925171e431bf51fb50193ab19d156088c89a"
+ ],
+ "perfherderurl": "https://treeherder.mozilla.org/perf.html#/compare?originalProject=mozilla-central&originalRevision=a14f88a9af7a59e677478694bafd9375ac53683e&newProject=mozilla-central&newRevision=ae2144aa4356b65c2f8c0de8c9082dcb7e330e24",
+ "pushdate": [1473261248, 0],
+ "pushhead": "a14f88a9af7a59e677478694bafd9375ac53683e",
+ "pushid": 30664,
+ "pushnodes": [
+ "ae2144aa4356b65c2f8c0de8c9082dcb7e330e24",
+ "73a6a267a50a0e1c41e689b265ad3eebe43d7ac6",
+ "16a1a91f9269ab95dd83eb29dc5d0227665f7d94",
+ "99c542fa43a72ee863c813b5624048d1b443549b",
+ "a6b6a93eb41a05e310a11f0172f01ba9b21d3eac",
+ "541c9086c0f27fba60beecc9bc94543103895c86",
+ "041a925171e431bf51fb50193ab19d156088c89a",
+ "a14f88a9af7a59e677478694bafd9375ac53683e"
+ ],
+ "pushuser": "cbook@mozilla.com",
+ "rev": 312897,
+ "reviewers": [
+ {
+ "name": "merge",
+ "revset": "reviewer(merge)"
+ }
+ ],
+ "treeherderrepo": "mozilla-central",
+ "treeherderrepourl": "https://treeherder.mozilla.org/#/jobs?repo=mozilla-central"
+ }
+ ],
+ "visible": true
+}
diff --git a/taskcluster/gecko_taskgraph/test/conftest.py b/taskcluster/gecko_taskgraph/test/conftest.py
new file mode 100644
index 0000000000..09231c5ab2
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/conftest.py
@@ -0,0 +1,220 @@
+# Any copyright is dedicated to the public domain.
+# http://creativecommons.org/publicdomain/zero/1.0/
+
+import os
+
+import pytest
+from mach.logging import LoggingManager
+from responses import RequestsMock
+from taskgraph import generator as generator_mod
+from taskgraph import target_tasks as target_tasks_mod
+from taskgraph.config import GraphConfig, load_graph_config
+from taskgraph.generator import Kind, TaskGraphGenerator
+from taskgraph.optimize import base as optimize_mod
+from taskgraph.optimize.base import OptimizationStrategy
+from taskgraph.parameters import Parameters
+
+from gecko_taskgraph import GECKO
+from gecko_taskgraph.actions import render_actions_json
+from gecko_taskgraph.util.templates import merge
+
+
+@pytest.fixture
+def responses():
+ with RequestsMock() as rsps:
+ yield rsps
+
+
+@pytest.fixture(scope="session", autouse=True)
+def patch_prefherder(request):
+ from _pytest.monkeypatch import MonkeyPatch
+
+ m = MonkeyPatch()
+ m.setattr(
+ "gecko_taskgraph.util.bugbug._write_perfherder_data",
+ lambda lower_is_better: None,
+ )
+ yield
+ m.undo()
+
+
+@pytest.fixture(scope="session", autouse=True)
+def enable_logging():
+ """Ensure logs from gecko_taskgraph are displayed when a test fails."""
+ lm = LoggingManager()
+ lm.add_terminal_logging()
+
+
+@pytest.fixture(scope="session")
+def graph_config():
+ return load_graph_config(os.path.join(GECKO, "taskcluster", "ci"))
+
+
+@pytest.fixture(scope="session")
+def actions_json(graph_config):
+ decision_task_id = "abcdef"
+ return render_actions_json(Parameters(strict=False), graph_config, decision_task_id)
+
+
+def fake_loader(kind, path, config, parameters, loaded_tasks):
+ for i in range(3):
+ dependencies = {}
+ if i >= 1:
+ dependencies["prev"] = f"{kind}-t-{i - 1}"
+
+ task = {
+ "kind": kind,
+ "label": f"{kind}-t-{i}",
+ "description": f"{kind} task {i}",
+ "attributes": {"_tasknum": str(i)},
+ "task": {
+ "i": i,
+ "metadata": {"name": f"t-{i}"},
+ "deadline": "soon",
+ },
+ "dependencies": dependencies,
+ }
+ if "job-defaults" in config:
+ task = merge(config["job-defaults"], task)
+ yield task
+
+
+class FakeTransform:
+ transforms = []
+ params = {}
+
+ def __init__(self):
+ pass
+
+ @classmethod
+ def get(self, field, default):
+ try:
+ return getattr(self, field)
+ except AttributeError:
+ return default
+
+
+class FakeKind(Kind):
+ def _get_loader(self):
+ return fake_loader
+
+ def load_tasks(self, parameters, loaded_tasks, write_artifacts):
+ FakeKind.loaded_kinds.append(self.name)
+ return super().load_tasks(parameters, loaded_tasks, write_artifacts)
+
+ @staticmethod
+ def create(name, extra_config, graph_config):
+ if name == "fullfake":
+ config = FakeTransform()
+ else:
+ config = {"transforms": []}
+ if extra_config:
+ config.update(extra_config)
+ return FakeKind(name, "/fake", config, graph_config)
+
+
+class WithFakeKind(TaskGraphGenerator):
+ def _load_kinds(self, graph_config, target_kind=None):
+ for kind_name, cfg in self.parameters["_kinds"]:
+ yield FakeKind.create(kind_name, cfg, graph_config)
+
+
+def fake_load_graph_config(root_dir):
+ graph_config = GraphConfig(
+ {"trust-domain": "test-domain", "taskgraph": {}}, root_dir
+ )
+ graph_config.__dict__["register"] = lambda: None
+ return graph_config
+
+
+class FakeParameters(dict):
+ strict = True
+
+ def file_url(self, path, pretty=False):
+ return ""
+
+
+class FakeOptimization(OptimizationStrategy):
+ description = "Fake strategy for testing"
+
+ def __init__(self, mode, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ self.mode = mode
+
+ def should_remove_task(self, task, params, arg):
+ if self.mode == "always":
+ return True
+ if self.mode == "even":
+ return task.task["i"] % 2 == 0
+ if self.mode == "odd":
+ return task.task["i"] % 2 != 0
+ return False
+
+
+@pytest.fixture
+def maketgg(monkeypatch):
+ def inner(target_tasks=None, kinds=[("_fake", [])], params=None):
+ params = params or {}
+ FakeKind.loaded_kinds = loaded_kinds = []
+ target_tasks = target_tasks or []
+
+ def target_tasks_method(full_task_graph, parameters, graph_config):
+ return target_tasks
+
+ fake_registry = {
+ mode: FakeOptimization(mode) for mode in ("always", "never", "even", "odd")
+ }
+
+ target_tasks_mod._target_task_methods["test_method"] = target_tasks_method
+ monkeypatch.setattr(optimize_mod, "registry", fake_registry)
+
+ parameters = FakeParameters(
+ {
+ "_kinds": kinds,
+ "backstop": False,
+ "enable_always_target": False,
+ "target_tasks_method": "test_method",
+ "test_manifest_loader": "default",
+ "try_mode": None,
+ "try_task_config": {},
+ "tasks_for": "hg-push",
+ "project": "mozilla-central",
+ }
+ )
+ parameters.update(params)
+
+ monkeypatch.setattr(generator_mod, "load_graph_config", fake_load_graph_config)
+
+ tgg = WithFakeKind("/root", parameters)
+ tgg.loaded_kinds = loaded_kinds
+ return tgg
+
+ return inner
+
+
+@pytest.fixture
+def run_transform():
+
+ graph_config = fake_load_graph_config("/root")
+ kind = FakeKind.create("fake", {}, graph_config)
+
+ def inner(xform, tasks):
+ if isinstance(tasks, dict):
+ tasks = [tasks]
+ return xform(kind.config, tasks)
+
+ return inner
+
+
+@pytest.fixture
+def run_full_config_transform():
+
+ graph_config = fake_load_graph_config("/root")
+ kind = FakeKind.create("fullfake", {}, graph_config)
+
+ def inner(xform, tasks):
+ if isinstance(tasks, dict):
+ tasks = [tasks]
+ return xform(kind.config, tasks)
+
+ return inner
diff --git a/taskcluster/gecko_taskgraph/test/docs/kinds.rst b/taskcluster/gecko_taskgraph/test/docs/kinds.rst
new file mode 100644
index 0000000000..fdc16db1e3
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/docs/kinds.rst
@@ -0,0 +1,12 @@
+Task Kinds
+==========
+
+Fake task kind documentation.
+
+newkind
+----------
+Kind found in separate doc dir,
+
+anotherkind
+-----------
+Here's another.
diff --git a/taskcluster/gecko_taskgraph/test/docs/parameters.rst b/taskcluster/gecko_taskgraph/test/docs/parameters.rst
new file mode 100644
index 0000000000..f943f48e69
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/docs/parameters.rst
@@ -0,0 +1,14 @@
+==========
+Parameters
+==========
+
+Fake parameters documentation.
+
+Heading
+-------
+
+``newparameter``
+ A new parameter that could be defined in a project.
+
+``anotherparameter``
+ And here is another one.
diff --git a/taskcluster/gecko_taskgraph/test/python.ini b/taskcluster/gecko_taskgraph/test/python.ini
new file mode 100644
index 0000000000..2dca8fc144
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/python.ini
@@ -0,0 +1,23 @@
+[DEFAULT]
+subsuite = taskgraph
+
+[test_actions_util.py]
+[test_decision.py]
+[test_files_changed.py]
+[test_main.py]
+[test_morph.py]
+[test_optimize_strategies.py]
+[test_target_tasks.py]
+[test_taskcluster_yml.py]
+[test_transforms_job.py]
+[test_transforms_test.py]
+[test_try_option_syntax.py]
+[test_util_attributes.py]
+[test_util_backstop.py]
+[test_util_bugbug.py]
+[test_util_chunking.py]
+[test_util_docker.py]
+[test_util_partials.py]
+[test_util_runnable_jobs.py]
+[test_util_templates.py]
+[test_util_verify.py]
diff --git a/taskcluster/gecko_taskgraph/test/test_actions_util.py b/taskcluster/gecko_taskgraph/test/test_actions_util.py
new file mode 100644
index 0000000000..7c38caea57
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/test_actions_util.py
@@ -0,0 +1,179 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import json
+import unittest
+from pprint import pprint
+from unittest.mock import patch
+
+import pytest
+from mozunit import MockedOpen, main
+from taskgraph import create
+from taskgraph.util import taskcluster
+
+from gecko_taskgraph import actions
+from gecko_taskgraph.actions.util import combine_task_graph_files, relativize_datestamps
+from gecko_taskgraph.decision import read_artifact
+
+TASK_DEF = {
+ "created": "2017-10-10T18:33:03.460Z",
+ # note that this is not an even number of seconds off!
+ "deadline": "2017-10-11T18:33:03.461Z",
+ "dependencies": [],
+ "expires": "2018-10-10T18:33:04.461Z",
+ "payload": {
+ "artifacts": {
+ "public": {
+ "expires": "2018-10-10T18:33:03.463Z",
+ "path": "/builds/worker/artifacts",
+ "type": "directory",
+ },
+ },
+ "maxRunTime": 1800,
+ },
+}
+
+
+@pytest.fixture(scope="module", autouse=True)
+def enable_test_mode():
+ create.testing = True
+ taskcluster.testing = True
+
+
+class TestRelativize(unittest.TestCase):
+ def test_relativize(self):
+ rel = relativize_datestamps(TASK_DEF)
+ import pprint
+
+ pprint.pprint(rel)
+ assert rel["created"] == {"relative-datestamp": "0 seconds"}
+ assert rel["deadline"] == {"relative-datestamp": "86400 seconds"}
+ assert rel["expires"] == {"relative-datestamp": "31536001 seconds"}
+ assert rel["payload"]["artifacts"]["public"]["expires"] == {
+ "relative-datestamp": "31536000 seconds"
+ }
+
+
+class TestCombineTaskGraphFiles(unittest.TestCase):
+ def test_no_suffixes(self):
+ with MockedOpen({}):
+ combine_task_graph_files([])
+ self.assertRaises(Exception, open("artifacts/to-run.json"))
+
+ @patch("gecko_taskgraph.actions.util.rename_artifact")
+ def test_one_suffix(self, rename_artifact):
+ combine_task_graph_files(["0"])
+ rename_artifact.assert_any_call("task-graph-0.json", "task-graph.json")
+ rename_artifact.assert_any_call(
+ "label-to-taskid-0.json", "label-to-taskid.json"
+ )
+ rename_artifact.assert_any_call("to-run-0.json", "to-run.json")
+
+ def test_several_suffixes(self):
+ files = {
+ "artifacts/task-graph-0.json": json.dumps({"taska": {}}),
+ "artifacts/label-to-taskid-0.json": json.dumps({"taska": "TASKA"}),
+ "artifacts/to-run-0.json": json.dumps(["taska"]),
+ "artifacts/task-graph-1.json": json.dumps({"taskb": {}}),
+ "artifacts/label-to-taskid-1.json": json.dumps({"taskb": "TASKB"}),
+ "artifacts/to-run-1.json": json.dumps(["taskb"]),
+ }
+ with MockedOpen(files):
+ combine_task_graph_files(["0", "1"])
+ self.assertEqual(
+ read_artifact("task-graph.json"),
+ {
+ "taska": {},
+ "taskb": {},
+ },
+ )
+ self.assertEqual(
+ read_artifact("label-to-taskid.json"),
+ {
+ "taska": "TASKA",
+ "taskb": "TASKB",
+ },
+ )
+ self.assertEqual(
+ sorted(read_artifact("to-run.json")),
+ [
+ "taska",
+ "taskb",
+ ],
+ )
+
+
+def is_subset(subset, superset):
+ if isinstance(subset, dict):
+ return all(
+ key in superset and is_subset(val, superset[key])
+ for key, val in subset.items()
+ )
+
+ if isinstance(subset, list) or isinstance(subset, set):
+ return all(
+ any(is_subset(subitem, superitem) for superitem in superset)
+ for subitem in subset
+ )
+
+ if isinstance(subset, str):
+ return subset in superset
+
+ # assume that subset is a plain value if none of the above match
+ return subset == superset
+
+
+@pytest.mark.parametrize(
+ "task_def,expected",
+ [
+ pytest.param(
+ {"tags": {"kind": "decision-task"}},
+ {
+ "hookPayload": {
+ "decision": {
+ "action": {"cb_name": "retrigger-decision"},
+ },
+ },
+ },
+ id="retrigger_decision",
+ ),
+ pytest.param(
+ {"tags": {"action": "backfill-task"}},
+ {
+ "hookPayload": {
+ "decision": {
+ "action": {"cb_name": "retrigger-decision"},
+ },
+ },
+ },
+ id="retrigger_backfill",
+ ),
+ ],
+)
+def test_extract_applicable_action(
+ responses, monkeypatch, actions_json, task_def, expected
+):
+ base_url = "https://taskcluster"
+ decision_task_id = "dddd"
+ task_id = "tttt"
+
+ monkeypatch.setenv("TASK_ID", task_id)
+ monkeypatch.setenv("TASKCLUSTER_ROOT_URL", base_url)
+ monkeypatch.setenv("TASKCLUSTER_PROXY_URL", base_url)
+ responses.add(
+ responses.GET,
+ f"{base_url}/api/queue/v1/task/{task_id}",
+ status=200,
+ json=task_def,
+ )
+ action = actions.util._extract_applicable_action(
+ actions_json, "retrigger", decision_task_id, task_id
+ )
+ pprint(action, indent=2)
+ assert is_subset(expected, action)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/taskcluster/gecko_taskgraph/test/test_decision.py b/taskcluster/gecko_taskgraph/test/test_decision.py
new file mode 100644
index 0000000000..81be7e0c44
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/test_decision.py
@@ -0,0 +1,176 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import json
+import os
+import shutil
+import tempfile
+import unittest
+from unittest.mock import patch
+
+import pytest
+from mozunit import MockedOpen, main
+from taskgraph.util.yaml import load_yaml
+
+from gecko_taskgraph import decision
+from gecko_taskgraph.parameters import register_parameters
+
+FAKE_GRAPH_CONFIG = {"product-dir": "browser", "taskgraph": {}}
+
+
+@pytest.fixture(scope="module", autouse=True)
+def register():
+ register_parameters()
+
+
+class TestDecision(unittest.TestCase):
+ def test_write_artifact_json(self):
+ data = [{"some": "data"}]
+ tmpdir = tempfile.mkdtemp()
+ try:
+ decision.ARTIFACTS_DIR = os.path.join(tmpdir, "artifacts")
+ decision.write_artifact("artifact.json", data)
+ with open(os.path.join(decision.ARTIFACTS_DIR, "artifact.json")) as f:
+ self.assertEqual(json.load(f), data)
+ finally:
+ if os.path.exists(tmpdir):
+ shutil.rmtree(tmpdir)
+ decision.ARTIFACTS_DIR = "artifacts"
+
+ def test_write_artifact_yml(self):
+ data = [{"some": "data"}]
+ tmpdir = tempfile.mkdtemp()
+ try:
+ decision.ARTIFACTS_DIR = os.path.join(tmpdir, "artifacts")
+ decision.write_artifact("artifact.yml", data)
+ self.assertEqual(load_yaml(decision.ARTIFACTS_DIR, "artifact.yml"), data)
+ finally:
+ if os.path.exists(tmpdir):
+ shutil.rmtree(tmpdir)
+ decision.ARTIFACTS_DIR = "artifacts"
+
+
+class TestGetDecisionParameters(unittest.TestCase):
+
+ ttc_file = os.path.join(os.getcwd(), "try_task_config.json")
+
+ def setUp(self):
+ self.options = {
+ "base_repository": "https://hg.mozilla.org/mozilla-unified",
+ "head_repository": "https://hg.mozilla.org/mozilla-central",
+ "head_rev": "abcd",
+ "head_ref": "ef01",
+ "head_tag": "",
+ "message": "",
+ "project": "mozilla-central",
+ "pushlog_id": "143",
+ "pushdate": 1503691511,
+ "owner": "nobody@mozilla.com",
+ "repository_type": "hg",
+ "tasks_for": "hg-push",
+ "level": "3",
+ }
+
+ @patch("gecko_taskgraph.decision.get_hg_revision_branch")
+ @patch("gecko_taskgraph.decision._determine_more_accurate_base_rev")
+ def test_simple_options(
+ self, mock_determine_more_accurate_base_rev, mock_get_hg_revision_branch
+ ):
+ mock_get_hg_revision_branch.return_value = "default"
+ mock_determine_more_accurate_base_rev.return_value = "baserev"
+ with MockedOpen({self.ttc_file: None}):
+ params = decision.get_decision_parameters(FAKE_GRAPH_CONFIG, self.options)
+ self.assertEqual(params["pushlog_id"], "143")
+ self.assertEqual(params["build_date"], 1503691511)
+ self.assertEqual(params["hg_branch"], "default")
+ self.assertEqual(params["moz_build_date"], "20170825200511")
+ self.assertEqual(params["try_mode"], None)
+ self.assertEqual(params["try_options"], None)
+ self.assertEqual(params["try_task_config"], {})
+
+ @patch("gecko_taskgraph.decision.get_hg_revision_branch")
+ @patch("gecko_taskgraph.decision._determine_more_accurate_base_rev")
+ def test_no_email_owner(
+ self, mock_determine_more_accurate_base_rev, mock_get_hg_revision_branch
+ ):
+ mock_get_hg_revision_branch.return_value = "default"
+ mock_determine_more_accurate_base_rev.return_value = "baserev"
+ self.options["owner"] = "ffxbld"
+ with MockedOpen({self.ttc_file: None}):
+ params = decision.get_decision_parameters(FAKE_GRAPH_CONFIG, self.options)
+ self.assertEqual(params["owner"], "ffxbld@noreply.mozilla.org")
+
+ @patch("gecko_taskgraph.decision.get_hg_revision_branch")
+ @patch("gecko_taskgraph.decision.get_hg_commit_message")
+ @patch("gecko_taskgraph.decision._determine_more_accurate_base_rev")
+ def test_try_options(
+ self,
+ mock_determine_more_accurate_base_rev,
+ mock_get_hg_commit_message,
+ mock_get_hg_revision_branch,
+ ):
+ mock_get_hg_commit_message.return_value = "try: -b do -t all --artifact"
+ mock_get_hg_revision_branch.return_value = "default"
+ mock_determine_more_accurate_base_rev.return_value = "baserev"
+ self.options["project"] = "try"
+ with MockedOpen({self.ttc_file: None}):
+ params = decision.get_decision_parameters(FAKE_GRAPH_CONFIG, self.options)
+ self.assertEqual(params["try_mode"], "try_option_syntax")
+ self.assertEqual(params["try_options"]["build_types"], "do")
+ self.assertEqual(params["try_options"]["unittests"], "all")
+ self.assertEqual(
+ params["try_task_config"],
+ {
+ "gecko-profile": False,
+ "use-artifact-builds": True,
+ "env": {},
+ },
+ )
+
+ @patch("gecko_taskgraph.decision.get_hg_revision_branch")
+ @patch("gecko_taskgraph.decision.get_hg_commit_message")
+ @patch("gecko_taskgraph.decision._determine_more_accurate_base_rev")
+ def test_try_task_config(
+ self,
+ mock_get_hg_commit_message,
+ mock_get_hg_revision_branch,
+ mock_determine_more_accurate_base_rev,
+ ):
+ mock_get_hg_commit_message.return_value = "Fuzzy query=foo"
+ mock_get_hg_revision_branch.return_value = "default"
+ mock_determine_more_accurate_base_rev.return_value = "baserev"
+ ttc = {"tasks": ["a", "b"]}
+ self.options["project"] = "try"
+ with MockedOpen({self.ttc_file: json.dumps(ttc)}):
+ params = decision.get_decision_parameters(FAKE_GRAPH_CONFIG, self.options)
+ self.assertEqual(params["try_mode"], "try_task_config")
+ self.assertEqual(params["try_options"], None)
+ self.assertEqual(params["try_task_config"], ttc)
+
+ def test_try_syntax_from_message_empty(self):
+ self.assertEqual(decision.try_syntax_from_message(""), "")
+
+ def test_try_syntax_from_message_no_try_syntax(self):
+ self.assertEqual(decision.try_syntax_from_message("abc | def"), "")
+
+ def test_try_syntax_from_message_initial_try_syntax(self):
+ self.assertEqual(
+ decision.try_syntax_from_message("try: -f -o -o"), "try: -f -o -o"
+ )
+
+ def test_try_syntax_from_message_initial_try_syntax_multiline(self):
+ self.assertEqual(
+ decision.try_syntax_from_message("try: -f -o -o\nabc\ndef"), "try: -f -o -o"
+ )
+
+ def test_try_syntax_from_message_embedded_try_syntax_multiline(self):
+ self.assertEqual(
+ decision.try_syntax_from_message("some stuff\ntry: -f -o -o\nabc\ndef"),
+ "try: -f -o -o",
+ )
+
+
+if __name__ == "__main__":
+ main()
diff --git a/taskcluster/gecko_taskgraph/test/test_files_changed.py b/taskcluster/gecko_taskgraph/test/test_files_changed.py
new file mode 100644
index 0000000000..5b9a016649
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/test_files_changed.py
@@ -0,0 +1,90 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import json
+import os
+import unittest
+
+from mozunit import main
+
+from gecko_taskgraph import files_changed
+from gecko_taskgraph.util import hg
+
+PARAMS = {
+ "head_repository": "https://hg.mozilla.org/mozilla-central",
+ "head_rev": "a14f88a9af7a",
+}
+
+FILES_CHANGED = [
+ "devtools/client/debugger/index.html",
+ "devtools/client/inspector/test/browser_inspector_highlighter-eyedropper-events.js",
+ "devtools/client/inspector/test/head.js",
+ "devtools/client/themes/rules.css",
+ "devtools/client/webconsole/test/browser_webconsole_output_06.js",
+ "devtools/server/actors/highlighters/eye-dropper.js",
+ "devtools/server/actors/object.js",
+ "docshell/base/nsDocShell.cpp",
+ "dom/tests/mochitest/general/test_contentViewer_overrideDPPX.html",
+ "taskcluster/scripts/builder/build-l10n.sh",
+]
+
+
+class FakeResponse:
+ def json(self):
+ with open(
+ os.path.join(os.path.dirname(__file__), "automationrelevance.json")
+ ) as f:
+ return json.load(f)
+
+
+class TestGetChangedFiles(unittest.TestCase):
+ def setUp(self):
+ files_changed.get_changed_files.clear()
+ self.old_get = hg.requests.get
+
+ def fake_get(url, **kwargs):
+ return FakeResponse()
+
+ hg.requests.get = fake_get
+
+ def tearDown(self):
+ hg.requests.get = self.old_get
+ files_changed.get_changed_files.clear()
+
+ def test_get_changed_files(self):
+ """Get_changed_files correctly gets the list of changed files in a push.
+ This tests against the production hg.mozilla.org so that it will detect
+ any changes in the format of the returned data."""
+ self.assertEqual(
+ sorted(
+ files_changed.get_changed_files(
+ PARAMS["head_repository"], PARAMS["head_rev"]
+ )
+ ),
+ FILES_CHANGED,
+ )
+
+
+class TestCheck(unittest.TestCase):
+ def setUp(self):
+ files_changed.get_changed_files[
+ PARAMS["head_repository"], PARAMS["head_rev"]
+ ] = FILES_CHANGED
+
+ def tearDown(self):
+ files_changed.get_changed_files.clear()
+
+ def test_check_no_params(self):
+ self.assertTrue(files_changed.check({}, ["ignored"]))
+
+ def test_check_no_match(self):
+ self.assertFalse(files_changed.check(PARAMS, ["nosuch/**"]))
+
+ def test_check_match(self):
+ self.assertTrue(files_changed.check(PARAMS, ["devtools/**"]))
+
+
+if __name__ == "__main__":
+ main()
diff --git a/taskcluster/gecko_taskgraph/test/test_main.py b/taskcluster/gecko_taskgraph/test/test_main.py
new file mode 100644
index 0000000000..bb1aa1caeb
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/test_main.py
@@ -0,0 +1,67 @@
+# Any copyright is dedicated to the public domain.
+# http://creativecommons.org/publicdomain/zero/1.0/
+
+import pytest
+from mozunit import main as mozunit_main
+
+import gecko_taskgraph
+from gecko_taskgraph.main import main as taskgraph_main
+
+
+@pytest.fixture
+def run_main(maketgg, monkeypatch):
+ def inner(args, **kwargs):
+ kwargs.setdefault("target_tasks", ["_fake-t-0", "_fake-t-1"])
+ tgg = maketgg(**kwargs)
+
+ def fake_get_taskgraph_generator(*args):
+ return tgg
+
+ monkeypatch.setattr(
+ gecko_taskgraph.main,
+ "get_taskgraph_generator",
+ fake_get_taskgraph_generator,
+ )
+ taskgraph_main(args)
+ return tgg
+
+ return inner
+
+
+@pytest.mark.parametrize(
+ "attr,expected",
+ (
+ ("tasks", ["_fake-t-0", "_fake-t-1", "_fake-t-2"]),
+ ("full", ["_fake-t-0", "_fake-t-1", "_fake-t-2"]),
+ ("target", ["_fake-t-0", "_fake-t-1"]),
+ ("target-graph", ["_fake-t-0", "_fake-t-1"]),
+ ("optimized", ["_fake-t-0", "_fake-t-1"]),
+ ("morphed", ["_fake-t-0", "_fake-t-1"]),
+ ),
+)
+def test_show_taskgraph(run_main, capsys, attr, expected):
+ run_main([attr])
+ out, err = capsys.readouterr()
+ assert out.strip() == "\n".join(expected)
+ assert "Dumping result" in err
+
+
+def test_tasks_regex(run_main, capsys):
+ run_main(["full", "--tasks=_.*-t-1"])
+ out, _ = capsys.readouterr()
+ assert out.strip() == "_fake-t-1"
+
+
+def test_output_file(run_main, tmpdir):
+ output_file = tmpdir.join("out.txt")
+ assert not output_file.check()
+
+ run_main(["full", f"--output-file={output_file.strpath}"])
+ assert output_file.check()
+ assert output_file.read_text("utf-8").strip() == "\n".join(
+ ["_fake-t-0", "_fake-t-1", "_fake-t-2"]
+ )
+
+
+if __name__ == "__main__":
+ mozunit_main()
diff --git a/taskcluster/gecko_taskgraph/test/test_morph.py b/taskcluster/gecko_taskgraph/test/test_morph.py
new file mode 100644
index 0000000000..c29fb58207
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/test_morph.py
@@ -0,0 +1,108 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import pytest
+from mozunit import main
+from taskgraph.graph import Graph
+from taskgraph.parameters import Parameters
+from taskgraph.task import Task
+from taskgraph.taskgraph import TaskGraph
+
+from gecko_taskgraph import morph
+
+
+@pytest.fixture
+def make_taskgraph():
+ def inner(tasks):
+ label_to_taskid = {k: k + "-tid" for k in tasks}
+ for label, task_id in label_to_taskid.items():
+ tasks[label].task_id = task_id
+ graph = Graph(nodes=set(tasks), edges=set())
+ taskgraph = TaskGraph(tasks, graph)
+ return taskgraph, label_to_taskid
+
+ return inner
+
+
+def test_make_index_tasks(make_taskgraph, graph_config):
+ task_def = {
+ "routes": [
+ "index.gecko.v2.mozilla-central.latest.firefox-l10n.linux64-opt.es-MX",
+ "index.gecko.v2.mozilla-central.latest.firefox-l10n.linux64-opt.fy-NL",
+ "index.gecko.v2.mozilla-central.latest.firefox-l10n.linux64-opt.sk",
+ "index.gecko.v2.mozilla-central.latest.firefox-l10n.linux64-opt.sl",
+ "index.gecko.v2.mozilla-central.latest.firefox-l10n.linux64-opt.uk",
+ "index.gecko.v2.mozilla-central.latest.firefox-l10n.linux64-opt.zh-CN",
+ "index.gecko.v2.mozilla-central.pushdate."
+ "2017.04.04.20170404100210.firefox-l10n.linux64-opt.es-MX",
+ "index.gecko.v2.mozilla-central.pushdate."
+ "2017.04.04.20170404100210.firefox-l10n.linux64-opt.fy-NL",
+ "index.gecko.v2.mozilla-central.pushdate."
+ "2017.04.04.20170404100210.firefox-l10n.linux64-opt.sk",
+ "index.gecko.v2.mozilla-central.pushdate."
+ "2017.04.04.20170404100210.firefox-l10n.linux64-opt.sl",
+ "index.gecko.v2.mozilla-central.pushdate."
+ "2017.04.04.20170404100210.firefox-l10n.linux64-opt.uk",
+ "index.gecko.v2.mozilla-central.pushdate."
+ "2017.04.04.20170404100210.firefox-l10n.linux64-opt.zh-CN",
+ "index.gecko.v2.mozilla-central.revision."
+ "b5d8b27a753725c1de41ffae2e338798f3b5cacd.firefox-l10n.linux64-opt.es-MX",
+ "index.gecko.v2.mozilla-central.revision."
+ "b5d8b27a753725c1de41ffae2e338798f3b5cacd.firefox-l10n.linux64-opt.fy-NL",
+ "index.gecko.v2.mozilla-central.revision."
+ "b5d8b27a753725c1de41ffae2e338798f3b5cacd.firefox-l10n.linux64-opt.sk",
+ "index.gecko.v2.mozilla-central.revision."
+ "b5d8b27a753725c1de41ffae2e338798f3b5cacd.firefox-l10n.linux64-opt.sl",
+ "index.gecko.v2.mozilla-central.revision."
+ "b5d8b27a753725c1de41ffae2e338798f3b5cacd.firefox-l10n.linux64-opt.uk",
+ "index.gecko.v2.mozilla-central.revision."
+ "b5d8b27a753725c1de41ffae2e338798f3b5cacd.firefox-l10n.linux64-opt.zh-CN",
+ ],
+ "deadline": "soon",
+ "metadata": {
+ "description": "desc",
+ "owner": "owner@foo.com",
+ "source": "https://source",
+ },
+ "extra": {
+ "index": {"rank": 1540722354},
+ },
+ }
+ task = Task(kind="test", label="a", attributes={}, task=task_def)
+ docker_task = Task(
+ kind="docker-image", label="docker-image-index-task", attributes={}, task={}
+ )
+ taskgraph, label_to_taskid = make_taskgraph(
+ {
+ task.label: task,
+ docker_task.label: docker_task,
+ }
+ )
+
+ index_paths = [
+ r.split(".", 1)[1] for r in task_def["routes"] if r.startswith("index.")
+ ]
+ index_task = morph.make_index_task(
+ task,
+ taskgraph,
+ label_to_taskid,
+ Parameters(strict=False),
+ graph_config,
+ index_paths=index_paths,
+ index_rank=1540722354,
+ purpose="index-task",
+ dependencies={},
+ )
+
+ assert index_task.task["payload"]["command"][0] == "insert-indexes.js"
+ assert index_task.task["payload"]["env"]["TARGET_TASKID"] == "a-tid"
+ assert index_task.task["payload"]["env"]["INDEX_RANK"] == 1540722354
+
+ # check the scope summary
+ assert index_task.task["scopes"] == ["index:insert-task:gecko.v2.mozilla-central.*"]
+
+
+if __name__ == "__main__":
+ main()
diff --git a/taskcluster/gecko_taskgraph/test/test_optimize_strategies.py b/taskcluster/gecko_taskgraph/test/test_optimize_strategies.py
new file mode 100644
index 0000000000..0f37332300
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/test_optimize_strategies.py
@@ -0,0 +1,551 @@
+# Any copyright is dedicated to the public domain.
+# http://creativecommons.org/publicdomain/zero/1.0/
+
+
+import time
+from datetime import datetime
+from time import mktime
+
+import pytest
+from mozunit import main
+from taskgraph.optimize.base import registry
+from taskgraph.task import Task
+
+from gecko_taskgraph.optimize import project
+from gecko_taskgraph.optimize.backstop import SkipUnlessBackstop, SkipUnlessPushInterval
+from gecko_taskgraph.optimize.bugbug import (
+ FALLBACK,
+ BugBugPushSchedules,
+ DisperseGroups,
+ SkipUnlessDebug,
+)
+from gecko_taskgraph.optimize.strategies import IndexSearch, SkipUnlessSchedules
+from gecko_taskgraph.util.backstop import BACKSTOP_PUSH_INTERVAL
+from gecko_taskgraph.util.bugbug import (
+ BUGBUG_BASE_URL,
+ BugbugTimeoutException,
+ push_schedules,
+)
+
+
+@pytest.fixture(autouse=True)
+def clear_push_schedules_memoize():
+ push_schedules.clear()
+
+
+@pytest.fixture
+def params():
+ return {
+ "branch": "autoland",
+ "head_repository": "https://hg.mozilla.org/integration/autoland",
+ "head_rev": "abcdef",
+ "project": "autoland",
+ "pushlog_id": 1,
+ "pushdate": mktime(datetime.now().timetuple()),
+ }
+
+
+def generate_tasks(*tasks):
+ for i, task in enumerate(tasks):
+ task.setdefault("label", f"task-{i}-label")
+ task.setdefault("kind", "test")
+ task.setdefault("task", {})
+ task.setdefault("attributes", {})
+ task["attributes"].setdefault("e10s", True)
+
+ for attr in (
+ "optimization",
+ "dependencies",
+ "soft_dependencies",
+ ):
+ task.setdefault(attr, None)
+
+ task["task"].setdefault("label", task["label"])
+ yield Task.from_json(task)
+
+
+# task sets
+
+default_tasks = list(
+ generate_tasks(
+ {"attributes": {"test_manifests": ["foo/test.ini", "bar/test.ini"]}},
+ {"attributes": {"test_manifests": ["bar/test.ini"], "build_type": "debug"}},
+ {"attributes": {"build_type": "debug"}},
+ {"attributes": {"test_manifests": [], "build_type": "opt"}},
+ {"attributes": {"build_type": "opt"}},
+ )
+)
+
+
+disperse_tasks = list(
+ generate_tasks(
+ {
+ "attributes": {
+ "test_manifests": ["foo/test.ini", "bar/test.ini"],
+ "test_platform": "linux/opt",
+ }
+ },
+ {
+ "attributes": {
+ "test_manifests": ["bar/test.ini"],
+ "test_platform": "linux/opt",
+ }
+ },
+ {
+ "attributes": {
+ "test_manifests": ["bar/test.ini"],
+ "test_platform": "windows/debug",
+ }
+ },
+ {
+ "attributes": {
+ "test_manifests": ["bar/test.ini"],
+ "test_platform": "linux/opt",
+ "unittest_variant": "no-fission",
+ }
+ },
+ {
+ "attributes": {
+ "e10s": False,
+ "test_manifests": ["bar/test.ini"],
+ "test_platform": "linux/opt",
+ }
+ },
+ )
+)
+
+
+def idfn(param):
+ if isinstance(param, tuple):
+ try:
+ return param[0].__name__
+ except AttributeError:
+ return None
+ return None
+
+
+@pytest.mark.parametrize(
+ "opt,tasks,arg,expected",
+ [
+ # debug
+ pytest.param(
+ SkipUnlessDebug(),
+ default_tasks,
+ None,
+ ["task-0-label", "task-1-label", "task-2-label"],
+ ),
+ # disperse with no supplied importance
+ pytest.param(
+ DisperseGroups(),
+ disperse_tasks,
+ None,
+ [t.label for t in disperse_tasks],
+ ),
+ # disperse with low importance
+ pytest.param(
+ DisperseGroups(),
+ disperse_tasks,
+ {"bar/test.ini": "low"},
+ ["task-0-label", "task-2-label"],
+ ),
+ # disperse with medium importance
+ pytest.param(
+ DisperseGroups(),
+ disperse_tasks,
+ {"bar/test.ini": "medium"},
+ ["task-0-label", "task-1-label", "task-2-label"],
+ ),
+ # disperse with high importance
+ pytest.param(
+ DisperseGroups(),
+ disperse_tasks,
+ {"bar/test.ini": "high"},
+ ["task-0-label", "task-1-label", "task-2-label", "task-3-label"],
+ ),
+ ],
+ ids=idfn,
+)
+def test_optimization_strategy_remove(params, opt, tasks, arg, expected):
+ labels = [t.label for t in tasks if not opt.should_remove_task(t, params, arg)]
+ assert sorted(labels) == sorted(expected)
+
+
+@pytest.mark.parametrize(
+ "state,expires,expected",
+ (
+ ("completed", "2021-06-06T14:53:16.937Z", False),
+ ("completed", "2021-06-08T14:53:16.937Z", "abc"),
+ ("exception", "2021-06-08T14:53:16.937Z", False),
+ ("failed", "2021-06-08T14:53:16.937Z", False),
+ ),
+)
+def test_index_search(responses, params, state, expires, expected):
+ taskid = "abc"
+ index_path = "foo.bar.latest"
+ responses.add(
+ responses.GET,
+ f"https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/{index_path}",
+ json={"taskId": taskid},
+ status=200,
+ )
+
+ responses.add(
+ responses.GET,
+ f"https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/{taskid}/status",
+ json={
+ "status": {
+ "state": state,
+ "expires": expires,
+ }
+ },
+ status=200,
+ )
+
+ opt = IndexSearch()
+ deadline = "2021-06-07T19:03:20.482Z"
+ assert opt.should_replace_task({}, params, deadline, (index_path,)) == expected
+
+
+@pytest.mark.parametrize(
+ "args,data,expected",
+ [
+ # empty
+ pytest.param(
+ (0.1,),
+ {},
+ [],
+ ),
+ # only tasks without test manifests selected
+ pytest.param(
+ (0.1,),
+ {"tasks": {"task-1-label": 0.9, "task-2-label": 0.1, "task-3-label": 0.5}},
+ ["task-2-label"],
+ ),
+ # tasks which are unknown to bugbug are selected
+ pytest.param(
+ (0.1,),
+ {
+ "tasks": {"task-1-label": 0.9, "task-3-label": 0.5},
+ "known_tasks": ["task-1-label", "task-3-label", "task-4-label"],
+ },
+ ["task-2-label"],
+ ),
+ # tasks containing groups selected
+ pytest.param(
+ (0.1,),
+ {"groups": {"foo/test.ini": 0.4}},
+ ["task-0-label"],
+ ),
+ # tasks matching "tasks" or "groups" selected
+ pytest.param(
+ (0.1,),
+ {
+ "tasks": {"task-2-label": 0.2},
+ "groups": {"foo/test.ini": 0.25, "bar/test.ini": 0.75},
+ },
+ ["task-0-label", "task-1-label", "task-2-label"],
+ ),
+ # tasks matching "tasks" or "groups" selected, when they exceed the confidence threshold
+ pytest.param(
+ (0.5,),
+ {
+ "tasks": {"task-2-label": 0.2, "task-4-label": 0.5},
+ "groups": {"foo/test.ini": 0.65, "bar/test.ini": 0.25},
+ },
+ ["task-0-label", "task-4-label"],
+ ),
+ # tasks matching "reduced_tasks" are selected, when they exceed the confidence threshold
+ pytest.param(
+ (0.7, True, True),
+ {
+ "tasks": {"task-2-label": 0.7, "task-4-label": 0.7},
+ "reduced_tasks": {"task-4-label": 0.7},
+ "groups": {"foo/test.ini": 0.75, "bar/test.ini": 0.25},
+ },
+ ["task-4-label"],
+ ),
+ # tasks matching "groups" selected, only on specific platforms.
+ pytest.param(
+ (0.1, False, False, None, 1, True),
+ {
+ "tasks": {"task-2-label": 0.2},
+ "groups": {"foo/test.ini": 0.25, "bar/test.ini": 0.75},
+ "config_groups": {
+ "foo/test.ini": ["task-1-label", "task-0-label"],
+ "bar/test.ini": ["task-0-label"],
+ },
+ },
+ ["task-0-label", "task-2-label"],
+ ),
+ pytest.param(
+ (0.1, False, False, None, 1, True),
+ {
+ "tasks": {"task-2-label": 0.2},
+ "groups": {"foo/test.ini": 0.25, "bar/test.ini": 0.75},
+ "config_groups": {
+ "foo/test.ini": ["task-1-label", "task-0-label"],
+ "bar/test.ini": ["task-1-label"],
+ },
+ },
+ ["task-0-label", "task-1-label", "task-2-label"],
+ ),
+ pytest.param(
+ (0.1, False, False, None, 1, True),
+ {
+ "tasks": {"task-2-label": 0.2},
+ "groups": {"foo/test.ini": 0.25, "bar/test.ini": 0.75},
+ "config_groups": {
+ "foo/test.ini": ["task-1-label"],
+ "bar/test.ini": ["task-0-label"],
+ },
+ },
+ ["task-0-label", "task-2-label"],
+ ),
+ pytest.param(
+ (0.1, False, False, None, 1, True),
+ {
+ "tasks": {"task-2-label": 0.2},
+ "groups": {"foo/test.ini": 0.25, "bar/test.ini": 0.75},
+ "config_groups": {
+ "foo/test.ini": ["task-1-label"],
+ "bar/test.ini": ["task-3-label"],
+ },
+ },
+ ["task-2-label"],
+ ),
+ ],
+ ids=idfn,
+)
+def test_bugbug_push_schedules(responses, params, args, data, expected):
+ query = "/push/{branch}/{head_rev}/schedules".format(**params)
+ url = BUGBUG_BASE_URL + query
+
+ responses.add(
+ responses.GET,
+ url,
+ json=data,
+ status=200,
+ )
+
+ opt = BugBugPushSchedules(*args)
+ labels = [
+ t.label for t in default_tasks if not opt.should_remove_task(t, params, {})
+ ]
+ assert sorted(labels) == sorted(expected)
+
+
+def test_bugbug_multiple_pushes(responses, params):
+ pushes = {str(pid): {"changesets": [f"c{pid}"]} for pid in range(8, 10)}
+
+ responses.add(
+ responses.GET,
+ "https://hg.mozilla.org/integration/autoland/json-pushes/?version=2&startID=8&endID=9",
+ json={"pushes": pushes},
+ status=200,
+ )
+
+ responses.add(
+ responses.GET,
+ BUGBUG_BASE_URL + "/push/{}/c9/schedules".format(params["branch"]),
+ json={
+ "tasks": {"task-2-label": 0.2, "task-4-label": 0.5},
+ "groups": {"foo/test.ini": 0.2, "bar/test.ini": 0.25},
+ "config_groups": {"foo/test.ini": ["linux-*"], "bar/test.ini": ["task-*"]},
+ "known_tasks": ["task-4-label"],
+ },
+ status=200,
+ )
+
+ # Tasks with a lower confidence don't override task with a higher one.
+ # Tasks with a higher confidence override tasks with a lower one.
+ # Known tasks are merged.
+ responses.add(
+ responses.GET,
+ BUGBUG_BASE_URL + "/push/{branch}/{head_rev}/schedules".format(**params),
+ json={
+ "tasks": {"task-2-label": 0.2, "task-4-label": 0.2},
+ "groups": {"foo/test.ini": 0.65, "bar/test.ini": 0.25},
+ "config_groups": {
+ "foo/test.ini": ["task-*"],
+ "bar/test.ini": ["windows-*"],
+ },
+ "known_tasks": ["task-1-label", "task-3-label"],
+ },
+ status=200,
+ )
+
+ params["pushlog_id"] = 10
+
+ opt = BugBugPushSchedules(0.3, False, False, False, 2)
+ labels = [
+ t.label for t in default_tasks if not opt.should_remove_task(t, params, {})
+ ]
+ assert sorted(labels) == sorted(["task-0-label", "task-2-label", "task-4-label"])
+
+ opt = BugBugPushSchedules(0.3, False, False, False, 2, True)
+ labels = [
+ t.label for t in default_tasks if not opt.should_remove_task(t, params, {})
+ ]
+ assert sorted(labels) == sorted(["task-0-label", "task-2-label", "task-4-label"])
+
+ opt = BugBugPushSchedules(0.2, False, False, False, 2, True)
+ labels = [
+ t.label for t in default_tasks if not opt.should_remove_task(t, params, {})
+ ]
+ assert sorted(labels) == sorted(
+ ["task-0-label", "task-1-label", "task-2-label", "task-4-label"]
+ )
+
+
+def test_bugbug_timeout(monkeypatch, responses, params):
+ query = "/push/{branch}/{head_rev}/schedules".format(**params)
+ url = BUGBUG_BASE_URL + query
+ responses.add(
+ responses.GET,
+ url,
+ json={"ready": False},
+ status=202,
+ )
+
+ # Make sure the test runs fast.
+ monkeypatch.setattr(time, "sleep", lambda i: None)
+
+ opt = BugBugPushSchedules(0.5)
+ with pytest.raises(BugbugTimeoutException):
+ opt.should_remove_task(default_tasks[0], params, None)
+
+
+def test_bugbug_fallback(monkeypatch, responses, params):
+ query = "/push/{branch}/{head_rev}/schedules".format(**params)
+ url = BUGBUG_BASE_URL + query
+ responses.add(
+ responses.GET,
+ url,
+ json={"ready": False},
+ status=202,
+ )
+
+ opt = BugBugPushSchedules(0.5, fallback=FALLBACK)
+
+ # Make sure the test runs fast.
+ monkeypatch.setattr(time, "sleep", lambda i: None)
+
+ def fake_should_remove_task(task, params, _):
+ return task.label == default_tasks[0].label
+
+ monkeypatch.setattr(
+ registry[FALLBACK], "should_remove_task", fake_should_remove_task
+ )
+
+ assert opt.should_remove_task(default_tasks[0], params, None)
+
+ # Make sure we don't hit bugbug more than once.
+ responses.reset()
+
+ assert not opt.should_remove_task(default_tasks[1], params, None)
+
+
+def test_backstop(params):
+ all_labels = {t.label for t in default_tasks}
+ opt = SkipUnlessBackstop()
+
+ params["backstop"] = False
+ scheduled = {
+ t.label for t in default_tasks if not opt.should_remove_task(t, params, None)
+ }
+ assert scheduled == set()
+
+ params["backstop"] = True
+ scheduled = {
+ t.label for t in default_tasks if not opt.should_remove_task(t, params, None)
+ }
+ assert scheduled == all_labels
+
+
+def test_push_interval(params):
+ all_labels = {t.label for t in default_tasks}
+ opt = SkipUnlessPushInterval(10) # every 10th push
+
+ # Only multiples of 10 schedule tasks.
+ params["pushlog_id"] = 9
+ scheduled = {
+ t.label for t in default_tasks if not opt.should_remove_task(t, params, None)
+ }
+ assert scheduled == set()
+
+ params["pushlog_id"] = 10
+ scheduled = {
+ t.label for t in default_tasks if not opt.should_remove_task(t, params, None)
+ }
+ assert scheduled == all_labels
+
+
+def test_expanded(params):
+ all_labels = {t.label for t in default_tasks}
+ opt = registry["skip-unless-expanded"]
+
+ params["backstop"] = False
+ params["pushlog_id"] = BACKSTOP_PUSH_INTERVAL / 2
+ scheduled = {
+ t.label for t in default_tasks if not opt.should_remove_task(t, params, None)
+ }
+ assert scheduled == all_labels
+
+ params["pushlog_id"] += 1
+ scheduled = {
+ t.label for t in default_tasks if not opt.should_remove_task(t, params, None)
+ }
+ assert scheduled == set()
+
+ params["backstop"] = True
+ scheduled = {
+ t.label for t in default_tasks if not opt.should_remove_task(t, params, None)
+ }
+ assert scheduled == all_labels
+
+
+def test_project_autoland_test(monkeypatch, responses, params):
+ """Tests the behaviour of the `project.autoland["test"]` strategy on
+ various types of pushes.
+ """
+ # This is meant to test the composition of substrategies, and not the
+ # actual optimization implementations. So mock them out for simplicity.
+ monkeypatch.setattr(SkipUnlessSchedules, "should_remove_task", lambda *args: False)
+ monkeypatch.setattr(DisperseGroups, "should_remove_task", lambda *args: False)
+
+ def fake_bugbug_should_remove_task(self, task, params, importance):
+ if self.num_pushes > 1:
+ return task.label == "task-4-label"
+ return task.label in ("task-2-label", "task-3-label", "task-4-label")
+
+ monkeypatch.setattr(
+ BugBugPushSchedules, "should_remove_task", fake_bugbug_should_remove_task
+ )
+
+ opt = project.autoland["test"]
+
+ # On backstop pushes, nothing gets optimized.
+ params["backstop"] = True
+ scheduled = {
+ t.label for t in default_tasks if not opt.should_remove_task(t, params, {})
+ }
+ assert scheduled == {t.label for t in default_tasks}
+
+ # On expanded pushes, some things are optimized.
+ params["backstop"] = False
+ params["pushlog_id"] = 10
+ scheduled = {
+ t.label for t in default_tasks if not opt.should_remove_task(t, params, {})
+ }
+ assert scheduled == {"task-0-label", "task-1-label", "task-2-label", "task-3-label"}
+
+ # On regular pushes, more things are optimized.
+ params["pushlog_id"] = 11
+ scheduled = {
+ t.label for t in default_tasks if not opt.should_remove_task(t, params, {})
+ }
+ assert scheduled == {"task-0-label", "task-1-label"}
+
+
+if __name__ == "__main__":
+ main()
diff --git a/taskcluster/gecko_taskgraph/test/test_target_tasks.py b/taskcluster/gecko_taskgraph/test/test_target_tasks.py
new file mode 100644
index 0000000000..154c0f910a
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/test_target_tasks.py
@@ -0,0 +1,371 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import contextlib
+import re
+import unittest
+
+import pytest
+from mozunit import main
+from taskgraph.graph import Graph
+from taskgraph.task import Task
+from taskgraph.taskgraph import TaskGraph
+
+from gecko_taskgraph import target_tasks, try_option_syntax
+
+
+class FakeTryOptionSyntax:
+ def __init__(self, message, task_graph, graph_config):
+ self.trigger_tests = 0
+ self.talos_trigger_tests = 0
+ self.raptor_trigger_tests = 0
+ self.notifications = None
+ self.env = []
+ self.profile = False
+ self.tag = None
+ self.no_retry = False
+
+ def task_matches(self, task):
+ return "at-at" in task.attributes
+
+
+class TestTargetTasks(unittest.TestCase):
+ def default_matches_project(self, run_on_projects, project):
+ return self.default_matches(
+ attributes={
+ "run_on_projects": run_on_projects,
+ },
+ parameters={
+ "project": project,
+ "hg_branch": "default",
+ },
+ )
+
+ def default_matches_hg_branch(self, run_on_hg_branches, hg_branch):
+ attributes = {"run_on_projects": ["all"]}
+ if run_on_hg_branches is not None:
+ attributes["run_on_hg_branches"] = run_on_hg_branches
+
+ return self.default_matches(
+ attributes=attributes,
+ parameters={
+ "project": "mozilla-central",
+ "hg_branch": hg_branch,
+ },
+ )
+
+ def default_matches(self, attributes, parameters):
+ method = target_tasks.get_method("default")
+ graph = TaskGraph(
+ tasks={
+ "a": Task(kind="build", label="a", attributes=attributes, task={}),
+ },
+ graph=Graph(nodes={"a"}, edges=set()),
+ )
+ return "a" in method(graph, parameters, {})
+
+ def test_default_all(self):
+ """run_on_projects=[all] includes release, integration, and other projects"""
+ self.assertTrue(self.default_matches_project(["all"], "mozilla-central"))
+ self.assertTrue(self.default_matches_project(["all"], "baobab"))
+
+ def test_default_integration(self):
+ """run_on_projects=[integration] includes integration projects"""
+ self.assertFalse(
+ self.default_matches_project(["integration"], "mozilla-central")
+ )
+ self.assertFalse(self.default_matches_project(["integration"], "baobab"))
+
+ def test_default_release(self):
+ """run_on_projects=[release] includes release projects"""
+ self.assertTrue(self.default_matches_project(["release"], "mozilla-central"))
+ self.assertFalse(self.default_matches_project(["release"], "baobab"))
+
+ def test_default_nothing(self):
+ """run_on_projects=[] includes nothing"""
+ self.assertFalse(self.default_matches_project([], "mozilla-central"))
+ self.assertFalse(self.default_matches_project([], "baobab"))
+
+ def test_default_hg_branch(self):
+ self.assertTrue(self.default_matches_hg_branch(None, "default"))
+ self.assertTrue(self.default_matches_hg_branch(None, "GECKOVIEW_62_RELBRANCH"))
+
+ self.assertFalse(self.default_matches_hg_branch([], "default"))
+ self.assertFalse(self.default_matches_hg_branch([], "GECKOVIEW_62_RELBRANCH"))
+
+ self.assertTrue(self.default_matches_hg_branch(["all"], "default"))
+ self.assertTrue(
+ self.default_matches_hg_branch(["all"], "GECKOVIEW_62_RELBRANCH")
+ )
+
+ self.assertTrue(self.default_matches_hg_branch(["default"], "default"))
+ self.assertTrue(self.default_matches_hg_branch([r"default"], "default"))
+ self.assertFalse(
+ self.default_matches_hg_branch([r"default"], "GECKOVIEW_62_RELBRANCH")
+ )
+
+ self.assertTrue(
+ self.default_matches_hg_branch(
+ ["GECKOVIEW_62_RELBRANCH"], "GECKOVIEW_62_RELBRANCH"
+ )
+ )
+ self.assertTrue(
+ self.default_matches_hg_branch(
+ [r"GECKOVIEW_\d+_RELBRANCH"], "GECKOVIEW_62_RELBRANCH"
+ )
+ )
+ self.assertTrue(
+ self.default_matches_hg_branch(
+ [r"GECKOVIEW_\d+_RELBRANCH"], "GECKOVIEW_62_RELBRANCH"
+ )
+ )
+ self.assertFalse(
+ self.default_matches_hg_branch([r"GECKOVIEW_\d+_RELBRANCH"], "default")
+ )
+
+ def make_task_graph(self):
+ tasks = {
+ "a": Task(kind=None, label="a", attributes={}, task={}),
+ "b": Task(kind=None, label="b", attributes={"at-at": "yep"}, task={}),
+ "c": Task(
+ kind=None, label="c", attributes={"run_on_projects": ["try"]}, task={}
+ ),
+ }
+ graph = Graph(nodes=set("abc"), edges=set())
+ return TaskGraph(tasks, graph)
+
+ @contextlib.contextmanager
+ def fake_TryOptionSyntax(self):
+ orig_TryOptionSyntax = try_option_syntax.TryOptionSyntax
+ try:
+ try_option_syntax.TryOptionSyntax = FakeTryOptionSyntax
+ yield
+ finally:
+ try_option_syntax.TryOptionSyntax = orig_TryOptionSyntax
+
+ def test_empty_try(self):
+ "try_mode = None runs nothing"
+ tg = self.make_task_graph()
+ method = target_tasks.get_method("try_tasks")
+ params = {
+ "try_mode": None,
+ "project": "try",
+ "message": "",
+ }
+ # only runs the task with run_on_projects: try
+ self.assertEqual(method(tg, params, {}), [])
+
+ def test_try_option_syntax(self):
+ "try_mode = try_option_syntax uses TryOptionSyntax"
+ tg = self.make_task_graph()
+ method = target_tasks.get_method("try_tasks")
+ with self.fake_TryOptionSyntax():
+ params = {
+ "try_mode": "try_option_syntax",
+ "message": "try: -p all",
+ }
+ self.assertEqual(method(tg, params, {}), ["b"])
+
+ def test_try_task_config(self):
+ "try_mode = try_task_config uses the try config"
+ tg = self.make_task_graph()
+ method = target_tasks.get_method("try_tasks")
+ params = {
+ "try_mode": "try_task_config",
+ "try_task_config": {"tasks": ["a"]},
+ }
+ self.assertEqual(method(tg, params, {}), ["a"])
+
+
+# tests for specific filters
+
+
+@pytest.mark.parametrize(
+ "name,params,expected",
+ (
+ pytest.param(
+ "filter_tests_without_manifests",
+ {
+ "task": Task(kind="test", label="a", attributes={}, task={}),
+ "parameters": None,
+ },
+ True,
+ id="filter_tests_without_manifests_not_in_attributes",
+ ),
+ pytest.param(
+ "filter_tests_without_manifests",
+ {
+ "task": Task(
+ kind="test",
+ label="a",
+ attributes={"test_manifests": ["foo"]},
+ task={},
+ ),
+ "parameters": None,
+ },
+ True,
+ id="filter_tests_without_manifests_has_test_manifests",
+ ),
+ pytest.param(
+ "filter_tests_without_manifests",
+ {
+ "task": Task(
+ kind="build",
+ label="a",
+ attributes={"test_manifests": None},
+ task={},
+ ),
+ "parameters": None,
+ },
+ True,
+ id="filter_tests_without_manifests_not_a_test",
+ ),
+ pytest.param(
+ "filter_tests_without_manifests",
+ {
+ "task": Task(
+ kind="test", label="a", attributes={"test_manifests": None}, task={}
+ ),
+ "parameters": None,
+ },
+ False,
+ id="filter_tests_without_manifests_has_no_test_manifests",
+ ),
+ pytest.param(
+ "filter_by_regex",
+ {
+ "task_label": "build-linux64-debug",
+ "regexes": [re.compile("build")],
+ "mode": "include",
+ },
+ True,
+ id="filter_regex_simple_include",
+ ),
+ pytest.param(
+ "filter_by_regex",
+ {
+ "task_label": "build-linux64-debug",
+ "regexes": [re.compile("linux(.+)debug")],
+ "mode": "include",
+ },
+ True,
+ id="filter_regex_re_include",
+ ),
+ pytest.param(
+ "filter_by_regex",
+ {
+ "task_label": "build-linux64-debug",
+ "regexes": [re.compile("nothing"), re.compile("linux(.+)debug")],
+ "mode": "include",
+ },
+ True,
+ id="filter_regex_re_include_multiple",
+ ),
+ pytest.param(
+ "filter_by_regex",
+ {
+ "task_label": "build-linux64-debug",
+ "regexes": [re.compile("build")],
+ "mode": "exclude",
+ },
+ False,
+ id="filter_regex_simple_exclude",
+ ),
+ pytest.param(
+ "filter_by_regex",
+ {
+ "task_label": "build-linux64-debug",
+ "regexes": [re.compile("linux(.+)debug")],
+ "mode": "exclude",
+ },
+ False,
+ id="filter_regex_re_exclude",
+ ),
+ pytest.param(
+ "filter_by_regex",
+ {
+ "task_label": "build-linux64-debug",
+ "regexes": [re.compile("linux(.+)debug"), re.compile("nothing")],
+ "mode": "exclude",
+ },
+ False,
+ id="filter_regex_re_exclude_multiple",
+ ),
+ pytest.param(
+ "filter_unsupported_artifact_builds",
+ {
+ "task": Task(
+ kind="test",
+ label="a",
+ attributes={"supports-artifact-builds": False},
+ task={},
+ ),
+ "parameters": {
+ "try_task_config": {
+ "use-artifact-builds": False,
+ },
+ },
+ },
+ True,
+ id="filter_unsupported_artifact_builds_no_artifact_builds",
+ ),
+ pytest.param(
+ "filter_unsupported_artifact_builds",
+ {
+ "task": Task(
+ kind="test",
+ label="a",
+ attributes={"supports-artifact-builds": False},
+ task={},
+ ),
+ "parameters": {
+ "try_task_config": {
+ "use-artifact-builds": True,
+ },
+ },
+ },
+ False,
+ id="filter_unsupported_artifact_builds_removed",
+ ),
+ pytest.param(
+ "filter_unsupported_artifact_builds",
+ {
+ "task": Task(
+ kind="test",
+ label="a",
+ attributes={"supports-artifact-builds": True},
+ task={},
+ ),
+ "parameters": {
+ "try_task_config": {
+ "use-artifact-builds": True,
+ },
+ },
+ },
+ True,
+ id="filter_unsupported_artifact_builds_not_removed",
+ ),
+ pytest.param(
+ "filter_unsupported_artifact_builds",
+ {
+ "task": Task(kind="test", label="a", attributes={}, task={}),
+ "parameters": {
+ "try_task_config": {
+ "use-artifact-builds": True,
+ },
+ },
+ },
+ True,
+ id="filter_unsupported_artifact_builds_not_removed",
+ ),
+ ),
+)
+def test_filters(name, params, expected):
+ func = getattr(target_tasks, name)
+ assert func(**params) is expected
+
+
+if __name__ == "__main__":
+ main()
diff --git a/taskcluster/gecko_taskgraph/test/test_taskcluster_yml.py b/taskcluster/gecko_taskgraph/test/test_taskcluster_yml.py
new file mode 100644
index 0000000000..cdf94ec3e1
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/test_taskcluster_yml.py
@@ -0,0 +1,145 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import pprint
+import unittest
+
+import jsone
+import slugid
+from mozunit import main
+from taskgraph.util.time import current_json_time
+from taskgraph.util.yaml import load_yaml
+
+from gecko_taskgraph import GECKO
+
+
+class TestTaskclusterYml(unittest.TestCase):
+ @property
+ def taskcluster_yml(self):
+ return load_yaml(GECKO, ".taskcluster.yml")
+
+ def test_push(self):
+ context = {
+ "tasks_for": "hg-push",
+ "push": {
+ "revision": "e8d2d9aff5026ef1f1777b781b47fdcbdb9d8f20",
+ "base_revision": "e8aebe488b2f2e567940577de25013d00e818f7c",
+ "owner": "dustin@mozilla.com",
+ "pushlog_id": 1556565286,
+ "pushdate": 112957,
+ },
+ "repository": {
+ "url": "https://hg.mozilla.org/mozilla-central",
+ "project": "mozilla-central",
+ "level": "3",
+ },
+ "ownTaskId": slugid.nice(),
+ }
+ rendered = jsone.render(self.taskcluster_yml, context)
+ pprint.pprint(rendered)
+ self.assertEqual(
+ rendered["tasks"][0]["metadata"]["name"], "Gecko Decision Task"
+ )
+ self.assertIn("matrixBody", rendered["tasks"][0]["extra"]["notify"])
+
+ def test_push_non_mc(self):
+ context = {
+ "tasks_for": "hg-push",
+ "push": {
+ "revision": "e8d2d9aff5026ef1f1777b781b47fdcbdb9d8f20",
+ "base_revision": "e8aebe488b2f2e567940577de25013d00e818f7c",
+ "owner": "dustin@mozilla.com",
+ "pushlog_id": 1556565286,
+ "pushdate": 112957,
+ },
+ "repository": {
+ "url": "https://hg.mozilla.org/releases/mozilla-beta",
+ "project": "mozilla-beta",
+ "level": "3",
+ },
+ "ownTaskId": slugid.nice(),
+ }
+ rendered = jsone.render(self.taskcluster_yml, context)
+ pprint.pprint(rendered)
+ self.assertEqual(
+ rendered["tasks"][0]["metadata"]["name"], "Gecko Decision Task"
+ )
+ self.assertNotIn("matrixBody", rendered["tasks"][0]["extra"]["notify"])
+
+ def test_cron(self):
+ context = {
+ "tasks_for": "cron",
+ "repository": {
+ "url": "https://hg.mozilla.org/mozilla-central",
+ "project": "mozilla-central",
+ "level": 3,
+ },
+ "push": {
+ "revision": "e8aebe488b2f2e567940577de25013d00e818f7c",
+ "base_revision": "54cbb3745cdb9a8aa0a4428d405b3b2e1c7d13c2",
+ "pushlog_id": -1,
+ "pushdate": 0,
+ "owner": "cron",
+ },
+ "cron": {
+ "task_id": "<cron task id>",
+ "job_name": "test",
+ "job_symbol": "T",
+ "quoted_args": "abc def",
+ },
+ "now": current_json_time(),
+ "ownTaskId": slugid.nice(),
+ }
+ rendered = jsone.render(self.taskcluster_yml, context)
+ pprint.pprint(rendered)
+ self.assertEqual(
+ rendered["tasks"][0]["metadata"]["name"], "Decision Task for cron job test"
+ )
+
+ def test_action(self):
+ context = {
+ "tasks_for": "action",
+ "repository": {
+ "url": "https://hg.mozilla.org/mozilla-central",
+ "project": "mozilla-central",
+ "level": 3,
+ },
+ "push": {
+ "revision": "e8d2d9aff5026ef1f1777b781b47fdcbdb9d8f20",
+ "base_revision": "e8aebe488b2f2e567940577de25013d00e818f7c",
+ "owner": "dustin@mozilla.com",
+ "pushlog_id": 1556565286,
+ "pushdate": 112957,
+ },
+ "action": {
+ "name": "test-action",
+ "title": "Test Action",
+ "description": "Just testing",
+ "taskGroupId": slugid.nice(),
+ "symbol": "t",
+ "repo_scope": "assume:repo:hg.mozilla.org/try:action:generic",
+ "cb_name": "test_action",
+ },
+ "input": {},
+ "parameters": {},
+ "now": current_json_time(),
+ "taskId": slugid.nice(),
+ "ownTaskId": slugid.nice(),
+ "clientId": "testing/testing/testing",
+ }
+ rendered = jsone.render(self.taskcluster_yml, context)
+ pprint.pprint(rendered)
+ self.assertEqual(
+ rendered["tasks"][0]["metadata"]["name"], "Action: Test Action"
+ )
+
+ def test_unknown(self):
+ context = {"tasks_for": "bitkeeper-push"}
+ rendered = jsone.render(self.taskcluster_yml, context)
+ pprint.pprint(rendered)
+ self.assertEqual(rendered["tasks"], [])
+
+
+if __name__ == "__main__":
+ main()
diff --git a/taskcluster/gecko_taskgraph/test/test_transforms_job.py b/taskcluster/gecko_taskgraph/test/test_transforms_job.py
new file mode 100644
index 0000000000..8bf85dcf62
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/test_transforms_job.py
@@ -0,0 +1,150 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+"""
+Tests for the 'job' transform subsystem.
+"""
+
+
+import os
+from copy import deepcopy
+
+import pytest
+from mozunit import main
+from taskgraph.config import load_graph_config
+from taskgraph.transforms.base import TransformConfig
+from taskgraph.util.schema import Schema, validate_schema
+
+from gecko_taskgraph import GECKO
+from gecko_taskgraph.test.conftest import FakeParameters
+from gecko_taskgraph.transforms import job
+from gecko_taskgraph.transforms.job import run_task # noqa: F401
+from gecko_taskgraph.transforms.job.common import add_cache
+from gecko_taskgraph.transforms.task import payload_builders
+
+here = os.path.abspath(os.path.dirname(__file__))
+
+
+TASK_DEFAULTS = {
+ "description": "fake description",
+ "label": "fake-task-label",
+ "run": {
+ "using": "run-task",
+ },
+}
+
+
+@pytest.fixture(scope="module")
+def config():
+ graph_config = load_graph_config(os.path.join(GECKO, "taskcluster", "ci"))
+ params = FakeParameters(
+ {
+ "base_repository": "http://hg.example.com",
+ "head_repository": "http://hg.example.com",
+ "head_rev": "abcdef",
+ "level": 1,
+ "project": "example",
+ }
+ )
+ return TransformConfig(
+ "job_test", here, {}, params, {}, graph_config, write_artifacts=False
+ )
+
+
+@pytest.fixture()
+def transform(monkeypatch, config):
+ """Run the job transforms on the specified task but return the inputs to
+ `configure_taskdesc_for_run` without executing it.
+
+ This gives test functions an easy way to generate the inputs required for
+ many of the `run_using` subsystems.
+ """
+
+ def inner(task_input):
+ task = deepcopy(TASK_DEFAULTS)
+ task.update(task_input)
+ frozen_args = []
+
+ def _configure_taskdesc_for_run(*args):
+ frozen_args.extend(args)
+
+ monkeypatch.setattr(
+ job, "configure_taskdesc_for_run", _configure_taskdesc_for_run
+ )
+
+ for _ in job.transforms(config, [task]):
+ # This forces the generator to be evaluated
+ pass
+
+ return frozen_args
+
+ return inner
+
+
+@pytest.mark.parametrize(
+ "task",
+ [
+ {"worker-type": "b-linux"},
+ {"worker-type": "t-win10-64-hw"},
+ ],
+ ids=lambda t: t["worker-type"],
+)
+def test_worker_caches(task, transform):
+ config, job, taskdesc, impl = transform(task)
+ add_cache(job, taskdesc, "cache1", "/cache1")
+ add_cache(job, taskdesc, "cache2", "/cache2", skip_untrusted=True)
+
+ if impl not in ("docker-worker", "generic-worker"):
+ pytest.xfail(f"caches not implemented for '{impl}'")
+
+ key = "caches" if impl == "docker-worker" else "mounts"
+ assert key in taskdesc["worker"]
+ assert len(taskdesc["worker"][key]) == 2
+
+ # Create a new schema object with just the part relevant to caches.
+ partial_schema = Schema(payload_builders[impl].schema.schema[key])
+ validate_schema(partial_schema, taskdesc["worker"][key], "validation error")
+
+
+@pytest.mark.parametrize(
+ "workerfn", [fn for fn, *_ in job.registry["run-task"].values()]
+)
+@pytest.mark.parametrize(
+ "task",
+ (
+ {
+ "worker-type": "b-linux",
+ "run": {
+ "checkout": True,
+ "comm-checkout": False,
+ "command": "echo '{output}'",
+ "command-context": {"output": "hello", "extra": None},
+ "run-as-root": False,
+ "sparse-profile": False,
+ "tooltool-downloads": False,
+ },
+ },
+ ),
+)
+def test_run_task_command_context(task, transform, workerfn):
+ config, job_, taskdesc, _ = transform(task)
+ job_ = deepcopy(job_)
+
+ def assert_cmd(expected):
+ cmd = taskdesc["worker"]["command"]
+ while isinstance(cmd, list):
+ cmd = cmd[-1]
+ assert cmd == expected
+
+ workerfn(config, job_, taskdesc)
+ assert_cmd("echo 'hello'")
+
+ job_copy = job_.copy()
+ del job_copy["run"]["command-context"]
+ workerfn(config, job_copy, taskdesc)
+ assert_cmd("echo '{output}'")
+
+
+if __name__ == "__main__":
+ main()
diff --git a/taskcluster/gecko_taskgraph/test/test_transforms_test.py b/taskcluster/gecko_taskgraph/test/test_transforms_test.py
new file mode 100644
index 0000000000..2b90fed3e7
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/test_transforms_test.py
@@ -0,0 +1,328 @@
+# Any copyright is dedicated to the Public Domain.
+# https://creativecommons.org/publicdomain/zero/1.0/
+"""
+Tests for the 'tests.py' transforms
+"""
+
+import hashlib
+import json
+from functools import partial
+from pprint import pprint
+
+import mozunit
+import pytest
+
+from gecko_taskgraph.transforms import test as test_transforms
+
+
+@pytest.fixture
+def make_test_task():
+ """Create a test task definition with required default values."""
+
+ def inner(**extra):
+ task = {
+ "attributes": {},
+ "build-platform": "linux64",
+ "mozharness": {"extra-options": []},
+ "test-platform": "linux64",
+ "treeherder-symbol": "g(t)",
+ "try-name": "task",
+ }
+ task.update(extra)
+ return task
+
+ return inner
+
+
+def test_split_variants(monkeypatch, run_full_config_transform, make_test_task):
+ # mock out variant definitions
+ monkeypatch.setattr(
+ test_transforms.variant,
+ "TEST_VARIANTS",
+ {
+ "foo": {
+ "description": "foo variant",
+ "suffix": "foo",
+ "component": "foo bar",
+ "expiration": "never",
+ "merge": {
+ "mozharness": {
+ "extra-options": [
+ "--setpref=foo=1",
+ ],
+ },
+ },
+ },
+ "bar": {
+ "description": "bar variant",
+ "suffix": "bar",
+ "component": "foo bar",
+ "expiration": "never",
+ "when": {
+ "$eval": "task['test-platform'][:5] == 'linux'",
+ },
+ "merge": {
+ "mozharness": {
+ "extra-options": [
+ "--setpref=bar=1",
+ ],
+ },
+ },
+ "replace": {"tier": 2},
+ },
+ },
+ )
+
+ def make_expected(variant):
+ """Helper to generate expected tasks."""
+ return make_test_task(
+ **{
+ "attributes": {"unittest_variant": variant},
+ "description": f"{variant} variant",
+ "mozharness": {
+ "extra-options": [f"--setpref={variant}=1"],
+ },
+ "treeherder-symbol": f"g-{variant}(t)",
+ "variant-suffix": f"-{variant}",
+ }
+ )
+
+ run_split_variants = partial(
+ run_full_config_transform, test_transforms.variant.split_variants
+ )
+
+ # test no variants
+ input_task = make_test_task(
+ **{
+ "run-without-variant": True,
+ }
+ )
+ tasks = list(run_split_variants(input_task))
+ assert len(tasks) == 1
+ assert tasks[0] == input_task
+
+ # test variants are split into expected tasks
+ input_task = make_test_task(
+ **{
+ "run-without-variant": True,
+ "variants": ["foo", "bar"],
+ }
+ )
+ tasks = list(run_split_variants(input_task))
+ assert len(tasks) == 3
+ assert tasks[0] == make_test_task()
+ assert tasks[1] == make_expected("foo")
+
+ expected = make_expected("bar")
+ expected["tier"] = 2
+ assert tasks[2] == expected
+
+ # test composite variants
+ input_task = make_test_task(
+ **{
+ "run-without-variant": True,
+ "variants": ["foo+bar"],
+ }
+ )
+ tasks = list(run_split_variants(input_task))
+ assert len(tasks) == 2
+ assert tasks[1]["attributes"]["unittest_variant"] == "foo+bar"
+ assert tasks[1]["mozharness"]["extra-options"] == [
+ "--setpref=foo=1",
+ "--setpref=bar=1",
+ ]
+ assert tasks[1]["treeherder-symbol"] == "g-foo-bar(t)"
+
+ # test 'when' filter
+ input_task = make_test_task(
+ **{
+ "run-without-variant": True,
+ # this should cause task to be filtered out of 'bar' and 'foo+bar' variants
+ "test-platform": "windows",
+ "variants": ["foo", "bar", "foo+bar"],
+ }
+ )
+ tasks = list(run_split_variants(input_task))
+ assert len(tasks) == 2
+ assert "unittest_variant" not in tasks[0]["attributes"]
+ assert tasks[1]["attributes"]["unittest_variant"] == "foo"
+
+ # test 'run-without-variants=False'
+ input_task = make_test_task(
+ **{
+ "run-without-variant": False,
+ "variants": ["foo"],
+ }
+ )
+ tasks = list(run_split_variants(input_task))
+ assert len(tasks) == 1
+ assert tasks[0]["attributes"]["unittest_variant"] == "foo"
+
+
+@pytest.mark.parametrize(
+ "task,expected",
+ (
+ pytest.param(
+ {
+ "attributes": {"unittest_variant": "webrender-sw+1proc"},
+ "test-platform": "linux1804-64-clang-trunk-qr/opt",
+ },
+ {
+ "platform": {
+ "arch": "64",
+ "os": {
+ "name": "linux",
+ "version": "1804",
+ },
+ },
+ "build": {
+ "type": "opt",
+ "clang-trunk": True,
+ },
+ "runtime": {
+ "1proc": True,
+ "webrender-sw": True,
+ },
+ },
+ id="linux",
+ ),
+ pytest.param(
+ {
+ "attributes": {},
+ "test-platform": "linux2204-64-wayland-shippable/opt",
+ },
+ {
+ "platform": {
+ "arch": "64",
+ "display": "wayland",
+ "os": {
+ "name": "linux",
+ "version": "2204",
+ },
+ },
+ "build": {
+ "type": "opt",
+ "shippable": True,
+ },
+ "runtime": {},
+ },
+ id="linux wayland shippable",
+ ),
+ pytest.param(
+ {
+ "attributes": {},
+ "test-platform": "android-hw-a51-11-0-arm7-shippable-qr/opt",
+ },
+ {
+ "platform": {
+ "arch": "arm7",
+ "device": "a51",
+ "os": {
+ "name": "android",
+ "version": "11.0",
+ },
+ },
+ "build": {
+ "type": "opt",
+ "shippable": True,
+ },
+ "runtime": {},
+ },
+ id="android",
+ ),
+ pytest.param(
+ {
+ "attributes": {},
+ "test-platform": "windows10-64-2004-ref-hw-2017-ccov/debug",
+ },
+ {
+ "platform": {
+ "arch": "64",
+ "machine": "ref-hw-2017",
+ "os": {
+ "build": "2004",
+ "name": "windows",
+ "version": "10",
+ },
+ },
+ "build": {
+ "type": "debug",
+ "ccov": True,
+ },
+ "runtime": {},
+ },
+ id="windows",
+ ),
+ ),
+)
+def test_set_test_setting(run_transform, task, expected):
+ # add hash to 'expected'
+ expected["_hash"] = hashlib.sha256(
+ json.dumps(expected, sort_keys=True).encode("utf-8")
+ ).hexdigest()[:12]
+
+ task = list(run_transform(test_transforms.other.set_test_setting, task))[0]
+ assert "test-setting" in task
+ assert task["test-setting"] == expected
+
+
+def assert_spi_not_disabled(task):
+ extra_options = task["mozharness"]["extra-options"]
+ # The pref to enable this gets set outside of this transform, so only
+ # bother asserting that the pref to disable does not exist.
+ assert (
+ "--setpref=media.peerconnection.mtransport_process=false" not in extra_options
+ )
+ assert "--setpref=network.process.enabled=false" not in extra_options
+
+
+def assert_spi_disabled(task):
+ extra_options = task["mozharness"]["extra-options"]
+ assert "--setpref=media.peerconnection.mtransport_process=false" in extra_options
+ assert "--setpref=media.peerconnection.mtransport_process=true" not in extra_options
+ assert "--setpref=network.process.enabled=false" in extra_options
+ assert "--setpref=network.process.enabled=true" not in extra_options
+
+
+@pytest.mark.parametrize(
+ "task,callback",
+ (
+ pytest.param(
+ {"attributes": {"unittest_variant": "socketprocess"}},
+ assert_spi_not_disabled,
+ id="socketprocess",
+ ),
+ pytest.param(
+ {
+ "attributes": {"unittest_variant": "socketprocess_networking"},
+ },
+ assert_spi_not_disabled,
+ id="socketprocess_networking",
+ ),
+ pytest.param({}, assert_spi_disabled, id="no variant"),
+ pytest.param(
+ {"suite": "cppunit", "attributes": {"unittest_variant": "socketprocess"}},
+ assert_spi_not_disabled,
+ id="excluded suite",
+ ),
+ pytest.param(
+ {"attributes": {"unittest_variant": "no-fission+socketprocess"}},
+ assert_spi_not_disabled,
+ id="composite variant",
+ ),
+ ),
+)
+def test_ensure_spi_disabled_on_all_but_spi(
+ make_test_task, run_transform, task, callback
+):
+ task.setdefault("suite", "mochitest-plain")
+ task = make_test_task(**task)
+ task = list(
+ run_transform(test_transforms.other.ensure_spi_disabled_on_all_but_spi, task)
+ )[0]
+ pprint(task)
+ callback(task)
+
+
+if __name__ == "__main__":
+ mozunit.main()
diff --git a/taskcluster/gecko_taskgraph/test/test_try_option_syntax.py b/taskcluster/gecko_taskgraph/test/test_try_option_syntax.py
new file mode 100644
index 0000000000..a37de53378
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/test_try_option_syntax.py
@@ -0,0 +1,430 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import unittest
+
+from mozunit import main
+from taskgraph.graph import Graph
+from taskgraph.task import Task
+from taskgraph.taskgraph import TaskGraph
+
+from gecko_taskgraph.try_option_syntax import TryOptionSyntax, parse_message
+
+
+def unittest_task(n, tp, bt="opt"):
+ return (
+ n,
+ Task(
+ "test",
+ n,
+ {
+ "unittest_try_name": n,
+ "test_platform": tp.split("/")[0],
+ "build_type": bt,
+ },
+ {},
+ ),
+ )
+
+
+def talos_task(n, tp, bt="opt"):
+ return (
+ n,
+ Task(
+ "test",
+ n,
+ {
+ "talos_try_name": n,
+ "test_platform": tp.split("/")[0],
+ "build_type": bt,
+ },
+ {},
+ ),
+ )
+
+
+tasks = {
+ k: v
+ for k, v in [
+ unittest_task("mochitest-browser-chrome", "linux/opt"),
+ unittest_task("mochitest-browser-chrome-e10s", "linux64/opt"),
+ unittest_task("mochitest-chrome", "linux/debug", "debug"),
+ unittest_task("mochitest-webgl1-core", "linux/debug", "debug"),
+ unittest_task("mochitest-webgl1-ext", "linux/debug", "debug"),
+ unittest_task("mochitest-webgl2-core", "linux/debug", "debug"),
+ unittest_task("mochitest-webgl2-ext", "linux/debug", "debug"),
+ unittest_task("mochitest-webgl2-deqp", "linux/debug", "debug"),
+ unittest_task("extra1", "linux", "debug/opt"),
+ unittest_task("extra2", "win32/opt"),
+ unittest_task("crashtest-e10s", "linux/other"),
+ unittest_task("gtest", "linux64/asan"),
+ talos_task("dromaeojs", "linux64/psan"),
+ unittest_task("extra3", "linux/opt"),
+ unittest_task("extra4", "linux64/debug", "debug"),
+ unittest_task("extra5", "linux/this"),
+ unittest_task("extra6", "linux/that"),
+ unittest_task("extra7", "linux/other"),
+ unittest_task("extra8", "linux64/asan"),
+ talos_task("extra9", "linux64/psan"),
+ ]
+}
+
+RIDEALONG_BUILDS = {
+ "linux": ["linux-ridealong"],
+ "linux64": ["linux64-ridealong"],
+}
+
+GRAPH_CONFIG = {
+ "try": {"ridealong-builds": RIDEALONG_BUILDS},
+}
+
+for r in RIDEALONG_BUILDS.values():
+ tasks.update({k: v for k, v in [unittest_task(n + "-test", n) for n in r]})
+
+unittest_tasks = {k: v for k, v in tasks.items() if "unittest_try_name" in v.attributes}
+talos_tasks = {k: v for k, v in tasks.items() if "talos_try_name" in v.attributes}
+graph_with_jobs = TaskGraph(tasks, Graph(set(tasks), set()))
+
+
+class TestTryOptionSyntax(unittest.TestCase):
+ def test_unknown_args(self):
+ "unknown arguments are ignored"
+ parameters = parse_message("try: --doubledash -z extra")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ # equilvant to "try:"..
+ self.assertEqual(tos.build_types, [])
+ self.assertEqual(tos.jobs, [])
+
+ def test_apostrophe_in_message(self):
+ "apostrophe does not break parsing"
+ parameters = parse_message("Increase spammy log's log level. try: -b do")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(sorted(tos.build_types), ["debug", "opt"])
+
+ def test_b_do(self):
+ "-b do should produce both build_types"
+ parameters = parse_message("try: -b do")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(sorted(tos.build_types), ["debug", "opt"])
+
+ def test_b_d(self):
+ "-b d should produce build_types=['debug']"
+ parameters = parse_message("try: -b d")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(sorted(tos.build_types), ["debug"])
+
+ def test_b_o(self):
+ "-b o should produce build_types=['opt']"
+ parameters = parse_message("try: -b o")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(sorted(tos.build_types), ["opt"])
+
+ def test_build_o(self):
+ "--build o should produce build_types=['opt']"
+ parameters = parse_message("try: --build o")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(sorted(tos.build_types), ["opt"])
+
+ def test_b_dx(self):
+ "-b dx should produce build_types=['debug'], silently ignoring the x"
+ parameters = parse_message("try: -b dx")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(sorted(tos.build_types), ["debug"])
+
+ def test_j_job(self):
+ "-j somejob sets jobs=['somejob']"
+ parameters = parse_message("try: -j somejob")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(sorted(tos.jobs), ["somejob"])
+
+ def test_j_jobs(self):
+ "-j job1,job2 sets jobs=['job1', 'job2']"
+ parameters = parse_message("try: -j job1,job2")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(sorted(tos.jobs), ["job1", "job2"])
+
+ def test_j_all(self):
+ "-j all sets jobs=None"
+ parameters = parse_message("try: -j all")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(tos.jobs, None)
+
+ def test_j_twice(self):
+ "-j job1 -j job2 sets jobs=job1, job2"
+ parameters = parse_message("try: -j job1 -j job2")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(sorted(tos.jobs), sorted(["job1", "job2"]))
+
+ def test_p_all(self):
+ "-p all sets platforms=None"
+ parameters = parse_message("try: -p all")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(tos.platforms, None)
+
+ def test_p_linux(self):
+ "-p linux sets platforms=['linux', 'linux-ridealong']"
+ parameters = parse_message("try: -p linux")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(tos.platforms, ["linux", "linux-ridealong"])
+
+ def test_p_linux_win32(self):
+ "-p linux,win32 sets platforms=['linux', 'linux-ridealong', 'win32']"
+ parameters = parse_message("try: -p linux,win32")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(sorted(tos.platforms), ["linux", "linux-ridealong", "win32"])
+
+ def test_p_expands_ridealongs(self):
+ "-p linux,linux64 includes the RIDEALONG_BUILDS"
+ parameters = parse_message("try: -p linux,linux64")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ platforms = set(["linux"] + RIDEALONG_BUILDS["linux"])
+ platforms |= set(["linux64"] + RIDEALONG_BUILDS["linux64"])
+ self.assertEqual(sorted(tos.platforms), sorted(platforms))
+
+ def test_u_none(self):
+ "-u none sets unittests=[]"
+ parameters = parse_message("try: -u none")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(tos.unittests, [])
+
+ def test_u_all(self):
+ "-u all sets unittests=[..whole list..]"
+ parameters = parse_message("try: -u all")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(tos.unittests, [{"test": t} for t in sorted(unittest_tasks)])
+
+ def test_u_single(self):
+ "-u mochitest-webgl1-core sets unittests=[mochitest-webgl1-core]"
+ parameters = parse_message("try: -u mochitest-webgl1-core")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(tos.unittests, [{"test": "mochitest-webgl1-core"}])
+
+ def test_u_alias(self):
+ "-u mochitest-gl sets unittests=[mochitest-webgl*]"
+ parameters = parse_message("try: -u mochitest-gl")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(
+ tos.unittests,
+ [
+ {"test": t}
+ for t in [
+ "mochitest-webgl1-core",
+ "mochitest-webgl1-ext",
+ "mochitest-webgl2-core",
+ "mochitest-webgl2-deqp",
+ "mochitest-webgl2-ext",
+ ]
+ ],
+ )
+
+ def test_u_multi_alias(self):
+ "-u e10s sets unittests=[all e10s unittests]"
+ parameters = parse_message("try: -u e10s")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(
+ tos.unittests, [{"test": t} for t in sorted(unittest_tasks) if "e10s" in t]
+ )
+
+ def test_u_commas(self):
+ "-u mochitest-webgl1-core,gtest sets unittests=both"
+ parameters = parse_message("try: -u mochitest-webgl1-core,gtest")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(
+ tos.unittests,
+ [
+ {"test": "gtest"},
+ {"test": "mochitest-webgl1-core"},
+ ],
+ )
+
+ def test_u_chunks(self):
+ "-u gtest-3,gtest-4 selects the third and fourth chunk of gtest"
+ parameters = parse_message("try: -u gtest-3,gtest-4")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(
+ sorted(tos.unittests),
+ sorted(
+ [
+ {"test": "gtest", "only_chunks": set("34")},
+ ]
+ ),
+ )
+
+ def test_u_platform(self):
+ "-u gtest[linux] selects the linux platform for gtest"
+ parameters = parse_message("try: -u gtest[linux]")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(
+ sorted(tos.unittests),
+ sorted(
+ [
+ {"test": "gtest", "platforms": ["linux"]},
+ ]
+ ),
+ )
+
+ def test_u_platforms(self):
+ "-u gtest[linux,win32] selects the linux and win32 platforms for gtest"
+ parameters = parse_message("try: -u gtest[linux,win32]")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(
+ sorted(tos.unittests),
+ sorted(
+ [
+ {"test": "gtest", "platforms": ["linux", "win32"]},
+ ]
+ ),
+ )
+
+ def test_u_platforms_pretty(self):
+ """-u gtest[Ubuntu] selects the linux, linux64 and linux64-asan
+ platforms for gtest"""
+ parameters = parse_message("try: -u gtest[Ubuntu]")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(
+ sorted(tos.unittests),
+ sorted(
+ [
+ {
+ "test": "gtest",
+ "platforms": [
+ "linux32",
+ "linux64",
+ "linux64-asan",
+ "linux1804-64",
+ "linux1804-64-asan",
+ ],
+ },
+ ]
+ ),
+ )
+
+ def test_u_platforms_negated(self):
+ "-u gtest[-linux] selects all platforms but linux for gtest"
+ parameters = parse_message("try: -u gtest[-linux]")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ all_platforms = {x.attributes["test_platform"] for x in unittest_tasks.values()}
+ self.assertEqual(
+ sorted(tos.unittests[0]["platforms"]),
+ sorted(x for x in all_platforms if x != "linux"),
+ )
+
+ def test_u_platforms_negated_pretty(self):
+ "-u gtest[Ubuntu,-x64] selects just linux for gtest"
+ parameters = parse_message("try: -u gtest[Ubuntu,-x64]")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(
+ sorted(tos.unittests),
+ sorted(
+ [
+ {"test": "gtest", "platforms": ["linux32"]},
+ ]
+ ),
+ )
+
+ def test_u_chunks_platforms(self):
+ "-u gtest-1[linux,win32] selects the linux and win32 platforms for chunk 1 of gtest"
+ parameters = parse_message("try: -u gtest-1[linux,win32]")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(
+ tos.unittests,
+ [
+ {
+ "test": "gtest",
+ "platforms": ["linux", "win32"],
+ "only_chunks": set("1"),
+ },
+ ],
+ )
+
+ def test_t_none(self):
+ "-t none sets talos=[]"
+ parameters = parse_message("try: -t none")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(tos.talos, [])
+
+ def test_t_all(self):
+ "-t all sets talos=[..whole list..]"
+ parameters = parse_message("try: -t all")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(tos.talos, [{"test": t} for t in sorted(talos_tasks)])
+
+ def test_t_single(self):
+ "-t mochitest-webgl sets talos=[mochitest-webgl]"
+ parameters = parse_message("try: -t mochitest-webgl")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(tos.talos, [{"test": "mochitest-webgl"}])
+
+ # -t shares an implementation with -u, so it's not tested heavily
+
+ def test_trigger_tests(self):
+ "--rebuild 10 sets trigger_tests"
+ parameters = parse_message("try: --rebuild 10")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(tos.trigger_tests, 10)
+
+ def test_talos_trigger_tests(self):
+ "--rebuild-talos 10 sets talos_trigger_tests"
+ parameters = parse_message("try: --rebuild-talos 10")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(tos.talos_trigger_tests, 10)
+
+ def test_interactive(self):
+ "--interactive sets interactive"
+ parameters = parse_message("try: --interactive")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(tos.interactive, True)
+
+ def test_all_email(self):
+ "--all-emails sets notifications"
+ parameters = parse_message("try: --all-emails")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(tos.notifications, "all")
+
+ def test_fail_email(self):
+ "--failure-emails sets notifications"
+ parameters = parse_message("try: --failure-emails")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(tos.notifications, "failure")
+
+ def test_no_email(self):
+ "no email settings don't set notifications"
+ parameters = parse_message("try:")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(tos.notifications, None)
+
+ def test_setenv(self):
+ "--setenv VAR=value adds a environment variables setting to env"
+ parameters = parse_message("try: --setenv VAR1=value1 --setenv VAR2=value2")
+ assert parameters["try_task_config"]["env"] == {
+ "VAR1": "value1",
+ "VAR2": "value2",
+ }
+
+ def test_profile(self):
+ "--gecko-profile sets profile to true"
+ parameters = parse_message("try: --gecko-profile")
+ assert parameters["try_task_config"]["gecko-profile"] is True
+
+ def test_tag(self):
+ "--tag TAG sets tag to TAG value"
+ parameters = parse_message("try: --tag tagName")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertEqual(tos.tag, "tagName")
+
+ def test_no_retry(self):
+ "--no-retry sets no_retry to true"
+ parameters = parse_message("try: --no-retry")
+ tos = TryOptionSyntax(parameters, graph_with_jobs, GRAPH_CONFIG)
+ self.assertTrue(tos.no_retry)
+
+ def test_artifact(self):
+ "--artifact sets artifact to true"
+ parameters = parse_message("try: --artifact")
+ assert parameters["try_task_config"]["use-artifact-builds"] is True
+
+
+if __name__ == "__main__":
+ main()
diff --git a/taskcluster/gecko_taskgraph/test/test_util_attributes.py b/taskcluster/gecko_taskgraph/test/test_util_attributes.py
new file mode 100644
index 0000000000..26181cb8bf
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/test_util_attributes.py
@@ -0,0 +1,99 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import unittest
+
+from mozunit import main
+from taskgraph.util.attributes import attrmatch
+
+from gecko_taskgraph.util.attributes import match_run_on_projects
+
+
+class Attrmatch(unittest.TestCase):
+ def test_trivial_match(self):
+ """Given no conditions, anything matches"""
+ self.assertTrue(attrmatch({}))
+
+ def test_missing_attribute(self):
+ """If a filtering attribute is not present, no match"""
+ self.assertFalse(attrmatch({}, someattr=10))
+
+ def test_literal_attribute(self):
+ """Literal attributes must match exactly"""
+ self.assertTrue(attrmatch({"att": 10}, att=10))
+ self.assertFalse(attrmatch({"att": 10}, att=20))
+
+ def test_set_attribute(self):
+ """Set attributes require set membership"""
+ self.assertTrue(attrmatch({"att": 10}, att={9, 10}))
+ self.assertFalse(attrmatch({"att": 10}, att={19, 20}))
+
+ def test_callable_attribute(self):
+ """Callable attributes are called and any False causes the match to fail"""
+ self.assertTrue(attrmatch({"att": 10}, att=lambda val: True))
+ self.assertFalse(attrmatch({"att": 10}, att=lambda val: False))
+
+ def even(val):
+ return val % 2 == 0
+
+ self.assertTrue(attrmatch({"att": 10}, att=even))
+ self.assertFalse(attrmatch({"att": 11}, att=even))
+
+ def test_all_matches_required(self):
+ """If only one attribute does not match, the result is False"""
+ self.assertFalse(attrmatch({"a": 1}, a=1, b=2, c=3))
+ self.assertFalse(attrmatch({"a": 1, "b": 2}, a=1, b=2, c=3))
+ self.assertTrue(attrmatch({"a": 1, "b": 2, "c": 3}, a=1, b=2, c=3))
+
+
+class MatchRunOnProjects(unittest.TestCase):
+ def test_empty(self):
+ self.assertFalse(match_run_on_projects("birch", []))
+
+ def test_all(self):
+ self.assertTrue(match_run_on_projects("birch", ["all"]))
+ self.assertTrue(match_run_on_projects("larch", ["all"]))
+ self.assertTrue(match_run_on_projects("autoland", ["all"]))
+ self.assertTrue(match_run_on_projects("mozilla-central", ["all"]))
+ self.assertTrue(match_run_on_projects("mozilla-beta", ["all"]))
+ self.assertTrue(match_run_on_projects("mozilla-release", ["all"]))
+
+ def test_release(self):
+ self.assertFalse(match_run_on_projects("birch", ["release"]))
+ self.assertFalse(match_run_on_projects("larch", ["release"]))
+ self.assertFalse(match_run_on_projects("autoland", ["release"]))
+ self.assertTrue(match_run_on_projects("mozilla-central", ["release"]))
+ self.assertTrue(match_run_on_projects("mozilla-beta", ["release"]))
+ self.assertTrue(match_run_on_projects("mozilla-release", ["release"]))
+
+ def test_integration(self):
+ self.assertFalse(match_run_on_projects("birch", ["integration"]))
+ self.assertFalse(match_run_on_projects("larch", ["integration"]))
+ self.assertTrue(match_run_on_projects("autoland", ["integration"]))
+ self.assertFalse(match_run_on_projects("mozilla-central", ["integration"]))
+ self.assertFalse(match_run_on_projects("mozilla-beta", ["integration"]))
+ self.assertFalse(match_run_on_projects("mozilla-integration", ["integration"]))
+
+ def test_combo(self):
+ self.assertTrue(match_run_on_projects("birch", ["release", "birch", "maple"]))
+ self.assertFalse(match_run_on_projects("larch", ["release", "birch", "maple"]))
+ self.assertTrue(match_run_on_projects("maple", ["release", "birch", "maple"]))
+ self.assertFalse(
+ match_run_on_projects("autoland", ["release", "birch", "maple"])
+ )
+ self.assertTrue(
+ match_run_on_projects("mozilla-central", ["release", "birch", "maple"])
+ )
+ self.assertTrue(
+ match_run_on_projects("mozilla-beta", ["release", "birch", "maple"])
+ )
+ self.assertTrue(
+ match_run_on_projects("mozilla-release", ["release", "birch", "maple"])
+ )
+ self.assertTrue(match_run_on_projects("birch", ["birch", "trunk"]))
+
+
+if __name__ == "__main__":
+ main()
diff --git a/taskcluster/gecko_taskgraph/test/test_util_backstop.py b/taskcluster/gecko_taskgraph/test/test_util_backstop.py
new file mode 100644
index 0000000000..af9aabd5af
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/test_util_backstop.py
@@ -0,0 +1,155 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+from datetime import datetime
+from textwrap import dedent
+from time import mktime
+
+import pytest
+from mozunit import main
+from taskgraph.util.taskcluster import get_artifact_url, get_index_url, get_task_url
+
+from gecko_taskgraph.util.backstop import (
+ BACKSTOP_INDEX,
+ BACKSTOP_PUSH_INTERVAL,
+ BACKSTOP_TIME_INTERVAL,
+ is_backstop,
+)
+
+LAST_BACKSTOP_ID = 0
+LAST_BACKSTOP_PUSHDATE = mktime(datetime.now().timetuple())
+DEFAULT_RESPONSES = {
+ "index": {
+ "status": 200,
+ "json": {"taskId": LAST_BACKSTOP_ID},
+ },
+ "artifact": {
+ "status": 200,
+ "body": dedent(
+ """
+ pushdate: {}
+ """.format(
+ LAST_BACKSTOP_PUSHDATE
+ )
+ ),
+ },
+ "status": {
+ "status": 200,
+ "json": {"status": {"state": "complete"}},
+ },
+}
+
+
+@pytest.fixture
+def params():
+ return {
+ "branch": "integration/autoland",
+ "head_repository": "https://hg.mozilla.org/integration/autoland",
+ "head_rev": "abcdef",
+ "project": "autoland",
+ "pushdate": LAST_BACKSTOP_PUSHDATE + 1,
+ "pushlog_id": LAST_BACKSTOP_ID + 1,
+ }
+
+
+@pytest.mark.parametrize(
+ "response_args,extra_params,expected",
+ (
+ pytest.param(
+ {
+ "index": {"status": 404},
+ },
+ {"pushlog_id": 1},
+ True,
+ id="no previous backstop",
+ ),
+ pytest.param(
+ {
+ "index": DEFAULT_RESPONSES["index"],
+ "status": DEFAULT_RESPONSES["status"],
+ "artifact": {"status": 404},
+ },
+ {"pushlog_id": 1},
+ False,
+ id="previous backstop not finished",
+ ),
+ pytest.param(
+ DEFAULT_RESPONSES,
+ {
+ "pushlog_id": LAST_BACKSTOP_ID + 1,
+ "pushdate": LAST_BACKSTOP_PUSHDATE + 1,
+ },
+ False,
+ id="not a backstop",
+ ),
+ pytest.param(
+ {},
+ {
+ "pushlog_id": BACKSTOP_PUSH_INTERVAL,
+ },
+ True,
+ id="backstop interval",
+ ),
+ pytest.param(
+ DEFAULT_RESPONSES,
+ {
+ "pushdate": LAST_BACKSTOP_PUSHDATE + (BACKSTOP_TIME_INTERVAL * 60),
+ },
+ True,
+ id="time elapsed",
+ ),
+ pytest.param(
+ {},
+ {
+ "project": "try",
+ "pushlog_id": BACKSTOP_PUSH_INTERVAL,
+ },
+ False,
+ id="try not a backstop",
+ ),
+ pytest.param(
+ {},
+ {
+ "project": "mozilla-central",
+ },
+ True,
+ id="release branches always a backstop",
+ ),
+ pytest.param(
+ {
+ "index": DEFAULT_RESPONSES["index"],
+ "status": {
+ "status": 200,
+ "json": {"status": {"state": "failed"}},
+ },
+ },
+ {},
+ True,
+ id="last backstop failed",
+ ),
+ ),
+)
+def test_is_backstop(responses, params, response_args, extra_params, expected):
+ urls = {
+ "index": get_index_url(
+ BACKSTOP_INDEX.format(
+ **{"trust-domain": "gecko", "project": params["project"]}
+ )
+ ),
+ "artifact": get_artifact_url(LAST_BACKSTOP_ID, "public/parameters.yml"),
+ "status": get_task_url(LAST_BACKSTOP_ID) + "/status",
+ }
+
+ for key in ("index", "status", "artifact"):
+ if key in response_args:
+ print(urls[key])
+ responses.add(responses.GET, urls[key], **response_args[key])
+
+ params.update(extra_params)
+ assert is_backstop(params) is expected
+
+
+if __name__ == "__main__":
+ main()
diff --git a/taskcluster/gecko_taskgraph/test/test_util_bugbug.py b/taskcluster/gecko_taskgraph/test/test_util_bugbug.py
new file mode 100644
index 0000000000..7e8865ddde
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/test_util_bugbug.py
@@ -0,0 +1,57 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import mozunit
+
+from gecko_taskgraph.util.bugbug import BUGBUG_BASE_URL, push_schedules
+
+
+def test_group_translation(responses):
+ branch = ("integration/autoland",)
+ rev = "abcdef"
+ query = f"/push/{branch}/{rev}/schedules"
+ url = BUGBUG_BASE_URL + query
+
+ responses.add(
+ responses.GET,
+ url,
+ json={
+ "groups": {
+ "dom/indexedDB": 1,
+ "testing/web-platform/tests/IndexedDB": 1,
+ "testing/web-platform/mozilla/tests/IndexedDB": 1,
+ },
+ "config_groups": {
+ "dom/indexedDB": ["label1", "label2"],
+ "testing/web-platform/tests/IndexedDB": ["label3"],
+ "testing/web-platform/mozilla/tests/IndexedDB": ["label4"],
+ },
+ },
+ status=200,
+ )
+
+ assert len(push_schedules) == 0
+ data = push_schedules(branch, rev)
+ print(data)
+ assert sorted(data["groups"]) == [
+ "/IndexedDB",
+ "/_mozilla/IndexedDB",
+ "dom/indexedDB",
+ ]
+ assert data["config_groups"] == {
+ "dom/indexedDB": ["label1", "label2"],
+ "/IndexedDB": ["label3"],
+ "/_mozilla/IndexedDB": ["label4"],
+ }
+ assert len(push_schedules) == 1
+
+ # Value is memoized.
+ responses.reset()
+ push_schedules(branch, rev)
+ assert len(push_schedules) == 1
+
+
+if __name__ == "__main__":
+ mozunit.main()
diff --git a/taskcluster/gecko_taskgraph/test/test_util_chunking.py b/taskcluster/gecko_taskgraph/test/test_util_chunking.py
new file mode 100644
index 0000000000..99434af042
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/test_util_chunking.py
@@ -0,0 +1,403 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import re
+from itertools import combinations
+
+import pytest
+from mozunit import main
+
+from gecko_taskgraph.util import chunking
+
+pytestmark = pytest.mark.slow
+
+
+@pytest.fixture(scope="module")
+def mock_manifest_runtimes():
+ """Deterministically produce a list of simulated manifest runtimes.
+
+ Args:
+ manifests (list): list of manifests against which simulated manifest
+ runtimes would be paired up to.
+
+ Returns:
+ dict of manifest data paired with a float value representing runtime.
+ """
+
+ def inner(manifests):
+ manifests = sorted(manifests)
+ # Generate deterministic runtime data.
+ runtimes = [(i / 10) ** (i / 10) for i in range(len(manifests))]
+ return dict(zip(manifests, runtimes))
+
+ return inner
+
+
+@pytest.fixture(scope="module")
+def unchunked_manifests():
+ """Produce a list of unchunked manifests to be consumed by test method.
+
+ Args:
+ length (int, optional): number of path elements to keep.
+ cutoff (int, optional): number of generated test paths to remove
+ from the test set if user wants to limit the number of paths.
+
+ Returns:
+ list: list of test paths.
+ """
+ data = ["blueberry", "nashi", "peach", "watermelon"]
+
+ def inner(suite, length=2, cutoff=0):
+ if "web-platform" in suite:
+ suffix = ""
+ prefix = "/"
+ elif "reftest" in suite:
+ suffix = ".list"
+ prefix = ""
+ else:
+ suffix = ".ini"
+ prefix = ""
+ return [prefix + "/".join(p) + suffix for p in combinations(data, length)][
+ cutoff:
+ ]
+
+ return inner
+
+
+@pytest.fixture(scope="module")
+def mock_task_definition():
+ """Builds a mock task definition for use in testing.
+
+ Args:
+ os_name (str): represents the os.
+ os_version (str): represents the os version
+ bits (int): software bits.
+ build_type (str): opt or debug.
+ build_attrs (list, optional): specify build attribute(s)
+ variants (list, optional): specify runtime variant(s)
+
+ Returns:
+ dict: mocked task definition.
+ """
+
+ def inner(os_name, os_version, bits, build_type, build_attrs=None, variants=None):
+ setting = {
+ "platform": {
+ "arch": str(bits),
+ "os": {
+ "name": os_name,
+ "version": os_version,
+ },
+ },
+ "build": {
+ "type": build_type,
+ },
+ "runtime": {},
+ }
+
+ # Optionally set build attributes and runtime variants.
+ if build_attrs:
+ if isinstance(build_attrs, str):
+ build_attrs = [build_attrs]
+ for attr in build_attrs:
+ setting["build"][attr] = True
+
+ if variants:
+ if isinstance(variants, str):
+ variants = [variants]
+ for variant in variants:
+ setting["runtime"][variant] = True
+ return {"test-name": "foo", "test-setting": setting}
+
+ return inner
+
+
+@pytest.fixture(scope="module")
+def mock_mozinfo():
+ """Returns a mocked mozinfo object, similar to guess_mozinfo_from_task().
+
+ Args:
+ os (str): typically one of 'win, linux, mac, android'.
+ processor (str): processor architecture.
+ asan (bool, optional): addressanitizer build.
+ bits (int, optional): defaults to 64.
+ ccov (bool, optional): code coverage build.
+ debug (bool, optional): debug type build.
+ fission (bool, optional): process fission.
+ headless (bool, optional): headless browser testing without displays.
+ tsan (bool, optional): threadsanitizer build.
+
+ Returns:
+ dict: Dictionary mimickign the results from guess_mozinfo_from_task.
+ """
+
+ def inner(
+ os,
+ processor,
+ asan=False,
+ bits=64,
+ ccov=False,
+ debug=False,
+ fission=False,
+ headless=False,
+ tsan=False,
+ ):
+ return {
+ "os": os,
+ "processor": processor,
+ "toolkit": "",
+ "asan": asan,
+ "bits": bits,
+ "ccov": ccov,
+ "debug": debug,
+ "e10s": True,
+ "fission": fission,
+ "headless": headless,
+ "tsan": tsan,
+ "appname": "firefox",
+ "condprof": False,
+ }
+
+ return inner
+
+
+@pytest.mark.parametrize(
+ "params,exception",
+ [
+ [("win", "7", 32, "opt"), None],
+ [("win", "10", 64, "opt"), None],
+ [("linux", "1804", 64, "debug"), None],
+ [("macosx", "1015", 64, "debug"), None],
+ [("macosx", "1100", 64, "opt"), None],
+ [("android", "", 64, "debug"), None],
+ [("and", "", 64, "debug"), ValueError],
+ [("", "", 64, "opt"), ValueError],
+ [("linux", "1804", 64, "opt", ["ccov"]), None],
+ [("linux", "1804", 64, "opt", ["asan"]), None],
+ [("win", "10", 64, "opt", ["tsan"]), None],
+ [("mac", "1100", 64, "opt", ["ccov"]), None],
+ [("android", "", 64, "opt", None, ["fission"]), None],
+ [("win", "10", "aarch64", "opt"), None],
+ ],
+)
+def test_guess_mozinfo_from_task(params, exception, mock_task_definition):
+ """Tests the mozinfo guessing process."""
+ # Set up a mocked task object.
+ task = mock_task_definition(*params)
+
+ if exception:
+ with pytest.raises(exception):
+ result = chunking.guess_mozinfo_from_task(task)
+ else:
+ expected_toolkits = {
+ "android": "android",
+ "linux": "gtk",
+ "mac": "cocoa",
+ "win": "windows",
+ }
+ result = chunking.guess_mozinfo_from_task(task)
+ setting = task["test-setting"]
+
+ assert str(result["bits"]) in setting["platform"]["arch"]
+ assert result["os"] in ("android", "linux", "mac", "win")
+ assert result["os"] in setting["platform"]["os"]["name"]
+ assert result["toolkit"] == expected_toolkits[result["os"]]
+
+ # Ensure the outcome of special build variants being present match what
+ # guess_mozinfo_from_task method returns for these attributes.
+ assert ("asan" in setting["build"]) == result["asan"]
+ assert ("tsan" in setting["build"]) == result["tsan"]
+ assert ("ccov" in setting["build"]) == result["ccov"]
+
+ # Ensure runtime variants match
+ assert ("fission" in setting["runtime"]) == result["fission"]
+ assert ("1proc" in setting["runtime"]) != result["e10s"]
+
+
+@pytest.mark.parametrize("platform", ["unix", "windows", "android"])
+@pytest.mark.parametrize(
+ "suite", ["crashtest", "reftest", "web-platform-tests", "xpcshell"]
+)
+def test_get_runtimes(platform, suite):
+ """Tests that runtime information is returned for known good configurations."""
+ assert chunking.get_runtimes(platform, suite)
+
+
+@pytest.mark.parametrize(
+ "platform,suite,exception",
+ [
+ ("nonexistent_platform", "nonexistent_suite", KeyError),
+ ("unix", "nonexistent_suite", KeyError),
+ ("unix", "", TypeError),
+ ("", "", TypeError),
+ ("", "nonexistent_suite", TypeError),
+ ],
+)
+def test_get_runtimes_invalid(platform, suite, exception):
+ """Ensure get_runtimes() method raises an exception if improper request is made."""
+ with pytest.raises(exception):
+ chunking.get_runtimes(platform, suite)
+
+
+@pytest.mark.parametrize(
+ "suite",
+ [
+ "web-platform-tests",
+ "web-platform-tests-reftest",
+ "web-platform-tests-wdspec",
+ "web-platform-tests-crashtest",
+ ],
+)
+@pytest.mark.parametrize("chunks", [1, 3, 6, 20])
+def test_mock_chunk_manifests_wpt(unchunked_manifests, suite, chunks):
+ """Tests web-platform-tests and its subsuites chunking process."""
+ # Setup.
+ manifests = unchunked_manifests(suite)
+
+ # Generate the expected results, by generating list of indices that each
+ # manifest should go into and then appending each item to that index.
+ # This method is intentionally different from the way chunking.py performs
+ # chunking for cross-checking.
+ expected = [[] for _ in range(chunks)]
+ indexed = zip(manifests, list(range(0, chunks)) * len(manifests))
+ for i in indexed:
+ expected[i[1]].append(i[0])
+
+ # Call the method under test on unchunked manifests.
+ chunked_manifests = chunking.chunk_manifests(suite, "unix", chunks, manifests)
+
+ # Assertions and end test.
+ assert chunked_manifests
+ if chunks > len(manifests):
+ # If chunk count exceeds number of manifests, not all chunks will have
+ # manifests.
+ with pytest.raises(AssertionError):
+ assert all(chunked_manifests)
+ else:
+ assert all(chunked_manifests)
+ minimum = min(len(c) for c in chunked_manifests)
+ maximum = max(len(c) for c in chunked_manifests)
+ assert maximum - minimum <= 1
+ assert expected == chunked_manifests
+
+
+@pytest.mark.parametrize(
+ "suite",
+ [
+ "mochitest-devtools-chrome",
+ "mochitest-browser-chrome",
+ "mochitest-plain",
+ "mochitest-chrome",
+ "xpcshell",
+ ],
+)
+@pytest.mark.parametrize("chunks", [1, 3, 6, 20])
+def test_mock_chunk_manifests(
+ mock_manifest_runtimes, unchunked_manifests, suite, chunks
+):
+ """Tests non-WPT tests and its subsuites chunking process."""
+ # Setup.
+ manifests = unchunked_manifests(suite)
+
+ # Call the method under test on unchunked manifests.
+ chunked_manifests = chunking.chunk_manifests(suite, "unix", chunks, manifests)
+
+ # Assertions and end test.
+ assert chunked_manifests
+ if chunks > len(manifests):
+ # If chunk count exceeds number of manifests, not all chunks will have
+ # manifests.
+ with pytest.raises(AssertionError):
+ assert all(chunked_manifests)
+ else:
+ assert all(chunked_manifests)
+
+
+@pytest.mark.parametrize(
+ "suite",
+ [
+ "web-platform-tests",
+ "web-platform-tests-reftest",
+ "xpcshell",
+ "mochitest-plain",
+ "mochitest-devtools-chrome",
+ "mochitest-browser-chrome",
+ "mochitest-chrome",
+ ],
+)
+@pytest.mark.parametrize(
+ "platform",
+ [
+ ("mac", "x86_64"),
+ ("win", "x86_64"),
+ ("win", "x86"),
+ ("win", "aarch64"),
+ ("linux", "x86_64"),
+ ("linux", "x86"),
+ ],
+)
+def test_get_manifests(suite, platform, mock_mozinfo):
+ """Tests the DefaultLoader class' ability to load manifests."""
+ mozinfo = mock_mozinfo(*platform)
+
+ loader = chunking.DefaultLoader([])
+ manifests = loader.get_manifests(suite, frozenset(mozinfo.items()))
+
+ assert manifests
+ assert manifests["active"]
+ if "web-platform" in suite:
+ assert manifests["skipped"] == []
+ else:
+ assert manifests["skipped"]
+
+ items = manifests["active"]
+ if suite == "xpcshell":
+ assert all([re.search(r"xpcshell(.*)?.ini", m) for m in items])
+ if "mochitest" in suite:
+ assert all([re.search(r"(mochitest|chrome|browser).*.ini", m) for m in items])
+ if "web-platform" in suite:
+ assert all([m.startswith("/") and m.count("/") <= 4 for m in items])
+
+
+@pytest.mark.parametrize(
+ "suite",
+ [
+ "mochitest-devtools-chrome",
+ "mochitest-browser-chrome",
+ "mochitest-plain",
+ "mochitest-chrome",
+ "web-platform-tests",
+ "web-platform-tests-reftest",
+ "xpcshell",
+ ],
+)
+@pytest.mark.parametrize(
+ "platform",
+ [
+ ("mac", "x86_64"),
+ ("win", "x86_64"),
+ ("linux", "x86_64"),
+ ],
+)
+@pytest.mark.parametrize("chunks", [1, 3, 6, 20])
+def test_chunk_manifests(suite, platform, chunks, mock_mozinfo):
+ """Tests chunking with real manifests."""
+ mozinfo = mock_mozinfo(*platform)
+
+ loader = chunking.DefaultLoader([])
+ manifests = loader.get_manifests(suite, frozenset(mozinfo.items()))
+
+ chunked_manifests = chunking.chunk_manifests(
+ suite, platform, chunks, manifests["active"]
+ )
+
+ # Assertions and end test.
+ assert chunked_manifests
+ assert len(chunked_manifests) == chunks
+ assert all(chunked_manifests)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/taskcluster/gecko_taskgraph/test/test_util_docker.py b/taskcluster/gecko_taskgraph/test/test_util_docker.py
new file mode 100644
index 0000000000..49c01738fe
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/test_util_docker.py
@@ -0,0 +1,255 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import os
+import shutil
+import stat
+import tarfile
+import tempfile
+import unittest
+from unittest import mock
+
+import taskcluster_urls as liburls
+from mozunit import MockedOpen, main
+
+from gecko_taskgraph.util import docker
+
+MODE_STANDARD = stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IROTH
+
+
+@mock.patch.dict("os.environ", {"TASKCLUSTER_ROOT_URL": liburls.test_root_url()})
+class TestDocker(unittest.TestCase):
+ def test_generate_context_hash(self):
+ tmpdir = tempfile.mkdtemp()
+ try:
+ os.makedirs(os.path.join(tmpdir, "docker", "my-image"))
+ p = os.path.join(tmpdir, "docker", "my-image", "Dockerfile")
+ with open(p, "w") as f:
+ f.write("FROM node\nADD a-file\n")
+ os.chmod(p, MODE_STANDARD)
+ p = os.path.join(tmpdir, "docker", "my-image", "a-file")
+ with open(p, "w") as f:
+ f.write("data\n")
+ os.chmod(p, MODE_STANDARD)
+ self.assertIn(
+ docker.generate_context_hash(
+ tmpdir,
+ os.path.join(tmpdir, "docker/my-image"),
+ "my-image",
+ {},
+ ),
+ (
+ "680532a33c845e3b4f8ea8a7bd697da579b647f28c29f7a0a71e51e6cca33983",
+ "cc02f943ae87b283749369fa9c4f6a74639c27a7b9972c99de58e5d9fb3a98ae",
+ ),
+ )
+ finally:
+ shutil.rmtree(tmpdir)
+
+ def test_docker_image_explicit_registry(self):
+ files = {}
+ files[f"{docker.IMAGE_DIR}/myimage/REGISTRY"] = "cool-images"
+ files[f"{docker.IMAGE_DIR}/myimage/VERSION"] = "1.2.3"
+ files[f"{docker.IMAGE_DIR}/myimage/HASH"] = "sha256:434..."
+ with MockedOpen(files):
+ self.assertEqual(
+ docker.docker_image("myimage"), "cool-images/myimage@sha256:434..."
+ )
+
+ def test_docker_image_explicit_registry_by_tag(self):
+ files = {}
+ files[f"{docker.IMAGE_DIR}/myimage/REGISTRY"] = "myreg"
+ files[f"{docker.IMAGE_DIR}/myimage/VERSION"] = "1.2.3"
+ files[f"{docker.IMAGE_DIR}/myimage/HASH"] = "sha256:434..."
+ with MockedOpen(files):
+ self.assertEqual(
+ docker.docker_image("myimage", by_tag=True), "myreg/myimage:1.2.3"
+ )
+
+ def test_docker_image_default_registry(self):
+ files = {}
+ files[f"{docker.IMAGE_DIR}/REGISTRY"] = "mozilla"
+ files[f"{docker.IMAGE_DIR}/myimage/VERSION"] = "1.2.3"
+ files[f"{docker.IMAGE_DIR}/myimage/HASH"] = "sha256:434..."
+ with MockedOpen(files):
+ self.assertEqual(
+ docker.docker_image("myimage"), "mozilla/myimage@sha256:434..."
+ )
+
+ def test_docker_image_default_registry_by_tag(self):
+ files = {}
+ files[f"{docker.IMAGE_DIR}/REGISTRY"] = "mozilla"
+ files[f"{docker.IMAGE_DIR}/myimage/VERSION"] = "1.2.3"
+ files[f"{docker.IMAGE_DIR}/myimage/HASH"] = "sha256:434..."
+ with MockedOpen(files):
+ self.assertEqual(
+ docker.docker_image("myimage", by_tag=True), "mozilla/myimage:1.2.3"
+ )
+
+ def test_create_context_tar_basic(self):
+ tmp = tempfile.mkdtemp()
+ try:
+ d = os.path.join(tmp, "test_image")
+ os.mkdir(d)
+ with open(os.path.join(d, "Dockerfile"), "a"):
+ pass
+ os.chmod(os.path.join(d, "Dockerfile"), MODE_STANDARD)
+
+ with open(os.path.join(d, "extra"), "a"):
+ pass
+ os.chmod(os.path.join(d, "extra"), MODE_STANDARD)
+
+ tp = os.path.join(tmp, "tar")
+ h = docker.create_context_tar(tmp, d, tp, "my_image", {})
+ self.assertIn(
+ h,
+ (
+ "eae3ad00936085eb3e5958912f79fb06ee8e14a91f7157c5f38625f7ddacb9c7",
+ "9ff54ee091c4f346e94e809b03efae5aa49a5c1db152f9f633682cfa005f7422",
+ ),
+ )
+
+ # File prefix should be "my_image"
+ with tarfile.open(tp, "r:gz") as tf:
+ self.assertEqual(
+ tf.getnames(),
+ [
+ "Dockerfile",
+ "extra",
+ ],
+ )
+ finally:
+ shutil.rmtree(tmp)
+
+ def test_create_context_topsrcdir_files(self):
+ tmp = tempfile.mkdtemp()
+ try:
+ d = os.path.join(tmp, "test-image")
+ os.mkdir(d)
+ with open(os.path.join(d, "Dockerfile"), "wb") as fh:
+ fh.write(b"# %include extra/file0\n")
+ os.chmod(os.path.join(d, "Dockerfile"), MODE_STANDARD)
+
+ extra = os.path.join(tmp, "extra")
+ os.mkdir(extra)
+ with open(os.path.join(extra, "file0"), "a"):
+ pass
+ os.chmod(os.path.join(extra, "file0"), MODE_STANDARD)
+
+ tp = os.path.join(tmp, "tar")
+ h = docker.create_context_tar(tmp, d, tp, "test_image", {})
+ self.assertIn(
+ h,
+ (
+ "49dc3827530cd344d7bcc52e1fdd4aefc632568cf442cffd3dd9633a58f271bf",
+ "8f8e3dd2b712003cd12bb39e5a84fc2a7c06e891cf481613a52bf3db472c4ca9",
+ ),
+ )
+
+ with tarfile.open(tp, "r:gz") as tf:
+ self.assertEqual(
+ tf.getnames(),
+ [
+ "Dockerfile",
+ "topsrcdir/extra/file0",
+ ],
+ )
+ finally:
+ shutil.rmtree(tmp)
+
+ def test_create_context_absolute_path(self):
+ tmp = tempfile.mkdtemp()
+ try:
+ d = os.path.join(tmp, "test-image")
+ os.mkdir(d)
+
+ # Absolute paths in %include syntax are not allowed.
+ with open(os.path.join(d, "Dockerfile"), "wb") as fh:
+ fh.write(b"# %include /etc/shadow\n")
+
+ with self.assertRaisesRegexp(Exception, "cannot be absolute"):
+ docker.create_context_tar(tmp, d, os.path.join(tmp, "tar"), "test", {})
+ finally:
+ shutil.rmtree(tmp)
+
+ def test_create_context_outside_topsrcdir(self):
+ tmp = tempfile.mkdtemp()
+ try:
+ d = os.path.join(tmp, "test-image")
+ os.mkdir(d)
+
+ with open(os.path.join(d, "Dockerfile"), "wb") as fh:
+ fh.write(b"# %include foo/../../../etc/shadow\n")
+
+ with self.assertRaisesRegexp(Exception, "path outside topsrcdir"):
+ docker.create_context_tar(tmp, d, os.path.join(tmp, "tar"), "test", {})
+ finally:
+ shutil.rmtree(tmp)
+
+ def test_create_context_missing_extra(self):
+ tmp = tempfile.mkdtemp()
+ try:
+ d = os.path.join(tmp, "test-image")
+ os.mkdir(d)
+
+ with open(os.path.join(d, "Dockerfile"), "wb") as fh:
+ fh.write(b"# %include does/not/exist\n")
+
+ with self.assertRaisesRegexp(Exception, "path does not exist"):
+ docker.create_context_tar(tmp, d, os.path.join(tmp, "tar"), "test", {})
+ finally:
+ shutil.rmtree(tmp)
+
+ def test_create_context_extra_directory(self):
+ tmp = tempfile.mkdtemp()
+ try:
+ d = os.path.join(tmp, "test-image")
+ os.mkdir(d)
+
+ with open(os.path.join(d, "Dockerfile"), "wb") as fh:
+ fh.write(b"# %include extra\n")
+ fh.write(b"# %include file0\n")
+ os.chmod(os.path.join(d, "Dockerfile"), MODE_STANDARD)
+
+ extra = os.path.join(tmp, "extra")
+ os.mkdir(extra)
+ for i in range(3):
+ p = os.path.join(extra, "file%d" % i)
+ with open(p, "wb") as fh:
+ fh.write(b"file%d" % i)
+ os.chmod(p, MODE_STANDARD)
+
+ with open(os.path.join(tmp, "file0"), "a"):
+ pass
+ os.chmod(os.path.join(tmp, "file0"), MODE_STANDARD)
+
+ tp = os.path.join(tmp, "tar")
+ h = docker.create_context_tar(tmp, d, tp, "my_image", {})
+
+ self.assertIn(
+ h,
+ (
+ "a392f23cd6606ae43116390a4d0113354cff1e688a41d46f48b0fb25e90baa13",
+ "02325bdc508c2e941959170beeb840f6bb91d0675cb8095783a7db7301d136b2",
+ ),
+ )
+
+ with tarfile.open(tp, "r:gz") as tf:
+ self.assertEqual(
+ tf.getnames(),
+ [
+ "Dockerfile",
+ "topsrcdir/extra/file0",
+ "topsrcdir/extra/file1",
+ "topsrcdir/extra/file2",
+ "topsrcdir/file0",
+ ],
+ )
+ finally:
+ shutil.rmtree(tmp)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/taskcluster/gecko_taskgraph/test/test_util_partials.py b/taskcluster/gecko_taskgraph/test/test_util_partials.py
new file mode 100644
index 0000000000..3630d7b0ec
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/test_util_partials.py
@@ -0,0 +1,128 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import unittest
+from unittest import mock
+
+from mozunit import main
+
+from gecko_taskgraph.util import partials
+
+release_blob = {
+ "fileUrls": {
+ "release-localtest": {
+ "completes": {
+ "*": "%OS_FTP%/%LOCALE%/firefox-92.0.1.complete.mar",
+ }
+ }
+ },
+ "platforms": {
+ "WINNT_x86_64-msvc": {
+ "locales": {
+ "en-US": {
+ "buildID": "20210922161155",
+ }
+ }
+ }
+ },
+}
+
+
+def nightly_blob(release):
+ return {
+ "platforms": {
+ "WINNT_x86_64-msvc": {
+ "locales": {
+ "en-US": {
+ "buildID": release[-14:],
+ "completes": [{"fileUrl": release}],
+ }
+ }
+ }
+ }
+ }
+
+
+class TestReleaseHistory(unittest.TestCase):
+ @mock.patch("gecko_taskgraph.util.partials.get_release_builds")
+ @mock.patch("gecko_taskgraph.util.partials.get_sorted_releases")
+ def test_populate_release_history(self, get_sorted_releases, get_release_builds):
+ self.assertEqual(
+ partials.populate_release_history(
+ "Firefox", "mozilla-release", partial_updates={}
+ ),
+ {},
+ )
+ get_sorted_releases.assert_not_called()
+ get_release_builds.assert_not_called()
+
+ def patched_get_sorted_releases(product, branch):
+ assert branch == "mozilla-central"
+ return [
+ "Firefox-mozilla-central-nightly-20211003201113",
+ "Firefox-mozilla-central-nightly-20211003100640",
+ "Firefox-mozilla-central-nightly-20211002213629",
+ "Firefox-mozilla-central-nightly-20211002095048",
+ "Firefox-mozilla-central-nightly-20211001214601",
+ "Firefox-mozilla-central-nightly-20211001093323",
+ ]
+
+ def patched_get_release_builds(release, branch):
+ if branch == "mozilla-central":
+ return nightly_blob(release)
+ if branch == "mozilla-release":
+ return release_blob
+
+ get_sorted_releases.side_effect = patched_get_sorted_releases
+ get_release_builds.side_effect = patched_get_release_builds
+
+ self.assertEqual(
+ partials.populate_release_history(
+ "Firefox",
+ "mozilla-release",
+ partial_updates={"92.0.1": {"buildNumber": 1}},
+ ),
+ {
+ "WINNT_x86_64-msvc": {
+ "en-US": {
+ "target-92.0.1.partial.mar": {
+ "buildid": "20210922161155",
+ "mar_url": "win64/en-US/firefox-92.0.1.complete.mar",
+ "previousVersion": "92.0.1",
+ "previousBuildNumber": 1,
+ "product": "Firefox",
+ }
+ }
+ }
+ },
+ )
+ self.assertEqual(
+ partials.populate_release_history("Firefox", "mozilla-central"),
+ {
+ "WINNT_x86_64-msvc": {
+ "en-US": {
+ "target.partial-1.mar": {
+ "buildid": "20211003201113",
+ "mar_url": "Firefox-mozilla-central-nightly-20211003201113",
+ },
+ "target.partial-2.mar": {
+ "buildid": "20211003100640",
+ "mar_url": "Firefox-mozilla-central-nightly-20211003100640",
+ },
+ "target.partial-3.mar": {
+ "buildid": "20211002213629",
+ "mar_url": "Firefox-mozilla-central-nightly-20211002213629",
+ },
+ "target.partial-4.mar": {
+ "buildid": "20211002095048",
+ "mar_url": "Firefox-mozilla-central-nightly-20211002095048",
+ },
+ }
+ }
+ },
+ )
+
+
+if __name__ == "__main__":
+ main()
diff --git a/taskcluster/gecko_taskgraph/test/test_util_runnable_jobs.py b/taskcluster/gecko_taskgraph/test/test_util_runnable_jobs.py
new file mode 100644
index 0000000000..993521b830
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/test_util_runnable_jobs.py
@@ -0,0 +1,76 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import unittest
+
+from mozunit import main
+from taskgraph.graph import Graph
+from taskgraph.task import Task
+from taskgraph.taskgraph import TaskGraph
+
+from gecko_taskgraph.decision import full_task_graph_to_runnable_jobs
+
+
+class TestRunnableJobs(unittest.TestCase):
+
+ tasks = [
+ {
+ "kind": "build",
+ "label": "a",
+ "attributes": {},
+ "task": {
+ "extra": {"treeherder": {"symbol": "B"}},
+ },
+ },
+ {
+ "kind": "test",
+ "label": "b",
+ "attributes": {},
+ "task": {
+ "extra": {
+ "treeherder": {
+ "collection": {"opt": True},
+ "groupName": "Some group",
+ "groupSymbol": "GS",
+ "machine": {"platform": "linux64"},
+ "symbol": "t",
+ }
+ },
+ },
+ },
+ ]
+
+ def make_taskgraph(self, tasks):
+ label_to_taskid = {k: k + "-tid" for k in tasks}
+ for label, task_id in label_to_taskid.items():
+ tasks[label].task_id = task_id
+ graph = Graph(nodes=set(tasks), edges=set())
+ taskgraph = TaskGraph(tasks, graph)
+ return taskgraph, label_to_taskid
+
+ def test_taskgraph_to_runnable_jobs(self):
+ tg, label_to_taskid = self.make_taskgraph(
+ {t["label"]: Task(**t) for t in self.tasks[:]}
+ )
+
+ res = full_task_graph_to_runnable_jobs(tg.to_json())
+
+ self.assertEqual(
+ res,
+ {
+ "a": {"symbol": "B"},
+ "b": {
+ "collection": {"opt": True},
+ "groupName": "Some group",
+ "groupSymbol": "GS",
+ "symbol": "t",
+ "platform": "linux64",
+ },
+ },
+ )
+
+
+if __name__ == "__main__":
+ main()
diff --git a/taskcluster/gecko_taskgraph/test/test_util_templates.py b/taskcluster/gecko_taskgraph/test/test_util_templates.py
new file mode 100644
index 0000000000..edfb13a277
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/test_util_templates.py
@@ -0,0 +1,79 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import unittest
+
+import mozunit
+
+from gecko_taskgraph.util.templates import merge, merge_to
+
+
+class MergeTest(unittest.TestCase):
+ def test_merge_to_dicts(self):
+ source = {"a": 1, "b": 2}
+ dest = {"b": "20", "c": 30}
+ expected = {
+ "a": 1, # source only
+ "b": 2, # source overrides dest
+ "c": 30, # dest only
+ }
+ self.assertEqual(merge_to(source, dest), expected)
+ self.assertEqual(dest, expected)
+
+ def test_merge_to_lists(self):
+ source = {"x": [3, 4]}
+ dest = {"x": [1, 2]}
+ expected = {"x": [1, 2, 3, 4]} # dest first
+ self.assertEqual(merge_to(source, dest), expected)
+ self.assertEqual(dest, expected)
+
+ def test_merge_diff_types(self):
+ source = {"x": [1, 2]}
+ dest = {"x": "abc"}
+ expected = {"x": [1, 2]} # source wins
+ self.assertEqual(merge_to(source, dest), expected)
+ self.assertEqual(dest, expected)
+
+ def test_merge(self):
+ first = {"a": 1, "b": 2, "d": 11}
+ second = {"b": 20, "c": 30}
+ third = {"c": 300, "d": 400}
+ expected = {
+ "a": 1,
+ "b": 20,
+ "c": 300,
+ "d": 400,
+ }
+ self.assertEqual(merge(first, second, third), expected)
+
+ # inputs haven't changed..
+ self.assertEqual(first, {"a": 1, "b": 2, "d": 11})
+ self.assertEqual(second, {"b": 20, "c": 30})
+ self.assertEqual(third, {"c": 300, "d": 400})
+
+ def test_merge_by(self):
+ source = {
+ "x": "abc",
+ "y": {"by-foo": {"quick": "fox", "default": ["a", "b", "c"]}},
+ }
+ dest = {"y": {"by-foo": {"purple": "rain", "default": ["x", "y", "z"]}}}
+ expected = {
+ "x": "abc",
+ "y": {"by-foo": {"quick": "fox", "default": ["a", "b", "c"]}},
+ } # source wins
+ self.assertEqual(merge_to(source, dest), expected)
+ self.assertEqual(dest, expected)
+
+ def test_merge_multiple_by(self):
+ source = {"x": {"by-foo": {"quick": "fox", "default": ["a", "b", "c"]}}}
+ dest = {"x": {"by-bar": {"purple": "rain", "default": ["x", "y", "z"]}}}
+ expected = {
+ "x": {"by-foo": {"quick": "fox", "default": ["a", "b", "c"]}}
+ } # source wins
+ self.assertEqual(merge_to(source, dest), expected)
+
+
+if __name__ == "__main__":
+ mozunit.main()
diff --git a/taskcluster/gecko_taskgraph/test/test_util_verify.py b/taskcluster/gecko_taskgraph/test/test_util_verify.py
new file mode 100644
index 0000000000..e2f774a315
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/test/test_util_verify.py
@@ -0,0 +1,149 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+There are some basic tests run as part of the Decision task to make sure
+documentation exists for taskgraph functionality.
+These functions are defined in gecko_taskgraph.generator and call
+gecko_taskgraph.util.verify.verify_docs with different parameters to do the
+actual checking.
+"""
+
+
+import os.path
+
+import pytest
+from mozunit import main
+
+import gecko_taskgraph.util.verify
+from gecko_taskgraph import GECKO
+from gecko_taskgraph.util.verify import DocPaths, verify_docs
+
+FF_DOCS_BASE = os.path.join(GECKO, "taskcluster", "docs")
+EXTRA_DOCS_BASE = os.path.abspath(os.path.join(os.path.dirname(__file__), "docs"))
+
+
+@pytest.fixture
+def mock_single_doc_path(monkeypatch):
+ """Set a single path containing documentation"""
+ mocked_documentation_paths = DocPaths()
+ mocked_documentation_paths.add(FF_DOCS_BASE)
+ monkeypatch.setattr(
+ gecko_taskgraph.util.verify, "documentation_paths", mocked_documentation_paths
+ )
+
+
+@pytest.fixture
+def mock_two_doc_paths(monkeypatch):
+ """Set two paths containing documentation"""
+ mocked_documentation_paths = DocPaths()
+ mocked_documentation_paths.add(FF_DOCS_BASE)
+ mocked_documentation_paths.add(EXTRA_DOCS_BASE)
+ monkeypatch.setattr(
+ gecko_taskgraph.util.verify, "documentation_paths", mocked_documentation_paths
+ )
+
+
+@pytest.mark.usefixtures("mock_single_doc_path")
+class PyTestSingleDocPath:
+ """
+ Taskcluster documentation for Firefox is in a single directory. Check the tests
+ running at build time to make sure documentation exists, actually work themselves.
+ """
+
+ def test_heading(self):
+ """
+ Look for a headings in filename matching identifiers. This is used when making sure
+ documentation exists for kinds and attributes.
+ """
+ verify_docs(
+ filename="kinds.rst",
+ identifiers=["build", "packages", "toolchain"],
+ appearing_as="heading",
+ )
+ with pytest.raises(Exception, match="missing from doc file"):
+ verify_docs(
+ filename="kinds.rst",
+ identifiers=["build", "packages", "badvalue"],
+ appearing_as="heading",
+ )
+
+ def test_inline_literal(self):
+ """
+ Look for inline-literals in filename. Used when checking documentation for decision
+ task parameters and run-using functions.
+ """
+ verify_docs(
+ filename="parameters.rst",
+ identifiers=["base_repository", "head_repository", "owner"],
+ appearing_as="inline-literal",
+ )
+ with pytest.raises(Exception, match="missing from doc file"):
+ verify_docs(
+ filename="parameters.rst",
+ identifiers=["base_repository", "head_repository", "badvalue"],
+ appearing_as="inline-literal",
+ )
+
+
+@pytest.mark.usefixtures("mock_two_doc_paths")
+class PyTestTwoDocPaths:
+ """
+ Thunderbird extends Firefox's taskgraph with additional kinds. The documentation
+ for Thunderbird kinds are in its repository, and documentation_paths will have
+ two places to look for files. Run the same tests as for a single documentation
+ path, and cover additional possible scenarios.
+ """
+
+ def test_heading(self):
+ """
+ Look for a headings in filename matching identifiers. This is used when
+ making sure documentation exists for kinds and attributes.
+ The first test looks for headings that are all within the first doc path,
+ the second test is new and has a heading found in the second path.
+ The final check has a identifier that will not match and should
+ produce an error.
+ """
+ verify_docs(
+ filename="kinds.rst",
+ identifiers=["build", "packages", "toolchain"],
+ appearing_as="heading",
+ )
+ verify_docs(
+ filename="kinds.rst",
+ identifiers=["build", "packages", "newkind"],
+ appearing_as="heading",
+ )
+ with pytest.raises(Exception, match="missing from doc file"):
+ verify_docs(
+ filename="kinds.rst",
+ identifiers=["build", "packages", "badvalue"],
+ appearing_as="heading",
+ )
+
+ def test_inline_literal(self):
+ """
+ Look for inline-literals in filename. Used when checking documentation for decision
+ task parameters and run-using functions. As with the heading tests,
+ the second check looks for an identifier in the added documentation path.
+ """
+ verify_docs(
+ filename="parameters.rst",
+ identifiers=["base_repository", "head_repository", "owner"],
+ appearing_as="inline-literal",
+ )
+ verify_docs(
+ filename="parameters.rst",
+ identifiers=["base_repository", "head_repository", "newparameter"],
+ appearing_as="inline-literal",
+ )
+ with pytest.raises(Exception, match="missing from doc file"):
+ verify_docs(
+ filename="parameters.rst",
+ identifiers=["base_repository", "head_repository", "badvalue"],
+ appearing_as="inline-literal",
+ )
+
+
+if __name__ == "__main__":
+ main()
diff --git a/taskcluster/gecko_taskgraph/transforms/__init__.py b/taskcluster/gecko_taskgraph/transforms/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/__init__.py
diff --git a/taskcluster/gecko_taskgraph/transforms/artifact.py b/taskcluster/gecko_taskgraph/transforms/artifact.py
new file mode 100644
index 0000000000..559148f7b4
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/artifact.py
@@ -0,0 +1,116 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Apply different expiration dates to different artifacts based on a manifest file (artifacts.yml)
+"""
+import logging
+import os
+import sys
+
+import yaml
+from taskgraph.transforms.base import TransformSequence
+from yaml import YAMLError
+
+from gecko_taskgraph.transforms.job.common import get_expiration
+from gecko_taskgraph.util.workertypes import worker_type_implementation
+
+logger = logging.getLogger(__name__)
+
+transforms = TransformSequence()
+
+
+def read_artifact_manifest(manifest_path):
+ """Read the artifacts.yml manifest file and return it."""
+ # logger.info(f"The current directory is {os.getcwd()}")
+ try:
+ with open(manifest_path, "r") as ymlf:
+ yml = yaml.safe_load(ymlf.read())
+ return yml
+ except YAMLError as ye:
+ err = 'Failed to parse manifest "{manifest_path}". Invalid Yaml:'
+ err += ye
+ raise SystemExit(err)
+ except FileNotFoundError:
+ err = f'Failed to load manifest "{manifest_path}". File not found'
+ raise SystemExit(err)
+ except PermissionError:
+ err = f'Failed to load manifest "{manifest_path}". Permission Error'
+ raise SystemExit(err)
+
+
+@transforms.add
+def set_artifact_expiration(config, jobs):
+ """Set the expiration for certain artifacts based on a manifest file."""
+ """---
+ win:
+ - build_resources.json: short
+
+ linux:
+ - target.crashreporter-symbols-full.tar.zst: medium
+ """
+ transform_dir = os.path.dirname(__file__)
+ manifest = read_artifact_manifest(os.path.join(transform_dir, "artifacts.yml"))
+
+ for job in jobs:
+ try:
+ platform = job["attributes"]["build_platform"]
+ except KeyError:
+ err = "Tried to get build_platfrom for job, but it does not exist. Exiting."
+ raise SystemExit(err)
+ if "worker" in job:
+ if "env" in job["worker"]:
+ if isinstance(job["worker"]["env"], dict):
+ job["worker"]["env"]["MOZ_ARTIFACT_PLATFORM"] = platform
+ else:
+ raise SystemExit(
+ f"Expected env to be a dict, but it was {type(job['worker']['env'])}"
+ )
+ if "artifacts" in job["worker"]:
+ plat = platform.lower()
+ if "plain" in plat or "ccov" in plat or "rusttest" in plat:
+ art_dict = None
+ elif (
+ plat == "toolchain-wasm32-wasi-compiler-rt-trunk"
+ or plat == "toolchain-linux64-x64-compiler-rt-trunk"
+ or plat == "toolchain-linux64-x86-compiler-rt-trunk"
+ or plat == "android-geckoview-docs"
+ ):
+ art_dict = None
+ elif plat.startswith("win"):
+ art_dict = manifest["win"]
+ elif plat.startswith("linux"):
+ art_dict = manifest["linux"]
+ elif plat.startswith("mac"):
+ art_dict = manifest["macos"]
+ elif plat.startswith("android"):
+ art_dict = manifest["android"]
+ else:
+ print(
+ 'The platform name "{plat}" didn\'t start with',
+ '"win", "mac", "android", or "linux".',
+ file=sys.stderr,
+ )
+ art_dict = None
+ worker_implementation, _ = worker_type_implementation(
+ config.graph_config, config.params, job["worker-type"]
+ )
+ if worker_implementation == "docker-worker":
+ artifact_dest = "/builds/worker/cidata/{}"
+ else:
+ artifact_dest = "cidata/{}"
+
+ if art_dict is not None:
+ for art_name in art_dict.keys():
+ # The 'artifacts' key of a job is a list at this stage.
+ # So, must append a new dict to the list
+ expiry_policy = art_dict[art_name]
+ expires = get_expiration(config, policy=expiry_policy)
+ new_art = {
+ "name": f"public/cidata/{art_name}",
+ "path": artifact_dest.format(art_name),
+ "type": "file",
+ "expires-after": expires,
+ }
+ job["worker"]["artifacts"].append(new_art)
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/artifacts.yml b/taskcluster/gecko_taskgraph/transforms/artifacts.yml
new file mode 100644
index 0000000000..b41c657283
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/artifacts.yml
@@ -0,0 +1,16 @@
+---
+win:
+ target.crashreporter-symbols-full.tar.zst: shortest
+ sccache.log: shortest
+
+linux:
+ target.crashreporter-symbols-full.tar.zst: shortest
+ sccache.log: shortest
+
+macos:
+ target.crashreporter-symbols-full.tar.zst: shortest
+ sccache.log: shortest
+
+android:
+ target.crashreporter-symbols-full.tar.zst: shortest
+ sccache.log: shortest
diff --git a/taskcluster/gecko_taskgraph/transforms/attribution.py b/taskcluster/gecko_taskgraph/transforms/attribution.py
new file mode 100644
index 0000000000..935c274c03
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/attribution.py
@@ -0,0 +1,32 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from taskgraph.transforms.base import TransformSequence
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def stub_installer(config, jobs):
+ """Not all windows builds come with a stub installer (only win32, and not
+ on esr), so conditionally add it here based on our dependency's
+ stub-installer attribute."""
+ for job in jobs:
+ dep_name, dep_label = next(iter(job["dependencies"].items()))
+ dep_task = config.kind_dependencies_tasks[dep_label]
+ if dep_task.attributes.get("stub-installer"):
+ locale = job["attributes"].get("locale")
+ if locale:
+ artifact = f"{locale}/target.stub-installer.exe"
+ else:
+ artifact = "target.stub-installer.exe"
+ job["fetches"][dep_name].append(artifact)
+ job["run"]["command"] += [
+ "--input",
+ "/builds/worker/fetches/target.stub-installer.exe",
+ ]
+ job["attributes"]["release_artifacts"].append(
+ "public/build/target.stub-installer.exe"
+ )
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/balrog_submit.py b/taskcluster/gecko_taskgraph/transforms/balrog_submit.py
new file mode 100644
index 0000000000..067600f0cb
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/balrog_submit.py
@@ -0,0 +1,138 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the per-locale balrog task into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import optionally_keyed_by, resolve_keyed_by
+from taskgraph.util.treeherder import replace_group
+from voluptuous import Optional
+
+from gecko_taskgraph.loader.single_dep import schema
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
+
+balrog_description_schema = schema.extend(
+ {
+ # unique label to describe this balrog task, defaults to balrog-{dep.label}
+ Optional("label"): str,
+ Optional(
+ "update-no-wnp",
+ description="Whether the parallel `-No-WNP` blob should be updated as well.",
+ ): optionally_keyed_by("release-type", bool),
+ # treeherder is allowed here to override any defaults we use for beetmover. See
+ # taskcluster/gecko_taskgraph/transforms/task.py for the schema details, and the
+ # below transforms for defaults of various values.
+ Optional("treeherder"): task_description_schema["treeherder"],
+ Optional("attributes"): task_description_schema["attributes"],
+ # Shipping product / phase
+ Optional("shipping-product"): task_description_schema["shipping-product"],
+ Optional("shipping-phase"): task_description_schema["shipping-phase"],
+ }
+)
+
+
+transforms = TransformSequence()
+transforms.add_validate(balrog_description_schema)
+
+
+@transforms.add
+def handle_keyed_by(config, jobs):
+ """Resolve fields that can be keyed by platform, etc."""
+ fields = [
+ "update-no-wnp",
+ ]
+ for job in jobs:
+ label = job.get("dependent-task", object).__dict__.get("label", "?no-label?")
+ for field in fields:
+ resolve_keyed_by(
+ item=job,
+ field=field,
+ item_name=label,
+ **{
+ "project": config.params["project"],
+ "release-type": config.params["release_type"],
+ },
+ )
+ yield job
+
+
+@transforms.add
+def make_task_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+
+ treeherder = job.get("treeherder", {})
+ treeherder.setdefault("symbol", "c-Up(N)")
+ dep_th_platform = (
+ dep_job.task.get("extra", {})
+ .get("treeherder", {})
+ .get("machine", {})
+ .get("platform", "")
+ )
+ treeherder.setdefault("platform", f"{dep_th_platform}/opt")
+ treeherder.setdefault(
+ "tier", dep_job.task.get("extra", {}).get("treeherder", {}).get("tier", 1)
+ )
+ treeherder.setdefault("kind", "build")
+
+ attributes = copy_attributes_from_dependent_job(dep_job)
+
+ treeherder_job_symbol = dep_job.task["extra"]["treeherder"]["symbol"]
+ treeherder["symbol"] = replace_group(treeherder_job_symbol, "c-Up")
+
+ if dep_job.attributes.get("locale"):
+ attributes["locale"] = dep_job.attributes.get("locale")
+
+ label = job["label"]
+
+ description = (
+ "Balrog submission for locale '{locale}' for build '"
+ "{build_platform}/{build_type}'".format(
+ locale=attributes.get("locale", "en-US"),
+ build_platform=attributes.get("build_platform"),
+ build_type=attributes.get("build_type"),
+ )
+ )
+
+ upstream_artifacts = [
+ {
+ "taskId": {"task-reference": "<beetmover>"},
+ "taskType": "beetmover",
+ "paths": ["public/manifest.json"],
+ }
+ ]
+
+ dependencies = {"beetmover": dep_job.label}
+ for kind_dep in config.kind_dependencies_tasks.values():
+ if (
+ kind_dep.kind == "startup-test"
+ and kind_dep.attributes["build_platform"]
+ == attributes.get("build_platform")
+ and kind_dep.attributes["build_type"] == attributes.get("build_type")
+ and kind_dep.attributes.get("shipping_product")
+ == job.get("shipping-product")
+ ):
+ dependencies["startup-test"] = kind_dep.label
+
+ task = {
+ "label": label,
+ "description": description,
+ "worker-type": "balrog",
+ "worker": {
+ "implementation": "balrog",
+ "upstream-artifacts": upstream_artifacts,
+ "balrog-action": "v2-submit-locale",
+ "suffixes": ["", "-No-WNP"] if job.get("update-no-wnp") else [""],
+ },
+ "dependencies": dependencies,
+ "attributes": attributes,
+ "run-on-projects": dep_job.attributes.get("run_on_projects"),
+ "treeherder": treeherder,
+ "shipping-phase": job.get("shipping-phase", "promote"),
+ "shipping-product": job.get("shipping-product"),
+ }
+
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/balrog_toplevel.py b/taskcluster/gecko_taskgraph/transforms/balrog_toplevel.py
new file mode 100644
index 0000000000..6b06758f69
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/balrog_toplevel.py
@@ -0,0 +1,42 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the beetmover task into an actual task description.
+"""
+
+from mozilla_version.gecko import GeckoVersion
+from mozrelease.balrog import generate_update_properties
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.yaml import load_yaml
+
+from gecko_taskgraph.util.scriptworker import get_release_config
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def generate_update_line(config, jobs):
+ """Resolve fields that can be keyed by platform, etc."""
+ release_config = get_release_config(config)
+ for job in jobs:
+ config_file = job.pop("whats-new-config")
+ update_config = load_yaml(config_file)
+
+ product = job["shipping-product"]
+ if product == "devedition":
+ product = "firefox"
+ job["worker"]["update-line"] = {}
+ for blob_type, suffix in [("wnp", ""), ("no-wnp", "-No-WNP")]:
+ context = {
+ "release-type": config.params["release_type"],
+ "product": product,
+ "version": GeckoVersion.parse(release_config["appVersion"]),
+ "blob-type": blob_type,
+ "build-id": config.params["moz_build_date"],
+ }
+ job["worker"]["update-line"][suffix] = generate_update_properties(
+ context, update_config
+ )
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover.py b/taskcluster/gecko_taskgraph/transforms/beetmover.py
new file mode 100644
index 0000000000..93818707dd
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/beetmover.py
@@ -0,0 +1,165 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the beetmover task into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.treeherder import replace_group
+from voluptuous import Optional, Required
+
+from gecko_taskgraph.loader.single_dep import schema
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
+from gecko_taskgraph.util.scriptworker import (
+ generate_beetmover_artifact_map,
+ generate_beetmover_upstream_artifacts,
+ get_beetmover_action_scope,
+ get_beetmover_bucket_scope,
+)
+
+transforms = TransformSequence()
+
+beetmover_description_schema = schema.extend(
+ {
+ # unique label to describe this beetmover task, defaults to {dep.label}-beetmover
+ Optional("label"): str,
+ # treeherder is allowed here to override any defaults we use for beetmover. See
+ # taskcluster/gecko_taskgraph/transforms/task.py for the schema details, and the
+ # below transforms for defaults of various values.
+ Optional("treeherder"): task_description_schema["treeherder"],
+ # locale is passed only for l10n beetmoving
+ Optional("locale"): str,
+ Required("shipping-phase"): task_description_schema["shipping-phase"],
+ Optional("shipping-product"): task_description_schema["shipping-product"],
+ Optional("attributes"): task_description_schema["attributes"],
+ }
+)
+
+
+transforms.add_validate(beetmover_description_schema)
+
+
+@transforms.add
+def make_task_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ attributes = dep_job.attributes
+
+ treeherder = job.get("treeherder", {})
+ treeherder.setdefault(
+ "symbol", replace_group(dep_job.task["extra"]["treeherder"]["symbol"], "BM")
+ )
+ dep_th_platform = (
+ dep_job.task.get("extra", {})
+ .get("treeherder", {})
+ .get("machine", {})
+ .get("platform", "")
+ )
+ treeherder.setdefault("platform", f"{dep_th_platform}/opt")
+ treeherder.setdefault(
+ "tier", dep_job.task.get("extra", {}).get("treeherder", {}).get("tier", 1)
+ )
+ treeherder.setdefault("kind", "build")
+ label = job["label"]
+ description = (
+ "Beetmover submission for locale '{locale}' for build '"
+ "{build_platform}/{build_type}'".format(
+ locale=attributes.get("locale", "en-US"),
+ build_platform=attributes.get("build_platform"),
+ build_type=attributes.get("build_type"),
+ )
+ )
+
+ dependencies = {dep_job.kind: dep_job.label}
+
+ # XXX release snap-repackage has a variable number of dependencies, depending on how many
+ # "post-beetmover-dummy" jobs there are in the graph.
+ if dep_job.kind != "release-snap-repackage" and len(dep_job.dependencies) > 1:
+ raise NotImplementedError(
+ "Can't beetmove a signing task with multiple dependencies"
+ )
+ signing_dependencies = dep_job.dependencies
+ dependencies.update(signing_dependencies)
+
+ attributes = copy_attributes_from_dependent_job(dep_job)
+ attributes.update(job.get("attributes", {}))
+
+ if job.get("locale"):
+ attributes["locale"] = job["locale"]
+
+ bucket_scope = get_beetmover_bucket_scope(config)
+ action_scope = get_beetmover_action_scope(config)
+
+ task = {
+ "label": label,
+ "description": description,
+ "worker-type": "beetmover",
+ "scopes": [bucket_scope, action_scope],
+ "dependencies": dependencies,
+ "attributes": attributes,
+ "run-on-projects": dep_job.attributes.get("run_on_projects"),
+ "treeherder": treeherder,
+ "shipping-phase": job["shipping-phase"],
+ }
+
+ yield task
+
+
+def craft_release_properties(config, job):
+ params = config.params
+ build_platform = job["attributes"]["build_platform"]
+ build_platform = build_platform.replace("-shippable", "")
+ if build_platform.endswith("-source"):
+ build_platform = build_platform.replace("-source", "-release")
+
+ # XXX This should be explicitly set via build attributes or something
+ if "android" in job["label"] or "fennec" in job["label"]:
+ app_name = "Fennec"
+ elif config.graph_config["trust-domain"] == "comm":
+ app_name = "Thunderbird"
+ else:
+ # XXX Even DevEdition is called Firefox
+ app_name = "Firefox"
+
+ return {
+ "app-name": app_name,
+ "app-version": params["app_version"],
+ "branch": params["project"],
+ "build-id": params["moz_build_date"],
+ "hash-type": "sha512",
+ "platform": build_platform,
+ }
+
+
+@transforms.add
+def make_task_worker(config, jobs):
+ for job in jobs:
+ valid_beetmover_job = len(job["dependencies"]) == 2 and any(
+ ["signing" in j for j in job["dependencies"]]
+ )
+ # XXX release snap-repackage has a variable number of dependencies, depending on how many
+ # "post-beetmover-dummy" jobs there are in the graph.
+ if "-snap-" not in job["label"] and not valid_beetmover_job:
+ raise NotImplementedError("Beetmover must have two dependencies.")
+
+ locale = job["attributes"].get("locale")
+ platform = job["attributes"]["build_platform"]
+
+ worker = {
+ "implementation": "beetmover",
+ "release-properties": craft_release_properties(config, job),
+ "upstream-artifacts": generate_beetmover_upstream_artifacts(
+ config, job, platform, locale
+ ),
+ "artifact-map": generate_beetmover_artifact_map(
+ config, job, platform=platform, locale=locale
+ ),
+ }
+
+ if locale:
+ worker["locale"] = locale
+ job["worker"] = worker
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover_apt.py b/taskcluster/gecko_taskgraph/transforms/beetmover_apt.py
new file mode 100644
index 0000000000..8c56f1a968
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/beetmover_apt.py
@@ -0,0 +1,114 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+from itertools import islice
+
+from taskgraph import MAX_DEPENDENCIES
+from taskgraph.transforms.base import TransformSequence
+
+from gecko_taskgraph.util.platforms import architecture
+from gecko_taskgraph.util.scriptworker import (
+ generate_artifact_registry_gcs_sources,
+ get_beetmover_apt_repo_scope,
+ get_beetmover_repo_action_scope,
+)
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def beetmover_apt(config, tasks):
+ product = (
+ "firefox"
+ if not config.params["release_type"] # try
+ or config.params["release_type"] == "nightly"
+ else config.params["release_product"]
+ )
+ filtered_tasks = filter_beetmover_apt_tasks(tasks, product)
+ # There are too many beetmover-repackage dependencies for a single task
+ # and we hit the taskgraph dependencies limit.
+ # To work around this limitation, we chunk the would be task
+ # into tasks dependendent on, at most, half of MAX_DEPENDENCIES.
+ batches = batched(filtered_tasks, MAX_DEPENDENCIES // 2)
+ for index, batch in enumerate(batches):
+ dependencies = {}
+ gcs_sources = []
+ for task in batch:
+ dep = task["primary-dependency"]
+ dependencies[dep.label] = dep.label
+ gcs_sources.extend(generate_artifact_registry_gcs_sources(dep))
+ description = f"Batch {index + 1} of beetmover APT submissions for the {config.params['release_type']} .deb packages"
+ platform = "firefox-release/opt"
+ treeherder = {
+ "platform": platform,
+ "tier": 1,
+ "kind": "other",
+ "symbol": f"BM-apt(batch-{index + 1})",
+ }
+ apt_repo_scope = get_beetmover_apt_repo_scope(config)
+ repo_action_scope = get_beetmover_repo_action_scope(config)
+ attributes = {
+ "required_signoffs": ["mar-signing"],
+ "shippable": True,
+ "shipping_product": product,
+ }
+ task = {
+ "label": f"{config.kind}-{index + 1}-{platform}",
+ "description": description,
+ "worker-type": "beetmover",
+ "treeherder": treeherder,
+ "scopes": [apt_repo_scope, repo_action_scope],
+ "attributes": attributes,
+ "shipping-phase": "ship",
+ "shipping-product": product,
+ "dependencies": dependencies,
+ }
+ worker = {
+ "implementation": "beetmover-import-from-gcs-to-artifact-registry",
+ "product": product,
+ "gcs-sources": gcs_sources,
+ }
+ task["worker"] = worker
+ yield task
+
+
+def batched(iterable, n):
+ "Batch data into tuples of length n. The last batch may be shorter."
+ # batched('ABCDEFG', 3) --> ABC DEF G
+ if n < 1:
+ raise ValueError("n must be at least one")
+ it = iter(iterable)
+ batch = tuple(islice(it, n))
+ while batch:
+ yield batch
+ batch = tuple(islice(it, n))
+
+
+def filter_beetmover_apt_tasks(tasks, product):
+ return (task for task in tasks if filter_beetmover_apt_task(task, product))
+
+
+def filter_beetmover_apt_task(task, product):
+ # We only create beetmover-apt tasks for l10n beetmover-repackage tasks that
+ # beetmove langpack .deb packages. The langpack .deb packages support all
+ # architectures, so we generate them only on x86_64 tasks.
+ return (
+ is_x86_64_l10n_task(task) or is_not_l10n_task(task)
+ ) and is_task_for_product(task, product)
+
+
+def is_x86_64_l10n_task(task):
+ dep = task["primary-dependency"]
+ locale = dep.attributes.get("locale")
+ return locale and architecture(dep.attributes["build_platform"]) == "x86_64"
+
+
+def is_not_l10n_task(task):
+ dep = task["primary-dependency"]
+ locale = dep.attributes.get("locale")
+ return not locale
+
+
+def is_task_for_product(task, product):
+ dep = task["primary-dependency"]
+ return dep.attributes.get("shipping_product") == product
diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover_checksums.py b/taskcluster/gecko_taskgraph/transforms/beetmover_checksums.py
new file mode 100644
index 0000000000..f595854a80
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/beetmover_checksums.py
@@ -0,0 +1,133 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the checksums signing task into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.treeherder import replace_group
+from voluptuous import Optional, Required
+
+from gecko_taskgraph.loader.single_dep import schema
+from gecko_taskgraph.transforms.beetmover import craft_release_properties
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
+from gecko_taskgraph.util.scriptworker import (
+ generate_beetmover_artifact_map,
+ generate_beetmover_upstream_artifacts,
+ get_beetmover_action_scope,
+ get_beetmover_bucket_scope,
+)
+
+beetmover_checksums_description_schema = schema.extend(
+ {
+ Required("attributes"): {str: object},
+ Optional("label"): str,
+ Optional("treeherder"): task_description_schema["treeherder"],
+ Optional("locale"): str,
+ Optional("shipping-phase"): task_description_schema["shipping-phase"],
+ Optional("shipping-product"): task_description_schema["shipping-product"],
+ }
+)
+
+transforms = TransformSequence()
+transforms.add_validate(beetmover_checksums_description_schema)
+
+
+@transforms.add
+def make_beetmover_checksums_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ attributes = dep_job.attributes
+
+ treeherder = job.get("treeherder", {})
+ treeherder.setdefault(
+ "symbol",
+ replace_group(dep_job.task["extra"]["treeherder"]["symbol"], "BMcs"),
+ )
+ dep_th_platform = (
+ dep_job.task.get("extra", {})
+ .get("treeherder", {})
+ .get("machine", {})
+ .get("platform", "")
+ )
+ treeherder.setdefault("platform", f"{dep_th_platform}/opt")
+ treeherder.setdefault(
+ "tier", dep_job.task.get("extra", {}).get("treeherder", {}).get("tier", 1)
+ )
+ treeherder.setdefault("kind", "build")
+
+ label = job["label"]
+ build_platform = attributes.get("build_platform")
+
+ description = (
+ "Beetmover submission of checksums for locale '{locale}' for build '"
+ "{build_platform}/{build_type}'".format(
+ locale=attributes.get("locale", "en-US"),
+ build_platform=build_platform,
+ build_type=attributes.get("build_type"),
+ )
+ )
+
+ extra = {}
+ if "devedition" in build_platform:
+ extra["product"] = "devedition"
+ else:
+ extra["product"] = "firefox"
+
+ dependencies = {dep_job.kind: dep_job.label}
+
+ attributes = copy_attributes_from_dependent_job(dep_job)
+ attributes.update(job.get("attributes", {}))
+
+ if dep_job.attributes.get("locale"):
+ treeherder["symbol"] = "BMcs({})".format(dep_job.attributes.get("locale"))
+ attributes["locale"] = dep_job.attributes.get("locale")
+
+ bucket_scope = get_beetmover_bucket_scope(config)
+ action_scope = get_beetmover_action_scope(config)
+
+ task = {
+ "label": label,
+ "description": description,
+ "worker-type": "beetmover",
+ "scopes": [bucket_scope, action_scope],
+ "dependencies": dependencies,
+ "attributes": attributes,
+ "run-on-projects": dep_job.attributes.get("run_on_projects"),
+ "treeherder": treeherder,
+ "extra": extra,
+ }
+
+ if "shipping-phase" in job:
+ task["shipping-phase"] = job["shipping-phase"]
+
+ if "shipping-product" in job:
+ task["shipping-product"] = job["shipping-product"]
+
+ yield task
+
+
+@transforms.add
+def make_beetmover_checksums_worker(config, jobs):
+ for job in jobs:
+ locale = job["attributes"].get("locale")
+ platform = job["attributes"]["build_platform"]
+
+ worker = {
+ "implementation": "beetmover",
+ "release-properties": craft_release_properties(config, job),
+ "upstream-artifacts": generate_beetmover_upstream_artifacts(
+ config, job, platform, locale
+ ),
+ "artifact-map": generate_beetmover_artifact_map(
+ config, job, platform=platform, locale=locale
+ ),
+ }
+
+ if locale:
+ worker["locale"] = locale
+ job["worker"] = worker
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover_emefree_checksums.py b/taskcluster/gecko_taskgraph/transforms/beetmover_emefree_checksums.py
new file mode 100644
index 0000000000..9c2b49b6c5
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/beetmover_emefree_checksums.py
@@ -0,0 +1,139 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform release-beetmover-source-checksums into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from voluptuous import Optional
+
+from gecko_taskgraph.loader.single_dep import schema
+from gecko_taskgraph.transforms.beetmover import craft_release_properties
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
+
+beetmover_checksums_description_schema = schema.extend(
+ {
+ Optional("label"): str,
+ Optional("extra"): object,
+ Optional("shipping-phase"): task_description_schema["shipping-phase"],
+ Optional("shipping-product"): task_description_schema["shipping-product"],
+ }
+)
+
+
+transforms = TransformSequence()
+transforms.add_validate(beetmover_checksums_description_schema)
+
+
+@transforms.add
+def make_beetmover_checksums_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ attributes = dep_job.attributes
+ build_platform = attributes.get("build_platform")
+ if not build_platform:
+ raise Exception("Cannot find build platform!")
+ repack_id = dep_job.task.get("extra", {}).get("repack_id")
+ if not repack_id:
+ raise Exception("Cannot find repack id!")
+
+ label = dep_job.label.replace("beetmover-", "beetmover-checksums-")
+ description = (
+ "Beetmove checksums for repack_id '{repack_id}' for build '"
+ "{build_platform}/{build_type}'".format(
+ repack_id=repack_id,
+ build_platform=build_platform,
+ build_type=attributes.get("build_type"),
+ )
+ )
+
+ extra = {}
+ extra["partner_path"] = dep_job.task["payload"]["upstreamArtifacts"][0][
+ "locale"
+ ]
+ extra["repack_id"] = repack_id
+
+ dependencies = {dep_job.kind: dep_job.label}
+ for k, v in dep_job.dependencies.items():
+ if k.startswith("beetmover"):
+ dependencies[k] = v
+
+ attributes = copy_attributes_from_dependent_job(dep_job)
+
+ task = {
+ "label": label,
+ "description": description,
+ "worker-type": "{}/{}".format(
+ dep_job.task["provisionerId"],
+ dep_job.task["workerType"],
+ ),
+ "scopes": dep_job.task["scopes"],
+ "dependencies": dependencies,
+ "attributes": attributes,
+ "run-on-projects": dep_job.attributes.get("run_on_projects"),
+ "extra": extra,
+ }
+
+ if "shipping-phase" in job:
+ task["shipping-phase"] = job["shipping-phase"]
+
+ if "shipping-product" in job:
+ task["shipping-product"] = job["shipping-product"]
+
+ yield task
+
+
+def generate_upstream_artifacts(refs, partner_path):
+ # Until bug 1331141 is fixed, if you are adding any new artifacts here that
+ # need to be transfered to S3, please be aware you also need to follow-up
+ # with a beetmover patch in https://github.com/mozilla-releng/beetmoverscript/.
+ # See example in bug 1348286
+ common_paths = [
+ "public/target.checksums",
+ ]
+
+ upstream_artifacts = [
+ {
+ "taskId": {"task-reference": refs["beetmover"]},
+ "taskType": "signing",
+ "paths": common_paths,
+ "locale": f"beetmover-checksums/{partner_path}",
+ }
+ ]
+
+ return upstream_artifacts
+
+
+@transforms.add
+def make_beetmover_checksums_worker(config, jobs):
+ for job in jobs:
+ valid_beetmover_job = len(job["dependencies"]) == 1
+ if not valid_beetmover_job:
+ raise NotImplementedError("Beetmover checksums must have one dependency.")
+
+ refs = {
+ "beetmover": None,
+ }
+ for dependency in job["dependencies"].keys():
+ if dependency.endswith("beetmover"):
+ refs["beetmover"] = f"<{dependency}>"
+ if None in refs.values():
+ raise NotImplementedError(
+ "Beetmover checksums must have a beetmover dependency!"
+ )
+
+ worker = {
+ "implementation": "beetmover",
+ "release-properties": craft_release_properties(config, job),
+ "upstream-artifacts": generate_upstream_artifacts(
+ refs,
+ job["extra"]["partner_path"],
+ ),
+ "partner-public": True,
+ }
+
+ job["worker"] = worker
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover_geckoview.py b/taskcluster/gecko_taskgraph/transforms/beetmover_geckoview.py
new file mode 100644
index 0000000000..6eee5954e3
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/beetmover_geckoview.py
@@ -0,0 +1,166 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the beetmover task into an actual task description.
+"""
+
+
+from copy import deepcopy
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import optionally_keyed_by, resolve_keyed_by
+from voluptuous import Optional, Required
+
+from gecko_taskgraph.loader.single_dep import schema
+from gecko_taskgraph.transforms.beetmover import (
+ craft_release_properties as beetmover_craft_release_properties,
+)
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.attributes import (
+ copy_attributes_from_dependent_job,
+ release_level,
+)
+from gecko_taskgraph.util.declarative_artifacts import (
+ get_geckoview_artifact_id,
+ get_geckoview_artifact_map,
+ get_geckoview_upstream_artifacts,
+)
+
+beetmover_description_schema = schema.extend(
+ {
+ Optional("label"): str,
+ Optional("treeherder"): task_description_schema["treeherder"],
+ Required("run-on-projects"): task_description_schema["run-on-projects"],
+ Required("run-on-hg-branches"): task_description_schema["run-on-hg-branches"],
+ Optional("bucket-scope"): optionally_keyed_by("release-level", str),
+ Optional("shipping-phase"): optionally_keyed_by(
+ "project", task_description_schema["shipping-phase"]
+ ),
+ Optional("shipping-product"): task_description_schema["shipping-product"],
+ Optional("attributes"): task_description_schema["attributes"],
+ }
+)
+
+transforms = TransformSequence()
+transforms.add_validate(beetmover_description_schema)
+
+
+@transforms.add
+def resolve_keys(config, jobs):
+ for job in jobs:
+ resolve_keyed_by(
+ job,
+ "run-on-hg-branches",
+ item_name=job["label"],
+ project=config.params["project"],
+ )
+ resolve_keyed_by(
+ job,
+ "shipping-phase",
+ item_name=job["label"],
+ project=config.params["project"],
+ )
+ resolve_keyed_by(
+ job,
+ "bucket-scope",
+ item_name=job["label"],
+ **{"release-level": release_level(config.params["project"])},
+ )
+ yield job
+
+
+@transforms.add
+def split_maven_packages(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ attributes = copy_attributes_from_dependent_job(dep_job)
+ for package in attributes["maven_packages"]:
+ package_job = deepcopy(job)
+ package_job["maven-package"] = package
+ yield package_job
+
+
+@transforms.add
+def make_task_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ attributes = copy_attributes_from_dependent_job(dep_job)
+ attributes.update(job.get("attributes", {}))
+
+ treeherder = job.get("treeherder", {})
+ dep_th_platform = (
+ dep_job.task.get("extra", {})
+ .get("treeherder", {})
+ .get("machine", {})
+ .get("platform", "")
+ )
+ treeherder.setdefault("platform", f"{dep_th_platform}/opt")
+ treeherder.setdefault("tier", 2)
+ treeherder.setdefault("kind", "build")
+ package = job["maven-package"]
+ treeherder.setdefault("symbol", f"BM-{package}")
+ label = job["label"]
+ description = (
+ "Beetmover submission for geckoview"
+ "{build_platform}/{build_type}'".format(
+ build_platform=attributes.get("build_platform"),
+ build_type=attributes.get("build_type"),
+ )
+ )
+
+ dependencies = deepcopy(dep_job.dependencies)
+ dependencies[dep_job.kind] = dep_job.label
+
+ if job.get("locale"):
+ attributes["locale"] = job["locale"]
+
+ attributes["run_on_hg_branches"] = job["run-on-hg-branches"]
+
+ task = {
+ "label": f"{package}-{label}",
+ "description": description,
+ "worker-type": "beetmover",
+ "scopes": [
+ job["bucket-scope"],
+ "project:releng:beetmover:action:push-to-maven",
+ ],
+ "dependencies": dependencies,
+ "attributes": attributes,
+ "run-on-projects": job["run-on-projects"],
+ "treeherder": treeherder,
+ "shipping-phase": job["shipping-phase"],
+ "maven-package": package,
+ }
+
+ yield task
+
+
+@transforms.add
+def make_task_worker(config, jobs):
+ for job in jobs:
+ job["worker"] = {
+ "artifact-map": get_geckoview_artifact_map(config, job),
+ "implementation": "beetmover-maven",
+ "release-properties": craft_release_properties(config, job),
+ "upstream-artifacts": get_geckoview_upstream_artifacts(
+ config, job, job["maven-package"]
+ ),
+ }
+ del job["maven-package"]
+
+ yield job
+
+
+def craft_release_properties(config, job):
+ release_properties = beetmover_craft_release_properties(config, job)
+
+ release_properties["artifact-id"] = get_geckoview_artifact_id(
+ config,
+ job["attributes"]["build_platform"],
+ job["maven-package"],
+ job["attributes"].get("update-channel"),
+ )
+ release_properties["app-name"] = "geckoview"
+
+ return release_properties
diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover_langpack_checksums.py b/taskcluster/gecko_taskgraph/transforms/beetmover_langpack_checksums.py
new file mode 100644
index 0000000000..9318ed29d4
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/beetmover_langpack_checksums.py
@@ -0,0 +1,128 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform release-beetmover-langpack-checksums into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.treeherder import inherit_treeherder_from_dep
+from voluptuous import Optional, Required
+
+from gecko_taskgraph.loader.single_dep import schema
+from gecko_taskgraph.transforms.beetmover import craft_release_properties
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
+from gecko_taskgraph.util.scriptworker import (
+ generate_beetmover_artifact_map,
+ generate_beetmover_upstream_artifacts,
+ get_beetmover_action_scope,
+ get_beetmover_bucket_scope,
+)
+
+beetmover_checksums_description_schema = schema.extend(
+ {
+ Required("attributes"): {str: object},
+ Optional("label"): str,
+ Optional("treeherder"): task_description_schema["treeherder"],
+ Optional("locale"): str,
+ Optional("shipping-phase"): task_description_schema["shipping-phase"],
+ Optional("shipping-product"): task_description_schema["shipping-product"],
+ }
+)
+
+transforms = TransformSequence()
+transforms.add_validate(beetmover_checksums_description_schema)
+
+
+@transforms.add
+def make_beetmover_checksums_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ attributes = dep_job.attributes
+
+ treeherder = inherit_treeherder_from_dep(job, dep_job)
+ treeherder.setdefault(
+ "symbol", "BMcslang(N{})".format(attributes.get("l10n_chunk", ""))
+ )
+
+ label = job["label"]
+ build_platform = attributes.get("build_platform")
+
+ description = "Beetmover submission of checksums for langpack files"
+
+ extra = {}
+ if "devedition" in build_platform:
+ extra["product"] = "devedition"
+ else:
+ extra["product"] = "firefox"
+
+ dependencies = {dep_job.kind: dep_job.label}
+ for k, v in dep_job.dependencies.items():
+ if k.startswith("beetmover"):
+ dependencies[k] = v
+
+ attributes = copy_attributes_from_dependent_job(dep_job)
+ if "chunk_locales" in dep_job.attributes:
+ attributes["chunk_locales"] = dep_job.attributes["chunk_locales"]
+ attributes.update(job.get("attributes", {}))
+
+ bucket_scope = get_beetmover_bucket_scope(config)
+ action_scope = get_beetmover_action_scope(config)
+
+ task = {
+ "label": label,
+ "description": description,
+ "worker-type": "beetmover",
+ "scopes": [bucket_scope, action_scope],
+ "dependencies": dependencies,
+ "attributes": attributes,
+ "run-on-projects": dep_job.attributes.get("run_on_projects"),
+ "treeherder": treeherder,
+ "extra": extra,
+ }
+
+ if "shipping-phase" in job:
+ task["shipping-phase"] = job["shipping-phase"]
+
+ if "shipping-product" in job:
+ task["shipping-product"] = job["shipping-product"]
+
+ yield task
+
+
+@transforms.add
+def make_beetmover_checksums_worker(config, jobs):
+ for job in jobs:
+ valid_beetmover_job = len(job["dependencies"]) == 1
+ if not valid_beetmover_job:
+ raise NotImplementedError("Beetmover checksums must have one dependency.")
+
+ locales = job["attributes"].get("chunk_locales")
+ platform = job["attributes"]["build_platform"]
+
+ refs = {
+ "beetmover": None,
+ }
+ for dependency in job["dependencies"].keys():
+ if dependency.startswith("release-beetmover"):
+ refs["beetmover"] = f"<{dependency}>"
+ if None in refs.values():
+ raise NotImplementedError(
+ "Beetmover checksums must have a beetmover dependency!"
+ )
+
+ worker = {
+ "implementation": "beetmover",
+ "release-properties": craft_release_properties(config, job),
+ "upstream-artifacts": generate_beetmover_upstream_artifacts(
+ config, job, platform, locales
+ ),
+ "artifact-map": generate_beetmover_artifact_map(
+ config, job, platform=platform, locale=locales
+ ),
+ }
+
+ job["worker"] = worker
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover_push_to_release.py b/taskcluster/gecko_taskgraph/transforms/beetmover_push_to_release.py
new file mode 100644
index 0000000000..b6307d93cf
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/beetmover_push_to_release.py
@@ -0,0 +1,93 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the beetmover-push-to-release task into a task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import Schema, taskref_or_string
+from voluptuous import Optional, Required
+
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.scriptworker import (
+ add_scope_prefix,
+ get_beetmover_bucket_scope,
+)
+
+beetmover_push_to_release_description_schema = Schema(
+ {
+ Required("name"): str,
+ Required("product"): str,
+ Required("treeherder-platform"): str,
+ Optional("attributes"): {str: object},
+ Optional("job-from"): task_description_schema["job-from"],
+ Optional("run"): {str: object},
+ Optional("run-on-projects"): task_description_schema["run-on-projects"],
+ Optional("dependencies"): {str: taskref_or_string},
+ Optional("index"): {str: str},
+ Optional("routes"): [str],
+ Required("shipping-phase"): task_description_schema["shipping-phase"],
+ Required("shipping-product"): task_description_schema["shipping-product"],
+ Optional("extra"): task_description_schema["extra"],
+ Optional("worker"): {
+ Optional("max-run-time"): int,
+ },
+ }
+)
+
+
+transforms = TransformSequence()
+transforms.add_validate(beetmover_push_to_release_description_schema)
+
+
+@transforms.add
+def make_beetmover_push_to_release_description(config, jobs):
+ for job in jobs:
+ treeherder = job.get("treeherder", {})
+ treeherder.setdefault("symbol", "Rel(BM-C)")
+ treeherder.setdefault("tier", 1)
+ treeherder.setdefault("kind", "build")
+ treeherder.setdefault("platform", job["treeherder-platform"])
+
+ label = job["name"]
+ description = "Beetmover push to release for '{product}'".format(
+ product=job["product"]
+ )
+
+ bucket_scope = get_beetmover_bucket_scope(config)
+ action_scope = add_scope_prefix(config, "beetmover:action:push-to-releases")
+
+ task = {
+ "label": label,
+ "description": description,
+ "worker-type": "beetmover",
+ "scopes": [bucket_scope, action_scope],
+ "product": job["product"],
+ "dependencies": job["dependencies"],
+ "attributes": job.get("attributes", {}),
+ "run-on-projects": job.get("run-on-projects"),
+ "treeherder": treeherder,
+ "shipping-phase": job.get("shipping-phase", "push"),
+ "shipping-product": job.get("shipping-product"),
+ "routes": job.get("routes", []),
+ "extra": job.get("extra", {}),
+ "worker": job.get("worker", {}),
+ }
+
+ yield task
+
+
+@transforms.add
+def make_beetmover_push_to_release_worker(config, jobs):
+ for job in jobs:
+ worker = {
+ "implementation": "beetmover-push-to-release",
+ "product": job["product"],
+ }
+ if job.get("worker", {}).get("max-run-time"):
+ worker["max-run-time"] = job["worker"]["max-run-time"]
+ job["worker"] = worker
+ del job["product"]
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover_repackage.py b/taskcluster/gecko_taskgraph/transforms/beetmover_repackage.py
new file mode 100644
index 0000000000..a1ce911b9f
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/beetmover_repackage.py
@@ -0,0 +1,327 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the beetmover task into an actual task description.
+"""
+
+import logging
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.taskcluster import get_artifact_prefix
+from taskgraph.util.treeherder import inherit_treeherder_from_dep, replace_group
+from voluptuous import Optional, Required
+
+from gecko_taskgraph.loader.multi_dep import schema
+from gecko_taskgraph.transforms.beetmover import craft_release_properties
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
+from gecko_taskgraph.util.partials import (
+ get_balrog_platform_name,
+ get_partials_artifacts_from_params,
+ get_partials_info_from_params,
+)
+from gecko_taskgraph.util.scriptworker import (
+ generate_beetmover_artifact_map,
+ generate_beetmover_partials_artifact_map,
+ generate_beetmover_upstream_artifacts,
+ get_beetmover_action_scope,
+ get_beetmover_bucket_scope,
+)
+
+logger = logging.getLogger(__name__)
+
+
+beetmover_description_schema = schema.extend(
+ {
+ # unique label to describe this beetmover task, defaults to {dep.label}-beetmover
+ Required("label"): str,
+ # treeherder is allowed here to override any defaults we use for beetmover. See
+ # taskcluster/gecko_taskgraph/transforms/task.py for the schema details, and the
+ # below transforms for defaults of various values.
+ Optional("treeherder"): task_description_schema["treeherder"],
+ Optional("attributes"): task_description_schema["attributes"],
+ # locale is passed only for l10n beetmoving
+ Optional("locale"): str,
+ Required("shipping-phase"): task_description_schema["shipping-phase"],
+ # Optional until we fix asan (run_on_projects?)
+ Optional("shipping-product"): task_description_schema["shipping-product"],
+ }
+)
+
+transforms = TransformSequence()
+transforms.add_validate(beetmover_description_schema)
+
+
+def get_task_by_suffix(tasks, suffix):
+ """
+ Given tasks<dict>, returns the key to the task with provided suffix<str>
+ Raises exception if more than one task is found
+
+ Args:
+ tasks (Dict): Map of labels to tasks
+ suffix (str): Suffix for the desired task
+
+ Returns
+ str: The key to the desired task
+ """
+ labels = []
+ for label in tasks.keys():
+ if label.endswith(suffix):
+ labels.append(label)
+ if len(labels) > 1:
+ raise Exception(
+ f"There should only be a single task with suffix: {suffix} - found {len(labels)}"
+ )
+ return labels[0]
+
+
+@transforms.add
+def make_task_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ attributes = dep_job.attributes
+
+ treeherder = inherit_treeherder_from_dep(job, dep_job)
+ upstream_symbol = dep_job.task["extra"]["treeherder"]["symbol"]
+ if "build" in job["dependent-tasks"]:
+ upstream_symbol = job["dependent-tasks"]["build"].task["extra"][
+ "treeherder"
+ ]["symbol"]
+ treeherder.setdefault("symbol", replace_group(upstream_symbol, "BMR"))
+ label = job["label"]
+ description = (
+ "Beetmover submission for locale '{locale}' for build '"
+ "{build_platform}/{build_type}'".format(
+ locale=attributes.get("locale", "en-US"),
+ build_platform=attributes.get("build_platform"),
+ build_type=attributes.get("build_type"),
+ )
+ )
+
+ upstream_deps = job["dependent-tasks"]
+
+ signing_name = "build-signing"
+ build_name = "build"
+ repackage_name = "repackage"
+ repackage_signing_name = "repackage-signing"
+ msi_signing_name = "repackage-signing-msi"
+ msix_signing_name = "repackage-signing-shippable-l10n-msix"
+ mar_signing_name = "mar-signing"
+ attribution_name = "attribution"
+ repackage_deb_name = "repackage-deb"
+ if job.get("locale"):
+ signing_name = "shippable-l10n-signing"
+ build_name = "shippable-l10n"
+ repackage_name = "repackage-l10n"
+ repackage_signing_name = "repackage-signing-l10n"
+ mar_signing_name = "mar-signing-l10n"
+ attribution_name = "attribution-l10n"
+ repackage_deb_name = "repackage-deb-l10n"
+
+ # The upstream "signing" task for macosx is either *-mac-signing or *-mac-notarization
+ if attributes.get("build_platform", "").startswith("macosx"):
+ # We use the signing task on level 1 and notarization on level 3
+ if int(config.params.get("level", 0)) < 3:
+ signing_name = get_task_by_suffix(upstream_deps, "-mac-signing")
+ else:
+ signing_name = get_task_by_suffix(upstream_deps, "-mac-notarization")
+ if not signing_name:
+ raise Exception("Could not find upstream kind for mac signing.")
+
+ dependencies = {
+ "build": upstream_deps[build_name],
+ "repackage": upstream_deps[repackage_name],
+ "signing": upstream_deps[signing_name],
+ "mar-signing": upstream_deps[mar_signing_name],
+ }
+ if "partials-signing" in upstream_deps:
+ dependencies["partials-signing"] = upstream_deps["partials-signing"]
+ if msi_signing_name in upstream_deps:
+ dependencies[msi_signing_name] = upstream_deps[msi_signing_name]
+ if msix_signing_name in upstream_deps:
+ dependencies[msix_signing_name] = upstream_deps[msix_signing_name]
+ if repackage_signing_name in upstream_deps:
+ dependencies["repackage-signing"] = upstream_deps[repackage_signing_name]
+ if attribution_name in upstream_deps:
+ dependencies[attribution_name] = upstream_deps[attribution_name]
+ if repackage_deb_name in upstream_deps:
+ dependencies[repackage_deb_name] = upstream_deps[repackage_deb_name]
+
+ attributes = copy_attributes_from_dependent_job(dep_job)
+ attributes.update(job.get("attributes", {}))
+ if job.get("locale"):
+ attributes["locale"] = job["locale"]
+
+ bucket_scope = get_beetmover_bucket_scope(config)
+ action_scope = get_beetmover_action_scope(config)
+
+ task = {
+ "label": label,
+ "description": description,
+ "worker-type": "beetmover",
+ "scopes": [bucket_scope, action_scope],
+ "dependencies": dependencies,
+ "attributes": attributes,
+ "run-on-projects": dep_job.attributes.get("run_on_projects"),
+ "treeherder": treeherder,
+ "shipping-phase": job["shipping-phase"],
+ "shipping-product": job.get("shipping-product"),
+ }
+
+ yield task
+
+
+def generate_partials_upstream_artifacts(job, artifacts, platform, locale=None):
+ artifact_prefix = get_artifact_prefix(job)
+ if locale and locale != "en-US":
+ artifact_prefix = f"{artifact_prefix}/{locale}"
+
+ upstream_artifacts = [
+ {
+ "taskId": {"task-reference": "<partials-signing>"},
+ "taskType": "signing",
+ "paths": [f"{artifact_prefix}/{path}" for path, _ in artifacts],
+ "locale": locale or "en-US",
+ }
+ ]
+
+ return upstream_artifacts
+
+
+@transforms.add
+def make_task_worker(config, jobs):
+ for job in jobs:
+ locale = job["attributes"].get("locale")
+ platform = job["attributes"]["build_platform"]
+
+ worker = {
+ "implementation": "beetmover",
+ "release-properties": craft_release_properties(config, job),
+ "upstream-artifacts": generate_beetmover_upstream_artifacts(
+ config, job, platform, locale
+ ),
+ "artifact-map": generate_beetmover_artifact_map(
+ config, job, platform=platform, locale=locale
+ ),
+ }
+
+ if locale:
+ worker["locale"] = locale
+ job["worker"] = worker
+
+ yield job
+
+
+@transforms.add
+def strip_unwanted_langpacks_from_worker(config, jobs):
+ """Strips out langpacks where we didn't sign them.
+
+ This explicitly deletes langpacks from upstream artifacts and from artifact-maps.
+ Due to limitations in declarative artifacts, doing this was our easiest way right now.
+ """
+ ALWAYS_OK_PLATFORMS = {"linux64-shippable", "linux64-devedition"}
+ OSX_OK_PLATFORMS = {"macosx64-shippable", "macosx64-devedition"}
+ for job in jobs:
+ platform = job["attributes"].get("build_platform")
+ if platform in ALWAYS_OK_PLATFORMS:
+ # No need to strip anything
+ yield job
+ continue
+
+ for map in job["worker"].get("artifact-map", [])[:]:
+ if not any([path.endswith("target.langpack.xpi") for path in map["paths"]]):
+ continue
+ if map["locale"] == "ja-JP-mac":
+ # This locale should only exist on mac
+ assert platform in OSX_OK_PLATFORMS
+ continue
+ # map[paths] is being modified while iterating, so we need to resolve the
+ # ".keys()" iterator up front by throwing it into a list.
+ for path in list(map["paths"].keys()):
+ if path.endswith("target.langpack.xpi"):
+ del map["paths"][path]
+ if map["paths"] == {}:
+ job["worker"]["artifact-map"].remove(map)
+
+ for artifact in job["worker"].get("upstream-artifacts", []):
+ if not any(
+ [path.endswith("target.langpack.xpi") for path in artifact["paths"]]
+ ):
+ continue
+ if artifact["locale"] == "ja-JP-mac":
+ # This locale should only exist on mac
+ assert platform in OSX_OK_PLATFORMS
+ continue
+ artifact["paths"] = [
+ path
+ for path in artifact["paths"]
+ if not path.endswith("target.langpack.xpi")
+ ]
+ if artifact["paths"] == []:
+ job["worker"]["upstream-artifacts"].remove(artifact)
+
+ yield job
+
+
+@transforms.add
+def make_partials_artifacts(config, jobs):
+ for job in jobs:
+ locale = job["attributes"].get("locale")
+ if not locale:
+ locale = "en-US"
+
+ platform = job["attributes"]["build_platform"]
+
+ if "partials-signing" not in job["dependencies"]:
+ yield job
+ continue
+
+ balrog_platform = get_balrog_platform_name(platform)
+ artifacts = get_partials_artifacts_from_params(
+ config.params.get("release_history"), balrog_platform, locale
+ )
+
+ upstream_artifacts = generate_partials_upstream_artifacts(
+ job, artifacts, balrog_platform, locale
+ )
+
+ job["worker"]["upstream-artifacts"].extend(upstream_artifacts)
+
+ extra = list()
+
+ partials_info = get_partials_info_from_params(
+ config.params.get("release_history"), balrog_platform, locale
+ )
+
+ job["worker"]["artifact-map"].extend(
+ generate_beetmover_partials_artifact_map(
+ config, job, partials_info, platform=platform, locale=locale
+ )
+ )
+
+ for artifact in partials_info:
+ artifact_extra = {
+ "locale": locale,
+ "artifact_name": artifact,
+ "buildid": partials_info[artifact]["buildid"],
+ "platform": balrog_platform,
+ }
+ for rel_attr in ("previousBuildNumber", "previousVersion"):
+ if partials_info[artifact].get(rel_attr):
+ artifact_extra[rel_attr] = partials_info[artifact][rel_attr]
+ extra.append(artifact_extra)
+
+ job.setdefault("extra", {})
+ job["extra"]["partials"] = extra
+
+ yield job
+
+
+@transforms.add
+def convert_deps(config, jobs):
+ for job in jobs:
+ job["dependencies"] = {
+ name: dep_job.label for name, dep_job in job["dependencies"].items()
+ }
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover_repackage_l10n.py b/taskcluster/gecko_taskgraph/transforms/beetmover_repackage_l10n.py
new file mode 100644
index 0000000000..da2a41ccb3
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/beetmover_repackage_l10n.py
@@ -0,0 +1,44 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the signing task into an actual task description.
+"""
+
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.treeherder import join_symbol
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def make_beetmover_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+
+ locale = dep_job.attributes.get("locale")
+ if not locale:
+ yield job
+ continue
+
+ group = "BMR"
+
+ # add the locale code
+ symbol = locale
+
+ treeherder = {
+ "symbol": join_symbol(group, symbol),
+ }
+
+ beet_description = {
+ "label": job["label"],
+ "primary-dependency": dep_job,
+ "dependent-tasks": job["dependent-tasks"],
+ "attributes": job["attributes"],
+ "treeherder": treeherder,
+ "locale": locale,
+ "shipping-phase": job["shipping-phase"],
+ "shipping-product": job["shipping-product"],
+ }
+ yield beet_description
diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover_repackage_partner.py b/taskcluster/gecko_taskgraph/transforms/beetmover_repackage_partner.py
new file mode 100644
index 0000000000..40dc370f33
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/beetmover_repackage_partner.py
@@ -0,0 +1,326 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the beetmover task into an actual task description.
+"""
+
+import logging
+from copy import deepcopy
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import optionally_keyed_by, resolve_keyed_by
+from taskgraph.util.taskcluster import get_artifact_prefix
+from voluptuous import Any, Optional, Required
+
+from gecko_taskgraph.loader.single_dep import schema
+from gecko_taskgraph.transforms.beetmover import craft_release_properties
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.attributes import (
+ copy_attributes_from_dependent_job,
+ release_level,
+)
+from gecko_taskgraph.util.partners import get_ftp_platform, get_partner_config_by_kind
+from gecko_taskgraph.util.scriptworker import (
+ add_scope_prefix,
+ get_beetmover_bucket_scope,
+)
+
+logger = logging.getLogger(__name__)
+
+
+beetmover_description_schema = schema.extend(
+ {
+ # unique label to describe this beetmover task, defaults to {dep.label}-beetmover
+ Optional("label"): str,
+ Required("partner-bucket-scope"): optionally_keyed_by("release-level", str),
+ Required("partner-public-path"): Any(None, str),
+ Required("partner-private-path"): Any(None, str),
+ Optional("extra"): object,
+ Required("shipping-phase"): task_description_schema["shipping-phase"],
+ Optional("shipping-product"): task_description_schema["shipping-product"],
+ Optional("priority"): task_description_schema["priority"],
+ }
+)
+
+transforms = TransformSequence()
+transforms.add_validate(beetmover_description_schema)
+
+
+@transforms.add
+def resolve_keys(config, jobs):
+ for job in jobs:
+ resolve_keyed_by(
+ job,
+ "partner-bucket-scope",
+ item_name=job["label"],
+ **{"release-level": release_level(config.params["project"])},
+ )
+ yield job
+
+
+@transforms.add
+def make_task_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ repack_id = dep_job.task.get("extra", {}).get("repack_id")
+ if not repack_id:
+ raise Exception("Cannot find repack id!")
+
+ attributes = dep_job.attributes
+ build_platform = attributes.get("build_platform")
+ if not build_platform:
+ raise Exception("Cannot find build platform!")
+
+ label = dep_job.label.replace("repackage-signing-l10n", "beetmover-")
+ label = dep_job.label.replace("repackage-signing-", "beetmover-")
+ label = label.replace("repackage-", "beetmover-")
+ label = label.replace("chunking-dummy-", "beetmover-")
+ description = (
+ "Beetmover submission for repack_id '{repack_id}' for build '"
+ "{build_platform}/{build_type}'".format(
+ repack_id=repack_id,
+ build_platform=build_platform,
+ build_type=attributes.get("build_type"),
+ )
+ )
+
+ dependencies = {}
+
+ base_label = "release-partner-repack"
+ if "eme" in config.kind:
+ base_label = "release-eme-free-repack"
+ dependencies["build"] = f"{base_label}-{build_platform}"
+ if "macosx" in build_platform or "win" in build_platform:
+ dependencies["repackage"] = "{}-repackage-{}-{}".format(
+ base_label, build_platform, repack_id.replace("/", "-")
+ )
+ dependencies["repackage-signing"] = "{}-repackage-signing-{}-{}".format(
+ base_label, build_platform, repack_id.replace("/", "-")
+ )
+
+ attributes = copy_attributes_from_dependent_job(dep_job)
+
+ task = {
+ "label": label,
+ "description": description,
+ "dependencies": dependencies,
+ "attributes": attributes,
+ "run-on-projects": dep_job.attributes.get("run_on_projects"),
+ "shipping-phase": job["shipping-phase"],
+ "shipping-product": job.get("shipping-product"),
+ "partner-private-path": job["partner-private-path"],
+ "partner-public-path": job["partner-public-path"],
+ "partner-bucket-scope": job["partner-bucket-scope"],
+ "extra": {
+ "repack_id": repack_id,
+ },
+ }
+ # we may have reduced the priority for partner jobs, otherwise task.py will set it
+ if job.get("priority"):
+ task["priority"] = job["priority"]
+
+ yield task
+
+
+def populate_scopes_and_worker_type(config, job, bucket_scope, partner_public=False):
+ action_scope = add_scope_prefix(config, "beetmover:action:push-to-partner")
+
+ task = deepcopy(job)
+ task["scopes"] = [bucket_scope, action_scope]
+ task["worker-type"] = "beetmover"
+ task["partner_public"] = partner_public
+ if partner_public:
+ task["label"] = "{}-public".format(task["label"])
+ return task
+
+
+@transforms.add
+def split_public_and_private(config, jobs):
+ public_bucket_scope = get_beetmover_bucket_scope(config)
+ partner_config = get_partner_config_by_kind(config, config.kind)
+
+ for job in jobs:
+ partner_bucket_scope = add_scope_prefix(config, job["partner-bucket-scope"])
+ partner, subpartner, _ = job["extra"]["repack_id"].split("/")
+
+ if partner_config[partner][subpartner].get("upload_to_candidates"):
+ # public
+ yield populate_scopes_and_worker_type(
+ config, job, public_bucket_scope, partner_public=True
+ )
+ else:
+ # private
+ yield populate_scopes_and_worker_type(
+ config, job, partner_bucket_scope, partner_public=False
+ )
+
+
+def generate_upstream_artifacts(
+ job,
+ build_task_ref,
+ repackage_task_ref,
+ repackage_signing_task_ref,
+ platform,
+ repack_id,
+ partner_path,
+ repack_stub_installer=False,
+):
+
+ upstream_artifacts = []
+ artifact_prefix = get_artifact_prefix(job)
+
+ if "linux" in platform:
+ upstream_artifacts.append(
+ {
+ "taskId": {"task-reference": build_task_ref},
+ "taskType": "build",
+ "paths": [f"{artifact_prefix}/{repack_id}/target.tar.bz2"],
+ "locale": partner_path,
+ }
+ )
+ upstream_artifacts.append(
+ {
+ "taskId": {"task-reference": repackage_signing_task_ref},
+ "taskType": "repackage",
+ "paths": [f"{artifact_prefix}/{repack_id}/target.tar.bz2.asc"],
+ "locale": partner_path,
+ }
+ )
+ elif "macosx" in platform:
+ upstream_artifacts.append(
+ {
+ "taskId": {"task-reference": repackage_task_ref},
+ "taskType": "repackage",
+ "paths": [f"{artifact_prefix}/{repack_id}/target.dmg"],
+ "locale": partner_path,
+ }
+ )
+ upstream_artifacts.append(
+ {
+ "taskId": {"task-reference": repackage_signing_task_ref},
+ "taskType": "repackage",
+ "paths": [f"{artifact_prefix}/{repack_id}/target.dmg.asc"],
+ "locale": partner_path,
+ }
+ )
+ elif "win" in platform:
+ upstream_artifacts.append(
+ {
+ "taskId": {"task-reference": repackage_signing_task_ref},
+ "taskType": "repackage",
+ "paths": [f"{artifact_prefix}/{repack_id}/target.installer.exe"],
+ "locale": partner_path,
+ }
+ )
+ upstream_artifacts.append(
+ {
+ "taskId": {"task-reference": repackage_signing_task_ref},
+ "taskType": "repackage",
+ "paths": [f"{artifact_prefix}/{repack_id}/target.installer.exe.asc"],
+ "locale": partner_path,
+ }
+ )
+ if platform.startswith("win32") and repack_stub_installer:
+ upstream_artifacts.append(
+ {
+ "taskId": {"task-reference": repackage_signing_task_ref},
+ "taskType": "repackage",
+ "paths": [
+ "{}/{}/target.stub-installer.exe".format(
+ artifact_prefix, repack_id
+ )
+ ],
+ "locale": partner_path,
+ }
+ )
+ upstream_artifacts.append(
+ {
+ "taskId": {"task-reference": repackage_signing_task_ref},
+ "taskType": "repackage",
+ "paths": [
+ "{}/{}/target.stub-installer.exe.asc".format(
+ artifact_prefix, repack_id
+ )
+ ],
+ "locale": partner_path,
+ }
+ )
+
+ if not upstream_artifacts:
+ raise Exception("Couldn't find any upstream artifacts.")
+
+ return upstream_artifacts
+
+
+@transforms.add
+def make_task_worker(config, jobs):
+ for job in jobs:
+ platform = job["attributes"]["build_platform"]
+ repack_id = job["extra"]["repack_id"]
+ partner, subpartner, locale = job["extra"]["repack_id"].split("/")
+ partner_config = get_partner_config_by_kind(config, config.kind)
+ repack_stub_installer = partner_config[partner][subpartner].get(
+ "repack_stub_installer"
+ )
+ build_task = None
+ repackage_task = None
+ repackage_signing_task = None
+
+ for dependency in job["dependencies"].keys():
+ if "repackage-signing" in dependency:
+ repackage_signing_task = dependency
+ elif "repackage" in dependency:
+ repackage_task = dependency
+ else:
+ build_task = "build"
+
+ build_task_ref = "<" + str(build_task) + ">"
+ repackage_task_ref = "<" + str(repackage_task) + ">"
+ repackage_signing_task_ref = "<" + str(repackage_signing_task) + ">"
+
+ # generate the partner path; we'll send this to beetmover as the "locale"
+ ftp_platform = get_ftp_platform(platform)
+ repl_dict = {
+ "build_number": config.params["build_number"],
+ "locale": locale,
+ "partner": partner,
+ "platform": ftp_platform,
+ "release_partner_build_number": config.params[
+ "release_partner_build_number"
+ ],
+ "subpartner": subpartner,
+ "version": config.params["version"],
+ }
+ partner_public = job["partner_public"]
+ if partner_public:
+ partner_path_key = "partner-public-path"
+ else:
+ partner_path_key = "partner-private-path"
+ # Kinds can set these to None
+ if not job[partner_path_key]:
+ continue
+ partner_path = job[partner_path_key].format(**repl_dict)
+ del job["partner_public"]
+ del job["partner-private-path"]
+ del job["partner-public-path"]
+ del job["partner-bucket-scope"]
+
+ worker = {
+ "implementation": "beetmover",
+ "release-properties": craft_release_properties(config, job),
+ "upstream-artifacts": generate_upstream_artifacts(
+ job,
+ build_task_ref,
+ repackage_task_ref,
+ repackage_signing_task_ref,
+ platform,
+ repack_id,
+ partner_path,
+ repack_stub_installer,
+ ),
+ "partner-public": partner_public,
+ }
+ job["worker"] = worker
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover_snap.py b/taskcluster/gecko_taskgraph/transforms/beetmover_snap.py
new file mode 100644
index 0000000000..40f5132cc1
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/beetmover_snap.py
@@ -0,0 +1,42 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the snap beetmover kind into an actual task description.
+"""
+
+
+from taskgraph.transforms.base import TransformSequence
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def leave_snap_repackage_dependencies_only(config, jobs):
+ for job in jobs:
+ # XXX: We delete the build dependency because, unlike the other beetmover
+ # tasks, source doesn't depend on any build task at all. This hack should
+ # go away when we rewrite beetmover transforms to allow more flexibility in deps
+
+ job["dependencies"] = {
+ key: value
+ for key, value in job["dependencies"].items()
+ if key == "release-snap-repackage"
+ }
+
+ job["worker"]["upstream-artifacts"] = [
+ upstream_artifact
+ for upstream_artifact in job["worker"]["upstream-artifacts"]
+ if upstream_artifact["taskId"]["task-reference"]
+ == "<release-snap-repackage>"
+ ]
+
+ yield job
+
+
+@transforms.add
+def set_custom_treeherder_job_name(config, jobs):
+ for job in jobs:
+ job.get("treeherder", {})["symbol"] = "Snap(BM)"
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover_source.py b/taskcluster/gecko_taskgraph/transforms/beetmover_source.py
new file mode 100644
index 0000000000..573f684a98
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/beetmover_source.py
@@ -0,0 +1,35 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the beetmover-source task to also append `build` as dependency
+"""
+
+from taskgraph.transforms.base import TransformSequence
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def remove_build_dependency_in_beetmover_source(config, jobs):
+ for job in jobs:
+ # XXX: We delete the build dependency because, unlike the other beetmover
+ # tasks, source doesn't depend on any build task at all. This hack should
+ # go away when we rewrite beetmover transforms to allow more flexibility in deps
+ # Essentially, we should use multi_dep for beetmover.
+ for depname in job["dependencies"]:
+ if "signing" not in depname:
+ del job["dependencies"][depname]
+ break
+ else:
+ raise Exception("Can't find build dep in beetmover source!")
+
+ all_upstream_artifacts = job["worker"]["upstream-artifacts"]
+ upstream_artifacts_without_build = [
+ upstream_artifact
+ for upstream_artifact in all_upstream_artifacts
+ if upstream_artifact["taskId"]["task-reference"] != f"<{depname}>"
+ ]
+ job["worker"]["upstream-artifacts"] = upstream_artifacts_without_build
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/beetmover_source_checksums.py b/taskcluster/gecko_taskgraph/transforms/beetmover_source_checksums.py
new file mode 100644
index 0000000000..bcaa889903
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/beetmover_source_checksums.py
@@ -0,0 +1,137 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform release-beetmover-source-checksums into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from voluptuous import Optional
+
+from gecko_taskgraph.loader.single_dep import schema
+from gecko_taskgraph.transforms.beetmover import craft_release_properties
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
+from gecko_taskgraph.util.scriptworker import (
+ generate_beetmover_artifact_map,
+ generate_beetmover_upstream_artifacts,
+ get_beetmover_action_scope,
+ get_beetmover_bucket_scope,
+)
+
+beetmover_checksums_description_schema = schema.extend(
+ {
+ Optional("label"): str,
+ Optional("treeherder"): task_description_schema["treeherder"],
+ Optional("locale"): str,
+ Optional("shipping-phase"): task_description_schema["shipping-phase"],
+ Optional("shipping-product"): task_description_schema["shipping-product"],
+ Optional("attributes"): task_description_schema["attributes"],
+ }
+)
+
+transforms = TransformSequence()
+transforms.add_validate(beetmover_checksums_description_schema)
+
+
+@transforms.add
+def make_beetmover_checksums_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ attributes = dep_job.attributes
+
+ treeherder = job.get("treeherder", {})
+ treeherder.setdefault("symbol", "BMcss(N)")
+ dep_th_platform = (
+ dep_job.task.get("extra", {})
+ .get("treeherder", {})
+ .get("machine", {})
+ .get("platform", "")
+ )
+ treeherder.setdefault("platform", f"{dep_th_platform}/opt")
+ treeherder.setdefault("tier", 1)
+ treeherder.setdefault("kind", "build")
+
+ label = job["label"]
+ build_platform = attributes.get("build_platform")
+
+ description = "Beetmover submission of checksums for source file"
+
+ extra = {}
+ if "devedition" in build_platform:
+ extra["product"] = "devedition"
+ else:
+ extra["product"] = "firefox"
+
+ dependencies = {dep_job.kind: dep_job.label}
+ for k, v in dep_job.dependencies.items():
+ if k.startswith("beetmover"):
+ dependencies[k] = v
+
+ attributes = copy_attributes_from_dependent_job(dep_job)
+ attributes.update(job.get("attributes", {}))
+
+ bucket_scope = get_beetmover_bucket_scope(config)
+ action_scope = get_beetmover_action_scope(config)
+
+ task = {
+ "label": label,
+ "description": description,
+ "worker-type": "beetmover",
+ "scopes": [bucket_scope, action_scope],
+ "dependencies": dependencies,
+ "attributes": attributes,
+ "run-on-projects": dep_job.attributes.get("run_on_projects"),
+ "treeherder": treeherder,
+ "extra": extra,
+ }
+
+ if "shipping-phase" in job:
+ task["shipping-phase"] = job["shipping-phase"]
+
+ if "shipping-product" in job:
+ task["shipping-product"] = job["shipping-product"]
+
+ yield task
+
+
+@transforms.add
+def make_beetmover_checksums_worker(config, jobs):
+ for job in jobs:
+ valid_beetmover_job = len(job["dependencies"]) == 2
+ if not valid_beetmover_job:
+ raise NotImplementedError("Beetmover checksums must have two dependencies.")
+
+ locale = job["attributes"].get("locale")
+ platform = job["attributes"]["build_platform"]
+
+ refs = {
+ "beetmover": None,
+ "signing": None,
+ }
+ for dependency in job["dependencies"].keys():
+ if dependency.startswith("beetmover"):
+ refs["beetmover"] = f"<{dependency}>"
+ else:
+ refs["signing"] = f"<{dependency}>"
+ if None in refs.values():
+ raise NotImplementedError(
+ "Beetmover checksums must have a beetmover and signing dependency!"
+ )
+
+ worker = {
+ "implementation": "beetmover",
+ "release-properties": craft_release_properties(config, job),
+ "upstream-artifacts": generate_beetmover_upstream_artifacts(
+ config, job, platform, locale
+ ),
+ "artifact-map": generate_beetmover_artifact_map(
+ config, job, platform=platform
+ ),
+ }
+
+ if locale:
+ worker["locale"] = locale
+ job["worker"] = worker
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/bootstrap.py b/taskcluster/gecko_taskgraph/transforms/bootstrap.py
new file mode 100644
index 0000000000..e4537cab01
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/bootstrap.py
@@ -0,0 +1,132 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import Schema
+from voluptuous import Any, Optional, Required
+
+transforms = TransformSequence()
+
+bootstrap_schema = Schema(
+ {
+ # Name of the bootstrap task.
+ Required("name"): str,
+ # Name of the docker image. Ideally, we'd also have tasks for mac and windows,
+ # but we unfortunately don't have workers barebones enough for such testing
+ # to be satisfactory.
+ Required("image"): Any(str, {"in-tree": str}),
+ # Initialization commands.
+ Required("pre-commands"): [str],
+ # relative path (from config.path) to the file task was defined in
+ Optional("job-from"): str,
+ }
+)
+
+
+transforms.add_validate(bootstrap_schema)
+
+
+@transforms.add
+def bootstrap_tasks(config, tasks):
+ for task in tasks:
+ name = task.pop("name")
+ image = task.pop("image")
+ pre_commands = task.pop("pre-commands")
+
+ head_repo = config.params["head_repository"]
+ head_rev = config.params["head_rev"]
+
+ # Get all the non macos/windows local toolchains (the only ones bootstrap can use),
+ # and use them as dependencies for the tasks we create, so that they don't start
+ # before any potential toolchain task that would be triggered on the same push
+ # (which would lead to bootstrap failing).
+ dependencies = {
+ name: name
+ for name, task in config.kind_dependencies_tasks.items()
+ if task.attributes.get("local-toolchain")
+ and not name.startswith(("toolchain-macos", "toolchain-win"))
+ }
+ # We don't test the artifacts variants, or js, because they are essentially subsets.
+ # Mobile and browser are different enough to warrant testing them separately.
+ for app in ("browser", "mobile_android"):
+ commands = pre_commands + [
+ # MOZ_AUTOMATION changes the behavior, and we want something closer to user
+ # machines.
+ "unset MOZ_AUTOMATION",
+ f"curl -O {head_repo}/raw-file/{head_rev}/python/mozboot/bin/bootstrap.py",
+ f"python3 bootstrap.py --no-interactive --application-choice {app}",
+ "cd mozilla-unified",
+ # After bootstrap, configure should go through without its own auto-bootstrap.
+ "./mach configure --disable-bootstrap",
+ # Then a build should go through too.
+ "./mach build",
+ ]
+
+ os_specific = []
+ if app == "mobile_android":
+ os_specific += ["android*"]
+ for os, filename in (
+ ("debian", "debian.py"),
+ ("ubuntu", "debian.py"),
+ ("fedora", "centosfedora.py"),
+ ("rockylinux", "centosfedora.py"),
+ ("opensuse", "opensuse.py"),
+ ("gentoo", "gentoo.py"),
+ ("archlinux", "archlinux.py"),
+ ("voidlinux", "void.py"),
+ ):
+ if name.startswith(os):
+ os_specific.append(filename)
+ break
+ else:
+ raise Exception(f"Missing OS specific bootstrap file for {name}")
+
+ taskdesc = {
+ "label": f"{config.kind}-{name}-{app}",
+ "description": f"Bootstrap {app} build on {name}",
+ "always-target": True,
+ "scopes": [],
+ "treeherder": {
+ "symbol": f"Boot({name})",
+ "platform": {
+ "browser": "linux64/opt",
+ "mobile_android": "android-5-0-armv7/opt",
+ }[app],
+ "kind": "other",
+ "tier": 2,
+ },
+ "run-on-projects": ["trunk"],
+ "worker-type": "b-linux-gcp",
+ "worker": {
+ "implementation": "docker-worker",
+ "docker-image": image,
+ "os": "linux",
+ "env": {
+ "GECKO_HEAD_REPOSITORY": head_repo,
+ "GECKO_HEAD_REV": head_rev,
+ "MACH_NO_TERMINAL_FOOTER": "1",
+ "MOZ_SCM_LEVEL": config.params["level"],
+ },
+ "command": ["sh", "-c", "-x", "-e", " && ".join(commands)],
+ "max-run-time": 7200,
+ },
+ "dependencies": dependencies,
+ "optimization": {
+ "skip-unless-changed": [
+ "python/mozboot/bin/bootstrap.py",
+ "python/mozboot/mozboot/base.py",
+ "python/mozboot/mozboot/bootstrap.py",
+ "python/mozboot/mozboot/linux_common.py",
+ "python/mozboot/mozboot/mach_commands.py",
+ "python/mozboot/mozboot/mozconfig.py",
+ "python/mozboot/mozboot/rust.py",
+ "python/mozboot/mozboot/sccache.py",
+ "python/mozboot/mozboot/util.py",
+ ]
+ + [f"python/mozboot/mozboot/{f}" for f in os_specific]
+ },
+ }
+
+ yield taskdesc
diff --git a/taskcluster/gecko_taskgraph/transforms/bouncer_aliases.py b/taskcluster/gecko_taskgraph/transforms/bouncer_aliases.py
new file mode 100644
index 0000000000..38f1aa136a
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/bouncer_aliases.py
@@ -0,0 +1,108 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Add from parameters.yml into bouncer submission tasks.
+"""
+
+
+import logging
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import resolve_keyed_by
+
+from gecko_taskgraph.transforms.bouncer_submission import craft_bouncer_product_name
+from gecko_taskgraph.transforms.bouncer_submission_partners import (
+ craft_partner_bouncer_product_name,
+)
+from gecko_taskgraph.util.attributes import release_level
+from gecko_taskgraph.util.partners import get_partners_to_be_published
+from gecko_taskgraph.util.scriptworker import get_release_config
+
+logger = logging.getLogger(__name__)
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def make_task_worker(config, jobs):
+ for job in jobs:
+ resolve_keyed_by(
+ job,
+ "worker-type",
+ item_name=job["name"],
+ **{"release-level": release_level(config.params["project"])},
+ )
+ resolve_keyed_by(
+ job,
+ "scopes",
+ item_name=job["name"],
+ **{"release-level": release_level(config.params["project"])},
+ )
+ resolve_keyed_by(
+ job,
+ "bouncer-products-per-alias",
+ item_name=job["name"],
+ **{"release-type": config.params["release_type"]},
+ )
+ if "partner-bouncer-products-per-alias" in job:
+ resolve_keyed_by(
+ job,
+ "partner-bouncer-products-per-alias",
+ item_name=job["name"],
+ **{"release-type": config.params["release_type"]},
+ )
+
+ job["worker"]["entries"] = craft_bouncer_entries(config, job)
+
+ del job["bouncer-products-per-alias"]
+ if "partner-bouncer-products-per-alias" in job:
+ del job["partner-bouncer-products-per-alias"]
+
+ if job["worker"]["entries"]:
+ yield job
+ else:
+ logger.warn(
+ 'No bouncer entries defined in bouncer submission task for "{}". \
+Job deleted.'.format(
+ job["name"]
+ )
+ )
+
+
+def craft_bouncer_entries(config, job):
+ release_config = get_release_config(config)
+
+ product = job["shipping-product"]
+ current_version = release_config["version"]
+ bouncer_products_per_alias = job["bouncer-products-per-alias"]
+
+ entries = {
+ bouncer_alias: craft_bouncer_product_name(
+ product,
+ bouncer_product,
+ current_version,
+ )
+ for bouncer_alias, bouncer_product in bouncer_products_per_alias.items()
+ }
+
+ partner_bouncer_products_per_alias = job.get("partner-bouncer-products-per-alias")
+ if partner_bouncer_products_per_alias:
+ partners = get_partners_to_be_published(config)
+ for partner, sub_config_name, _ in partners:
+ entries.update(
+ {
+ bouncer_alias.replace(
+ "PARTNER", f"{partner}-{sub_config_name}"
+ ): craft_partner_bouncer_product_name(
+ product,
+ bouncer_product,
+ current_version,
+ partner,
+ sub_config_name,
+ )
+ for bouncer_alias, bouncer_product in partner_bouncer_products_per_alias.items() # NOQA: E501
+ }
+ )
+
+ return entries
diff --git a/taskcluster/gecko_taskgraph/transforms/bouncer_check.py b/taskcluster/gecko_taskgraph/transforms/bouncer_check.py
new file mode 100644
index 0000000000..9261ef9463
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/bouncer_check.py
@@ -0,0 +1,111 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import json
+import logging
+from pipes import quote as shell_quote
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import resolve_keyed_by
+
+from gecko_taskgraph.util.attributes import release_level
+from gecko_taskgraph.util.scriptworker import get_release_config
+
+logger = logging.getLogger(__name__)
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def add_command(config, jobs):
+ for job in jobs:
+ command = [
+ "python",
+ "testing/mozharness/scripts/release/bouncer_check.py",
+ ]
+ job["run"].update(
+ {
+ "using": "mach",
+ "mach": command,
+ }
+ )
+ yield job
+
+
+@transforms.add
+def add_previous_versions(config, jobs):
+ release_config = get_release_config(config)
+ if not release_config.get("partial_versions"):
+ for job in jobs:
+ yield job
+ else:
+ extra_params = []
+ for partial in release_config["partial_versions"].split(","):
+ extra_params.append(
+ "--previous-version={}".format(partial.split("build")[0].strip())
+ )
+
+ for job in jobs:
+ job["run"]["mach"].extend(extra_params)
+ yield job
+
+
+@transforms.add
+def handle_keyed_by(config, jobs):
+ """Resolve fields that can be keyed by project, etc."""
+ fields = [
+ "run.config",
+ "run.product-field",
+ "run.extra-config",
+ ]
+
+ release_config = get_release_config(config)
+ version = release_config["version"]
+
+ for job in jobs:
+ for field in fields:
+ resolve_keyed_by(
+ item=job,
+ field=field,
+ item_name=job["name"],
+ **{
+ "project": config.params["project"],
+ "release-level": release_level(config.params["project"]),
+ "release-type": config.params["release_type"],
+ },
+ )
+
+ for cfg in job["run"]["config"]:
+ job["run"]["mach"].extend(["--config", cfg])
+
+ if config.kind == "cron-bouncer-check":
+ job["run"]["mach"].extend(
+ [
+ "--product-field={}".format(job["run"]["product-field"]),
+ "--products-url={}".format(job["run"]["products-url"]),
+ ]
+ )
+ del job["run"]["product-field"]
+ del job["run"]["products-url"]
+ elif config.kind == "release-bouncer-check":
+ job["run"]["mach"].append(f"--version={version}")
+
+ del job["run"]["config"]
+
+ if "extra-config" in job["run"]:
+ env = job["worker"].setdefault("env", {})
+ env["EXTRA_MOZHARNESS_CONFIG"] = json.dumps(
+ job["run"]["extra-config"], sort_keys=True
+ )
+ del job["run"]["extra-config"]
+
+ yield job
+
+
+@transforms.add
+def command_to_string(config, jobs):
+ """Convert command to string to make it work properly with run-task"""
+ for job in jobs:
+ job["run"]["mach"] = " ".join(map(shell_quote, job["run"]["mach"]))
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/bouncer_locations.py b/taskcluster/gecko_taskgraph/transforms/bouncer_locations.py
new file mode 100644
index 0000000000..e755b73c27
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/bouncer_locations.py
@@ -0,0 +1,35 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import logging
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import resolve_keyed_by
+
+logger = logging.getLogger(__name__)
+
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def make_task_worker(config, jobs):
+ for job in jobs:
+ resolve_keyed_by(
+ job, "worker-type", item_name=job["name"], project=config.params["project"]
+ )
+ resolve_keyed_by(
+ job, "scopes", item_name=job["name"], project=config.params["project"]
+ )
+ resolve_keyed_by(
+ job,
+ "bouncer-products",
+ item_name=job["name"],
+ project=config.params["project"],
+ )
+
+ job["worker"]["bouncer-products"] = job["bouncer-products"]
+
+ del job["bouncer-products"]
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/bouncer_submission.py b/taskcluster/gecko_taskgraph/transforms/bouncer_submission.py
new file mode 100644
index 0000000000..d6320a9312
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/bouncer_submission.py
@@ -0,0 +1,335 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Add from parameters.yml into bouncer submission tasks.
+"""
+
+
+import copy
+import logging
+
+import attr
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import resolve_keyed_by
+
+from gecko_taskgraph.transforms.l10n import parse_locales_file
+from gecko_taskgraph.util.attributes import release_level
+from gecko_taskgraph.util.scriptworker import get_release_config
+
+logger = logging.getLogger(__name__)
+
+
+FTP_PLATFORMS_PER_BOUNCER_PLATFORM = {
+ "linux": "linux-i686",
+ "linux64": "linux-x86_64",
+ "osx": "mac",
+ "win": "win32",
+ "win64": "win64",
+ "win64-aarch64": "win64-aarch64",
+}
+
+# :lang is interpolated by bouncer at runtime
+CANDIDATES_PATH_TEMPLATE = "/{ftp_product}/candidates/{version}-candidates/build{build_number}/\
+{update_folder}{ftp_platform}/:lang/{file}"
+RELEASES_PATH_TEMPLATE = "/{ftp_product}/releases/{version}/\
+{update_folder}{ftp_platform}/:lang/{file}"
+
+
+CONFIG_PER_BOUNCER_PRODUCT = {
+ "complete-mar": {
+ "name_postfix": "-Complete",
+ "path_template": RELEASES_PATH_TEMPLATE,
+ "file_names": {
+ "default": "{product}-{version}.complete.mar",
+ },
+ },
+ "complete-mar-candidates": {
+ "name_postfix": "build{build_number}-Complete",
+ "path_template": CANDIDATES_PATH_TEMPLATE,
+ "file_names": {
+ "default": "{product}-{version}.complete.mar",
+ },
+ },
+ "installer": {
+ "path_template": RELEASES_PATH_TEMPLATE,
+ "file_names": {
+ "linux": "{product}-{version}.tar.bz2",
+ "linux64": "{product}-{version}.tar.bz2",
+ "osx": "{pretty_product}%20{version}.dmg",
+ "win": "{pretty_product}%20Setup%20{version}.exe",
+ "win64": "{pretty_product}%20Setup%20{version}.exe",
+ "win64-aarch64": "{pretty_product}%20Setup%20{version}.exe",
+ },
+ },
+ "partial-mar": {
+ "name_postfix": "-Partial-{previous_version}",
+ "path_template": RELEASES_PATH_TEMPLATE,
+ "file_names": {
+ "default": "{product}-{previous_version}-{version}.partial.mar",
+ },
+ },
+ "partial-mar-candidates": {
+ "name_postfix": "build{build_number}-Partial-{previous_version}build{previous_build}",
+ "path_template": CANDIDATES_PATH_TEMPLATE,
+ "file_names": {
+ "default": "{product}-{previous_version}-{version}.partial.mar",
+ },
+ },
+ "stub-installer": {
+ "name_postfix": "-stub",
+ # We currently have a sole win32 stub installer that is to be used
+ # in all windows platforms to toggle between full installers
+ "path_template": RELEASES_PATH_TEMPLATE.replace("{ftp_platform}", "win32"),
+ "file_names": {
+ "win": "{pretty_product}%20Installer.exe",
+ "win64": "{pretty_product}%20Installer.exe",
+ "win64-aarch64": "{pretty_product}%20Installer.exe",
+ },
+ },
+ "msi": {
+ "name_postfix": "-msi-SSL",
+ "path_template": RELEASES_PATH_TEMPLATE,
+ "file_names": {
+ "win": "{pretty_product}%20Setup%20{version}.msi",
+ "win64": "{pretty_product}%20Setup%20{version}.msi",
+ },
+ },
+ "msix": {
+ "name_postfix": "-msix-SSL",
+ "path_template": RELEASES_PATH_TEMPLATE.replace(":lang", "multi"),
+ "file_names": {
+ "win": "{pretty_product}%20Setup%20{version}.msix",
+ "win64": "{pretty_product}%20Setup%20{version}.msix",
+ },
+ },
+ "pkg": {
+ "name_postfix": "-pkg-SSL",
+ "path_template": RELEASES_PATH_TEMPLATE,
+ "file_names": {
+ "osx": "{pretty_product}%20{version}.pkg",
+ },
+ },
+ "langpack": {
+ "name_postfix": "-langpack-SSL",
+ "path_template": RELEASES_PATH_TEMPLATE.replace(":lang", "xpi"),
+ "file_names": {"default": ":lang.xpi"},
+ },
+}
+CONFIG_PER_BOUNCER_PRODUCT["installer-ssl"] = copy.deepcopy(
+ CONFIG_PER_BOUNCER_PRODUCT["installer"]
+)
+CONFIG_PER_BOUNCER_PRODUCT["installer-ssl"]["name_postfix"] = "-SSL"
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def make_task_worker(config, jobs):
+ for job in jobs:
+ resolve_keyed_by(
+ job,
+ "worker-type",
+ item_name=job["name"],
+ **{"release-level": release_level(config.params["project"])}
+ )
+ resolve_keyed_by(
+ job,
+ "scopes",
+ item_name=job["name"],
+ **{"release-level": release_level(config.params["project"])}
+ )
+ resolve_keyed_by(
+ job,
+ "bouncer-products",
+ item_name=job["name"],
+ **{"release-type": config.params["release_type"]}
+ )
+
+ # No need to filter out ja-JP-mac, we need to upload both; but we do
+ # need to filter out the platforms they come with
+ all_locales = sorted(
+ locale
+ for locale in parse_locales_file(job["locales-file"]).keys()
+ if locale not in ("linux", "win32", "osx")
+ )
+
+ job["worker"]["locales"] = all_locales
+ job["worker"]["entries"] = craft_bouncer_entries(config, job)
+
+ del job["locales-file"]
+ del job["bouncer-platforms"]
+ del job["bouncer-products"]
+
+ if job["worker"]["entries"]:
+ yield job
+ else:
+ logger.warn(
+ 'No bouncer entries defined in bouncer submission task for "{}". \
+Job deleted.'.format(
+ job["name"]
+ )
+ )
+
+
+def craft_bouncer_entries(config, job):
+ release_config = get_release_config(config)
+
+ product = job["shipping-product"]
+ bouncer_platforms = job["bouncer-platforms"]
+
+ current_version = release_config["version"]
+ current_build_number = release_config["build_number"]
+
+ bouncer_products = job["bouncer-products"]
+ previous_versions_string = release_config.get("partial_versions", None)
+ if previous_versions_string:
+ previous_versions = previous_versions_string.split(", ")
+ else:
+ logger.warn(
+ 'No partials defined! Bouncer submission task won\'t send any \
+partial-related entry for "{}"'.format(
+ job["name"]
+ )
+ )
+ bouncer_products = [
+ bouncer_product
+ for bouncer_product in bouncer_products
+ if "partial" not in bouncer_product
+ ]
+ previous_versions = [None]
+
+ project = config.params["project"]
+
+ return {
+ craft_bouncer_product_name(
+ product,
+ bouncer_product,
+ current_version,
+ current_build_number,
+ previous_version,
+ ): {
+ "options": {
+ "add_locales": False if "msix" in bouncer_product else True,
+ "ssl_only": craft_ssl_only(bouncer_product, project),
+ },
+ "paths_per_bouncer_platform": craft_paths_per_bouncer_platform(
+ product,
+ bouncer_product,
+ bouncer_platforms,
+ current_version,
+ current_build_number,
+ previous_version,
+ ),
+ }
+ for bouncer_product in bouncer_products
+ for previous_version in previous_versions
+ }
+
+
+def craft_paths_per_bouncer_platform(
+ product,
+ bouncer_product,
+ bouncer_platforms,
+ current_version,
+ current_build_number,
+ previous_version=None,
+):
+ paths_per_bouncer_platform = {}
+ for bouncer_platform in bouncer_platforms:
+ file_names_per_platform = CONFIG_PER_BOUNCER_PRODUCT[bouncer_product][
+ "file_names"
+ ]
+ file_name_template = file_names_per_platform.get(
+ bouncer_platform, file_names_per_platform.get("default", None)
+ )
+ if not file_name_template:
+ # Some bouncer product like stub-installer are only meant to be on Windows.
+ # Thus no default value is defined there
+ continue
+
+ file_name_product = _craft_filename_product(product)
+ file_name = file_name_template.format(
+ product=file_name_product,
+ pretty_product=file_name_product.capitalize(),
+ version=current_version,
+ previous_version=split_build_data(previous_version)[0],
+ )
+
+ path_template = CONFIG_PER_BOUNCER_PRODUCT[bouncer_product]["path_template"]
+ file_relative_location = path_template.format(
+ ftp_product=_craft_ftp_product(product),
+ version=current_version,
+ build_number=current_build_number,
+ update_folder="update/" if "-mar" in bouncer_product else "",
+ ftp_platform=FTP_PLATFORMS_PER_BOUNCER_PLATFORM[bouncer_platform],
+ file=file_name,
+ )
+
+ paths_per_bouncer_platform[bouncer_platform] = file_relative_location
+
+ return paths_per_bouncer_platform
+
+
+def _craft_ftp_product(product):
+ return product.lower()
+
+
+def _craft_filename_product(product):
+ return "firefox" if product == "devedition" else product
+
+
+@attr.s
+class InvalidSubstitution:
+ error = attr.ib(type=str)
+
+ def __str__(self):
+ raise Exception("Partial is being processed, but no previous version defined.")
+
+
+def craft_bouncer_product_name(
+ product,
+ bouncer_product,
+ current_version,
+ current_build_number=None,
+ previous_version=None,
+):
+ if previous_version is None:
+ previous_version = previous_build = InvalidSubstitution(
+ "Partial is being processed, but no previous version defined."
+ )
+ else:
+ previous_version, previous_build = split_build_data(previous_version)
+ postfix = (
+ CONFIG_PER_BOUNCER_PRODUCT[bouncer_product]
+ .get("name_postfix", "")
+ .format(
+ build_number=current_build_number,
+ previous_version=previous_version,
+ previous_build=previous_build,
+ )
+ )
+
+ return "{product}-{version}{postfix}".format(
+ product=product.capitalize(), version=current_version, postfix=postfix
+ )
+
+
+def craft_ssl_only(bouncer_product, project):
+ # XXX ESR is the only channel where we force serve the installer over SSL
+ if "-esr" in project and bouncer_product == "installer":
+ return True
+
+ return bouncer_product not in (
+ "complete-mar",
+ "complete-mar-candidates",
+ "installer",
+ "partial-mar",
+ "partial-mar-candidates",
+ )
+
+
+def split_build_data(version):
+ if version and "build" in version:
+ return version.split("build")
+ return version, InvalidSubstitution("k")
diff --git a/taskcluster/gecko_taskgraph/transforms/bouncer_submission_partners.py b/taskcluster/gecko_taskgraph/transforms/bouncer_submission_partners.py
new file mode 100644
index 0000000000..0f298cb120
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/bouncer_submission_partners.py
@@ -0,0 +1,193 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Add from parameters.yml into bouncer submission tasks.
+"""
+
+
+import logging
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import resolve_keyed_by
+
+from gecko_taskgraph.transforms.bouncer_submission import (
+ CONFIG_PER_BOUNCER_PRODUCT as CONFIG_PER_BOUNCER_PRODUCT_VANILLA,
+)
+from gecko_taskgraph.transforms.bouncer_submission import (
+ FTP_PLATFORMS_PER_BOUNCER_PLATFORM,
+ _craft_filename_product,
+ _craft_ftp_product,
+)
+from gecko_taskgraph.util.attributes import release_level
+from gecko_taskgraph.util.partners import (
+ check_if_partners_enabled,
+ get_partners_to_be_published,
+)
+from gecko_taskgraph.util.scriptworker import get_release_config
+
+logger = logging.getLogger(__name__)
+
+
+PARTNER_PLATFORMS_TO_BOUNCER = {
+ "linux-shippable": "linux",
+ "linux64-shippable": "linux64",
+ "macosx64-shippable": "osx",
+ "win32-shippable": "win",
+ "win64-shippable": "win64",
+ "win64-aarch64-shippable": "win64-aarch64",
+}
+
+# :lang is interpolated by bouncer at runtime
+RELEASES_PARTNERS_PATH_TEMPLATE = "/{ftp_product}/releases/partners/{partner}/{sub_config}/\
+{version}/{ftp_platform}/:lang/{file}"
+
+CONFIG_PER_BOUNCER_PRODUCT = {
+ "installer": {
+ "name_postfix": "-{partner}-{sub_config}",
+ "path_template": RELEASES_PARTNERS_PATH_TEMPLATE,
+ "file_names": CONFIG_PER_BOUNCER_PRODUCT_VANILLA["installer"]["file_names"],
+ },
+ "stub-installer": {
+ "name_postfix": "-{partner}-{sub_config}-stub",
+ # We currently have a sole win32 stub installer that is to be used
+ # in all windows platforms to toggle between full installers
+ "path_template": RELEASES_PARTNERS_PATH_TEMPLATE.replace(
+ "{ftp_platform}", "win32"
+ ),
+ "file_names": CONFIG_PER_BOUNCER_PRODUCT_VANILLA["stub-installer"][
+ "file_names"
+ ],
+ },
+}
+
+transforms = TransformSequence()
+transforms.add(check_if_partners_enabled)
+
+
+@transforms.add
+def make_task_worker(config, jobs):
+ for job in jobs:
+ resolve_keyed_by(
+ job,
+ "worker-type",
+ item_name=job["name"],
+ **{"release-level": release_level(config.params["project"])}
+ )
+ resolve_keyed_by(
+ job,
+ "scopes",
+ item_name=job["name"],
+ **{"release-level": release_level(config.params["project"])}
+ )
+ resolve_keyed_by(
+ job,
+ "bouncer-products",
+ item_name=job["name"],
+ **{"release-type": config.params["release_type"]}
+ )
+
+ # the schema requires at least one locale but this will not be used
+ job["worker"]["locales"] = ["fake"]
+ job["worker"]["entries"] = craft_bouncer_entries(config, job)
+
+ del job["locales-file"]
+ del job["bouncer-platforms"]
+ del job["bouncer-products"]
+
+ if job["worker"]["entries"]:
+ yield job
+
+
+def craft_bouncer_entries(config, job):
+ release_config = get_release_config(config)
+
+ product = job["shipping-product"]
+ current_version = release_config["version"]
+ bouncer_products = job["bouncer-products"]
+
+ partners = get_partners_to_be_published(config)
+ entries = {}
+ for partner, sub_config_name, platforms in partners:
+ platforms = [PARTNER_PLATFORMS_TO_BOUNCER[p] for p in platforms]
+ entries.update(
+ {
+ craft_partner_bouncer_product_name(
+ product, bouncer_product, current_version, partner, sub_config_name
+ ): {
+ "options": {
+ "add_locales": False, # partners may use different sets of locales
+ "ssl_only": craft_ssl_only(bouncer_product),
+ },
+ "paths_per_bouncer_platform": craft_paths_per_bouncer_platform(
+ product,
+ bouncer_product,
+ platforms,
+ current_version,
+ partner,
+ sub_config_name,
+ ),
+ }
+ for bouncer_product in bouncer_products
+ }
+ )
+ return entries
+
+
+def craft_paths_per_bouncer_platform(
+ product, bouncer_product, bouncer_platforms, current_version, partner, sub_config
+):
+ paths_per_bouncer_platform = {}
+ for bouncer_platform in bouncer_platforms:
+ file_names_per_platform = CONFIG_PER_BOUNCER_PRODUCT[bouncer_product][
+ "file_names"
+ ]
+ file_name_template = file_names_per_platform.get(
+ bouncer_platform, file_names_per_platform.get("default", None)
+ )
+ if not file_name_template:
+ # Some bouncer product like stub-installer are only meant to be on Windows.
+ # Thus no default value is defined there
+ continue
+
+ file_name_product = _craft_filename_product(product)
+ file_name = file_name_template.format(
+ product=file_name_product,
+ pretty_product=file_name_product.capitalize(),
+ version=current_version,
+ )
+
+ path_template = CONFIG_PER_BOUNCER_PRODUCT[bouncer_product]["path_template"]
+ file_relative_location = path_template.format(
+ ftp_product=_craft_ftp_product(product),
+ version=current_version,
+ ftp_platform=FTP_PLATFORMS_PER_BOUNCER_PLATFORM[bouncer_platform],
+ partner=partner,
+ sub_config=sub_config,
+ file=file_name,
+ )
+
+ paths_per_bouncer_platform[bouncer_platform] = file_relative_location
+
+ return paths_per_bouncer_platform
+
+
+def craft_partner_bouncer_product_name(
+ product, bouncer_product, current_version, partner, sub_config
+):
+ postfix = (
+ CONFIG_PER_BOUNCER_PRODUCT[bouncer_product]
+ .get("name_postfix", "")
+ .format(
+ partner=partner,
+ sub_config=sub_config,
+ )
+ )
+
+ return "{product}-{version}{postfix}".format(
+ product=product.capitalize(), version=current_version, postfix=postfix
+ )
+
+
+def craft_ssl_only(bouncer_product):
+ return bouncer_product == "stub-installer"
diff --git a/taskcluster/gecko_taskgraph/transforms/build.py b/taskcluster/gecko_taskgraph/transforms/build.py
new file mode 100644
index 0000000000..94a4d71b0b
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/build.py
@@ -0,0 +1,238 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Apply some defaults and minor modifications to the jobs defined in the build
+kind.
+"""
+import logging
+
+from mozbuild.artifact_builds import JOB_CHOICES as ARTIFACT_JOBS
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import resolve_keyed_by
+from taskgraph.util.treeherder import add_suffix
+
+from gecko_taskgraph.util.attributes import RELEASE_PROJECTS, is_try, release_level
+from gecko_taskgraph.util.workertypes import worker_type_implementation
+
+logger = logging.getLogger(__name__)
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def set_defaults(config, jobs):
+ """Set defaults, including those that differ per worker implementation"""
+ for job in jobs:
+ job["treeherder"].setdefault("kind", "build")
+ job["treeherder"].setdefault("tier", 1)
+ _, worker_os = worker_type_implementation(
+ config.graph_config, config.params, job["worker-type"]
+ )
+ worker = job.setdefault("worker", {})
+ worker.setdefault("env", {})
+ worker["chain-of-trust"] = True
+ if worker_os == "linux":
+ worker.setdefault("docker-image", {"in-tree": "debian11-amd64-build"})
+
+ yield job
+
+
+@transforms.add
+def stub_installer(config, jobs):
+ for job in jobs:
+ resolve_keyed_by(
+ job,
+ "stub-installer",
+ item_name=job["name"],
+ project=config.params["project"],
+ **{
+ "release-type": config.params["release_type"],
+ },
+ )
+ job.setdefault("attributes", {})
+ if job.get("stub-installer"):
+ job["attributes"]["stub-installer"] = job["stub-installer"]
+ job["worker"]["env"].update({"USE_STUB_INSTALLER": "1"})
+ if "stub-installer" in job:
+ del job["stub-installer"]
+ yield job
+
+
+@transforms.add
+def resolve_shipping_product(config, jobs):
+ for job in jobs:
+ resolve_keyed_by(
+ job,
+ "shipping-product",
+ item_name=job["name"],
+ **{
+ "release-type": config.params["release_type"],
+ },
+ )
+ yield job
+
+
+@transforms.add
+def update_channel(config, jobs):
+ keys = [
+ "run.update-channel",
+ "run.mar-channel-id",
+ "run.accepted-mar-channel-ids",
+ ]
+ for job in jobs:
+ job["worker"].setdefault("env", {})
+ for key in keys:
+ resolve_keyed_by(
+ job,
+ key,
+ item_name=job["name"],
+ **{
+ "project": config.params["project"],
+ "release-type": config.params["release_type"],
+ },
+ )
+ update_channel = job["run"].pop("update-channel", None)
+ if update_channel:
+ job["run"].setdefault("extra-config", {})["update_channel"] = update_channel
+ job["attributes"]["update-channel"] = update_channel
+ mar_channel_id = job["run"].pop("mar-channel-id", None)
+ if mar_channel_id:
+ job["attributes"]["mar-channel-id"] = mar_channel_id
+ job["worker"]["env"]["MAR_CHANNEL_ID"] = mar_channel_id
+ accepted_mar_channel_ids = job["run"].pop("accepted-mar-channel-ids", None)
+ if accepted_mar_channel_ids:
+ job["attributes"]["accepted-mar-channel-ids"] = accepted_mar_channel_ids
+ job["worker"]["env"]["ACCEPTED_MAR_CHANNEL_IDS"] = accepted_mar_channel_ids
+
+ yield job
+
+
+@transforms.add
+def mozconfig(config, jobs):
+ for job in jobs:
+ resolve_keyed_by(
+ job,
+ "run.mozconfig-variant",
+ item_name=job["name"],
+ **{
+ "release-type": config.params["release_type"],
+ },
+ )
+ mozconfig_variant = job["run"].pop("mozconfig-variant", None)
+ if mozconfig_variant:
+ job["run"].setdefault("extra-config", {})[
+ "mozconfig_variant"
+ ] = mozconfig_variant
+ yield job
+
+
+@transforms.add
+def use_artifact(config, jobs):
+ if is_try(config.params):
+ use_artifact = config.params["try_task_config"].get(
+ "use-artifact-builds", False
+ )
+ else:
+ use_artifact = False
+ for job in jobs:
+ if (
+ config.kind == "build"
+ and use_artifact
+ and job.get("index", {}).get("job-name") in ARTIFACT_JOBS
+ # If tests aren't packaged, then we are not able to rebuild all the packages
+ and job["worker"]["env"].get("MOZ_AUTOMATION_PACKAGE_TESTS") == "1"
+ ):
+ job["treeherder"]["symbol"] = add_suffix(job["treeherder"]["symbol"], "a")
+ job["worker"]["env"]["USE_ARTIFACT"] = "1"
+ job["attributes"]["artifact-build"] = True
+ yield job
+
+
+@transforms.add
+def use_profile_data(config, jobs):
+ for job in jobs:
+ use_pgo = job.pop("use-pgo", False)
+ disable_pgo = config.params["try_task_config"].get("disable-pgo", False)
+ artifact_build = job["attributes"].get("artifact-build")
+ if not use_pgo or disable_pgo or artifact_build:
+ yield job
+ continue
+
+ # If use_pgo is True, the task uses the generate-profile task of the
+ # same name. Otherwise a task can specify a specific generate-profile
+ # task to use in the use_pgo field.
+ if use_pgo is True:
+ name = job["name"]
+ else:
+ name = use_pgo
+ dependencies = f"generate-profile-{name}"
+ job.setdefault("dependencies", {})["generate-profile"] = dependencies
+ job.setdefault("fetches", {})["generate-profile"] = ["profdata.tar.xz"]
+ job["worker"]["env"].update({"TASKCLUSTER_PGO_PROFILE_USE": "1"})
+
+ _, worker_os = worker_type_implementation(
+ config.graph_config, config.params, job["worker-type"]
+ )
+ if worker_os == "linux":
+ # LTO linkage needs more open files than the default from run-task.
+ job["worker"]["env"].update({"MOZ_LIMIT_NOFILE": "8192"})
+
+ if job.get("use-sccache"):
+ raise Exception(
+ "use-sccache is incompatible with use-pgo in {}".format(job["name"])
+ )
+
+ yield job
+
+
+@transforms.add
+def resolve_keys(config, jobs):
+ for job in jobs:
+ resolve_keyed_by(
+ job,
+ "use-sccache",
+ item_name=job["name"],
+ **{"release-level": release_level(config.params["project"])},
+ )
+ yield job
+
+
+@transforms.add
+def enable_full_crashsymbols(config, jobs):
+ """Enable full crashsymbols on jobs with
+ 'enable-full-crashsymbols' set to True and on release branches, or
+ on try"""
+ branches = RELEASE_PROJECTS | {
+ "toolchains",
+ "try",
+ }
+ for job in jobs:
+ enable_full_crashsymbols = job["attributes"].get("enable-full-crashsymbols")
+ if enable_full_crashsymbols and config.params["project"] in branches:
+ logger.debug("Enabling full symbol generation for %s", job["name"])
+ job["worker"]["env"]["MOZ_ENABLE_FULL_SYMBOLS"] = "1"
+ else:
+ logger.debug("Disabling full symbol generation for %s", job["name"])
+ job["attributes"].pop("enable-full-crashsymbols", None)
+ yield job
+
+
+@transforms.add
+def set_expiry(config, jobs):
+ for job in jobs:
+ attributes = job["attributes"]
+ if (
+ "shippable" in attributes
+ and attributes["shippable"]
+ and config.kind
+ in {
+ "build",
+ }
+ ):
+ expiration_policy = "long"
+ else:
+ expiration_policy = "medium"
+
+ job["expiration-policy"] = expiration_policy
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/build_attrs.py b/taskcluster/gecko_taskgraph/transforms/build_attrs.py
new file mode 100644
index 0000000000..9cda71718a
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/build_attrs.py
@@ -0,0 +1,50 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from taskgraph.transforms.base import TransformSequence
+
+from gecko_taskgraph.util.platforms import platform_family
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def set_build_attributes(config, jobs):
+ """
+ Set the build_platform and build_type attributes based on the job name.
+ Although not all jobs using this transform are actual "builds", the try
+ option syntax treats them as such, and this arranges the attributes
+ appropriately for that purpose.
+ """
+ for job in jobs:
+ build_platform, build_type = job["name"].split("/")
+
+ # pgo builds are represented as a different platform, type opt
+ if build_type == "pgo":
+ build_platform = build_platform + "-pgo"
+ build_type = "opt"
+
+ attributes = job.setdefault("attributes", {})
+ attributes.update(
+ {
+ "build_platform": build_platform,
+ "build_type": build_type,
+ }
+ )
+
+ yield job
+
+
+@transforms.add
+def set_schedules_optimization(config, jobs):
+ """Set the `skip-unless-affected` optimization based on the build platform."""
+ for job in jobs:
+ # don't add skip-unless-schedules if there's already a when defined
+ if "when" in job:
+ yield job
+ continue
+
+ build_platform = job["attributes"]["build_platform"]
+ job.setdefault("optimization", {"build": [platform_family(build_platform)]})
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/build_fat_aar.py b/taskcluster/gecko_taskgraph/transforms/build_fat_aar.py
new file mode 100644
index 0000000000..61df2111d2
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/build_fat_aar.py
@@ -0,0 +1,78 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import copy
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.taskcluster import get_artifact_prefix
+
+from gecko_taskgraph.util.declarative_artifacts import get_geckoview_upstream_artifacts
+
+transforms = TransformSequence()
+
+
+MOZ_ANDROID_FAT_AAR_ENV_MAP = {
+ "android-arm-shippable": "MOZ_ANDROID_FAT_AAR_ARMEABI_V7A",
+ "android-arm-shippable-lite": "MOZ_ANDROID_FAT_AAR_ARMEABI_V7A",
+ "android-aarch64-shippable": "MOZ_ANDROID_FAT_AAR_ARM64_V8A",
+ "android-aarch64-shippable-lite": "MOZ_ANDROID_FAT_AAR_ARM64_V8A",
+ "android-x86-shippable": "MOZ_ANDROID_FAT_AAR_X86",
+ "android-x86-shippable-lite": "MOZ_ANDROID_FAT_AAR_X86",
+ "android-x86_64-shippable": "MOZ_ANDROID_FAT_AAR_X86_64",
+ "android-x86_64-shippable-lite": "MOZ_ANDROID_FAT_AAR_X86_64",
+ "android-arm-opt": "MOZ_ANDROID_FAT_AAR_ARMEABI_V7A",
+ "android-aarch64-opt": "MOZ_ANDROID_FAT_AAR_ARM64_V8A",
+ "android-x86-opt": "MOZ_ANDROID_FAT_AAR_X86",
+ "android-x86_64-opt": "MOZ_ANDROID_FAT_AAR_X86_64",
+}
+
+
+@transforms.add
+def set_fetches_and_locations(config, jobs):
+ """Set defaults, including those that differ per worker implementation"""
+ for job in jobs:
+ dependencies = copy.deepcopy(job["dependencies"])
+
+ for platform, label in dependencies.items():
+ job["dependencies"] = {"build": label}
+
+ aar_location = _get_aar_location(config, job, platform)
+ prefix = get_artifact_prefix(job)
+ if not prefix.endswith("/"):
+ prefix = prefix + "/"
+ if aar_location.startswith(prefix):
+ aar_location = aar_location[len(prefix) :]
+
+ job.setdefault("fetches", {}).setdefault(platform, []).append(
+ {
+ "artifact": aar_location,
+ "extract": False,
+ }
+ )
+
+ aar_file_name = aar_location.split("/")[-1]
+ env_var = MOZ_ANDROID_FAT_AAR_ENV_MAP[platform]
+ job["worker"]["env"][env_var] = aar_file_name
+
+ job["dependencies"] = dependencies
+
+ yield job
+
+
+def _get_aar_location(config, job, platform):
+ artifacts_locations = []
+
+ for package in job["attributes"]["maven_packages"]:
+ artifacts_locations += get_geckoview_upstream_artifacts(
+ config, job, package, platform=platform
+ )
+
+ aar_locations = [
+ path for path in artifacts_locations[0]["paths"] if path.endswith(".aar")
+ ]
+ if len(aar_locations) != 1:
+ raise ValueError(f"Only a single AAR must be given. Got: {aar_locations}")
+
+ return aar_locations[0]
diff --git a/taskcluster/gecko_taskgraph/transforms/build_lints.py b/taskcluster/gecko_taskgraph/transforms/build_lints.py
new file mode 100644
index 0000000000..d1bd276059
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/build_lints.py
@@ -0,0 +1,59 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Apply some defaults and minor modifications to the jobs defined in the build
+kind.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def check_mozharness_perfherder_options(config, jobs):
+ """Verify that multiple jobs don't use the same perfherder bucket.
+
+ Build jobs record perfherder metrics by default. Perfherder metrics go
+ to a bucket derived by the platform by default. The name can further be
+ customized by the presence of "extra options" either defined in
+ mozharness sub-configs or in an environment variable.
+
+ This linter tries to verify that no 2 jobs will send Perfherder metrics
+ to the same bucket by looking for jobs not defining extra options when
+ their platform or mozharness config are otherwise similar.
+ """
+
+ SEEN_CONFIGS = {}
+
+ for job in jobs:
+ if job["run"]["using"] != "mozharness":
+ yield job
+ continue
+
+ worker = job.get("worker", {})
+
+ platform = job["treeherder"]["platform"]
+ primary_config = job["run"]["config"][0]
+ options = worker.get("env", {}).get("PERFHERDER_EXTRA_OPTIONS")
+ shippable = job.get("attributes", {}).get("shippable", False)
+
+ # This isn't strictly necessary. But the Perfherder code looking at the
+ # values we care about is only active on builds. So it doesn't make
+ # sense to run this linter elsewhere.
+ assert primary_config.startswith("builds/")
+
+ key = (platform, primary_config, shippable, options)
+
+ if key in SEEN_CONFIGS:
+ raise Exception(
+ "Non-unique Perfherder data collection for jobs %s-%s and %s: "
+ "set PERFHERDER_EXTRA_OPTIONS in worker environment variables "
+ "or use different mozconfigs"
+ % (config.kind, job["name"], SEEN_CONFIGS[key])
+ )
+
+ SEEN_CONFIGS[key] = "{}-{}".format(config.kind, job["name"])
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/build_signing.py b/taskcluster/gecko_taskgraph/transforms/build_signing.py
new file mode 100644
index 0000000000..36f39f0b56
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/build_signing.py
@@ -0,0 +1,71 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the signing task into an actual task description.
+"""
+
+
+from taskgraph.transforms.base import TransformSequence
+
+from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
+from gecko_taskgraph.util.signed_artifacts import (
+ generate_specifications_of_artifacts_to_sign,
+)
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def add_signed_routes(config, jobs):
+ """Add routes corresponding to the routes of the build task
+ this corresponds to, with .signed inserted, for all gecko.v2 routes"""
+
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ enable_signing_routes = job.pop("enable-signing-routes", True)
+
+ job["routes"] = []
+ if dep_job.attributes.get("shippable") and enable_signing_routes:
+ for dep_route in dep_job.task.get("routes", []):
+ if not dep_route.startswith("index.gecko.v2"):
+ continue
+ branch = dep_route.split(".")[3]
+ rest = ".".join(dep_route.split(".")[4:])
+ job["routes"].append(f"index.gecko.v2.{branch}.signed.{rest}")
+
+ yield job
+
+
+@transforms.add
+def define_upstream_artifacts(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ upstream_artifact_task = job.pop("upstream-artifact-task", dep_job)
+
+ job["attributes"] = copy_attributes_from_dependent_job(dep_job)
+
+ artifacts_specifications = generate_specifications_of_artifacts_to_sign(
+ config,
+ job,
+ keep_locale_template=False,
+ kind=config.kind,
+ dep_kind=upstream_artifact_task.kind,
+ )
+
+ task_ref = f"<{upstream_artifact_task.kind}>"
+ task_type = "build"
+ if "notarization" in upstream_artifact_task.kind:
+ task_type = "scriptworker"
+
+ job["upstream-artifacts"] = [
+ {
+ "taskId": {"task-reference": task_ref},
+ "taskType": task_type,
+ "paths": spec["artifacts"],
+ "formats": spec["formats"],
+ }
+ for spec in artifacts_specifications
+ ]
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/cached_tasks.py b/taskcluster/gecko_taskgraph/transforms/cached_tasks.py
new file mode 100644
index 0000000000..bb7e6e6778
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/cached_tasks.py
@@ -0,0 +1,101 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+from collections import deque
+
+import taskgraph
+from taskgraph.transforms.base import TransformSequence
+
+from gecko_taskgraph.util.cached_tasks import add_optimization
+
+transforms = TransformSequence()
+
+
+def order_tasks(config, tasks):
+ """Iterate image tasks in an order where parent tasks come first."""
+ kind_prefix = config.kind + "-"
+
+ pending = deque(tasks)
+ task_labels = {task["label"] for task in pending}
+ emitted = set()
+ while True:
+ try:
+ task = pending.popleft()
+ except IndexError:
+ break
+ parents = {
+ task
+ for task in task.get("dependencies", {}).values()
+ if task.startswith(kind_prefix)
+ }
+ if parents and not emitted.issuperset(parents & task_labels):
+ pending.append(task)
+ continue
+ emitted.add(task["label"])
+ yield task
+
+
+def format_task_digest(cached_task):
+ return "/".join(
+ [
+ cached_task["type"],
+ cached_task["name"],
+ cached_task["digest"],
+ ]
+ )
+
+
+@transforms.add
+def cache_task(config, tasks):
+ if taskgraph.fast:
+ for task in tasks:
+ yield task
+ return
+
+ digests = {}
+ for task in config.kind_dependencies_tasks.values():
+ if (
+ "cached_task" in task.attributes
+ and task.attributes["cached_task"] is not False
+ ):
+ digests[task.label] = format_task_digest(task.attributes["cached_task"])
+
+ for task in order_tasks(config, tasks):
+ cache = task.pop("cache", None)
+ if cache is None:
+ yield task
+ continue
+
+ dependency_digests = []
+ for p in task.get("dependencies", {}).values():
+ if p in digests:
+ dependency_digests.append(digests[p])
+ elif config.params["project"] == "toolchains":
+ # The toolchains repository uses non-cached toolchain artifacts. Allow
+ # tasks to use them.
+ cache = None
+ break
+ else:
+ raise Exception(
+ "Cached task {} has uncached parent task: {}".format(
+ task["label"], p
+ )
+ )
+
+ if cache is None:
+ yield task
+ continue
+
+ digest_data = cache["digest-data"] + sorted(dependency_digests)
+ add_optimization(
+ config,
+ task,
+ cache_type=cache["type"],
+ cache_name=cache["name"],
+ digest_data=digest_data,
+ )
+ digests[task["label"]] = format_task_digest(task["attributes"]["cached_task"])
+
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/chunk_partners.py b/taskcluster/gecko_taskgraph/transforms/chunk_partners.py
new file mode 100644
index 0000000000..ed74cc6232
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/chunk_partners.py
@@ -0,0 +1,75 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Chunk the partner repack tasks by subpartner and locale
+"""
+
+
+import copy
+
+from mozbuild.chunkify import chunkify
+from taskgraph.transforms.base import TransformSequence
+
+from gecko_taskgraph.util.partners import (
+ apply_partner_priority,
+ get_repack_ids_by_platform,
+)
+
+transforms = TransformSequence()
+transforms.add(apply_partner_priority)
+
+
+@transforms.add
+def chunk_partners(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ build_platform = dep_job.attributes["build_platform"]
+ repack_id = dep_job.task.get("extra", {}).get("repack_id")
+ repack_ids = dep_job.task.get("extra", {}).get("repack_ids")
+ copy_repack_ids = job.pop("copy-repack-ids", False)
+
+ if copy_repack_ids:
+ assert repack_ids, "dep_job {} doesn't have repack_ids!".format(
+ dep_job.label
+ )
+ job.setdefault("extra", {})["repack_ids"] = repack_ids
+ yield job
+ # first downstream of the repack task, no chunking or fanout has been done yet
+ elif not any([repack_id, repack_ids]):
+ platform_repack_ids = get_repack_ids_by_platform(config, build_platform)
+ # we chunk mac signing
+ if config.kind in (
+ "release-partner-repack-signing",
+ "release-eme-free-repack-signing",
+ "release-eme-free-repack-mac-signing",
+ "release-partner-repack-mac-signing",
+ ):
+ repacks_per_chunk = job.get("repacks-per-chunk")
+ chunks, remainder = divmod(len(platform_repack_ids), repacks_per_chunk)
+ if remainder:
+ chunks = int(chunks + 1)
+ for this_chunk in range(1, chunks + 1):
+ chunk = chunkify(platform_repack_ids, this_chunk, chunks)
+ partner_job = copy.deepcopy(job)
+ partner_job.setdefault("extra", {}).setdefault("repack_ids", chunk)
+ partner_job["extra"]["repack_suffix"] = str(this_chunk)
+ yield partner_job
+ # linux and windows we fan out immediately to one task per partner-sub_partner-locale
+ else:
+ for repack_id in platform_repack_ids:
+ partner_job = copy.deepcopy(job) # don't overwrite dict values here
+ partner_job.setdefault("extra", {})
+ partner_job["extra"]["repack_id"] = repack_id
+ yield partner_job
+ # fan out chunked mac signing for repackage
+ elif repack_ids:
+ for repack_id in repack_ids:
+ partner_job = copy.deepcopy(job)
+ partner_job.setdefault("extra", {}).setdefault("repack_id", repack_id)
+ yield partner_job
+ # otherwise we've fully fanned out already, continue by passing repack_id on
+ else:
+ partner_job = copy.deepcopy(job)
+ partner_job.setdefault("extra", {}).setdefault("repack_id", repack_id)
+ yield partner_job
diff --git a/taskcluster/gecko_taskgraph/transforms/code_review.py b/taskcluster/gecko_taskgraph/transforms/code_review.py
new file mode 100644
index 0000000000..d644e17d0e
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/code_review.py
@@ -0,0 +1,33 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Add soft dependencies and configuration to code-review tasks.
+"""
+
+
+from taskgraph.transforms.base import TransformSequence
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def add_dependencies(config, jobs):
+ for job in jobs:
+ job.setdefault("soft-dependencies", [])
+ job["soft-dependencies"] += [
+ dep_task.label
+ for dep_task in config.kind_dependencies_tasks.values()
+ if dep_task.attributes.get("code-review") is True
+ ]
+ yield job
+
+
+@transforms.add
+def add_phabricator_config(config, jobs):
+ for job in jobs:
+ diff = config.params.get("phabricator_diff")
+ if diff is not None:
+ code_review = job.setdefault("extra", {}).setdefault("code-review", {})
+ code_review["phabricator-diff"] = diff
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/condprof.py b/taskcluster/gecko_taskgraph/transforms/condprof.py
new file mode 100644
index 0000000000..34cf7e7dd3
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/condprof.py
@@ -0,0 +1,85 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+This transform constructs tasks generate conditioned profiles from
+the condprof/kind.yml file
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import Schema
+from voluptuous import Optional
+
+from gecko_taskgraph.transforms.job import job_description_schema
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.copy_task import copy_task
+
+diff_description_schema = Schema(
+ {
+ # default is settled, but add 'full' to get both
+ Optional("scenarios"): [str],
+ Optional("description"): task_description_schema["description"],
+ Optional("dependencies"): task_description_schema["dependencies"],
+ Optional("fetches"): job_description_schema["fetches"],
+ Optional("index"): task_description_schema["index"],
+ Optional("job-from"): str,
+ Optional("name"): str,
+ Optional("run"): job_description_schema["run"],
+ Optional("run-on-projects"): task_description_schema["run-on-projects"],
+ Optional("scopes"): task_description_schema["scopes"],
+ Optional("treeherder"): task_description_schema["treeherder"],
+ Optional("worker"): job_description_schema["worker"],
+ Optional("worker-type"): task_description_schema["worker-type"],
+ }
+)
+
+transforms = TransformSequence()
+transforms.add_validate(diff_description_schema)
+
+
+@transforms.add
+def generate_scenarios(config, tasks):
+ for task in tasks:
+ cmds = task["run"]["command"]
+ symbol = task["treeherder"]["symbol"].split(")")[0]
+ index = task["index"]
+ jobname = index["job-name"]
+ label = task["name"]
+ run_as_root = task["run"].get("run-as-root", False)
+
+ for scenario in set(task["scenarios"]):
+ extra_args = ""
+ if scenario == "settled":
+ extra_args = " --force-new "
+
+ tcmd = cmds.replace("${EXTRA_ARGS}", extra_args)
+ tcmd = tcmd.replace("${SCENARIO}", scenario)
+
+ index["job-name"] = "%s-%s" % (jobname, scenario)
+
+ taskdesc = {
+ "name": "%s-%s" % (label, scenario),
+ "description": task["description"],
+ "treeherder": {
+ "symbol": "%s-%s)" % (symbol, scenario),
+ "platform": task["treeherder"]["platform"],
+ "kind": task["treeherder"]["kind"],
+ "tier": task["treeherder"]["tier"],
+ },
+ "worker-type": copy_task(task["worker-type"]),
+ "worker": copy_task(task["worker"]),
+ "index": copy_task(index),
+ "run": {
+ "using": "run-task",
+ "cwd": task["run"]["cwd"],
+ "checkout": task["run"]["checkout"],
+ "tooltool-downloads": copy_task(task["run"]["tooltool-downloads"]),
+ "command": tcmd,
+ "run-as-root": run_as_root,
+ },
+ "run-on-projects": copy_task(task["run-on-projects"]),
+ "scopes": copy_task(task["scopes"]),
+ "dependencies": copy_task(task["dependencies"]),
+ "fetches": copy_task(task["fetches"]),
+ }
+ yield taskdesc
diff --git a/taskcluster/gecko_taskgraph/transforms/copy_attributes_from_dependent_task.py b/taskcluster/gecko_taskgraph/transforms/copy_attributes_from_dependent_task.py
new file mode 100644
index 0000000000..281dd5938f
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/copy_attributes_from_dependent_task.py
@@ -0,0 +1,23 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the repackage task into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+
+from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def copy_attributes(config, jobs):
+ for job in jobs:
+ job.setdefault("attributes", {})
+ job["attributes"].update(
+ copy_attributes_from_dependent_job(job["primary-dependency"])
+ )
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/cross_channel.py b/taskcluster/gecko_taskgraph/transforms/cross_channel.py
new file mode 100644
index 0000000000..bf6d3a3a4f
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/cross_channel.py
@@ -0,0 +1,44 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Build a command to run `mach l10n-cross-channel`.
+"""
+
+
+from pipes import quote as shell_quote
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import resolve_keyed_by
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def resolve_keys(config, jobs):
+ for job in jobs:
+ for item in ["ssh-key-secret", "run.actions"]:
+ resolve_keyed_by(job, item, item, **{"level": str(config.params["level"])})
+ yield job
+
+
+@transforms.add
+def build_command(config, jobs):
+ for job in jobs:
+ command = [
+ "l10n-cross-channel",
+ "-o",
+ "/builds/worker/artifacts/outgoing.diff",
+ "--attempts",
+ "5",
+ ]
+ ssh_key_secret = job.pop("ssh-key-secret")
+ if ssh_key_secret:
+ command.extend(["--ssh-secret", ssh_key_secret])
+ job.setdefault("scopes", []).append(f"secrets:get:{ssh_key_secret}")
+
+ command.extend(job["run"].pop("actions", []))
+ job.setdefault("run", {}).update(
+ {"using": "mach", "mach": " ".join(map(shell_quote, command))}
+ )
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/diffoscope.py b/taskcluster/gecko_taskgraph/transforms/diffoscope.py
new file mode 100644
index 0000000000..b74dc5bb8f
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/diffoscope.py
@@ -0,0 +1,172 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+This transform construct tasks to perform diffs between builds, as
+defined in kind.yml
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import Schema
+from taskgraph.util.taskcluster import get_artifact_path
+from voluptuous import Any, Optional, Required
+
+from gecko_taskgraph.transforms.task import task_description_schema
+
+index_or_string = Any(
+ str,
+ {Required("index-search"): str},
+)
+
+diff_description_schema = Schema(
+ {
+ # Name of the diff task.
+ Required("name"): str,
+ # Treeherder tier.
+ Required("tier"): int,
+ # Treeherder symbol.
+ Required("symbol"): str,
+ # relative path (from config.path) to the file the task was defined in.
+ Optional("job-from"): str,
+ # Original and new builds to compare.
+ Required("original"): index_or_string,
+ Required("new"): index_or_string,
+ # Arguments to pass to diffoscope, used for job-defaults in
+ # taskcluster/ci/diffoscope/kind.yml
+ Optional("args"): str,
+ # Extra arguments to pass to diffoscope, that can be set per job.
+ Optional("extra-args"): str,
+ # Fail the task when differences are detected.
+ Optional("fail-on-diff"): bool,
+ # What artifact to check the differences of. Defaults to target.tar.bz2
+ # for Linux, target.dmg for Mac, target.zip for Windows, target.apk for
+ # Android.
+ Optional("artifact"): str,
+ # Whether to unpack first. Diffoscope can normally work without unpacking,
+ # but when one needs to --exclude some contents, that doesn't work out well
+ # if said content is packed (e.g. in omni.ja).
+ Optional("unpack"): bool,
+ # Commands to run before performing the diff.
+ Optional("pre-diff-commands"): [str],
+ # Only run the task on a set of projects/branches.
+ Optional("run-on-projects"): task_description_schema["run-on-projects"],
+ Optional("optimization"): task_description_schema["optimization"],
+ }
+)
+
+transforms = TransformSequence()
+transforms.add_validate(diff_description_schema)
+
+
+@transforms.add
+def fill_template(config, tasks):
+ dummy_tasks = {}
+
+ for task in tasks:
+ name = task["name"]
+
+ deps = {}
+ urls = {}
+ previous_artifact = None
+ artifact = task.get("artifact")
+ for k in ("original", "new"):
+ value = task[k]
+ if isinstance(value, str):
+ deps[k] = value
+ dep_name = k
+ os_hint = value
+ else:
+ index = value["index-search"]
+ if index not in dummy_tasks:
+ dummy_tasks[index] = {
+ "label": "index-search-" + index,
+ "description": index,
+ "worker-type": "invalid/always-optimized",
+ "run": {
+ "using": "always-optimized",
+ },
+ "optimization": {
+ "index-search": [index],
+ },
+ }
+ yield dummy_tasks[index]
+ deps[index] = "index-search-" + index
+ dep_name = index
+ os_hint = index.split(".")[-1]
+ if artifact:
+ pass
+ elif "linux" in os_hint:
+ artifact = "target.tar.bz2"
+ elif "macosx" in os_hint:
+ artifact = "target.dmg"
+ elif "android" in os_hint:
+ artifact = "target.apk"
+ elif "win" in os_hint:
+ artifact = "target.zip"
+ else:
+ raise Exception(f"Cannot figure out the OS for {value!r}")
+ if previous_artifact is not None and previous_artifact != artifact:
+ raise Exception("Cannot compare builds from different OSes")
+ urls[k] = {
+ "artifact-reference": "<{}/{}>".format(
+ dep_name, get_artifact_path(task, artifact)
+ ),
+ }
+ previous_artifact = artifact
+
+ taskdesc = {
+ "label": "diff-" + name,
+ "description": name,
+ "treeherder": {
+ "symbol": task["symbol"],
+ "platform": "diff/opt",
+ "kind": "other",
+ "tier": task["tier"],
+ },
+ "worker-type": "b-linux-gcp",
+ "worker": {
+ "docker-image": {"in-tree": "diffoscope"},
+ "artifacts": [
+ {
+ "type": "file",
+ "path": f"/builds/worker/{f}",
+ "name": f"public/{f}",
+ }
+ for f in (
+ "diff.html",
+ "diff.txt",
+ )
+ ],
+ "env": {
+ "ORIG_URL": urls["original"],
+ "NEW_URL": urls["new"],
+ "DIFFOSCOPE_ARGS": " ".join(
+ task[k] for k in ("args", "extra-args") if k in task
+ ),
+ "PRE_DIFF": "; ".join(task.get("pre-diff-commands", [])),
+ },
+ "max-run-time": 1800,
+ },
+ "run": {
+ "using": "run-task",
+ "checkout": task.get("unpack", False),
+ "command": "/builds/worker/bin/get_and_diffoscope{}{}".format(
+ " --unpack" if task.get("unpack") else "",
+ " --fail" if task.get("fail-on-diff") else "",
+ ),
+ },
+ "dependencies": deps,
+ "optimization": task.get("optimization"),
+ }
+ if "run-on-projects" in task:
+ taskdesc["run-on-projects"] = task["run-on-projects"]
+
+ if artifact.endswith(".dmg"):
+ taskdesc.setdefault("fetches", {}).setdefault("toolchain", []).extend(
+ [
+ "linux64-cctools-port",
+ "linux64-libdmg",
+ ]
+ )
+
+ yield taskdesc
diff --git a/taskcluster/gecko_taskgraph/transforms/docker_image.py b/taskcluster/gecko_taskgraph/transforms/docker_image.py
new file mode 100644
index 0000000000..0ccf83bf38
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/docker_image.py
@@ -0,0 +1,209 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import json
+import logging
+import os
+import re
+
+import mozpack.path as mozpath
+import taskgraph
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import Schema
+from voluptuous import Optional, Required
+
+from gecko_taskgraph.util.docker import (
+ create_context_tar,
+ generate_context_hash,
+ image_path,
+)
+
+from .. import GECKO
+from .task import task_description_schema
+
+logger = logging.getLogger(__name__)
+
+CONTEXTS_DIR = "docker-contexts"
+
+DIGEST_RE = re.compile("^[0-9a-f]{64}$")
+
+IMAGE_BUILDER_IMAGE = (
+ "mozillareleases/image_builder:5.0.0"
+ "@sha256:"
+ "e510a9a9b80385f71c112d61b2f2053da625aff2b6d430411ac42e424c58953f"
+)
+
+transforms = TransformSequence()
+
+docker_image_schema = Schema(
+ {
+ # Name of the docker image.
+ Required("name"): str,
+ # Name of the parent docker image.
+ Optional("parent"): str,
+ # Treeherder symbol.
+ Required("symbol"): str,
+ # relative path (from config.path) to the file the docker image was defined
+ # in.
+ Optional("job-from"): str,
+ # Arguments to use for the Dockerfile.
+ Optional("args"): {str: str},
+ # Name of the docker image definition under taskcluster/docker, when
+ # different from the docker image name.
+ Optional("definition"): str,
+ # List of package tasks this docker image depends on.
+ Optional("packages"): [str],
+ Optional(
+ "index",
+ description="information for indexing this build so its artifacts can be discovered",
+ ): task_description_schema["index"],
+ Optional(
+ "cache",
+ description="Whether this image should be cached based on inputs.",
+ ): bool,
+ }
+)
+
+
+transforms.add_validate(docker_image_schema)
+
+
+@transforms.add
+def fill_template(config, tasks):
+ if not taskgraph.fast and config.write_artifacts:
+ if not os.path.isdir(CONTEXTS_DIR):
+ os.makedirs(CONTEXTS_DIR)
+
+ for task in tasks:
+ image_name = task.pop("name")
+ job_symbol = task.pop("symbol")
+ args = task.pop("args", {})
+ packages = task.pop("packages", [])
+ parent = task.pop("parent", None)
+
+ for p in packages:
+ if f"packages-{p}" not in config.kind_dependencies_tasks:
+ raise Exception(
+ "Missing package job for {}-{}: {}".format(
+ config.kind, image_name, p
+ )
+ )
+
+ if not taskgraph.fast:
+ context_path = mozpath.relpath(image_path(image_name), GECKO)
+ if config.write_artifacts:
+ context_file = os.path.join(CONTEXTS_DIR, f"{image_name}.tar.gz")
+ logger.info(f"Writing {context_file} for docker image {image_name}")
+ context_hash = create_context_tar(
+ GECKO, context_path, context_file, image_name, args
+ )
+ else:
+ context_hash = generate_context_hash(
+ GECKO, context_path, image_name, args
+ )
+ else:
+ if config.write_artifacts:
+ raise Exception("Can't write artifacts if `taskgraph.fast` is set.")
+ context_hash = "0" * 40
+ digest_data = [context_hash]
+ digest_data += [json.dumps(args, sort_keys=True)]
+
+ description = "Build the docker image {} for use by dependent tasks".format(
+ image_name
+ )
+
+ args["DOCKER_IMAGE_PACKAGES"] = " ".join(f"<{p}>" for p in packages)
+
+ # Adjust the zstandard compression level based on the execution level.
+ # We use faster compression for level 1 because we care more about
+ # end-to-end times. We use slower/better compression for other levels
+ # because images are read more often and it is worth the trade-off to
+ # burn more CPU once to reduce image size.
+ zstd_level = "3" if int(config.params["level"]) == 1 else "10"
+
+ # include some information that is useful in reconstructing this task
+ # from JSON
+ taskdesc = {
+ "label": f"{config.kind}-{image_name}",
+ "description": description,
+ "attributes": {
+ "image_name": image_name,
+ "artifact_prefix": "public",
+ },
+ "expiration-policy": "long",
+ "scopes": [],
+ "treeherder": {
+ "symbol": job_symbol,
+ "platform": "taskcluster-images/opt",
+ "kind": "other",
+ "tier": 1,
+ },
+ "run-on-projects": [],
+ "worker-type": "images-gcp",
+ "worker": {
+ "implementation": "docker-worker",
+ "os": "linux",
+ "artifacts": [
+ {
+ "type": "file",
+ "path": "/workspace/image.tar.zst",
+ "name": "public/image.tar.zst",
+ }
+ ],
+ "env": {
+ "CONTEXT_TASK_ID": {"task-reference": "<decision>"},
+ "CONTEXT_PATH": "public/docker-contexts/{}.tar.gz".format(
+ image_name
+ ),
+ "HASH": context_hash,
+ "PROJECT": config.params["project"],
+ "IMAGE_NAME": image_name,
+ "DOCKER_IMAGE_ZSTD_LEVEL": zstd_level,
+ "DOCKER_BUILD_ARGS": {"task-reference": json.dumps(args)},
+ "GECKO_BASE_REPOSITORY": config.params["base_repository"],
+ "GECKO_HEAD_REPOSITORY": config.params["head_repository"],
+ "GECKO_HEAD_REV": config.params["head_rev"],
+ },
+ "chain-of-trust": True,
+ "max-run-time": 7200,
+ # FIXME: We aren't currently propagating the exit code
+ },
+ }
+ # Retry for 'funsize-update-generator' if exit status code is -1
+ if image_name in ["funsize-update-generator"]:
+ taskdesc["worker"]["retry-exit-status"] = [-1]
+
+ worker = taskdesc["worker"]
+
+ if image_name == "image_builder":
+ worker["docker-image"] = IMAGE_BUILDER_IMAGE
+ digest_data.append(f"image-builder-image:{IMAGE_BUILDER_IMAGE}")
+ else:
+ worker["docker-image"] = {"in-tree": "image_builder"}
+ deps = taskdesc.setdefault("dependencies", {})
+ deps["docker-image"] = f"{config.kind}-image_builder"
+
+ if packages:
+ deps = taskdesc.setdefault("dependencies", {})
+ for p in sorted(packages):
+ deps[p] = f"packages-{p}"
+
+ if parent:
+ deps = taskdesc.setdefault("dependencies", {})
+ deps["parent"] = f"{config.kind}-{parent}"
+ worker["env"]["PARENT_TASK_ID"] = {
+ "task-reference": "<parent>",
+ }
+ if "index" in task:
+ taskdesc["index"] = task["index"]
+
+ if task.get("cache", True) and not taskgraph.fast:
+ taskdesc["cache"] = {
+ "type": "docker-images.v2",
+ "name": image_name,
+ "digest-data": digest_data,
+ }
+
+ yield taskdesc
diff --git a/taskcluster/gecko_taskgraph/transforms/fetch.py b/taskcluster/gecko_taskgraph/transforms/fetch.py
new file mode 100644
index 0000000000..b51362a905
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/fetch.py
@@ -0,0 +1,387 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Support for running tasks that download remote content and re-export
+# it as task artifacts.
+
+
+import os
+import re
+
+import attr
+import taskgraph
+from mozbuild.shellutil import quote as shell_quote
+from mozpack import path as mozpath
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import Schema, validate_schema
+from taskgraph.util.treeherder import join_symbol
+from voluptuous import Any, Extra, Optional, Required
+
+import gecko_taskgraph
+
+from ..util.cached_tasks import add_optimization
+
+CACHE_TYPE = "content.v1"
+
+FETCH_SCHEMA = Schema(
+ {
+ # Name of the task.
+ Required("name"): str,
+ # Relative path (from config.path) to the file the task was defined
+ # in.
+ Optional("job-from"): str,
+ # Description of the task.
+ Required("description"): str,
+ Optional(
+ "fetch-alias",
+ description="An alias that can be used instead of the real fetch job name in "
+ "fetch stanzas for jobs.",
+ ): str,
+ Optional(
+ "artifact-prefix",
+ description="The prefix of the taskcluster artifact being uploaded. "
+ "Defaults to `public/`; if it starts with something other than "
+ "`public/` the artifact will require scopes to access.",
+ ): str,
+ Optional("attributes"): {str: object},
+ Required("fetch"): {
+ Required("type"): str,
+ Extra: object,
+ },
+ }
+)
+
+
+# define a collection of payload builders, depending on the worker implementation
+fetch_builders = {}
+
+
+@attr.s(frozen=True)
+class FetchBuilder:
+ schema = attr.ib(type=Schema)
+ builder = attr.ib()
+
+
+def fetch_builder(name, schema):
+ schema = Schema({Required("type"): name}).extend(schema)
+
+ def wrap(func):
+ fetch_builders[name] = FetchBuilder(schema, func)
+ return func
+
+ return wrap
+
+
+transforms = TransformSequence()
+transforms.add_validate(FETCH_SCHEMA)
+
+
+@transforms.add
+def process_fetch_job(config, jobs):
+ # Converts fetch-url entries to the job schema.
+ for job in jobs:
+ typ = job["fetch"]["type"]
+ name = job["name"]
+ fetch = job.pop("fetch")
+
+ if typ not in fetch_builders:
+ raise Exception(f"Unknown fetch type {typ} in fetch {name}")
+ validate_schema(fetch_builders[typ].schema, fetch, f"In task.fetch {name!r}:")
+
+ job.update(configure_fetch(config, typ, name, fetch))
+
+ yield job
+
+
+def configure_fetch(config, typ, name, fetch):
+ if typ not in fetch_builders:
+ raise Exception(f"No fetch type {typ} in fetch {name}")
+ validate_schema(fetch_builders[typ].schema, fetch, f"In task.fetch {name!r}:")
+
+ return fetch_builders[typ].builder(config, name, fetch)
+
+
+@transforms.add
+def make_task(config, jobs):
+ # Fetch tasks are idempotent and immutable. Have them live for
+ # essentially forever.
+ if config.params["level"] == "3":
+ expires = "1000 years"
+ else:
+ expires = "28 days"
+
+ for job in jobs:
+ name = job["name"]
+ artifact_prefix = job.get("artifact-prefix", "public")
+ env = job.get("env", {})
+ env.update({"UPLOAD_DIR": "/builds/worker/artifacts"})
+ attributes = job.get("attributes", {})
+ attributes["fetch-artifact"] = mozpath.join(
+ artifact_prefix, job["artifact_name"]
+ )
+ alias = job.get("fetch-alias")
+ if alias:
+ attributes["fetch-alias"] = alias
+
+ task_expires = "28 days" if attributes.get("cached_task") is False else expires
+ artifact_expires = (
+ "2 days" if attributes.get("cached_task") is False else expires
+ )
+
+ task = {
+ "attributes": attributes,
+ "name": name,
+ "description": job["description"],
+ "expires-after": task_expires,
+ "label": "fetch-%s" % name,
+ "run-on-projects": [],
+ "treeherder": {
+ "symbol": join_symbol("Fetch", name),
+ "kind": "build",
+ "platform": "fetch/opt",
+ "tier": 1,
+ },
+ "run": {
+ "using": "run-task",
+ "checkout": False,
+ "command": job["command"],
+ },
+ "worker-type": "b-linux-gcp",
+ "worker": {
+ "chain-of-trust": True,
+ "docker-image": {"in-tree": "fetch"},
+ "env": env,
+ "max-run-time": 900,
+ "artifacts": [
+ {
+ "type": "directory",
+ "name": artifact_prefix,
+ "path": "/builds/worker/artifacts",
+ "expires-after": artifact_expires,
+ }
+ ],
+ },
+ }
+
+ if job.get("secret", None):
+ task["scopes"] = ["secrets:get:" + job.get("secret")]
+ task["worker"]["taskcluster-proxy"] = True
+
+ if not taskgraph.fast:
+ cache_name = task["label"].replace(f"{config.kind}-", "", 1)
+
+ # This adds the level to the index path automatically.
+ add_optimization(
+ config,
+ task,
+ cache_type=CACHE_TYPE,
+ cache_name=cache_name,
+ digest_data=job["digest_data"],
+ )
+ yield task
+
+
+@fetch_builder(
+ "static-url",
+ schema={
+ # The URL to download.
+ Required("url"): str,
+ # The SHA-256 of the downloaded content.
+ Required("sha256"): str,
+ # Size of the downloaded entity, in bytes.
+ Required("size"): int,
+ # GPG signature verification.
+ Optional("gpg-signature"): {
+ # URL where GPG signature document can be obtained. Can contain the
+ # value ``{url}``, which will be substituted with the value from
+ # ``url``.
+ Required("sig-url"): str,
+ # Path to file containing GPG public key(s) used to validate
+ # download.
+ Required("key-path"): str,
+ },
+ # The name to give to the generated artifact. Defaults to the file
+ # portion of the URL. Using a different extension converts the
+ # archive to the given type. Only conversion to .tar.zst is
+ # supported.
+ Optional("artifact-name"): str,
+ # Strip the given number of path components at the beginning of
+ # each file entry in the archive.
+ # Requires an artifact-name ending with .tar.zst.
+ Optional("strip-components"): int,
+ # Add the given prefix to each file entry in the archive.
+ # Requires an artifact-name ending with .tar.zst.
+ Optional("add-prefix"): str,
+ # IMPORTANT: when adding anything that changes the behavior of the task,
+ # it is important to update the digest data used to compute cache hits.
+ },
+)
+def create_fetch_url_task(config, name, fetch):
+ artifact_name = fetch.get("artifact-name")
+ if not artifact_name:
+ artifact_name = fetch["url"].split("/")[-1]
+
+ command = [
+ "/builds/worker/bin/fetch-content",
+ "static-url",
+ ]
+
+ # Arguments that matter to the cache digest
+ args = [
+ "--sha256",
+ fetch["sha256"],
+ "--size",
+ "%d" % fetch["size"],
+ ]
+
+ if fetch.get("strip-components"):
+ args.extend(["--strip-components", "%d" % fetch["strip-components"]])
+
+ if fetch.get("add-prefix"):
+ args.extend(["--add-prefix", fetch["add-prefix"]])
+
+ command.extend(args)
+
+ env = {}
+
+ if "gpg-signature" in fetch:
+ sig_url = fetch["gpg-signature"]["sig-url"].format(url=fetch["url"])
+ key_path = os.path.join(
+ gecko_taskgraph.GECKO, fetch["gpg-signature"]["key-path"]
+ )
+
+ with open(key_path, "r") as fh:
+ gpg_key = fh.read()
+
+ env["FETCH_GPG_KEY"] = gpg_key
+ command.extend(
+ [
+ "--gpg-sig-url",
+ sig_url,
+ "--gpg-key-env",
+ "FETCH_GPG_KEY",
+ ]
+ )
+
+ command.extend(
+ [
+ fetch["url"],
+ "/builds/worker/artifacts/%s" % artifact_name,
+ ]
+ )
+
+ return {
+ "command": command,
+ "artifact_name": artifact_name,
+ "env": env,
+ # We don't include the GPG signature in the digest because it isn't
+ # materially important for caching: GPG signatures are supplemental
+ # trust checking beyond what the shasum already provides.
+ "digest_data": args + [artifact_name],
+ }
+
+
+@fetch_builder(
+ "git",
+ schema={
+ Required("repo"): str,
+ Required(Any("revision", "branch")): str,
+ Optional("include-dot-git"): bool,
+ Optional("artifact-name"): str,
+ Optional("path-prefix"): str,
+ # ssh-key is a taskcluster secret path (e.g. project/civet/github-deploy-key)
+ # In the secret dictionary, the key should be specified as
+ # "ssh_privkey": "-----BEGIN OPENSSH PRIVATE KEY-----\nkfksnb3jc..."
+ # n.b. The OpenSSH private key file format requires a newline at the end of the file.
+ Optional("ssh-key"): str,
+ },
+)
+def create_git_fetch_task(config, name, fetch):
+ path_prefix = fetch.get("path-prefix")
+ if not path_prefix:
+ path_prefix = fetch["repo"].rstrip("/").rsplit("/", 1)[-1]
+ artifact_name = fetch.get("artifact-name")
+ if not artifact_name:
+ artifact_name = f"{path_prefix}.tar.zst"
+
+ if "revision" in fetch and "branch" in fetch:
+ raise Exception("revision and branch cannot be used in the same context")
+
+ revision_or_branch = None
+
+ if "revision" in fetch:
+ revision_or_branch = fetch["revision"]
+ if not re.match(r"[0-9a-fA-F]{40}", fetch["revision"]):
+ raise Exception(f'Revision is not a sha1 in fetch task "{name}"')
+ else:
+ # we are sure we are dealing with a branch
+ revision_or_branch = fetch["branch"]
+
+ args = [
+ "/builds/worker/bin/fetch-content",
+ "git-checkout-archive",
+ "--path-prefix",
+ path_prefix,
+ fetch["repo"],
+ revision_or_branch,
+ "/builds/worker/artifacts/%s" % artifact_name,
+ ]
+
+ ssh_key = fetch.get("ssh-key")
+ if ssh_key:
+ args.append("--ssh-key-secret")
+ args.append(ssh_key)
+
+ digest_data = [revision_or_branch, path_prefix, artifact_name]
+ if fetch.get("include-dot-git", False):
+ args.append("--include-dot-git")
+ digest_data.append(".git")
+
+ return {
+ "command": args,
+ "artifact_name": artifact_name,
+ "digest_data": digest_data,
+ "secret": ssh_key,
+ }
+
+
+@fetch_builder(
+ "chromium-fetch",
+ schema={
+ Required("script"): str,
+ # Platform type for chromium build
+ Required("platform"): str,
+ # Chromium revision to obtain
+ Optional("revision"): str,
+ # The name to give to the generated artifact.
+ Required("artifact-name"): str,
+ },
+)
+def create_chromium_fetch_task(config, name, fetch):
+ artifact_name = fetch.get("artifact-name")
+
+ workdir = "/builds/worker"
+
+ platform = fetch.get("platform")
+ revision = fetch.get("revision")
+
+ args = "--platform " + shell_quote(platform)
+ if revision:
+ args += " --revision " + shell_quote(revision)
+
+ cmd = [
+ "bash",
+ "-c",
+ "cd {} && " "/usr/bin/python3 {} {}".format(workdir, fetch["script"], args),
+ ]
+
+ return {
+ "command": cmd,
+ "artifact_name": artifact_name,
+ "digest_data": [
+ f"revision={revision}",
+ f"platform={platform}",
+ f"artifact_name={artifact_name}",
+ ],
+ }
diff --git a/taskcluster/gecko_taskgraph/transforms/final_verify.py b/taskcluster/gecko_taskgraph/transforms/final_verify.py
new file mode 100644
index 0000000000..aa8be35a0d
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/final_verify.py
@@ -0,0 +1,35 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the beetmover task into an actual task description.
+"""
+
+
+from taskgraph.transforms.base import TransformSequence
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def add_command(config, tasks):
+ for task in tasks:
+ if not task["worker"].get("env"):
+ task["worker"]["env"] = {}
+
+ final_verify_configs = []
+ for upstream in sorted(task.get("dependencies", {}).keys()):
+ if "update-verify-config" in upstream:
+ final_verify_configs.append(
+ f"<{upstream}/public/build/update-verify.cfg>",
+ )
+ task["run"] = {
+ "using": "run-task",
+ "cwd": "{checkout}",
+ "command": {
+ "artifact-reference": "tools/update-verify/release/final-verification.sh "
+ + " ".join(final_verify_configs),
+ },
+ "sparse-profile": "update-verify",
+ }
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/fxrecord.py b/taskcluster/gecko_taskgraph/transforms/fxrecord.py
new file mode 100644
index 0000000000..0d8a23bfb4
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/fxrecord.py
@@ -0,0 +1,22 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from taskgraph.transforms.base import TransformSequence
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def fxrecord(config, jobs):
+ for job in jobs:
+ dep_job = job.pop("primary-dependency", None)
+
+ if dep_job is not None:
+ job["dependencies"] = {dep_job.label: dep_job.label}
+ job["treeherder"]["platform"] = dep_job.task["extra"]["treeherder-platform"]
+ job["worker"].setdefault("env", {})["FXRECORD_TASK_ID"] = {
+ "task-reference": f"<{dep_job.label}>"
+ }
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/geckodriver_mac_notarization.py b/taskcluster/gecko_taskgraph/transforms/geckodriver_mac_notarization.py
new file mode 100644
index 0000000000..1a996c1fc4
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/geckodriver_mac_notarization.py
@@ -0,0 +1,68 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the repackage signing task into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from voluptuous import Optional
+
+from gecko_taskgraph.loader.single_dep import schema
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
+from gecko_taskgraph.util.scriptworker import add_scope_prefix
+
+repackage_signing_description_schema = schema.extend(
+ {
+ Optional("label"): str,
+ Optional("treeherder"): task_description_schema["treeherder"],
+ Optional("shipping-phase"): task_description_schema["shipping-phase"],
+ Optional("worker"): task_description_schema["worker"],
+ Optional("worker-type"): task_description_schema["worker-type"],
+ }
+)
+
+transforms = TransformSequence()
+transforms.add_validate(repackage_signing_description_schema)
+
+
+@transforms.add
+def geckodriver_mac_notarization(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+
+ attributes = copy_attributes_from_dependent_job(dep_job)
+ treeherder = job.get("treeherder", {})
+ dep_treeherder = dep_job.task.get("extra", {}).get("treeherder", {})
+ treeherder.setdefault(
+ "platform", dep_job.task.get("extra", {}).get("treeherder-platform")
+ )
+ treeherder.setdefault("tier", dep_treeherder.get("tier", 1))
+ treeherder.setdefault("kind", "build")
+
+ dependencies = {dep_job.kind: dep_job.label}
+
+ description = "Mac notarization - Geckodriver for build '{}'".format(
+ attributes.get("build_platform"),
+ )
+
+ build_platform = dep_job.attributes.get("build_platform")
+
+ scopes = [add_scope_prefix(config, "signing:cert:release-apple-notarization")]
+
+ platform = build_platform.rsplit("-", 1)[0]
+
+ task = {
+ "label": job["label"],
+ "description": description,
+ "worker-type": job["worker-type"],
+ "worker": job["worker"],
+ "scopes": scopes,
+ "dependencies": dependencies,
+ "attributes": attributes,
+ "treeherder": treeherder,
+ "run-on-projects": ["mozilla-central"],
+ "index": {"product": "geckodriver", "job-name": f"{platform}-notarized"},
+ }
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/geckodriver_signing.py b/taskcluster/gecko_taskgraph/transforms/geckodriver_signing.py
new file mode 100644
index 0000000000..05bc1319de
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/geckodriver_signing.py
@@ -0,0 +1,124 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the repackage signing task into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from voluptuous import Optional
+
+from gecko_taskgraph.loader.single_dep import schema
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
+from gecko_taskgraph.util.scriptworker import get_signing_cert_scope_per_platform
+
+repackage_signing_description_schema = schema.extend(
+ {
+ Optional("label"): str,
+ Optional("treeherder"): task_description_schema["treeherder"],
+ Optional("shipping-phase"): task_description_schema["shipping-phase"],
+ }
+)
+
+transforms = TransformSequence()
+transforms.add_validate(repackage_signing_description_schema)
+
+
+@transforms.add
+def make_signing_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+
+ attributes = copy_attributes_from_dependent_job(dep_job)
+ attributes["repackage_type"] = "repackage-signing"
+
+ treeherder = job.get("treeherder", {})
+ dep_treeherder = dep_job.task.get("extra", {}).get("treeherder", {})
+ treeherder.setdefault(
+ "symbol", "{}(gd-s)".format(dep_treeherder["groupSymbol"])
+ )
+ treeherder.setdefault(
+ "platform", dep_job.task.get("extra", {}).get("treeherder-platform")
+ )
+ treeherder.setdefault("tier", dep_treeherder.get("tier", 1))
+ treeherder.setdefault("kind", "build")
+
+ dependencies = {dep_job.kind: dep_job.label}
+ signing_dependencies = dep_job.dependencies
+ dependencies.update(
+ {k: v for k, v in signing_dependencies.items() if k != "docker-image"}
+ )
+
+ description = "Signing Geckodriver for build '{}'".format(
+ attributes.get("build_platform"),
+ )
+
+ build_platform = dep_job.attributes.get("build_platform")
+ is_shippable = dep_job.attributes.get("shippable")
+ signing_cert_scope = get_signing_cert_scope_per_platform(
+ build_platform, is_shippable, config
+ )
+
+ upstream_artifacts = _craft_upstream_artifacts(
+ dep_job, dep_job.kind, build_platform
+ )
+
+ scopes = [signing_cert_scope]
+
+ platform = build_platform.rsplit("-", 1)[0]
+
+ task = {
+ "label": job["label"],
+ "description": description,
+ "worker-type": "linux-signing",
+ "worker": {
+ "implementation": "scriptworker-signing",
+ "upstream-artifacts": upstream_artifacts,
+ },
+ "scopes": scopes,
+ "dependencies": dependencies,
+ "attributes": attributes,
+ "treeherder": treeherder,
+ "run-on-projects": ["mozilla-central"],
+ "index": {"product": "geckodriver", "job-name": platform},
+ }
+
+ if build_platform.startswith("macosx"):
+ worker_type = task["worker-type"]
+ worker_type_alias_map = {
+ "linux-depsigning": "mac-depsigning",
+ "linux-signing": "mac-signing",
+ }
+
+ assert worker_type in worker_type_alias_map, (
+ "Make sure to adjust the below worker_type_alias logic for "
+ "mac if you change the signing workerType aliases!"
+ " ({} not found in mapping)".format(worker_type)
+ )
+ worker_type = worker_type_alias_map[worker_type]
+
+ task["worker-type"] = worker_type_alias_map[task["worker-type"]]
+ task["worker"]["mac-behavior"] = "mac_geckodriver"
+
+ yield task
+
+
+def _craft_upstream_artifacts(dep_job, dependency_kind, build_platform):
+ if build_platform.startswith("win"):
+ signing_format = "autograph_authenticode_sha2"
+ elif build_platform.startswith("linux"):
+ signing_format = "autograph_gpg"
+ elif build_platform.startswith("macosx"):
+ signing_format = "mac_geckodriver"
+ else:
+ raise ValueError(f'Unsupported build platform "{build_platform}"')
+
+ return [
+ {
+ "taskId": {"task-reference": f"<{dependency_kind}>"},
+ "taskType": "build",
+ "paths": [dep_job.attributes["toolchain-artifact"]],
+ "formats": [signing_format],
+ }
+ ]
diff --git a/taskcluster/gecko_taskgraph/transforms/github_sync.py b/taskcluster/gecko_taskgraph/transforms/github_sync.py
new file mode 100644
index 0000000000..6f48f794ce
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/github_sync.py
@@ -0,0 +1,23 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from taskgraph.transforms.base import TransformSequence
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def sync_github(config, tasks):
+ """Do transforms specific to github-sync tasks."""
+ for task in tasks:
+ # Add the secret to the scopes, only in m-c.
+ # Doing this on any other tree will result in decision task failure
+ # because m-c is the only one allowed to have that scope.
+ secret = task["secret"]
+ if config.params["project"] == "mozilla-central":
+ task.setdefault("scopes", [])
+ task["scopes"].append("secrets:get:" + secret)
+ task["worker"].setdefault("env", {})["GITHUB_SECRET"] = secret
+ del task["secret"]
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/job/__init__.py b/taskcluster/gecko_taskgraph/transforms/job/__init__.py
new file mode 100644
index 0000000000..9b6924b605
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/job/__init__.py
@@ -0,0 +1,504 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Convert a job description into a task description.
+
+Jobs descriptions are similar to task descriptions, but they specify how to run
+the job at a higher level, using a "run" field that can be interpreted by
+run-using handlers in `taskcluster/gecko_taskgraph/transforms/job`.
+"""
+
+
+import json
+import logging
+
+import mozpack.path as mozpath
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.python_path import import_sibling_modules
+from taskgraph.util.schema import Schema, validate_schema
+from taskgraph.util.taskcluster import get_artifact_prefix
+from voluptuous import Any, Exclusive, Extra, Optional, Required
+
+from gecko_taskgraph.transforms.cached_tasks import order_tasks
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.copy_task import copy_task
+from gecko_taskgraph.util.workertypes import worker_type_implementation
+
+logger = logging.getLogger(__name__)
+
+# Schema for a build description
+job_description_schema = Schema(
+ {
+ # The name of the job and the job's label. At least one must be specified,
+ # and the label will be generated from the name if necessary, by prepending
+ # the kind.
+ Optional("name"): str,
+ Optional("label"): str,
+ # the following fields are passed directly through to the task description,
+ # possibly modified by the run implementation. See
+ # taskcluster/gecko_taskgraph/transforms/task.py for the schema details.
+ Required("description"): task_description_schema["description"],
+ Optional("attributes"): task_description_schema["attributes"],
+ Optional("job-from"): task_description_schema["job-from"],
+ Optional("dependencies"): task_description_schema["dependencies"],
+ Optional("if-dependencies"): task_description_schema["if-dependencies"],
+ Optional("soft-dependencies"): task_description_schema["soft-dependencies"],
+ Optional("if-dependencies"): task_description_schema["if-dependencies"],
+ Optional("requires"): task_description_schema["requires"],
+ Optional("expires-after"): task_description_schema["expires-after"],
+ Optional("expiration-policy"): task_description_schema["expiration-policy"],
+ Optional("routes"): task_description_schema["routes"],
+ Optional("scopes"): task_description_schema["scopes"],
+ Optional("tags"): task_description_schema["tags"],
+ Optional("extra"): task_description_schema["extra"],
+ Optional("treeherder"): task_description_schema["treeherder"],
+ Optional("index"): task_description_schema["index"],
+ Optional("run-on-projects"): task_description_schema["run-on-projects"],
+ Optional("shipping-phase"): task_description_schema["shipping-phase"],
+ Optional("shipping-product"): task_description_schema["shipping-product"],
+ Optional("always-target"): task_description_schema["always-target"],
+ Exclusive("optimization", "optimization"): task_description_schema[
+ "optimization"
+ ],
+ Optional("use-sccache"): task_description_schema["use-sccache"],
+ Optional("use-system-python"): bool,
+ Optional("priority"): task_description_schema["priority"],
+ # The "when" section contains descriptions of the circumstances under which
+ # this task should be included in the task graph. This will be converted
+ # into an optimization, so it cannot be specified in a job description that
+ # also gives 'optimization'.
+ Exclusive("when", "optimization"): Any(
+ None,
+ {
+ # This task only needs to be run if a file matching one of the given
+ # patterns has changed in the push. The patterns use the mozpack
+ # match function (python/mozbuild/mozpack/path.py).
+ Optional("files-changed"): [str],
+ },
+ ),
+ # A list of artifacts to install from 'fetch' tasks.
+ Optional("fetches"): {
+ str: [
+ str,
+ {
+ Required("artifact"): str,
+ Optional("dest"): str,
+ Optional("extract"): bool,
+ Optional("verify-hash"): bool,
+ },
+ ],
+ },
+ # A description of how to run this job.
+ "run": {
+ # The key to a job implementation in a peer module to this one
+ "using": str,
+ # Base work directory used to set up the task.
+ Optional("workdir"): str,
+ # Any remaining content is verified against that job implementation's
+ # own schema.
+ Extra: object,
+ },
+ Required("worker-type"): task_description_schema["worker-type"],
+ # This object will be passed through to the task description, with additions
+ # provided by the job's run-using function
+ Optional("worker"): dict,
+ }
+)
+
+transforms = TransformSequence()
+transforms.add_validate(job_description_schema)
+
+
+@transforms.add
+def rewrite_when_to_optimization(config, jobs):
+ for job in jobs:
+ when = job.pop("when", {})
+ if not when:
+ yield job
+ continue
+
+ files_changed = when.get("files-changed")
+
+ # implicitly add task config directory.
+ files_changed.append(f"{config.path}/**")
+
+ # "only when files changed" implies "skip if files have not changed"
+ job["optimization"] = {"skip-unless-changed": files_changed}
+
+ assert "when" not in job
+ yield job
+
+
+@transforms.add
+def set_implementation(config, jobs):
+ for job in jobs:
+ impl, os = worker_type_implementation(
+ config.graph_config, config.params, job["worker-type"]
+ )
+ if os:
+ job.setdefault("tags", {})["os"] = os
+ if impl:
+ job.setdefault("tags", {})["worker-implementation"] = impl
+ worker = job.setdefault("worker", {})
+ assert "implementation" not in worker
+ worker["implementation"] = impl
+ if os:
+ worker["os"] = os
+ yield job
+
+
+@transforms.add
+def set_label(config, jobs):
+ for job in jobs:
+ if "label" not in job:
+ if "name" not in job:
+ raise Exception("job has neither a name nor a label")
+ job["label"] = "{}-{}".format(config.kind, job["name"])
+ if job.get("name"):
+ del job["name"]
+ yield job
+
+
+@transforms.add
+def add_resource_monitor(config, jobs):
+ for job in jobs:
+ if job.get("attributes", {}).get("resource-monitor"):
+ worker_implementation, worker_os = worker_type_implementation(
+ config.graph_config, config.params, job["worker-type"]
+ )
+ # Normalise worker os so that linux-bitbar and similar use linux tools.
+ worker_os = worker_os.split("-")[0]
+ # We don't currently support an Arm worker, due to gopsutil's indirect
+ # dependencies (go-ole)
+ if "aarch64" in job["worker-type"]:
+ yield job
+ continue
+ elif "win7" in job["worker-type"]:
+ arch = "32"
+ else:
+ arch = "64"
+ job.setdefault("fetches", {})
+ job["fetches"].setdefault("toolchain", [])
+ job["fetches"]["toolchain"].append(f"{worker_os}{arch}-resource-monitor")
+
+ if worker_implementation == "docker-worker":
+ artifact_source = "/builds/worker/monitoring/resource-monitor.json"
+ else:
+ artifact_source = "monitoring/resource-monitor.json"
+ job["worker"].setdefault("artifacts", [])
+ job["worker"]["artifacts"].append(
+ {
+ "name": "public/monitoring/resource-monitor.json",
+ "type": "file",
+ "path": artifact_source,
+ }
+ )
+ # Set env for output file
+ job["worker"].setdefault("env", {})
+ job["worker"]["env"]["RESOURCE_MONITOR_OUTPUT"] = artifact_source
+
+ yield job
+
+
+@transforms.add
+def make_task_description(config, jobs):
+ """Given a build description, create a task description"""
+ # import plugin modules first, before iterating over jobs
+ import_sibling_modules(exceptions=("common.py",))
+
+ for job in jobs:
+ # only docker-worker uses a fixed absolute path to find directories
+ if job["worker"]["implementation"] == "docker-worker":
+ job["run"].setdefault("workdir", "/builds/worker")
+
+ taskdesc = copy_task(job)
+
+ # fill in some empty defaults to make run implementations easier
+ taskdesc.setdefault("attributes", {})
+ taskdesc.setdefault("dependencies", {})
+ taskdesc.setdefault("if-dependencies", [])
+ taskdesc.setdefault("soft-dependencies", [])
+ taskdesc.setdefault("routes", [])
+ taskdesc.setdefault("scopes", [])
+ taskdesc.setdefault("extra", {})
+
+ # give the function for job.run.using on this worker implementation a
+ # chance to set up the task description.
+ configure_taskdesc_for_run(
+ config, job, taskdesc, job["worker"]["implementation"]
+ )
+ del taskdesc["run"]
+
+ # yield only the task description, discarding the job description
+ yield taskdesc
+
+
+def get_attribute(dict, key, attributes, attribute_name):
+ """Get `attribute_name` from the given `attributes` dict, and if there
+ is a corresponding value, set `key` in `dict` to that value."""
+ value = attributes.get(attribute_name)
+ if value:
+ dict[key] = value
+
+
+@transforms.add
+def use_system_python(config, jobs):
+ for job in jobs:
+ if job.pop("use-system-python", True):
+ yield job
+ else:
+ fetches = job.setdefault("fetches", {})
+ toolchain = fetches.setdefault("toolchain", [])
+
+ moz_python_home = mozpath.join("fetches", "python")
+ if "win" in job["worker"]["os"]:
+ platform = "win64"
+ elif "linux" in job["worker"]["os"]:
+ platform = "linux64"
+ elif "macosx" in job["worker"]["os"]:
+ platform = "macosx64"
+ else:
+ raise ValueError("unexpected worker.os value {}".format(platform))
+
+ toolchain.append("{}-python".format(platform))
+
+ worker = job.setdefault("worker", {})
+ env = worker.setdefault("env", {})
+ env["MOZ_PYTHON_HOME"] = moz_python_home
+
+ yield job
+
+
+@transforms.add
+def use_fetches(config, jobs):
+ artifact_names = {}
+ extra_env = {}
+ aliases = {}
+ tasks = []
+
+ if config.kind in ("toolchain", "fetch"):
+ jobs = list(jobs)
+ tasks.extend((config.kind, j) for j in jobs)
+
+ tasks.extend(
+ (task.kind, task.__dict__)
+ for task in config.kind_dependencies_tasks.values()
+ if task.kind in ("fetch", "toolchain")
+ )
+ for (kind, task) in tasks:
+ get_attribute(
+ artifact_names, task["label"], task["attributes"], f"{kind}-artifact"
+ )
+ get_attribute(extra_env, task["label"], task["attributes"], f"{kind}-env")
+ value = task["attributes"].get(f"{kind}-alias")
+ if not value:
+ value = []
+ elif isinstance(value, str):
+ value = [value]
+ for alias in value:
+ fully_qualified = f"{kind}-{alias}"
+ label = task["label"]
+ if fully_qualified == label:
+ raise Exception(f"The alias {alias} of task {label} points to itself!")
+ aliases[fully_qualified] = label
+
+ artifact_prefixes = {}
+ for job in order_tasks(config, jobs):
+ artifact_prefixes[job["label"]] = get_artifact_prefix(job)
+
+ fetches = job.pop("fetches", None)
+ if not fetches:
+ yield job
+ continue
+
+ job_fetches = []
+ name = job.get("name") or job.get("label").replace(f"{config.kind}-", "")
+ dependencies = job.setdefault("dependencies", {})
+ worker = job.setdefault("worker", {})
+ env = worker.setdefault("env", {})
+ prefix = get_artifact_prefix(job)
+ has_sccache = False
+ for kind, artifacts in fetches.items():
+ if kind in ("fetch", "toolchain"):
+ for fetch_name in artifacts:
+ label = f"{kind}-{fetch_name}"
+ label = aliases.get(label, label)
+ if label not in artifact_names:
+ raise Exception(
+ "Missing fetch job for {kind}-{name}: {fetch}".format(
+ kind=config.kind, name=name, fetch=fetch_name
+ )
+ )
+ if label in extra_env:
+ env.update(extra_env[label])
+
+ path = artifact_names[label]
+
+ dependencies[label] = label
+ job_fetches.append(
+ {
+ "artifact": path,
+ "task": f"<{label}>",
+ "extract": True,
+ }
+ )
+
+ if kind == "toolchain" and fetch_name.endswith("-sccache"):
+ has_sccache = True
+ else:
+ if kind not in dependencies:
+ raise Exception(
+ "{name} can't fetch {kind} artifacts because "
+ "it has no {kind} dependencies!".format(name=name, kind=kind)
+ )
+ dep_label = dependencies[kind]
+ if dep_label in artifact_prefixes:
+ prefix = artifact_prefixes[dep_label]
+ else:
+ if dep_label not in config.kind_dependencies_tasks:
+ raise Exception(
+ "{name} can't fetch {kind} artifacts because "
+ "there are no tasks with label {label} in kind dependencies!".format(
+ name=name,
+ kind=kind,
+ label=dependencies[kind],
+ )
+ )
+
+ prefix = get_artifact_prefix(
+ config.kind_dependencies_tasks[dep_label]
+ )
+
+ for artifact in artifacts:
+ if isinstance(artifact, str):
+ path = artifact
+ dest = None
+ extract = True
+ verify_hash = False
+ else:
+ path = artifact["artifact"]
+ dest = artifact.get("dest")
+ extract = artifact.get("extract", True)
+ verify_hash = artifact.get("verify-hash", False)
+
+ fetch = {
+ "artifact": f"{prefix}/{path}"
+ if not path.startswith("/")
+ else path[1:],
+ "task": f"<{kind}>",
+ "extract": extract,
+ }
+ if dest is not None:
+ fetch["dest"] = dest
+ if verify_hash:
+ fetch["verify-hash"] = verify_hash
+ job_fetches.append(fetch)
+
+ if job.get("use-sccache") and not has_sccache:
+ raise Exception("Must provide an sccache toolchain if using sccache.")
+
+ job_artifact_prefixes = {
+ mozpath.dirname(fetch["artifact"])
+ for fetch in job_fetches
+ if not fetch["artifact"].startswith("public/")
+ }
+ if job_artifact_prefixes:
+ # Use taskcluster-proxy and request appropriate scope. For example, add
+ # 'scopes: [queue:get-artifact:path/to/*]' for 'path/to/artifact.tar.xz'.
+ worker["taskcluster-proxy"] = True
+ for prefix in sorted(job_artifact_prefixes):
+ scope = f"queue:get-artifact:{prefix}/*"
+ if scope not in job.setdefault("scopes", []):
+ job["scopes"].append(scope)
+
+ artifacts = {}
+ for f in job_fetches:
+ _, __, artifact = f["artifact"].rpartition("/")
+ if "dest" in f:
+ artifact = f"{f['dest']}/{artifact}"
+ task = f["task"][1:-1]
+ if artifact in artifacts:
+ raise Exception(
+ f"Task {name} depends on {artifacts[artifact]} and {task} "
+ f"that both provide {artifact}"
+ )
+ artifacts[artifact] = task
+
+ env["MOZ_FETCHES"] = {
+ "task-reference": json.dumps(
+ sorted(job_fetches, key=lambda x: sorted(x.items())), sort_keys=True
+ )
+ }
+ # The path is normalized to an absolute path in run-task
+ env.setdefault("MOZ_FETCHES_DIR", "fetches")
+
+ yield job
+
+
+# A registry of all functions decorated with run_job_using
+registry = {}
+
+
+def run_job_using(worker_implementation, run_using, schema=None, defaults={}):
+ """Register the decorated function as able to set up a task description for
+ jobs with the given worker implementation and `run.using` property. If
+ `schema` is given, the job's run field will be verified to match it.
+
+ The decorated function should have the signature `using_foo(config, job, taskdesc)`
+ and should modify the task description in-place. The skeleton of
+ the task description is already set up, but without a payload."""
+
+ def wrap(func):
+ for_run_using = registry.setdefault(run_using, {})
+ if worker_implementation in for_run_using:
+ raise Exception(
+ "run_job_using({!r}, {!r}) already exists: {!r}".format(
+ run_using, worker_implementation, for_run_using[run_using]
+ )
+ )
+ for_run_using[worker_implementation] = (func, schema, defaults)
+ return func
+
+ return wrap
+
+
+@run_job_using(
+ "always-optimized", "always-optimized", Schema({"using": "always-optimized"})
+)
+def always_optimized(config, job, taskdesc):
+ pass
+
+
+def configure_taskdesc_for_run(config, job, taskdesc, worker_implementation):
+ """
+ Run the appropriate function for this job against the given task
+ description.
+
+ This will raise an appropriate error if no function exists, or if the job's
+ run is not valid according to the schema.
+ """
+ run_using = job["run"]["using"]
+ if run_using not in registry:
+ raise Exception(f"no functions for run.using {run_using!r}")
+
+ if worker_implementation not in registry[run_using]:
+ raise Exception(
+ "no functions for run.using {!r} on {!r}".format(
+ run_using, worker_implementation
+ )
+ )
+
+ func, schema, defaults = registry[run_using][worker_implementation]
+ for k, v in defaults.items():
+ job["run"].setdefault(k, v)
+
+ if schema:
+ validate_schema(
+ schema,
+ job["run"],
+ "In job.run using {!r}/{!r} for job {!r}:".format(
+ job["run"]["using"], worker_implementation, job["label"]
+ ),
+ )
+ func(config, job, taskdesc)
diff --git a/taskcluster/gecko_taskgraph/transforms/job/common.py b/taskcluster/gecko_taskgraph/transforms/job/common.py
new file mode 100644
index 0000000000..0c6289a6db
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/job/common.py
@@ -0,0 +1,269 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Common support for various job types. These functions are all named after the
+worker implementation they operate on, and take the same three parameters, for
+consistency.
+"""
+
+
+from taskgraph.util.keyed_by import evaluate_keyed_by
+from taskgraph.util.taskcluster import get_artifact_prefix
+
+SECRET_SCOPE = "secrets:get:project/releng/{trust_domain}/{kind}/level-{level}/{secret}"
+
+
+def add_cache(job, taskdesc, name, mount_point, skip_untrusted=False):
+ """Adds a cache based on the worker's implementation.
+
+ Args:
+ job (dict): Task's job description.
+ taskdesc (dict): Target task description to modify.
+ name (str): Name of the cache.
+ mount_point (path): Path on the host to mount the cache.
+ skip_untrusted (bool): Whether cache is used in untrusted environments
+ (default: False). Only applies to docker-worker.
+ """
+ if not job["run"].get("use-caches", True):
+ return
+
+ worker = job["worker"]
+
+ if worker["implementation"] == "docker-worker":
+ taskdesc["worker"].setdefault("caches", []).append(
+ {
+ "type": "persistent",
+ "name": name,
+ "mount-point": mount_point,
+ "skip-untrusted": skip_untrusted,
+ }
+ )
+
+ elif worker["implementation"] == "generic-worker":
+ taskdesc["worker"].setdefault("mounts", []).append(
+ {
+ "cache-name": name,
+ "directory": mount_point,
+ }
+ )
+
+ else:
+ # Caches not implemented
+ pass
+
+
+def add_artifacts(config, job, taskdesc, path):
+ taskdesc["worker"].setdefault("artifacts", []).append(
+ {
+ "name": get_artifact_prefix(taskdesc),
+ "path": path,
+ "type": "directory",
+ }
+ )
+
+
+def docker_worker_add_artifacts(config, job, taskdesc):
+ """Adds an artifact directory to the task"""
+ path = "{workdir}/artifacts/".format(**job["run"])
+ taskdesc["worker"].setdefault("env", {})["UPLOAD_DIR"] = path
+ add_artifacts(config, job, taskdesc, path)
+
+
+def generic_worker_add_artifacts(config, job, taskdesc):
+ """Adds an artifact directory to the task"""
+ # The path is the location on disk; it doesn't necessarily
+ # mean the artifacts will be public or private; that is set via the name
+ # attribute in add_artifacts.
+ path = get_artifact_prefix(taskdesc)
+ taskdesc["worker"].setdefault("env", {})["UPLOAD_DIR"] = path
+ add_artifacts(config, job, taskdesc, path=path)
+
+
+def support_vcs_checkout(config, job, taskdesc, sparse=False):
+ """Update a job/task with parameters to enable a VCS checkout.
+
+ This can only be used with ``run-task`` tasks, as the cache name is
+ reserved for ``run-task`` tasks.
+ """
+ worker = job["worker"]
+ is_mac = worker["os"] == "macosx"
+ is_win = worker["os"] == "windows"
+ is_linux = worker["os"] == "linux" or "linux-bitbar"
+ is_docker = worker["implementation"] == "docker-worker"
+ assert is_mac or is_win or is_linux
+
+ if is_win:
+ checkoutdir = "./build"
+ geckodir = f"{checkoutdir}/src"
+ hgstore = "y:/hg-shared"
+ elif is_docker:
+ checkoutdir = "{workdir}/checkouts".format(**job["run"])
+ geckodir = f"{checkoutdir}/gecko"
+ hgstore = f"{checkoutdir}/hg-store"
+ else:
+ checkoutdir = "./checkouts"
+ geckodir = f"{checkoutdir}/gecko"
+ hgstore = f"{checkoutdir}/hg-shared"
+
+ cache_name = "checkouts"
+
+ # Sparse checkouts need their own cache because they can interfere
+ # with clients that aren't sparse aware.
+ if sparse:
+ cache_name += "-sparse"
+
+ # Workers using Mercurial >= 5.8 will enable revlog-compression-zstd, which
+ # workers using older versions can't understand, so they can't share cache.
+ # At the moment, only docker workers use the newer version.
+ if is_docker:
+ cache_name += "-hg58"
+
+ add_cache(job, taskdesc, cache_name, checkoutdir)
+
+ taskdesc["worker"].setdefault("env", {}).update(
+ {
+ "GECKO_BASE_REPOSITORY": config.params["base_repository"],
+ "GECKO_HEAD_REPOSITORY": config.params["head_repository"],
+ "GECKO_HEAD_REV": config.params["head_rev"],
+ "HG_STORE_PATH": hgstore,
+ }
+ )
+ taskdesc["worker"]["env"].setdefault("GECKO_PATH", geckodir)
+
+ if "comm_base_repository" in config.params:
+ taskdesc["worker"]["env"].update(
+ {
+ "COMM_BASE_REPOSITORY": config.params["comm_base_repository"],
+ "COMM_HEAD_REPOSITORY": config.params["comm_head_repository"],
+ "COMM_HEAD_REV": config.params["comm_head_rev"],
+ }
+ )
+ elif job["run"].get("comm-checkout", False):
+ raise Exception(
+ "Can't checkout from comm-* repository if not given a repository."
+ )
+
+ # Give task access to hgfingerprint secret so it can pin the certificate
+ # for hg.mozilla.org.
+ taskdesc["scopes"].append("secrets:get:project/taskcluster/gecko/hgfingerprint")
+ taskdesc["scopes"].append("secrets:get:project/taskcluster/gecko/hgmointernal")
+
+ # only some worker platforms have taskcluster-proxy enabled
+ if job["worker"]["implementation"] in ("docker-worker",):
+ taskdesc["worker"]["taskcluster-proxy"] = True
+
+
+def generic_worker_hg_commands(
+ base_repo, head_repo, head_rev, path, sparse_profile=None
+):
+ """Obtain commands needed to obtain a Mercurial checkout on generic-worker.
+
+ Returns two command strings. One performs the checkout. Another logs.
+ """
+ args = [
+ r'"c:\Program Files\Mercurial\hg.exe"',
+ "robustcheckout",
+ "--sharebase",
+ r"y:\hg-shared",
+ "--purge",
+ "--upstream",
+ base_repo,
+ "--revision",
+ head_rev,
+ ]
+
+ if sparse_profile:
+ args.extend(["--config", "extensions.sparse="])
+ args.extend(["--sparseprofile", sparse_profile])
+
+ args.extend(
+ [
+ head_repo,
+ path,
+ ]
+ )
+
+ logging_args = [
+ b":: TinderboxPrint:<a href={source_repo}/rev/{revision} "
+ b"title='Built from {repo_name} revision {revision}'>{revision}</a>"
+ b"\n".format(
+ revision=head_rev, source_repo=head_repo, repo_name=head_repo.split("/")[-1]
+ ),
+ ]
+
+ return [" ".join(args), " ".join(logging_args)]
+
+
+def setup_secrets(config, job, taskdesc):
+ """Set up access to secrets via taskcluster-proxy. The value of
+ run['secrets'] should be a boolean or a list of secret names that
+ can be accessed."""
+ if not job["run"].get("secrets"):
+ return
+
+ taskdesc["worker"]["taskcluster-proxy"] = True
+ secrets = job["run"]["secrets"]
+ if secrets is True:
+ secrets = ["*"]
+ for secret in secrets:
+ taskdesc["scopes"].append(
+ SECRET_SCOPE.format(
+ trust_domain=config.graph_config["trust-domain"],
+ kind=job["treeherder"]["kind"],
+ level=config.params["level"],
+ secret=secret,
+ )
+ )
+
+
+def add_tooltool(config, job, taskdesc, internal=False):
+ """Give the task access to tooltool.
+
+ Enables the tooltool cache. Adds releng proxy. Configures scopes.
+
+ By default, only public tooltool access will be granted. Access to internal
+ tooltool can be enabled via ``internal=True``.
+
+ This can only be used with ``run-task`` tasks, as the cache name is
+ reserved for use with ``run-task``.
+ """
+
+ if job["worker"]["implementation"] in ("docker-worker",):
+ add_cache(
+ job,
+ taskdesc,
+ "tooltool-cache",
+ "{workdir}/tooltool-cache".format(**job["run"]),
+ )
+
+ taskdesc["worker"].setdefault("env", {}).update(
+ {
+ "TOOLTOOL_CACHE": "{workdir}/tooltool-cache".format(**job["run"]),
+ }
+ )
+ elif not internal:
+ return
+
+ taskdesc["worker"]["taskcluster-proxy"] = True
+ taskdesc["scopes"].extend(
+ [
+ "project:releng:services/tooltool/api/download/public",
+ ]
+ )
+
+ if internal:
+ taskdesc["scopes"].extend(
+ [
+ "project:releng:services/tooltool/api/download/internal",
+ ]
+ )
+
+
+def get_expiration(config, policy="default"):
+ expires = evaluate_keyed_by(
+ config.graph_config["expiration-policy"],
+ "artifact expiration",
+ {"project": config.params["project"]},
+ )[policy]
+ return expires
diff --git a/taskcluster/gecko_taskgraph/transforms/job/distro_package.py b/taskcluster/gecko_taskgraph/transforms/job/distro_package.py
new file mode 100644
index 0000000000..44236b1abc
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/job/distro_package.py
@@ -0,0 +1,238 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Support for running spidermonkey jobs via dedicated scripts
+"""
+
+
+import os
+import re
+
+import taskgraph
+from taskgraph.util.schema import Schema
+from taskgraph.util.taskcluster import get_root_url
+from voluptuous import Any, Optional, Required
+
+from gecko_taskgraph import GECKO
+from gecko_taskgraph.transforms.job import run_job_using
+from gecko_taskgraph.transforms.job.common import add_artifacts
+from gecko_taskgraph.util.hash import hash_path
+
+DSC_PACKAGE_RE = re.compile(".*(?=_)")
+SOURCE_PACKAGE_RE = re.compile(r".*(?=[-_]\d)")
+
+source_definition = {
+ Required("url"): str,
+ Required("sha256"): str,
+}
+
+common_schema = Schema(
+ {
+ # URL/SHA256 of a source file to build, which can either be a source
+ # control (.dsc), or a tarball.
+ Required(Any("dsc", "tarball")): source_definition,
+ # Package name. Normally derived from the source control or tarball file
+ # name. Use in case the name doesn't match DSC_PACKAGE_RE or
+ # SOURCE_PACKAGE_RE.
+ Optional("name"): str,
+ # Patch to apply to the extracted source.
+ Optional("patch"): str,
+ # Command to run before dpkg-buildpackage.
+ Optional("pre-build-command"): str,
+ # Architecture to build the package for.
+ Optional("arch"): str,
+ # List of package tasks to get build dependencies from.
+ Optional("packages"): [str],
+ # What resolver to use to install build dependencies. The default
+ # (apt-get) is good in most cases, but in subtle cases involving
+ # a *-backports archive, its solver might not be able to find a
+ # solution that satisfies the build dependencies.
+ Optional("resolver"): Any("apt-get", "aptitude"),
+ # Base work directory used to set up the task.
+ Required("workdir"): str,
+ }
+)
+
+debian_schema = common_schema.extend(
+ {
+ Required("using"): "debian-package",
+ # Debian distribution
+ Required("dist"): str,
+ }
+)
+
+ubuntu_schema = common_schema.extend(
+ {
+ Required("using"): "ubuntu-package",
+ # Ubuntu distribution
+ Required("dist"): str,
+ }
+)
+
+
+def common_package(config, job, taskdesc, distro, version):
+ run = job["run"]
+
+ name = taskdesc["label"].replace(f"{config.kind}-", "", 1)
+
+ arch = run.get("arch", "amd64")
+
+ worker = taskdesc["worker"]
+ worker.setdefault("artifacts", [])
+
+ image = "%s%d" % (distro, version)
+ if arch != "amd64":
+ image += "-" + arch
+ image += "-packages"
+ worker["docker-image"] = {"in-tree": image}
+
+ add_artifacts(config, job, taskdesc, path="/tmp/artifacts")
+
+ env = worker.setdefault("env", {})
+ env["DEBFULLNAME"] = "Mozilla build team"
+ env["DEBEMAIL"] = "dev-builds@lists.mozilla.org"
+
+ if "dsc" in run:
+ src = run["dsc"]
+ unpack = "dpkg-source -x {src_file} {package}"
+ package_re = DSC_PACKAGE_RE
+ elif "tarball" in run:
+ src = run["tarball"]
+ unpack = (
+ "mkdir {package} && "
+ "tar -C {package} -axf {src_file} --strip-components=1"
+ )
+ package_re = SOURCE_PACKAGE_RE
+ else:
+ raise RuntimeError("Unreachable")
+ src_url = src["url"]
+ src_file = os.path.basename(src_url)
+ src_sha256 = src["sha256"]
+ package = run.get("name")
+ if not package:
+ package = package_re.match(src_file).group(0)
+ unpack = unpack.format(src_file=src_file, package=package)
+
+ resolver = run.get("resolver", "apt-get")
+ if resolver == "apt-get":
+ resolver = "apt-get -yyq --no-install-recommends"
+ elif resolver == "aptitude":
+ resolver = (
+ "aptitude -y --without-recommends -o "
+ "Aptitude::ProblemResolver::Hints::KeepBuildDeps="
+ '"reject {}-build-deps :UNINST"'
+ ).format(package)
+ else:
+ raise RuntimeError("Unreachable")
+
+ adjust = ""
+ if "patch" in run:
+ # We don't use robustcheckout or run-task to get a checkout. So for
+ # this one file we'd need from a checkout, download it.
+ env["PATCH_URL"] = config.params.file_url(
+ "build/debian-packages/{patch}".format(patch=run["patch"]),
+ )
+ adjust += "curl -sL $PATCH_URL | patch -p1 && "
+ if "pre-build-command" in run:
+ adjust += run["pre-build-command"] + " && "
+ if "tarball" in run:
+ adjust += "mv ../{src_file} ../{package}_{ver}.orig.tar.gz && ".format(
+ src_file=src_file,
+ package=package,
+ ver="$(dpkg-parsechangelog | awk '$1==\"Version:\"{print $2}' | cut -f 1 -d -)",
+ )
+ if "patch" not in run and "pre-build-command" not in run:
+ adjust += (
+ 'debchange -l ".{prefix}moz" --distribution "{dist}"'
+ ' "Mozilla backport for {dist}." < /dev/null && '
+ ).format(
+ prefix=name.split("-", 1)[0],
+ dist=run["dist"],
+ )
+
+ worker["command"] = [
+ "sh",
+ "-x",
+ "-c",
+ # Add sources for packages coming from other package tasks.
+ "/usr/local/sbin/setup_packages.sh {root_url} $PACKAGES && "
+ "apt-get update && "
+ # Upgrade packages that might have new versions in package tasks.
+ "apt-get dist-upgrade && " "cd /tmp && "
+ # Get, validate and extract the package source.
+ "(dget -d -u {src_url} || exit 100) && "
+ 'echo "{src_sha256} {src_file}" | sha256sum -c && '
+ "{unpack} && "
+ "cd {package} && "
+ # Optionally apply patch and/or pre-build command.
+ "{adjust}"
+ # Install the necessary build dependencies.
+ "(cd ..; mk-build-deps -i -r {package}/debian/control -t '{resolver}' || exit 100) && "
+ # Build the package
+ 'DEB_BUILD_OPTIONS="parallel=$(nproc) nocheck" dpkg-buildpackage -sa && '
+ # Copy the artifacts
+ "mkdir -p {artifacts}/apt && "
+ "dcmd cp ../{package}_*.changes {artifacts}/apt/ && "
+ "cd {artifacts} && "
+ # Make the artifacts directory usable as an APT repository.
+ "apt-ftparchive sources apt | gzip -c9 > apt/Sources.gz && "
+ "apt-ftparchive packages apt | gzip -c9 > apt/Packages.gz".format(
+ root_url=get_root_url(False),
+ package=package,
+ src_url=src_url,
+ src_file=src_file,
+ src_sha256=src_sha256,
+ unpack=unpack,
+ adjust=adjust,
+ artifacts="/tmp/artifacts",
+ resolver=resolver,
+ ),
+ ]
+
+ if run.get("packages"):
+ env = worker.setdefault("env", {})
+ env["PACKAGES"] = {
+ "task-reference": " ".join(f"<{p}>" for p in run["packages"])
+ }
+ deps = taskdesc.setdefault("dependencies", {})
+ for p in run["packages"]:
+ deps[p] = f"packages-{p}"
+
+ # Use the command generated above as the base for the index hash.
+ # We rely on it not varying depending on the head_repository or head_rev.
+ digest_data = list(worker["command"])
+ if "patch" in run:
+ digest_data.append(
+ hash_path(os.path.join(GECKO, "build", "debian-packages", run["patch"]))
+ )
+
+ if not taskgraph.fast:
+ taskdesc["cache"] = {
+ "type": "packages.v1",
+ "name": name,
+ "digest-data": digest_data,
+ }
+
+
+@run_job_using("docker-worker", "debian-package", schema=debian_schema)
+def docker_worker_debian_package(config, job, taskdesc):
+ run = job["run"]
+ version = {
+ "wheezy": 7,
+ "jessie": 8,
+ "stretch": 9,
+ "buster": 10,
+ "bullseye": 11,
+ }[run["dist"]]
+ common_package(config, job, taskdesc, "debian", version)
+
+
+@run_job_using("docker-worker", "ubuntu-package", schema=ubuntu_schema)
+def docker_worker_ubuntu_package(config, job, taskdesc):
+ run = job["run"]
+ version = {
+ "bionic": 1804,
+ "focal": 2004,
+ }[run["dist"]]
+ common_package(config, job, taskdesc, "ubuntu", version)
diff --git a/taskcluster/gecko_taskgraph/transforms/job/hazard.py b/taskcluster/gecko_taskgraph/transforms/job/hazard.py
new file mode 100644
index 0000000000..af0e8616e0
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/job/hazard.py
@@ -0,0 +1,66 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Support for running hazard jobs via dedicated scripts
+"""
+
+
+from taskgraph.util.schema import Schema
+from voluptuous import Any, Optional, Required
+
+from gecko_taskgraph.transforms.job import configure_taskdesc_for_run, run_job_using
+from gecko_taskgraph.transforms.job.common import (
+ add_tooltool,
+ docker_worker_add_artifacts,
+ setup_secrets,
+)
+
+haz_run_schema = Schema(
+ {
+ Required("using"): "hazard",
+ # The command to run within the task image (passed through to the worker)
+ Required("command"): str,
+ # The mozconfig to use; default in the script is used if omitted
+ Optional("mozconfig"): str,
+ # The set of secret names to which the task has access; these are prefixed
+ # with `project/releng/gecko/{treeherder.kind}/level-{level}/`. Setting
+ # this will enable any worker features required and set the task's scopes
+ # appropriately. `true` here means ['*'], all secrets. Not supported on
+ # Windows
+ Optional("secrets"): Any(bool, [str]),
+ # Base work directory used to set up the task.
+ Optional("workdir"): str,
+ }
+)
+
+
+@run_job_using("docker-worker", "hazard", schema=haz_run_schema)
+def docker_worker_hazard(config, job, taskdesc):
+ run = job["run"]
+
+ worker = taskdesc["worker"] = job["worker"]
+ worker.setdefault("artifacts", [])
+
+ docker_worker_add_artifacts(config, job, taskdesc)
+ worker.setdefault("required-volumes", []).append(
+ "{workdir}/workspace".format(**run)
+ )
+ add_tooltool(config, job, taskdesc)
+ setup_secrets(config, job, taskdesc)
+
+ env = worker["env"]
+ env.update(
+ {
+ "MOZ_BUILD_DATE": config.params["moz_build_date"],
+ "MOZ_SCM_LEVEL": config.params["level"],
+ }
+ )
+
+ # script parameters
+ if run.get("mozconfig"):
+ env["MOZCONFIG"] = run.pop("mozconfig")
+
+ run["using"] = "run-task"
+ run["cwd"] = run["workdir"]
+ configure_taskdesc_for_run(config, job, taskdesc, worker["implementation"])
diff --git a/taskcluster/gecko_taskgraph/transforms/job/mach.py b/taskcluster/gecko_taskgraph/transforms/job/mach.py
new file mode 100644
index 0000000000..a418b44794
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/job/mach.py
@@ -0,0 +1,83 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Support for running mach tasks (via run-task)
+"""
+
+from taskgraph.util.schema import Schema, taskref_or_string
+from voluptuous import Any, Optional, Required
+
+from gecko_taskgraph.transforms.job import configure_taskdesc_for_run, run_job_using
+
+mach_schema = Schema(
+ {
+ Required("using"): "mach",
+ # The mach command (omitting `./mach`) to run
+ Required("mach"): taskref_or_string,
+ # The version of Python to run with. Either an absolute path to the binary
+ # on the worker, a version identifier (e.g python2.7 or 3.8). There is no
+ # validation performed to ensure the specified binaries actually exist.
+ Optional("python-version"): Any(str, int, float),
+ # The sparse checkout profile to use. Value is the filename relative to the
+ # directory where sparse profiles are defined (build/sparse-profiles/).
+ Optional("sparse-profile"): Any(str, None),
+ # if true, perform a checkout of a comm-central based branch inside the
+ # gecko checkout
+ Required("comm-checkout"): bool,
+ # Base work directory used to set up the task.
+ Optional("workdir"): str,
+ # Context to substitute into the command using format string
+ # substitution (e.g {value}). This is useful if certain aspects of the
+ # command need to be generated in transforms.
+ Optional("command-context"): dict,
+ }
+)
+
+
+defaults = {
+ "comm-checkout": False,
+}
+
+
+@run_job_using("docker-worker", "mach", schema=mach_schema, defaults=defaults)
+@run_job_using("generic-worker", "mach", schema=mach_schema, defaults=defaults)
+def configure_mach(config, job, taskdesc):
+ run = job["run"]
+ worker = job["worker"]
+
+ additional_prefix = []
+ if worker["os"] == "macosx":
+ additional_prefix = ["LC_ALL=en_US.UTF-8", "LANG=en_US.UTF-8"]
+
+ python = run.get("python-version")
+ if python:
+ del run["python-version"]
+
+ if worker["os"] == "macosx" and python == 3:
+ python = "/usr/local/bin/python3"
+
+ python = str(python)
+ try:
+ float(python)
+ python = "python" + python
+ except ValueError:
+ pass
+
+ additional_prefix.append(python)
+
+ command_prefix = " ".join(additional_prefix + ["./mach "])
+
+ mach = run["mach"]
+ if isinstance(mach, dict):
+ ref, pattern = next(iter(mach.items()))
+ command = {ref: command_prefix + pattern}
+ else:
+ command = command_prefix + mach
+
+ # defer to the run_task implementation
+ run["command"] = command
+ run["cwd"] = "{checkout}"
+ run["using"] = "run-task"
+ del run["mach"]
+ configure_taskdesc_for_run(config, job, taskdesc, job["worker"]["implementation"])
diff --git a/taskcluster/gecko_taskgraph/transforms/job/mozharness.py b/taskcluster/gecko_taskgraph/transforms/job/mozharness.py
new file mode 100644
index 0000000000..3dbcc6e015
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/job/mozharness.py
@@ -0,0 +1,366 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+
+Support for running jobs via mozharness. Ideally, most stuff gets run this
+way, and certainly anything using mozharness should use this approach.
+
+"""
+
+import json
+from textwrap import dedent
+
+from mozpack import path as mozpath
+from taskgraph.util.schema import Schema
+from voluptuous import Any, Optional, Required
+from voluptuous.validators import Match
+
+from gecko_taskgraph.transforms.job import configure_taskdesc_for_run, run_job_using
+from gecko_taskgraph.transforms.job.common import (
+ docker_worker_add_artifacts,
+ generic_worker_add_artifacts,
+ get_expiration,
+ setup_secrets,
+)
+from gecko_taskgraph.transforms.task import get_branch_repo, get_branch_rev
+from gecko_taskgraph.util.attributes import is_try
+
+mozharness_run_schema = Schema(
+ {
+ Required("using"): "mozharness",
+ # the mozharness script used to run this task, relative to the testing/
+ # directory and using forward slashes even on Windows
+ Required("script"): str,
+ # Additional paths to look for mozharness configs in. These should be
+ # relative to the base of the source checkout
+ Optional("config-paths"): [str],
+ # the config files required for the task, relative to
+ # testing/mozharness/configs or one of the paths specified in
+ # `config-paths` and using forward slashes even on Windows
+ Required("config"): [str],
+ # any additional actions to pass to the mozharness command
+ Optional("actions"): [
+ Match("^[a-z0-9-]+$", "actions must be `-` seperated alphanumeric strings")
+ ],
+ # any additional options (without leading --) to be passed to mozharness
+ Optional("options"): [
+ Match(
+ "^[a-z0-9-]+(=[^ ]+)?$",
+ "options must be `-` seperated alphanumeric strings (with optional argument)",
+ )
+ ],
+ # --custom-build-variant-cfg value
+ Optional("custom-build-variant-cfg"): str,
+ # Extra configuration options to pass to mozharness.
+ Optional("extra-config"): dict,
+ # If not false, tooltool downloads will be enabled via relengAPIProxy
+ # for either just public files, or all files. Not supported on Windows
+ Required("tooltool-downloads"): Any(
+ False,
+ "public",
+ "internal",
+ ),
+ # The set of secret names to which the task has access; these are prefixed
+ # with `project/releng/gecko/{treeherder.kind}/level-{level}/`. Setting
+ # this will enable any worker features required and set the task's scopes
+ # appropriately. `true` here means ['*'], all secrets. Not supported on
+ # Windows
+ Required("secrets"): Any(bool, [str]),
+ # If true, taskcluster proxy will be enabled; note that it may also be enabled
+ # automatically e.g., for secrets support. Not supported on Windows.
+ Required("taskcluster-proxy"): bool,
+ # If false, indicate that builds should skip producing artifacts. Not
+ # supported on Windows.
+ Required("keep-artifacts"): bool,
+ # If specified, use the in-tree job script specified.
+ Optional("job-script"): str,
+ Required("requires-signed-builds"): bool,
+ # Whether or not to use caches.
+ Optional("use-caches"): bool,
+ # If false, don't set MOZ_SIMPLE_PACKAGE_NAME
+ # Only disableable on windows
+ Required("use-simple-package"): bool,
+ # If false don't pass --branch mozharness script
+ # Only disableable on windows
+ Required("use-magic-mh-args"): bool,
+ # if true, perform a checkout of a comm-central based branch inside the
+ # gecko checkout
+ Required("comm-checkout"): bool,
+ # Base work directory used to set up the task.
+ Optional("workdir"): str,
+ Optional("run-as-root"): bool,
+ }
+)
+
+
+mozharness_defaults = {
+ "tooltool-downloads": False,
+ "secrets": False,
+ "taskcluster-proxy": False,
+ "keep-artifacts": True,
+ "requires-signed-builds": False,
+ "use-simple-package": True,
+ "use-magic-mh-args": True,
+ "comm-checkout": False,
+ "run-as-root": False,
+}
+
+
+@run_job_using(
+ "docker-worker",
+ "mozharness",
+ schema=mozharness_run_schema,
+ defaults=mozharness_defaults,
+)
+def mozharness_on_docker_worker_setup(config, job, taskdesc):
+ run = job["run"]
+
+ worker = taskdesc["worker"] = job["worker"]
+
+ if not run.pop("use-simple-package", None):
+ raise NotImplementedError(
+ "Simple packaging cannot be disabled via"
+ "'use-simple-package' on docker-workers"
+ )
+ if not run.pop("use-magic-mh-args", None):
+ raise NotImplementedError(
+ "Cannot disabled mh magic arg passing via"
+ "'use-magic-mh-args' on docker-workers"
+ )
+
+ # Running via mozharness assumes an image that contains build.sh:
+ # by default, debian11-amd64-build, but it could be another image (like
+ # android-build).
+ worker.setdefault("docker-image", {"in-tree": "debian11-amd64-build"})
+
+ worker.setdefault("artifacts", []).append(
+ {
+ "name": "public/logs",
+ "path": "{workdir}/logs/".format(**run),
+ "type": "directory",
+ "expires-after": get_expiration(config, "medium"),
+ }
+ )
+ worker["taskcluster-proxy"] = run.pop("taskcluster-proxy", None)
+ docker_worker_add_artifacts(config, job, taskdesc)
+
+ env = worker.setdefault("env", {})
+ env.update(
+ {
+ "WORKSPACE": "{workdir}/workspace".format(**run),
+ "MOZHARNESS_CONFIG": " ".join(run.pop("config")),
+ "MOZHARNESS_SCRIPT": run.pop("script"),
+ "MH_BRANCH": config.params["project"],
+ "MOZ_SOURCE_CHANGESET": get_branch_rev(config),
+ "MOZ_SOURCE_REPO": get_branch_repo(config),
+ "MH_BUILD_POOL": "taskcluster",
+ "MOZ_BUILD_DATE": config.params["moz_build_date"],
+ "MOZ_SCM_LEVEL": config.params["level"],
+ "PYTHONUNBUFFERED": "1",
+ }
+ )
+
+ worker.setdefault("required-volumes", []).append(env["WORKSPACE"])
+
+ if "actions" in run:
+ env["MOZHARNESS_ACTIONS"] = " ".join(run.pop("actions"))
+
+ if "options" in run:
+ env["MOZHARNESS_OPTIONS"] = " ".join(run.pop("options"))
+
+ if "config-paths" in run:
+ env["MOZHARNESS_CONFIG_PATHS"] = " ".join(run.pop("config-paths"))
+
+ if "custom-build-variant-cfg" in run:
+ env["MH_CUSTOM_BUILD_VARIANT_CFG"] = run.pop("custom-build-variant-cfg")
+
+ extra_config = run.pop("extra-config", {})
+ extra_config["objdir"] = "obj-build"
+ env["EXTRA_MOZHARNESS_CONFIG"] = json.dumps(extra_config, sort_keys=True)
+
+ if "job-script" in run:
+ env["JOB_SCRIPT"] = run["job-script"]
+
+ if is_try(config.params):
+ env["TRY_COMMIT_MSG"] = config.params["message"]
+
+ # if we're not keeping artifacts, set some env variables to empty values
+ # that will cause the build process to skip copying the results to the
+ # artifacts directory. This will have no effect for operations that are
+ # not builds.
+ if not run.pop("keep-artifacts"):
+ env["DIST_TARGET_UPLOADS"] = ""
+ env["DIST_UPLOADS"] = ""
+
+ # Retry if mozharness returns TBPL_RETRY
+ worker["retry-exit-status"] = [4]
+
+ setup_secrets(config, job, taskdesc)
+
+ run["using"] = "run-task"
+ run["command"] = mozpath.join(
+ "${GECKO_PATH}",
+ run.pop("job-script", "taskcluster/scripts/builder/build-linux.sh"),
+ )
+ run.pop("secrets")
+ run.pop("requires-signed-builds")
+
+ configure_taskdesc_for_run(config, job, taskdesc, worker["implementation"])
+
+
+@run_job_using(
+ "generic-worker",
+ "mozharness",
+ schema=mozharness_run_schema,
+ defaults=mozharness_defaults,
+)
+def mozharness_on_generic_worker(config, job, taskdesc):
+ assert job["worker"]["os"] in (
+ "windows",
+ "macosx",
+ ), "only supports windows and macOS right now: {}".format(job["label"])
+
+ run = job["run"]
+
+ # fail if invalid run options are included
+ invalid = []
+ if not run.pop("keep-artifacts", True):
+ invalid.append("keep-artifacts")
+ if invalid:
+ raise Exception(
+ "Jobs run using mozharness on Windows do not support properties "
+ + ", ".join(invalid)
+ )
+
+ worker = taskdesc["worker"] = job["worker"]
+
+ worker["taskcluster-proxy"] = run.pop("taskcluster-proxy", None)
+
+ setup_secrets(config, job, taskdesc)
+
+ taskdesc["worker"].setdefault("artifacts", []).append(
+ {
+ "name": "public/logs",
+ "path": "logs",
+ "type": "directory",
+ "expires-after": get_expiration(config, "medium"),
+ }
+ )
+
+ if not worker.get("skip-artifacts", False):
+ generic_worker_add_artifacts(config, job, taskdesc)
+
+ env = worker.setdefault("env", {})
+ env.update(
+ {
+ "MOZ_BUILD_DATE": config.params["moz_build_date"],
+ "MOZ_SCM_LEVEL": config.params["level"],
+ "MH_BRANCH": config.params["project"],
+ "MOZ_SOURCE_CHANGESET": get_branch_rev(config),
+ "MOZ_SOURCE_REPO": get_branch_repo(config),
+ }
+ )
+ if run.pop("use-simple-package"):
+ env.update({"MOZ_SIMPLE_PACKAGE_NAME": "target"})
+
+ extra_config = run.pop("extra-config", {})
+ extra_config["objdir"] = "obj-build"
+ env["EXTRA_MOZHARNESS_CONFIG"] = json.dumps(extra_config, sort_keys=True)
+
+ # The windows generic worker uses batch files to pass environment variables
+ # to commands. Setting a variable to empty in a batch file unsets, so if
+ # there is no `TRY_COMMIT_MESSAGE`, pass a space instead, so that
+ # mozharness doesn't try to find the commit message on its own.
+ if is_try(config.params):
+ env["TRY_COMMIT_MSG"] = config.params["message"] or "no commit message"
+
+ if not job["attributes"]["build_platform"].startswith(("win", "macosx")):
+ raise Exception(
+ "Task generation for mozharness build jobs currently only supported on "
+ "Windows and macOS"
+ )
+
+ mh_command = []
+ if job["worker"]["os"] == "windows":
+ system_python_dir = "c:/mozilla-build/python3/"
+ gecko_path = "%GECKO_PATH%"
+ else:
+ system_python_dir = ""
+ gecko_path = "$GECKO_PATH"
+
+ if run.get("use-system-python", True):
+ python_bindir = system_python_dir
+ else:
+ # $MOZ_PYTHON_HOME is going to be substituted in run-task, when we
+ # know the actual MOZ_PYTHON_HOME value.
+ is_windows = job["worker"]["os"] == "windows"
+ if is_windows:
+ python_bindir = "%MOZ_PYTHON_HOME%/"
+ else:
+ python_bindir = "${MOZ_PYTHON_HOME}/bin/"
+
+ mh_command = ["{}python3".format(python_bindir)]
+
+ mh_command += [
+ f"{gecko_path}/mach",
+ "python",
+ "{}/testing/{}".format(gecko_path, run.pop("script")),
+ ]
+
+ for path in run.pop("config-paths", []):
+ mh_command.append(f"--extra-config-path {gecko_path}/{path}")
+
+ for cfg in run.pop("config"):
+ mh_command.extend(("--config", cfg))
+ if run.pop("use-magic-mh-args"):
+ mh_command.extend(("--branch", config.params["project"]))
+ if job["worker"]["os"] == "windows":
+ mh_command.extend(("--work-dir", r"%cd:Z:=z:%\workspace"))
+ for action in run.pop("actions", []):
+ mh_command.append("--" + action)
+
+ for option in run.pop("options", []):
+ mh_command.append("--" + option)
+ if run.get("custom-build-variant-cfg"):
+ mh_command.append("--custom-build-variant")
+ mh_command.append(run.pop("custom-build-variant-cfg"))
+
+ if job["worker"]["os"] == "macosx":
+ # Ideally, we'd use shellutil.quote, but that would single-quote
+ # $GECKO_PATH, which would defeat having the variable in the command
+ # in the first place, as it wouldn't be expanded.
+ # In practice, arguments are expected not to contain characters that
+ # would require quoting.
+ mh_command = " ".join(mh_command)
+
+ run["using"] = "run-task"
+ run["command"] = mh_command
+ run.pop("secrets")
+ run.pop("requires-signed-builds")
+ run.pop("job-script", None)
+ configure_taskdesc_for_run(config, job, taskdesc, worker["implementation"])
+
+ # Everything past this point is Windows-specific.
+ if job["worker"]["os"] == "macosx":
+ return
+
+ if taskdesc.get("use-sccache"):
+ worker["command"] = (
+ [
+ # Make the comment part of the first command, as it will help users to
+ # understand what is going on, and why these steps are implemented.
+ dedent(
+ """\
+ :: sccache currently uses the full compiler commandline as input to the
+ :: cache hash key, so create a symlink to the task dir and build from
+ :: the symlink dir to get consistent paths.
+ if exist z:\\build rmdir z:\\build"""
+ ),
+ r"mklink /d z:\build %cd%",
+ # Grant delete permission on the link to everyone.
+ r"icacls z:\build /grant *S-1-1-0:D /L",
+ r"cd /d z:\build",
+ ]
+ + worker["command"]
+ )
diff --git a/taskcluster/gecko_taskgraph/transforms/job/mozharness_test.py b/taskcluster/gecko_taskgraph/transforms/job/mozharness_test.py
new file mode 100644
index 0000000000..eb4aea609f
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/job/mozharness_test.py
@@ -0,0 +1,477 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import json
+import os
+import re
+
+from taskgraph.util.schema import Schema
+from taskgraph.util.taskcluster import get_artifact_path, get_artifact_url
+from voluptuous import Extra, Optional, Required
+
+from gecko_taskgraph.transforms.job import configure_taskdesc_for_run, run_job_using
+from gecko_taskgraph.transforms.job.common import get_expiration, support_vcs_checkout
+from gecko_taskgraph.transforms.test import normpath, test_description_schema
+from gecko_taskgraph.util.attributes import is_try
+
+VARIANTS = [
+ "shippable",
+ "shippable-qr",
+ "shippable-lite",
+ "shippable-lite-qr",
+ "devedition",
+ "pgo",
+ "asan",
+ "stylo",
+ "qr",
+ "ccov",
+]
+
+
+def get_variant(test_platform):
+ for v in VARIANTS:
+ if f"-{v}/" in test_platform:
+ return v
+ return ""
+
+
+mozharness_test_run_schema = Schema(
+ {
+ Required("using"): "mozharness-test",
+ Required("test"): {
+ Required("test-platform"): str,
+ Required("mozharness"): test_description_schema["mozharness"],
+ Required("docker-image"): test_description_schema["docker-image"],
+ Required("loopback-video"): test_description_schema["loopback-video"],
+ Required("loopback-audio"): test_description_schema["loopback-audio"],
+ Required("max-run-time"): test_description_schema["max-run-time"],
+ Optional("retry-exit-status"): test_description_schema["retry-exit-status"],
+ Extra: object,
+ },
+ # Base work directory used to set up the task.
+ Optional("workdir"): str,
+ }
+)
+
+
+def test_packages_url(taskdesc):
+ """Account for different platforms that name their test packages differently"""
+ artifact_url = get_artifact_url(
+ "<build>", get_artifact_path(taskdesc, "target.test_packages.json")
+ )
+ # for android shippable we need to add 'en-US' to the artifact url
+ test = taskdesc["run"]["test"]
+ if "android" in test["test-platform"] and (
+ get_variant(test["test-platform"])
+ in ("shippable", "shippable-qr", "shippable-lite", "shippable-lite-qr")
+ ):
+ head, tail = os.path.split(artifact_url)
+ artifact_url = os.path.join(head, "en-US", tail)
+ return artifact_url
+
+
+def installer_url(taskdesc):
+ test = taskdesc["run"]["test"]
+ mozharness = test["mozharness"]
+
+ if "installer-url" in mozharness:
+ installer_url = mozharness["installer-url"]
+ else:
+ upstream_task = (
+ "<build-signing>" if mozharness["requires-signed-builds"] else "<build>"
+ )
+ installer_url = get_artifact_url(
+ upstream_task, mozharness["build-artifact-name"]
+ )
+
+ return installer_url
+
+
+@run_job_using("docker-worker", "mozharness-test", schema=mozharness_test_run_schema)
+def mozharness_test_on_docker(config, job, taskdesc):
+ run = job["run"]
+ test = taskdesc["run"]["test"]
+ mozharness = test["mozharness"]
+ worker = taskdesc["worker"] = job["worker"]
+
+ # apply some defaults
+ worker["docker-image"] = test["docker-image"]
+ worker["allow-ptrace"] = True # required for all tests, for crashreporter
+ worker["loopback-video"] = test["loopback-video"]
+ worker["loopback-audio"] = test["loopback-audio"]
+ worker["max-run-time"] = test["max-run-time"]
+ worker["retry-exit-status"] = test["retry-exit-status"]
+ if "android-em-7.0-x86" in test["test-platform"]:
+ worker["privileged"] = True
+
+ artifacts = [
+ # (artifact name prefix, in-image path)
+ ("public/logs", "{workdir}/workspace/logs/".format(**run)),
+ ("public/test", "{workdir}/artifacts/".format(**run)),
+ (
+ "public/test_info",
+ "{workdir}/workspace/build/blobber_upload_dir/".format(**run),
+ ),
+ ]
+
+ installer = installer_url(taskdesc)
+
+ mozharness_url = get_artifact_url(
+ "<build>", get_artifact_path(taskdesc, "mozharness.zip")
+ )
+
+ worker.setdefault("artifacts", [])
+ worker["artifacts"].extend(
+ [
+ {
+ "name": prefix,
+ "path": os.path.join("{workdir}/workspace".format(**run), path),
+ "type": "directory",
+ "expires-after": get_expiration(config, "default"),
+ }
+ for (prefix, path) in artifacts
+ ]
+ )
+
+ env = worker.setdefault("env", {})
+ env.update(
+ {
+ "MOZHARNESS_CONFIG": " ".join(mozharness["config"]),
+ "MOZHARNESS_SCRIPT": mozharness["script"],
+ "MOZILLA_BUILD_URL": {"task-reference": installer},
+ "NEED_PULSEAUDIO": "true",
+ "NEED_WINDOW_MANAGER": "true",
+ "ENABLE_E10S": str(bool(test.get("e10s"))).lower(),
+ "WORKING_DIR": "/builds/worker",
+ }
+ )
+
+ env["PYTHON"] = "python3"
+
+ # Legacy linux64 tests rely on compiz.
+ if test.get("docker-image", {}).get("in-tree") == "desktop1604-test":
+ env.update({"NEED_COMPIZ": "true"})
+
+ # Bug 1602701/1601828 - use compiz on ubuntu1804 due to GTK asynchiness
+ # when manipulating windows.
+ if test.get("docker-image", {}).get("in-tree") == "ubuntu1804-test":
+ if "wdspec" in job["run"]["test"]["suite"] or (
+ "marionette" in job["run"]["test"]["suite"]
+ and "headless" not in job["label"]
+ ):
+ env.update({"NEED_COMPIZ": "true"})
+
+ # Set MOZ_ENABLE_WAYLAND env variables to enable Wayland backend.
+ if "wayland" in job["label"]:
+ env["MOZ_ENABLE_WAYLAND"] = "1"
+
+ if mozharness.get("mochitest-flavor"):
+ env["MOCHITEST_FLAVOR"] = mozharness["mochitest-flavor"]
+
+ if mozharness["set-moz-node-path"]:
+ env["MOZ_NODE_PATH"] = "/usr/local/bin/node"
+
+ if "actions" in mozharness:
+ env["MOZHARNESS_ACTIONS"] = " ".join(mozharness["actions"])
+
+ if is_try(config.params):
+ env["TRY_COMMIT_MSG"] = config.params["message"]
+
+ # handle some of the mozharness-specific options
+ if test["reboot"]:
+ raise Exception(
+ "reboot: {} not supported on generic-worker".format(test["reboot"])
+ )
+
+ # Support vcs checkouts regardless of whether the task runs from
+ # source or not in case it is needed on an interactive loaner.
+ support_vcs_checkout(config, job, taskdesc)
+
+ # If we have a source checkout, run mozharness from it instead of
+ # downloading a zip file with the same content.
+ if test["checkout"]:
+ env["MOZHARNESS_PATH"] = "{workdir}/checkouts/gecko/testing/mozharness".format(
+ **run
+ )
+ else:
+ env["MOZHARNESS_URL"] = {"task-reference": mozharness_url}
+
+ extra_config = {
+ "installer_url": installer,
+ "test_packages_url": test_packages_url(taskdesc),
+ }
+ env["EXTRA_MOZHARNESS_CONFIG"] = {
+ "task-reference": json.dumps(extra_config, sort_keys=True)
+ }
+
+ # Bug 1634554 - pass in decision task artifact URL to mozharness for WPT.
+ # Bug 1645974 - test-verify-wpt and test-coverage-wpt need artifact URL.
+ if "web-platform-tests" in test["suite"] or re.match(
+ "test-(coverage|verify)-wpt", test["suite"]
+ ):
+ env["TESTS_BY_MANIFEST_URL"] = {
+ "artifact-reference": "<decision/public/tests-by-manifest.json.gz>"
+ }
+
+ command = [
+ "{workdir}/bin/test-linux.sh".format(**run),
+ ]
+ command.extend(mozharness.get("extra-options", []))
+
+ if test.get("test-manifests"):
+ env["MOZHARNESS_TEST_PATHS"] = json.dumps(
+ {test["suite"]: test["test-manifests"]}, sort_keys=True
+ )
+
+ # TODO: remove the need for run['chunked']
+ elif mozharness.get("chunked") or test["chunks"] > 1:
+ command.append("--total-chunk={}".format(test["chunks"]))
+ command.append("--this-chunk={}".format(test["this-chunk"]))
+
+ if "download-symbols" in mozharness:
+ download_symbols = mozharness["download-symbols"]
+ download_symbols = {True: "true", False: "false"}.get(
+ download_symbols, download_symbols
+ )
+ command.append("--download-symbols=" + download_symbols)
+
+ job["run"] = {
+ "workdir": run["workdir"],
+ "tooltool-downloads": mozharness["tooltool-downloads"],
+ "checkout": test["checkout"],
+ "command": command,
+ "using": "run-task",
+ }
+ configure_taskdesc_for_run(config, job, taskdesc, worker["implementation"])
+
+
+@run_job_using("generic-worker", "mozharness-test", schema=mozharness_test_run_schema)
+def mozharness_test_on_generic_worker(config, job, taskdesc):
+ test = taskdesc["run"]["test"]
+ mozharness = test["mozharness"]
+ worker = taskdesc["worker"] = job["worker"]
+
+ bitbar_script = "test-linux.sh"
+
+ is_macosx = worker["os"] == "macosx"
+ is_windows = worker["os"] == "windows"
+ is_linux = worker["os"] == "linux" or worker["os"] == "linux-bitbar"
+ is_bitbar = worker["os"] == "linux-bitbar"
+ assert is_macosx or is_windows or is_linux
+
+ artifacts = [
+ {
+ "name": "public/logs",
+ "path": "logs",
+ "type": "directory",
+ "expires-after": get_expiration(config, "default"),
+ }
+ ]
+
+ # jittest doesn't have blob_upload_dir
+ if test["test-name"] != "jittest":
+ artifacts.append(
+ {
+ "name": "public/test_info",
+ "path": "build/blobber_upload_dir",
+ "type": "directory",
+ "expires-after": get_expiration(config, "default"),
+ }
+ )
+
+ if is_bitbar:
+ artifacts = [
+ {
+ "name": "public/test/",
+ "path": "artifacts/public",
+ "type": "directory",
+ "expires-after": get_expiration(config, "default"),
+ },
+ {
+ "name": "public/logs/",
+ "path": "workspace/logs",
+ "type": "directory",
+ "expires-after": get_expiration(config, "default"),
+ },
+ {
+ "name": "public/test_info/",
+ "path": "workspace/build/blobber_upload_dir",
+ "type": "directory",
+ "expires-after": get_expiration(config, "default"),
+ },
+ ]
+
+ installer = installer_url(taskdesc)
+
+ worker["os-groups"] = test["os-groups"]
+
+ # run-as-administrator is a feature for workers with UAC enabled and as such should not be
+ # included in tasks on workers that have UAC disabled. Currently UAC is only enabled on
+ # gecko Windows 10 workers, however this may be subject to change. Worker type
+ # environment definitions can be found in https://github.com/mozilla-releng/OpenCloudConfig
+ # See https://docs.microsoft.com/en-us/windows/desktop/secauthz/user-account-control
+ # for more information about UAC.
+ if test.get("run-as-administrator", False):
+ if job["worker-type"].startswith("win10-64") or job["worker-type"].startswith(
+ "win11-64"
+ ):
+ worker["run-as-administrator"] = True
+ else:
+ raise Exception(
+ "run-as-administrator not supported on {}".format(job["worker-type"])
+ )
+
+ if test["reboot"]:
+ raise Exception(
+ "reboot: {} not supported on generic-worker".format(test["reboot"])
+ )
+
+ worker["max-run-time"] = test["max-run-time"]
+ worker["retry-exit-status"] = test["retry-exit-status"]
+ worker.setdefault("artifacts", [])
+ worker["artifacts"].extend(artifacts)
+
+ env = worker.setdefault("env", {})
+ env["GECKO_HEAD_REPOSITORY"] = config.params["head_repository"]
+ env["GECKO_HEAD_REV"] = config.params["head_rev"]
+
+ # this list will get cleaned up / reduced / removed in bug 1354088
+ if is_macosx:
+ env.update(
+ {
+ "LC_ALL": "en_US.UTF-8",
+ "LANG": "en_US.UTF-8",
+ "MOZ_NODE_PATH": "/usr/local/bin/node",
+ "PATH": "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin",
+ "SHELL": "/bin/bash",
+ }
+ )
+ elif is_bitbar:
+ env.update(
+ {
+ "LANG": "en_US.UTF-8",
+ "MOZHARNESS_CONFIG": " ".join(mozharness["config"]),
+ "MOZHARNESS_SCRIPT": mozharness["script"],
+ "MOZHARNESS_URL": {
+ "artifact-reference": "<build/public/build/mozharness.zip>"
+ },
+ "MOZILLA_BUILD_URL": {"task-reference": installer},
+ "MOZ_NO_REMOTE": "1",
+ "NEED_XVFB": "false",
+ "XPCOM_DEBUG_BREAK": "warn",
+ "NO_FAIL_ON_TEST_ERRORS": "1",
+ "MOZ_HIDE_RESULTS_TABLE": "1",
+ "MOZ_NODE_PATH": "/usr/local/bin/node",
+ "TASKCLUSTER_WORKER_TYPE": job["worker-type"],
+ }
+ )
+
+ extra_config = {
+ "installer_url": installer,
+ "test_packages_url": test_packages_url(taskdesc),
+ }
+ env["EXTRA_MOZHARNESS_CONFIG"] = {
+ "task-reference": json.dumps(extra_config, sort_keys=True)
+ }
+
+ # Bug 1634554 - pass in decision task artifact URL to mozharness for WPT.
+ # Bug 1645974 - test-verify-wpt and test-coverage-wpt need artifact URL.
+ if "web-platform-tests" in test["suite"] or re.match(
+ "test-(coverage|verify)-wpt", test["suite"]
+ ):
+ env["TESTS_BY_MANIFEST_URL"] = {
+ "artifact-reference": "<decision/public/tests-by-manifest.json.gz>"
+ }
+
+ if is_windows:
+ py_binary = "c:\\mozilla-build\\{python}\\{python}.exe".format(python="python3")
+ mh_command = [
+ py_binary,
+ "-u",
+ "mozharness\\scripts\\" + normpath(mozharness["script"]),
+ ]
+ elif is_bitbar:
+ py_binary = "python3"
+ mh_command = ["bash", f"./{bitbar_script}"]
+ elif is_macosx:
+ py_binary = "/usr/local/bin/{}".format("python3")
+ mh_command = [
+ py_binary,
+ "-u",
+ "mozharness/scripts/" + mozharness["script"],
+ ]
+ else:
+ # is_linux
+ py_binary = "/usr/bin/{}".format("python3")
+ mh_command = [
+ # Using /usr/bin/python2.7 rather than python2.7 because
+ # /usr/local/bin/python2.7 is broken on the mac workers.
+ # See bug #1547903.
+ py_binary,
+ "-u",
+ "mozharness/scripts/" + mozharness["script"],
+ ]
+
+ env["PYTHON"] = py_binary
+
+ for mh_config in mozharness["config"]:
+ cfg_path = "mozharness/configs/" + mh_config
+ if is_windows:
+ cfg_path = normpath(cfg_path)
+ mh_command.extend(["--cfg", cfg_path])
+ mh_command.extend(mozharness.get("extra-options", []))
+ if mozharness.get("download-symbols"):
+ if isinstance(mozharness["download-symbols"], str):
+ mh_command.extend(["--download-symbols", mozharness["download-symbols"]])
+ else:
+ mh_command.extend(["--download-symbols", "true"])
+ if mozharness.get("include-blob-upload-branch"):
+ mh_command.append("--blob-upload-branch=" + config.params["project"])
+
+ if test.get("test-manifests"):
+ env["MOZHARNESS_TEST_PATHS"] = json.dumps(
+ {test["suite"]: test["test-manifests"]}, sort_keys=True
+ )
+
+ # TODO: remove the need for run['chunked']
+ elif mozharness.get("chunked") or test["chunks"] > 1:
+ mh_command.append("--total-chunk={}".format(test["chunks"]))
+ mh_command.append("--this-chunk={}".format(test["this-chunk"]))
+
+ if is_try(config.params):
+ env["TRY_COMMIT_MSG"] = config.params["message"]
+
+ worker["mounts"] = [
+ {
+ "directory": "mozharness",
+ "content": {
+ "artifact": get_artifact_path(taskdesc, "mozharness.zip"),
+ "task-id": {"task-reference": "<build>"},
+ },
+ "format": "zip",
+ }
+ ]
+ if is_bitbar:
+ a_url = config.params.file_url(
+ f"taskcluster/scripts/tester/{bitbar_script}",
+ )
+ worker["mounts"] = [
+ {
+ "file": bitbar_script,
+ "content": {
+ "url": a_url,
+ },
+ }
+ ]
+
+ job["run"] = {
+ "tooltool-downloads": mozharness["tooltool-downloads"],
+ "checkout": test["checkout"],
+ "command": mh_command,
+ "using": "run-task",
+ }
+ if is_bitbar:
+ job["run"]["run-as-root"] = True
+ configure_taskdesc_for_run(config, job, taskdesc, worker["implementation"])
diff --git a/taskcluster/gecko_taskgraph/transforms/job/python_test.py b/taskcluster/gecko_taskgraph/transforms/job/python_test.py
new file mode 100644
index 0000000000..b572061217
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/job/python_test.py
@@ -0,0 +1,47 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Support for running mach python-test tasks (via run-task)
+"""
+
+
+from taskgraph.util.schema import Schema
+from voluptuous import Optional, Required
+
+from gecko_taskgraph.transforms.job import configure_taskdesc_for_run, run_job_using
+
+python_test_schema = Schema(
+ {
+ Required("using"): "python-test",
+ # Python version to use
+ Required("python-version"): int,
+ # The subsuite to run
+ Required("subsuite"): str,
+ # Base work directory used to set up the task.
+ Optional("workdir"): str,
+ }
+)
+
+
+defaults = {
+ "python-version": 3,
+ "subsuite": "default",
+}
+
+
+@run_job_using(
+ "docker-worker", "python-test", schema=python_test_schema, defaults=defaults
+)
+@run_job_using(
+ "generic-worker", "python-test", schema=python_test_schema, defaults=defaults
+)
+def configure_python_test(config, job, taskdesc):
+ run = job["run"]
+ worker = job["worker"]
+
+ # defer to the mach implementation
+ run["mach"] = ("python-test --subsuite {subsuite} --run-slow").format(**run)
+ run["using"] = "mach"
+ del run["subsuite"]
+ configure_taskdesc_for_run(config, job, taskdesc, worker["implementation"])
diff --git a/taskcluster/gecko_taskgraph/transforms/job/run_task.py b/taskcluster/gecko_taskgraph/transforms/job/run_task.py
new file mode 100644
index 0000000000..201c0b825a
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/job/run_task.py
@@ -0,0 +1,308 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Support for running jobs that are invoked via the `run-task` script.
+"""
+
+
+import os
+
+from mozbuild.util import memoize
+from mozpack import path
+from taskgraph.util.schema import Schema
+from taskgraph.util.yaml import load_yaml
+from voluptuous import Any, Extra, Optional, Required
+
+from gecko_taskgraph import GECKO
+from gecko_taskgraph.transforms.job import run_job_using
+from gecko_taskgraph.transforms.job.common import add_tooltool, support_vcs_checkout
+from gecko_taskgraph.transforms.task import taskref_or_string
+
+run_task_schema = Schema(
+ {
+ Required("using"): "run-task",
+ # if true, add a cache at ~worker/.cache, which is where things like pip
+ # tend to hide their caches. This cache is never added for level-1 jobs.
+ # TODO Once bug 1526028 is fixed, this and 'use-caches' should be merged.
+ Required("cache-dotcache"): bool,
+ # Whether or not to use caches.
+ Optional("use-caches"): bool,
+ # if true (the default), perform a checkout of gecko on the worker
+ Required("checkout"): bool,
+ Optional(
+ "cwd",
+ description="Path to run command in. If a checkout is present, the path "
+ "to the checkout will be interpolated with the key `checkout`",
+ ): str,
+ # The sparse checkout profile to use. Value is the filename relative to
+ # "sparse-profile-prefix" which defaults to "build/sparse-profiles/".
+ Required("sparse-profile"): Any(str, None),
+ # The relative path to the sparse profile.
+ Optional("sparse-profile-prefix"): str,
+ # if true, perform a checkout of a comm-central based branch inside the
+ # gecko checkout
+ Required("comm-checkout"): bool,
+ # The command arguments to pass to the `run-task` script, after the
+ # checkout arguments. If a list, it will be passed directly; otherwise
+ # it will be included in a single argument to `bash -cx`.
+ Required("command"): Any([taskref_or_string], taskref_or_string),
+ # Context to substitute into the command using format string
+ # substitution (e.g {value}). This is useful if certain aspects of the
+ # command need to be generated in transforms.
+ Optional("command-context"): {
+ # If present, loads a set of context variables from an unnested yaml
+ # file. If a value is present in both the provided file and directly
+ # in command-context, the latter will take priority.
+ Optional("from-file"): str,
+ Extra: object,
+ },
+ # Base work directory used to set up the task.
+ Optional("workdir"): str,
+ # If not false, tooltool downloads will be enabled via relengAPIProxy
+ # for either just public files, or all files. Only supported on
+ # docker-worker.
+ Required("tooltool-downloads"): Any(
+ False,
+ "public",
+ "internal",
+ ),
+ # Whether to run as root. (defaults to False)
+ Optional("run-as-root"): bool,
+ }
+)
+
+
+def common_setup(config, job, taskdesc, command):
+ run = job["run"]
+ if run["checkout"]:
+ support_vcs_checkout(config, job, taskdesc, sparse=bool(run["sparse-profile"]))
+ command.append(
+ "--gecko-checkout={}".format(taskdesc["worker"]["env"]["GECKO_PATH"])
+ )
+
+ if run["sparse-profile"]:
+ sparse_profile_prefix = run.pop(
+ "sparse-profile-prefix", "build/sparse-profiles"
+ )
+ sparse_profile_path = path.join(sparse_profile_prefix, run["sparse-profile"])
+ command.append(f"--gecko-sparse-profile={sparse_profile_path}")
+
+ taskdesc["worker"].setdefault("env", {})["MOZ_SCM_LEVEL"] = config.params["level"]
+
+
+worker_defaults = {
+ "cache-dotcache": False,
+ "checkout": True,
+ "comm-checkout": False,
+ "sparse-profile": None,
+ "tooltool-downloads": False,
+ "run-as-root": False,
+}
+
+
+load_yaml = memoize(load_yaml)
+
+
+def script_url(config, script):
+ if "MOZ_AUTOMATION" in os.environ and "TASK_ID" not in os.environ:
+ raise Exception("TASK_ID must be defined to use run-task on generic-worker")
+ task_id = os.environ.get("TASK_ID", "<TASK_ID>")
+ tc_url = "http://firefox-ci-tc.services.mozilla.com"
+ return f"{tc_url}/api/queue/v1/task/{task_id}/artifacts/public/{script}"
+
+
+def substitute_command_context(command_context, command):
+ from_file = command_context.pop("from-file", None)
+ full_context = {}
+ if from_file:
+ full_context = load_yaml(os.path.join(GECKO, from_file))
+ else:
+ full_context = {}
+
+ full_context.update(command_context)
+
+ if isinstance(command, list):
+ for i in range(len(command)):
+ command[i] = command[i].format(**full_context)
+ else:
+ command = command.format(**full_context)
+
+ return command
+
+
+@run_job_using(
+ "docker-worker", "run-task", schema=run_task_schema, defaults=worker_defaults
+)
+def docker_worker_run_task(config, job, taskdesc):
+ run = job["run"]
+ worker = taskdesc["worker"] = job["worker"]
+ command = ["/builds/worker/bin/run-task"]
+ common_setup(config, job, taskdesc, command)
+
+ if run["tooltool-downloads"]:
+ internal = run["tooltool-downloads"] == "internal"
+ add_tooltool(config, job, taskdesc, internal=internal)
+
+ if run.get("cache-dotcache"):
+ worker["caches"].append(
+ {
+ "type": "persistent",
+ "name": "{project}-dotcache".format(**config.params),
+ "mount-point": "{workdir}/.cache".format(**run),
+ "skip-untrusted": True,
+ }
+ )
+
+ if run.get("command-context"):
+ run_command = substitute_command_context(
+ run.get("command-context"), run["command"]
+ )
+ else:
+ run_command = run["command"]
+
+ run_cwd = run.get("cwd")
+ if run_cwd and run["checkout"]:
+ run_cwd = path.normpath(
+ run_cwd.format(checkout=taskdesc["worker"]["env"]["GECKO_PATH"])
+ )
+ elif run_cwd and "{checkout}" in run_cwd:
+ raise Exception(
+ "Found `{{checkout}}` interpolation in `cwd` for task {name} "
+ "but the task doesn't have a checkout: {cwd}".format(
+ cwd=run_cwd, name=job.get("name", job.get("label"))
+ )
+ )
+
+ # dict is for the case of `{'task-reference': text_type}`.
+ if isinstance(run_command, (str, dict)):
+ run_command = ["bash", "-cx", run_command]
+ if run["comm-checkout"]:
+ command.append(
+ "--comm-checkout={}/comm".format(taskdesc["worker"]["env"]["GECKO_PATH"])
+ )
+ if run["run-as-root"]:
+ command.extend(("--user", "root", "--group", "root"))
+ if run_cwd:
+ command.extend(("--task-cwd", run_cwd))
+ command.append("--")
+ command.extend(run_command)
+ worker["command"] = command
+
+
+@run_job_using(
+ "generic-worker", "run-task", schema=run_task_schema, defaults=worker_defaults
+)
+def generic_worker_run_task(config, job, taskdesc):
+ run = job["run"]
+ worker = taskdesc["worker"] = job["worker"]
+ is_win = worker["os"] == "windows"
+ is_mac = worker["os"] == "macosx"
+ is_bitbar = worker["os"] == "linux-bitbar"
+
+ if run["tooltool-downloads"]:
+ internal = run["tooltool-downloads"] == "internal"
+ add_tooltool(config, job, taskdesc, internal=internal)
+
+ if is_win:
+ command = ["C:/mozilla-build/python3/python3.exe", "run-task"]
+ elif is_mac:
+ command = ["/usr/local/bin/python3", "run-task"]
+ else:
+ command = ["./run-task"]
+
+ common_setup(config, job, taskdesc, command)
+
+ worker.setdefault("mounts", [])
+ if run.get("cache-dotcache"):
+ worker["mounts"].append(
+ {
+ "cache-name": "{project}-dotcache".format(**config.params),
+ "directory": "{workdir}/.cache".format(**run),
+ }
+ )
+ worker["mounts"].append(
+ {
+ "content": {
+ "url": script_url(config, "run-task"),
+ },
+ "file": "./run-task",
+ }
+ )
+ if job.get("fetches", {}):
+ worker["mounts"].append(
+ {
+ "content": {
+ "url": script_url(config, "fetch-content"),
+ },
+ "file": "./fetch-content",
+ }
+ )
+
+ run_command = run["command"]
+ run_cwd = run.get("cwd")
+ if run_cwd and run["checkout"]:
+ run_cwd = path.normpath(
+ run_cwd.format(checkout=taskdesc["worker"]["env"]["GECKO_PATH"])
+ )
+ elif run_cwd and "{checkout}" in run_cwd:
+ raise Exception(
+ "Found `{{checkout}}` interpolation in `cwd` for task {name} "
+ "but the task doesn't have a checkout: {cwd}".format(
+ cwd=run_cwd, name=job.get("name", job.get("label"))
+ )
+ )
+
+ # dict is for the case of `{'task-reference': text_type}`.
+ if isinstance(run_command, (str, dict)):
+ if is_win:
+ if isinstance(run_command, dict):
+ for k in run_command.keys():
+ run_command[k] = f'"{run_command[k]}"'
+ else:
+ run_command = f'"{run_command}"'
+ run_command = ["bash", "-cx", run_command]
+
+ if run.get("command-context"):
+ run_command = substitute_command_context(
+ run.get("command-context"), run_command
+ )
+
+ if run["comm-checkout"]:
+ command.append(
+ "--comm-checkout={}/comm".format(taskdesc["worker"]["env"]["GECKO_PATH"])
+ )
+
+ if run["run-as-root"]:
+ command.extend(("--user", "root", "--group", "root"))
+ if run_cwd:
+ command.extend(("--task-cwd", run_cwd))
+ command.append("--")
+ if is_bitbar:
+ # Use the bitbar wrapper script which sets up the device and adb
+ # environment variables
+ command.append("/builds/taskcluster/script.py")
+ command.extend(run_command)
+
+ if is_win:
+ taskref = False
+ for c in command:
+ if isinstance(c, dict):
+ taskref = True
+
+ if taskref:
+ cmd = []
+ for c in command:
+ if isinstance(c, dict):
+ for v in c.values():
+ cmd.append(v)
+ else:
+ cmd.append(c)
+ worker["command"] = [{"artifact-reference": " ".join(cmd)}]
+ else:
+ worker["command"] = [" ".join(command)]
+ else:
+ worker["command"] = [
+ ["chmod", "+x", "run-task"],
+ command,
+ ]
diff --git a/taskcluster/gecko_taskgraph/transforms/job/spidermonkey.py b/taskcluster/gecko_taskgraph/transforms/job/spidermonkey.py
new file mode 100644
index 0000000000..91c7e93bd6
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/job/spidermonkey.py
@@ -0,0 +1,109 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Support for running spidermonkey jobs via dedicated scripts
+"""
+
+
+from taskgraph.util.schema import Schema
+from voluptuous import Any, Optional, Required
+
+from gecko_taskgraph.transforms.job import configure_taskdesc_for_run, run_job_using
+from gecko_taskgraph.transforms.job.common import (
+ docker_worker_add_artifacts,
+ generic_worker_add_artifacts,
+)
+
+sm_run_schema = Schema(
+ {
+ Required("using"): Any(
+ "spidermonkey",
+ "spidermonkey-package",
+ ),
+ # SPIDERMONKEY_VARIANT and SPIDERMONKEY_PLATFORM
+ Required("spidermonkey-variant"): str,
+ Optional("spidermonkey-platform"): str,
+ # Base work directory used to set up the task.
+ Optional("workdir"): str,
+ Required("tooltool-downloads"): Any(
+ False,
+ "public",
+ "internal",
+ ),
+ }
+)
+
+
+@run_job_using("docker-worker", "spidermonkey", schema=sm_run_schema)
+@run_job_using("docker-worker", "spidermonkey-package", schema=sm_run_schema)
+def docker_worker_spidermonkey(config, job, taskdesc):
+ run = job["run"]
+
+ worker = taskdesc["worker"] = job["worker"]
+ worker.setdefault("artifacts", [])
+
+ docker_worker_add_artifacts(config, job, taskdesc)
+
+ env = worker.setdefault("env", {})
+ env.update(
+ {
+ "MOZHARNESS_DISABLE": "true",
+ "SPIDERMONKEY_VARIANT": run.pop("spidermonkey-variant"),
+ "MOZ_BUILD_DATE": config.params["moz_build_date"],
+ "MOZ_SCM_LEVEL": config.params["level"],
+ }
+ )
+ if "spidermonkey-platform" in run:
+ env["SPIDERMONKEY_PLATFORM"] = run.pop("spidermonkey-platform")
+
+ script = "build-sm.sh"
+ if run["using"] == "spidermonkey-package":
+ script = "build-sm-package.sh"
+
+ run["using"] = "run-task"
+ run["cwd"] = run["workdir"]
+ run["command"] = [f"./checkouts/gecko/taskcluster/scripts/builder/{script}"]
+
+ configure_taskdesc_for_run(config, job, taskdesc, worker["implementation"])
+
+
+@run_job_using("generic-worker", "spidermonkey", schema=sm_run_schema)
+def generic_worker_spidermonkey(config, job, taskdesc):
+ assert job["worker"]["os"] == "windows", "only supports windows right now"
+
+ run = job["run"]
+
+ worker = taskdesc["worker"] = job["worker"]
+
+ generic_worker_add_artifacts(config, job, taskdesc)
+
+ env = worker.setdefault("env", {})
+ env.update(
+ {
+ "MOZHARNESS_DISABLE": "true",
+ "SPIDERMONKEY_VARIANT": run.pop("spidermonkey-variant"),
+ "MOZ_BUILD_DATE": config.params["moz_build_date"],
+ "MOZ_SCM_LEVEL": config.params["level"],
+ "SCCACHE_DISABLE": "1",
+ "WORK": ".", # Override the defaults in build scripts
+ "GECKO_PATH": "./src", # with values suiteable for windows generic worker
+ "UPLOAD_DIR": "./public/build",
+ }
+ )
+ if "spidermonkey-platform" in run:
+ env["SPIDERMONKEY_PLATFORM"] = run.pop("spidermonkey-platform")
+
+ script = "build-sm.sh"
+ if run["using"] == "spidermonkey-package":
+ script = "build-sm-package.sh"
+ # Don't allow untested configurations yet
+ raise Exception("spidermonkey-package is not a supported configuration")
+
+ run["using"] = "run-task"
+ run["command"] = [
+ "c:\\mozilla-build\\msys2\\usr\\bin\\bash.exe " # string concat
+ '"./src/taskcluster/scripts/builder/%s"' % script
+ ]
+
+ configure_taskdesc_for_run(config, job, taskdesc, worker["implementation"])
diff --git a/taskcluster/gecko_taskgraph/transforms/job/toolchain.py b/taskcluster/gecko_taskgraph/transforms/job/toolchain.py
new file mode 100644
index 0000000000..fb030019fc
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/job/toolchain.py
@@ -0,0 +1,257 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Support for running toolchain-building jobs via dedicated scripts
+"""
+
+
+import os
+
+import taskgraph
+from mozbuild.shellutil import quote as shell_quote
+from taskgraph.util.schema import Schema, optionally_keyed_by, resolve_keyed_by
+from voluptuous import Any, Optional, Required
+
+from gecko_taskgraph import GECKO
+from gecko_taskgraph.transforms.job import configure_taskdesc_for_run, run_job_using
+from gecko_taskgraph.transforms.job.common import (
+ docker_worker_add_artifacts,
+ generic_worker_add_artifacts,
+)
+from gecko_taskgraph.util.attributes import RELEASE_PROJECTS
+from gecko_taskgraph.util.hash import hash_paths
+
+CACHE_TYPE = "toolchains.v3"
+
+toolchain_run_schema = Schema(
+ {
+ Required("using"): "toolchain-script",
+ # The script (in taskcluster/scripts/misc) to run.
+ # Python scripts are invoked with `mach python` so vendored libraries
+ # are available.
+ Required("script"): str,
+ # Arguments to pass to the script.
+ Optional("arguments"): [str],
+ # If not false, tooltool downloads will be enabled via relengAPIProxy
+ # for either just public files, or all files. Not supported on Windows
+ Required("tooltool-downloads"): Any(
+ False,
+ "public",
+ "internal",
+ ),
+ # Sparse profile to give to checkout using `run-task`. If given,
+ # Defaults to "toolchain-build". The value is relative to
+ # "sparse-profile-prefix", optionally defined below is the path,
+ # defaulting to "build/sparse-profiles".
+ # i.e. `build/sparse-profiles/toolchain-build`.
+ # If `None`, instructs `run-task` to not use a sparse profile at all.
+ Required("sparse-profile"): Any(str, None),
+ # The relative path to the sparse profile.
+ Optional("sparse-profile-prefix"): str,
+ # Paths/patterns pointing to files that influence the outcome of a
+ # toolchain build.
+ Optional("resources"): [str],
+ # Path to the artifact produced by the toolchain job
+ Required("toolchain-artifact"): str,
+ Optional(
+ "toolchain-alias",
+ description="An alias that can be used instead of the real toolchain job name in "
+ "fetch stanzas for jobs.",
+ ): optionally_keyed_by("project", Any(None, str, [str])),
+ Optional(
+ "toolchain-env",
+ description="Additional env variables to add to the worker when using this toolchain",
+ ): {str: object},
+ # Base work directory used to set up the task.
+ Optional("workdir"): str,
+ }
+)
+
+
+def get_digest_data(config, run, taskdesc):
+ files = list(run.pop("resources", []))
+ # The script
+ files.append("taskcluster/scripts/misc/{}".format(run["script"]))
+ # Tooltool manifest if any is defined:
+ tooltool_manifest = taskdesc["worker"]["env"].get("TOOLTOOL_MANIFEST")
+ if tooltool_manifest:
+ files.append(tooltool_manifest)
+
+ # Accumulate dependency hashes for index generation.
+ data = [hash_paths(GECKO, files)]
+
+ data.append(taskdesc["attributes"]["toolchain-artifact"])
+
+ # If the task uses an in-tree docker image, we want it to influence
+ # the index path as well. Ideally, the content of the docker image itself
+ # should have an influence, but at the moment, we can't get that
+ # information here. So use the docker image name as a proxy. Not a lot of
+ # changes to docker images actually have an impact on the resulting
+ # toolchain artifact, so we'll just rely on such important changes to be
+ # accompanied with a docker image name change.
+ image = taskdesc["worker"].get("docker-image", {}).get("in-tree")
+ if image:
+ data.append(image)
+
+ # Likewise script arguments should influence the index.
+ args = run.get("arguments")
+ if args:
+ data.extend(args)
+
+ if taskdesc["attributes"].get("rebuild-on-release"):
+ # Add whether this is a release branch or not
+ data.append(str(config.params["project"] in RELEASE_PROJECTS))
+ return data
+
+
+def common_toolchain(config, job, taskdesc, is_docker):
+ run = job["run"]
+
+ worker = taskdesc["worker"] = job["worker"]
+ worker["chain-of-trust"] = True
+
+ if is_docker:
+ # If the task doesn't have a docker-image, set a default
+ worker.setdefault("docker-image", {"in-tree": "deb11-toolchain-build"})
+
+ if job["worker"]["os"] == "windows":
+ # There were no caches on generic-worker before bug 1519472, and they cause
+ # all sorts of problems with Windows toolchain tasks, disable them until
+ # tasks are ready.
+ run["use-caches"] = False
+
+ env = worker.setdefault("env", {})
+ env.update(
+ {
+ "MOZ_BUILD_DATE": config.params["moz_build_date"],
+ "MOZ_SCM_LEVEL": config.params["level"],
+ "TOOLCHAIN_ARTIFACT": run["toolchain-artifact"],
+ }
+ )
+
+ if is_docker:
+ # Toolchain checkouts don't live under {workdir}/checkouts
+ workspace = "{workdir}/workspace/build".format(**run)
+ env["GECKO_PATH"] = f"{workspace}/src"
+
+ attributes = taskdesc.setdefault("attributes", {})
+ attributes["toolchain-artifact"] = run.pop("toolchain-artifact")
+ toolchain_artifact = attributes["toolchain-artifact"]
+ if not toolchain_artifact.startswith("public/build/"):
+ if "artifact_prefix" in attributes:
+ raise Exception(
+ "Toolchain {} has an artifact_prefix attribute. That is not"
+ " allowed on toolchain tasks.".format(taskdesc["label"])
+ )
+ attributes["artifact_prefix"] = os.path.dirname(toolchain_artifact)
+
+ resolve_keyed_by(
+ run,
+ "toolchain-alias",
+ item_name=taskdesc["label"],
+ project=config.params["project"],
+ )
+ alias = run.pop("toolchain-alias", None)
+ if alias:
+ attributes["toolchain-alias"] = alias
+ if "toolchain-env" in run:
+ attributes["toolchain-env"] = run.pop("toolchain-env")
+
+ # Allow the job to specify where artifacts come from, but add
+ # public/build if it's not there already.
+ artifacts = worker.setdefault("artifacts", [])
+ if not artifacts:
+ if is_docker:
+ docker_worker_add_artifacts(config, job, taskdesc)
+ else:
+ generic_worker_add_artifacts(config, job, taskdesc)
+
+ digest_data = get_digest_data(config, run, taskdesc)
+
+ if job.get("attributes", {}).get("cached_task") is not False and not taskgraph.fast:
+ name = taskdesc["label"].replace(f"{config.kind}-", "", 1)
+ taskdesc["cache"] = {
+ "type": CACHE_TYPE,
+ "name": name,
+ "digest-data": digest_data,
+ }
+
+ # Toolchains that are used for local development need to be built on a
+ # level-3 branch to be installable via `mach bootstrap`.
+ local_toolchain = taskdesc["attributes"].get("local-toolchain")
+ if local_toolchain:
+ if taskdesc.get("run-on-projects"):
+ raise Exception(
+ "Toolchain {} used for local developement must not have"
+ " run-on-projects set".format(taskdesc["label"])
+ )
+ taskdesc["run-on-projects"] = ["integration", "release"]
+
+ script = run.pop("script")
+ arguments = run.pop("arguments", [])
+ if local_toolchain and not attributes["toolchain-artifact"].startswith("public/"):
+ # Local toolchains with private artifacts are expected to have a script that
+ # fill a directory given as a final command line argument. That script, and the
+ # arguments provided, are used by the build system bootstrap code, and for the
+ # corresponding CI tasks, the command is wrapped with a script that creates an
+ # artifact based on that filled directory.
+ # We prefer automatic wrapping rather than manual wrapping in the yaml because
+ # it makes the index independent of the wrapper script, which is irrelevant.
+ # Also, an attribute is added for the bootstrap code to be able to easily parse
+ # the command.
+ attributes["toolchain-command"] = {
+ "script": script,
+ "arguments": list(arguments),
+ }
+ arguments.insert(0, script)
+ script = "private_local_toolchain.sh"
+
+ run["using"] = "run-task"
+ if is_docker:
+ gecko_path = "workspace/build/src"
+ elif job["worker"]["os"] == "windows":
+ gecko_path = "%GECKO_PATH%"
+ else:
+ gecko_path = "$GECKO_PATH"
+
+ if is_docker:
+ run["cwd"] = run["workdir"]
+ run["command"] = [
+ "{}/taskcluster/scripts/misc/{}".format(gecko_path, script)
+ ] + arguments
+ if not is_docker:
+ # Don't quote the first item in the command because it purposely contains
+ # an environment variable that is not meant to be quoted.
+ if len(run["command"]) > 1:
+ run["command"] = run["command"][0] + " " + shell_quote(*run["command"][1:])
+ else:
+ run["command"] = run["command"][0]
+
+ configure_taskdesc_for_run(config, job, taskdesc, worker["implementation"])
+
+
+toolchain_defaults = {
+ "tooltool-downloads": False,
+ "sparse-profile": "toolchain-build",
+}
+
+
+@run_job_using(
+ "docker-worker",
+ "toolchain-script",
+ schema=toolchain_run_schema,
+ defaults=toolchain_defaults,
+)
+def docker_worker_toolchain(config, job, taskdesc):
+ common_toolchain(config, job, taskdesc, is_docker=True)
+
+
+@run_job_using(
+ "generic-worker",
+ "toolchain-script",
+ schema=toolchain_run_schema,
+ defaults=toolchain_defaults,
+)
+def generic_worker_toolchain(config, job, taskdesc):
+ common_toolchain(config, job, taskdesc, is_docker=False)
diff --git a/taskcluster/gecko_taskgraph/transforms/l10n.py b/taskcluster/gecko_taskgraph/transforms/l10n.py
new file mode 100644
index 0000000000..e36c70246b
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/l10n.py
@@ -0,0 +1,416 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Do transforms specific to l10n kind
+"""
+
+
+import json
+
+from mozbuild.chunkify import chunkify
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import (
+ optionally_keyed_by,
+ resolve_keyed_by,
+ taskref_or_string,
+)
+from taskgraph.util.taskcluster import get_artifact_prefix
+from taskgraph.util.treeherder import add_suffix
+from voluptuous import Any, Optional, Required
+
+from gecko_taskgraph.loader.multi_dep import schema
+from gecko_taskgraph.transforms.job import job_description_schema
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.attributes import (
+ copy_attributes_from_dependent_job,
+ task_name,
+)
+from gecko_taskgraph.util.copy_task import copy_task
+
+
+def _by_platform(arg):
+ return optionally_keyed_by("build-platform", arg)
+
+
+l10n_description_schema = schema.extend(
+ {
+ # Name for this job, inferred from the dependent job before validation
+ Required("name"): str,
+ # build-platform, inferred from dependent job before validation
+ Required("build-platform"): str,
+ # max run time of the task
+ Required("run-time"): _by_platform(int),
+ # Locales not to repack for
+ Required("ignore-locales"): _by_platform([str]),
+ # All l10n jobs use mozharness
+ Required("mozharness"): {
+ # Script to invoke for mozharness
+ Required("script"): _by_platform(str),
+ # Config files passed to the mozharness script
+ Required("config"): _by_platform([str]),
+ # Additional paths to look for mozharness configs in. These should be
+ # relative to the base of the source checkout
+ Optional("config-paths"): [str],
+ # Options to pass to the mozharness script
+ Optional("options"): _by_platform([str]),
+ # Action commands to provide to mozharness script
+ Required("actions"): _by_platform([str]),
+ # if true, perform a checkout of a comm-central based branch inside the
+ # gecko checkout
+ Optional("comm-checkout"): bool,
+ },
+ # Items for the taskcluster index
+ Optional("index"): {
+ # Product to identify as in the taskcluster index
+ Required("product"): _by_platform(str),
+ # Job name to identify as in the taskcluster index
+ Required("job-name"): _by_platform(str),
+ # Type of index
+ Optional("type"): _by_platform(str),
+ },
+ # Description of the localized task
+ Required("description"): _by_platform(str),
+ Optional("run-on-projects"): job_description_schema["run-on-projects"],
+ # worker-type to utilize
+ Required("worker-type"): _by_platform(str),
+ # File which contains the used locales
+ Required("locales-file"): _by_platform(str),
+ # Tooltool visibility required for task.
+ Required("tooltool"): _by_platform(Any("internal", "public")),
+ # Docker image required for task. We accept only in-tree images
+ # -- generally desktop-build or android-build -- for now.
+ Optional("docker-image"): _by_platform(
+ # an in-tree generated docker image (from `taskcluster/docker/<name>`)
+ {"in-tree": str},
+ ),
+ Optional("fetches"): {
+ str: _by_platform([str]),
+ },
+ # The set of secret names to which the task has access; these are prefixed
+ # with `project/releng/gecko/{treeherder.kind}/level-{level}/`. Setting
+ # this will enable any worker features required and set the task's scopes
+ # appropriately. `true` here means ['*'], all secrets. Not supported on
+ # Windows
+ Optional("secrets"): _by_platform(Any(bool, [str])),
+ # Information for treeherder
+ Required("treeherder"): {
+ # Platform to display the task on in treeherder
+ Required("platform"): _by_platform(str),
+ # Symbol to use
+ Required("symbol"): str,
+ # Tier this task is
+ Required("tier"): _by_platform(int),
+ },
+ # Extra environment values to pass to the worker
+ Optional("env"): _by_platform({str: taskref_or_string}),
+ # Max number locales per chunk
+ Optional("locales-per-chunk"): _by_platform(int),
+ # Task deps to chain this task with, added in transforms from primary-dependency
+ # if this is a shippable-style build
+ Optional("dependencies"): {str: str},
+ # Run the task when the listed files change (if present).
+ Optional("when"): {"files-changed": [str]},
+ # passed through directly to the job description
+ Optional("attributes"): job_description_schema["attributes"],
+ Optional("extra"): job_description_schema["extra"],
+ # Shipping product and phase
+ Optional("shipping-product"): task_description_schema["shipping-product"],
+ Optional("shipping-phase"): task_description_schema["shipping-phase"],
+ }
+)
+
+transforms = TransformSequence()
+
+
+def parse_locales_file(locales_file, platform=None):
+ """Parse the passed locales file for a list of locales."""
+ locales = []
+
+ with open(locales_file, mode="r") as f:
+ if locales_file.endswith("json"):
+ all_locales = json.load(f)
+ # XXX Only single locales are fetched
+ locales = {
+ locale: data["revision"]
+ for locale, data in all_locales.items()
+ if platform is None or platform in data["platforms"]
+ }
+ else:
+ all_locales = f.read().split()
+ # 'default' is the hg revision at the top of hg repo, in this context
+ locales = {locale: "default" for locale in all_locales}
+ return locales
+
+
+def _remove_locales(locales, to_remove=None):
+ # ja-JP-mac is a mac-only locale, but there are no mac builds being repacked,
+ # so just omit it unconditionally
+ return {
+ locale: revision
+ for locale, revision in locales.items()
+ if locale not in to_remove
+ }
+
+
+@transforms.add
+def setup_name(config, jobs):
+ for job in jobs:
+ dep = job["primary-dependency"]
+ # Set the name to the same as the dep task, without kind name.
+ # Label will get set automatically with this kinds name.
+ job["name"] = job.get("name", task_name(dep))
+ yield job
+
+
+@transforms.add
+def copy_in_useful_magic(config, jobs):
+ for job in jobs:
+ dep = job["primary-dependency"]
+ attributes = copy_attributes_from_dependent_job(dep)
+ attributes.update(job.get("attributes", {}))
+ # build-platform is needed on `job` for by-build-platform
+ job["build-platform"] = attributes.get("build_platform")
+ job["attributes"] = attributes
+ yield job
+
+
+transforms.add_validate(l10n_description_schema)
+
+
+@transforms.add
+def setup_shippable_dependency(config, jobs):
+ """Sets up a task dependency to the signing job this relates to"""
+ for job in jobs:
+ job["dependencies"] = {"build": job["dependent-tasks"]["build"].label}
+ if job["attributes"]["build_platform"].startswith("win") or job["attributes"][
+ "build_platform"
+ ].startswith("linux"):
+ job["dependencies"].update(
+ {
+ "build-signing": job["dependent-tasks"]["build-signing"].label,
+ }
+ )
+ if job["attributes"]["build_platform"].startswith("macosx"):
+ job["dependencies"].update(
+ {"repackage": job["dependent-tasks"]["repackage"].label}
+ )
+ yield job
+
+
+@transforms.add
+def handle_keyed_by(config, jobs):
+ """Resolve fields that can be keyed by platform, etc."""
+ fields = [
+ "locales-file",
+ "locales-per-chunk",
+ "worker-type",
+ "description",
+ "run-time",
+ "docker-image",
+ "secrets",
+ "fetches.toolchain",
+ "fetches.fetch",
+ "tooltool",
+ "env",
+ "ignore-locales",
+ "mozharness.config",
+ "mozharness.options",
+ "mozharness.actions",
+ "mozharness.script",
+ "treeherder.tier",
+ "treeherder.platform",
+ "index.type",
+ "index.product",
+ "index.job-name",
+ "when.files-changed",
+ ]
+ for job in jobs:
+ job = copy_task(job) # don't overwrite dict values here
+ for field in fields:
+ resolve_keyed_by(item=job, field=field, item_name=job["name"])
+ yield job
+
+
+@transforms.add
+def handle_artifact_prefix(config, jobs):
+ """Resolve ``artifact_prefix`` in env vars"""
+ for job in jobs:
+ artifact_prefix = get_artifact_prefix(job)
+ for k1, v1 in job.get("env", {}).items():
+ if isinstance(v1, str):
+ job["env"][k1] = v1.format(artifact_prefix=artifact_prefix)
+ elif isinstance(v1, dict):
+ for k2, v2 in v1.items():
+ job["env"][k1][k2] = v2.format(artifact_prefix=artifact_prefix)
+ yield job
+
+
+@transforms.add
+def all_locales_attribute(config, jobs):
+ for job in jobs:
+ locales_platform = job["attributes"]["build_platform"].replace("-shippable", "")
+ locales_platform = locales_platform.replace("-pgo", "")
+ locales_with_changesets = parse_locales_file(
+ job["locales-file"], platform=locales_platform
+ )
+ locales_with_changesets = _remove_locales(
+ locales_with_changesets, to_remove=job["ignore-locales"]
+ )
+
+ locales = sorted(locales_with_changesets.keys())
+ attributes = job.setdefault("attributes", {})
+ attributes["all_locales"] = locales
+ attributes["all_locales_with_changesets"] = locales_with_changesets
+ if job.get("shipping-product"):
+ attributes["shipping_product"] = job["shipping-product"]
+ yield job
+
+
+@transforms.add
+def chunk_locales(config, jobs):
+ """Utilizes chunking for l10n stuff"""
+ for job in jobs:
+ locales_per_chunk = job.get("locales-per-chunk")
+ locales_with_changesets = job["attributes"]["all_locales_with_changesets"]
+ if locales_per_chunk:
+ chunks, remainder = divmod(len(locales_with_changesets), locales_per_chunk)
+ if remainder:
+ chunks = int(chunks + 1)
+ for this_chunk in range(1, chunks + 1):
+ chunked = copy_task(job)
+ chunked["name"] = chunked["name"].replace("/", f"-{this_chunk}/", 1)
+ chunked["mozharness"]["options"] = chunked["mozharness"].get(
+ "options", []
+ )
+ # chunkify doesn't work with dicts
+ locales_with_changesets_as_list = sorted(
+ locales_with_changesets.items()
+ )
+ chunked_locales = chunkify(
+ locales_with_changesets_as_list, this_chunk, chunks
+ )
+ chunked["mozharness"]["options"].extend(
+ [
+ f"locale={locale}:{changeset}"
+ for locale, changeset in chunked_locales
+ ]
+ )
+ chunked["attributes"]["l10n_chunk"] = str(this_chunk)
+ # strip revision
+ chunked["attributes"]["chunk_locales"] = [
+ locale for locale, _ in chunked_locales
+ ]
+
+ # add the chunk number to the TH symbol
+ chunked["treeherder"]["symbol"] = add_suffix(
+ chunked["treeherder"]["symbol"], this_chunk
+ )
+ yield chunked
+ else:
+ job["mozharness"]["options"] = job["mozharness"].get("options", [])
+ job["mozharness"]["options"].extend(
+ [
+ f"locale={locale}:{changeset}"
+ for locale, changeset in sorted(locales_with_changesets.items())
+ ]
+ )
+ yield job
+
+
+transforms.add_validate(l10n_description_schema)
+
+
+@transforms.add
+def stub_installer(config, jobs):
+ for job in jobs:
+ job.setdefault("attributes", {})
+ job.setdefault("env", {})
+ if job["attributes"].get("stub-installer"):
+ job["env"].update({"USE_STUB_INSTALLER": "1"})
+ yield job
+
+
+@transforms.add
+def set_extra_config(config, jobs):
+ for job in jobs:
+ job["mozharness"].setdefault("extra-config", {})["branch"] = config.params[
+ "project"
+ ]
+ if "update-channel" in job["attributes"]:
+ job["mozharness"]["extra-config"]["update_channel"] = job["attributes"][
+ "update-channel"
+ ]
+ yield job
+
+
+@transforms.add
+def make_job_description(config, jobs):
+ for job in jobs:
+ job["mozharness"].update(
+ {
+ "using": "mozharness",
+ "job-script": "taskcluster/scripts/builder/build-l10n.sh",
+ "secrets": job.get("secrets", False),
+ }
+ )
+ job_description = {
+ "name": job["name"],
+ "worker-type": job["worker-type"],
+ "description": job["description"],
+ "run": job["mozharness"],
+ "attributes": job["attributes"],
+ "treeherder": {
+ "kind": "build",
+ "tier": job["treeherder"]["tier"],
+ "symbol": job["treeherder"]["symbol"],
+ "platform": job["treeherder"]["platform"],
+ },
+ "run-on-projects": job.get("run-on-projects")
+ if job.get("run-on-projects")
+ else [],
+ }
+ if job.get("extra"):
+ job_description["extra"] = job["extra"]
+
+ job_description["run"]["tooltool-downloads"] = job["tooltool"]
+
+ job_description["worker"] = {
+ "max-run-time": job["run-time"],
+ "chain-of-trust": True,
+ }
+ if job["worker-type"] == "b-win2012":
+ job_description["worker"]["os"] = "windows"
+ job_description["run"]["use-simple-package"] = False
+ job_description["run"]["use-magic-mh-args"] = False
+
+ if job.get("docker-image"):
+ job_description["worker"]["docker-image"] = job["docker-image"]
+
+ if job.get("fetches"):
+ job_description["fetches"] = job["fetches"]
+
+ if job.get("index"):
+ job_description["index"] = {
+ "product": job["index"]["product"],
+ "job-name": job["index"]["job-name"],
+ "type": job["index"].get("type", "generic"),
+ }
+
+ if job.get("dependencies"):
+ job_description["dependencies"] = job["dependencies"]
+ if job.get("env"):
+ job_description["worker"]["env"] = job["env"]
+ if job.get("when", {}).get("files-changed"):
+ job_description.setdefault("when", {})
+ job_description["when"]["files-changed"] = [job["locales-file"]] + job[
+ "when"
+ ]["files-changed"]
+
+ if "shipping-phase" in job:
+ job_description["shipping-phase"] = job["shipping-phase"]
+
+ if "shipping-product" in job:
+ job_description["shipping-product"] = job["shipping-product"]
+
+ yield job_description
diff --git a/taskcluster/gecko_taskgraph/transforms/mac_dummy.py b/taskcluster/gecko_taskgraph/transforms/mac_dummy.py
new file mode 100644
index 0000000000..f134ee2765
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/mac_dummy.py
@@ -0,0 +1,40 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Add dependencies to dummy macosx64 tasks.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def add_dependencies(config, jobs):
+ for job in jobs:
+ dependencies = {}
+
+ platform = job.get("attributes", {}).get("build_platform")
+ if not platform:
+ continue
+ arm = platform.replace("macosx64", "macosx64-aarch64")
+ intel = platform.replace("macosx64", "macosx64-x64")
+ for dep_task in config.kind_dependencies_tasks.values():
+ # Weed out unwanted tasks.
+ if dep_task.attributes.get("build_platform"):
+ if dep_task.attributes["build_platform"] not in (platform, arm, intel):
+ continue
+ # Add matching tasks to deps
+ dependencies[dep_task.label] = dep_task.label
+ # Pick one task to copy run-on-projects from
+ if (
+ dep_task.kind == "build"
+ and dep_task.attributes["build_platform"] == platform
+ ):
+ job["run-on-projects"] = dep_task.attributes.get("run_on_projects")
+
+ job.setdefault("dependencies", {}).update(dependencies)
+ job["if-dependencies"] = list(dependencies)
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/mac_notarization.py b/taskcluster/gecko_taskgraph/transforms/mac_notarization.py
new file mode 100644
index 0000000000..5591022e1b
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/mac_notarization.py
@@ -0,0 +1,19 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform mac notarization tasks
+"""
+
+from taskgraph.transforms.base import TransformSequence
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def only_level_3_notarization(config, jobs):
+ """Filter out any notarization jobs that are not level 3"""
+ for job in jobs:
+ if "notarization" in config.kind and int(config.params["level"]) != 3:
+ continue
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/mar_signing.py b/taskcluster/gecko_taskgraph/transforms/mar_signing.py
new file mode 100644
index 0000000000..d923721f45
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/mar_signing.py
@@ -0,0 +1,140 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the {partials,mar}-signing task into an actual task description.
+"""
+
+import logging
+import os
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.taskcluster import get_artifact_prefix
+from taskgraph.util.treeherder import inherit_treeherder_from_dep, join_symbol
+
+from gecko_taskgraph.util.attributes import (
+ copy_attributes_from_dependent_job,
+ sorted_unique_list,
+)
+from gecko_taskgraph.util.partials import get_partials_artifacts_from_params
+from gecko_taskgraph.util.scriptworker import get_signing_cert_scope_per_platform
+
+logger = logging.getLogger(__name__)
+
+SIGNING_FORMATS = {
+ "mar-signing-autograph-stage": {
+ "target.complete.mar": ["autograph_stage_mar384"],
+ },
+ "default": {
+ "target.complete.mar": ["autograph_hash_only_mar384"],
+ },
+}
+
+transforms = TransformSequence()
+
+
+def generate_partials_artifacts(job, release_history, platform, locale=None):
+ artifact_prefix = get_artifact_prefix(job)
+ if locale:
+ artifact_prefix = f"{artifact_prefix}/{locale}"
+ else:
+ locale = "en-US"
+
+ artifacts = get_partials_artifacts_from_params(release_history, platform, locale)
+
+ upstream_artifacts = [
+ {
+ "taskId": {"task-reference": "<partials>"},
+ "taskType": "partials",
+ "paths": [f"{artifact_prefix}/{path}" for path, version in artifacts],
+ "formats": ["autograph_hash_only_mar384"],
+ }
+ ]
+
+ return upstream_artifacts
+
+
+def generate_complete_artifacts(job, kind):
+ upstream_artifacts = []
+ if kind not in SIGNING_FORMATS:
+ kind = "default"
+ for artifact in job.attributes["release_artifacts"]:
+ basename = os.path.basename(artifact)
+ if basename in SIGNING_FORMATS[kind]:
+ upstream_artifacts.append(
+ {
+ "taskId": {"task-reference": f"<{job.kind}>"},
+ "taskType": "build",
+ "paths": [artifact],
+ "formats": SIGNING_FORMATS[kind][basename],
+ }
+ )
+
+ return upstream_artifacts
+
+
+@transforms.add
+def make_task_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ locale = dep_job.attributes.get("locale")
+
+ treeherder = inherit_treeherder_from_dep(job, dep_job)
+ treeherder.setdefault(
+ "symbol", join_symbol(job.get("treeherder-group", "ms"), locale or "N")
+ )
+
+ label = job.get("label", f"{config.kind}-{dep_job.label}")
+
+ dependencies = {dep_job.kind: dep_job.label}
+ signing_dependencies = dep_job.dependencies
+ # This is so we get the build task etc in our dependencies to
+ # have better beetmover support.
+ dependencies.update(signing_dependencies)
+
+ attributes = copy_attributes_from_dependent_job(dep_job)
+ attributes["required_signoffs"] = sorted_unique_list(
+ attributes.get("required_signoffs", []), job.pop("required_signoffs")
+ )
+ attributes["shipping_phase"] = job["shipping-phase"]
+ if locale:
+ attributes["locale"] = locale
+
+ build_platform = attributes.get("build_platform")
+ if config.kind == "partials-signing":
+ upstream_artifacts = generate_partials_artifacts(
+ dep_job, config.params["release_history"], build_platform, locale
+ )
+ else:
+ upstream_artifacts = generate_complete_artifacts(dep_job, config.kind)
+
+ is_shippable = job.get(
+ "shippable", dep_job.attributes.get("shippable") # First check current job
+ ) # Then dep job for 'shippable'
+ signing_cert_scope = get_signing_cert_scope_per_platform(
+ build_platform, is_shippable, config
+ )
+
+ scopes = [signing_cert_scope]
+
+ task = {
+ "label": label,
+ "description": "{} {}".format(
+ dep_job.description, job["description-suffix"]
+ ),
+ "worker-type": job.get("worker-type", "linux-signing"),
+ "worker": {
+ "implementation": "scriptworker-signing",
+ "upstream-artifacts": upstream_artifacts,
+ "max-run-time": 3600,
+ },
+ "dependencies": dependencies,
+ "attributes": attributes,
+ "scopes": scopes,
+ "run-on-projects": job.get(
+ "run-on-projects", dep_job.attributes.get("run_on_projects")
+ ),
+ "treeherder": treeherder,
+ }
+
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/maybe_release.py b/taskcluster/gecko_taskgraph/transforms/maybe_release.py
new file mode 100644
index 0000000000..08a066001a
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/maybe_release.py
@@ -0,0 +1,23 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import resolve_keyed_by
+
+from gecko_taskgraph.util.attributes import release_level
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def make_task_description(config, jobs):
+ for job in jobs:
+ for key in ["worker-type", "scopes"]:
+ resolve_keyed_by(
+ job,
+ key,
+ item_name=job["name"],
+ **{"release-level": release_level(config.params["project"])}
+ )
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/merge_automation.py b/taskcluster/gecko_taskgraph/transforms/merge_automation.py
new file mode 100644
index 0000000000..ca5f3b6bde
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/merge_automation.py
@@ -0,0 +1,81 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the update generation task into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import resolve_keyed_by
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def handle_keyed_by(config, tasks):
+ """Resolve fields that can be keyed by platform, etc."""
+ if "merge_config" not in config.params:
+ return
+ merge_config = config.params["merge_config"]
+ fields = [
+ "worker.push",
+ "worker-type",
+ "worker.l10n-bump-info",
+ "worker.source-repo",
+ ]
+ for task in tasks:
+ for field in fields:
+ resolve_keyed_by(
+ task,
+ field,
+ item_name=task["name"],
+ **{
+ "project": config.params["project"],
+ "release-type": config.params["release_type"],
+ "behavior": merge_config["behavior"],
+ }
+ )
+ yield task
+
+
+@transforms.add
+def update_labels(config, tasks):
+ for task in tasks:
+ merge_config = config.params["merge_config"]
+ task["label"] = "merge-{}".format(merge_config["behavior"])
+ treeherder = task.get("treeherder", {})
+ treeherder["symbol"] = "Rel({})".format(merge_config["behavior"])
+ task["treeherder"] = treeherder
+ yield task
+
+
+@transforms.add
+def add_payload_config(config, tasks):
+ for task in tasks:
+ if "merge_config" not in config.params:
+ break
+ merge_config = config.params["merge_config"]
+ worker = task["worker"]
+ worker["merge-info"] = config.graph_config["merge-automation"]["behaviors"][
+ merge_config["behavior"]
+ ]
+
+ if "l10n-bump-info" in worker and worker["l10n-bump-info"] is None:
+ del worker["l10n-bump-info"]
+
+ # Override defaults, useful for testing.
+ for field in [
+ "from-repo",
+ "from-branch",
+ "to-repo",
+ "to-branch",
+ "fetch-version-from",
+ ]:
+ if merge_config.get(field):
+ worker["merge-info"][field] = merge_config[field]
+
+ worker["force-dry-run"] = merge_config["force-dry-run"]
+ worker["ssh-user"] = merge_config.get("ssh-user-alias", "merge_user")
+ if merge_config.get("push"):
+ worker["push"] = merge_config["push"]
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/name_sanity.py b/taskcluster/gecko_taskgraph/transforms/name_sanity.py
new file mode 100644
index 0000000000..856f4f82be
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/name_sanity.py
@@ -0,0 +1,45 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Generate labels for tasks without names, consistently.
+Uses attributes from `primary-dependency`.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def make_label(config, jobs):
+ """Generate a sane label for a new task constructed from a dependency
+ Using attributes from the dependent job and the current task kind"""
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ attr = dep_job.attributes.get
+
+ if attr("locale", job.get("locale")):
+ template = "{kind}-{locale}-{build_platform}/{build_type}"
+ elif attr("l10n_chunk"):
+ template = "{kind}-{build_platform}-{l10n_chunk}/{build_type}"
+ elif config.kind.startswith("release-eme-free") or config.kind.startswith(
+ "release-partner-repack"
+ ):
+ suffix = job.get("extra", {}).get("repack_suffix", None) or job.get(
+ "extra", {}
+ ).get("repack_id", None)
+ template = "{kind}-{build_platform}"
+ if suffix:
+ template += "-{}".format(suffix.replace("/", "-"))
+ else:
+ template = "{kind}-{build_platform}/{build_type}"
+ job["label"] = template.format(
+ kind=config.kind,
+ build_platform=attr("build_platform"),
+ build_type=attr("build_type"),
+ locale=attr("locale", job.get("locale", "")), # Locale can be absent
+ l10n_chunk=attr("l10n_chunk", ""), # Can be empty
+ )
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/openh264.py b/taskcluster/gecko_taskgraph/transforms/openh264.py
new file mode 100644
index 0000000000..f41215d20b
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/openh264.py
@@ -0,0 +1,26 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+This transform is used to help populate mozharness options for openh264 jobs
+"""
+
+from taskgraph.transforms.base import TransformSequence
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def set_mh_options(config, jobs):
+ """
+ This transform sets the 'openh264_rev' attribute.
+ """
+ for job in jobs:
+ repo = job.pop("repo")
+ rev = job.pop("revision")
+ attributes = job.setdefault("attributes", {})
+ attributes["openh264_rev"] = rev
+ run = job.setdefault("run", {})
+ options = run.setdefault("options", [])
+ options.extend([f"repo={repo}", f"rev={rev}"])
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/openh264_signing.py b/taskcluster/gecko_taskgraph/transforms/openh264_signing.py
new file mode 100644
index 0000000000..dfffc7cc17
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/openh264_signing.py
@@ -0,0 +1,109 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the repackage signing task into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.treeherder import inherit_treeherder_from_dep
+from voluptuous import Optional
+
+from gecko_taskgraph.loader.single_dep import schema
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
+from gecko_taskgraph.util.scriptworker import get_signing_cert_scope_per_platform
+
+transforms = TransformSequence()
+
+signing_description_schema = schema.extend(
+ {
+ Optional("label"): str,
+ Optional("extra"): object,
+ Optional("shipping-product"): task_description_schema["shipping-product"],
+ Optional("shipping-phase"): task_description_schema["shipping-phase"],
+ }
+)
+
+transforms.add_validate(signing_description_schema)
+
+
+@transforms.add
+def make_signing_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ attributes = dep_job.attributes
+ build_platform = dep_job.attributes.get("build_platform")
+ is_nightly = True # cert_scope_per_platform uses this to choose the right cert
+
+ description = (
+ "Signing of OpenH264 Binaries for '"
+ "{build_platform}/{build_type}'".format(
+ build_platform=attributes.get("build_platform"),
+ build_type=attributes.get("build_type"),
+ )
+ )
+
+ # we have a genuine repackage job as our parent
+ dependencies = {"openh264": dep_job.label}
+
+ my_attributes = copy_attributes_from_dependent_job(dep_job)
+
+ signing_cert_scope = get_signing_cert_scope_per_platform(
+ build_platform, is_nightly, config
+ )
+
+ scopes = [signing_cert_scope]
+ worker_type = "linux-signing"
+ worker = {
+ "implementation": "scriptworker-signing",
+ "max-run-time": 3600,
+ }
+ rev = attributes["openh264_rev"]
+ upstream_artifact = {
+ "taskId": {"task-reference": "<openh264>"},
+ "taskType": "build",
+ }
+
+ if "win" in build_platform:
+ # job['primary-dependency'].task['payload']['command']
+ upstream_artifact["formats"] = ["autograph_authenticode_sha2"]
+ elif "mac" in build_platform:
+ upstream_artifact["formats"] = ["mac_single_file"]
+ upstream_artifact["singleFileGlobs"] = ["libgmpopenh264.dylib"]
+ worker_type = "mac-signing"
+ worker["mac-behavior"] = "mac_notarize_single_file"
+ else:
+ upstream_artifact["formats"] = ["autograph_gpg"]
+
+ upstream_artifact["paths"] = [
+ f"private/openh264/openh264-{build_platform}-{rev}.zip",
+ ]
+ worker["upstream-artifacts"] = [upstream_artifact]
+
+ treeherder = inherit_treeherder_from_dep(job, dep_job)
+ treeherder.setdefault(
+ "symbol",
+ _generate_treeherder_symbol(
+ dep_job.task.get("extra", {}).get("treeherder", {}).get("symbol")
+ ),
+ )
+
+ task = {
+ "label": job["label"],
+ "description": description,
+ "worker-type": worker_type,
+ "worker": worker,
+ "scopes": scopes,
+ "dependencies": dependencies,
+ "attributes": my_attributes,
+ "run-on-projects": dep_job.attributes.get("run_on_projects"),
+ "treeherder": treeherder,
+ }
+
+ yield task
+
+
+def _generate_treeherder_symbol(build_symbol):
+ symbol = build_symbol + "s"
+ return symbol
diff --git a/taskcluster/gecko_taskgraph/transforms/partials.py b/taskcluster/gecko_taskgraph/transforms/partials.py
new file mode 100644
index 0000000000..267739cfc3
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/partials.py
@@ -0,0 +1,172 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the partials task into an actual task description.
+"""
+
+import logging
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.taskcluster import get_artifact_prefix
+from taskgraph.util.treeherder import inherit_treeherder_from_dep
+
+from gecko_taskgraph.util.attributes import (
+ copy_attributes_from_dependent_job,
+ release_level,
+)
+from gecko_taskgraph.util.partials import get_builds
+from gecko_taskgraph.util.platforms import architecture
+
+logger = logging.getLogger(__name__)
+
+transforms = TransformSequence()
+
+
+def _generate_task_output_files(job, filenames, locale=None):
+ locale_output_path = f"{locale}/" if locale else ""
+ artifact_prefix = get_artifact_prefix(job)
+
+ data = list()
+ for filename in filenames:
+ data.append(
+ {
+ "type": "file",
+ "path": f"/home/worker/artifacts/{filename}",
+ "name": f"{artifact_prefix}/{locale_output_path}{filename}",
+ }
+ )
+ data.append(
+ {
+ "type": "file",
+ "path": "/home/worker/artifacts/manifest.json",
+ "name": f"{artifact_prefix}/{locale_output_path}manifest.json",
+ }
+ )
+ return data
+
+
+def identify_desired_signing_keys(project, product):
+ if project in ["mozilla-central", "comm-central", "oak"]:
+ return "nightly"
+ if project == "mozilla-beta":
+ if product == "devedition":
+ return "nightly"
+ return "release"
+ if (
+ project in ["mozilla-release", "comm-beta"]
+ or project.startswith("mozilla-esr")
+ or project.startswith("comm-esr")
+ ):
+ return "release"
+ return "dep1"
+
+
+@transforms.add
+def make_task_description(config, jobs):
+ # If no balrog release history, then don't generate partials
+ if not config.params.get("release_history"):
+ return
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+
+ treeherder = inherit_treeherder_from_dep(job, dep_job)
+ treeherder.setdefault("symbol", "p(N)")
+
+ label = job.get("label", f"partials-{dep_job.label}")
+
+ dependencies = {dep_job.kind: dep_job.label}
+
+ attributes = copy_attributes_from_dependent_job(dep_job)
+ locale = dep_job.attributes.get("locale")
+ if locale:
+ attributes["locale"] = locale
+ treeherder["symbol"] = f"p({locale})"
+ attributes["shipping_phase"] = job["shipping-phase"]
+
+ build_locale = locale or "en-US"
+
+ build_platform = attributes["build_platform"]
+ builds = get_builds(
+ config.params["release_history"], build_platform, build_locale
+ )
+
+ # If the list is empty there's no available history for this platform
+ # and locale combination, so we can't build any partials.
+ if not builds:
+ continue
+
+ extra = {"funsize": {"partials": list()}}
+ update_number = 1
+
+ locale_suffix = ""
+ if locale:
+ locale_suffix = f"{locale}/"
+ artifact_path = "<{}/{}/{}target.complete.mar>".format(
+ dep_job.kind,
+ get_artifact_prefix(dep_job),
+ locale_suffix,
+ )
+ for build in sorted(builds):
+ partial_info = {
+ "locale": build_locale,
+ "from_mar": builds[build]["mar_url"],
+ "to_mar": {"artifact-reference": artifact_path},
+ "branch": config.params["project"],
+ "update_number": update_number,
+ "dest_mar": build,
+ }
+ if "product" in builds[build]:
+ partial_info["product"] = builds[build]["product"]
+ if "previousVersion" in builds[build]:
+ partial_info["previousVersion"] = builds[build]["previousVersion"]
+ if "previousBuildNumber" in builds[build]:
+ partial_info["previousBuildNumber"] = builds[build][
+ "previousBuildNumber"
+ ]
+ extra["funsize"]["partials"].append(partial_info)
+ update_number += 1
+
+ level = config.params["level"]
+
+ worker = {
+ "artifacts": _generate_task_output_files(dep_job, builds.keys(), locale),
+ "implementation": "docker-worker",
+ "docker-image": {"in-tree": "funsize-update-generator"},
+ "os": "linux",
+ "max-run-time": 3600 if "asan" in dep_job.label else 1800,
+ "chain-of-trust": True,
+ "taskcluster-proxy": True,
+ "env": {
+ "SIGNING_CERT": identify_desired_signing_keys(
+ config.params["project"], config.params["release_product"]
+ ),
+ "EXTRA_PARAMS": f"--arch={architecture(build_platform)}",
+ "MAR_CHANNEL_ID": attributes["mar-channel-id"],
+ },
+ }
+ if release_level(config.params["project"]) == "staging":
+ worker["env"]["FUNSIZE_ALLOW_STAGING_PREFIXES"] = "true"
+
+ task = {
+ "label": label,
+ "description": f"{dep_job.description} Partials",
+ "worker-type": "b-linux-gcp",
+ "dependencies": dependencies,
+ "scopes": [],
+ "attributes": attributes,
+ "run-on-projects": dep_job.attributes.get("run_on_projects"),
+ "treeherder": treeherder,
+ "extra": extra,
+ "worker": worker,
+ }
+
+ # We only want caching on linux/windows due to bug 1436977
+ if int(level) == 3 and any(
+ [build_platform.startswith(prefix) for prefix in ["linux", "win"]]
+ ):
+ task["scopes"].append(
+ "auth:aws-s3:read-write:tc-gp-private-1d-us-east-1/releng/mbsdiff-cache/"
+ )
+
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/partner_attribution.py b/taskcluster/gecko_taskgraph/transforms/partner_attribution.py
new file mode 100644
index 0000000000..0bd5e0d141
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/partner_attribution.py
@@ -0,0 +1,129 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the partner attribution task into an actual task description.
+"""
+
+
+import json
+import logging
+from collections import defaultdict
+
+from taskgraph.transforms.base import TransformSequence
+
+from gecko_taskgraph.util.partners import (
+ apply_partner_priority,
+ check_if_partners_enabled,
+ generate_attribution_code,
+ get_partner_config_by_kind,
+)
+
+log = logging.getLogger(__name__)
+
+transforms = TransformSequence()
+transforms.add(check_if_partners_enabled)
+transforms.add(apply_partner_priority)
+
+
+@transforms.add
+def add_command_arguments(config, tasks):
+ enabled_partners = config.params.get("release_partners")
+ dependencies = {}
+ fetches = defaultdict(set)
+ attributions = []
+ release_artifacts = []
+ attribution_config = get_partner_config_by_kind(config, config.kind)
+
+ for partner_config in attribution_config.get("configs", []):
+ # we might only be interested in a subset of all partners, eg for a respin
+ if enabled_partners and partner_config["campaign"] not in enabled_partners:
+ continue
+ attribution_code = generate_attribution_code(
+ attribution_config["defaults"], partner_config
+ )
+ for platform in partner_config["platforms"]:
+ stage_platform = platform.replace("-shippable", "")
+ for locale in partner_config["locales"]:
+ # find the upstream, throw away locales we don't have, somehow. Skip ?
+ if locale == "en-US":
+ upstream_label = "repackage-signing-{platform}/opt".format(
+ platform=platform
+ )
+ upstream_artifact = "target.installer.exe"
+ else:
+ upstream_label = (
+ "repackage-signing-l10n-{locale}-{platform}/opt".format(
+ locale=locale, platform=platform
+ )
+ )
+ upstream_artifact = "{locale}/target.installer.exe".format(
+ locale=locale
+ )
+ if upstream_label not in config.kind_dependencies_tasks:
+ raise Exception(f"Can't find upstream task for {platform} {locale}")
+ upstream = config.kind_dependencies_tasks[upstream_label]
+
+ # set the dependencies to just what we need rather than all of l10n
+ dependencies.update({upstream.label: upstream.label})
+
+ fetches[upstream_label].add((upstream_artifact, stage_platform, locale))
+
+ artifact_part = "{platform}/{locale}/target.installer.exe".format(
+ platform=stage_platform, locale=locale
+ )
+ artifact = (
+ "releng/partner/{partner}/{sub_partner}/{artifact_part}".format(
+ partner=partner_config["campaign"],
+ sub_partner=partner_config["content"],
+ artifact_part=artifact_part,
+ )
+ )
+ # config for script
+ # TODO - generalise input & output ??
+ # add releng/partner prefix via get_artifact_prefix..()
+ attributions.append(
+ {
+ "input": f"/builds/worker/fetches/{artifact_part}",
+ "output": f"/builds/worker/artifacts/{artifact}",
+ "attribution": attribution_code,
+ }
+ )
+ release_artifacts.append(artifact)
+
+ # bail-out early if we don't have any attributions to do
+ if not attributions:
+ return
+
+ for task in tasks:
+ worker = task.get("worker", {})
+ worker["chain-of-trust"] = True
+
+ task.setdefault("dependencies", {}).update(dependencies)
+ task.setdefault("fetches", {})
+ for upstream_label, upstream_artifacts in fetches.items():
+ task["fetches"][upstream_label] = [
+ {
+ "artifact": upstream_artifact,
+ "dest": "{platform}/{locale}".format(
+ platform=platform, locale=locale
+ ),
+ "extract": False,
+ "verify-hash": True,
+ }
+ for upstream_artifact, platform, locale in upstream_artifacts
+ ]
+ worker.setdefault("env", {})["ATTRIBUTION_CONFIG"] = json.dumps(
+ attributions, sort_keys=True
+ )
+ worker["artifacts"] = [
+ {
+ "name": "releng/partner",
+ "path": "/builds/worker/artifacts/releng/partner",
+ "type": "directory",
+ }
+ ]
+ task.setdefault("attributes", {})["release_artifacts"] = release_artifacts
+ task["label"] = config.kind
+
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/partner_attribution_beetmover.py b/taskcluster/gecko_taskgraph/transforms/partner_attribution_beetmover.py
new file mode 100644
index 0000000000..b2c435dd81
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/partner_attribution_beetmover.py
@@ -0,0 +1,202 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the beetmover task into an actual task description.
+"""
+
+from collections import defaultdict
+from copy import deepcopy
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import optionally_keyed_by, resolve_keyed_by
+from taskgraph.util.taskcluster import get_artifact_prefix
+from voluptuous import Any, Optional, Required
+
+from gecko_taskgraph.loader.single_dep import schema
+from gecko_taskgraph.transforms.beetmover import craft_release_properties
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.attributes import (
+ copy_attributes_from_dependent_job,
+ release_level,
+)
+from gecko_taskgraph.util.partners import (
+ apply_partner_priority,
+ get_partner_config_by_kind,
+)
+from gecko_taskgraph.util.scriptworker import (
+ add_scope_prefix,
+ get_beetmover_bucket_scope,
+)
+
+beetmover_description_schema = schema.extend(
+ {
+ # depname is used in taskref's to identify the taskID of the unsigned things
+ Required("depname", default="build"): str,
+ # unique label to describe this beetmover task, defaults to {dep.label}-beetmover
+ Optional("label"): str,
+ Required("partner-bucket-scope"): optionally_keyed_by("release-level", str),
+ Required("partner-public-path"): Any(None, str),
+ Required("partner-private-path"): Any(None, str),
+ Optional("extra"): object,
+ Required("shipping-phase"): task_description_schema["shipping-phase"],
+ Optional("shipping-product"): task_description_schema["shipping-product"],
+ Optional("priority"): task_description_schema["priority"],
+ }
+)
+
+transforms = TransformSequence()
+transforms.add_validate(beetmover_description_schema)
+transforms.add(apply_partner_priority)
+
+
+@transforms.add
+def resolve_keys(config, jobs):
+ for job in jobs:
+ resolve_keyed_by(
+ job,
+ "partner-bucket-scope",
+ item_name=job["label"],
+ **{"release-level": release_level(config.params["project"])},
+ )
+ yield job
+
+
+@transforms.add
+def split_public_and_private(config, jobs):
+ # we need to separate private vs public destinations because beetmover supports one
+ # in a single task. Only use a single task for each type though.
+ partner_config = get_partner_config_by_kind(config, config.kind)
+ for job in jobs:
+ upstream_artifacts = job["primary-dependency"].attributes.get(
+ "release_artifacts"
+ )
+ attribution_task_ref = "<{}>".format(job["primary-dependency"].label)
+ prefix = get_artifact_prefix(job["primary-dependency"])
+ artifacts = defaultdict(list)
+ for artifact in upstream_artifacts:
+ partner, sub_partner, platform, locale, _ = artifact.replace(
+ prefix + "/", ""
+ ).split("/", 4)
+ destination = "private"
+ this_config = [
+ p
+ for p in partner_config["configs"]
+ if (p["campaign"] == partner and p["content"] == sub_partner)
+ ]
+ if this_config[0].get("upload_to_candidates"):
+ destination = "public"
+ artifacts[destination].append(
+ (artifact, partner, sub_partner, platform, locale)
+ )
+
+ action_scope = add_scope_prefix(config, "beetmover:action:push-to-partner")
+ public_bucket_scope = get_beetmover_bucket_scope(config)
+ partner_bucket_scope = add_scope_prefix(config, job["partner-bucket-scope"])
+ repl_dict = {
+ "build_number": config.params["build_number"],
+ "release_partner_build_number": config.params[
+ "release_partner_build_number"
+ ],
+ "version": config.params["version"],
+ "partner": "{partner}", # we'll replace these later, per artifact
+ "subpartner": "{subpartner}",
+ "platform": "{platform}",
+ "locale": "{locale}",
+ }
+ for destination, destination_artifacts in artifacts.items():
+ this_job = deepcopy(job)
+
+ if destination == "public":
+ this_job["scopes"] = [public_bucket_scope, action_scope]
+ this_job["partner_public"] = True
+ else:
+ this_job["scopes"] = [partner_bucket_scope, action_scope]
+ this_job["partner_public"] = False
+
+ partner_path_key = f"partner-{destination}-path"
+ partner_path = this_job[partner_path_key].format(**repl_dict)
+ this_job.setdefault("worker", {})[
+ "upstream-artifacts"
+ ] = generate_upstream_artifacts(
+ attribution_task_ref, destination_artifacts, partner_path
+ )
+
+ yield this_job
+
+
+@transforms.add
+def make_task_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+
+ attributes = dep_job.attributes
+ build_platform = attributes.get("build_platform")
+ if not build_platform:
+ raise Exception("Cannot find build platform!")
+
+ label = config.kind
+ description = "Beetmover for partner attribution"
+ if job["partner_public"]:
+ label = f"{label}-public"
+ description = f"{description} public"
+ else:
+ label = f"{label}-private"
+ description = f"{description} private"
+ attributes = copy_attributes_from_dependent_job(dep_job)
+
+ task = {
+ "label": label,
+ "description": description,
+ "dependencies": {dep_job.kind: dep_job.label},
+ "attributes": attributes,
+ "run-on-projects": dep_job.attributes.get("run_on_projects"),
+ "shipping-phase": job["shipping-phase"],
+ "shipping-product": job.get("shipping-product"),
+ "partner_public": job["partner_public"],
+ "worker": job["worker"],
+ "scopes": job["scopes"],
+ }
+ # we may have reduced the priority for partner jobs, otherwise task.py will set it
+ if job.get("priority"):
+ task["priority"] = job["priority"]
+
+ yield task
+
+
+def generate_upstream_artifacts(attribution_task, artifacts, partner_path):
+ upstream_artifacts = []
+ for artifact, partner, subpartner, platform, locale in artifacts:
+ upstream_artifacts.append(
+ {
+ "taskId": {"task-reference": attribution_task},
+ "taskType": "repackage",
+ "paths": [artifact],
+ "locale": partner_path.format(
+ partner=partner,
+ subpartner=subpartner,
+ platform=platform,
+ locale=locale,
+ ),
+ }
+ )
+
+ if not upstream_artifacts:
+ raise Exception("Couldn't find any upstream artifacts.")
+
+ return upstream_artifacts
+
+
+@transforms.add
+def make_task_worker(config, jobs):
+ for job in jobs:
+ job["worker-type"] = "beetmover"
+ worker = {
+ "implementation": "beetmover",
+ "release-properties": craft_release_properties(config, job),
+ "partner-public": job["partner_public"],
+ }
+ job["worker"].update(worker)
+ del job["partner_public"]
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/partner_repack.py b/taskcluster/gecko_taskgraph/transforms/partner_repack.py
new file mode 100644
index 0000000000..d164c10a59
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/partner_repack.py
@@ -0,0 +1,136 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the partner repack task into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import resolve_keyed_by
+
+from gecko_taskgraph.util.attributes import release_level
+from gecko_taskgraph.util.partners import (
+ apply_partner_priority,
+ check_if_partners_enabled,
+ get_partner_config_by_kind,
+ get_partner_url_config,
+ get_repack_ids_by_platform,
+)
+from gecko_taskgraph.util.scriptworker import get_release_config
+
+transforms = TransformSequence()
+transforms.add(check_if_partners_enabled)
+transforms.add(apply_partner_priority)
+
+
+@transforms.add
+def skip_unnecessary_platforms(config, tasks):
+ for task in tasks:
+ if config.kind == "release-partner-repack":
+ platform = task["attributes"]["build_platform"]
+ repack_ids = get_repack_ids_by_platform(config, platform)
+ if not repack_ids:
+ continue
+ yield task
+
+
+@transforms.add
+def remove_mac_dependency(config, tasks):
+ """Remove mac dependency depending on current level
+ to accomodate for mac notarization not running on level 1
+ """
+ level = int(config.params.get("level", 0))
+ for task in tasks:
+ if "macosx" not in task["attributes"]["build_platform"]:
+ yield task
+ continue
+ skipped_kind = "mac-signing" if level == 3 else "mac-notarization"
+ for dep_label in list(task["dependencies"].keys()):
+ if skipped_kind in dep_label:
+ del task["dependencies"][dep_label]
+ yield task
+
+
+@transforms.add
+def populate_repack_manifests_url(config, tasks):
+ for task in tasks:
+ partner_url_config = get_partner_url_config(config.params, config.graph_config)
+
+ for k in partner_url_config:
+ if config.kind.startswith(k):
+ task["worker"].setdefault("env", {})[
+ "REPACK_MANIFESTS_URL"
+ ] = partner_url_config[k]
+ break
+ else:
+ raise Exception("Can't find partner REPACK_MANIFESTS_URL")
+
+ for property in ("limit-locales",):
+ property = f"extra.{property}"
+ resolve_keyed_by(
+ task,
+ property,
+ property,
+ **{"release-level": release_level(config.params["project"])},
+ )
+
+ if task["worker"]["env"]["REPACK_MANIFESTS_URL"].startswith("git@"):
+ task.setdefault("scopes", []).append(
+ "secrets:get:project/releng/gecko/build/level-{level}/partner-github-ssh".format(
+ **config.params
+ )
+ )
+
+ yield task
+
+
+@transforms.add
+def make_label(config, tasks):
+ for task in tasks:
+ task["label"] = "{}-{}".format(config.kind, task["name"])
+ yield task
+
+
+@transforms.add
+def add_command_arguments(config, tasks):
+ release_config = get_release_config(config)
+
+ # staging releases - pass reduced set of locales to the repacking script
+ all_locales = set()
+ partner_config = get_partner_config_by_kind(config, config.kind)
+ for partner in partner_config.values():
+ for sub_partner in partner.values():
+ all_locales.update(sub_partner.get("locales", []))
+
+ for task in tasks:
+ # add the MOZHARNESS_OPTIONS, eg version=61.0, build-number=1, platform=win64
+ if not task["attributes"]["build_platform"].endswith("-shippable"):
+ raise Exception(
+ "Unexpected partner repack platform: {}".format(
+ task["attributes"]["build_platform"],
+ ),
+ )
+ platform = task["attributes"]["build_platform"].partition("-shippable")[0]
+ task["run"]["options"] = [
+ "version={}".format(release_config["version"]),
+ "build-number={}".format(release_config["build_number"]),
+ f"platform={platform}",
+ ]
+ if task["extra"]["limit-locales"]:
+ for locale in all_locales:
+ task["run"]["options"].append(f"limit-locale={locale}")
+ if "partner" in config.kind and config.params["release_partners"]:
+ for partner in config.params["release_partners"]:
+ task["run"]["options"].append(f"partner={partner}")
+
+ # The upstream taskIds are stored a special environment variable, because we want to use
+ # task-reference's to resolve dependencies, but the string handling of MOZHARNESS_OPTIONS
+ # blocks that. It's space-separated string of ids in the end.
+ task["worker"]["env"]["UPSTREAM_TASKIDS"] = {
+ "task-reference": " ".join([f"<{dep}>" for dep in task["dependencies"]])
+ }
+
+ # Forward the release type for bouncer product construction
+ task["worker"]["env"]["RELEASE_TYPE"] = config.params["release_type"]
+
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/partner_signing.py b/taskcluster/gecko_taskgraph/transforms/partner_signing.py
new file mode 100644
index 0000000000..c9b6b7a8cc
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/partner_signing.py
@@ -0,0 +1,66 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the signing task into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+
+from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
+from gecko_taskgraph.util.partners import get_partner_config_by_kind
+from gecko_taskgraph.util.signed_artifacts import (
+ generate_specifications_of_artifacts_to_sign,
+)
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def set_mac_label(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ if "mac-notarization" in config.kind:
+ default_label = dep_job.label.replace("mac-signing", "mac-notarization")
+ job.setdefault("label", default_label)
+ assert job["label"] != dep_job.label, "Unable to determine label for {}".format(
+ config.kind
+ )
+ yield job
+
+
+@transforms.add
+def define_upstream_artifacts(config, jobs):
+ partner_configs = get_partner_config_by_kind(config, config.kind)
+ if not partner_configs:
+ return
+
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ job["depname"] = dep_job.label
+ job["attributes"] = copy_attributes_from_dependent_job(dep_job)
+
+ repack_ids = job["extra"]["repack_ids"]
+ artifacts_specifications = generate_specifications_of_artifacts_to_sign(
+ config,
+ job,
+ keep_locale_template=True,
+ kind=config.kind,
+ )
+ task_type = "build"
+ if "notarization" in job["depname"] or "mac-signing" in job["depname"]:
+ task_type = "scriptworker"
+ job["upstream-artifacts"] = [
+ {
+ "taskId": {"task-reference": f"<{dep_job.kind}>"},
+ "taskType": task_type,
+ "paths": [
+ path_template.format(locale=repack_id)
+ for path_template in spec["artifacts"]
+ for repack_id in repack_ids
+ ],
+ "formats": spec["formats"],
+ }
+ for spec in artifacts_specifications
+ ]
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/per_platform_dummy.py b/taskcluster/gecko_taskgraph/transforms/per_platform_dummy.py
new file mode 100644
index 0000000000..5237f4f281
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/per_platform_dummy.py
@@ -0,0 +1,33 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the repackage task into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+
+from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def one_task_per_product_and_platform(config, jobs):
+ unique_products_and_platforms = set()
+ for job in jobs:
+ dep_task = job["primary-dependency"]
+ if "primary-dependency" in job:
+ del job["primary-dependency"]
+ product = dep_task.attributes.get("shipping_product")
+ platform = dep_task.attributes.get("build_platform")
+ if (product, platform) not in unique_products_and_platforms:
+ attr_denylist = ("l10n_chunk", "locale", "artifact_map", "artifact_prefix")
+ attributes = copy_attributes_from_dependent_job(
+ dep_task, denylist=attr_denylist
+ )
+ attributes.update(job.get("attributes", {}))
+ job["attributes"] = attributes
+ job["name"] = f"{product}-{platform}"
+ yield job
+ unique_products_and_platforms.add((product, platform))
diff --git a/taskcluster/gecko_taskgraph/transforms/perftest.py b/taskcluster/gecko_taskgraph/transforms/perftest.py
new file mode 100644
index 0000000000..5c579b48b5
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/perftest.py
@@ -0,0 +1,351 @@
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+This transform passes options from `mach perftest` to the corresponding task.
+"""
+
+
+import json
+from copy import deepcopy
+from datetime import date, timedelta
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import Schema, optionally_keyed_by, resolve_keyed_by
+from taskgraph.util.treeherder import join_symbol, split_symbol
+from voluptuous import Any, Extra, Optional
+
+transforms = TransformSequence()
+
+
+perftest_description_schema = Schema(
+ {
+ # The test names and the symbols to use for them: [test-symbol, test-path]
+ Optional("perftest"): [[str]],
+ # Metrics to gather for the test. These will be merged
+ # with options specified through perftest-perfherder-global
+ Optional("perftest-metrics"): optionally_keyed_by(
+ "perftest",
+ Any(
+ [str],
+ {str: Any(None, {str: Any(None, str, [str])})},
+ ),
+ ),
+ # Perfherder data options that will be applied to
+ # all metrics gathered.
+ Optional("perftest-perfherder-global"): optionally_keyed_by(
+ "perftest", {str: Any(None, str, [str])}
+ ),
+ # Extra options to add to the test's command
+ Optional("perftest-extra-options"): optionally_keyed_by("perftest", [str]),
+ # Variants of the test to make based on extra browsertime
+ # arguments. Expecting:
+ # [variant-suffix, options-to-use]
+ # If variant-suffix is `null` then the options will be added
+ # to the existing task. Otherwise, a new variant is created
+ # with the given suffix and with its options replaced.
+ Optional("perftest-btime-variants"): optionally_keyed_by(
+ "perftest", [[Any(None, str)]]
+ ),
+ # These options will be parsed in the next schemas
+ Extra: object,
+ }
+)
+
+
+transforms.add_validate(perftest_description_schema)
+
+
+@transforms.add
+def split_tests(config, jobs):
+ for job in jobs:
+ if job.get("perftest") is None:
+ yield job
+ continue
+
+ for test_symbol, test_name in job.pop("perftest"):
+ job_new = deepcopy(job)
+
+ job_new["perftest"] = test_symbol
+ job_new["name"] += "-" + test_symbol
+ job_new["treeherder"]["symbol"] = job["treeherder"]["symbol"].format(
+ symbol=test_symbol
+ )
+ job_new["run"]["command"] = job["run"]["command"].replace(
+ "{perftest_testname}", test_name
+ )
+
+ yield job_new
+
+
+@transforms.add
+def handle_keyed_by_perftest(config, jobs):
+ fields = ["perftest-metrics", "perftest-extra-options", "perftest-btime-variants"]
+ for job in jobs:
+ if job.get("perftest") is None:
+ yield job
+ continue
+
+ for field in fields:
+ resolve_keyed_by(job, field, item_name=job["name"])
+
+ job.pop("perftest")
+ yield job
+
+
+@transforms.add
+def parse_perftest_metrics(config, jobs):
+ """Parse the metrics into a dictionary immediately.
+
+ This way we can modify the extraOptions field (and others) entry through the
+ transforms that come later. The metrics aren't formatted until the end of the
+ transforms.
+ """
+ for job in jobs:
+ if job.get("perftest-metrics") is None:
+ yield job
+ continue
+ perftest_metrics = job.pop("perftest-metrics")
+
+ # If perftest metrics is a string, split it up first
+ if isinstance(perftest_metrics, list):
+ new_metrics_info = [{"name": metric} for metric in perftest_metrics]
+ else:
+ new_metrics_info = []
+ for metric, options in perftest_metrics.items():
+ entry = {"name": metric}
+ entry.update(options)
+ new_metrics_info.append(entry)
+
+ job["perftest-metrics"] = new_metrics_info
+ yield job
+
+
+@transforms.add
+def split_perftest_variants(config, jobs):
+ for job in jobs:
+ if job.get("variants") is None:
+ yield job
+ continue
+
+ for variant in job.pop("variants"):
+ job_new = deepcopy(job)
+
+ group, symbol = split_symbol(job_new["treeherder"]["symbol"])
+ group += "-" + variant
+ job_new["treeherder"]["symbol"] = join_symbol(group, symbol)
+ job_new["name"] += "-" + variant
+ job_new.setdefault("perftest-perfherder-global", {}).setdefault(
+ "extraOptions", []
+ ).append(variant)
+ job_new[variant] = True
+
+ yield job_new
+
+ yield job
+
+
+@transforms.add
+def split_btime_variants(config, jobs):
+ for job in jobs:
+ if job.get("perftest-btime-variants") is None:
+ yield job
+ continue
+
+ variants = job.pop("perftest-btime-variants")
+ if not variants:
+ yield job
+ continue
+
+ yield_existing = False
+ for suffix, options in variants:
+ if suffix is None:
+ # Append options to the existing job
+ job.setdefault("perftest-btime-variants", []).append(options)
+ yield_existing = True
+ else:
+ job_new = deepcopy(job)
+ group, symbol = split_symbol(job_new["treeherder"]["symbol"])
+ symbol += "-" + suffix
+ job_new["treeherder"]["symbol"] = join_symbol(group, symbol)
+ job_new["name"] += "-" + suffix
+ job_new.setdefault("perftest-perfherder-global", {}).setdefault(
+ "extraOptions", []
+ ).append(suffix)
+ # Replace the existing options with the new ones
+ job_new["perftest-btime-variants"] = [options]
+ yield job_new
+
+ # The existing job has been modified so we should also return it
+ if yield_existing:
+ yield job
+
+
+@transforms.add
+def setup_http3_tests(config, jobs):
+ for job in jobs:
+ if job.get("http3") is None or not job.pop("http3"):
+ yield job
+ continue
+ job.setdefault("perftest-btime-variants", []).append(
+ "firefox.preference=network.http.http3.enable:true"
+ )
+ yield job
+
+
+@transforms.add
+def setup_perftest_metrics(config, jobs):
+ for job in jobs:
+ if job.get("perftest-metrics") is None:
+ yield job
+ continue
+ perftest_metrics = job.pop("perftest-metrics")
+
+ # Options to apply to each metric
+ global_options = job.pop("perftest-perfherder-global", {})
+ for metric_info in perftest_metrics:
+ for opt, val in global_options.items():
+ if isinstance(val, list) and opt in metric_info:
+ metric_info[opt].extend(val)
+ elif not (isinstance(val, list) and len(val) == 0):
+ metric_info[opt] = val
+
+ quote_escape = '\\"'
+ if "win" in job.get("platform", ""):
+ # Escaping is a bit different on windows platforms
+ quote_escape = '\\\\\\"'
+
+ job["run"]["command"] = job["run"]["command"].replace(
+ "{perftest_metrics}",
+ " ".join(
+ [
+ ",".join(
+ [
+ ":".join(
+ [
+ option,
+ str(value)
+ .replace(" ", "")
+ .replace("'", quote_escape),
+ ]
+ )
+ for option, value in metric_info.items()
+ ]
+ )
+ for metric_info in perftest_metrics
+ ]
+ ),
+ )
+
+ yield job
+
+
+@transforms.add
+def setup_perftest_browsertime_variants(config, jobs):
+ for job in jobs:
+ if job.get("perftest-btime-variants") is None:
+ yield job
+ continue
+
+ job["run"]["command"] += " --browsertime-extra-options %s" % ",".join(
+ [opt.strip() for opt in job.pop("perftest-btime-variants")]
+ )
+
+ yield job
+
+
+@transforms.add
+def setup_perftest_extra_options(config, jobs):
+ for job in jobs:
+ if job.get("perftest-extra-options") is None:
+ yield job
+ continue
+ job["run"]["command"] += " " + " ".join(job.pop("perftest-extra-options"))
+ yield job
+
+
+@transforms.add
+def pass_perftest_options(config, jobs):
+ for job in jobs:
+ env = job.setdefault("worker", {}).setdefault("env", {})
+ env["PERFTEST_OPTIONS"] = json.dumps(
+ config.params["try_task_config"].get("perftest-options")
+ )
+ yield job
+
+
+@transforms.add
+def setup_perftest_test_date(config, jobs):
+ for job in jobs:
+ if (
+ job.get("attributes", {}).get("batch", False)
+ and "--test-date" not in job["run"]["command"]
+ ):
+ yesterday = (date.today() - timedelta(1)).strftime("%Y.%m.%d")
+ job["run"]["command"] += " --test-date %s" % yesterday
+ yield job
+
+
+@transforms.add
+def setup_regression_detector(config, jobs):
+ for job in jobs:
+ if "change-detector" in job.get("name"):
+
+ tasks_to_analyze = []
+ for task in config.params["try_task_config"].get("tasks", []):
+ # Explicitly skip these tasks since they're
+ # part of the mozperftest tasks
+ if "side-by-side" in task:
+ continue
+ if "change-detector" in task:
+ continue
+
+ # Select these tasks
+ if "browsertime" in task:
+ tasks_to_analyze.append(task)
+ elif "talos" in task:
+ tasks_to_analyze.append(task)
+ elif "awsy" in task:
+ tasks_to_analyze.append(task)
+ elif "perftest" in task:
+ tasks_to_analyze.append(task)
+
+ if len(tasks_to_analyze) == 0:
+ yield job
+ continue
+
+ # Make the change detector task depend on the tasks to analyze.
+ # This prevents the task from running until all data is available
+ # within the current push.
+ job["soft-dependencies"] = tasks_to_analyze
+ job["requires"] = "all-completed"
+
+ new_project = config.params["project"]
+ if (
+ "try" in config.params["project"]
+ or config.params["try_mode"] == "try_select"
+ ):
+ new_project = "try"
+
+ base_project = None
+ if (
+ config.params.get("try_task_config", {})
+ .get("env", {})
+ .get("PERF_BASE_REVISION", None)
+ is not None
+ ):
+ task_names = " --task-name ".join(tasks_to_analyze)
+ base_revision = config.params["try_task_config"]["env"][
+ "PERF_BASE_REVISION"
+ ]
+ base_project = new_project
+
+ # Add all the required information to the task
+ job["run"]["command"] = job["run"]["command"].format(
+ task_name=task_names,
+ base_revision=base_revision,
+ base_branch=base_project,
+ new_branch=new_project,
+ new_revision=config.params["head_rev"],
+ )
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/python_update.py b/taskcluster/gecko_taskgraph/transforms/python_update.py
new file mode 100644
index 0000000000..f4f135b585
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/python_update.py
@@ -0,0 +1,25 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the repo-update task into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import resolve_keyed_by
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def resolve_keys(config, tasks):
+ for task in tasks:
+ env = task["worker"].setdefault("env", {})
+ env["BRANCH"] = config.params["project"]
+ for envvar in env:
+ resolve_keyed_by(env, envvar, envvar, **config.params)
+
+ for envvar in list(env.keys()):
+ if not env.get(envvar):
+ del env[envvar]
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/release.py b/taskcluster/gecko_taskgraph/transforms/release.py
new file mode 100644
index 0000000000..1158252fe7
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/release.py
@@ -0,0 +1,20 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+"""
+Transforms for release tasks
+"""
+
+
+def run_on_releases(config, jobs):
+ """
+ Filter out jobs with `run-on-releases` set, and that don't match the
+ `release_type` paramater.
+ """
+ for job in jobs:
+ release_type = config.params["release_type"]
+ run_on_release_types = job.pop("run-on-releases", None)
+
+ if run_on_release_types is None or release_type in run_on_release_types:
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/release_beetmover_signed_addons.py b/taskcluster/gecko_taskgraph/transforms/release_beetmover_signed_addons.py
new file mode 100644
index 0000000000..fb8eb91f44
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/release_beetmover_signed_addons.py
@@ -0,0 +1,243 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the beetmover task into an actual task description.
+"""
+
+import copy
+import logging
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import optionally_keyed_by, resolve_keyed_by
+from taskgraph.util.treeherder import inherit_treeherder_from_dep
+from voluptuous import Optional, Required
+
+from gecko_taskgraph.loader.single_dep import schema
+from gecko_taskgraph.transforms.beetmover import craft_release_properties
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.attributes import (
+ copy_attributes_from_dependent_job,
+ release_level,
+)
+from gecko_taskgraph.util.scriptworker import (
+ generate_beetmover_artifact_map,
+ generate_beetmover_upstream_artifacts,
+ get_beetmover_action_scope,
+ get_beetmover_bucket_scope,
+)
+
+logger = logging.getLogger(__name__)
+
+
+transforms = TransformSequence()
+
+
+beetmover_description_schema = schema.extend(
+ {
+ # attributes is used for enabling artifact-map by declarative artifacts
+ Required("attributes"): {str: object},
+ # unique label to describe this beetmover task, defaults to {dep.label}-beetmover
+ Optional("label"): str,
+ # treeherder is allowed here to override any defaults we use for beetmover. See
+ # taskcluster/gecko_taskgraph/transforms/task.py for the schema details, and the
+ # below transforms for defaults of various values.
+ Optional("treeherder"): task_description_schema["treeherder"],
+ Required("description"): str,
+ Required("worker-type"): optionally_keyed_by("release-level", str),
+ Required("run-on-projects"): [],
+ # locale is passed only for l10n beetmoving
+ Optional("locale"): str,
+ Optional("shipping-phase"): task_description_schema["shipping-phase"],
+ Optional("shipping-product"): task_description_schema["shipping-product"],
+ }
+)
+
+
+transforms.add_validate(beetmover_description_schema)
+
+
+@transforms.add
+def resolve_keys(config, jobs):
+ for job in jobs:
+ for field in ("worker-type", "attributes.artifact_map"):
+ resolve_keyed_by(
+ job,
+ field,
+ item_name=job["label"],
+ **{
+ "release-level": release_level(config.params["project"]),
+ "release-type": config.params["release_type"],
+ "project": config.params["project"],
+ },
+ )
+ yield job
+
+
+@transforms.add
+def make_task_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ attributes = dep_job.attributes
+
+ treeherder = inherit_treeherder_from_dep(job, dep_job)
+ treeherder.setdefault(
+ "symbol", "langpack(BM{})".format(attributes.get("l10n_chunk", ""))
+ )
+
+ job["attributes"].update(copy_attributes_from_dependent_job(dep_job))
+ job["attributes"]["chunk_locales"] = dep_job.attributes.get(
+ "chunk_locales", ["en-US"]
+ )
+
+ job["description"] = job["description"].format(
+ locales="/".join(job["attributes"]["chunk_locales"]),
+ platform=job["attributes"]["build_platform"],
+ )
+
+ job["scopes"] = [
+ get_beetmover_bucket_scope(config),
+ get_beetmover_action_scope(config),
+ ]
+
+ job["dependencies"] = {"langpack-copy": dep_job.label}
+
+ job["run-on-projects"] = job.get(
+ "run_on_projects", dep_job.attributes["run_on_projects"]
+ )
+ job["treeherder"] = treeherder
+ job["shipping-phase"] = job.get(
+ "shipping-phase", dep_job.attributes["shipping_phase"]
+ )
+ job["shipping-product"] = dep_job.attributes["shipping_product"]
+
+ yield job
+
+
+@transforms.add
+def make_task_worker(config, jobs):
+ for job in jobs:
+ platform = job["attributes"]["build_platform"]
+ locale = job["attributes"]["chunk_locales"]
+
+ job["worker"] = {
+ "implementation": "beetmover",
+ "release-properties": craft_release_properties(config, job),
+ "upstream-artifacts": generate_beetmover_upstream_artifacts(
+ config,
+ job,
+ platform,
+ locale,
+ ),
+ "artifact-map": generate_beetmover_artifact_map(
+ config, job, platform=platform, locale=locale
+ ),
+ }
+
+ yield job
+
+
+@transforms.add
+def strip_unused_data(config, jobs):
+ for job in jobs:
+ del job["primary-dependency"]
+
+ yield job
+
+
+@transforms.add
+def yield_all_platform_jobs(config, jobs):
+ # Even though langpacks are now platform independent, we keep beetmoving them at old
+ # platform-specific locations. That's why this transform exist
+ # The linux64 and mac specific ja-JP-mac are beetmoved along with the signing beetmover
+ # So while the dependent jobs are linux here, we only yield jobs for other platforms
+ for job in jobs:
+ platforms = ("linux", "macosx64", "win32", "win64")
+ if "devedition" in job["attributes"]["build_platform"]:
+ platforms = (f"{plat}-devedition" for plat in platforms)
+ for platform in platforms:
+ platform_job = copy.deepcopy(job)
+ if "ja" in platform_job["attributes"]["chunk_locales"] and platform in (
+ "macosx64",
+ "macosx64-devedition",
+ ):
+ platform_job = _strip_ja_data_from_linux_job(platform_job)
+
+ platform_job = _change_platform_data(config, platform_job, platform)
+
+ yield platform_job
+
+
+def _strip_ja_data_from_linux_job(platform_job):
+ # Let's take "ja" out the description. This locale is in a substring like "aa/bb/cc/dd", where
+ # "ja" could be any of "aa", "bb", "cc", "dd"
+ platform_job["description"] = platform_job["description"].replace("ja/", "")
+ platform_job["description"] = platform_job["description"].replace("/ja", "")
+
+ platform_job["worker"]["upstream-artifacts"] = [
+ artifact
+ for artifact in platform_job["worker"]["upstream-artifacts"]
+ if artifact["locale"] != "ja"
+ ]
+
+ return platform_job
+
+
+def _change_platform_in_artifact_map_paths(paths, orig_platform, new_platform):
+ amended_paths = {}
+ for artifact, artifact_info in paths.items():
+ amended_artifact_info = {
+ "checksums_path": artifact_info["checksums_path"].replace(
+ orig_platform, new_platform
+ ),
+ "destinations": [
+ d.replace(orig_platform, new_platform)
+ for d in artifact_info["destinations"]
+ ],
+ }
+ amended_paths[artifact] = amended_artifact_info
+
+ return amended_paths
+
+
+def _change_platform_data(config, platform_job, platform):
+ orig_platform = "linux64"
+ if "devedition" in platform:
+ orig_platform = "linux64-devedition"
+ platform_job["attributes"]["build_platform"] = platform
+ platform_job["label"] = platform_job["label"].replace(orig_platform, platform)
+ platform_job["description"] = platform_job["description"].replace(
+ orig_platform, platform
+ )
+ platform_job["treeherder"]["platform"] = platform_job["treeherder"][
+ "platform"
+ ].replace(orig_platform, platform)
+ platform_job["worker"]["release-properties"]["platform"] = platform
+
+ # amend artifactMap entries as well
+ platform_mapping = {
+ "linux64": "linux-x86_64",
+ "linux": "linux-i686",
+ "macosx64": "mac",
+ "win32": "win32",
+ "win64": "win64",
+ "linux64-devedition": "linux-x86_64",
+ "linux-devedition": "linux-i686",
+ "macosx64-devedition": "mac",
+ "win32-devedition": "win32",
+ "win64-devedition": "win64",
+ }
+ orig_platform = platform_mapping.get(orig_platform, orig_platform)
+ platform = platform_mapping.get(platform, platform)
+ platform_job["worker"]["artifact-map"] = [
+ {
+ "locale": entry["locale"],
+ "taskId": entry["taskId"],
+ "paths": _change_platform_in_artifact_map_paths(
+ entry["paths"], orig_platform, platform
+ ),
+ }
+ for entry in platform_job["worker"]["artifact-map"]
+ ]
+
+ return platform_job
diff --git a/taskcluster/gecko_taskgraph/transforms/release_deps.py b/taskcluster/gecko_taskgraph/transforms/release_deps.py
new file mode 100644
index 0000000000..e44af576eb
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/release_deps.py
@@ -0,0 +1,61 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Add dependencies to release tasks.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+
+PHASES = ["build", "promote", "push", "ship"]
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def add_dependencies(config, jobs):
+ for job in jobs:
+ dependencies = {}
+ # Add any kind_dependencies_tasks with matching product as dependencies
+ product = job.get("shipping-product")
+ phase = job.get("shipping-phase")
+ if product is None:
+ continue
+
+ required_signoffs = set(
+ job.setdefault("attributes", {}).get("required_signoffs", [])
+ )
+ for dep_task in config.kind_dependencies_tasks.values():
+ # Weed out unwanted tasks.
+ # XXX we have run-on-projects which specifies the on-push behavior;
+ # we need another attribute that specifies release promotion,
+ # possibly which action(s) each task belongs in.
+
+ # We can only depend on tasks in the current or previous phases
+ dep_phase = dep_task.attributes.get("shipping_phase")
+ if dep_phase and PHASES.index(dep_phase) > PHASES.index(phase):
+ continue
+
+ if dep_task.attributes.get("build_platform") and job.get(
+ "attributes", {}
+ ).get("build_platform"):
+ if (
+ dep_task.attributes["build_platform"]
+ != job["attributes"]["build_platform"]
+ ):
+ continue
+ # Add matching product tasks to deps
+ if (
+ dep_task.task.get("shipping-product") == product
+ or dep_task.attributes.get("shipping_product") == product
+ ):
+ dependencies[dep_task.label] = dep_task.label
+ required_signoffs.update(
+ dep_task.attributes.get("required_signoffs", [])
+ )
+
+ job.setdefault("dependencies", {}).update(dependencies)
+ if required_signoffs:
+ job["attributes"]["required_signoffs"] = sorted(required_signoffs)
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/release_flatpak_push.py b/taskcluster/gecko_taskgraph/transforms/release_flatpak_push.py
new file mode 100644
index 0000000000..8a336502e6
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/release_flatpak_push.py
@@ -0,0 +1,79 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the release-flatpak-push kind into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import Schema, optionally_keyed_by, resolve_keyed_by
+from voluptuous import Optional, Required
+
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.attributes import release_level
+from gecko_taskgraph.util.scriptworker import add_scope_prefix
+
+push_flatpak_description_schema = Schema(
+ {
+ Required("name"): str,
+ Required("job-from"): task_description_schema["job-from"],
+ Required("dependencies"): task_description_schema["dependencies"],
+ Required("description"): task_description_schema["description"],
+ Required("treeherder"): task_description_schema["treeherder"],
+ Required("run-on-projects"): task_description_schema["run-on-projects"],
+ Required("worker-type"): optionally_keyed_by("release-level", str),
+ Required("worker"): object,
+ Optional("scopes"): [str],
+ Required("shipping-phase"): task_description_schema["shipping-phase"],
+ Required("shipping-product"): task_description_schema["shipping-product"],
+ Optional("extra"): task_description_schema["extra"],
+ Optional("attributes"): task_description_schema["attributes"],
+ }
+)
+
+transforms = TransformSequence()
+transforms.add_validate(push_flatpak_description_schema)
+
+
+@transforms.add
+def make_task_description(config, jobs):
+ for job in jobs:
+ if len(job["dependencies"]) != 1:
+ raise Exception("Exactly 1 dependency is required")
+
+ job["worker"]["upstream-artifacts"] = generate_upstream_artifacts(
+ job["dependencies"]
+ )
+
+ resolve_keyed_by(
+ job,
+ "worker.channel",
+ item_name=job["name"],
+ **{"release-type": config.params["release_type"]},
+ )
+ resolve_keyed_by(
+ job,
+ "worker-type",
+ item_name=job["name"],
+ **{"release-level": release_level(config.params["project"])},
+ )
+ if release_level(config.params["project"]) == "production":
+ job.setdefault("scopes", []).append(
+ add_scope_prefix(
+ config,
+ "flathub:firefox:{}".format(job["worker"]["channel"]),
+ )
+ )
+
+ yield job
+
+
+def generate_upstream_artifacts(dependencies):
+ return [
+ {
+ "taskId": {"task-reference": f"<{task_kind}>"},
+ "taskType": "build",
+ "paths": ["public/build/target.flatpak.tar.xz"],
+ }
+ for task_kind in dependencies.keys()
+ ]
diff --git a/taskcluster/gecko_taskgraph/transforms/release_flatpak_repackage.py b/taskcluster/gecko_taskgraph/transforms/release_flatpak_repackage.py
new file mode 100644
index 0000000000..7af1134c3a
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/release_flatpak_repackage.py
@@ -0,0 +1,42 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import resolve_keyed_by
+
+from gecko_taskgraph.util.attributes import release_level
+from gecko_taskgraph.util.scriptworker import get_release_config
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def format(config, tasks):
+ """Apply format substitution to worker.env and worker.command."""
+
+ format_params = {
+ "release_config": get_release_config(config),
+ "config_params": config.params,
+ }
+
+ for task in tasks:
+ format_params["task"] = task
+
+ command = task.get("worker", {}).get("command", [])
+ task["worker"]["command"] = [x.format(**format_params) for x in command]
+
+ env = task.get("worker", {}).get("env", {})
+ for k in env.keys():
+ resolve_keyed_by(
+ env,
+ k,
+ "flatpak envs",
+ **{
+ "release-level": release_level(config.params["project"]),
+ "project": config.params["project"],
+ }
+ )
+ task["worker"]["env"][k] = env[k].format(**format_params)
+
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/release_generate_checksums.py b/taskcluster/gecko_taskgraph/transforms/release_generate_checksums.py
new file mode 100644
index 0000000000..0024b88726
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/release_generate_checksums.py
@@ -0,0 +1,53 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the checksums task into an actual task description.
+"""
+
+import copy
+import logging
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import resolve_keyed_by
+
+from gecko_taskgraph.util.attributes import release_level
+from gecko_taskgraph.util.scriptworker import get_release_config
+
+logger = logging.getLogger(__name__)
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def handle_keyed_by(config, jobs):
+ """Resolve fields that can be keyed by project, etc."""
+ fields = [
+ "run.config",
+ "run.extra-config",
+ ]
+ for job in jobs:
+ job = copy.deepcopy(job)
+ for field in fields:
+ resolve_keyed_by(
+ item=job,
+ field=field,
+ item_name=job["name"],
+ **{"release-level": release_level(config.params["project"])}
+ )
+ yield job
+
+
+@transforms.add
+def interpolate(config, jobs):
+ release_config = get_release_config(config)
+ for job in jobs:
+ mh_options = list(job["run"]["options"])
+ job["run"]["options"] = [
+ option.format(
+ version=release_config["version"],
+ build_number=release_config["build_number"],
+ )
+ for option in mh_options
+ ]
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/release_generate_checksums_beetmover.py b/taskcluster/gecko_taskgraph/transforms/release_generate_checksums_beetmover.py
new file mode 100644
index 0000000000..c91e807b27
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/release_generate_checksums_beetmover.py
@@ -0,0 +1,118 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the `release-generate-checksums-beetmover` task to also append `build` as dependency
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from voluptuous import Optional
+
+from gecko_taskgraph.loader.single_dep import schema
+from gecko_taskgraph.transforms.beetmover import craft_release_properties
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
+from gecko_taskgraph.util.scriptworker import (
+ generate_beetmover_artifact_map,
+ generate_beetmover_upstream_artifacts,
+ get_beetmover_action_scope,
+ get_beetmover_bucket_scope,
+)
+
+transforms = TransformSequence()
+
+
+release_generate_checksums_beetmover_schema = schema.extend(
+ {
+ # unique label to describe this beetmover task, defaults to {dep.label}-beetmover
+ Optional("label"): str,
+ # treeherder is allowed here to override any defaults we use for beetmover. See
+ # taskcluster/gecko_taskgraph/transforms/task.py for the schema details, and the
+ # below transforms for defaults of various values.
+ Optional("treeherder"): task_description_schema["treeherder"],
+ Optional("shipping-phase"): task_description_schema["shipping-phase"],
+ Optional("shipping-product"): task_description_schema["shipping-product"],
+ Optional("attributes"): task_description_schema["attributes"],
+ }
+)
+
+transforms = TransformSequence()
+transforms.add_validate(release_generate_checksums_beetmover_schema)
+
+
+@transforms.add
+def make_task_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ attributes = copy_attributes_from_dependent_job(dep_job)
+ attributes.update(job.get("attributes", {}))
+
+ treeherder = job.get("treeherder", {})
+ treeherder.setdefault("symbol", "BM-SGenChcks")
+ dep_th_platform = (
+ dep_job.task.get("extra", {})
+ .get("treeherder", {})
+ .get("machine", {})
+ .get("platform", "")
+ )
+ treeherder.setdefault("platform", f"{dep_th_platform}/opt")
+ treeherder.setdefault("tier", 1)
+ treeherder.setdefault("kind", "build")
+
+ job_template = f"{dep_job.label}"
+ label = job_template.replace("signing", "beetmover")
+
+ description = "Transfer *SUMS and *SUMMARY checksums file to S3."
+
+ # first dependency is the signing task for the *SUMS files
+ dependencies = {dep_job.kind: dep_job.label}
+
+ if len(dep_job.dependencies) > 1:
+ raise NotImplementedError(
+ "Can't beetmove a signing task with multiple dependencies"
+ )
+ # update the dependencies with the dependencies of the signing task
+ dependencies.update(dep_job.dependencies)
+
+ bucket_scope = get_beetmover_bucket_scope(config)
+ action_scope = get_beetmover_action_scope(config)
+
+ task = {
+ "label": label,
+ "description": description,
+ "worker-type": "beetmover",
+ "scopes": [bucket_scope, action_scope],
+ "dependencies": dependencies,
+ "attributes": attributes,
+ "run-on-projects": dep_job.attributes.get("run_on_projects"),
+ "treeherder": treeherder,
+ "shipping-phase": "promote",
+ }
+
+ yield task
+
+
+@transforms.add
+def make_task_worker(config, jobs):
+ for job in jobs:
+ valid_beetmover_job = len(job["dependencies"]) == 2 and any(
+ ["signing" in j for j in job["dependencies"]]
+ )
+ if not valid_beetmover_job:
+ raise NotImplementedError("Beetmover must have two dependencies.")
+
+ platform = job["attributes"]["build_platform"]
+ worker = {
+ "implementation": "beetmover",
+ "release-properties": craft_release_properties(config, job),
+ "upstream-artifacts": generate_beetmover_upstream_artifacts(
+ config, job, platform=None, locale=None
+ ),
+ "artifact-map": generate_beetmover_artifact_map(
+ config, job, platform=platform
+ ),
+ }
+
+ job["worker"] = worker
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/release_generate_checksums_signing.py b/taskcluster/gecko_taskgraph/transforms/release_generate_checksums_signing.py
new file mode 100644
index 0000000000..6dfee1d33b
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/release_generate_checksums_signing.py
@@ -0,0 +1,86 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the release-generate-checksums-signing task into task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.taskcluster import get_artifact_path
+from voluptuous import Optional
+
+from gecko_taskgraph.loader.single_dep import schema
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
+from gecko_taskgraph.util.scriptworker import get_signing_cert_scope
+
+release_generate_checksums_signing_schema = schema.extend(
+ {
+ Optional("label"): str,
+ Optional("treeherder"): task_description_schema["treeherder"],
+ Optional("shipping-product"): task_description_schema["shipping-product"],
+ Optional("shipping-phase"): task_description_schema["shipping-phase"],
+ }
+)
+
+transforms = TransformSequence()
+transforms.add_validate(release_generate_checksums_signing_schema)
+
+
+@transforms.add
+def make_release_generate_checksums_signing_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ attributes = copy_attributes_from_dependent_job(dep_job)
+
+ treeherder = job.get("treeherder", {})
+ treeherder.setdefault("symbol", "SGenChcks")
+ dep_th_platform = (
+ dep_job.task.get("extra", {})
+ .get("treeherder", {})
+ .get("machine", {})
+ .get("platform", "")
+ )
+ treeherder.setdefault("platform", f"{dep_th_platform}/opt")
+ treeherder.setdefault("tier", 1)
+ treeherder.setdefault("kind", "build")
+
+ job_template = "{}-{}".format(dep_job.label, "signing")
+ label = job.get("label", job_template)
+ description = "Signing of the overall release-related checksums"
+
+ dependencies = {dep_job.kind: dep_job.label}
+
+ upstream_artifacts = [
+ {
+ "taskId": {"task-reference": f"<{str(dep_job.kind)}>"},
+ "taskType": "build",
+ "paths": [
+ get_artifact_path(dep_job, "SHA256SUMS"),
+ get_artifact_path(dep_job, "SHA512SUMS"),
+ ],
+ "formats": ["autograph_gpg"],
+ }
+ ]
+
+ signing_cert_scope = get_signing_cert_scope(config)
+
+ task = {
+ "label": label,
+ "description": description,
+ "worker-type": "linux-signing",
+ "worker": {
+ "implementation": "scriptworker-signing",
+ "upstream-artifacts": upstream_artifacts,
+ "max-run-time": 3600,
+ },
+ "scopes": [
+ signing_cert_scope,
+ ],
+ "dependencies": dependencies,
+ "attributes": attributes,
+ "run-on-projects": dep_job.attributes.get("run_on_projects"),
+ "treeherder": treeherder,
+ }
+
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/release_mark_as_shipped.py b/taskcluster/gecko_taskgraph/transforms/release_mark_as_shipped.py
new file mode 100644
index 0000000000..f2ce148320
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/release_mark_as_shipped.py
@@ -0,0 +1,39 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import resolve_keyed_by
+
+from gecko_taskgraph.util.attributes import release_level
+from gecko_taskgraph.util.scriptworker import get_release_config
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def make_task_description(config, jobs):
+ release_config = get_release_config(config)
+ for job in jobs:
+ resolve_keyed_by(
+ job,
+ "worker-type",
+ item_name=job["name"],
+ **{"release-level": release_level(config.params["project"])}
+ )
+ resolve_keyed_by(
+ job,
+ "scopes",
+ item_name=job["name"],
+ **{"release-level": release_level(config.params["project"])}
+ )
+
+ job["worker"][
+ "release-name"
+ ] = "{product}-{version}-build{build_number}".format(
+ product=job["shipping-product"].capitalize(),
+ version=release_config["version"],
+ build_number=release_config["build_number"],
+ )
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/release_msix_push.py b/taskcluster/gecko_taskgraph/transforms/release_msix_push.py
new file mode 100644
index 0000000000..817341f92c
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/release_msix_push.py
@@ -0,0 +1,88 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the release-msix-push kind into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import Schema, optionally_keyed_by, resolve_keyed_by
+from voluptuous import Optional, Required
+
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.attributes import release_level
+from gecko_taskgraph.util.scriptworker import add_scope_prefix
+
+push_msix_description_schema = Schema(
+ {
+ Required("name"): str,
+ Required("job-from"): task_description_schema["job-from"],
+ Required("dependencies"): task_description_schema["dependencies"],
+ Required("description"): task_description_schema["description"],
+ Required("treeherder"): task_description_schema["treeherder"],
+ Required("run-on-projects"): task_description_schema["run-on-projects"],
+ Required("worker-type"): optionally_keyed_by("release-level", str),
+ Required("worker"): object,
+ Optional("scopes"): [str],
+ Required("shipping-phase"): task_description_schema["shipping-phase"],
+ Required("shipping-product"): task_description_schema["shipping-product"],
+ Optional("extra"): task_description_schema["extra"],
+ Optional("attributes"): task_description_schema["attributes"],
+ }
+)
+
+transforms = TransformSequence()
+transforms.add_validate(push_msix_description_schema)
+
+
+@transforms.add
+def make_task_description(config, jobs):
+ for job in jobs:
+
+ job["worker"]["upstream-artifacts"] = generate_upstream_artifacts(
+ job["dependencies"]
+ )
+
+ resolve_keyed_by(
+ job,
+ "worker.channel",
+ item_name=job["name"],
+ **{"release-type": config.params["release_type"]},
+ )
+ resolve_keyed_by(
+ job,
+ "worker.publish-mode",
+ item_name=job["name"],
+ **{"release-type": config.params["release_type"]},
+ )
+ resolve_keyed_by(
+ job,
+ "worker-type",
+ item_name=job["name"],
+ **{"release-level": release_level(config.params["project"])},
+ )
+ if release_level(config.params["project"]) == "production":
+ job.setdefault("scopes", []).append(
+ add_scope_prefix(
+ config,
+ "microsoftstore:{}".format(job["worker"]["channel"]),
+ )
+ )
+
+ # Override shipping-phase for release: push to the Store early to
+ # allow time for certification.
+ if job["worker"]["publish-mode"] == "Manual":
+ job["shipping-phase"] = "promote"
+
+ yield job
+
+
+def generate_upstream_artifacts(dependencies):
+ return [
+ {
+ "taskId": {"task-reference": f"<{task_kind}>"},
+ "taskType": "build",
+ "paths": ["public/build/target.store.msix"],
+ }
+ for task_kind in dependencies.keys()
+ ]
diff --git a/taskcluster/gecko_taskgraph/transforms/release_notifications.py b/taskcluster/gecko_taskgraph/transforms/release_notifications.py
new file mode 100644
index 0000000000..86109ec5ed
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/release_notifications.py
@@ -0,0 +1,73 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Add notifications via taskcluster-notify for release tasks
+"""
+from string import Formatter
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import resolve_keyed_by
+
+from gecko_taskgraph.util.scriptworker import get_release_config
+
+transforms = TransformSequence()
+
+
+class TitleCaseFormatter(Formatter):
+ """Support title formatter for strings"""
+
+ def convert_field(self, value, conversion):
+ if conversion == "t":
+ return str(value).title()
+ super().convert_field(value, conversion)
+ return value
+
+
+titleformatter = TitleCaseFormatter()
+
+
+@transforms.add
+def add_notifications(config, jobs):
+ release_config = get_release_config(config)
+
+ for job in jobs:
+ label = "{}-{}".format(config.kind, job["name"])
+
+ notifications = job.pop("notifications", None)
+ if notifications:
+ resolve_keyed_by(
+ notifications, "emails", label, project=config.params["project"]
+ )
+ emails = notifications["emails"]
+ format_kwargs = dict(
+ task=job,
+ config=config.__dict__,
+ release_config=release_config,
+ )
+ subject = titleformatter.format(notifications["subject"], **format_kwargs)
+ message = titleformatter.format(notifications["message"], **format_kwargs)
+ emails = [email.format(**format_kwargs) for email in emails]
+
+ # By default, we only send mail on success to avoid messages like 'blah is in the
+ # candidates dir' when cancelling graphs, dummy job failure, etc
+ status_types = notifications.get("status-types", ["on-completed"])
+ for s in status_types:
+ job.setdefault("routes", []).extend(
+ [f"notify.email.{email}.{s}" for email in emails]
+ )
+
+ # Customize the email subject to include release name and build number
+ job.setdefault("extra", {}).update(
+ {
+ "notify": {
+ "email": {
+ "subject": subject,
+ }
+ }
+ }
+ )
+ if message:
+ job["extra"]["notify"]["email"]["content"] = message
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/release_sign_and_push_langpacks.py b/taskcluster/gecko_taskgraph/transforms/release_sign_and_push_langpacks.py
new file mode 100644
index 0000000000..17e4d37fb3
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/release_sign_and_push_langpacks.py
@@ -0,0 +1,180 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the release-sign-and-push task into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import optionally_keyed_by, resolve_keyed_by
+from taskgraph.util.treeherder import inherit_treeherder_from_dep
+from voluptuous import Any, Required
+
+from gecko_taskgraph.loader.single_dep import schema
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.attributes import (
+ copy_attributes_from_dependent_job,
+ release_level,
+)
+
+transforms = TransformSequence()
+
+langpack_sign_push_description_schema = schema.extend(
+ {
+ Required("label"): str,
+ Required("description"): str,
+ Required("worker-type"): optionally_keyed_by("release-level", str),
+ Required("worker"): {
+ Required("channel"): optionally_keyed_by(
+ "project", "platform", Any("listed", "unlisted")
+ ),
+ Required("upstream-artifacts"): None, # Processed here below
+ },
+ Required("run-on-projects"): [],
+ Required("scopes"): optionally_keyed_by("release-level", [str]),
+ Required("shipping-phase"): task_description_schema["shipping-phase"],
+ Required("shipping-product"): task_description_schema["shipping-product"],
+ }
+)
+
+
+@transforms.add
+def set_label(config, jobs):
+ for job in jobs:
+ label = "push-langpacks-{}".format(job["primary-dependency"].label)
+ job["label"] = label
+
+ yield job
+
+
+transforms.add_validate(langpack_sign_push_description_schema)
+
+
+@transforms.add
+def resolve_keys(config, jobs):
+ for job in jobs:
+ resolve_keyed_by(
+ job,
+ "worker-type",
+ item_name=job["label"],
+ **{"release-level": release_level(config.params["project"])},
+ )
+ resolve_keyed_by(
+ job,
+ "scopes",
+ item_name=job["label"],
+ **{"release-level": release_level(config.params["project"])},
+ )
+ resolve_keyed_by(
+ job,
+ "worker.channel",
+ item_name=job["label"],
+ project=config.params["project"],
+ platform=job["primary-dependency"].attributes["build_platform"],
+ )
+
+ yield job
+
+
+@transforms.add
+def copy_attributes(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ job["attributes"] = copy_attributes_from_dependent_job(dep_job)
+ job["attributes"]["chunk_locales"] = dep_job.attributes.get(
+ "chunk_locales", ["en-US"]
+ )
+
+ yield job
+
+
+@transforms.add
+def filter_out_macos_jobs_but_mac_only_locales(config, jobs):
+ for job in jobs:
+ build_platform = job["primary-dependency"].attributes.get("build_platform")
+
+ if build_platform in ("linux64-devedition", "linux64-shippable"):
+ yield job
+ elif (
+ build_platform in ("macosx64-devedition", "macosx64-shippable")
+ and "ja-JP-mac" in job["attributes"]["chunk_locales"]
+ ):
+ # Other locales of the same job shouldn't be processed
+ job["attributes"]["chunk_locales"] = ["ja-JP-mac"]
+ job["label"] = job["label"].replace(
+ # Guard against a chunk 10 or chunk 1 (latter on try) weird munging
+ "-{}/".format(job["attributes"]["l10n_chunk"]),
+ "-ja-JP-mac/",
+ )
+ yield job
+
+
+@transforms.add
+def make_task_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+
+ treeherder = inherit_treeherder_from_dep(job, dep_job)
+ treeherder.setdefault(
+ "symbol", "langpack(SnP{})".format(job["attributes"].get("l10n_chunk", ""))
+ )
+
+ job["description"] = job["description"].format(
+ locales="/".join(job["attributes"]["chunk_locales"]),
+ )
+
+ job["dependencies"] = {dep_job.kind: dep_job.label}
+ job["treeherder"] = treeherder
+
+ yield job
+
+
+def generate_upstream_artifacts(upstream_task_ref, locales):
+ return [
+ {
+ "taskId": {"task-reference": upstream_task_ref},
+ "taskType": "build",
+ "paths": [
+ "public/build{locale}/target.langpack.xpi".format(
+ locale="" if locale == "en-US" else "/" + locale
+ )
+ for locale in locales
+ ],
+ }
+ ]
+
+
+@transforms.add
+def make_task_worker(config, jobs):
+ for job in jobs:
+ upstream_task_ref = get_upstream_task_ref(
+ job, expected_kinds=("build", "shippable-l10n")
+ )
+
+ job["worker"]["implementation"] = "push-addons"
+ job["worker"]["upstream-artifacts"] = generate_upstream_artifacts(
+ upstream_task_ref, job["attributes"]["chunk_locales"]
+ )
+
+ yield job
+
+
+def get_upstream_task_ref(job, expected_kinds):
+ upstream_tasks = [
+ job_kind
+ for job_kind in job["dependencies"].keys()
+ if job_kind in expected_kinds
+ ]
+
+ if len(upstream_tasks) > 1:
+ raise Exception("Only one dependency expected")
+
+ return f"<{upstream_tasks[0]}>"
+
+
+@transforms.add
+def strip_unused_data(config, jobs):
+ for job in jobs:
+ del job["primary-dependency"]
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/release_snap_repackage.py b/taskcluster/gecko_taskgraph/transforms/release_snap_repackage.py
new file mode 100644
index 0000000000..659a203971
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/release_snap_repackage.py
@@ -0,0 +1,39 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import resolve_keyed_by
+
+from gecko_taskgraph.util.attributes import release_level
+from gecko_taskgraph.util.scriptworker import get_release_config
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def format(config, tasks):
+ """Apply format substitution to worker.env and worker.command."""
+
+ format_params = {
+ "release_config": get_release_config(config),
+ "config_params": config.params,
+ }
+
+ for task in tasks:
+ format_params["task"] = task
+
+ command = task.get("worker", {}).get("command", [])
+ task["worker"]["command"] = [x.format(**format_params) for x in command]
+
+ env = task.get("worker", {}).get("env", {})
+ for k in env.keys():
+ resolve_keyed_by(
+ env,
+ k,
+ "snap envs",
+ **{"release-level": release_level(config.params["project"])}
+ )
+ task["worker"]["env"][k] = env[k].format(**format_params)
+
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/release_started.py b/taskcluster/gecko_taskgraph/transforms/release_started.py
new file mode 100644
index 0000000000..0f54c8e098
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/release_started.py
@@ -0,0 +1,52 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Add notifications via taskcluster-notify for release tasks
+"""
+from pipes import quote as shell_quote
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import resolve_keyed_by
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def add_notifications(config, jobs):
+ for job in jobs:
+ label = "{}-{}".format(config.kind, job["name"])
+
+ resolve_keyed_by(job, "emails", label, project=config.params["project"])
+ emails = [email.format(config=config.__dict__) for email in job.pop("emails")]
+
+ command = [
+ "release",
+ "send-buglist-email",
+ "--version",
+ config.params["version"],
+ "--product",
+ job["shipping-product"],
+ "--revision",
+ config.params["head_rev"],
+ "--build-number",
+ str(config.params["build_number"]),
+ "--repo",
+ config.params["head_repository"],
+ ]
+ for address in emails:
+ command += ["--address", address]
+ command += [
+ # We wrap this in `{'task-reference': ...}` below
+ "--task-group-id",
+ "<decision>",
+ ]
+
+ job["scopes"] = [f"notify:email:{address}" for address in emails]
+ job["run"] = {
+ "using": "mach",
+ "sparse-profile": "mach",
+ "mach": {"task-reference": " ".join(map(shell_quote, command))},
+ }
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/release_version_bump.py b/taskcluster/gecko_taskgraph/transforms/release_version_bump.py
new file mode 100644
index 0000000000..a0f3f69d05
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/release_version_bump.py
@@ -0,0 +1,42 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the update generation task into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import resolve_keyed_by
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def handle_keyed_by(config, tasks):
+ """Resolve fields that can be keyed by platform, etc."""
+ default_fields = [
+ "worker.push",
+ "worker.bump-files",
+ "worker-type",
+ ]
+ for task in tasks:
+ fields = default_fields[:]
+ for additional_field in (
+ "l10n-bump-info",
+ "source-repo",
+ "dontbuild",
+ "ignore-closed-tree",
+ ):
+ if additional_field in task["worker"]:
+ fields.append(f"worker.{additional_field}")
+ for field in fields:
+ resolve_keyed_by(
+ task,
+ field,
+ item_name=task["name"],
+ **{
+ "project": config.params["project"],
+ "release-type": config.params["release_type"],
+ },
+ )
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/repackage.py b/taskcluster/gecko_taskgraph/transforms/repackage.py
new file mode 100644
index 0000000000..2fe849c32d
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/repackage.py
@@ -0,0 +1,684 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the repackage task into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import optionally_keyed_by, resolve_keyed_by
+from taskgraph.util.taskcluster import get_artifact_prefix
+from voluptuous import Extra, Optional, Required
+
+from gecko_taskgraph.loader.single_dep import schema
+from gecko_taskgraph.transforms.job import job_description_schema
+from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
+from gecko_taskgraph.util.copy_task import copy_task
+from gecko_taskgraph.util.platforms import architecture, archive_format
+from gecko_taskgraph.util.workertypes import worker_type_implementation
+
+packaging_description_schema = schema.extend(
+ {
+ # unique label to describe this repackaging task
+ Optional("label"): str,
+ Optional("worker-type"): str,
+ Optional("worker"): object,
+ # treeherder is allowed here to override any defaults we use for repackaging. See
+ # taskcluster/gecko_taskgraph/transforms/task.py for the schema details, and the
+ # below transforms for defaults of various values.
+ Optional("treeherder"): job_description_schema["treeherder"],
+ # If a l10n task, the corresponding locale
+ Optional("locale"): str,
+ # Routes specific to this task, if defined
+ Optional("routes"): [str],
+ # passed through directly to the job description
+ Optional("extra"): job_description_schema["extra"],
+ # passed through to job description
+ Optional("fetches"): job_description_schema["fetches"],
+ Optional("run-on-projects"): job_description_schema["run-on-projects"],
+ # Shipping product and phase
+ Optional("shipping-product"): job_description_schema["shipping-product"],
+ Optional("shipping-phase"): job_description_schema["shipping-phase"],
+ Required("package-formats"): optionally_keyed_by(
+ "build-platform", "release-type", [str]
+ ),
+ Optional("msix"): {
+ Optional("channel"): optionally_keyed_by(
+ "package-format",
+ "level",
+ "build-platform",
+ "release-type",
+ "shipping-product",
+ str,
+ ),
+ Optional("identity-name"): optionally_keyed_by(
+ "package-format",
+ "level",
+ "build-platform",
+ "release-type",
+ "shipping-product",
+ str,
+ ),
+ Optional("publisher"): optionally_keyed_by(
+ "package-format",
+ "level",
+ "build-platform",
+ "release-type",
+ "shipping-product",
+ str,
+ ),
+ Optional("publisher-display-name"): optionally_keyed_by(
+ "package-format",
+ "level",
+ "build-platform",
+ "release-type",
+ "shipping-product",
+ str,
+ ),
+ Optional("vendor"): str,
+ },
+ # All l10n jobs use mozharness
+ Required("mozharness"): {
+ Extra: object,
+ # Config files passed to the mozharness script
+ Required("config"): optionally_keyed_by("build-platform", [str]),
+ # Additional paths to look for mozharness configs in. These should be
+ # relative to the base of the source checkout
+ Optional("config-paths"): [str],
+ # if true, perform a checkout of a comm-central based branch inside the
+ # gecko checkout
+ Optional("comm-checkout"): bool,
+ Optional("run-as-root"): bool,
+ Optional("use-caches"): bool,
+ },
+ }
+)
+
+# The configuration passed to the mozharness repackage script. This defines the
+# arguments passed to `mach repackage`
+# - `args` is interpolated by mozharness (`{package-name}`, `{installer-tag}`,
+# `{stub-installer-tag}`, `{sfx-stub}`, `{wsx-stub}`, `{fetch-dir}`), with values
+# from mozharness.
+# - `inputs` are passed as long-options, with the filename prefixed by
+# `MOZ_FETCH_DIR`. The filename is interpolated by taskgraph
+# (`{archive_format}`).
+# - `output` is passed to `--output`, with the filename prefixed by the output
+# directory.
+PACKAGE_FORMATS = {
+ "mar": {
+ "args": [
+ "mar",
+ "--arch",
+ "{architecture}",
+ "--mar-channel-id",
+ "{mar-channel-id}",
+ ],
+ "inputs": {
+ "input": "target{archive_format}",
+ "mar": "mar-tools/mar",
+ },
+ "output": "target.complete.mar",
+ },
+ "msi": {
+ "args": [
+ "msi",
+ "--wsx",
+ "{wsx-stub}",
+ "--version",
+ "{version_display}",
+ "--locale",
+ "{_locale}",
+ "--arch",
+ "{architecture}",
+ "--candle",
+ "{fetch-dir}/candle.exe",
+ "--light",
+ "{fetch-dir}/light.exe",
+ ],
+ "inputs": {
+ "setupexe": "target.installer.exe",
+ },
+ "output": "target.installer.msi",
+ },
+ "msix": {
+ "args": [
+ "msix",
+ "--channel",
+ "{msix-channel}",
+ "--publisher",
+ "{msix-publisher}",
+ "--publisher-display-name",
+ "{msix-publisher-display-name}",
+ "--identity-name",
+ "{msix-identity-name}",
+ "--vendor",
+ "{msix-vendor}",
+ "--arch",
+ "{architecture}",
+ # For langpacks. Ignored if directory does not exist.
+ "--distribution-dir",
+ "{fetch-dir}/distribution",
+ "--verbose",
+ "--makeappx",
+ "{fetch-dir}/msix-packaging/makemsix",
+ ],
+ "inputs": {
+ "input": "target{archive_format}",
+ },
+ "output": "target.installer.msix",
+ },
+ "msix-store": {
+ "args": [
+ "msix",
+ "--channel",
+ "{msix-channel}",
+ "--publisher",
+ "{msix-publisher}",
+ "--publisher-display-name",
+ "{msix-publisher-display-name}",
+ "--identity-name",
+ "{msix-identity-name}",
+ "--vendor",
+ "{msix-vendor}",
+ "--arch",
+ "{architecture}",
+ # For langpacks. Ignored if directory does not exist.
+ "--distribution-dir",
+ "{fetch-dir}/distribution",
+ "--verbose",
+ "--makeappx",
+ "{fetch-dir}/msix-packaging/makemsix",
+ ],
+ "inputs": {
+ "input": "target{archive_format}",
+ },
+ "output": "target.store.msix",
+ },
+ "dmg": {
+ "args": ["dmg"],
+ "inputs": {
+ "input": "target{archive_format}",
+ },
+ "output": "target.dmg",
+ },
+ "pkg": {
+ "args": ["pkg"],
+ "inputs": {
+ "input": "target{archive_format}",
+ },
+ "output": "target.pkg",
+ },
+ "installer": {
+ "args": [
+ "installer",
+ "--package-name",
+ "{package-name}",
+ "--tag",
+ "{installer-tag}",
+ "--sfx-stub",
+ "{sfx-stub}",
+ ],
+ "inputs": {
+ "package": "target{archive_format}",
+ "setupexe": "setup.exe",
+ },
+ "output": "target.installer.exe",
+ },
+ "installer-stub": {
+ "args": [
+ "installer",
+ "--tag",
+ "{stub-installer-tag}",
+ "--sfx-stub",
+ "{sfx-stub}",
+ ],
+ "inputs": {
+ "setupexe": "setup-stub.exe",
+ },
+ "output": "target.stub-installer.exe",
+ },
+ "deb": {
+ "args": [
+ "deb",
+ "--arch",
+ "{architecture}",
+ "--templates",
+ "browser/installer/linux/app/debian",
+ "--version",
+ "{version_display}",
+ "--build-number",
+ "{build_number}",
+ "--release-product",
+ "{release_product}",
+ "--release-type",
+ "{release_type}",
+ ],
+ "inputs": {
+ "input": "target{archive_format}",
+ },
+ "output": "target.deb",
+ },
+ "deb-l10n": {
+ "args": [
+ "deb-l10n",
+ "--version",
+ "{version_display}",
+ "--build-number",
+ "{build_number}",
+ "--templates",
+ "browser/installer/linux/langpack/debian",
+ ],
+ "inputs": {
+ "input-xpi-file": "target.langpack.xpi",
+ "input-tar-file": "target{archive_format}",
+ },
+ "output": "target.langpack.deb",
+ },
+}
+MOZHARNESS_EXPANSIONS = [
+ "package-name",
+ "installer-tag",
+ "fetch-dir",
+ "stub-installer-tag",
+ "sfx-stub",
+ "wsx-stub",
+]
+
+transforms = TransformSequence()
+transforms.add_validate(packaging_description_schema)
+
+
+@transforms.add
+def copy_in_useful_magic(config, jobs):
+ """Copy attributes from upstream task to be used for keyed configuration."""
+ for job in jobs:
+ dep = job["primary-dependency"]
+ job["build-platform"] = dep.attributes.get("build_platform")
+ job["shipping-product"] = dep.attributes.get("shipping_product")
+ yield job
+
+
+@transforms.add
+def handle_keyed_by(config, jobs):
+ """Resolve fields that can be keyed by platform, etc, but not `msix.*` fields
+ that can be keyed by `package-format`. Such fields are handled specially below.
+ """
+ fields = [
+ "mozharness.config",
+ "package-formats",
+ "worker.max-run-time",
+ ]
+ for job in jobs:
+ job = copy_task(job) # don't overwrite dict values here
+ for field in fields:
+ resolve_keyed_by(
+ item=job,
+ field=field,
+ item_name="?",
+ **{
+ "release-type": config.params["release_type"],
+ "level": config.params["level"],
+ },
+ )
+ yield job
+
+
+@transforms.add
+def make_repackage_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+
+ label = job.get("label", dep_job.label.replace("signing-", "repackage-"))
+ job["label"] = label
+
+ yield job
+
+
+@transforms.add
+def make_job_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ dependencies = {dep_job.kind: dep_job.label}
+
+ attributes = copy_attributes_from_dependent_job(dep_job)
+ attributes["repackage_type"] = "repackage"
+
+ locale = attributes.get("locale", job.get("locale"))
+ if locale:
+ attributes["locale"] = locale
+
+ description = (
+ "Repackaging for locale '{locale}' for build '"
+ "{build_platform}/{build_type}'".format(
+ locale=attributes.get("locale", "en-US"),
+ build_platform=attributes.get("build_platform"),
+ build_type=attributes.get("build_type"),
+ )
+ )
+
+ treeherder = job.get("treeherder", {})
+ treeherder.setdefault("symbol", "Rpk")
+ dep_th_platform = dep_job.task.get("extra", {}).get("treeherder-platform")
+ treeherder.setdefault("platform", dep_th_platform)
+ treeherder.setdefault("tier", 1)
+ treeherder.setdefault("kind", "build")
+
+ # Search dependencies before adding langpack dependencies.
+ signing_task = None
+ repackage_signing_task = None
+ for dependency in dependencies.keys():
+ if "repackage-signing" in dependency:
+ repackage_signing_task = dependency
+ elif "signing" in dependency or "notarization" in dependency:
+ signing_task = dependency
+
+ if config.kind == "repackage-msi":
+ treeherder["symbol"] = "MSI({})".format(locale or "N")
+
+ elif config.kind == "repackage-msix":
+ assert not locale
+
+ # Like "MSIXs(Bs)".
+ treeherder["symbol"] = "MSIX({})".format(
+ dep_job.task.get("extra", {}).get("treeherder", {}).get("symbol", "B")
+ )
+
+ elif config.kind == "repackage-shippable-l10n-msix":
+ assert not locale
+
+ if attributes.get("l10n_chunk") or attributes.get("chunk_locales"):
+ # We don't want to produce MSIXes for single-locale repack builds.
+ continue
+
+ description = (
+ "Repackaging with multiple locales for build '"
+ "{build_platform}/{build_type}'".format(
+ build_platform=attributes.get("build_platform"),
+ build_type=attributes.get("build_type"),
+ )
+ )
+
+ # Like "MSIXs(Bs-multi)".
+ treeherder["symbol"] = "MSIX({}-multi)".format(
+ dep_job.task.get("extra", {}).get("treeherder", {}).get("symbol", "B")
+ )
+
+ fetches = job.setdefault("fetches", {})
+
+ # The keys are unique, like `shippable-l10n-signing-linux64-shippable-1/opt`, so we
+ # can't ask for the tasks directly, we must filter for them.
+ for t in config.kind_dependencies_tasks.values():
+ if t.kind != "shippable-l10n-signing":
+ continue
+ if t.attributes["build_platform"] != "linux64-shippable":
+ continue
+ if t.attributes["build_type"] != "opt":
+ continue
+
+ dependencies.update({t.label: t.label})
+
+ fetches.update(
+ {
+ t.label: [
+ {
+ "artifact": f"{loc}/target.langpack.xpi",
+ "extract": False,
+ # Otherwise we can't disambiguate locales!
+ "dest": f"distribution/extensions/{loc}",
+ }
+ for loc in t.attributes["chunk_locales"]
+ ]
+ }
+ )
+
+ elif config.kind == "repackage-deb":
+ attributes["repackage_type"] = "repackage-deb"
+ description = (
+ "Repackaging the '{build_platform}/{build_type}' "
+ "{version} build into a '.deb' package"
+ ).format(
+ build_platform=attributes.get("build_platform"),
+ build_type=attributes.get("build_type"),
+ version=config.params["version"],
+ )
+
+ _fetch_subst_locale = "en-US"
+ if locale:
+ _fetch_subst_locale = locale
+
+ worker_type = job["worker-type"]
+ build_platform = attributes["build_platform"]
+
+ use_stub = attributes.get("stub-installer")
+
+ repackage_config = []
+ package_formats = job.get("package-formats")
+ if use_stub and not repackage_signing_task and "msix" not in package_formats:
+ # if repackage_signing_task doesn't exists, generate the stub installer
+ package_formats += ["installer-stub"]
+ for format in package_formats:
+ command = copy_task(PACKAGE_FORMATS[format])
+ substs = {
+ "archive_format": archive_format(build_platform),
+ "_locale": _fetch_subst_locale,
+ "architecture": architecture(build_platform),
+ "version_display": config.params["version"],
+ "mar-channel-id": attributes["mar-channel-id"],
+ "build_number": config.params["build_number"],
+ "release_product": config.params["release_product"],
+ "release_type": config.params["release_type"],
+ }
+ # Allow us to replace `args` as well, but specifying things expanded in mozharness
+ # without breaking .format and without allowing unknown through.
+ substs.update({name: f"{{{name}}}" for name in MOZHARNESS_EXPANSIONS})
+
+ # We need to resolve `msix.*` values keyed by `package-format` for each format, not
+ # just once, so we update a temporary copy just for extracting these values.
+ temp_job = copy_task(job)
+ for msix_key in (
+ "channel",
+ "identity-name",
+ "publisher",
+ "publisher-display-name",
+ "vendor",
+ ):
+ resolve_keyed_by(
+ item=temp_job,
+ field=f"msix.{msix_key}",
+ item_name="?",
+ **{
+ "package-format": format,
+ "release-type": config.params["release_type"],
+ "level": config.params["level"],
+ },
+ )
+
+ # Turn `msix.channel` into `msix-channel`, etc.
+ value = temp_job.get("msix", {}).get(msix_key)
+ if value:
+ substs.update(
+ {f"msix-{msix_key}": value},
+ )
+
+ command["inputs"] = {
+ name: filename.format(**substs)
+ for name, filename in command["inputs"].items()
+ }
+ command["args"] = [arg.format(**substs) for arg in command["args"]]
+ if "installer" in format and "aarch64" not in build_platform:
+ command["args"].append("--use-upx")
+
+ repackage_config.append(command)
+
+ run = job.get("mozharness", {})
+ run.update(
+ {
+ "using": "mozharness",
+ "script": "mozharness/scripts/repackage.py",
+ "job-script": "taskcluster/scripts/builder/repackage.sh",
+ "actions": ["setup", "repackage"],
+ "extra-config": {
+ "repackage_config": repackage_config,
+ },
+ "run-as-root": run.get("run-as-root", False),
+ "use-caches": run.get("use-caches", True),
+ }
+ )
+
+ worker = job.get("worker", {})
+ worker.update(
+ {
+ "chain-of-trust": True,
+ # Don't add generic artifact directory.
+ "skip-artifacts": True,
+ }
+ )
+ worker.setdefault("max-run-time", 3600)
+
+ if locale:
+ # Make sure we specify the locale-specific upload dir
+ worker.setdefault("env", {})["LOCALE"] = locale
+
+ worker["artifacts"] = _generate_task_output_files(
+ dep_job,
+ worker_type_implementation(config.graph_config, config.params, worker_type),
+ repackage_config=repackage_config,
+ locale=locale,
+ )
+ attributes["release_artifacts"] = [
+ artifact["name"] for artifact in worker["artifacts"]
+ ]
+
+ task = {
+ "label": job["label"],
+ "description": description,
+ "worker-type": worker_type,
+ "dependencies": dependencies,
+ "if-dependencies": [dep_job.kind],
+ "attributes": attributes,
+ "run-on-projects": job.get(
+ "run-on-projects", dep_job.attributes.get("run_on_projects")
+ ),
+ "optimization": dep_job.optimization,
+ "treeherder": treeherder,
+ "routes": job.get("routes", []),
+ "extra": job.get("extra", {}),
+ "worker": worker,
+ "run": run,
+ "fetches": _generate_download_config(
+ config,
+ dep_job,
+ build_platform,
+ signing_task,
+ repackage_signing_task,
+ locale=locale,
+ existing_fetch=job.get("fetches"),
+ ),
+ }
+
+ if build_platform.startswith("macosx"):
+ task.setdefault("fetches", {}).setdefault("toolchain", []).extend(
+ [
+ "linux64-libdmg",
+ "linux64-hfsplus",
+ "linux64-node",
+ "linux64-xar",
+ "linux64-mkbom",
+ ]
+ )
+
+ if "shipping-phase" in job:
+ task["shipping-phase"] = job["shipping-phase"]
+
+ yield task
+
+
+def _generate_download_config(
+ config,
+ task,
+ build_platform,
+ signing_task,
+ repackage_signing_task,
+ locale=None,
+ existing_fetch=None,
+):
+ locale_path = f"{locale}/" if locale else ""
+ fetch = {}
+ if existing_fetch:
+ fetch.update(existing_fetch)
+
+ if repackage_signing_task and build_platform.startswith("win"):
+ fetch.update(
+ {
+ repackage_signing_task: [f"{locale_path}target.installer.exe"],
+ }
+ )
+ elif build_platform.startswith("linux") or build_platform.startswith("macosx"):
+ signing_fetch = [
+ {
+ "artifact": "{}target{}".format(
+ locale_path, archive_format(build_platform)
+ ),
+ "extract": False,
+ },
+ ]
+ if config.kind == "repackage-deb-l10n":
+ signing_fetch.append(
+ {
+ "artifact": f"{locale_path}target.langpack.xpi",
+ "extract": False,
+ }
+ )
+ fetch.update({signing_task: signing_fetch})
+ elif build_platform.startswith("win"):
+ fetch.update(
+ {
+ signing_task: [
+ {
+ "artifact": f"{locale_path}target.zip",
+ "extract": False,
+ },
+ f"{locale_path}setup.exe",
+ ],
+ }
+ )
+
+ use_stub = task.attributes.get("stub-installer")
+ if use_stub:
+ fetch[signing_task].append(f"{locale_path}setup-stub.exe")
+
+ if fetch:
+ return fetch
+
+ raise NotImplementedError(f'Unsupported build_platform: "{build_platform}"')
+
+
+def _generate_task_output_files(
+ task, worker_implementation, repackage_config, locale=None
+):
+ locale_output_path = f"{locale}/" if locale else ""
+ artifact_prefix = get_artifact_prefix(task)
+
+ if worker_implementation == ("docker-worker", "linux"):
+ local_prefix = "/builds/worker/workspace/"
+ elif worker_implementation == ("generic-worker", "windows"):
+ local_prefix = "workspace/"
+ else:
+ raise NotImplementedError(
+ f'Unsupported worker implementation: "{worker_implementation}"'
+ )
+
+ output_files = []
+ for config in repackage_config:
+ output_files.append(
+ {
+ "type": "file",
+ "path": "{}outputs/{}{}".format(
+ local_prefix, locale_output_path, config["output"]
+ ),
+ "name": "{}/{}{}".format(
+ artifact_prefix, locale_output_path, config["output"]
+ ),
+ }
+ )
+ return output_files
diff --git a/taskcluster/gecko_taskgraph/transforms/repackage_l10n.py b/taskcluster/gecko_taskgraph/transforms/repackage_l10n.py
new file mode 100644
index 0000000000..e0f46e6fdc
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/repackage_l10n.py
@@ -0,0 +1,26 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the repackage task into an actual task description.
+"""
+
+
+from taskgraph.transforms.base import TransformSequence
+
+from gecko_taskgraph.util.copy_task import copy_task
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def split_locales(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ for locale in dep_job.attributes.get("chunk_locales", []):
+ locale_job = copy_task(job) # don't overwrite dict values here
+ treeherder = locale_job.setdefault("treeherder", {})
+ treeherder_group = locale_job.pop("treeherder-group")
+ treeherder["symbol"] = f"{treeherder_group}({locale})"
+ locale_job["locale"] = locale
+ yield locale_job
diff --git a/taskcluster/gecko_taskgraph/transforms/repackage_partner.py b/taskcluster/gecko_taskgraph/transforms/repackage_partner.py
new file mode 100644
index 0000000000..582a86dfad
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/repackage_partner.py
@@ -0,0 +1,302 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the repackage task into an actual task description.
+"""
+
+
+import copy
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import optionally_keyed_by, resolve_keyed_by
+from taskgraph.util.taskcluster import get_artifact_prefix
+from voluptuous import Optional, Required
+
+from gecko_taskgraph.loader.single_dep import schema
+from gecko_taskgraph.transforms.repackage import (
+ PACKAGE_FORMATS as PACKAGE_FORMATS_VANILLA,
+)
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
+from gecko_taskgraph.util.partners import get_partner_config_by_kind
+from gecko_taskgraph.util.platforms import archive_format, executable_extension
+from gecko_taskgraph.util.workertypes import worker_type_implementation
+
+
+def _by_platform(arg):
+ return optionally_keyed_by("build-platform", arg)
+
+
+# When repacking the stub installer we need to pass a zip file and package name to the
+# repackage task. This is not needed for vanilla stub but analogous to the full installer.
+PACKAGE_FORMATS = copy.deepcopy(PACKAGE_FORMATS_VANILLA)
+PACKAGE_FORMATS["installer-stub"]["inputs"]["package"] = "target-stub{archive_format}"
+PACKAGE_FORMATS["installer-stub"]["args"].extend(["--package-name", "{package-name}"])
+
+packaging_description_schema = schema.extend(
+ {
+ # unique label to describe this repackaging task
+ Optional("label"): str,
+ # Routes specific to this task, if defined
+ Optional("routes"): [str],
+ # passed through directly to the job description
+ Optional("extra"): task_description_schema["extra"],
+ # Shipping product and phase
+ Optional("shipping-product"): task_description_schema["shipping-product"],
+ Optional("shipping-phase"): task_description_schema["shipping-phase"],
+ Required("package-formats"): _by_platform([str]),
+ # All l10n jobs use mozharness
+ Required("mozharness"): {
+ # Config files passed to the mozharness script
+ Required("config"): _by_platform([str]),
+ # Additional paths to look for mozharness configs in. These should be
+ # relative to the base of the source checkout
+ Optional("config-paths"): [str],
+ # if true, perform a checkout of a comm-central based branch inside the
+ # gecko checkout
+ Optional("comm-checkout"): bool,
+ },
+ # Override the default priority for the project
+ Optional("priority"): task_description_schema["priority"],
+ }
+)
+
+transforms = TransformSequence()
+transforms.add_validate(packaging_description_schema)
+
+
+@transforms.add
+def copy_in_useful_magic(config, jobs):
+ """Copy attributes from upstream task to be used for keyed configuration."""
+ for job in jobs:
+ dep = job["primary-dependency"]
+ job["build-platform"] = dep.attributes.get("build_platform")
+ yield job
+
+
+@transforms.add
+def handle_keyed_by(config, jobs):
+ """Resolve fields that can be keyed by platform, etc."""
+ fields = [
+ "mozharness.config",
+ "package-formats",
+ ]
+ for job in jobs:
+ job = copy.deepcopy(job) # don't overwrite dict values here
+ for field in fields:
+ resolve_keyed_by(item=job, field=field, item_name="?")
+ yield job
+
+
+@transforms.add
+def make_repackage_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+
+ label = job.get("label", dep_job.label.replace("signing-", "repackage-"))
+ job["label"] = label
+
+ yield job
+
+
+@transforms.add
+def make_job_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ attributes = copy_attributes_from_dependent_job(dep_job)
+ build_platform = attributes["build_platform"]
+
+ if job["build-platform"].startswith("win"):
+ if dep_job.kind.endswith("signing"):
+ continue
+ if job["build-platform"].startswith("macosx"):
+ if dep_job.kind.endswith("repack"):
+ continue
+ dependencies = {dep_job.attributes.get("kind"): dep_job.label}
+ dependencies.update(dep_job.dependencies)
+
+ signing_task = None
+ for dependency in dependencies.keys():
+ if build_platform.startswith("macosx") and dependency.endswith("signing"):
+ signing_task = dependency
+ elif build_platform.startswith("win") and dependency.endswith("repack"):
+ signing_task = dependency
+
+ attributes["repackage_type"] = "repackage"
+
+ repack_id = job["extra"]["repack_id"]
+
+ partner_config = get_partner_config_by_kind(config, config.kind)
+ partner, subpartner, _ = repack_id.split("/")
+ repack_stub_installer = partner_config[partner][subpartner].get(
+ "repack_stub_installer"
+ )
+ if build_platform.startswith("win32") and repack_stub_installer:
+ job["package-formats"].append("installer-stub")
+
+ repackage_config = []
+ for format in job.get("package-formats"):
+ command = copy.deepcopy(PACKAGE_FORMATS[format])
+ substs = {
+ "archive_format": archive_format(build_platform),
+ "executable_extension": executable_extension(build_platform),
+ }
+ command["inputs"] = {
+ name: filename.format(**substs)
+ for name, filename in command["inputs"].items()
+ }
+ repackage_config.append(command)
+
+ run = job.get("mozharness", {})
+ run.update(
+ {
+ "using": "mozharness",
+ "script": "mozharness/scripts/repackage.py",
+ "job-script": "taskcluster/scripts/builder/repackage.sh",
+ "actions": ["setup", "repackage"],
+ "extra-config": {
+ "repackage_config": repackage_config,
+ },
+ }
+ )
+
+ worker = {
+ "chain-of-trust": True,
+ "max-run-time": 3600,
+ "taskcluster-proxy": True if get_artifact_prefix(dep_job) else False,
+ "env": {
+ "REPACK_ID": repack_id,
+ },
+ # Don't add generic artifact directory.
+ "skip-artifacts": True,
+ }
+
+ worker_type = "b-linux-gcp"
+ worker["docker-image"] = {"in-tree": "debian11-amd64-build"}
+
+ worker["artifacts"] = _generate_task_output_files(
+ dep_job,
+ worker_type_implementation(config.graph_config, config.params, worker_type),
+ repackage_config,
+ partner=repack_id,
+ )
+
+ description = (
+ "Repackaging for repack_id '{repack_id}' for build '"
+ "{build_platform}/{build_type}'".format(
+ repack_id=job["extra"]["repack_id"],
+ build_platform=attributes.get("build_platform"),
+ build_type=attributes.get("build_type"),
+ )
+ )
+
+ task = {
+ "label": job["label"],
+ "description": description,
+ "worker-type": worker_type,
+ "dependencies": dependencies,
+ "attributes": attributes,
+ "scopes": ["queue:get-artifact:releng/partner/*"],
+ "run-on-projects": dep_job.attributes.get("run_on_projects"),
+ "routes": job.get("routes", []),
+ "extra": job.get("extra", {}),
+ "worker": worker,
+ "run": run,
+ "fetches": _generate_download_config(
+ dep_job,
+ build_platform,
+ signing_task,
+ partner=repack_id,
+ project=config.params["project"],
+ repack_stub_installer=repack_stub_installer,
+ ),
+ }
+
+ # we may have reduced the priority for partner jobs, otherwise task.py will set it
+ if job.get("priority"):
+ task["priority"] = job["priority"]
+ if build_platform.startswith("macosx"):
+ task.setdefault("fetches", {}).setdefault("toolchain", []).extend(
+ [
+ "linux64-libdmg",
+ "linux64-hfsplus",
+ "linux64-node",
+ ]
+ )
+ yield task
+
+
+def _generate_download_config(
+ task,
+ build_platform,
+ signing_task,
+ partner=None,
+ project=None,
+ repack_stub_installer=False,
+):
+ locale_path = f"{partner}/" if partner else ""
+
+ if build_platform.startswith("macosx"):
+ return {
+ signing_task: [
+ {
+ "artifact": f"{locale_path}target.tar.gz",
+ "extract": False,
+ },
+ ],
+ }
+ if build_platform.startswith("win"):
+ download_config = [
+ {
+ "artifact": f"{locale_path}target.zip",
+ "extract": False,
+ },
+ f"{locale_path}setup.exe",
+ ]
+ if build_platform.startswith("win32") and repack_stub_installer:
+ download_config.extend(
+ [
+ {
+ "artifact": f"{locale_path}target-stub.zip",
+ "extract": False,
+ },
+ f"{locale_path}setup-stub.exe",
+ ]
+ )
+ return {signing_task: download_config}
+
+ raise NotImplementedError(f'Unsupported build_platform: "{build_platform}"')
+
+
+def _generate_task_output_files(task, worker_implementation, repackage_config, partner):
+ """We carefully generate an explicit list here, but there's an artifacts directory
+ too, courtesy of generic_worker_add_artifacts() (windows) or docker_worker_add_artifacts().
+ Any errors here are likely masked by that.
+ """
+ partner_output_path = f"{partner}/"
+ artifact_prefix = get_artifact_prefix(task)
+
+ if worker_implementation == ("docker-worker", "linux"):
+ local_prefix = "/builds/worker/workspace/"
+ elif worker_implementation == ("generic-worker", "windows"):
+ local_prefix = "workspace/"
+ else:
+ raise NotImplementedError(
+ f'Unsupported worker implementation: "{worker_implementation}"'
+ )
+
+ output_files = []
+ for config in repackage_config:
+ output_files.append(
+ {
+ "type": "file",
+ "path": "{}outputs/{}{}".format(
+ local_prefix, partner_output_path, config["output"]
+ ),
+ "name": "{}/{}{}".format(
+ artifact_prefix, partner_output_path, config["output"]
+ ),
+ }
+ )
+ return output_files
diff --git a/taskcluster/gecko_taskgraph/transforms/repackage_routes.py b/taskcluster/gecko_taskgraph/transforms/repackage_routes.py
new file mode 100644
index 0000000000..2973ee35bd
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/repackage_routes.py
@@ -0,0 +1,34 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Add indexes to repackage kinds
+"""
+
+from taskgraph.transforms.base import TransformSequence
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def add_indexes(config, jobs):
+ for job in jobs:
+ repackage_type = job["attributes"].get("repackage_type")
+ if repackage_type and job["attributes"]["build_type"] != "debug":
+ build_platform = job["attributes"]["build_platform"]
+ job_name = f"{build_platform}-{repackage_type}"
+ product = job.get("index", {}).get("product", "firefox")
+ index_type = "generic"
+ if job["attributes"].get("shippable") and job["attributes"].get("locale"):
+ index_type = "shippable-l10n"
+ if job["attributes"].get("shippable"):
+ index_type = "shippable"
+ if job["attributes"].get("locale"):
+ index_type = "l10n"
+ job["index"] = {
+ "job-name": job_name,
+ "product": product,
+ "type": index_type,
+ }
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/repackage_set_upstream_mac_kind.py b/taskcluster/gecko_taskgraph/transforms/repackage_set_upstream_mac_kind.py
new file mode 100644
index 0000000000..14c865eea5
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/repackage_set_upstream_mac_kind.py
@@ -0,0 +1,39 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform mac notarization tasks
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import resolve_keyed_by
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def repackage_set_upstream_mac_kind(config, tasks):
+ """
+ Notarization only runs on level 3
+ If level < 3 then repackage the mac-signing task artifact
+ Exception for debug builds, which will use signed build on level 3
+ """
+ for task in tasks:
+ if "macosx64" not in task["primary-dependency"].attributes["build_platform"]:
+ task.pop("upstream-mac-kind")
+ yield task
+ continue
+ resolve_keyed_by(
+ task,
+ "upstream-mac-kind",
+ item_name=config.kind,
+ **{
+ "build-type": task["primary-dependency"].attributes["build_type"],
+ "project": config.params.get("project"),
+ }
+ )
+ upstream_mac_kind = task.pop("upstream-mac-kind")
+
+ if task["primary-dependency"].kind != upstream_mac_kind:
+ continue
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/repackage_signing.py b/taskcluster/gecko_taskgraph/transforms/repackage_signing.py
new file mode 100644
index 0000000000..f98f8f0814
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/repackage_signing.py
@@ -0,0 +1,137 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the repackage signing task into an actual task description.
+"""
+
+import os
+
+from taskgraph.transforms.base import TransformSequence
+from voluptuous import Optional
+
+from gecko_taskgraph.loader.single_dep import schema
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
+from gecko_taskgraph.util.scriptworker import get_signing_cert_scope_per_platform
+
+repackage_signing_description_schema = schema.extend(
+ {
+ Optional("label"): str,
+ Optional("treeherder"): task_description_schema["treeherder"],
+ Optional("shipping-product"): task_description_schema["shipping-product"],
+ Optional("shipping-phase"): task_description_schema["shipping-phase"],
+ }
+)
+
+SIGNING_FORMATS = {
+ "target.installer.exe": ["autograph_authenticode_sha2_stub"],
+ "target.stub-installer.exe": ["autograph_authenticode_sha2_stub"],
+ "target.installer.msi": ["autograph_authenticode_sha2"],
+ "target.installer.msix": ["autograph_authenticode_sha2"],
+}
+
+transforms = TransformSequence()
+transforms.add_validate(repackage_signing_description_schema)
+
+
+@transforms.add
+def make_repackage_signing_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ attributes = copy_attributes_from_dependent_job(dep_job)
+ locale = attributes.get("locale", dep_job.attributes.get("locale"))
+ attributes["repackage_type"] = "repackage-signing"
+
+ treeherder = job.get("treeherder", {})
+ treeherder.setdefault("symbol", "rs(B)")
+ dep_th_platform = dep_job.task.get("extra", {}).get("treeherder-platform")
+ treeherder.setdefault("platform", dep_th_platform)
+ treeherder.setdefault(
+ "tier", dep_job.task.get("extra", {}).get("treeherder", {}).get("tier", 1)
+ )
+ treeherder.setdefault("kind", "build")
+
+ if locale:
+ treeherder["symbol"] = f"rs({locale})"
+
+ if config.kind == "repackage-signing-msi":
+ treeherder["symbol"] = "MSIs({})".format(locale or "N")
+
+ elif config.kind in (
+ "repackage-signing-msix",
+ "repackage-signing-shippable-l10n-msix",
+ ):
+ # Like "MSIXs(Bs-multi)".
+ treeherder["symbol"] = "MSIXs({})".format(
+ dep_job.task.get("extra", {}).get("treeherder", {}).get("symbol", "B")
+ )
+
+ label = job["label"]
+
+ dep_kind = dep_job.kind
+ if "l10n" in dep_kind:
+ dep_kind = "repackage"
+
+ dependencies = {dep_kind: dep_job.label}
+
+ signing_dependencies = dep_job.dependencies
+ # This is so we get the build task etc in our dependencies to have better beetmover
+ # support. But for multi-locale MSIX packages, we don't want the signing task to directly
+ # depend on the langpack tasks.
+ dependencies.update(
+ {
+ k: v
+ for k, v in signing_dependencies.items()
+ if k != "docker-image"
+ and not k.startswith("shippable-l10n-signing-linux64")
+ }
+ )
+
+ description = (
+ "Signing of repackaged artifacts for locale '{locale}' for build '"
+ "{build_platform}/{build_type}'".format(
+ locale=attributes.get("locale", "en-US"),
+ build_platform=attributes.get("build_platform"),
+ build_type=attributes.get("build_type"),
+ )
+ )
+
+ build_platform = dep_job.attributes.get("build_platform")
+ is_shippable = dep_job.attributes.get("shippable")
+ signing_cert_scope = get_signing_cert_scope_per_platform(
+ build_platform, is_shippable, config
+ )
+ scopes = [signing_cert_scope]
+
+ upstream_artifacts = []
+ for artifact in sorted(dep_job.attributes.get("release_artifacts")):
+ basename = os.path.basename(artifact)
+ if basename in SIGNING_FORMATS:
+ upstream_artifacts.append(
+ {
+ "taskId": {"task-reference": f"<{dep_kind}>"},
+ "taskType": "repackage",
+ "paths": [artifact],
+ "formats": SIGNING_FORMATS[os.path.basename(artifact)],
+ }
+ )
+
+ task = {
+ "label": label,
+ "description": description,
+ "worker-type": "linux-signing" if is_shippable else "linux-depsigning",
+ "worker": {
+ "implementation": "scriptworker-signing",
+ "upstream-artifacts": upstream_artifacts,
+ "max-run-time": 3600,
+ },
+ "scopes": scopes,
+ "dependencies": dependencies,
+ "attributes": attributes,
+ "run-on-projects": dep_job.attributes.get("run_on_projects"),
+ "optimization": dep_job.optimization,
+ "treeherder": treeherder,
+ }
+
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/repackage_signing_partner.py b/taskcluster/gecko_taskgraph/transforms/repackage_signing_partner.py
new file mode 100644
index 0000000000..eaf71f92a2
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/repackage_signing_partner.py
@@ -0,0 +1,145 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the repackage signing task into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.taskcluster import get_artifact_path
+from voluptuous import Optional
+
+from gecko_taskgraph.loader.single_dep import schema
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
+from gecko_taskgraph.util.partners import get_partner_config_by_kind
+from gecko_taskgraph.util.scriptworker import get_signing_cert_scope_per_platform
+
+transforms = TransformSequence()
+
+repackage_signing_description_schema = schema.extend(
+ {
+ Optional("label"): str,
+ Optional("extra"): object,
+ Optional("shipping-product"): task_description_schema["shipping-product"],
+ Optional("shipping-phase"): task_description_schema["shipping-phase"],
+ Optional("priority"): task_description_schema["priority"],
+ }
+)
+
+transforms.add_validate(repackage_signing_description_schema)
+
+
+@transforms.add
+def make_repackage_signing_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ repack_id = dep_job.task["extra"]["repack_id"]
+ attributes = dep_job.attributes
+ build_platform = dep_job.attributes.get("build_platform")
+ is_shippable = dep_job.attributes.get("shippable")
+
+ # Mac & windows
+ label = dep_job.label.replace("repackage-", "repackage-signing-")
+ # Linux
+ label = label.replace("chunking-dummy-", "repackage-signing-")
+ description = "Signing of repackaged artifacts for partner repack id '{repack_id}' for build '" "{build_platform}/{build_type}'".format( # NOQA: E501
+ repack_id=repack_id,
+ build_platform=attributes.get("build_platform"),
+ build_type=attributes.get("build_type"),
+ )
+
+ if "linux" in build_platform:
+ # we want the repack job, via the dependencies for the the chunking-dummy dep_job
+ for dep in dep_job.dependencies.values():
+ if dep.startswith("release-partner-repack"):
+ dependencies = {"repack": dep}
+ break
+ else:
+ # we have a genuine repackage job as our parent
+ dependencies = {"repackage": dep_job.label}
+
+ attributes = copy_attributes_from_dependent_job(dep_job)
+ attributes["repackage_type"] = "repackage-signing"
+
+ signing_cert_scope = get_signing_cert_scope_per_platform(
+ build_platform, is_shippable, config
+ )
+ scopes = [signing_cert_scope]
+
+ if "win" in build_platform:
+ upstream_artifacts = [
+ {
+ "taskId": {"task-reference": "<repackage>"},
+ "taskType": "repackage",
+ "paths": [
+ get_artifact_path(dep_job, f"{repack_id}/target.installer.exe"),
+ ],
+ "formats": ["autograph_authenticode_sha2", "autograph_gpg"],
+ }
+ ]
+
+ partner_config = get_partner_config_by_kind(config, config.kind)
+ partner, subpartner, _ = repack_id.split("/")
+ repack_stub_installer = partner_config[partner][subpartner].get(
+ "repack_stub_installer"
+ )
+ if build_platform.startswith("win32") and repack_stub_installer:
+ upstream_artifacts.append(
+ {
+ "taskId": {"task-reference": "<repackage>"},
+ "taskType": "repackage",
+ "paths": [
+ get_artifact_path(
+ dep_job,
+ f"{repack_id}/target.stub-installer.exe",
+ ),
+ ],
+ "formats": ["autograph_authenticode_sha2", "autograph_gpg"],
+ }
+ )
+ elif "mac" in build_platform:
+ upstream_artifacts = [
+ {
+ "taskId": {"task-reference": "<repackage>"},
+ "taskType": "repackage",
+ "paths": [
+ get_artifact_path(dep_job, f"{repack_id}/target.dmg"),
+ ],
+ "formats": ["autograph_gpg"],
+ }
+ ]
+ elif "linux" in build_platform:
+ upstream_artifacts = [
+ {
+ "taskId": {"task-reference": "<repack>"},
+ "taskType": "repackage",
+ "paths": [
+ get_artifact_path(dep_job, f"{repack_id}/target.tar.bz2"),
+ ],
+ "formats": ["autograph_gpg"],
+ }
+ ]
+
+ task = {
+ "label": label,
+ "description": description,
+ "worker-type": "linux-signing",
+ "worker": {
+ "implementation": "scriptworker-signing",
+ "upstream-artifacts": upstream_artifacts,
+ "max-run-time": 3600,
+ },
+ "scopes": scopes,
+ "dependencies": dependencies,
+ "attributes": attributes,
+ "run-on-projects": dep_job.attributes.get("run_on_projects"),
+ "extra": {
+ "repack_id": repack_id,
+ },
+ }
+ # we may have reduced the priority for partner jobs, otherwise task.py will set it
+ if job.get("priority"):
+ task["priority"] = job["priority"]
+
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/repo_update.py b/taskcluster/gecko_taskgraph/transforms/repo_update.py
new file mode 100644
index 0000000000..f4f135b585
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/repo_update.py
@@ -0,0 +1,25 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the repo-update task into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import resolve_keyed_by
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def resolve_keys(config, tasks):
+ for task in tasks:
+ env = task["worker"].setdefault("env", {})
+ env["BRANCH"] = config.params["project"]
+ for envvar in env:
+ resolve_keyed_by(env, envvar, envvar, **config.params)
+
+ for envvar in list(env.keys()):
+ if not env.get(envvar):
+ del env[envvar]
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/reprocess_symbols.py b/taskcluster/gecko_taskgraph/transforms/reprocess_symbols.py
new file mode 100644
index 0000000000..5ad359bd5a
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/reprocess_symbols.py
@@ -0,0 +1,67 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the reprocess-symbols task description template,
+taskcluster/ci/reprocess-symbols/job-template.yml into an actual task description.
+"""
+
+
+import logging
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.treeherder import inherit_treeherder_from_dep, join_symbol
+
+from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
+
+logger = logging.getLogger(__name__)
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def fill_template(config, tasks):
+ for task in tasks:
+ assert len(task["dependent-tasks"]) == 2
+
+ build_dep = task["primary-dependency"]
+ upload_dep = None
+ for dep_idx in task["dependent-tasks"]:
+ dep = task["dependent-tasks"][dep_idx]
+ if dep_idx != build_dep:
+ upload_dep = dep
+
+ task.pop("dependent-tasks", None)
+
+ # Fill out the dynamic fields in the task description
+ task["label"] = build_dep.label + "-reprocess-symbols"
+ task["dependencies"] = {"build": build_dep.label, "upload": upload_dep.label}
+ task["worker"]["env"]["GECKO_HEAD_REPOSITORY"] = config.params[
+ "head_repository"
+ ]
+ task["worker"]["env"]["GECKO_HEAD_REV"] = config.params["head_rev"]
+ task["worker"]["env"]["CRASHSTATS_SECRET"] = task["worker"]["env"][
+ "CRASHSTATS_SECRET"
+ ].format(level=config.params["level"])
+
+ attributes = copy_attributes_from_dependent_job(build_dep)
+ attributes.update(task.get("attributes", {}))
+ task["attributes"] = attributes
+
+ treeherder = inherit_treeherder_from_dep(task, build_dep)
+ th = build_dep.task.get("extra")["treeherder"]
+ th_symbol = th.get("symbol")
+ th_groupsymbol = th.get("groupSymbol", "?")
+
+ # Disambiguate the treeherder symbol.
+ sym = "Rep" + (th_symbol[1:] if th_symbol.startswith("B") else th_symbol)
+ treeherder.setdefault("symbol", join_symbol(th_groupsymbol, sym))
+ task["treeherder"] = treeherder
+
+ task["run-on-projects"] = build_dep.attributes.get("run_on_projects")
+ task["optimization"] = {"reprocess-symbols": None}
+ task["if-dependencies"] = ["build"]
+
+ del task["primary-dependency"]
+
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/reverse_chunk_deps.py b/taskcluster/gecko_taskgraph/transforms/reverse_chunk_deps.py
new file mode 100644
index 0000000000..ac2f282799
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/reverse_chunk_deps.py
@@ -0,0 +1,45 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Adjust dependencies to not exceed MAX_DEPENDENCIES
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.treeherder import add_suffix
+
+import gecko_taskgraph.transforms.release_deps as release_deps
+from gecko_taskgraph import MAX_DEPENDENCIES
+from gecko_taskgraph.util.copy_task import copy_task
+
+transforms = TransformSequence()
+
+
+def yield_job(orig_job, deps, count):
+ job = copy_task(orig_job)
+ job["dependencies"] = deps
+ job["name"] = "{}-{}".format(orig_job["name"], count)
+ if "treeherder" in job:
+ job["treeherder"]["symbol"] = add_suffix(
+ job["treeherder"]["symbol"], f"-{count}"
+ )
+
+ return job
+
+
+@transforms.add
+def add_dependencies(config, jobs):
+ for job in release_deps.add_dependencies(config, jobs):
+ count = 1
+ deps = {}
+
+ # sort for deterministic chunking
+ for dep_label in sorted(job["dependencies"].keys()):
+ deps[dep_label] = dep_label
+ if len(deps) == MAX_DEPENDENCIES:
+ yield yield_job(job, deps, count)
+ deps = {}
+ count += 1
+ if deps:
+ yield yield_job(job, deps, count)
+ count += 1
diff --git a/taskcluster/gecko_taskgraph/transforms/run_pgo_profile.py b/taskcluster/gecko_taskgraph/transforms/run_pgo_profile.py
new file mode 100644
index 0000000000..2585bdd712
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/run_pgo_profile.py
@@ -0,0 +1,34 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Apply some defaults and minor modifications to the pgo jobs.
+"""
+
+import logging
+
+from taskgraph.transforms.base import TransformSequence
+
+logger = logging.getLogger(__name__)
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def run_profile_data(config, jobs):
+ for job in jobs:
+ build_platform = job["attributes"].get("build_platform")
+ instr = "instrumented-build-{}".format(job["name"])
+ if "android" in build_platform:
+ artifact = "geckoview-test_runner.apk"
+ elif "macosx64" in build_platform:
+ artifact = "target.dmg"
+ elif "win" in build_platform:
+ artifact = "target.zip"
+ else:
+ artifact = "target.tar.bz2"
+ job.setdefault("fetches", {})[instr] = [
+ artifact,
+ "target.crashreporter-symbols.zip",
+ ]
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/scriptworker.py b/taskcluster/gecko_taskgraph/transforms/scriptworker.py
new file mode 100644
index 0000000000..5d382702af
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/scriptworker.py
@@ -0,0 +1,18 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+"""
+Transforms for adding appropriate scopes to scriptworker tasks.
+"""
+
+
+from gecko_taskgraph.util.scriptworker import get_balrog_server_scope
+
+
+def add_balrog_scopes(config, jobs):
+ for job in jobs:
+ server_scope = get_balrog_server_scope(config)
+ job["scopes"] = [server_scope]
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/scriptworker_canary.py b/taskcluster/gecko_taskgraph/transforms/scriptworker_canary.py
new file mode 100644
index 0000000000..43735f3dce
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/scriptworker_canary.py
@@ -0,0 +1,46 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Build a command to run `mach release push-scriptworker-canaries`.
+"""
+
+
+from pipes import quote as shell_quote
+
+from mozrelease.scriptworker_canary import TASK_TYPES
+from taskgraph.transforms.base import TransformSequence
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def build_command(config, jobs):
+ scriptworkers = config.params["try_task_config"].get(
+ "scriptworker-canary-workers", []
+ )
+ # Filter the list of workers to those we have configured a set of canary
+ # tasks for.
+ scriptworkers = [
+ scriptworker for scriptworker in scriptworkers if scriptworker in TASK_TYPES
+ ]
+
+ if not scriptworkers:
+ return
+
+ for job in jobs:
+
+ command = ["release", "push-scriptworker-canary"]
+ for scriptworker in scriptworkers:
+ command.extend(["--scriptworker", scriptworker])
+ for address in job.pop("addresses"):
+ command.extend(["--address", address])
+ if "ssh-key-secret" in job:
+ ssh_key_secret = job.pop("ssh-key-secret")
+ command.extend(["--ssh-key-secret", ssh_key_secret])
+ job.setdefault("scopes", []).append(f"secrets:get:{ssh_key_secret}")
+
+ job.setdefault("run", {}).update(
+ {"using": "mach", "mach": " ".join(map(shell_quote, command))}
+ )
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/sentry.py b/taskcluster/gecko_taskgraph/transforms/sentry.py
new file mode 100644
index 0000000000..2e43a15518
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/sentry.py
@@ -0,0 +1,30 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from taskgraph.transforms.base import TransformSequence
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def sentry(config, tasks):
+ """Do transforms specific to github-sync tasks."""
+ if config.params["project"] not in ["mozilla-central", "try"]:
+ return
+ for task in tasks:
+ scopes = [
+ scope.format(level=config.params["level"]) for scope in task["scopes"]
+ ]
+ task["scopes"] = scopes
+
+ env = {
+ key: value.format(
+ level=config.params["level"],
+ head_repository=config.params["head_repository"],
+ head_rev=config.params["head_rev"],
+ )
+ for (key, value) in task["worker"]["env"].items()
+ }
+ task["worker"]["env"] = env
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/shippable_l10n_signing.py b/taskcluster/gecko_taskgraph/transforms/shippable_l10n_signing.py
new file mode 100644
index 0000000000..324efa92dd
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/shippable_l10n_signing.py
@@ -0,0 +1,86 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the signing task into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.treeherder import join_symbol
+
+from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
+from gecko_taskgraph.util.signed_artifacts import (
+ generate_specifications_of_artifacts_to_sign,
+)
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def make_signing_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ job["depname"] = dep_job.label
+
+ # add the chunk number to the TH symbol
+ symbol = job.get("treeherder", {}).get("symbol", "Bs")
+ symbol = "{}{}".format(symbol, dep_job.attributes.get("l10n_chunk"))
+ group = "L10n"
+
+ job["treeherder"] = {
+ "symbol": join_symbol(group, symbol),
+ }
+
+ yield job
+
+
+@transforms.add
+def define_upstream_artifacts(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ upstream_artifact_task = job.pop("upstream-artifact-task", dep_job)
+
+ job["attributes"] = copy_attributes_from_dependent_job(dep_job)
+ if dep_job.attributes.get("chunk_locales"):
+ # Used for l10n attribute passthrough
+ job["attributes"]["chunk_locales"] = dep_job.attributes.get("chunk_locales")
+
+ locale_specifications = generate_specifications_of_artifacts_to_sign(
+ config,
+ job,
+ keep_locale_template=True,
+ dep_kind=upstream_artifact_task.kind,
+ )
+
+ upstream_artifacts = []
+ for spec in locale_specifications:
+ upstream_task_type = "l10n"
+ if upstream_artifact_task.kind.endswith(
+ ("-mac-notarization", "-mac-signing")
+ ):
+ # Upstream is mac signing or notarization
+ upstream_task_type = "scriptworker"
+ upstream_artifacts.append(
+ {
+ "taskId": {"task-reference": f"<{upstream_artifact_task.kind}>"},
+ "taskType": upstream_task_type,
+ # Set paths based on artifacts in the specs (above) one per
+ # locale present in the chunk this is signing stuff for.
+ # Pass paths through set and sorted() so we get a list back
+ # and we remove any duplicates (e.g. hardcoded ja-JP-mac langpack)
+ "paths": sorted(
+ {
+ path_template.format(locale=locale)
+ for locale in upstream_artifact_task.attributes.get(
+ "chunk_locales", []
+ )
+ for path_template in spec["artifacts"]
+ }
+ ),
+ "formats": spec["formats"],
+ }
+ )
+
+ job["upstream-artifacts"] = upstream_artifacts
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/signing.py b/taskcluster/gecko_taskgraph/transforms/signing.py
new file mode 100644
index 0000000000..9a5873fc81
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/signing.py
@@ -0,0 +1,266 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the signing task into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.keyed_by import evaluate_keyed_by
+from taskgraph.util.schema import taskref_or_string
+from voluptuous import Optional, Required
+
+from gecko_taskgraph.loader.single_dep import schema
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.attributes import (
+ copy_attributes_from_dependent_job,
+ release_level,
+)
+from gecko_taskgraph.util.scriptworker import (
+ add_scope_prefix,
+ get_signing_cert_scope_per_platform,
+)
+
+transforms = TransformSequence()
+
+signing_description_schema = schema.extend(
+ {
+ # Artifacts from dep task to sign - Sync with taskgraph/transforms/task.py
+ # because this is passed directly into the signingscript worker
+ Required("upstream-artifacts"): [
+ {
+ # taskId of the task with the artifact
+ Required("taskId"): taskref_or_string,
+ # type of signing task (for CoT)
+ Required("taskType"): str,
+ # Paths to the artifacts to sign
+ Required("paths"): [str],
+ # Signing formats to use on each of the paths
+ Required("formats"): [str],
+ }
+ ],
+ # depname is used in taskref's to identify the taskID of the unsigned things
+ Required("depname"): str,
+ # attributes for this task
+ Optional("attributes"): {str: object},
+ # unique label to describe this signing task, defaults to {dep.label}-signing
+ Optional("label"): str,
+ # treeherder is allowed here to override any defaults we use for signing. See
+ # taskcluster/gecko_taskgraph/transforms/task.py for the schema details, and the
+ # below transforms for defaults of various values.
+ Optional("treeherder"): task_description_schema["treeherder"],
+ # Routes specific to this task, if defined
+ Optional("routes"): [str],
+ Optional("shipping-phase"): task_description_schema["shipping-phase"],
+ Optional("shipping-product"): task_description_schema["shipping-product"],
+ Optional("dependent-tasks"): {str: object},
+ # Optional control for how long a task may run (aka maxRunTime)
+ Optional("max-run-time"): int,
+ Optional("extra"): {str: object},
+ # Max number of partner repacks per chunk
+ Optional("repacks-per-chunk"): int,
+ # Override the default priority for the project
+ Optional("priority"): task_description_schema["priority"],
+ }
+)
+
+
+@transforms.add
+def set_defaults(config, jobs):
+ for job in jobs:
+ if not job.get("depname"):
+ dep_job = job["primary-dependency"]
+ job["depname"] = dep_job.kind
+ yield job
+
+
+transforms.add_validate(signing_description_schema)
+
+
+@transforms.add
+def add_entitlements_link(config, jobs):
+ for job in jobs:
+ entitlements_path = evaluate_keyed_by(
+ config.graph_config["mac-notarization"]["mac-entitlements"],
+ "mac entitlements",
+ {
+ "platform": job["primary-dependency"].attributes.get("build_platform"),
+ "release-level": release_level(config.params["project"]),
+ },
+ )
+ if entitlements_path:
+ job["entitlements-url"] = config.params.file_url(
+ entitlements_path,
+ )
+ yield job
+
+
+@transforms.add
+def add_requirements_link(config, jobs):
+ for job in jobs:
+ requirements_path = evaluate_keyed_by(
+ config.graph_config["mac-notarization"]["mac-requirements"],
+ "mac requirements",
+ {
+ "platform": job["primary-dependency"].attributes.get("build_platform"),
+ },
+ )
+ if requirements_path:
+ job["requirements-plist-url"] = config.params.file_url(
+ requirements_path,
+ )
+ yield job
+
+
+@transforms.add
+def make_task_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ attributes = dep_job.attributes
+
+ signing_format_scopes = []
+ formats = set()
+ for artifacts in job["upstream-artifacts"]:
+ for f in artifacts["formats"]:
+ formats.add(f) # Add each format only once
+
+ is_shippable = dep_job.attributes.get("shippable", False)
+ build_platform = dep_job.attributes.get("build_platform")
+ treeherder = None
+ if "partner" not in config.kind and "eme-free" not in config.kind:
+ treeherder = job.get("treeherder", {})
+
+ dep_th_platform = (
+ dep_job.task.get("extra", {})
+ .get("treeherder", {})
+ .get("machine", {})
+ .get("platform", "")
+ )
+ build_type = dep_job.attributes.get("build_type")
+ treeherder.setdefault(
+ "platform",
+ _generate_treeherder_platform(
+ dep_th_platform, build_platform, build_type
+ ),
+ )
+
+ # ccov builds are tier 2, so they cannot have tier 1 tasks
+ # depending on them.
+ treeherder.setdefault(
+ "tier",
+ dep_job.task.get("extra", {}).get("treeherder", {}).get("tier", 1),
+ )
+ treeherder.setdefault(
+ "symbol",
+ _generate_treeherder_symbol(
+ dep_job.task.get("extra", {}).get("treeherder", {}).get("symbol")
+ ),
+ )
+ treeherder.setdefault("kind", "build")
+
+ label = job["label"]
+ description = (
+ "Initial Signing for locale '{locale}' for build '"
+ "{build_platform}/{build_type}'".format(
+ locale=attributes.get("locale", "en-US"),
+ build_platform=build_platform,
+ build_type=attributes.get("build_type"),
+ )
+ )
+
+ attributes = (
+ job["attributes"]
+ if job.get("attributes")
+ else copy_attributes_from_dependent_job(dep_job)
+ )
+ attributes["signed"] = True
+
+ if "linux" in build_platform:
+ attributes["release_artifacts"] = ["public/build/KEY"]
+
+ if dep_job.attributes.get("chunk_locales"):
+ # Used for l10n attribute passthrough
+ attributes["chunk_locales"] = dep_job.attributes.get("chunk_locales")
+
+ signing_cert_scope = get_signing_cert_scope_per_platform(
+ build_platform, is_shippable, config
+ )
+ worker_type_alias = "linux-signing" if is_shippable else "linux-depsigning"
+ task = {
+ "label": label,
+ "description": description,
+ "worker": {
+ "implementation": "scriptworker-signing",
+ "upstream-artifacts": job["upstream-artifacts"],
+ "max-run-time": job.get("max-run-time", 3600),
+ },
+ "scopes": [signing_cert_scope] + signing_format_scopes,
+ "dependencies": _generate_dependencies(job),
+ "attributes": attributes,
+ "run-on-projects": dep_job.attributes.get("run_on_projects"),
+ "optimization": dep_job.optimization,
+ "routes": job.get("routes", []),
+ "shipping-product": job.get("shipping-product"),
+ "shipping-phase": job.get("shipping-phase"),
+ }
+ if dep_job.kind in task["dependencies"]:
+ task["if-dependencies"] = [dep_job.kind]
+
+ # build-mac-{signing,notarization} uses signingscript instead of iscript
+ if "macosx" in build_platform and config.kind.endswith("-mac-notarization"):
+ task["worker"]["mac-behavior"] = "apple_notarization"
+ task["scopes"] = [
+ add_scope_prefix(config, "signing:cert:release-apple-notarization")
+ ]
+ elif "macosx" in build_platform:
+ # iscript overrides
+ task["worker"]["mac-behavior"] = "mac_sign_and_pkg"
+
+ worker_type_alias_map = {
+ "linux-depsigning": "mac-depsigning",
+ "linux-signing": "mac-signing",
+ }
+ assert worker_type_alias in worker_type_alias_map, (
+ "Make sure to adjust the below worker_type_alias logic for "
+ "mac if you change the signing workerType aliases!"
+ " ({} not found in mapping)".format(worker_type_alias)
+ )
+ worker_type_alias = worker_type_alias_map[worker_type_alias]
+ for attr in ("entitlements-url", "requirements-plist-url"):
+ if job.get(attr):
+ task["worker"][attr] = job[attr]
+
+ task["worker-type"] = worker_type_alias
+ if treeherder:
+ task["treeherder"] = treeherder
+ if job.get("extra"):
+ task["extra"] = job["extra"]
+ # we may have reduced the priority for partner jobs, otherwise task.py will set it
+ if job.get("priority"):
+ task["priority"] = job["priority"]
+
+ yield task
+
+
+def _generate_dependencies(job):
+ if isinstance(job.get("dependent-tasks"), dict):
+ deps = {}
+ for k, v in job["dependent-tasks"].items():
+ deps[k] = v.label
+ return deps
+ return {job["depname"]: job["primary-dependency"].label}
+
+
+def _generate_treeherder_platform(dep_th_platform, build_platform, build_type):
+ if "-pgo" in build_platform:
+ actual_build_type = "pgo"
+ elif "-ccov" in build_platform:
+ actual_build_type = "ccov"
+ else:
+ actual_build_type = build_type
+ return f"{dep_th_platform}/{actual_build_type}"
+
+
+def _generate_treeherder_symbol(build_symbol):
+ symbol = build_symbol + "s"
+ return symbol
diff --git a/taskcluster/gecko_taskgraph/transforms/source_checksums_signing.py b/taskcluster/gecko_taskgraph/transforms/source_checksums_signing.py
new file mode 100644
index 0000000000..60c5f30ed3
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/source_checksums_signing.py
@@ -0,0 +1,83 @@
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the checksums signing task into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+from voluptuous import Optional
+
+from gecko_taskgraph.loader.single_dep import schema
+from gecko_taskgraph.transforms.task import task_description_schema
+from gecko_taskgraph.util.attributes import copy_attributes_from_dependent_job
+from gecko_taskgraph.util.scriptworker import get_signing_cert_scope
+
+checksums_signing_description_schema = schema.extend(
+ {
+ Optional("label"): str,
+ Optional("treeherder"): task_description_schema["treeherder"],
+ Optional("shipping-product"): task_description_schema["shipping-product"],
+ Optional("shipping-phase"): task_description_schema["shipping-phase"],
+ }
+)
+
+transforms = TransformSequence()
+transforms.add_validate(checksums_signing_description_schema)
+
+
+@transforms.add
+def make_checksums_signing_description(config, jobs):
+ for job in jobs:
+ dep_job = job["primary-dependency"]
+ attributes = dep_job.attributes
+
+ treeherder = job.get("treeherder", {})
+ treeherder.setdefault("symbol", "css(N)")
+ dep_th_platform = (
+ dep_job.task.get("extra", {})
+ .get("treeherder", {})
+ .get("machine", {})
+ .get("platform", "")
+ )
+ treeherder.setdefault("platform", f"{dep_th_platform}/opt")
+ treeherder.setdefault("tier", 1)
+ treeherder.setdefault("kind", "build")
+
+ label = job["label"]
+ description = "Signing of release-source checksums file"
+ dependencies = {"beetmover": dep_job.label}
+
+ attributes = copy_attributes_from_dependent_job(dep_job)
+
+ upstream_artifacts = [
+ {
+ "taskId": {"task-reference": "<beetmover>"},
+ "taskType": "beetmover",
+ "paths": [
+ "public/target-source.checksums",
+ ],
+ "formats": ["autograph_gpg"],
+ }
+ ]
+
+ signing_cert_scope = get_signing_cert_scope(config)
+
+ task = {
+ "label": label,
+ "description": description,
+ "worker-type": "linux-signing",
+ "worker": {
+ "implementation": "scriptworker-signing",
+ "upstream-artifacts": upstream_artifacts,
+ "max-run-time": 3600,
+ },
+ "scopes": [
+ signing_cert_scope,
+ ],
+ "dependencies": dependencies,
+ "attributes": attributes,
+ "run-on-projects": dep_job.attributes.get("run_on_projects"),
+ "treeherder": treeherder,
+ }
+
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/source_test.py b/taskcluster/gecko_taskgraph/transforms/source_test.py
new file mode 100644
index 0000000000..b480fcad02
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/source_test.py
@@ -0,0 +1,270 @@
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Source-test jobs can run on multiple platforms. These transforms allow jobs
+with either `platform` or a list of `platforms`, and set the appropriate
+treeherder configuration and attributes for that platform.
+"""
+
+
+import copy
+import os
+
+import taskgraph
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.attributes import keymatch
+from taskgraph.util.schema import Schema, optionally_keyed_by, resolve_keyed_by
+from taskgraph.util.treeherder import join_symbol, split_symbol
+from voluptuous import Any, Extra, Optional, Required
+
+from gecko_taskgraph.transforms.job import job_description_schema
+from gecko_taskgraph.util.hg import get_json_automationrelevance
+
+source_test_description_schema = Schema(
+ {
+ # most fields are passed directly through as job fields, and are not
+ # repeated here
+ Extra: object,
+ # The platform on which this task runs. This will be used to set up attributes
+ # (for try selection) and treeherder metadata (for display). If given as a list,
+ # the job will be "split" into multiple tasks, one with each platform.
+ Required("platform"): Any(str, [str]),
+ # Build labels required for the task. If this key is provided it must
+ # contain a build label for the task platform.
+ # The task will then depend on a build task, and the installer url will be
+ # saved to the GECKO_INSTALLER_URL environment variable.
+ Optional("require-build"): optionally_keyed_by("project", {str: str}),
+ # These fields can be keyed by "platform", and are otherwise identical to
+ # job descriptions.
+ Required("worker-type"): optionally_keyed_by(
+ "platform", job_description_schema["worker-type"]
+ ),
+ Required("worker"): optionally_keyed_by(
+ "platform", job_description_schema["worker"]
+ ),
+ Optional("python-version"): [int],
+ Optional("dependencies"): {
+ k: optionally_keyed_by("platform", v)
+ for k, v in job_description_schema["dependencies"].items()
+ },
+ # A list of artifacts to install from 'fetch' tasks.
+ Optional("fetches"): {
+ str: optionally_keyed_by(
+ "platform", job_description_schema["fetches"][str]
+ ),
+ },
+ }
+)
+
+transforms = TransformSequence()
+
+transforms.add_validate(source_test_description_schema)
+
+
+@transforms.add
+def set_job_name(config, jobs):
+ for job in jobs:
+ if "job-from" in job and job["job-from"] != "kind.yml":
+ from_name = os.path.splitext(job["job-from"])[0]
+ job["name"] = "{}-{}".format(from_name, job["name"])
+ yield job
+
+
+@transforms.add
+def expand_platforms(config, jobs):
+ for job in jobs:
+ if isinstance(job["platform"], str):
+ yield job
+ continue
+
+ for platform in job["platform"]:
+ pjob = copy.deepcopy(job)
+ pjob["platform"] = platform
+
+ if "name" in pjob:
+ pjob["name"] = "{}-{}".format(pjob["name"], platform)
+ else:
+ pjob["label"] = "{}-{}".format(pjob["label"], platform)
+ yield pjob
+
+
+@transforms.add
+def split_python(config, jobs):
+ for job in jobs:
+ key = "python-version"
+ versions = job.pop(key, [])
+ if not versions:
+ yield job
+ continue
+ for version in versions:
+ group = f"py{version}"
+ pyjob = copy.deepcopy(job)
+ if "name" in pyjob:
+ pyjob["name"] += f"-{group}"
+ else:
+ pyjob["label"] += f"-{group}"
+ symbol = split_symbol(pyjob["treeherder"]["symbol"])[1]
+ pyjob["treeherder"]["symbol"] = join_symbol(group, symbol)
+ pyjob["run"][key] = version
+ yield pyjob
+
+
+@transforms.add
+def split_jsshell(config, jobs):
+ all_shells = {"sm": "Spidermonkey", "v8": "Google V8"}
+
+ for job in jobs:
+ if not job["name"].startswith("jsshell"):
+ yield job
+ continue
+
+ test = job.pop("test")
+ for shell in job.get("shell", all_shells.keys()):
+ assert shell in all_shells
+
+ new_job = copy.deepcopy(job)
+ new_job["name"] = "{}-{}".format(new_job["name"], shell)
+ new_job["description"] = "{} on {}".format(
+ new_job["description"], all_shells[shell]
+ )
+ new_job["shell"] = shell
+
+ group = f"js-bench-{shell}"
+ symbol = split_symbol(new_job["treeherder"]["symbol"])[1]
+ new_job["treeherder"]["symbol"] = join_symbol(group, symbol)
+
+ run = new_job["run"]
+ run["mach"] = run["mach"].format(
+ shell=shell, SHELL=shell.upper(), test=test
+ )
+ yield new_job
+
+
+def add_build_dependency(config, job):
+ """
+ Add build dependency to the job and installer_url to env.
+ """
+ key = job["platform"]
+ build_labels = job.pop("require-build", {})
+ matches = keymatch(build_labels, key)
+ if not matches:
+ raise Exception(
+ "No build platform found. "
+ "Define 'require-build' for {} in the task config.".format(key)
+ )
+
+ if len(matches) > 1:
+ raise Exception(f"More than one build platform found for '{key}'.")
+
+ label = matches[0]
+ deps = job.setdefault("dependencies", {})
+ deps.update({"build": label})
+
+
+@transforms.add
+def handle_platform(config, jobs):
+ """
+ Handle the 'platform' property, setting up treeherder context as well as
+ try-related attributes.
+ """
+ fields = [
+ "always-target",
+ "fetches.toolchain",
+ "require-build",
+ "worker-type",
+ "worker",
+ ]
+
+ for job in jobs:
+ platform = job["platform"]
+
+ for field in fields:
+ resolve_keyed_by(
+ job, field, item_name=job["name"], project=config.params["project"]
+ )
+ for field in job.get("dependencies", {}):
+ resolve_keyed_by(
+ job,
+ f"dependencies.{field}",
+ item_name=job["name"],
+ project=config.params["project"],
+ )
+
+ if "treeherder" in job:
+ job["treeherder"].setdefault("platform", platform)
+
+ if "require-build" in job:
+ add_build_dependency(config, job)
+
+ del job["platform"]
+ yield job
+
+
+@transforms.add
+def handle_shell(config, jobs):
+ """
+ Handle the 'shell' property.
+ """
+ fields = [
+ "run-on-projects",
+ "worker.env",
+ ]
+
+ for job in jobs:
+ if not job.get("shell"):
+ yield job
+ continue
+
+ for field in fields:
+ resolve_keyed_by(job, field, item_name=job["name"])
+
+ del job["shell"]
+ yield job
+
+
+@transforms.add
+def set_code_review_env(config, jobs):
+ """
+ Add a CODE_REVIEW environment variable when running in code-review bot mode
+ """
+ is_code_review = config.params["target_tasks_method"] == "codereview"
+
+ for job in jobs:
+ attrs = job.get("attributes", {})
+ if is_code_review and attrs.get("code-review") is True:
+ env = job["worker"].setdefault("env", {})
+ env["CODE_REVIEW"] = "1"
+
+ yield job
+
+
+@transforms.add
+def set_base_revision_in_tgdiff(config, jobs):
+ # Don't attempt to download 'json-automation' locally as the revision may
+ # not exist in the repository.
+ if not os.environ.get("MOZ_AUTOMATION") or taskgraph.fast:
+ yield from jobs
+ return
+
+ data = get_json_automationrelevance(
+ config.params["head_repository"], config.params["head_rev"]
+ )
+ for job in jobs:
+ if job["name"] != "taskgraph-diff":
+ yield job
+ continue
+
+ job["run"]["command-context"] = {
+ "base_rev": data["changesets"][0]["parents"][0]
+ }
+ yield job
+
+
+@transforms.add
+def set_worker_exit_code(config, jobs):
+ for job in jobs:
+ worker = job["worker"]
+ worker.setdefault("retry-exit-status", [])
+ if 137 not in worker["retry-exit-status"]:
+ worker["retry-exit-status"].append(137)
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/spidermonkey.py b/taskcluster/gecko_taskgraph/transforms/spidermonkey.py
new file mode 100644
index 0000000000..8e652f1668
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/spidermonkey.py
@@ -0,0 +1,21 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+import copy
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import resolve_keyed_by
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def handle_keyed_by(config, jobs):
+ """Resolve fields that can be keyed by platform, etc."""
+ fields = ["fetches.toolchain"]
+ for job in jobs:
+ job = copy.deepcopy(job) # don't overwrite dict values here
+ for field in fields:
+ resolve_keyed_by(item=job, field=field, item_name=job["name"])
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/split_by_locale.py b/taskcluster/gecko_taskgraph/transforms/split_by_locale.py
new file mode 100644
index 0000000000..ae68ab5051
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/split_by_locale.py
@@ -0,0 +1,79 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+This transform splits the jobs it receives into per-locale tasks. Locales are
+provided by the `locales-file`.
+"""
+
+from copy import deepcopy
+from pprint import pprint
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import Schema
+from voluptuous import Extra, Optional, Required
+
+from gecko_taskgraph.transforms.l10n import parse_locales_file
+
+transforms = TransformSequence()
+
+split_by_locale_schema = Schema(
+ {
+ # The file to pull locale information from. This should be a json file
+ # such as browser/locales/l10n-changesets.json.
+ Required("locales-file"): str,
+ # The platform name in the form used by the locales files. Defaults to
+ # attributes.build_platform if not provided.
+ Optional("locale-file-platform"): str,
+ # A list of properties elsewhere in the job that need to have the locale
+ # name substituted into them. The referenced properties may be strings
+ # or lists. In the case of the latter, all list values will have
+ # substitutions performed.
+ Optional("properties-with-locale"): [str],
+ Extra: object,
+ }
+)
+
+
+transforms.add_validate(split_by_locale_schema)
+
+
+@transforms.add
+def add_command(config, jobs):
+ for job in jobs:
+ locales_file = job.pop("locales-file")
+ properties_with_locale = job.pop("properties-with-locale")
+ build_platform = job.pop(
+ "locale-file-platform", job["attributes"]["build_platform"]
+ )
+
+ for locale in parse_locales_file(locales_file, build_platform):
+ locale_job = deepcopy(job)
+ locale_job["attributes"]["locale"] = locale
+ for prop in properties_with_locale:
+ container, subfield = locale_job, prop
+ while "." in subfield:
+ f, subfield = subfield.split(".", 1)
+ if f not in container:
+ raise Exception(
+ f"Unable to find property {prop} to perform locale substitution on. Job is:\n{pprint(job)}"
+ )
+ container = container[f]
+ if not isinstance(container, dict):
+ raise Exception(
+ f"{container} is not a dict, cannot perform locale substitution. Job is:\n{pprint(job)}"
+ )
+
+ if isinstance(container[subfield], str):
+ container[subfield] = container[subfield].format(locale=locale)
+ elif isinstance(container[subfield], list):
+ for i in range(len(container[subfield])):
+ container[subfield][i] = container[subfield][i].format(
+ locale=locale
+ )
+ else:
+ raise Exception(
+ f"Don't know how to subtitute locale for value of type: {type(container[subfield])}; value is: {container[subfield]}"
+ )
+
+ yield locale_job
diff --git a/taskcluster/gecko_taskgraph/transforms/startup_test.py b/taskcluster/gecko_taskgraph/transforms/startup_test.py
new file mode 100644
index 0000000000..2660ef6e93
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/startup_test.py
@@ -0,0 +1,40 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+from taskgraph.transforms.base import TransformSequence
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def add_command(config, jobs):
+ for job in jobs:
+ extra_config = job.pop("extra-config")
+ upstream_kind = extra_config["upstream_kind"]
+ upstream_artifact = extra_config["upstream_artifact"]
+ binary = extra_config["binary"]
+ package_to_test = "<{}/public/build/{}>".format(
+ upstream_kind, upstream_artifact
+ )
+
+ if job["attributes"]["build_platform"].startswith("linux"):
+ job["run"]["command"] = {
+ "artifact-reference": ". $HOME/scripts/xvfb.sh && start_xvfb '1600x1200x24' 0 && "
+ + "python3 ./mach python testing/mozharness/scripts/does_it_crash.py "
+ + "--run-for 30 --thing-url "
+ + package_to_test
+ + " --thing-to-run "
+ + binary
+ }
+ else:
+ job["run"]["mach"] = {
+ "artifact-reference": "python testing/mozharness/scripts/does_it_crash.py "
+ + "--run-for 30 --thing-url "
+ + package_to_test
+ + " --thing-to-run "
+ + binary
+ }
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/strip_dependent_task.py b/taskcluster/gecko_taskgraph/transforms/strip_dependent_task.py
new file mode 100644
index 0000000000..4e1ec8783a
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/strip_dependent_task.py
@@ -0,0 +1,17 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+FIXME
+"""
+
+from taskgraph.transforms.base import TransformSequence
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def strip_dependent_task(config, jobs):
+ for job in jobs:
+ del job["primary-dependency"]
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/task.py b/taskcluster/gecko_taskgraph/transforms/task.py
new file mode 100644
index 0000000000..e823e96b21
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/task.py
@@ -0,0 +1,2266 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+These transformations take a task description and turn it into a TaskCluster
+task definition (along with attributes, label, etc.). The input to these
+transformations is generic to any kind of task, but abstracts away some of the
+complexities of worker implementations, scopes, and treeherder annotations.
+"""
+
+
+import datetime
+import hashlib
+import os
+import re
+import time
+
+import attr
+from mozbuild.util import memoize
+from taskcluster.utils import fromNow
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.keyed_by import evaluate_keyed_by
+from taskgraph.util.schema import (
+ Schema,
+ optionally_keyed_by,
+ resolve_keyed_by,
+ taskref_or_string,
+ validate_schema,
+)
+from taskgraph.util.treeherder import split_symbol
+from voluptuous import All, Any, Extra, Match, NotIn, Optional, Required
+
+from gecko_taskgraph import GECKO, MAX_DEPENDENCIES
+from gecko_taskgraph.optimize.schema import OptimizationSchema
+from gecko_taskgraph.transforms.job.common import get_expiration
+from gecko_taskgraph.util import docker as dockerutil
+from gecko_taskgraph.util.attributes import TRUNK_PROJECTS, is_try, release_level
+from gecko_taskgraph.util.copy_task import copy_task
+from gecko_taskgraph.util.hash import hash_path
+from gecko_taskgraph.util.partners import get_partners_to_be_published
+from gecko_taskgraph.util.scriptworker import BALROG_ACTIONS, get_release_config
+from gecko_taskgraph.util.signed_artifacts import get_signed_artifacts
+from gecko_taskgraph.util.workertypes import get_worker_type, worker_type_implementation
+
+RUN_TASK = os.path.join(GECKO, "taskcluster", "scripts", "run-task")
+
+SCCACHE_GCS_PROJECT = "sccache-3"
+
+
+@memoize
+def _run_task_suffix():
+ """String to append to cache names under control of run-task."""
+ return hash_path(RUN_TASK)[0:20]
+
+
+def _compute_geckoview_version(app_version, moz_build_date):
+ """Geckoview version string that matches geckoview gradle configuration"""
+ # Must be synchronized with /mobile/android/geckoview/build.gradle computeVersionCode(...)
+ version_without_milestone = re.sub(r"a[0-9]", "", app_version, 1)
+ parts = version_without_milestone.split(".")
+ return f"{parts[0]}.{parts[1]}.{moz_build_date}"
+
+
+# A task description is a general description of a TaskCluster task
+task_description_schema = Schema(
+ {
+ # the label for this task
+ Required("label"): str,
+ # description of the task (for metadata)
+ Required("description"): str,
+ # attributes for this task
+ Optional("attributes"): {str: object},
+ # relative path (from config.path) to the file task was defined in
+ Optional("job-from"): str,
+ # dependencies of this task, keyed by name; these are passed through
+ # verbatim and subject to the interpretation of the Task's get_dependencies
+ # method.
+ Optional("dependencies"): {
+ All(
+ str,
+ NotIn(
+ ["self", "decision"],
+ "Can't use 'self` or 'decision' as depdency names.",
+ ),
+ ): object,
+ },
+ # Soft dependencies of this task, as a list of tasks labels
+ Optional("soft-dependencies"): [str],
+ # Dependencies that must be scheduled in order for this task to run.
+ Optional("if-dependencies"): [str],
+ Optional("requires"): Any("all-completed", "all-resolved"),
+ # expiration and deadline times, relative to task creation, with units
+ # (e.g., "14 days"). Defaults are set based on the project.
+ Optional("expires-after"): str,
+ Optional("deadline-after"): str,
+ Optional("expiration-policy"): str,
+ # custom routes for this task; the default treeherder routes will be added
+ # automatically
+ Optional("routes"): [str],
+ # custom scopes for this task; any scopes required for the worker will be
+ # added automatically. The following parameters will be substituted in each
+ # scope:
+ # {level} -- the scm level of this push
+ # {project} -- the project of this push
+ Optional("scopes"): [str],
+ # Tags
+ Optional("tags"): {str: str},
+ # custom "task.extra" content
+ Optional("extra"): {str: object},
+ # treeherder-related information; see
+ # https://firefox-ci-tc.services.mozilla.com/schemas/taskcluster-treeherder/v1/task-treeherder-config.json
+ # If not specified, no treeherder extra information or routes will be
+ # added to the task
+ Optional("treeherder"): {
+ # either a bare symbol, or "grp(sym)".
+ "symbol": str,
+ # the job kind
+ "kind": Any("build", "test", "other"),
+ # tier for this task
+ "tier": int,
+ # task platform, in the form platform/collection, used to set
+ # treeherder.machine.platform and treeherder.collection or
+ # treeherder.labels
+ "platform": Match("^[A-Za-z0-9_-]{1,50}/[A-Za-z0-9_-]{1,50}$"),
+ },
+ # information for indexing this build so its artifacts can be discovered;
+ # if omitted, the build will not be indexed.
+ Optional("index"): {
+ # the name of the product this build produces
+ "product": str,
+ # the names to use for this job in the TaskCluster index
+ "job-name": str,
+ # Type of gecko v2 index to use
+ "type": Any(
+ "generic",
+ "l10n",
+ "shippable",
+ "shippable-l10n",
+ "android-shippable",
+ "android-shippable-with-multi-l10n",
+ "shippable-with-multi-l10n",
+ ),
+ # The rank that the task will receive in the TaskCluster
+ # index. A newly completed task supercedes the currently
+ # indexed task iff it has a higher rank. If unspecified,
+ # 'by-tier' behavior will be used.
+ "rank": Any(
+ # Rank is equal the timestamp of the build_date for tier-1
+ # tasks, and zero for non-tier-1. This sorts tier-{2,3}
+ # builds below tier-1 in the index.
+ "by-tier",
+ # Rank is given as an integer constant (e.g. zero to make
+ # sure a task is last in the index).
+ int,
+ # Rank is equal to the timestamp of the build_date. This
+ # option can be used to override the 'by-tier' behavior
+ # for non-tier-1 tasks.
+ "build_date",
+ ),
+ },
+ # The `run_on_projects` attribute, defaulting to "all". This dictates the
+ # projects on which this task should be included in the target task set.
+ # See the attributes documentation for details.
+ Optional("run-on-projects"): optionally_keyed_by("build-platform", [str]),
+ # Like `run_on_projects`, `run-on-hg-branches` defaults to "all".
+ Optional("run-on-hg-branches"): optionally_keyed_by("project", [str]),
+ # The `shipping_phase` attribute, defaulting to None. This specifies the
+ # release promotion phase that this task belongs to.
+ Required("shipping-phase"): Any(
+ None,
+ "build",
+ "promote",
+ "push",
+ "ship",
+ ),
+ # The `shipping_product` attribute, defaulting to None. This specifies the
+ # release promotion product that this task belongs to.
+ Required("shipping-product"): Any(None, str),
+ # The `always-target` attribute will cause the task to be included in the
+ # target_task_graph regardless of filtering. Tasks included in this manner
+ # will be candidates for optimization even when `optimize_target_tasks` is
+ # False, unless the task was also explicitly chosen by the target_tasks
+ # method.
+ Required("always-target"): bool,
+ # Optimization to perform on this task during the optimization phase.
+ # Optimizations are defined in taskcluster/gecko_taskgraph/optimize.py.
+ Required("optimization"): OptimizationSchema,
+ # the provisioner-id/worker-type for the task. The following parameters will
+ # be substituted in this string:
+ # {level} -- the scm level of this push
+ "worker-type": str,
+ # Whether the job should use sccache compiler caching.
+ Required("use-sccache"): bool,
+ # information specific to the worker implementation that will run this task
+ Optional("worker"): {
+ Required("implementation"): str,
+ Extra: object,
+ },
+ # Override the default priority for the project
+ Optional("priority"): str,
+ }
+)
+
+TC_TREEHERDER_SCHEMA_URL = (
+ "https://github.com/taskcluster/taskcluster-treeherder/"
+ "blob/master/schemas/task-treeherder-config.yml"
+)
+
+
+UNKNOWN_GROUP_NAME = (
+ "Treeherder group {} (from {}) has no name; " "add it to taskcluster/ci/config.yml"
+)
+
+V2_ROUTE_TEMPLATES = [
+ "index.{trust-domain}.v2.{project}.latest.{product}.{job-name}",
+ "index.{trust-domain}.v2.{project}.pushdate.{build_date_long}.{product}.{job-name}",
+ "index.{trust-domain}.v2.{project}.pushdate.{build_date}.latest.{product}.{job-name}",
+ "index.{trust-domain}.v2.{project}.pushlog-id.{pushlog_id}.{product}.{job-name}",
+ "index.{trust-domain}.v2.{project}.revision.{branch_rev}.{product}.{job-name}",
+]
+
+# {central, inbound, autoland} write to a "trunk" index prefix. This facilitates
+# walking of tasks with similar configurations.
+V2_TRUNK_ROUTE_TEMPLATES = [
+ "index.{trust-domain}.v2.trunk.revision.{branch_rev}.{product}.{job-name}",
+]
+
+V2_SHIPPABLE_TEMPLATES = [
+ "index.{trust-domain}.v2.{project}.shippable.latest.{product}.{job-name}",
+ "index.{trust-domain}.v2.{project}.shippable.{build_date}.revision.{branch_rev}.{product}.{job-name}", # noqa - too long
+ "index.{trust-domain}.v2.{project}.shippable.{build_date}.latest.{product}.{job-name}",
+ "index.{trust-domain}.v2.{project}.shippable.revision.{branch_rev}.{product}.{job-name}",
+]
+
+V2_SHIPPABLE_L10N_TEMPLATES = [
+ "index.{trust-domain}.v2.{project}.shippable.latest.{product}-l10n.{job-name}.{locale}",
+ "index.{trust-domain}.v2.{project}.shippable.{build_date}.revision.{branch_rev}.{product}-l10n.{job-name}.{locale}", # noqa - too long
+ "index.{trust-domain}.v2.{project}.shippable.{build_date}.latest.{product}-l10n.{job-name}.{locale}", # noqa - too long
+ "index.{trust-domain}.v2.{project}.shippable.revision.{branch_rev}.{product}-l10n.{job-name}.{locale}", # noqa - too long
+]
+
+V2_L10N_TEMPLATES = [
+ "index.{trust-domain}.v2.{project}.revision.{branch_rev}.{product}-l10n.{job-name}.{locale}",
+ "index.{trust-domain}.v2.{project}.pushdate.{build_date_long}.{product}-l10n.{job-name}.{locale}", # noqa - too long
+ "index.{trust-domain}.v2.{project}.pushlog-id.{pushlog_id}.{product}-l10n.{job-name}.{locale}",
+ "index.{trust-domain}.v2.{project}.latest.{product}-l10n.{job-name}.{locale}",
+]
+
+# This index is specifically for builds that include geckoview releases,
+# so we can hard-code the project to "geckoview"
+V2_GECKOVIEW_RELEASE = "index.{trust-domain}.v2.{project}.geckoview-version.{geckoview-version}.{product}.{job-name}" # noqa - too long
+
+# the roots of the treeherder routes
+TREEHERDER_ROUTE_ROOT = "tc-treeherder"
+
+
+def get_branch_rev(config):
+ return config.params[
+ "{}head_rev".format(config.graph_config["project-repo-param-prefix"])
+ ]
+
+
+def get_branch_repo(config):
+ return config.params[
+ "{}head_repository".format(
+ config.graph_config["project-repo-param-prefix"],
+ )
+ ]
+
+
+@memoize
+def get_default_priority(graph_config, project):
+ return evaluate_keyed_by(
+ graph_config["task-priority"], "Graph Config", {"project": project}
+ )
+
+
+# define a collection of payload builders, depending on the worker implementation
+payload_builders = {}
+
+
+@attr.s(frozen=True)
+class PayloadBuilder:
+ schema = attr.ib(type=Schema)
+ builder = attr.ib()
+
+
+def payload_builder(name, schema):
+ schema = Schema({Required("implementation"): name, Optional("os"): str}).extend(
+ schema
+ )
+
+ def wrap(func):
+ payload_builders[name] = PayloadBuilder(schema, func)
+ return func
+
+ return wrap
+
+
+# define a collection of index builders, depending on the type implementation
+index_builders = {}
+
+
+def index_builder(name):
+ def wrap(func):
+ index_builders[name] = func
+ return func
+
+ return wrap
+
+
+UNSUPPORTED_INDEX_PRODUCT_ERROR = """\
+The gecko-v2 product {product} is not in the list of configured products in
+`taskcluster/ci/config.yml'.
+"""
+
+
+def verify_index(config, index):
+ product = index["product"]
+ if product not in config.graph_config["index"]["products"]:
+ raise Exception(UNSUPPORTED_INDEX_PRODUCT_ERROR.format(product=product))
+
+
+@payload_builder(
+ "docker-worker",
+ schema={
+ Required("os"): "linux",
+ # For tasks that will run in docker-worker, this is the
+ # name of the docker image or in-tree docker image to run the task in. If
+ # in-tree, then a dependency will be created automatically. This is
+ # generally `desktop-test`, or an image that acts an awful lot like it.
+ Required("docker-image"): Any(
+ # a raw Docker image path (repo/image:tag)
+ str,
+ # an in-tree generated docker image (from `taskcluster/docker/<name>`)
+ {"in-tree": str},
+ # an indexed docker image
+ {"indexed": str},
+ ),
+ # worker features that should be enabled
+ Required("chain-of-trust"): bool,
+ Required("taskcluster-proxy"): bool,
+ Required("allow-ptrace"): bool,
+ Required("loopback-video"): bool,
+ Required("loopback-audio"): bool,
+ Required("docker-in-docker"): bool, # (aka 'dind')
+ Required("privileged"): bool,
+ # Paths to Docker volumes.
+ #
+ # For in-tree Docker images, volumes can be parsed from Dockerfile.
+ # This only works for the Dockerfile itself: if a volume is defined in
+ # a base image, it will need to be declared here. Out-of-tree Docker
+ # images will also require explicit volume annotation.
+ #
+ # Caches are often mounted to the same path as Docker volumes. In this
+ # case, they take precedence over a Docker volume. But a volume still
+ # needs to be declared for the path.
+ Optional("volumes"): [str],
+ Optional(
+ "required-volumes",
+ description=(
+ "Paths that are required to be volumes for performance reasons. "
+ "For in-tree images, these paths will be checked to verify that they "
+ "are defined as volumes."
+ ),
+ ): [str],
+ # caches to set up for the task
+ Optional("caches"): [
+ {
+ # only one type is supported by any of the workers right now
+ "type": "persistent",
+ # name of the cache, allowing re-use by subsequent tasks naming the
+ # same cache
+ "name": str,
+ # location in the task image where the cache will be mounted
+ "mount-point": str,
+ # Whether the cache is not used in untrusted environments
+ # (like the Try repo).
+ Optional("skip-untrusted"): bool,
+ }
+ ],
+ # artifacts to extract from the task image after completion
+ Optional("artifacts"): [
+ {
+ # type of artifact -- simple file, or recursive directory
+ "type": Any("file", "directory"),
+ # task image path from which to read artifact
+ "path": str,
+ # name of the produced artifact (root of the names for
+ # type=directory)
+ "name": str,
+ "expires-after": str,
+ }
+ ],
+ # environment variables
+ Required("env"): {str: taskref_or_string},
+ # the command to run; if not given, docker-worker will default to the
+ # command in the docker image
+ Optional("command"): [taskref_or_string],
+ # the maximum time to run, in seconds
+ Required("max-run-time"): int,
+ # the exit status code(s) that indicates the task should be retried
+ Optional("retry-exit-status"): [int],
+ # the exit status code(s) that indicates the caches used by the task
+ # should be purged
+ Optional("purge-caches-exit-status"): [int],
+ # Whether any artifacts are assigned to this worker
+ Optional("skip-artifacts"): bool,
+ },
+)
+def build_docker_worker_payload(config, task, task_def):
+ worker = task["worker"]
+ level = int(config.params["level"])
+
+ image = worker["docker-image"]
+ if isinstance(image, dict):
+ if "in-tree" in image:
+ name = image["in-tree"]
+ docker_image_task = "docker-image-" + image["in-tree"]
+ task.setdefault("dependencies", {})["docker-image"] = docker_image_task
+
+ image = {
+ "path": "public/image.tar.zst",
+ "taskId": {"task-reference": "<docker-image>"},
+ "type": "task-image",
+ }
+
+ # Find VOLUME in Dockerfile.
+ volumes = dockerutil.parse_volumes(name)
+ for v in sorted(volumes):
+ if v in worker["volumes"]:
+ raise Exception(
+ "volume %s already defined; "
+ "if it is defined in a Dockerfile, "
+ "it does not need to be specified in the "
+ "worker definition" % v
+ )
+
+ worker["volumes"].append(v)
+
+ elif "indexed" in image:
+ image = {
+ "path": "public/image.tar.zst",
+ "namespace": image["indexed"],
+ "type": "indexed-image",
+ }
+ else:
+ raise Exception("unknown docker image type")
+
+ features = {}
+
+ if worker.get("taskcluster-proxy"):
+ features["taskclusterProxy"] = True
+
+ if worker.get("allow-ptrace"):
+ features["allowPtrace"] = True
+ task_def["scopes"].append("docker-worker:feature:allowPtrace")
+
+ if worker.get("chain-of-trust"):
+ features["chainOfTrust"] = True
+
+ if worker.get("docker-in-docker"):
+ features["dind"] = True
+
+ # Never enable sccache on the toolchains repo, as there is no benefit from it
+ # because each push uses a different compiler.
+ if task.get("use-sccache") and config.params["project"] != "toolchains":
+ features["taskclusterProxy"] = True
+ task_def["scopes"].append(
+ "assume:project:taskcluster:{trust_domain}:level-{level}-sccache-buckets".format(
+ trust_domain=config.graph_config["trust-domain"],
+ level=config.params["level"],
+ )
+ )
+ worker["env"]["USE_SCCACHE"] = "1"
+ worker["env"]["SCCACHE_GCS_PROJECT"] = SCCACHE_GCS_PROJECT
+ # Disable sccache idle shutdown.
+ worker["env"]["SCCACHE_IDLE_TIMEOUT"] = "0"
+ else:
+ worker["env"]["SCCACHE_DISABLE"] = "1"
+
+ capabilities = {}
+
+ for lo in "audio", "video":
+ if worker.get("loopback-" + lo):
+ capitalized = "loopback" + lo.capitalize()
+ devices = capabilities.setdefault("devices", {})
+ devices[capitalized] = True
+ task_def["scopes"].append("docker-worker:capability:device:" + capitalized)
+
+ if worker.get("privileged"):
+ capabilities["privileged"] = True
+ task_def["scopes"].append("docker-worker:capability:privileged")
+
+ task_def["payload"] = payload = {
+ "image": image,
+ "env": worker["env"],
+ }
+ if "command" in worker:
+ payload["command"] = worker["command"]
+
+ if "max-run-time" in worker:
+ payload["maxRunTime"] = worker["max-run-time"]
+
+ run_task = payload.get("command", [""])[0].endswith("run-task")
+
+ # run-task exits EXIT_PURGE_CACHES if there is a problem with caches.
+ # Automatically retry the tasks and purge caches if we see this exit
+ # code.
+ # TODO move this closer to code adding run-task once bug 1469697 is
+ # addressed.
+ if run_task:
+ worker.setdefault("retry-exit-status", []).append(72)
+ worker.setdefault("purge-caches-exit-status", []).append(72)
+
+ payload["onExitStatus"] = {}
+ if "retry-exit-status" in worker:
+ payload["onExitStatus"]["retry"] = worker["retry-exit-status"]
+ if "purge-caches-exit-status" in worker:
+ payload["onExitStatus"]["purgeCaches"] = worker["purge-caches-exit-status"]
+
+ if "artifacts" in worker:
+ artifacts = {}
+ expires_policy = get_expiration(
+ config, task.get("expiration-policy", "default")
+ )
+ now = datetime.datetime.utcnow()
+ task_exp = task_def["expires"]["relative-datestamp"]
+ task_exp_from_now = fromNow(task_exp)
+ for artifact in worker["artifacts"]:
+ art_exp = artifact.get("expires-after", expires_policy)
+ expires = art_exp if fromNow(art_exp, now) < task_exp_from_now else task_exp
+ artifacts[artifact["name"]] = {
+ "path": artifact["path"],
+ "type": artifact["type"],
+ "expires": {"relative-datestamp": expires},
+ }
+ payload["artifacts"] = artifacts
+
+ if isinstance(worker.get("docker-image"), str):
+ out_of_tree_image = worker["docker-image"]
+ else:
+ out_of_tree_image = None
+ image = worker.get("docker-image", {}).get("in-tree")
+
+ if "caches" in worker:
+ caches = {}
+
+ # run-task knows how to validate caches.
+ #
+ # To help ensure new run-task features and bug fixes don't interfere
+ # with existing caches, we seed the hash of run-task into cache names.
+ # So, any time run-task changes, we should get a fresh set of caches.
+ # This means run-task can make changes to cache interaction at any time
+ # without regards for backwards or future compatibility.
+ #
+ # But this mechanism only works for in-tree Docker images that are built
+ # with the current run-task! For out-of-tree Docker images, we have no
+ # way of knowing their content of run-task. So, in addition to varying
+ # cache names by the contents of run-task, we also take the Docker image
+ # name into consideration. This means that different Docker images will
+ # never share the same cache. This is a bit unfortunate. But it is the
+ # safest thing to do. Fortunately, most images are defined in-tree.
+ #
+ # For out-of-tree Docker images, we don't strictly need to incorporate
+ # the run-task content into the cache name. However, doing so preserves
+ # the mechanism whereby changing run-task results in new caches
+ # everywhere.
+
+ # As an additional mechanism to force the use of different caches, the
+ # string literal in the variable below can be changed. This is
+ # preferred to changing run-task because it doesn't require images
+ # to be rebuilt.
+ cache_version = "v3"
+
+ if run_task:
+ suffix = f"{cache_version}-{_run_task_suffix()}"
+
+ if out_of_tree_image:
+ name_hash = hashlib.sha256(
+ out_of_tree_image.encode("utf-8")
+ ).hexdigest()
+ suffix += name_hash[0:12]
+
+ else:
+ suffix = cache_version
+
+ skip_untrusted = is_try(config.params) or level == 1
+
+ for cache in worker["caches"]:
+ # Some caches aren't enabled in environments where we can't
+ # guarantee certain behavior. Filter those out.
+ if cache.get("skip-untrusted") and skip_untrusted:
+ continue
+
+ name = "{trust_domain}-level-{level}-{name}-{suffix}".format(
+ trust_domain=config.graph_config["trust-domain"],
+ level=config.params["level"],
+ name=cache["name"],
+ suffix=suffix,
+ )
+
+ caches[name] = cache["mount-point"]
+ task_def["scopes"].append("docker-worker:cache:%s" % name)
+
+ # Assertion: only run-task is interested in this.
+ if run_task:
+ payload["env"]["TASKCLUSTER_CACHES"] = ";".join(sorted(caches.values()))
+
+ payload["cache"] = caches
+
+ # And send down volumes information to run-task as well.
+ if run_task and worker.get("volumes"):
+ payload["env"]["TASKCLUSTER_VOLUMES"] = ";".join(sorted(worker["volumes"]))
+
+ if payload.get("cache") and skip_untrusted:
+ payload["env"]["TASKCLUSTER_UNTRUSTED_CACHES"] = "1"
+
+ if features:
+ payload["features"] = features
+ if capabilities:
+ payload["capabilities"] = capabilities
+
+ check_caches_are_volumes(task)
+ check_required_volumes(task)
+
+
+@payload_builder(
+ "generic-worker",
+ schema={
+ Required("os"): Any("windows", "macosx", "linux", "linux-bitbar"),
+ # see http://schemas.taskcluster.net/generic-worker/v1/payload.json
+ # and https://docs.taskcluster.net/reference/workers/generic-worker/payload
+ # command is a list of commands to run, sequentially
+ # on Windows, each command is a string, on OS X and Linux, each command is
+ # a string array
+ Required("command"): Any(
+ [taskref_or_string], [[taskref_or_string]] # Windows # Linux / OS X
+ ),
+ # artifacts to extract from the task image after completion; note that artifacts
+ # for the generic worker cannot have names
+ Optional("artifacts"): [
+ {
+ # type of artifact -- simple file, or recursive directory
+ "type": Any("file", "directory"),
+ # filesystem path from which to read artifact
+ "path": str,
+ # if not specified, path is used for artifact name
+ Optional("name"): str,
+ "expires-after": str,
+ }
+ ],
+ # Directories and/or files to be mounted.
+ # The actual allowed combinations are stricter than the model below,
+ # but this provides a simple starting point.
+ # See https://docs.taskcluster.net/reference/workers/generic-worker/payload
+ Optional("mounts"): [
+ {
+ # A unique name for the cache volume, implies writable cache directory
+ # (otherwise mount is a read-only file or directory).
+ Optional("cache-name"): str,
+ # Optional content for pre-loading cache, or mandatory content for
+ # read-only file or directory. Pre-loaded content can come from either
+ # a task artifact or from a URL.
+ Optional("content"): {
+ # *** Either (artifact and task-id) or url must be specified. ***
+ # Artifact name that contains the content.
+ Optional("artifact"): str,
+ # Task ID that has the artifact that contains the content.
+ Optional("task-id"): taskref_or_string,
+ # URL that supplies the content in response to an unauthenticated
+ # GET request.
+ Optional("url"): str,
+ },
+ # *** Either file or directory must be specified. ***
+ # If mounting a cache or read-only directory, the filesystem location of
+ # the directory should be specified as a relative path to the task
+ # directory here.
+ Optional("directory"): str,
+ # If mounting a file, specify the relative path within the task
+ # directory to mount the file (the file will be read only).
+ Optional("file"): str,
+ # Required if and only if `content` is specified and mounting a
+ # directory (not a file). This should be the archive format of the
+ # content (either pre-loaded cache or read-only directory).
+ Optional("format"): Any("rar", "tar.bz2", "tar.gz", "zip"),
+ }
+ ],
+ # environment variables
+ Required("env"): {str: taskref_or_string},
+ # the maximum time to run, in seconds
+ Required("max-run-time"): int,
+ # os user groups for test task workers
+ Optional("os-groups"): [str],
+ # feature for test task to run as administarotr
+ Optional("run-as-administrator"): bool,
+ # optional features
+ Required("chain-of-trust"): bool,
+ Optional("taskcluster-proxy"): bool,
+ # the exit status code(s) that indicates the task should be retried
+ Optional("retry-exit-status"): [int],
+ # Wether any artifacts are assigned to this worker
+ Optional("skip-artifacts"): bool,
+ },
+)
+def build_generic_worker_payload(config, task, task_def):
+ worker = task["worker"]
+ features = {}
+
+ task_def["payload"] = {
+ "command": worker["command"],
+ "maxRunTime": worker["max-run-time"],
+ }
+
+ if worker["os"] == "windows":
+ task_def["payload"]["onExitStatus"] = {
+ "retry": [
+ # These codes (on windows) indicate a process interruption,
+ # rather than a task run failure. See bug 1544403.
+ 1073807364, # process force-killed due to system shutdown
+ 3221225786, # sigint (any interrupt)
+ ]
+ }
+ if "retry-exit-status" in worker:
+ task_def["payload"].setdefault("onExitStatus", {}).setdefault(
+ "retry", []
+ ).extend(worker["retry-exit-status"])
+ if worker["os"] == "linux-bitbar":
+ task_def["payload"].setdefault("onExitStatus", {}).setdefault("retry", [])
+ # exit code 4 is used to indicate an intermittent android device error
+ if 4 not in task_def["payload"]["onExitStatus"]["retry"]:
+ task_def["payload"]["onExitStatus"]["retry"].extend([4])
+
+ env = worker.get("env", {})
+
+ # Never enable sccache on the toolchains repo, as there is no benefit from it
+ # because each push uses a different compiler.
+ if task.get("use-sccache") and config.params["project"] != "toolchains":
+ features["taskclusterProxy"] = True
+ task_def["scopes"].append(
+ "assume:project:taskcluster:{trust_domain}:level-{level}-sccache-buckets".format(
+ trust_domain=config.graph_config["trust-domain"],
+ level=config.params["level"],
+ )
+ )
+ env["USE_SCCACHE"] = "1"
+ worker["env"]["SCCACHE_GCS_PROJECT"] = SCCACHE_GCS_PROJECT
+ # Disable sccache idle shutdown.
+ env["SCCACHE_IDLE_TIMEOUT"] = "0"
+ else:
+ env["SCCACHE_DISABLE"] = "1"
+
+ if env:
+ task_def["payload"]["env"] = env
+
+ artifacts = []
+
+ expires_policy = get_expiration(config, task.get("expiration-policy", "default"))
+ now = datetime.datetime.utcnow()
+ task_exp = task_def["expires"]["relative-datestamp"]
+ task_exp_from_now = fromNow(task_exp)
+ for artifact in worker.get("artifacts", []):
+ art_exp = artifact.get("expires-after", expires_policy)
+ task_exp = task_def["expires"]["relative-datestamp"]
+ expires = art_exp if fromNow(art_exp, now) < task_exp_from_now else task_exp
+ a = {
+ "path": artifact["path"],
+ "type": artifact["type"],
+ "expires": {"relative-datestamp": expires},
+ }
+ if "name" in artifact:
+ a["name"] = artifact["name"]
+ artifacts.append(a)
+
+ if artifacts:
+ task_def["payload"]["artifacts"] = artifacts
+
+ # Need to copy over mounts, but rename keys to respect naming convention
+ # * 'cache-name' -> 'cacheName'
+ # * 'task-id' -> 'taskId'
+ # All other key names are already suitable, and don't need renaming.
+ mounts = copy_task(worker.get("mounts", []))
+ for mount in mounts:
+ if "cache-name" in mount:
+ mount["cacheName"] = "{trust_domain}-level-{level}-{name}".format(
+ trust_domain=config.graph_config["trust-domain"],
+ level=config.params["level"],
+ name=mount.pop("cache-name"),
+ )
+ task_def["scopes"].append(
+ "generic-worker:cache:{}".format(mount["cacheName"])
+ )
+ if "content" in mount:
+ if "task-id" in mount["content"]:
+ mount["content"]["taskId"] = mount["content"].pop("task-id")
+ if "artifact" in mount["content"]:
+ if not mount["content"]["artifact"].startswith("public/"):
+ task_def["scopes"].append(
+ "queue:get-artifact:{}".format(mount["content"]["artifact"])
+ )
+
+ if mounts:
+ task_def["payload"]["mounts"] = mounts
+
+ if worker.get("os-groups"):
+ task_def["payload"]["osGroups"] = worker["os-groups"]
+ task_def["scopes"].extend(
+ [
+ "generic-worker:os-group:{}/{}".format(task["worker-type"], group)
+ for group in worker["os-groups"]
+ ]
+ )
+
+ if worker.get("chain-of-trust"):
+ features["chainOfTrust"] = True
+
+ if worker.get("taskcluster-proxy"):
+ features["taskclusterProxy"] = True
+
+ if worker.get("run-as-administrator", False):
+ features["runAsAdministrator"] = True
+ task_def["scopes"].append(
+ "generic-worker:run-as-administrator:{}".format(task["worker-type"]),
+ )
+
+ if features:
+ task_def["payload"]["features"] = features
+
+
+@payload_builder(
+ "scriptworker-signing",
+ schema={
+ # the maximum time to run, in seconds
+ Required("max-run-time"): int,
+ # list of artifact URLs for the artifacts that should be signed
+ Required("upstream-artifacts"): [
+ {
+ # taskId of the task with the artifact
+ Required("taskId"): taskref_or_string,
+ # type of signing task (for CoT)
+ Required("taskType"): str,
+ # Paths to the artifacts to sign
+ Required("paths"): [str],
+ # Signing formats to use on each of the paths
+ Required("formats"): [str],
+ Optional("singleFileGlobs"): [str],
+ }
+ ],
+ # behavior for mac iscript
+ Optional("mac-behavior"): Any(
+ "apple_notarization",
+ "mac_sign_and_pkg",
+ "mac_geckodriver",
+ "mac_notarize_geckodriver",
+ "mac_single_file",
+ "mac_notarize_single_file",
+ ),
+ Optional("entitlements-url"): str,
+ Optional("requirements-plist-url"): str,
+ },
+)
+def build_scriptworker_signing_payload(config, task, task_def):
+ worker = task["worker"]
+
+ task_def["payload"] = {
+ "maxRunTime": worker["max-run-time"],
+ "upstreamArtifacts": worker["upstream-artifacts"],
+ }
+ if worker.get("mac-behavior"):
+ task_def["payload"]["behavior"] = worker["mac-behavior"]
+ for attribute in ("entitlements-url", "requirements-plist-url"):
+ if worker.get(attribute):
+ task_def["payload"][attribute] = worker[attribute]
+
+ artifacts = set(task.setdefault("attributes", {}).get("release_artifacts", []))
+ for upstream_artifact in worker["upstream-artifacts"]:
+ for path in upstream_artifact["paths"]:
+ artifacts.update(
+ get_signed_artifacts(
+ input=path,
+ formats=upstream_artifact["formats"],
+ behavior=worker.get("mac-behavior"),
+ )
+ )
+ task["attributes"]["release_artifacts"] = sorted(list(artifacts))
+
+
+@payload_builder(
+ "beetmover",
+ schema={
+ # the maximum time to run, in seconds
+ Required("max-run-time"): int,
+ # locale key, if this is a locale beetmover job
+ Optional("locale"): str,
+ Optional("partner-public"): bool,
+ Required("release-properties"): {
+ "app-name": str,
+ "app-version": str,
+ "branch": str,
+ "build-id": str,
+ "hash-type": str,
+ "platform": str,
+ },
+ # list of artifact URLs for the artifacts that should be beetmoved
+ Required("upstream-artifacts"): [
+ {
+ # taskId of the task with the artifact
+ Required("taskId"): taskref_or_string,
+ # type of signing task (for CoT)
+ Required("taskType"): str,
+ # Paths to the artifacts to sign
+ Required("paths"): [str],
+ # locale is used to map upload path and allow for duplicate simple names
+ Required("locale"): str,
+ }
+ ],
+ Optional("artifact-map"): object,
+ },
+)
+def build_beetmover_payload(config, task, task_def):
+ worker = task["worker"]
+ release_config = get_release_config(config)
+ release_properties = worker["release-properties"]
+
+ task_def["payload"] = {
+ "maxRunTime": worker["max-run-time"],
+ "releaseProperties": {
+ "appName": release_properties["app-name"],
+ "appVersion": release_properties["app-version"],
+ "branch": release_properties["branch"],
+ "buildid": release_properties["build-id"],
+ "hashType": release_properties["hash-type"],
+ "platform": release_properties["platform"],
+ },
+ "upload_date": config.params["build_date"],
+ "upstreamArtifacts": worker["upstream-artifacts"],
+ }
+ if worker.get("locale"):
+ task_def["payload"]["locale"] = worker["locale"]
+ if worker.get("artifact-map"):
+ task_def["payload"]["artifactMap"] = worker["artifact-map"]
+ if worker.get("partner-public"):
+ task_def["payload"]["is_partner_repack_public"] = worker["partner-public"]
+ if release_config:
+ task_def["payload"].update(release_config)
+
+
+@payload_builder(
+ "beetmover-push-to-release",
+ schema={
+ # the maximum time to run, in seconds
+ Required("max-run-time"): int,
+ Required("product"): str,
+ },
+)
+def build_beetmover_push_to_release_payload(config, task, task_def):
+ worker = task["worker"]
+ release_config = get_release_config(config)
+ partners = [f"{p}/{s}" for p, s, _ in get_partners_to_be_published(config)]
+
+ task_def["payload"] = {
+ "maxRunTime": worker["max-run-time"],
+ "product": worker["product"],
+ "version": release_config["version"],
+ "build_number": release_config["build_number"],
+ "partners": partners,
+ }
+
+
+@payload_builder(
+ "beetmover-import-from-gcs-to-artifact-registry",
+ schema={
+ Required("max-run-time"): int,
+ Required("gcs-sources"): [str],
+ Required("product"): str,
+ },
+)
+def build_import_from_gcs_to_artifact_registry_payload(config, task, task_def):
+ task_def["payload"] = {
+ "product": task["worker"]["product"],
+ "gcs_sources": task["worker"]["gcs-sources"],
+ }
+
+
+@payload_builder(
+ "beetmover-maven",
+ schema={
+ Required("max-run-time"): int,
+ Required("release-properties"): {
+ "app-name": str,
+ "app-version": str,
+ "branch": str,
+ "build-id": str,
+ "artifact-id": str,
+ "hash-type": str,
+ "platform": str,
+ },
+ Required("upstream-artifacts"): [
+ {
+ Required("taskId"): taskref_or_string,
+ Required("taskType"): str,
+ Required("paths"): [str],
+ Optional("zipExtract"): bool,
+ }
+ ],
+ Optional("artifact-map"): object,
+ },
+)
+def build_beetmover_maven_payload(config, task, task_def):
+ build_beetmover_payload(config, task, task_def)
+
+ task_def["payload"]["artifact_id"] = task["worker"]["release-properties"][
+ "artifact-id"
+ ]
+ if task["worker"].get("artifact-map"):
+ task_def["payload"]["artifactMap"] = task["worker"]["artifact-map"]
+
+ task_def["payload"]["version"] = _compute_geckoview_version(
+ task["worker"]["release-properties"]["app-version"],
+ task["worker"]["release-properties"]["build-id"],
+ )
+
+ del task_def["payload"]["releaseProperties"]["hashType"]
+ del task_def["payload"]["releaseProperties"]["platform"]
+
+
+@payload_builder(
+ "balrog",
+ schema={
+ Required("balrog-action"): Any(*BALROG_ACTIONS),
+ Optional("product"): str,
+ Optional("platforms"): [str],
+ Optional("release-eta"): str,
+ Optional("channel-names"): optionally_keyed_by("release-type", [str]),
+ Optional("require-mirrors"): bool,
+ Optional("publish-rules"): optionally_keyed_by(
+ "release-type", "release-level", [int]
+ ),
+ Optional("rules-to-update"): optionally_keyed_by(
+ "release-type", "release-level", [str]
+ ),
+ Optional("archive-domain"): optionally_keyed_by("release-level", str),
+ Optional("download-domain"): optionally_keyed_by("release-level", str),
+ Optional("blob-suffix"): str,
+ Optional("complete-mar-filename-pattern"): str,
+ Optional("complete-mar-bouncer-product-pattern"): str,
+ Optional("update-line"): object,
+ Optional("suffixes"): [str],
+ Optional("background-rate"): optionally_keyed_by(
+ "release-type", "beta-number", Any(int, None)
+ ),
+ Optional("force-fallback-mapping-update"): optionally_keyed_by(
+ "release-type", "beta-number", bool
+ ),
+ Optional("pin-channels"): optionally_keyed_by(
+ "release-type", "release-level", [str]
+ ),
+ # list of artifact URLs for the artifacts that should be beetmoved
+ Optional("upstream-artifacts"): [
+ {
+ # taskId of the task with the artifact
+ Required("taskId"): taskref_or_string,
+ # type of signing task (for CoT)
+ Required("taskType"): str,
+ # Paths to the artifacts to sign
+ Required("paths"): [str],
+ }
+ ],
+ },
+)
+def build_balrog_payload(config, task, task_def):
+ worker = task["worker"]
+ release_config = get_release_config(config)
+ beta_number = None
+ if "b" in release_config["version"]:
+ beta_number = release_config["version"].split("b")[-1]
+
+ task_def["payload"] = {
+ "behavior": worker["balrog-action"],
+ }
+
+ if (
+ worker["balrog-action"] == "submit-locale"
+ or worker["balrog-action"] == "v2-submit-locale"
+ ):
+ task_def["payload"].update(
+ {
+ "upstreamArtifacts": worker["upstream-artifacts"],
+ "suffixes": worker["suffixes"],
+ }
+ )
+ else:
+ for prop in (
+ "archive-domain",
+ "channel-names",
+ "download-domain",
+ "publish-rules",
+ "rules-to-update",
+ "background-rate",
+ "force-fallback-mapping-update",
+ "pin-channels",
+ ):
+ if prop in worker:
+ resolve_keyed_by(
+ worker,
+ prop,
+ task["description"],
+ **{
+ "release-type": config.params["release_type"],
+ "release-level": release_level(config.params["project"]),
+ "beta-number": beta_number,
+ },
+ )
+ task_def["payload"].update(
+ {
+ "build_number": release_config["build_number"],
+ "product": worker["product"],
+ "version": release_config["version"],
+ }
+ )
+ for prop in (
+ "blob-suffix",
+ "complete-mar-filename-pattern",
+ "complete-mar-bouncer-product-pattern",
+ "pin-channels",
+ ):
+ if prop in worker:
+ task_def["payload"][prop.replace("-", "_")] = worker[prop]
+ if (
+ worker["balrog-action"] == "submit-toplevel"
+ or worker["balrog-action"] == "v2-submit-toplevel"
+ ):
+ task_def["payload"].update(
+ {
+ "app_version": release_config["appVersion"],
+ "archive_domain": worker["archive-domain"],
+ "channel_names": worker["channel-names"],
+ "download_domain": worker["download-domain"],
+ "partial_versions": release_config.get("partial_versions", ""),
+ "platforms": worker["platforms"],
+ "rules_to_update": worker["rules-to-update"],
+ "require_mirrors": worker["require-mirrors"],
+ "update_line": worker["update-line"],
+ }
+ )
+ else: # schedule / ship
+ task_def["payload"].update(
+ {
+ "publish_rules": worker["publish-rules"],
+ "release_eta": worker.get(
+ "release-eta", config.params.get("release_eta")
+ )
+ or "",
+ }
+ )
+ if worker.get("force-fallback-mapping-update"):
+ task_def["payload"]["force_fallback_mapping_update"] = worker[
+ "force-fallback-mapping-update"
+ ]
+ if worker.get("background-rate"):
+ task_def["payload"]["background_rate"] = worker["background-rate"]
+
+
+@payload_builder(
+ "bouncer-aliases",
+ schema={
+ Required("entries"): object,
+ },
+)
+def build_bouncer_aliases_payload(config, task, task_def):
+ worker = task["worker"]
+
+ task_def["payload"] = {"aliases_entries": worker["entries"]}
+
+
+@payload_builder(
+ "bouncer-locations",
+ schema={
+ Required("implementation"): "bouncer-locations",
+ Required("bouncer-products"): [str],
+ },
+)
+def build_bouncer_locations_payload(config, task, task_def):
+ worker = task["worker"]
+ release_config = get_release_config(config)
+
+ task_def["payload"] = {
+ "bouncer_products": worker["bouncer-products"],
+ "version": release_config["version"],
+ "product": task["shipping-product"],
+ }
+
+
+@payload_builder(
+ "bouncer-submission",
+ schema={
+ Required("locales"): [str],
+ Required("entries"): object,
+ },
+)
+def build_bouncer_submission_payload(config, task, task_def):
+ worker = task["worker"]
+
+ task_def["payload"] = {
+ "locales": worker["locales"],
+ "submission_entries": worker["entries"],
+ }
+
+
+@payload_builder(
+ "push-flatpak",
+ schema={
+ Required("channel"): str,
+ Required("upstream-artifacts"): [
+ {
+ Required("taskId"): taskref_or_string,
+ Required("taskType"): str,
+ Required("paths"): [str],
+ }
+ ],
+ },
+)
+def build_push_flatpak_payload(config, task, task_def):
+ worker = task["worker"]
+
+ task_def["payload"] = {
+ "channel": worker["channel"],
+ "upstreamArtifacts": worker["upstream-artifacts"],
+ }
+
+
+@payload_builder(
+ "push-msix",
+ schema={
+ Required("channel"): str,
+ Optional("publish-mode"): str,
+ Required("upstream-artifacts"): [
+ {
+ Required("taskId"): taskref_or_string,
+ Required("taskType"): str,
+ Required("paths"): [str],
+ }
+ ],
+ },
+)
+def build_push_msix_payload(config, task, task_def):
+ worker = task["worker"]
+
+ task_def["payload"] = {
+ "channel": worker["channel"],
+ "upstreamArtifacts": worker["upstream-artifacts"],
+ }
+ if worker.get("publish-mode"):
+ task_def["payload"]["publishMode"] = worker["publish-mode"]
+
+
+@payload_builder(
+ "shipit-shipped",
+ schema={
+ Required("release-name"): str,
+ },
+)
+def build_ship_it_shipped_payload(config, task, task_def):
+ worker = task["worker"]
+
+ task_def["payload"] = {"release_name": worker["release-name"]}
+
+
+@payload_builder(
+ "shipit-maybe-release",
+ schema={
+ Required("phase"): str,
+ },
+)
+def build_ship_it_maybe_release_payload(config, task, task_def):
+ # expect branch name, including path
+ branch = config.params["head_repository"][len("https://hg.mozilla.org/") :]
+ # 'version' is e.g. '71.0b13' (app_version doesn't have beta number)
+ version = config.params["version"]
+
+ task_def["payload"] = {
+ "product": task["shipping-product"],
+ "branch": branch,
+ "phase": task["worker"]["phase"],
+ "version": version,
+ "cron_revision": config.params["head_rev"],
+ }
+
+
+@payload_builder(
+ "push-addons",
+ schema={
+ Required("channel"): Any("listed", "unlisted"),
+ Required("upstream-artifacts"): [
+ {
+ Required("taskId"): taskref_or_string,
+ Required("taskType"): str,
+ Required("paths"): [str],
+ }
+ ],
+ },
+)
+def build_push_addons_payload(config, task, task_def):
+ worker = task["worker"]
+
+ task_def["payload"] = {
+ "channel": worker["channel"],
+ "upstreamArtifacts": worker["upstream-artifacts"],
+ }
+
+
+@payload_builder(
+ "treescript",
+ schema={
+ Required("tags"): [Any("buildN", "release", None)],
+ Required("bump"): bool,
+ Optional("bump-files"): [str],
+ Optional("repo-param-prefix"): str,
+ Optional("dontbuild"): bool,
+ Optional("ignore-closed-tree"): bool,
+ Optional("force-dry-run"): bool,
+ Optional("push"): bool,
+ Optional("source-repo"): str,
+ Optional("ssh-user"): str,
+ Optional("l10n-bump-info"): {
+ Required("name"): str,
+ Required("path"): str,
+ Required("version-path"): str,
+ Optional("l10n-repo-url"): str,
+ Optional("ignore-config"): object,
+ Required("platform-configs"): [
+ {
+ Required("platforms"): [str],
+ Required("path"): str,
+ Optional("format"): str,
+ }
+ ],
+ },
+ Optional("merge-info"): object,
+ },
+)
+def build_treescript_payload(config, task, task_def):
+ worker = task["worker"]
+ release_config = get_release_config(config)
+
+ task_def["payload"] = {"actions": []}
+ actions = task_def["payload"]["actions"]
+ if worker["tags"]:
+ tag_names = []
+ product = task["shipping-product"].upper()
+ version = release_config["version"].replace(".", "_")
+ buildnum = release_config["build_number"]
+ if "buildN" in worker["tags"]:
+ tag_names.extend(
+ [
+ f"{product}_{version}_BUILD{buildnum}",
+ ]
+ )
+ if "release" in worker["tags"]:
+ tag_names.extend([f"{product}_{version}_RELEASE"])
+ tag_info = {
+ "tags": tag_names,
+ "revision": config.params[
+ "{}head_rev".format(worker.get("repo-param-prefix", ""))
+ ],
+ }
+ task_def["payload"]["tag_info"] = tag_info
+ actions.append("tag")
+
+ if worker["bump"]:
+ if not worker["bump-files"]:
+ raise Exception("Version Bump requested without bump-files")
+
+ bump_info = {}
+ bump_info["next_version"] = release_config["next_version"]
+ bump_info["files"] = worker["bump-files"]
+ task_def["payload"]["version_bump_info"] = bump_info
+ actions.append("version_bump")
+
+ if worker.get("l10n-bump-info"):
+ l10n_bump_info = {}
+ for k, v in worker["l10n-bump-info"].items():
+ l10n_bump_info[k.replace("-", "_")] = worker["l10n-bump-info"][k]
+ task_def["payload"]["l10n_bump_info"] = [l10n_bump_info]
+ actions.append("l10n_bump")
+
+ if worker.get("merge-info"):
+ merge_info = {
+ merge_param_name.replace("-", "_"): merge_param_value
+ for merge_param_name, merge_param_value in worker["merge-info"].items()
+ if merge_param_name != "version-files"
+ }
+ merge_info["version_files"] = [
+ {
+ file_param_name.replace("-", "_"): file_param_value
+ for file_param_name, file_param_value in file_entry.items()
+ }
+ for file_entry in worker["merge-info"]["version-files"]
+ ]
+ task_def["payload"]["merge_info"] = merge_info
+ actions.append("merge_day")
+
+ if worker["push"]:
+ actions.append("push")
+
+ if worker.get("force-dry-run"):
+ task_def["payload"]["dry_run"] = True
+
+ if worker.get("dontbuild"):
+ task_def["payload"]["dontbuild"] = True
+
+ if worker.get("ignore-closed-tree") is not None:
+ task_def["payload"]["ignore_closed_tree"] = worker["ignore-closed-tree"]
+
+ if worker.get("source-repo"):
+ task_def["payload"]["source_repo"] = worker["source-repo"]
+
+ if worker.get("ssh-user"):
+ task_def["payload"]["ssh_user"] = worker["ssh-user"]
+
+
+@payload_builder(
+ "invalid",
+ schema={
+ # an invalid task is one which should never actually be created; this is used in
+ # release automation on branches where the task just doesn't make sense
+ Extra: object,
+ },
+)
+def build_invalid_payload(config, task, task_def):
+ task_def["payload"] = "invalid task - should never be created"
+
+
+@payload_builder(
+ "always-optimized",
+ schema={
+ Extra: object,
+ },
+)
+@payload_builder("succeed", schema={})
+def build_dummy_payload(config, task, task_def):
+ task_def["payload"] = {}
+
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def set_implementation(config, tasks):
+ """
+ Set the worker implementation based on the worker-type alias.
+ """
+ for task in tasks:
+ if "implementation" in task["worker"]:
+ yield task
+ continue
+
+ impl, os = worker_type_implementation(
+ config.graph_config, config.params, task["worker-type"]
+ )
+
+ tags = task.setdefault("tags", {})
+ tags["worker-implementation"] = impl
+ if os:
+ tags["os"] = os
+
+ worker = task.setdefault("worker", {})
+ worker["implementation"] = impl
+ if os:
+ worker["os"] = os
+
+ yield task
+
+
+@transforms.add
+def set_defaults(config, tasks):
+ for task in tasks:
+ task.setdefault("shipping-phase", None)
+ task.setdefault("shipping-product", None)
+ task.setdefault("always-target", False)
+ task.setdefault("optimization", None)
+ task.setdefault("use-sccache", False)
+
+ worker = task["worker"]
+ if worker["implementation"] in ("docker-worker",):
+ worker.setdefault("chain-of-trust", False)
+ worker.setdefault("taskcluster-proxy", False)
+ worker.setdefault("allow-ptrace", True)
+ worker.setdefault("loopback-video", False)
+ worker.setdefault("loopback-audio", False)
+ worker.setdefault("docker-in-docker", False)
+ worker.setdefault("privileged", False)
+ worker.setdefault("volumes", [])
+ worker.setdefault("env", {})
+ if "caches" in worker:
+ for c in worker["caches"]:
+ c.setdefault("skip-untrusted", False)
+ elif worker["implementation"] == "generic-worker":
+ worker.setdefault("env", {})
+ worker.setdefault("os-groups", [])
+ if worker["os-groups"] and worker["os"] != "windows":
+ raise Exception(
+ "os-groups feature of generic-worker is only supported on "
+ "Windows, not on {}".format(worker["os"])
+ )
+ worker.setdefault("chain-of-trust", False)
+ elif worker["implementation"] in (
+ "scriptworker-signing",
+ "beetmover",
+ "beetmover-push-to-release",
+ "beetmover-maven",
+ "beetmover-import-from-gcs-to-artifact-registry",
+ ):
+ worker.setdefault("max-run-time", 600)
+ elif worker["implementation"] == "push-apk":
+ worker.setdefault("commit", False)
+
+ yield task
+
+
+@transforms.add
+def setup_raptor(config, tasks):
+ """Add options that are specific to raptor jobs (identified by suite=raptor).
+
+ This variant uses a separate set of transforms for manipulating the tests at the
+ task-level. Currently only used for setting the taskcluster proxy setting and
+ the scopes required for perftest secrets.
+ """
+ from gecko_taskgraph.transforms.test.raptor import (
+ task_transforms as raptor_transforms,
+ )
+
+ for task in tasks:
+ if task.get("extra", {}).get("suite", "") != "raptor":
+ yield task
+ continue
+
+ yield from raptor_transforms(config, [task])
+
+
+@transforms.add
+def task_name_from_label(config, tasks):
+ for task in tasks:
+ taskname = task.pop("name", None)
+ if "label" not in task:
+ if taskname is None:
+ raise Exception("task has neither a name nor a label")
+ task["label"] = "{}-{}".format(config.kind, taskname)
+ yield task
+
+
+UNSUPPORTED_SHIPPING_PRODUCT_ERROR = """\
+The shipping product {product} is not in the list of configured products in
+`taskcluster/ci/config.yml'.
+"""
+
+
+def validate_shipping_product(config, product):
+ if product not in config.graph_config["release-promotion"]["products"]:
+ raise Exception(UNSUPPORTED_SHIPPING_PRODUCT_ERROR.format(product=product))
+
+
+@transforms.add
+def validate(config, tasks):
+ for task in tasks:
+ validate_schema(
+ task_description_schema,
+ task,
+ "In task {!r}:".format(task.get("label", "?no-label?")),
+ )
+ validate_schema(
+ payload_builders[task["worker"]["implementation"]].schema,
+ task["worker"],
+ "In task.run {!r}:".format(task.get("label", "?no-label?")),
+ )
+ if task["shipping-product"] is not None:
+ validate_shipping_product(config, task["shipping-product"])
+ yield task
+
+
+@index_builder("generic")
+def add_generic_index_routes(config, task):
+ index = task.get("index")
+ routes = task.setdefault("routes", [])
+
+ verify_index(config, index)
+
+ subs = config.params.copy()
+ subs["job-name"] = index["job-name"]
+ subs["build_date_long"] = time.strftime(
+ "%Y.%m.%d.%Y%m%d%H%M%S", time.gmtime(config.params["build_date"])
+ )
+ subs["build_date"] = time.strftime(
+ "%Y.%m.%d", time.gmtime(config.params["build_date"])
+ )
+ subs["product"] = index["product"]
+ subs["trust-domain"] = config.graph_config["trust-domain"]
+ subs["branch_rev"] = get_branch_rev(config)
+
+ project = config.params.get("project")
+
+ for tpl in V2_ROUTE_TEMPLATES:
+ routes.append(tpl.format(**subs))
+
+ # Additionally alias all tasks for "trunk" repos into a common
+ # namespace.
+ if project and project in TRUNK_PROJECTS:
+ for tpl in V2_TRUNK_ROUTE_TEMPLATES:
+ routes.append(tpl.format(**subs))
+
+ return task
+
+
+@index_builder("shippable")
+def add_shippable_index_routes(config, task):
+ index = task.get("index")
+ routes = task.setdefault("routes", [])
+
+ verify_index(config, index)
+
+ subs = config.params.copy()
+ subs["job-name"] = index["job-name"]
+ subs["build_date_long"] = time.strftime(
+ "%Y.%m.%d.%Y%m%d%H%M%S", time.gmtime(config.params["build_date"])
+ )
+ subs["build_date"] = time.strftime(
+ "%Y.%m.%d", time.gmtime(config.params["build_date"])
+ )
+ subs["product"] = index["product"]
+ subs["trust-domain"] = config.graph_config["trust-domain"]
+ subs["branch_rev"] = get_branch_rev(config)
+
+ for tpl in V2_SHIPPABLE_TEMPLATES:
+ routes.append(tpl.format(**subs))
+
+ # Also add routes for en-US
+ task = add_shippable_l10n_index_routes(config, task, force_locale="en-US")
+
+ return task
+
+
+@index_builder("shippable-with-multi-l10n")
+def add_shippable_multi_index_routes(config, task):
+ task = add_shippable_index_routes(config, task)
+ task = add_l10n_index_routes(config, task, force_locale="multi")
+ return task
+
+
+@index_builder("l10n")
+def add_l10n_index_routes(config, task, force_locale=None):
+ index = task.get("index")
+ routes = task.setdefault("routes", [])
+
+ verify_index(config, index)
+
+ subs = config.params.copy()
+ subs["job-name"] = index["job-name"]
+ subs["build_date_long"] = time.strftime(
+ "%Y.%m.%d.%Y%m%d%H%M%S", time.gmtime(config.params["build_date"])
+ )
+ subs["product"] = index["product"]
+ subs["trust-domain"] = config.graph_config["trust-domain"]
+ subs["branch_rev"] = get_branch_rev(config)
+
+ locales = task["attributes"].get(
+ "chunk_locales", task["attributes"].get("all_locales")
+ )
+ # Some tasks has only one locale set
+ if task["attributes"].get("locale"):
+ locales = [task["attributes"]["locale"]]
+
+ if force_locale:
+ # Used for en-US and multi-locale
+ locales = [force_locale]
+
+ if not locales:
+ raise Exception("Error: Unable to use l10n index for tasks without locales")
+
+ # If there are too many locales, we can't write a route for all of them
+ # See Bug 1323792
+ if len(locales) > 18: # 18 * 3 = 54, max routes = 64
+ return task
+
+ for locale in locales:
+ for tpl in V2_L10N_TEMPLATES:
+ routes.append(tpl.format(locale=locale, **subs))
+
+ return task
+
+
+@index_builder("shippable-l10n")
+def add_shippable_l10n_index_routes(config, task, force_locale=None):
+ index = task.get("index")
+ routes = task.setdefault("routes", [])
+
+ verify_index(config, index)
+
+ subs = config.params.copy()
+ subs["job-name"] = index["job-name"]
+ subs["build_date_long"] = time.strftime(
+ "%Y.%m.%d.%Y%m%d%H%M%S", time.gmtime(config.params["build_date"])
+ )
+ subs["product"] = index["product"]
+ subs["trust-domain"] = config.graph_config["trust-domain"]
+ subs["branch_rev"] = get_branch_rev(config)
+
+ locales = task["attributes"].get(
+ "chunk_locales", task["attributes"].get("all_locales")
+ )
+ # Some tasks has only one locale set
+ if task["attributes"].get("locale"):
+ locales = [task["attributes"]["locale"]]
+
+ if force_locale:
+ # Used for en-US and multi-locale
+ locales = [force_locale]
+
+ if not locales:
+ raise Exception("Error: Unable to use l10n index for tasks without locales")
+
+ # If there are too many locales, we can't write a route for all of them
+ # See Bug 1323792
+ if len(locales) > 18: # 18 * 3 = 54, max routes = 64
+ return task
+
+ for locale in locales:
+ for tpl in V2_SHIPPABLE_L10N_TEMPLATES:
+ routes.append(tpl.format(locale=locale, **subs))
+
+ return task
+
+
+def add_geckoview_index_routes(config, task):
+ index = task.get("index")
+ routes = task.setdefault("routes", [])
+ geckoview_version = _compute_geckoview_version(
+ config.params["app_version"], config.params["moz_build_date"]
+ )
+
+ subs = {
+ "geckoview-version": geckoview_version,
+ "job-name": index["job-name"],
+ "product": index["product"],
+ "project": config.params["project"],
+ "trust-domain": config.graph_config["trust-domain"],
+ }
+ routes.append(V2_GECKOVIEW_RELEASE.format(**subs))
+
+ return task
+
+
+@index_builder("android-shippable")
+def add_android_shippable_index_routes(config, task):
+ task = add_shippable_index_routes(config, task)
+ task = add_geckoview_index_routes(config, task)
+
+ return task
+
+
+@index_builder("android-shippable-with-multi-l10n")
+def add_android_shippable_multi_index_routes(config, task):
+ task = add_shippable_multi_index_routes(config, task)
+ task = add_geckoview_index_routes(config, task)
+
+ return task
+
+
+@transforms.add
+def add_index_routes(config, tasks):
+ for task in tasks:
+ index = task.get("index", {})
+
+ # The default behavior is to rank tasks according to their tier
+ extra_index = task.setdefault("extra", {}).setdefault("index", {})
+ rank = index.get("rank", "by-tier")
+
+ if rank == "by-tier":
+ # rank is zero for non-tier-1 tasks and based on pushid for others;
+ # this sorts tier-{2,3} builds below tier-1 in the index
+ tier = task.get("treeherder", {}).get("tier", 3)
+ extra_index["rank"] = 0 if tier > 1 else int(config.params["build_date"])
+ elif rank == "build_date":
+ extra_index["rank"] = int(config.params["build_date"])
+ else:
+ extra_index["rank"] = rank
+
+ if not index:
+ yield task
+ continue
+
+ index_type = index.get("type", "generic")
+ task = index_builders[index_type](config, task)
+
+ del task["index"]
+ yield task
+
+
+@transforms.add
+def try_task_config_env(config, tasks):
+ """Set environment variables in the task."""
+ env = config.params["try_task_config"].get("env")
+ if not env:
+ yield from tasks
+ return
+
+ # Find all implementations that have an 'env' key.
+ implementations = {
+ name
+ for name, builder in payload_builders.items()
+ if "env" in builder.schema.schema
+ }
+ for task in tasks:
+ if task["worker"]["implementation"] in implementations:
+ task["worker"]["env"].update(env)
+ yield task
+
+
+@transforms.add
+def try_task_config_chemspill_prio(config, tasks):
+ """Increase the priority from lowest and very-low -> low, but leave others unchanged."""
+ chemspill_prio = config.params["try_task_config"].get("chemspill-prio")
+ if not chemspill_prio:
+ yield from tasks
+ return
+
+ for task in tasks:
+ if task["priority"] in ("lowest", "very-low"):
+ task["priority"] = "low"
+ yield task
+
+
+@transforms.add
+def try_task_config_routes(config, tasks):
+ """Set routes in the task."""
+ routes = config.params["try_task_config"].get("routes")
+ for task in tasks:
+ if routes:
+ task_routes = task.setdefault("routes", [])
+ task_routes.extend(routes)
+ yield task
+
+
+@transforms.add
+def set_task_and_artifact_expiry(config, jobs):
+ """Set the default expiry for tasks and their artifacts.
+
+ These values are read from ci/config.yml
+ """
+ now = datetime.datetime.utcnow()
+ for job in jobs:
+ expires = get_expiration(config, job.get("expiration-policy", "default"))
+ job_expiry = job.setdefault("expires-after", expires)
+ job_expiry_from_now = fromNow(job_expiry)
+
+ for artifact in job["worker"].get("artifacts", ()):
+ artifact_expiry = artifact.setdefault("expires-after", expires)
+
+ # By using > instead of >=, there's a chance of mismatch
+ # where the artifact expires sooner than the task.
+ # There is no chance, however, of mismatch where artifacts
+ # expire _after_ the task.
+ # Currently this leads to some build tasks having logs
+ # that expire in 1 year while the task expires in 3 years.
+ if fromNow(artifact_expiry, now) > job_expiry_from_now:
+ artifact["expires-after"] = job_expiry
+
+ yield job
+
+
+@transforms.add
+def build_task(config, tasks):
+ for task in tasks:
+ level = str(config.params["level"])
+
+ task_worker_type = task["worker-type"]
+ worker_overrides = config.params["try_task_config"].get("worker-overrides", {})
+ if task_worker_type in worker_overrides:
+ worker_pool = worker_overrides[task_worker_type]
+ provisioner_id, worker_type = worker_pool.split("/", 1)
+ else:
+ provisioner_id, worker_type = get_worker_type(
+ config.graph_config,
+ config.params,
+ task_worker_type,
+ )
+ task["worker-type"] = "/".join([provisioner_id, worker_type])
+ project = config.params["project"]
+
+ routes = task.get("routes", [])
+ scopes = [
+ s.format(level=level, project=project) for s in task.get("scopes", [])
+ ]
+
+ # set up extra
+ extra = task.get("extra", {})
+ extra["parent"] = {"task-reference": "<decision>"}
+ task_th = task.get("treeherder")
+ if task_th:
+ extra.setdefault("treeherder-platform", task_th["platform"])
+ treeherder = extra.setdefault("treeherder", {})
+
+ machine_platform, collection = task_th["platform"].split("/", 1)
+ treeherder["machine"] = {"platform": machine_platform}
+ treeherder["collection"] = {collection: True}
+
+ group_names = config.graph_config["treeherder"]["group-names"]
+ groupSymbol, symbol = split_symbol(task_th["symbol"])
+ if groupSymbol != "?":
+ treeherder["groupSymbol"] = groupSymbol
+ if groupSymbol not in group_names:
+ path = os.path.join(config.path, task.get("job-from", ""))
+ raise Exception(UNKNOWN_GROUP_NAME.format(groupSymbol, path))
+ treeherder["groupName"] = group_names[groupSymbol]
+ treeherder["symbol"] = symbol
+ if len(symbol) > 25 or len(groupSymbol) > 25:
+ raise RuntimeError(
+ "Treeherder group and symbol names must not be longer than "
+ "25 characters: {} (see {})".format(
+ task_th["symbol"],
+ TC_TREEHERDER_SCHEMA_URL,
+ )
+ )
+ treeherder["jobKind"] = task_th["kind"]
+ treeherder["tier"] = task_th["tier"]
+
+ branch_rev = get_branch_rev(config)
+
+ routes.append(
+ "{}.v2.{}.{}".format(
+ TREEHERDER_ROUTE_ROOT,
+ config.params["project"],
+ branch_rev,
+ )
+ )
+
+ if "deadline-after" not in task:
+ task["deadline-after"] = "1 day"
+
+ if "priority" not in task:
+ task["priority"] = get_default_priority(
+ config.graph_config, config.params["project"]
+ )
+
+ tags = task.get("tags", {})
+ attributes = task.get("attributes", {})
+
+ tags.update(
+ {
+ "createdForUser": config.params["owner"],
+ "kind": config.kind,
+ "label": task["label"],
+ "retrigger": "true" if attributes.get("retrigger", False) else "false",
+ }
+ )
+
+ task_def = {
+ "provisionerId": provisioner_id,
+ "workerType": worker_type,
+ "routes": routes,
+ "created": {"relative-datestamp": "0 seconds"},
+ "deadline": {"relative-datestamp": task["deadline-after"]},
+ "expires": {"relative-datestamp": task["expires-after"]},
+ "scopes": scopes,
+ "metadata": {
+ "description": task["description"],
+ "name": task["label"],
+ "owner": config.params["owner"],
+ "source": config.params.file_url(config.path, pretty=True),
+ },
+ "extra": extra,
+ "tags": tags,
+ "priority": task["priority"],
+ }
+
+ if task.get("requires", None):
+ task_def["requires"] = task["requires"]
+
+ if task_th:
+ # link back to treeherder in description
+ th_job_link = (
+ "https://treeherder.mozilla.org/#/jobs?repo={}&revision={}&selectedTaskRun=<self>"
+ ).format(config.params["project"], branch_rev)
+ task_def["metadata"]["description"] = {
+ "task-reference": "{description} ([Treeherder job]({th_job_link}))".format(
+ description=task_def["metadata"]["description"],
+ th_job_link=th_job_link,
+ )
+ }
+
+ # add the payload and adjust anything else as required (e.g., scopes)
+ payload_builders[task["worker"]["implementation"]].builder(
+ config, task, task_def
+ )
+
+ # Resolve run-on-projects
+ build_platform = attributes.get("build_platform")
+ resolve_keyed_by(
+ task,
+ "run-on-projects",
+ item_name=task["label"],
+ **{"build-platform": build_platform},
+ )
+ attributes["run_on_projects"] = task.get("run-on-projects", ["all"])
+ attributes["always_target"] = task["always-target"]
+ # This logic is here since downstream tasks don't always match their
+ # upstream dependency's shipping_phase.
+ # A text_type task['shipping-phase'] takes precedence, then
+ # an existing attributes['shipping_phase'], then fall back to None.
+ if task.get("shipping-phase") is not None:
+ attributes["shipping_phase"] = task["shipping-phase"]
+ else:
+ attributes.setdefault("shipping_phase", None)
+ # shipping_product will always match the upstream task's
+ # shipping_product, so a pre-set existing attributes['shipping_product']
+ # takes precedence over task['shipping-product']. However, make sure
+ # we don't have conflicting values.
+ if task.get("shipping-product") and attributes.get("shipping_product") not in (
+ None,
+ task["shipping-product"],
+ ):
+ raise Exception(
+ "{} shipping_product {} doesn't match task shipping-product {}!".format(
+ task["label"],
+ attributes["shipping_product"],
+ task["shipping-product"],
+ )
+ )
+ attributes.setdefault("shipping_product", task["shipping-product"])
+
+ # Set MOZ_AUTOMATION on all jobs.
+ if task["worker"]["implementation"] in (
+ "generic-worker",
+ "docker-worker",
+ ):
+ payload = task_def.get("payload")
+ if payload:
+ env = payload.setdefault("env", {})
+ env["MOZ_AUTOMATION"] = "1"
+
+ dependencies = task.get("dependencies", {})
+ if_dependencies = task.get("if-dependencies", [])
+ if if_dependencies:
+ for i, dep in enumerate(if_dependencies):
+ if dep in dependencies:
+ if_dependencies[i] = dependencies[dep]
+ continue
+
+ raise Exception(
+ "{label} specifies '{dep}' in if-dependencies, "
+ "but {dep} is not a dependency!".format(
+ label=task["label"], dep=dep
+ )
+ )
+
+ yield {
+ "label": task["label"],
+ "description": task["description"],
+ "task": task_def,
+ "dependencies": dependencies,
+ "if-dependencies": if_dependencies,
+ "soft-dependencies": task.get("soft-dependencies", []),
+ "attributes": attributes,
+ "optimization": task.get("optimization", None),
+ }
+
+
+@transforms.add
+def chain_of_trust(config, tasks):
+ for task in tasks:
+ if task["task"].get("payload", {}).get("features", {}).get("chainOfTrust"):
+ image = task.get("dependencies", {}).get("docker-image")
+ if image:
+ cot = (
+ task["task"].setdefault("extra", {}).setdefault("chainOfTrust", {})
+ )
+ cot.setdefault("inputs", {})["docker-image"] = {
+ "task-reference": "<docker-image>"
+ }
+ yield task
+
+
+@transforms.add
+def check_task_identifiers(config, tasks):
+ """Ensures that all tasks have well defined identifiers:
+ ``^[a-zA-Z0-9_-]{1,38}$``
+ """
+ e = re.compile("^[a-zA-Z0-9_-]{1,38}$")
+ for task in tasks:
+ for attrib in ("workerType", "provisionerId"):
+ if not e.match(task["task"][attrib]):
+ raise Exception(
+ "task {}.{} is not a valid identifier: {}".format(
+ task["label"], attrib, task["task"][attrib]
+ )
+ )
+ yield task
+
+
+@transforms.add
+def check_task_dependencies(config, tasks):
+ """Ensures that tasks don't have more than 100 dependencies."""
+ for task in tasks:
+ if len(task["dependencies"]) > MAX_DEPENDENCIES:
+ raise Exception(
+ "task {}/{} has too many dependencies ({} > {})".format(
+ config.kind,
+ task["label"],
+ len(task["dependencies"]),
+ MAX_DEPENDENCIES,
+ )
+ )
+ yield task
+
+
+def check_caches_are_volumes(task):
+ """Ensures that all cache paths are defined as volumes.
+
+ Caches and volumes are the only filesystem locations whose content
+ isn't defined by the Docker image itself. Some caches are optional
+ depending on the job environment. We want paths that are potentially
+ caches to have as similar behavior regardless of whether a cache is
+ used. To help enforce this, we require that all paths used as caches
+ to be declared as Docker volumes. This check won't catch all offenders.
+ But it is better than nothing.
+ """
+ volumes = {s for s in task["worker"]["volumes"]}
+ paths = {c["mount-point"] for c in task["worker"].get("caches", [])}
+ missing = paths - volumes
+
+ if not missing:
+ return
+
+ raise Exception(
+ "task %s (image %s) has caches that are not declared as "
+ "Docker volumes: %s "
+ "(have you added them as VOLUMEs in the Dockerfile?)"
+ % (task["label"], task["worker"]["docker-image"], ", ".join(sorted(missing)))
+ )
+
+
+def check_required_volumes(task):
+ """
+ Ensures that all paths that are required to be volumes are defined as volumes.
+
+ Performance of writing to files in poor in directories not marked as
+ volumes, in docker. Ensure that paths that are often written to are marked
+ as volumes.
+ """
+ volumes = set(task["worker"]["volumes"])
+ paths = set(task["worker"].get("required-volumes", []))
+ missing = paths - volumes
+
+ if not missing:
+ return
+
+ raise Exception(
+ "task %s (image %s) has paths that should be volumes for peformance "
+ "that are not declared as Docker volumes: %s "
+ "(have you added them as VOLUMEs in the Dockerfile?)"
+ % (task["label"], task["worker"]["docker-image"], ", ".join(sorted(missing)))
+ )
+
+
+@transforms.add
+def check_run_task_caches(config, tasks):
+ """Audit for caches requiring run-task.
+
+ run-task manages caches in certain ways. If a cache managed by run-task
+ is used by a non run-task task, it could cause problems. So we audit for
+ that and make sure certain cache names are exclusive to run-task.
+
+ IF YOU ARE TEMPTED TO MAKE EXCLUSIONS TO THIS POLICY, YOU ARE LIKELY
+ CONTRIBUTING TECHNICAL DEBT AND WILL HAVE TO SOLVE MANY OF THE PROBLEMS
+ THAT RUN-TASK ALREADY SOLVES. THINK LONG AND HARD BEFORE DOING THAT.
+ """
+ re_reserved_caches = re.compile(
+ """^
+ (checkouts|tooltool-cache)
+ """,
+ re.VERBOSE,
+ )
+
+ re_sparse_checkout_cache = re.compile("^checkouts-sparse")
+
+ cache_prefix = "{trust_domain}-level-{level}-".format(
+ trust_domain=config.graph_config["trust-domain"],
+ level=config.params["level"],
+ )
+
+ suffix = _run_task_suffix()
+
+ for task in tasks:
+ payload = task["task"].get("payload", {})
+ command = payload.get("command") or [""]
+
+ main_command = command[0] if isinstance(command[0], str) else ""
+ run_task = main_command.endswith("run-task")
+
+ require_sparse_cache = False
+ have_sparse_cache = False
+
+ if run_task:
+ for arg in command[1:]:
+ if not isinstance(arg, str):
+ continue
+
+ if arg == "--":
+ break
+
+ if arg.startswith("--gecko-sparse-profile"):
+ if "=" not in arg:
+ raise Exception(
+ "{} is specifying `--gecko-sparse-profile` to run-task "
+ "as two arguments. Unable to determine if the sparse "
+ "profile exists.".format(task["label"])
+ )
+ _, sparse_profile = arg.split("=", 1)
+ if not os.path.exists(os.path.join(GECKO, sparse_profile)):
+ raise Exception(
+ "{} is using non-existant sparse profile {}.".format(
+ task["label"], sparse_profile
+ )
+ )
+ require_sparse_cache = True
+ break
+
+ for cache in payload.get("cache", {}):
+ if not cache.startswith(cache_prefix):
+ raise Exception(
+ "{} is using a cache ({}) which is not appropriate "
+ "for its trust-domain and level. It should start with {}.".format(
+ task["label"], cache, cache_prefix
+ )
+ )
+
+ cache = cache[len(cache_prefix) :]
+
+ if re_sparse_checkout_cache.match(cache):
+ have_sparse_cache = True
+
+ if not re_reserved_caches.match(cache):
+ continue
+
+ if not run_task:
+ raise Exception(
+ "%s is using a cache (%s) reserved for run-task "
+ "change the task to use run-task or use a different "
+ "cache name" % (task["label"], cache)
+ )
+
+ if not cache.endswith(suffix):
+ raise Exception(
+ "%s is using a cache (%s) reserved for run-task "
+ "but the cache name is not dependent on the contents "
+ "of run-task; change the cache name to conform to the "
+ "naming requirements" % (task["label"], cache)
+ )
+
+ if require_sparse_cache and not have_sparse_cache:
+ raise Exception(
+ "%s is using a sparse checkout but not using "
+ "a sparse checkout cache; change the checkout "
+ "cache name so it is sparse aware" % task["label"]
+ )
+
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/test/__init__.py b/taskcluster/gecko_taskgraph/transforms/test/__init__.py
new file mode 100644
index 0000000000..ac17554baa
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/test/__init__.py
@@ -0,0 +1,538 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+These transforms construct a task description to run the given test, based on a
+test description. The implementation here is shared among all test kinds, but
+contains specific support for how we run tests in Gecko (via mozharness,
+invoked in particular ways).
+
+This is a good place to translate a test-description option such as
+`single-core: true` to the implementation of that option in a task description
+(worker options, mozharness commandline, environment variables, etc.)
+
+The test description should be fully formed by the time it reaches these
+transforms, and these transforms should not embody any specific knowledge about
+what should run where. this is the wrong place for special-casing platforms,
+for example - use `all_tests.py` instead.
+"""
+
+
+import logging
+from importlib import import_module
+
+from mozbuild.schedules import INCLUSIVE_COMPONENTS
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import Schema, optionally_keyed_by, resolve_keyed_by
+from voluptuous import Any, Exclusive, Optional, Required
+
+from gecko_taskgraph.optimize.schema import OptimizationSchema
+from gecko_taskgraph.transforms.test.other import get_mobile_project
+from gecko_taskgraph.util.chunking import manifest_loaders
+
+logger = logging.getLogger(__name__)
+transforms = TransformSequence()
+
+
+# Schema for a test description
+#
+# *****WARNING*****
+#
+# This is a great place for baffling cruft to accumulate, and that makes
+# everyone move more slowly. Be considerate of your fellow hackers!
+# See the warnings in taskcluster/docs/how-tos.rst
+#
+# *****WARNING*****
+test_description_schema = Schema(
+ {
+ # description of the suite, for the task metadata
+ Required("description"): str,
+ # test suite category and name
+ Optional("suite"): Any(
+ optionally_keyed_by("variant", str),
+ {
+ Optional("category"): str,
+ Optional("name"): optionally_keyed_by("variant", str),
+ },
+ ),
+ # base work directory used to set up the task.
+ Optional("workdir"): optionally_keyed_by("test-platform", Any(str, "default")),
+ # the name by which this test suite is addressed in try syntax; defaults to
+ # the test-name. This will translate to the `unittest_try_name` or
+ # `talos_try_name` attribute.
+ Optional("try-name"): str,
+ # additional tags to mark up this type of test
+ Optional("tags"): {str: object},
+ # the symbol, or group(symbol), under which this task should appear in
+ # treeherder.
+ Required("treeherder-symbol"): str,
+ # the value to place in task.extra.treeherder.machine.platform; ideally
+ # this is the same as build-platform, and that is the default, but in
+ # practice it's not always a match.
+ Optional("treeherder-machine-platform"): str,
+ # attributes to appear in the resulting task (later transforms will add the
+ # common attributes)
+ Optional("attributes"): {str: object},
+ # relative path (from config.path) to the file task was defined in
+ Optional("job-from"): str,
+ # The `run_on_projects` attribute, defaulting to "all". This dictates the
+ # projects on which this task should be included in the target task set.
+ # See the attributes documentation for details.
+ #
+ # Note that the special case 'built-projects', the default, uses the parent
+ # build task's run-on-projects, meaning that tests run only on platforms
+ # that are built.
+ Optional("run-on-projects"): optionally_keyed_by(
+ "app",
+ "subtest",
+ "test-platform",
+ "test-name",
+ "variant",
+ Any([str], "built-projects"),
+ ),
+ # When set only run on projects where the build would already be running.
+ # This ensures tasks where this is True won't be the cause of the build
+ # running on a project it otherwise wouldn't have.
+ Optional("built-projects-only"): bool,
+ # the sheriffing tier for this task (default: set based on test platform)
+ Optional("tier"): optionally_keyed_by(
+ "test-platform", "variant", "app", "subtest", Any(int, "default")
+ ),
+ # number of chunks to create for this task. This can be keyed by test
+ # platform by passing a dictionary in the `by-test-platform` key. If the
+ # test platform is not found, the key 'default' will be tried.
+ Required("chunks"): optionally_keyed_by(
+ "test-platform", "variant", Any(int, "dynamic")
+ ),
+ # Custom 'test_manifest_loader' to use, overriding the one configured in the
+ # parameters. When 'null', no test chunking will be performed. Can also
+ # be used to disable "manifest scheduling".
+ Optional("test-manifest-loader"): Any(None, *list(manifest_loaders)),
+ # the time (with unit) after which this task is deleted; default depends on
+ # the branch (see below)
+ Optional("expires-after"): str,
+ # The different configurations that should be run against this task, defined
+ # in the TEST_VARIANTS object in the variant.py transforms.
+ Optional("variants"): [str],
+ # Whether to run this task without any variants applied.
+ Required("run-without-variant"): optionally_keyed_by("test-platform", bool),
+ # The EC2 instance size to run these tests on.
+ Required("instance-size"): optionally_keyed_by(
+ "test-platform", Any("default", "large", "xlarge")
+ ),
+ # type of virtualization or hardware required by test.
+ Required("virtualization"): optionally_keyed_by(
+ "test-platform", Any("virtual", "virtual-with-gpu", "hardware")
+ ),
+ # Whether the task requires loopback audio or video (whatever that may mean
+ # on the platform)
+ Required("loopback-audio"): bool,
+ Required("loopback-video"): bool,
+ # Whether the test can run using a software GL implementation on Linux
+ # using the GL compositor. May not be used with "legacy" sized instances
+ # due to poor LLVMPipe performance (bug 1296086). Defaults to true for
+ # unit tests on linux platforms and false otherwise
+ Optional("allow-software-gl-layers"): bool,
+ # For tasks that will run in docker-worker, this is the
+ # name of the docker image or in-tree docker image to run the task in. If
+ # in-tree, then a dependency will be created automatically. This is
+ # generally `desktop-test`, or an image that acts an awful lot like it.
+ Required("docker-image"): optionally_keyed_by(
+ "test-platform",
+ Any(
+ # a raw Docker image path (repo/image:tag)
+ str,
+ # an in-tree generated docker image (from `taskcluster/docker/<name>`)
+ {"in-tree": str},
+ # an indexed docker image
+ {"indexed": str},
+ ),
+ ),
+ # seconds of runtime after which the task will be killed. Like 'chunks',
+ # this can be keyed by test platform, but also variant.
+ Required("max-run-time"): optionally_keyed_by(
+ "test-platform", "subtest", "variant", "app", int
+ ),
+ # the exit status code that indicates the task should be retried
+ Optional("retry-exit-status"): [int],
+ # Whether to perform a gecko checkout.
+ Required("checkout"): bool,
+ # Wheter to perform a machine reboot after test is done
+ Optional("reboot"): Any(False, "always", "on-exception", "on-failure"),
+ # What to run
+ Required("mozharness"): {
+ # the mozharness script used to run this task
+ Required("script"): optionally_keyed_by("test-platform", str),
+ # the config files required for the task
+ Required("config"): optionally_keyed_by("test-platform", [str]),
+ # mochitest flavor for mochitest runs
+ Optional("mochitest-flavor"): str,
+ # any additional actions to pass to the mozharness command
+ Optional("actions"): [str],
+ # additional command-line options for mozharness, beyond those
+ # automatically added
+ Required("extra-options"): optionally_keyed_by("test-platform", [str]),
+ # the artifact name (including path) to test on the build task; this is
+ # generally set in a per-kind transformation
+ Optional("build-artifact-name"): str,
+ Optional("installer-url"): str,
+ # If not false, tooltool downloads will be enabled via relengAPIProxy
+ # for either just public files, or all files. Not supported on Windows
+ Required("tooltool-downloads"): Any(
+ False,
+ "public",
+ "internal",
+ ),
+ # Add --blob-upload-branch=<project> mozharness parameter
+ Optional("include-blob-upload-branch"): bool,
+ # The setting for --download-symbols (if omitted, the option will not
+ # be passed to mozharness)
+ Optional("download-symbols"): Any(True, "ondemand"),
+ # If set, then MOZ_NODE_PATH=/usr/local/bin/node is included in the
+ # environment. This is more than just a helpful path setting -- it
+ # causes xpcshell tests to start additional servers, and runs
+ # additional tests.
+ Required("set-moz-node-path"): bool,
+ # If true, include chunking information in the command even if the number
+ # of chunks is 1
+ Required("chunked"): optionally_keyed_by("test-platform", bool),
+ Required("requires-signed-builds"): optionally_keyed_by(
+ "test-platform", "variant", bool
+ ),
+ },
+ # The set of test manifests to run.
+ Optional("test-manifests"): Any(
+ [str],
+ {"active": [str], "skipped": [str]},
+ ),
+ # The current chunk (if chunking is enabled).
+ Optional("this-chunk"): int,
+ # os user groups for test task workers; required scopes, will be
+ # added automatically
+ Optional("os-groups"): optionally_keyed_by("test-platform", [str]),
+ Optional("run-as-administrator"): optionally_keyed_by("test-platform", bool),
+ # -- values supplied by the task-generation infrastructure
+ # the platform of the build this task is testing
+ Required("build-platform"): str,
+ # the label of the build task generating the materials to test
+ Required("build-label"): str,
+ # the label of the signing task generating the materials to test.
+ # Signed builds are used in xpcshell tests on Windows, for instance.
+ Optional("build-signing-label"): optionally_keyed_by("variant", str),
+ # the build's attributes
+ Required("build-attributes"): {str: object},
+ # the platform on which the tests will run
+ Required("test-platform"): str,
+ # limit the test-platforms (as defined in test-platforms.yml)
+ # that the test will run on
+ Optional("limit-platforms"): optionally_keyed_by("app", "subtest", [str]),
+ # the name of the test (the key in tests.yml)
+ Required("test-name"): str,
+ # the product name, defaults to firefox
+ Optional("product"): str,
+ # conditional files to determine when these tests should be run
+ Exclusive("when", "optimization"): {
+ Optional("files-changed"): [str],
+ },
+ # Optimization to perform on this task during the optimization phase.
+ # Optimizations are defined in taskcluster/gecko_taskgraph/optimize.py.
+ Exclusive("optimization", "optimization"): OptimizationSchema,
+ # The SCHEDULES component for this task; this defaults to the suite
+ # (not including the flavor) but can be overridden here.
+ Exclusive("schedules-component", "optimization"): Any(
+ str,
+ [str],
+ ),
+ Optional("worker-type"): optionally_keyed_by(
+ "test-platform",
+ Any(str, None),
+ ),
+ Optional(
+ "require-signed-extensions",
+ description="Whether the build being tested requires extensions be signed.",
+ ): optionally_keyed_by("release-type", "test-platform", bool),
+ # The target name, specifying the build artifact to be tested.
+ # If None or not specified, a transform sets the target based on OS:
+ # target.dmg (Mac), target.apk (Android), target.tar.bz2 (Linux),
+ # or target.zip (Windows).
+ Optional("target"): optionally_keyed_by(
+ "app",
+ "test-platform",
+ "variant",
+ Any(
+ str,
+ None,
+ {Required("index"): str, Required("name"): str},
+ ),
+ ),
+ # A list of artifacts to install from 'fetch' tasks. Validation deferred
+ # to 'job' transforms.
+ Optional("fetches"): object,
+ # Raptor / browsertime specific keys, defer validation to 'raptor.py'
+ # transform.
+ Optional("raptor"): object,
+ # Raptor / browsertime specific keys that need to be here since 'raptor' schema
+ # is evluated *before* test_description_schema
+ Optional("app"): str,
+ Optional("subtest"): str,
+ # Define if a given task supports artifact builds or not, see bug 1695325.
+ Optional("supports-artifact-builds"): bool,
+ }
+)
+
+
+@transforms.add
+def handle_keyed_by_mozharness(config, tasks):
+ """Resolve a mozharness field if it is keyed by something"""
+ fields = [
+ "mozharness",
+ "mozharness.chunked",
+ "mozharness.config",
+ "mozharness.extra-options",
+ "mozharness.script",
+ ]
+ for task in tasks:
+ for field in fields:
+ resolve_keyed_by(
+ task,
+ field,
+ item_name=task["test-name"],
+ enforce_single_match=False,
+ )
+ yield task
+
+
+@transforms.add
+def set_defaults(config, tasks):
+ for task in tasks:
+ build_platform = task["build-platform"]
+ if build_platform.startswith("android"):
+ # all Android test tasks download internal objects from tooltool
+ task["mozharness"]["tooltool-downloads"] = "internal"
+ task["mozharness"]["actions"] = ["get-secrets"]
+
+ # loopback-video is always true for Android, but false for other
+ # platform phyla
+ task["loopback-video"] = True
+ task["mozharness"]["set-moz-node-path"] = True
+
+ # software-gl-layers is only meaningful on linux unittests, where it defaults to True
+ if task["test-platform"].startswith("linux") and task["suite"] not in [
+ "talos",
+ "raptor",
+ ]:
+ task.setdefault("allow-software-gl-layers", True)
+ else:
+ task["allow-software-gl-layers"] = False
+
+ task.setdefault("try-name", task["test-name"])
+ task.setdefault("os-groups", [])
+ task.setdefault("run-as-administrator", False)
+ task.setdefault("chunks", 1)
+ task.setdefault("run-on-projects", "built-projects")
+ task.setdefault("built-projects-only", False)
+ task.setdefault("instance-size", "default")
+ task.setdefault("max-run-time", 3600)
+ task.setdefault("reboot", False)
+ task.setdefault("virtualization", "virtual")
+ task.setdefault("loopback-audio", False)
+ task.setdefault("loopback-video", False)
+ task.setdefault("limit-platforms", [])
+ task.setdefault("docker-image", {"in-tree": "ubuntu1804-test"})
+ task.setdefault("checkout", False)
+ task.setdefault("require-signed-extensions", False)
+ task.setdefault("run-without-variant", True)
+ task.setdefault("variants", [])
+ task.setdefault("supports-artifact-builds", True)
+
+ task["mozharness"].setdefault("extra-options", [])
+ task["mozharness"].setdefault("requires-signed-builds", False)
+ task["mozharness"].setdefault("tooltool-downloads", "public")
+ task["mozharness"].setdefault("set-moz-node-path", False)
+ task["mozharness"].setdefault("chunked", False)
+ yield task
+
+
+transforms.add_validate(test_description_schema)
+
+
+@transforms.add
+def run_variant_transforms(config, tasks):
+ """Variant transforms are run as soon as possible to allow other transforms
+ to key by variant."""
+ for task in tasks:
+ xforms = TransformSequence()
+ mod = import_module("gecko_taskgraph.transforms.test.variant")
+ xforms.add(mod.transforms)
+
+ yield from xforms(config, [task])
+
+
+@transforms.add
+def resolve_keys(config, tasks):
+ keys = ("require-signed-extensions", "run-without-variant", "suite", "suite.name")
+ for task in tasks:
+ for key in keys:
+ resolve_keyed_by(
+ task,
+ key,
+ item_name=task["test-name"],
+ enforce_single_match=False,
+ **{
+ "release-type": config.params["release_type"],
+ "variant": task["attributes"].get("unittest_variant"),
+ },
+ )
+ yield task
+
+
+@transforms.add
+def run_remaining_transforms(config, tasks):
+ """Runs other transform files next to this module."""
+ # List of modules to load transforms from in order.
+ transform_modules = (
+ ("raptor", lambda t: t["suite"] == "raptor"),
+ ("other", None),
+ ("worker", None),
+ # These transforms should always run last as there is never any
+ # difference in configuration from one chunk to another (other than
+ # chunk number).
+ ("chunk", None),
+ )
+
+ for task in tasks:
+ xforms = TransformSequence()
+ for name, filterfn in transform_modules:
+ if filterfn and not filterfn(task):
+ continue
+
+ mod = import_module(f"gecko_taskgraph.transforms.test.{name}")
+ xforms.add(mod.transforms)
+
+ yield from xforms(config, [task])
+
+
+@transforms.add
+def make_job_description(config, tasks):
+ """Convert *test* descriptions to *job* descriptions (input to
+ gecko_taskgraph.transforms.job)"""
+
+ for task in tasks:
+ attributes = task.get("attributes", {})
+
+ mobile = get_mobile_project(task)
+ if mobile and (mobile not in task["test-name"]):
+ label = "{}-{}-{}-{}".format(
+ config.kind, task["test-platform"], mobile, task["test-name"]
+ )
+ else:
+ label = "{}-{}-{}".format(
+ config.kind, task["test-platform"], task["test-name"]
+ )
+
+ try_name = task["try-name"]
+ if attributes.get("unittest_variant"):
+ suffix = task.pop("variant-suffix")
+ label += suffix
+ try_name += suffix
+
+ if task["chunks"] > 1:
+ label += "-{}".format(task["this-chunk"])
+
+ build_label = task["build-label"]
+
+ if task["suite"] == "talos":
+ attr_try_name = "talos_try_name"
+ elif task["suite"] == "raptor":
+ attr_try_name = "raptor_try_name"
+ else:
+ attr_try_name = "unittest_try_name"
+
+ attr_build_platform, attr_build_type = task["build-platform"].split("/", 1)
+ attributes.update(
+ {
+ "build_platform": attr_build_platform,
+ "build_type": attr_build_type,
+ "test_platform": task["test-platform"],
+ "test_chunk": str(task["this-chunk"]),
+ "supports-artifact-builds": task["supports-artifact-builds"],
+ attr_try_name: try_name,
+ }
+ )
+
+ if "test-manifests" in task:
+ attributes["test_manifests"] = task["test-manifests"]
+
+ jobdesc = {}
+ name = "{}-{}".format(task["test-platform"], task["test-name"])
+ jobdesc["name"] = name
+ jobdesc["label"] = label
+ jobdesc["description"] = task["description"]
+ jobdesc["attributes"] = attributes
+ jobdesc["dependencies"] = {"build": build_label}
+ jobdesc["job-from"] = task["job-from"]
+
+ if task.get("fetches"):
+ jobdesc["fetches"] = task["fetches"]
+
+ if task["mozharness"]["requires-signed-builds"] is True:
+ jobdesc["dependencies"]["build-signing"] = task["build-signing-label"]
+
+ if "expires-after" in task:
+ jobdesc["expires-after"] = task["expires-after"]
+
+ jobdesc["routes"] = []
+ jobdesc["run-on-projects"] = sorted(task["run-on-projects"])
+ jobdesc["scopes"] = []
+ jobdesc["tags"] = task.get("tags", {})
+ jobdesc["extra"] = {
+ "chunks": {
+ "current": task["this-chunk"],
+ "total": task["chunks"],
+ },
+ "suite": attributes["unittest_suite"],
+ "test-setting": task.pop("test-setting"),
+ }
+ jobdesc["treeherder"] = {
+ "symbol": task["treeherder-symbol"],
+ "kind": "test",
+ "tier": task["tier"],
+ "platform": task.get("treeherder-machine-platform", task["build-platform"]),
+ }
+
+ schedules = task.get("schedules-component", [])
+ if task.get("when"):
+ # This may still be used by comm-central.
+ jobdesc["when"] = task["when"]
+ elif "optimization" in task:
+ jobdesc["optimization"] = task["optimization"]
+ elif set(schedules) & set(INCLUSIVE_COMPONENTS):
+ jobdesc["optimization"] = {"test-inclusive": schedules}
+ else:
+ jobdesc["optimization"] = {"test": schedules}
+
+ run = jobdesc["run"] = {}
+ run["using"] = "mozharness-test"
+ run["test"] = task
+
+ if "workdir" in task:
+ run["workdir"] = task.pop("workdir")
+
+ jobdesc["worker-type"] = task.pop("worker-type")
+
+ if "worker" in task:
+ jobdesc["worker"] = task.pop("worker")
+
+ if task.get("fetches"):
+ jobdesc["fetches"] = task.pop("fetches")
+
+ yield jobdesc
+
+
+def normpath(path):
+ return path.replace("/", "\\")
+
+
+def get_firefox_version():
+ with open("browser/config/version.txt") as f:
+ return f.readline().strip()
diff --git a/taskcluster/gecko_taskgraph/transforms/test/chunk.py b/taskcluster/gecko_taskgraph/transforms/test/chunk.py
new file mode 100644
index 0000000000..f6442e3755
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/test/chunk.py
@@ -0,0 +1,262 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import json
+
+import taskgraph
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.attributes import keymatch
+from taskgraph.util.treeherder import join_symbol, split_symbol
+
+from gecko_taskgraph.util.attributes import is_try
+from gecko_taskgraph.util.chunking import (
+ DefaultLoader,
+ chunk_manifests,
+ get_manifest_loader,
+ get_runtimes,
+ guess_mozinfo_from_task,
+)
+from gecko_taskgraph.util.copy_task import copy_task
+from gecko_taskgraph.util.perfile import perfile_number_of_chunks
+
+DYNAMIC_CHUNK_DURATION = 20 * 60 # seconds
+"""The approximate time each test chunk should take to run."""
+
+
+DYNAMIC_CHUNK_MULTIPLIER = {
+ # Desktop xpcshell tests run in parallel. Reduce the total runtime to
+ # compensate.
+ "^(?!android).*-xpcshell.*": 0.2,
+}
+"""A multiplication factor to tweak the total duration per platform / suite."""
+
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def set_test_verify_chunks(config, tasks):
+ """Set the number of chunks we use for test-verify."""
+ for task in tasks:
+ if any(task["suite"].startswith(s) for s in ("test-verify", "test-coverage")):
+ env = config.params.get("try_task_config", {}) or {}
+ env = env.get("templates", {}).get("env", {})
+ task["chunks"] = perfile_number_of_chunks(
+ is_try(config.params),
+ env.get("MOZHARNESS_TEST_PATHS", ""),
+ config.params.get("head_repository", ""),
+ config.params.get("head_rev", ""),
+ task["test-name"],
+ )
+
+ # limit the number of chunks we run for test-verify mode because
+ # test-verify is comprehensive and takes a lot of time, if we have
+ # >30 tests changed, this is probably an import of external tests,
+ # or a patch renaming/moving files in bulk
+ maximum_number_verify_chunks = 3
+ if task["chunks"] > maximum_number_verify_chunks:
+ task["chunks"] = maximum_number_verify_chunks
+
+ yield task
+
+
+@transforms.add
+def set_test_manifests(config, tasks):
+ """Determine the set of test manifests that should run in this task."""
+
+ for task in tasks:
+ # When a task explicitly requests no 'test_manifest_loader', test
+ # resolving will happen at test runtime rather than in the taskgraph.
+ if "test-manifest-loader" in task and task["test-manifest-loader"] is None:
+ yield task
+ continue
+
+ # Set 'tests_grouped' to "1", so we can differentiate between suites that are
+ # chunked at the test runtime and those that are chunked in the taskgraph.
+ task.setdefault("tags", {})["tests_grouped"] = "1"
+
+ if taskgraph.fast:
+ # We want to avoid evaluating manifests when taskgraph.fast is set. But
+ # manifests are required for dynamic chunking. Just set the number of
+ # chunks to one in this case.
+ if task["chunks"] == "dynamic":
+ task["chunks"] = 1
+ yield task
+ continue
+
+ manifests = task.get("test-manifests")
+ if manifests:
+ if isinstance(manifests, list):
+ task["test-manifests"] = {"active": manifests, "skipped": []}
+ yield task
+ continue
+
+ mozinfo = guess_mozinfo_from_task(
+ task, config.params.get("head_repository", "")
+ )
+
+ loader_name = task.pop(
+ "test-manifest-loader", config.params["test_manifest_loader"]
+ )
+ loader = get_manifest_loader(loader_name, config.params)
+
+ task["test-manifests"] = loader.get_manifests(
+ task["suite"],
+ frozenset(mozinfo.items()),
+ )
+
+ # When scheduling with test paths, we often find manifests scheduled but all tests
+ # are skipped on a given config. This will remove the task from the task set if
+ # no manifests have active tests for the given task/config
+ mh_test_paths = {}
+ if "MOZHARNESS_TEST_PATHS" in config.params.get("try_task_config", {}).get(
+ "env", {}
+ ):
+ mh_test_paths = json.loads(
+ config.params["try_task_config"]["env"]["MOZHARNESS_TEST_PATHS"]
+ )
+
+ if task["attributes"]["unittest_suite"] in mh_test_paths.keys():
+ input_paths = mh_test_paths[task["attributes"]["unittest_suite"]]
+ remaining_manifests = []
+
+ # if we have web-platform tests incoming, just yield task
+ for m in input_paths:
+ if m.startswith("testing/web-platform/tests/"):
+ if not isinstance(loader, DefaultLoader):
+ task["chunks"] = "dynamic"
+ yield task
+ break
+
+ # input paths can exist in other directories (i.e. [../../dir/test.js])
+ # we need to look for all [active] manifests that include tests in the path
+ for m in input_paths:
+ if [tm for tm in task["test-manifests"]["active"] if tm.startswith(m)]:
+ remaining_manifests.append(m)
+
+ # look in the 'other' manifests
+ for m in input_paths:
+ man = m
+ for tm in task["test-manifests"]["other_dirs"]:
+ matched_dirs = [
+ dp
+ for dp in task["test-manifests"]["other_dirs"].get(tm)
+ if dp.startswith(man)
+ ]
+ if matched_dirs:
+ if tm not in task["test-manifests"]["active"]:
+ continue
+ if m not in remaining_manifests:
+ remaining_manifests.append(m)
+
+ if remaining_manifests == []:
+ continue
+
+ # The default loader loads all manifests. If we use a non-default
+ # loader, we'll only run some subset of manifests and the hardcoded
+ # chunk numbers will no longer be valid. Dynamic chunking should yield
+ # better results.
+ if not isinstance(loader, DefaultLoader):
+ task["chunks"] = "dynamic"
+
+ yield task
+
+
+@transforms.add
+def resolve_dynamic_chunks(config, tasks):
+ """Determine how many chunks are needed to handle the given set of manifests."""
+
+ for task in tasks:
+ if task["chunks"] != "dynamic":
+ yield task
+ continue
+
+ if not task.get("test-manifests"):
+ raise Exception(
+ "{} must define 'test-manifests' to use dynamic chunking!".format(
+ task["test-name"]
+ )
+ )
+
+ runtimes = {
+ m: r
+ for m, r in get_runtimes(task["test-platform"], task["suite"]).items()
+ if m in task["test-manifests"]["active"]
+ }
+
+ # Truncate runtimes that are above the desired chunk duration. They
+ # will be assigned to a chunk on their own and the excess duration
+ # shouldn't cause additional chunks to be needed.
+ times = [min(DYNAMIC_CHUNK_DURATION, r) for r in runtimes.values()]
+ avg = round(sum(times) / len(times), 2) if times else 0
+ total = sum(times)
+
+ # If there are manifests missing from the runtimes data, fill them in
+ # with the average of all present manifests.
+ missing = [m for m in task["test-manifests"]["active"] if m not in runtimes]
+ total += avg * len(missing)
+
+ # Apply any chunk multipliers if found.
+ key = "{}-{}".format(task["test-platform"], task["test-name"])
+ matches = keymatch(DYNAMIC_CHUNK_MULTIPLIER, key)
+ if len(matches) > 1:
+ raise Exception(
+ "Multiple matching values for {} found while "
+ "determining dynamic chunk multiplier!".format(key)
+ )
+ elif matches:
+ total = total * matches[0]
+
+ chunks = int(round(total / DYNAMIC_CHUNK_DURATION))
+
+ # Make sure we never exceed the number of manifests, nor have a chunk
+ # length of 0.
+ task["chunks"] = min(chunks, len(task["test-manifests"]["active"])) or 1
+ yield task
+
+
+@transforms.add
+def split_chunks(config, tasks):
+ """Based on the 'chunks' key, split tests up into chunks by duplicating
+ them and assigning 'this-chunk' appropriately and updating the treeherder
+ symbol.
+ """
+
+ for task in tasks:
+ # If test-manifests are set, chunk them ahead of time to avoid running
+ # the algorithm more than once.
+ chunked_manifests = None
+ if "test-manifests" in task:
+ manifests = task["test-manifests"]
+ chunked_manifests = chunk_manifests(
+ task["suite"],
+ task["test-platform"],
+ task["chunks"],
+ manifests["active"],
+ )
+
+ # Add all skipped manifests to the first chunk of backstop pushes
+ # so they still show up in the logs. They won't impact runtime much
+ # and this way tools like ActiveData are still aware that they
+ # exist.
+ if config.params["backstop"] and manifests["active"]:
+ chunked_manifests[0].extend(manifests["skipped"])
+
+ for i in range(task["chunks"]):
+ this_chunk = i + 1
+
+ # copy the test and update with the chunk number
+ chunked = copy_task(task)
+ chunked["this-chunk"] = this_chunk
+
+ if chunked_manifests is not None:
+ chunked["test-manifests"] = sorted(chunked_manifests[i])
+
+ group, symbol = split_symbol(chunked["treeherder-symbol"])
+ if task["chunks"] > 1 or not symbol:
+ # add the chunk number to the TH symbol
+ symbol += str(this_chunk)
+ chunked["treeherder-symbol"] = join_symbol(group, symbol)
+
+ yield chunked
diff --git a/taskcluster/gecko_taskgraph/transforms/test/other.py b/taskcluster/gecko_taskgraph/transforms/test/other.py
new file mode 100644
index 0000000000..1c08d290e4
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/test/other.py
@@ -0,0 +1,1081 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import hashlib
+import json
+import re
+
+from mozbuild.schedules import INCLUSIVE_COMPONENTS
+from mozbuild.util import ReadOnlyDict
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.attributes import keymatch
+from taskgraph.util.keyed_by import evaluate_keyed_by
+from taskgraph.util.schema import Schema, resolve_keyed_by
+from taskgraph.util.taskcluster import get_artifact_path, get_index_url
+from voluptuous import Any, Optional, Required
+
+from gecko_taskgraph.transforms.test.variant import TEST_VARIANTS
+from gecko_taskgraph.util.platforms import platform_family
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def limit_platforms(config, tasks):
+ for task in tasks:
+ if not task["limit-platforms"]:
+ yield task
+ continue
+
+ limited_platforms = {key: key for key in task["limit-platforms"]}
+ if keymatch(limited_platforms, task["test-platform"]):
+ yield task
+
+
+@transforms.add
+def handle_suite_category(config, tasks):
+ for task in tasks:
+ task.setdefault("suite", {})
+
+ if isinstance(task["suite"], str):
+ task["suite"] = {"name": task["suite"]}
+
+ suite = task["suite"].setdefault("name", task["test-name"])
+ category = task["suite"].setdefault("category", suite)
+
+ task.setdefault("attributes", {})
+ task["attributes"]["unittest_suite"] = suite
+ task["attributes"]["unittest_category"] = category
+
+ script = task["mozharness"]["script"]
+ category_arg = None
+ if suite.startswith("test-verify") or suite.startswith("test-coverage"):
+ pass
+ elif script in ("android_emulator_unittest.py", "android_hardware_unittest.py"):
+ category_arg = "--test-suite"
+ elif script == "desktop_unittest.py":
+ category_arg = f"--{category}-suite"
+
+ if category_arg:
+ task["mozharness"].setdefault("extra-options", [])
+ extra = task["mozharness"]["extra-options"]
+ if not any(arg.startswith(category_arg) for arg in extra):
+ extra.append(f"{category_arg}={suite}")
+
+ # From here on out we only use the suite name.
+ task["suite"] = suite
+ yield task
+
+
+@transforms.add
+def setup_talos(config, tasks):
+ """Add options that are specific to talos jobs (identified by suite=talos)"""
+ for task in tasks:
+ if task["suite"] != "talos":
+ yield task
+ continue
+
+ extra_options = task.setdefault("mozharness", {}).setdefault(
+ "extra-options", []
+ )
+ extra_options.append("--use-talos-json")
+
+ # win7 needs to test skip
+ if task["build-platform"].startswith("win32"):
+ extra_options.append("--add-option")
+ extra_options.append("--setpref,gfx.direct2d.disabled=true")
+
+ if config.params.get("project", None):
+ extra_options.append("--project=%s" % config.params["project"])
+
+ yield task
+
+
+@transforms.add
+def setup_browsertime_flag(config, tasks):
+ """Optionally add `--browsertime` flag to Raptor pageload tests."""
+
+ browsertime_flag = config.params["try_task_config"].get("browsertime", False)
+
+ for task in tasks:
+ if not browsertime_flag or task["suite"] != "raptor":
+ yield task
+ continue
+
+ if task["treeherder-symbol"].startswith("Rap"):
+ # The Rap group is subdivided as Rap{-fenix,-refbrow(...),
+ # so `taskgraph.util.treeherder.replace_group` isn't appropriate.
+ task["treeherder-symbol"] = task["treeherder-symbol"].replace(
+ "Rap", "Btime", 1
+ )
+
+ extra_options = task.setdefault("mozharness", {}).setdefault(
+ "extra-options", []
+ )
+ extra_options.append("--browsertime")
+
+ yield task
+
+
+@transforms.add
+def handle_artifact_prefix(config, tasks):
+ """Handle translating `artifact_prefix` appropriately"""
+ for task in tasks:
+ if task["build-attributes"].get("artifact_prefix"):
+ task.setdefault("attributes", {}).setdefault(
+ "artifact_prefix", task["build-attributes"]["artifact_prefix"]
+ )
+ yield task
+
+
+@transforms.add
+def set_treeherder_machine_platform(config, tasks):
+ """Set the appropriate task.extra.treeherder.machine.platform"""
+ translation = {
+ # Linux64 build platform for asan is specified differently to
+ # treeherder.
+ "macosx1100-64/opt": "osx-1100/opt",
+ "macosx1100-64-shippable/opt": "osx-1100-shippable/opt",
+ "win64-asan/opt": "windows10-64/asan",
+ "win64-aarch64/opt": "windows10-aarch64/opt",
+ }
+ for task in tasks:
+ # For most desktop platforms, the above table is not used for "regular"
+ # builds, so we'll always pick the test platform here.
+ # On macOS though, the regular builds are in the table. This causes a
+ # conflict in `verify_task_graph_symbol` once you add a new test
+ # platform based on regular macOS builds, such as for QR.
+ # Since it's unclear if the regular macOS builds can be removed from
+ # the table, workaround the issue for QR.
+ if "android" in task["test-platform"] and "pgo/opt" in task["test-platform"]:
+ platform_new = task["test-platform"].replace("-pgo/opt", "/pgo")
+ task["treeherder-machine-platform"] = platform_new
+ elif "android-em-7.0-x86_64-qr" in task["test-platform"]:
+ task["treeherder-machine-platform"] = task["test-platform"].replace(
+ ".", "-"
+ )
+ elif "android-em-7.0-x86_64-shippable-qr" in task["test-platform"]:
+ task["treeherder-machine-platform"] = task["test-platform"].replace(
+ ".", "-"
+ )
+ elif "android-em-7.0-x86_64-lite-qr" in task["test-platform"]:
+ task["treeherder-machine-platform"] = task["test-platform"].replace(
+ ".", "-"
+ )
+ elif "android-em-7.0-x86_64-shippable-lite-qr" in task["test-platform"]:
+ task["treeherder-machine-platform"] = task["test-platform"].replace(
+ ".", "-"
+ )
+ elif "-qr" in task["test-platform"]:
+ task["treeherder-machine-platform"] = task["test-platform"]
+ elif "android-hw" in task["test-platform"]:
+ task["treeherder-machine-platform"] = task["test-platform"]
+ elif "android-em-7.0-x86_64" in task["test-platform"]:
+ task["treeherder-machine-platform"] = task["test-platform"].replace(
+ ".", "-"
+ )
+ elif "android-em-7.0-x86" in task["test-platform"]:
+ task["treeherder-machine-platform"] = task["test-platform"].replace(
+ ".", "-"
+ )
+ # Bug 1602863 - must separately define linux64/asan and linux1804-64/asan
+ # otherwise causes an exception during taskgraph generation about
+ # duplicate treeherder platform/symbol.
+ elif "linux64-asan/opt" in task["test-platform"]:
+ task["treeherder-machine-platform"] = "linux64/asan"
+ elif "linux1804-asan/opt" in task["test-platform"]:
+ task["treeherder-machine-platform"] = "linux1804-64/asan"
+ else:
+ task["treeherder-machine-platform"] = translation.get(
+ task["build-platform"], task["test-platform"]
+ )
+ yield task
+
+
+@transforms.add
+def set_download_symbols(config, tasks):
+ """In general, we download symbols immediately for debug builds, but only
+ on demand for everything else. ASAN builds shouldn't download
+ symbols since they don't product symbol zips see bug 1283879"""
+ for task in tasks:
+ if task["test-platform"].split("/")[-1] == "debug":
+ task["mozharness"]["download-symbols"] = True
+ elif "asan" in task["build-platform"] or "tsan" in task["build-platform"]:
+ if "download-symbols" in task["mozharness"]:
+ del task["mozharness"]["download-symbols"]
+ else:
+ task["mozharness"]["download-symbols"] = "ondemand"
+ yield task
+
+
+@transforms.add
+def handle_keyed_by(config, tasks):
+ """Resolve fields that can be keyed by platform, etc."""
+ fields = [
+ "instance-size",
+ "docker-image",
+ "max-run-time",
+ "chunks",
+ "suite",
+ "run-on-projects",
+ "os-groups",
+ "run-as-administrator",
+ "workdir",
+ "worker-type",
+ "virtualization",
+ "fetches.fetch",
+ "fetches.toolchain",
+ "target",
+ "webrender-run-on-projects",
+ "mozharness.requires-signed-builds",
+ "build-signing-label",
+ ]
+ for task in tasks:
+ for field in fields:
+ resolve_keyed_by(
+ task,
+ field,
+ item_name=task["test-name"],
+ enforce_single_match=False,
+ project=config.params["project"],
+ variant=task["attributes"].get("unittest_variant"),
+ )
+ yield task
+
+
+@transforms.add
+def set_target(config, tasks):
+ for task in tasks:
+ build_platform = task["build-platform"]
+ target = None
+ if "target" in task:
+ target = task["target"]
+ if not target:
+ if build_platform.startswith("macosx"):
+ target = "target.dmg"
+ elif build_platform.startswith("android"):
+ target = "target.apk"
+ elif build_platform.startswith("win"):
+ target = "target.zip"
+ else:
+ target = "target.tar.bz2"
+
+ if isinstance(target, dict):
+ # TODO Remove hardcoded mobile artifact prefix
+ index_url = get_index_url(target["index"])
+ installer_url = "{}/artifacts/public/{}".format(index_url, target["name"])
+ task["mozharness"]["installer-url"] = installer_url
+ else:
+ task["mozharness"]["build-artifact-name"] = get_artifact_path(task, target)
+
+ yield task
+
+
+@transforms.add
+def setup_browsertime(config, tasks):
+ """Configure browsertime dependencies for Raptor pageload tests that have
+ `--browsertime` extra option."""
+
+ for task in tasks:
+ # We need to make non-trivial changes to various fetches, and our
+ # `by-test-platform` may not be "compatible" with existing
+ # `by-test-platform` filters. Therefore we do everything after
+ # `handle_keyed_by` so that existing fields have been resolved down to
+ # simple lists. But we use the `by-test-platform` machinery to express
+ # filters so that when the time comes to move browsertime into YAML
+ # files, the transition is straight-forward.
+ extra_options = task.get("mozharness", {}).get("extra-options", [])
+
+ if task["suite"] != "raptor" or "--webext" in extra_options:
+ yield task
+ continue
+
+ ts = {
+ "by-test-platform": {
+ "android.*": ["browsertime", "linux64-geckodriver", "linux64-node-16"],
+ "linux.*": ["browsertime", "linux64-geckodriver", "linux64-node-16"],
+ "macosx.*": ["browsertime", "macosx64-geckodriver", "macosx64-node-16"],
+ "windows.*aarch64.*": [
+ "browsertime",
+ "win32-geckodriver",
+ "win32-node-16",
+ ],
+ "windows.*-32.*": ["browsertime", "win32-geckodriver", "win32-node-16"],
+ "windows.*-64.*": ["browsertime", "win64-geckodriver", "win64-node-16"],
+ },
+ }
+
+ task.setdefault("fetches", {}).setdefault("toolchain", []).extend(
+ evaluate_keyed_by(ts, "fetches.toolchain", task)
+ )
+
+ fs = {
+ "by-test-platform": {
+ "android.*": ["linux64-ffmpeg-4.4.1"],
+ "linux.*": ["linux64-ffmpeg-4.4.1"],
+ "macosx.*": ["mac64-ffmpeg-4.4.1"],
+ "windows.*aarch64.*": ["win64-ffmpeg-4.4.1"],
+ "windows.*-32.*": ["win64-ffmpeg-4.4.1"],
+ "windows.*-64.*": ["win64-ffmpeg-4.4.1"],
+ },
+ }
+
+ cd_fetches = {
+ "android.*": [
+ "linux64-chromedriver-109",
+ "linux64-chromedriver-110",
+ "linux64-chromedriver-111",
+ "linux64-chromedriver-112",
+ "linux64-chromedriver-113",
+ "linux64-chromedriver-114",
+ ],
+ "linux.*": [
+ "linux64-chromedriver-112",
+ "linux64-chromedriver-113",
+ "linux64-chromedriver-114",
+ ],
+ "macosx.*": [
+ "mac64-chromedriver-109",
+ "mac64-chromedriver-110",
+ "mac64-chromedriver-111",
+ "mac64-chromedriver-112",
+ "mac64-chromedriver-113",
+ "mac64-chromedriver-114",
+ ],
+ "windows.*aarch64.*": [
+ "win32-chromedriver-112",
+ "win32-chromedriver-113",
+ "win32-chromedriver-114",
+ ],
+ "windows.*-32.*": [
+ "win32-chromedriver-112",
+ "win32-chromedriver-113",
+ "win32-chromedriver-114",
+ ],
+ "windows.*-64.*": [
+ "win32-chromedriver-112",
+ "win32-chromedriver-113",
+ "win32-chromedriver-114",
+ ],
+ }
+
+ chromium_fetches = {
+ "linux.*": ["linux64-chromium"],
+ "macosx.*": ["mac-chromium"],
+ "windows.*aarch64.*": ["win32-chromium"],
+ "windows.*-32.*": ["win32-chromium"],
+ "windows.*-64.*": ["win64-chromium"],
+ }
+
+ cd_extracted_name = {
+ "windows": "{}chromedriver.exe",
+ "mac": "{}chromedriver",
+ "default": "{}chromedriver",
+ }
+
+ if "--app=chrome" in extra_options or "--app=chrome-m" in extra_options:
+ # Only add the chromedriver fetches when chrome is running
+ for platform in cd_fetches:
+ fs["by-test-platform"][platform].extend(cd_fetches[platform])
+ if "--app=chromium" in extra_options or "--app=custom-car" in extra_options:
+ for platform in chromium_fetches:
+ fs["by-test-platform"][platform].extend(chromium_fetches[platform])
+
+ # The chromedrivers for chromium are repackaged into the archives
+ # that we get the chromium binary from so we always have a compatible
+ # version.
+ cd_extracted_name = {
+ "windows": "chrome-win/chromedriver.exe",
+ "mac": "chrome-mac/chromedriver",
+ "default": "chrome-linux/chromedriver",
+ }
+
+ # Disable the Raptor install step
+ if "--app=chrome-m" in extra_options:
+ extra_options.append("--noinstall")
+
+ task.setdefault("fetches", {}).setdefault("fetch", []).extend(
+ evaluate_keyed_by(fs, "fetches.fetch", task)
+ )
+
+ extra_options.extend(
+ (
+ "--browsertime-browsertimejs",
+ "$MOZ_FETCHES_DIR/browsertime/node_modules/browsertime/bin/browsertime.js",
+ )
+ ) # noqa: E501
+
+ eos = {
+ "by-test-platform": {
+ "windows.*": [
+ "--browsertime-node",
+ "$MOZ_FETCHES_DIR/node/node.exe",
+ "--browsertime-geckodriver",
+ "$MOZ_FETCHES_DIR/geckodriver.exe",
+ "--browsertime-chromedriver",
+ "$MOZ_FETCHES_DIR/" + cd_extracted_name["windows"],
+ "--browsertime-ffmpeg",
+ "$MOZ_FETCHES_DIR/ffmpeg-4.4.1-full_build/bin/ffmpeg.exe",
+ ],
+ "macosx.*": [
+ "--browsertime-node",
+ "$MOZ_FETCHES_DIR/node/bin/node",
+ "--browsertime-geckodriver",
+ "$MOZ_FETCHES_DIR/geckodriver",
+ "--browsertime-chromedriver",
+ "$MOZ_FETCHES_DIR/" + cd_extracted_name["mac"],
+ "--browsertime-ffmpeg",
+ "$MOZ_FETCHES_DIR/ffmpeg-macos/ffmpeg",
+ ],
+ "default": [
+ "--browsertime-node",
+ "$MOZ_FETCHES_DIR/node/bin/node",
+ "--browsertime-geckodriver",
+ "$MOZ_FETCHES_DIR/geckodriver",
+ "--browsertime-chromedriver",
+ "$MOZ_FETCHES_DIR/" + cd_extracted_name["default"],
+ "--browsertime-ffmpeg",
+ "$MOZ_FETCHES_DIR/ffmpeg-4.4.1-i686-static/ffmpeg",
+ ],
+ }
+ }
+
+ extra_options.extend(evaluate_keyed_by(eos, "mozharness.extra-options", task))
+
+ yield task
+
+
+def get_mobile_project(task):
+ """Returns the mobile project of the specified task or None."""
+
+ if not task["build-platform"].startswith("android"):
+ return
+
+ mobile_projects = ("fenix", "geckoview", "refbrow", "chrome-m")
+
+ for name in mobile_projects:
+ if name in task["test-name"]:
+ return name
+
+ target = None
+ if "target" in task:
+ resolve_keyed_by(
+ task, "target", item_name=task["test-name"], enforce_single_match=False
+ )
+ target = task["target"]
+ if target:
+ if isinstance(target, dict):
+ target = target["name"]
+
+ for name in mobile_projects:
+ if name in target:
+ return name
+
+ return None
+
+
+@transforms.add
+def disable_wpt_timeouts_on_autoland(config, tasks):
+ """do not run web-platform-tests that are expected TIMEOUT on autoland"""
+ for task in tasks:
+ if (
+ "web-platform-tests" in task["test-name"]
+ and config.params["project"] == "autoland"
+ ):
+ task["mozharness"].setdefault("extra-options", []).append("--skip-timeout")
+ yield task
+
+
+@transforms.add
+def enable_code_coverage(config, tasks):
+ """Enable code coverage for the ccov build-platforms"""
+ for task in tasks:
+ if "ccov" in task["build-platform"]:
+ # Do not run tests on fuzzing builds
+ if "fuzzing" in task["build-platform"]:
+ task["run-on-projects"] = []
+ continue
+
+ # Skip this transform for android code coverage builds.
+ if "android" in task["build-platform"]:
+ task.setdefault("fetches", {}).setdefault("toolchain", []).append(
+ "linux64-grcov"
+ )
+ task["mozharness"].setdefault("extra-options", []).append(
+ "--java-code-coverage"
+ )
+ yield task
+ continue
+ task["mozharness"].setdefault("extra-options", []).append("--code-coverage")
+ task["instance-size"] = "xlarge"
+
+ # Temporarily disable Mac tests on mozilla-central
+ if "mac" in task["build-platform"]:
+ task["run-on-projects"] = []
+
+ # Ensure we always run on the projects defined by the build, unless the test
+ # is try only or shouldn't run at all.
+ if task["run-on-projects"] not in [[]]:
+ task["run-on-projects"] = "built-projects"
+
+ # Ensure we don't optimize test suites out.
+ # We always want to run all test suites for coverage purposes.
+ task.pop("schedules-component", None)
+ task.pop("when", None)
+ task["optimization"] = None
+
+ # Add a toolchain and a fetch task for the grcov binary.
+ if any(p in task["build-platform"] for p in ("linux", "osx", "win")):
+ task.setdefault("fetches", {})
+ task["fetches"].setdefault("fetch", [])
+ task["fetches"].setdefault("toolchain", [])
+ task["fetches"].setdefault("build", [])
+
+ if "linux" in task["build-platform"]:
+ task["fetches"]["toolchain"].append("linux64-grcov")
+ elif "osx" in task["build-platform"]:
+ task["fetches"]["toolchain"].append("macosx64-grcov")
+ elif "win" in task["build-platform"]:
+ task["fetches"]["toolchain"].append("win64-grcov")
+
+ task["fetches"]["build"].append({"artifact": "target.mozinfo.json"})
+
+ if "talos" in task["test-name"]:
+ task["max-run-time"] = 7200
+ if "linux" in task["build-platform"]:
+ task["docker-image"] = {"in-tree": "ubuntu1804-test"}
+ task["mozharness"]["extra-options"].append("--add-option")
+ task["mozharness"]["extra-options"].append("--cycles,1")
+ task["mozharness"]["extra-options"].append("--add-option")
+ task["mozharness"]["extra-options"].append("--tppagecycles,1")
+ task["mozharness"]["extra-options"].append("--add-option")
+ task["mozharness"]["extra-options"].append("--no-upload-results")
+ task["mozharness"]["extra-options"].append("--add-option")
+ task["mozharness"]["extra-options"].append("--tptimeout,15000")
+ if "raptor" in task["test-name"]:
+ task["max-run-time"] = 1800
+ yield task
+
+
+@transforms.add
+def handle_run_on_projects(config, tasks):
+ """Handle translating `built-projects` appropriately"""
+ for task in tasks:
+ if task["run-on-projects"] == "built-projects":
+ task["run-on-projects"] = task["build-attributes"].get(
+ "run_on_projects", ["all"]
+ )
+
+ if task.pop("built-projects-only", False):
+ built_projects = set(
+ task["build-attributes"].get("run_on_projects", {"all"})
+ )
+ run_on_projects = set(task.get("run-on-projects", set()))
+
+ # If 'all' exists in run-on-projects, then the intersection of both
+ # is built-projects. Similarly if 'all' exists in built-projects,
+ # the intersection is run-on-projects (so do nothing). When neither
+ # contains 'all', take the actual set intersection.
+ if "all" in run_on_projects:
+ task["run-on-projects"] = sorted(built_projects)
+ elif "all" not in built_projects:
+ task["run-on-projects"] = sorted(run_on_projects & built_projects)
+ yield task
+
+
+@transforms.add
+def handle_tier(config, tasks):
+ """Set the tier based on policy for all test descriptions that do not
+ specify a tier otherwise."""
+ for task in tasks:
+ if "tier" in task:
+ resolve_keyed_by(
+ task,
+ "tier",
+ item_name=task["test-name"],
+ variant=task["attributes"].get("unittest_variant"),
+ enforce_single_match=False,
+ )
+
+ # only override if not set for the test
+ if "tier" not in task or task["tier"] == "default":
+ if task["test-platform"] in [
+ "linux64/opt",
+ "linux64/debug",
+ "linux64-shippable/opt",
+ "linux64-devedition/opt",
+ "linux64-asan/opt",
+ "linux64-qr/opt",
+ "linux64-qr/debug",
+ "linux64-shippable-qr/opt",
+ "linux1804-64/opt",
+ "linux1804-64/debug",
+ "linux1804-64-shippable/opt",
+ "linux1804-64-devedition/opt",
+ "linux1804-64-qr/opt",
+ "linux1804-64-qr/debug",
+ "linux1804-64-shippable-qr/opt",
+ "linux1804-64-asan-qr/opt",
+ "linux1804-64-tsan-qr/opt",
+ "windows7-32-qr/debug",
+ "windows7-32-qr/opt",
+ "windows7-32-devedition-qr/opt",
+ "windows7-32-shippable-qr/opt",
+ "windows10-32-qr/debug",
+ "windows10-32-qr/opt",
+ "windows10-32-shippable-qr/opt",
+ "windows10-32-2004-qr/debug",
+ "windows10-32-2004-qr/opt",
+ "windows10-32-2004-shippable-qr/opt",
+ "windows10-aarch64-qr/opt",
+ "windows10-64/debug",
+ "windows10-64/opt",
+ "windows10-64-shippable/opt",
+ "windows10-64-devedition/opt",
+ "windows10-64-qr/opt",
+ "windows10-64-qr/debug",
+ "windows10-64-shippable-qr/opt",
+ "windows10-64-devedition-qr/opt",
+ "windows10-64-asan-qr/opt",
+ "windows10-64-2004-qr/opt",
+ "windows10-64-2004-qr/debug",
+ "windows10-64-2004-shippable-qr/opt",
+ "windows10-64-2004-devedition-qr/opt",
+ "windows10-64-2004-asan-qr/opt",
+ "windows11-32-2009-qr/debug",
+ "windows11-32-2009-qr/opt",
+ "windows11-32-2009-shippable-qr/opt",
+ "windows11-64-2009-qr/opt",
+ "windows11-64-2009-qr/debug",
+ "windows11-64-2009-shippable-qr/opt",
+ "windows11-64-2009-devedition-qr/opt",
+ "windows11-64-2009-asan-qr/opt",
+ "macosx1015-64/opt",
+ "macosx1015-64/debug",
+ "macosx1015-64-shippable/opt",
+ "macosx1015-64-devedition/opt",
+ "macosx1015-64-devedition-qr/opt",
+ "macosx1015-64-qr/opt",
+ "macosx1015-64-shippable-qr/opt",
+ "macosx1015-64-qr/debug",
+ "macosx1100-64-shippable-qr/opt",
+ "macosx1100-64-qr/debug",
+ "android-em-7.0-x86_64-shippable/opt",
+ "android-em-7.0-x86_64-shippable-lite/opt",
+ "android-em-7.0-x86_64/debug",
+ "android-em-7.0-x86_64/debug-isolated-process",
+ "android-em-7.0-x86_64/opt",
+ "android-em-7.0-x86_64-lite/opt",
+ "android-em-7.0-x86-shippable/opt",
+ "android-em-7.0-x86-shippable-lite/opt",
+ "android-em-7.0-x86_64-shippable-qr/opt",
+ "android-em-7.0-x86_64-qr/debug",
+ "android-em-7.0-x86_64-qr/debug-isolated-process",
+ "android-em-7.0-x86_64-qr/opt",
+ "android-em-7.0-x86_64-shippable-lite-qr/opt",
+ "android-em-7.0-x86_64-lite-qr/debug",
+ "android-em-7.0-x86_64-lite-qr/opt",
+ ]:
+ task["tier"] = 1
+ else:
+ task["tier"] = 2
+
+ yield task
+
+
+@transforms.add
+def apply_raptor_tier_optimization(config, tasks):
+ for task in tasks:
+ if task["suite"] != "raptor":
+ yield task
+ continue
+
+ if "regression-tests" in task["test-name"]:
+ # Don't optimize the regression tests
+ yield task
+ continue
+
+ if not task["test-platform"].startswith("android-hw"):
+ task["optimization"] = {"skip-unless-expanded": None}
+ if task["tier"] > 1:
+ task["optimization"] = {"skip-unless-backstop": None}
+
+ if task["attributes"].get("unittest_variant"):
+ task["tier"] = max(task["tier"], 2)
+ yield task
+
+
+@transforms.add
+def disable_try_only_platforms(config, tasks):
+ """Turns off platforms that should only run on try."""
+ try_only_platforms = ()
+ for task in tasks:
+ if any(re.match(k + "$", task["test-platform"]) for k in try_only_platforms):
+ task["run-on-projects"] = []
+ yield task
+
+
+@transforms.add
+def ensure_spi_disabled_on_all_but_spi(config, tasks):
+ for task in tasks:
+ variant = task["attributes"].get("unittest_variant", "")
+ has_no_setpref = ("gtest", "cppunit", "jittest", "junit", "raptor")
+
+ if (
+ all(s not in task["suite"] for s in has_no_setpref)
+ and "socketprocess" not in variant
+ ):
+ task["mozharness"]["extra-options"].append(
+ "--setpref=media.peerconnection.mtransport_process=false"
+ )
+ task["mozharness"]["extra-options"].append(
+ "--setpref=network.process.enabled=false"
+ )
+
+ yield task
+
+
+test_setting_description_schema = Schema(
+ {
+ Required("_hash"): str,
+ "platform": {
+ Required("arch"): Any("32", "64", "aarch64", "arm7", "x86_64"),
+ Required("os"): {
+ Required("name"): Any("android", "linux", "macosx", "windows"),
+ Required("version"): str,
+ Optional("build"): str,
+ },
+ Optional("device"): str,
+ Optional("display"): "wayland",
+ Optional("machine"): Any("ref-hw-2017"),
+ },
+ "build": {
+ Required("type"): Any("opt", "debug", "debug-isolated-process"),
+ Any(
+ "asan",
+ "ccov",
+ "clang-trunk",
+ "devedition",
+ "domstreams",
+ "lite",
+ "mingwclang",
+ "nightlyasrelease",
+ "shippable",
+ "tsan",
+ ): bool,
+ },
+ "runtime": {Any(*list(TEST_VARIANTS.keys()) + ["1proc"]): bool},
+ },
+ check=False,
+)
+"""Schema test settings must conform to. Validated by
+:py:func:`~test.test_mozilla_central.test_test_setting`"""
+
+
+@transforms.add
+def set_test_setting(config, tasks):
+ """A test ``setting`` is the set of configuration that uniquely
+ distinguishes a test task from other tasks that run the same suite
+ (ignoring chunks).
+
+ There are three different types of information that make up a setting:
+
+ 1. Platform - Information describing the underlying platform tests run on,
+ e.g, OS, CPU architecture, etc.
+
+ 2. Build - Information describing the build being tested, e.g build type,
+ ccov, asan/tsan, etc.
+
+ 3. Runtime - Information describing which runtime parameters are enabled,
+ e.g, prefs, environment variables, etc.
+
+ This transform adds a ``test-setting`` object to the ``extra`` portion of
+ all test tasks, of the form:
+
+ .. code-block::
+
+ {
+ "platform": { ... },
+ "build": { ... },
+ "runtime": { ... }
+ }
+
+ This information could be derived from the label, but consuming this
+ object is less brittle.
+ """
+ # Some attributes have a dash in them which complicates parsing. Ensure we
+ # don't split them up.
+ # TODO Rename these so they don't have a dash.
+ dash_attrs = [
+ "clang-trunk",
+ "ref-hw-2017",
+ ]
+ dash_token = "%D%"
+ platform_re = re.compile(r"(\D+)(\d*)")
+
+ for task in tasks:
+ setting = {
+ "platform": {
+ "os": {},
+ },
+ "build": {},
+ "runtime": {},
+ }
+
+ # parse platform and build information out of 'test-platform'
+ platform, build_type = task["test-platform"].split("/", 1)
+
+ # ensure dashed attributes don't get split up
+ for attr in dash_attrs:
+ if attr in platform:
+ platform = platform.replace(attr, attr.replace("-", dash_token))
+
+ parts = platform.split("-")
+
+ # restore dashes now that split is finished
+ for i, part in enumerate(parts):
+ if dash_token in part:
+ parts[i] = part.replace(dash_token, "-")
+
+ match = platform_re.match(parts.pop(0))
+ assert match
+ os_name, os_version = match.groups()
+
+ device = machine = os_build = display = None
+ if os_name == "android":
+ device = parts.pop(0)
+ if device == "hw":
+ device = parts.pop(0)
+ else:
+ device = "emulator"
+
+ os_version = parts.pop(0)
+ if parts[0].isdigit():
+ os_version = f"{os_version}.{parts.pop(0)}"
+
+ if parts[0] == "android":
+ parts.pop(0)
+
+ arch = parts.pop(0)
+
+ else:
+ arch = parts.pop(0)
+ if parts[0].isdigit():
+ os_build = parts.pop(0)
+
+ if parts[0] == "ref-hw-2017":
+ machine = parts.pop(0)
+
+ if parts[0] == "wayland":
+ display = parts.pop(0)
+
+ # It's not always possible to glean the exact architecture used from
+ # the task, so sometimes this will just be set to "32" or "64".
+ setting["platform"]["arch"] = arch
+ setting["platform"]["os"] = {
+ "name": os_name,
+ "version": os_version,
+ }
+
+ if os_build:
+ setting["platform"]["os"]["build"] = os_build
+
+ if device:
+ setting["platform"]["device"] = device
+
+ if machine:
+ setting["platform"]["machine"] = machine
+
+ if display:
+ setting["platform"]["display"] = display
+
+ # parse remaining parts as build attributes
+ setting["build"]["type"] = build_type
+ while parts:
+ attr = parts.pop(0)
+ if attr == "qr":
+ # all tasks are webrender now, no need to store it
+ continue
+
+ setting["build"][attr] = True
+
+ unittest_variant = task["attributes"].get("unittest_variant")
+ if unittest_variant:
+ for variant in unittest_variant.split("+"):
+ setting["runtime"][variant] = True
+
+ # add a hash of the setting object for easy comparisons
+ setting["_hash"] = hashlib.sha256(
+ json.dumps(setting, sort_keys=True).encode("utf-8")
+ ).hexdigest()[:12]
+
+ task["test-setting"] = ReadOnlyDict(**setting)
+ yield task
+
+
+@transforms.add
+def allow_software_gl_layers(config, tasks):
+ """
+ Handle the "allow-software-gl-layers" property for platforms where it
+ applies.
+ """
+ for task in tasks:
+ if task.get("allow-software-gl-layers"):
+ # This should be set always once bug 1296086 is resolved.
+ task["mozharness"].setdefault("extra-options", []).append(
+ "--allow-software-gl-layers"
+ )
+
+ yield task
+
+
+@transforms.add
+def enable_webrender(config, tasks):
+ """
+ Handle the "webrender" property by passing a flag to mozharness if it is
+ enabled.
+ """
+ for task in tasks:
+ # TODO: this was all conditionally in enable_webrender- do we still need this?
+ extra_options = task["mozharness"].setdefault("extra-options", [])
+ # We only want to 'setpref' on tests that have a profile
+ if not task["attributes"]["unittest_category"] in [
+ "cppunittest",
+ "geckoview-junit",
+ "gtest",
+ "jittest",
+ "raptor",
+ ]:
+ extra_options.append("--setpref=layers.d3d11.enable-blacklist=false")
+
+ yield task
+
+
+@transforms.add
+def set_schedules_for_webrender_android(config, tasks):
+ """android-hw has limited resources, we need webrender on phones"""
+ for task in tasks:
+ if task["suite"] in ["crashtest", "reftest"] and task[
+ "test-platform"
+ ].startswith("android-hw"):
+ task["schedules-component"] = "android-hw-gfx"
+ yield task
+
+
+@transforms.add
+def set_retry_exit_status(config, tasks):
+ """Set the retry exit status to TBPL_RETRY, the value returned by mozharness
+ scripts to indicate a transient failure that should be retried."""
+ for task in tasks:
+ # add in 137 as it is an error with GCP workers
+ task["retry-exit-status"] = [4, 137]
+ yield task
+
+
+@transforms.add
+def set_profile(config, tasks):
+ """Set profiling mode for tests."""
+ ttconfig = config.params["try_task_config"]
+ profile = ttconfig.get("gecko-profile", False)
+ settings = (
+ "gecko-profile-interval",
+ "gecko-profile-entries",
+ "gecko-profile-threads",
+ "gecko-profile-features",
+ )
+
+ for task in tasks:
+ if profile and task["suite"] in ["talos", "raptor"]:
+ extras = task["mozharness"]["extra-options"]
+ extras.append("--gecko-profile")
+ for setting in settings:
+ value = ttconfig.get(setting)
+ if value is not None:
+ # These values can contain spaces (eg the "DOM Worker"
+ # thread) and the command is constructed in different,
+ # incompatible ways on different platforms.
+
+ if task["test-platform"].startswith("win"):
+ # Double quotes for Windows (single won't work).
+ extras.append("--" + setting + '="' + str(value) + '"')
+ else:
+ # Other platforms keep things as separate values,
+ # rather than joining with spaces.
+ extras.append("--" + setting + "=" + str(value))
+
+ yield task
+
+
+@transforms.add
+def set_tag(config, tasks):
+ """Set test for a specific tag."""
+ tag = None
+ if config.params["try_mode"] == "try_option_syntax":
+ tag = config.params["try_options"]["tag"]
+ for task in tasks:
+ if tag:
+ task["mozharness"]["extra-options"].extend(["--tag", tag])
+ yield task
+
+
+@transforms.add
+def set_test_type(config, tasks):
+ types = ["mochitest", "reftest", "talos", "raptor", "geckoview-junit", "gtest"]
+ for task in tasks:
+ for test_type in types:
+ if test_type in task["suite"] and "web-platform" not in task["suite"]:
+ task.setdefault("tags", {})["test-type"] = test_type
+ yield task
+
+
+@transforms.add
+def set_schedules_components(config, tasks):
+ for task in tasks:
+ if "optimization" in task or "when" in task:
+ yield task
+ continue
+
+ category = task["attributes"]["unittest_category"]
+ schedules = task.get("schedules-component", category)
+ if isinstance(schedules, str):
+ schedules = [schedules]
+
+ schedules = set(schedules)
+ if schedules & set(INCLUSIVE_COMPONENTS):
+ # if this is an "inclusive" test, then all files which might
+ # cause it to run are annotated with SCHEDULES in moz.build,
+ # so do not include the platform or any other components here
+ task["schedules-component"] = sorted(schedules)
+ yield task
+ continue
+
+ schedules.add(category)
+ schedules.add(platform_family(task["build-platform"]))
+
+ task["schedules-component"] = sorted(schedules)
+ yield task
+
+
+@transforms.add
+def enable_parallel_marking_in_tsan_tests(config, tasks):
+ """Enable parallel marking in TSAN tests"""
+ skip_list = ["cppunittest", "gtest"]
+ for task in tasks:
+ if "-tsan-" in task["test-platform"]:
+ if task["suite"] not in skip_list:
+ extra_options = task["mozharness"].setdefault("extra-options", [])
+ extra_options.append(
+ "--setpref=javascript.options.mem.gc_parallel_marking=true"
+ )
+
+ yield task
+
+
+@transforms.add
+def apply_windows7_optimization(config, tasks):
+ for task in tasks:
+ if task["test-platform"].startswith("windows7"):
+ task["optimization"] = {"skip-unless-backstop": None}
+
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/test/raptor.py b/taskcluster/gecko_taskgraph/transforms/test/raptor.py
new file mode 100644
index 0000000000..3eac5dd9ef
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/test/raptor.py
@@ -0,0 +1,317 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import Schema, optionally_keyed_by, resolve_keyed_by
+from taskgraph.util.treeherder import join_symbol, split_symbol
+from voluptuous import Extra, Optional, Required
+
+from gecko_taskgraph.transforms.test import test_description_schema
+from gecko_taskgraph.util.copy_task import copy_task
+
+transforms = TransformSequence()
+task_transforms = TransformSequence()
+
+raptor_description_schema = Schema(
+ {
+ # Raptor specific configs.
+ Optional("raptor"): {
+ Optional("activity"): optionally_keyed_by("app", str),
+ Optional("apps"): optionally_keyed_by("test-platform", "subtest", [str]),
+ Optional("binary-path"): optionally_keyed_by("app", str),
+ Optional("run-visual-metrics"): optionally_keyed_by("app", bool),
+ Optional("subtests"): optionally_keyed_by("app", "test-platform", list),
+ Optional("test"): str,
+ Optional("test-url-param"): optionally_keyed_by(
+ "subtest", "test-platform", str
+ ),
+ },
+ # Configs defined in the 'test_description_schema'.
+ Optional("max-run-time"): optionally_keyed_by(
+ "app", "subtest", "test-platform", test_description_schema["max-run-time"]
+ ),
+ Optional("run-on-projects"): optionally_keyed_by(
+ "app",
+ "test-name",
+ "raptor.test",
+ "subtest",
+ "variant",
+ test_description_schema["run-on-projects"],
+ ),
+ Optional("variants"): test_description_schema["variants"],
+ Optional("target"): optionally_keyed_by(
+ "app", test_description_schema["target"]
+ ),
+ Optional("tier"): optionally_keyed_by(
+ "app", "raptor.test", "subtest", "variant", test_description_schema["tier"]
+ ),
+ Required("test-name"): test_description_schema["test-name"],
+ Required("test-platform"): test_description_schema["test-platform"],
+ Required("require-signed-extensions"): test_description_schema[
+ "require-signed-extensions"
+ ],
+ Required("treeherder-symbol"): test_description_schema["treeherder-symbol"],
+ # Any unrecognized keys will be validated against the test_description_schema.
+ Extra: object,
+ }
+)
+
+transforms.add_validate(raptor_description_schema)
+
+
+@transforms.add
+def set_defaults(config, tests):
+ for test in tests:
+ test.setdefault("raptor", {}).setdefault("run-visual-metrics", False)
+ yield test
+
+
+@transforms.add
+def split_apps(config, tests):
+ app_symbols = {
+ "chrome": "ChR",
+ "chrome-m": "ChR",
+ "chromium": "Cr",
+ "fenix": "fenix",
+ "refbrow": "refbrow",
+ "safari": "Saf",
+ "custom-car": "CaR",
+ }
+
+ for test in tests:
+ apps = test["raptor"].pop("apps", None)
+ if not apps:
+ yield test
+ continue
+
+ for app in apps:
+ # Ignore variants for non-Firefox or non-mobile applications.
+ if app not in ["firefox", "geckoview", "fenix", "chrome-m"] and test[
+ "attributes"
+ ].get("unittest_variant"):
+ continue
+
+ atest = copy_task(test)
+ suffix = f"-{app}"
+ atest["app"] = app
+ atest["description"] += f" on {app.capitalize()}"
+
+ name = atest["test-name"] + suffix
+ atest["test-name"] = name
+ atest["try-name"] = name
+
+ if app in app_symbols:
+ group, symbol = split_symbol(atest["treeherder-symbol"])
+ group += f"-{app_symbols[app]}"
+ atest["treeherder-symbol"] = join_symbol(group, symbol)
+
+ yield atest
+
+
+@transforms.add
+def handle_keyed_by_prereqs(config, tests):
+ """
+ Only resolve keys for prerequisite fields here since the
+ these keyed-by options might have keyed-by fields
+ as well.
+ """
+ for test in tests:
+ resolve_keyed_by(test, "raptor.subtests", item_name=test["test-name"])
+ yield test
+
+
+@transforms.add
+def split_raptor_subtests(config, tests):
+ for test in tests:
+ # For tests that have 'subtests' listed, we want to create a separate
+ # test job for every subtest (i.e. split out each page-load URL into its own job)
+ subtests = test["raptor"].pop("subtests", None)
+ if not subtests:
+ yield test
+ continue
+
+ for chunk_number, subtest in enumerate(subtests):
+
+ # Create new test job
+ chunked = copy_task(test)
+ chunked["chunk-number"] = 1 + chunk_number
+ chunked["subtest"] = subtest
+ chunked["subtest-symbol"] = subtest
+ if isinstance(chunked["subtest"], list):
+ chunked["subtest"] = subtest[0]
+ chunked["subtest-symbol"] = subtest[1]
+ chunked = resolve_keyed_by(
+ chunked, "tier", chunked["subtest"], defer=["variant"]
+ )
+ yield chunked
+
+
+@transforms.add
+def handle_keyed_by(config, tests):
+ fields = [
+ "raptor.test-url-param",
+ "raptor.run-visual-metrics",
+ "raptor.activity",
+ "raptor.binary-path",
+ "limit-platforms",
+ "fetches.fetch",
+ "max-run-time",
+ "run-on-projects",
+ "target",
+ "tier",
+ ]
+ for test in tests:
+ for field in fields:
+ resolve_keyed_by(
+ test, field, item_name=test["test-name"], defer=["variant"]
+ )
+ yield test
+
+
+@transforms.add
+def split_page_load_by_url(config, tests):
+ for test in tests:
+ # `chunk-number` and 'subtest' only exists when the task had a
+ # definition for `subtests`
+ chunk_number = test.pop("chunk-number", None)
+ subtest = test.get(
+ "subtest"
+ ) # don't pop as some tasks need this value after splitting variants
+ subtest_symbol = test.pop("subtest-symbol", None)
+
+ if not chunk_number or not subtest:
+ yield test
+ continue
+
+ if len(subtest_symbol) > 10 and "ytp" not in subtest_symbol:
+ raise Exception(
+ "Treeherder symbol %s is larger than 10 char! Please use a different symbol."
+ % subtest_symbol
+ )
+
+ if test["test-name"].startswith("browsertime-"):
+ test["raptor"]["test"] = subtest
+
+ # Remove youtube-playback in the test name to avoid duplication
+ test["test-name"] = test["test-name"].replace("youtube-playback-", "")
+ else:
+ # Use full test name if running on webextension
+ test["raptor"]["test"] = "raptor-tp6-" + subtest + "-{}".format(test["app"])
+
+ # Only run the subtest/single URL
+ test["test-name"] += f"-{subtest}"
+ test["try-name"] += f"-{subtest}"
+
+ # Set treeherder symbol and description
+ group, _ = split_symbol(test["treeherder-symbol"])
+ test["treeherder-symbol"] = join_symbol(group, subtest_symbol)
+ test["description"] += f" on {subtest}"
+
+ yield test
+
+
+@transforms.add
+def modify_extra_options(config, tests):
+ for test in tests:
+ test_name = test.get("test-name", None)
+
+ if "first-install" in test_name:
+ # First-install tests should never use conditioned profiles
+ extra_options = test.setdefault("mozharness", {}).setdefault(
+ "extra-options", []
+ )
+
+ for i, opt in enumerate(extra_options):
+ if "conditioned-profile" in opt:
+ if i:
+ extra_options.pop(i)
+ break
+
+ if "-widevine" in test_name:
+ extra_options = test.setdefault("mozharness", {}).setdefault(
+ "extra-options", []
+ )
+ for i, opt in enumerate(extra_options):
+ if "--conditioned-profile=settled" in opt:
+ if i:
+ extra_options[i] += "-youtube"
+ break
+
+ if "unity-webgl" in test_name:
+ # Disable the extra-profiler-run for unity-webgl tests.
+ extra_options = test.setdefault("mozharness", {}).setdefault(
+ "extra-options", []
+ )
+ for i, opt in enumerate(extra_options):
+ if "extra-profiler-run" in opt:
+ if i:
+ extra_options.pop(i)
+ break
+
+ yield test
+
+
+@transforms.add
+def add_extra_options(config, tests):
+ for test in tests:
+ mozharness = test.setdefault("mozharness", {})
+ if test.get("app", "") == "chrome-m":
+ mozharness["tooltool-downloads"] = "internal"
+
+ extra_options = mozharness.setdefault("extra-options", [])
+
+ # Adding device name if we're on android
+ test_platform = test["test-platform"]
+ if test_platform.startswith("android-hw-g5"):
+ extra_options.append("--device-name=g5")
+ elif test_platform.startswith("android-hw-a51"):
+ extra_options.append("--device-name=a51")
+ elif test_platform.startswith("android-hw-p5"):
+ extra_options.append("--device-name=p5_aarch64")
+
+ if test["raptor"].pop("run-visual-metrics", False):
+ extra_options.append("--browsertime-video")
+ extra_options.append("--browsertime-visualmetrics")
+ test["attributes"]["run-visual-metrics"] = True
+
+ if "app" in test:
+ extra_options.append(
+ "--app={}".format(test["app"])
+ ) # don't pop as some tasks need this value after splitting variants
+
+ if "activity" in test["raptor"]:
+ extra_options.append("--activity={}".format(test["raptor"].pop("activity")))
+
+ if "binary-path" in test["raptor"]:
+ extra_options.append(
+ "--binary-path={}".format(test["raptor"].pop("binary-path"))
+ )
+
+ if "test" in test["raptor"]:
+ extra_options.append("--test={}".format(test["raptor"].pop("test")))
+
+ if test["require-signed-extensions"]:
+ extra_options.append("--is-release-build")
+
+ if "test-url-param" in test["raptor"]:
+ param = test["raptor"].pop("test-url-param")
+ if not param == []:
+ extra_options.append(
+ "--test-url-params={}".format(param.replace(" ", ""))
+ )
+
+ extra_options.append("--project={}".format(config.params.get("project")))
+
+ yield test
+
+
+@task_transforms.add
+def add_scopes_and_proxy(config, tasks):
+ for task in tasks:
+ task.setdefault("worker", {})["taskcluster-proxy"] = True
+ task.setdefault("scopes", []).append(
+ "secrets:get:project/perftest/gecko/level-{level}/perftest-login"
+ )
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/test/variant.py b/taskcluster/gecko_taskgraph/transforms/test/variant.py
new file mode 100644
index 0000000000..e2fd9764e1
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/test/variant.py
@@ -0,0 +1,128 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+import datetime
+
+import jsone
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import Schema, validate_schema
+from taskgraph.util.treeherder import join_symbol, split_symbol
+from taskgraph.util.yaml import load_yaml
+from voluptuous import Any, Optional, Required
+
+import gecko_taskgraph
+from gecko_taskgraph.util.copy_task import copy_task
+from gecko_taskgraph.util.templates import merge
+
+transforms = TransformSequence()
+
+TEST_VARIANTS = load_yaml(
+ gecko_taskgraph.GECKO, "taskcluster", "ci", "test", "variants.yml"
+)
+"""List of available test variants defined."""
+
+
+variant_description_schema = Schema(
+ {
+ str: {
+ Required("description"): str,
+ Required("suffix"): str,
+ Required("component"): str,
+ Required("expiration"): str,
+ Optional("when"): {Any("$eval", "$if"): str},
+ Optional("replace"): {str: object},
+ Optional("merge"): {str: object},
+ }
+ }
+)
+"""variant description schema"""
+
+
+@transforms.add
+def split_variants(config, tasks):
+ """Splits test definitions into multiple tasks based on the `variants` key.
+
+ If `variants` are defined, the original task will be yielded along with a
+ copy of the original task for each variant defined in the list. The copies
+ will have the 'unittest_variant' attribute set.
+ """
+ validate_schema(variant_description_schema, TEST_VARIANTS, "In variants.yml:")
+
+ def find_expired_variants(variants):
+ expired = []
+
+ # do not expire on esr/beta/release
+ if config.params.get("release_type", "") in [
+ "release",
+ "beta",
+ ]:
+ return []
+
+ if "esr" in config.params.get("release_type", ""):
+ return []
+
+ today = datetime.datetime.today()
+ for variant in variants:
+
+ expiration = variants[variant]["expiration"]
+ if len(expiration.split("-")) == 1:
+ continue
+ expires_at = datetime.datetime.strptime(expiration, "%Y-%m-%d")
+ if expires_at < today:
+ expired.append(variant)
+ return expired
+
+ def remove_expired(variants, expired):
+ remaining_variants = []
+ for name in variants:
+ parts = [p for p in name.split("+") if p not in expired]
+ if len(parts) == 0:
+ continue
+
+ remaining_variants.append(name)
+ return remaining_variants
+
+ def apply_variant(variant, task):
+ task["description"] = variant["description"].format(**task)
+
+ suffix = f"-{variant['suffix']}"
+ group, symbol = split_symbol(task["treeherder-symbol"])
+ if group != "?":
+ group += suffix
+ else:
+ symbol += suffix
+ task["treeherder-symbol"] = join_symbol(group, symbol)
+
+ # This will be used to set the label and try-name in 'make_job_description'.
+ task.setdefault("variant-suffix", "")
+ task["variant-suffix"] += suffix
+
+ # Replace and/or merge the configuration.
+ task.update(variant.get("replace", {}))
+ return merge(task, variant.get("merge", {}))
+
+ expired_variants = find_expired_variants(TEST_VARIANTS)
+ for task in tasks:
+ variants = task.pop("variants", [])
+ variants = remove_expired(variants, expired_variants)
+
+ if task.pop("run-without-variant"):
+ yield copy_task(task)
+
+ for name in variants:
+ # Apply composite variants (joined by '+') in order.
+ parts = name.split("+")
+ taskv = copy_task(task)
+ for part in parts:
+ variant = TEST_VARIANTS[part]
+
+ # If any variant in a composite fails this check we skip it.
+ if "when" in variant:
+ context = {"task": task}
+ if not jsone.render(variant["when"], context):
+ break
+
+ taskv = apply_variant(variant, taskv)
+ else:
+ taskv["attributes"]["unittest_variant"] = name
+ yield taskv
diff --git a/taskcluster/gecko_taskgraph/transforms/test/worker.py b/taskcluster/gecko_taskgraph/transforms/test/worker.py
new file mode 100644
index 0000000000..0d8d72162d
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/test/worker.py
@@ -0,0 +1,201 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from taskgraph.transforms.base import TransformSequence
+
+# default worker types keyed by instance-size
+LINUX_WORKER_TYPES = {
+ "large": "t-linux-large",
+ "xlarge": "t-linux-xlarge",
+ "default": "t-linux-large",
+}
+
+# windows worker types keyed by test-platform and virtualization
+WINDOWS_WORKER_TYPES = {
+ "windows7-32-qr": {
+ "virtual": "t-win7-32",
+ "virtual-with-gpu": "t-win7-32-gpu",
+ "hardware": "t-win10-64-1803-hw",
+ },
+ "windows7-32-shippable-qr": {
+ "virtual": "t-win7-32",
+ "virtual-with-gpu": "t-win7-32-gpu",
+ "hardware": "t-win10-64-1803-hw",
+ },
+ "windows7-32-devedition-qr": { # build only, tests have no value
+ "virtual": "t-win7-32",
+ "virtual-with-gpu": "t-win7-32-gpu",
+ "hardware": "t-win10-64-1803-hw",
+ },
+ "windows10-64": { # source-test
+ "virtual": "t-win10-64",
+ "virtual-with-gpu": "t-win10-64-gpu-s",
+ "hardware": "t-win10-64-1803-hw",
+ },
+ "windows10-64-shippable-qr": {
+ "virtual": "t-win10-64",
+ "virtual-with-gpu": "t-win10-64-gpu-s",
+ "hardware": "t-win10-64-1803-hw",
+ },
+ "windows10-64-ref-hw-2017": {
+ "virtual": "t-win10-64",
+ "virtual-with-gpu": "t-win10-64-gpu-s",
+ "hardware": "t-win10-64-ref-hw",
+ },
+ "windows10-64-2009-qr": {
+ "virtual": "win10-64-2009",
+ "virtual-with-gpu": "win10-64-2009-gpu",
+ },
+ "windows10-64-2009-shippable-qr": {
+ "virtual": "win10-64-2009",
+ "virtual-with-gpu": "win10-64-2009-gpu",
+ },
+ "windows11-32-2009-mingwclang-qr": {
+ "virtual": "win11-64-2009",
+ "virtual-with-gpu": "win11-64-2009-gpu",
+ },
+ "windows11-32-2009-qr": {
+ "virtual": "win11-64-2009",
+ "virtual-with-gpu": "win11-64-2009-gpu",
+ },
+ "windows11-32-2009-shippable-qr": {
+ "virtual": "win11-64-2009",
+ "virtual-with-gpu": "win11-64-2009-gpu",
+ },
+ "windows11-64-2009": {
+ "virtual": "win11-64-2009",
+ "virtual-with-gpu": "win11-64-2009-gpu",
+ },
+ "windows11-64-2009-ccov": {
+ "virtual": "win11-64-2009-ssd",
+ "virtual-with-gpu": "win11-64-2009-ssd-gpu",
+ },
+ "windows11-64-2009-ccov-qr": {
+ "virtual": "win11-64-2009-ssd",
+ "virtual-with-gpu": "win11-64-2009-ssd-gpu",
+ },
+ "windows11-64-2009-devedition": {
+ "virtual": "win11-64-2009",
+ "virtual-with-gpu": "win11-64-2009-gpu",
+ },
+ "windows11-64-2009-shippable": {
+ "virtual": "win11-64-2009",
+ "virtual-with-gpu": "win11-64-2009-gpu",
+ },
+ "windows11-64-2009-qr": {
+ "virtual": "win11-64-2009",
+ "virtual-with-gpu": "win11-64-2009-gpu",
+ },
+ "windows11-64-2009-shippable-qr": {
+ "virtual": "win11-64-2009",
+ "virtual-with-gpu": "win11-64-2009-gpu",
+ },
+ "windows11-64-2009-devedition-qr": {
+ "virtual": "win11-64-2009",
+ "virtual-with-gpu": "win11-64-2009-gpu",
+ },
+ "windows11-64-2009-asan-qr": {
+ "virtual": "win11-64-2009",
+ "virtual-with-gpu": "win11-64-2009-gpu",
+ },
+ "windows11-64-2009-mingwclang-qr": {
+ "virtual": "win11-64-2009",
+ "virtual-with-gpu": "win11-64-2009-gpu",
+ },
+}
+
+# os x worker types keyed by test-platform
+MACOSX_WORKER_TYPES = {
+ "macosx1015-64-power": "t-osx-1015-power",
+ "macosx1015-64": "t-osx-1015-r8",
+ "macosx1100-64": "t-osx-1100-m1",
+}
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def set_worker_type(config, tasks):
+ """Set the worker type based on the test platform."""
+ for task in tasks:
+ # during the taskcluster migration, this is a bit tortured, but it
+ # will get simpler eventually!
+ test_platform = task["test-platform"]
+ if task.get("worker-type", "default") != "default":
+ # This test already has its worker type defined, so just use that (yields below)
+ # Unless the value is set to "default", in that case ignore it.
+ pass
+ elif test_platform.startswith("macosx1015-64"):
+ if "--power-test" in task["mozharness"]["extra-options"]:
+ task["worker-type"] = MACOSX_WORKER_TYPES["macosx1015-64-power"]
+ else:
+ task["worker-type"] = MACOSX_WORKER_TYPES["macosx1015-64"]
+ elif test_platform.startswith("macosx1100-64"):
+ task["worker-type"] = MACOSX_WORKER_TYPES["macosx1100-64"]
+ elif test_platform.startswith("win"):
+ # figure out what platform the job needs to run on
+ if task["virtualization"] == "hardware":
+ # some jobs like talos and reftest run on real h/w - those are all win10
+ if test_platform.startswith("windows10-64-ref-hw-2017"):
+ win_worker_type_platform = WINDOWS_WORKER_TYPES[
+ "windows10-64-ref-hw-2017"
+ ]
+ else:
+ win_worker_type_platform = WINDOWS_WORKER_TYPES["windows10-64"]
+ else:
+ # the other jobs run on a vm which may or may not be a win10 vm
+ win_worker_type_platform = WINDOWS_WORKER_TYPES[
+ test_platform.split("/")[0]
+ ]
+ if task[
+ "virtualization"
+ ] == "virtual-with-gpu" and test_platform.startswith("windows1"):
+ # add in `--requires-gpu` to the mozharness options
+ task["mozharness"]["extra-options"].append("--requires-gpu")
+
+ # now we have the right platform set the worker type accordingly
+ task["worker-type"] = win_worker_type_platform[task["virtualization"]]
+ elif test_platform.startswith("android-hw-g5"):
+ if task["suite"] != "raptor":
+ task["worker-type"] = "t-bitbar-gw-unit-g5"
+ else:
+ task["worker-type"] = "t-bitbar-gw-perf-g5"
+ elif test_platform.startswith("android-hw-p5"):
+ if task["suite"] != "raptor":
+ task["worker-type"] = "t-bitbar-gw-unit-p5"
+ else:
+ task["worker-type"] = "t-bitbar-gw-perf-p5"
+ elif test_platform.startswith("android-hw-a51"):
+ if task["suite"] != "raptor":
+ task["worker-type"] = "t-bitbar-gw-unit-a51"
+ else:
+ task["worker-type"] = "t-bitbar-gw-perf-a51"
+ elif test_platform.startswith("android-em-7.0-x86"):
+ task["worker-type"] = "t-linux-kvm"
+ elif test_platform.startswith("linux") or test_platform.startswith("android"):
+ if "wayland" in test_platform:
+ task["worker-type"] = "t-linux-wayland"
+ elif task.get("suite", "") in ["talos", "raptor"] and not task[
+ "build-platform"
+ ].startswith("linux64-ccov"):
+ task["worker-type"] = "t-linux-talos-1804"
+ else:
+ task["worker-type"] = LINUX_WORKER_TYPES[task["instance-size"]]
+ else:
+ raise Exception(f"unknown test_platform {test_platform}")
+
+ yield task
+
+
+@transforms.add
+def set_wayland_env(config, tasks):
+ for task in tasks:
+ if task["worker-type"] != "t-linux-wayland":
+ yield task
+ continue
+
+ env = task.setdefault("worker", {}).setdefault("env", {})
+ env["MOZ_ENABLE_WAYLAND"] = "1"
+ env["WAYLAND_DISPLAY"] = "wayland-0"
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/try_job.py b/taskcluster/gecko_taskgraph/transforms/try_job.py
new file mode 100644
index 0000000000..4b3281f5c5
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/try_job.py
@@ -0,0 +1,18 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from taskgraph.transforms.base import TransformSequence
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def set_job_try_name(config, jobs):
+ """
+ For a task which is governed by `-j` in try syntax, set the `job_try_name`
+ attribute based on the job name.
+ """
+ for job in jobs:
+ job.setdefault("attributes", {}).setdefault("job_try_name", job["name"])
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/update_verify.py b/taskcluster/gecko_taskgraph/transforms/update_verify.py
new file mode 100644
index 0000000000..19c932c746
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/update_verify.py
@@ -0,0 +1,58 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the beetmover task into an actual task description.
+"""
+
+
+from copy import deepcopy
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.treeherder import add_suffix, inherit_treeherder_from_dep
+
+from gecko_taskgraph.util.attributes import task_name
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def add_command(config, tasks):
+ config_tasks = {}
+ for dep in config.kind_dependencies_tasks.values():
+ if (
+ "update-verify-config" in dep.kind
+ or "update-verify-next-config" in dep.kind
+ ):
+ config_tasks[task_name(dep)] = dep
+
+ for task in tasks:
+ config_task = config_tasks[task["name"]]
+ total_chunks = task["extra"]["chunks"]
+ task["worker"].setdefault("env", {})["CHANNEL"] = config_task.task["extra"][
+ "channel"
+ ]
+ task.setdefault("fetches", {})[config_task.label] = [
+ "update-verify.cfg",
+ ]
+ task["treeherder"] = inherit_treeherder_from_dep(task, config_task)
+
+ for this_chunk in range(1, total_chunks + 1):
+ chunked = deepcopy(task)
+ chunked["treeherder"]["symbol"] = add_suffix(
+ chunked["treeherder"]["symbol"], this_chunk
+ )
+ chunked["label"] = "release-update-verify-{}-{}/{}".format(
+ chunked["name"], this_chunk, total_chunks
+ )
+ if not chunked["worker"].get("env"):
+ chunked["worker"]["env"] = {}
+ chunked["run"] = {
+ "using": "run-task",
+ "cwd": "{checkout}",
+ "command": "tools/update-verify/scripts/chunked-verify.sh "
+ f"--total-chunks={total_chunks} --this-chunk={this_chunk}",
+ "sparse-profile": "update-verify",
+ }
+
+ yield chunked
diff --git a/taskcluster/gecko_taskgraph/transforms/update_verify_config.py b/taskcluster/gecko_taskgraph/transforms/update_verify_config.py
new file mode 100644
index 0000000000..1de808f82b
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/update_verify_config.py
@@ -0,0 +1,148 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the beetmover task into an actual task description.
+"""
+
+from urllib.parse import urlsplit
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.schema import resolve_keyed_by
+
+from gecko_taskgraph.transforms.task import get_branch_repo, get_branch_rev
+from gecko_taskgraph.util.attributes import release_level
+from gecko_taskgraph.util.scriptworker import get_release_config
+
+transforms = TransformSequence()
+
+
+# The beta regexes do not match point releases.
+# In the rare event that we do ship a point
+# release to beta, we need to either:
+# 1) update these regexes to match that specific version
+# 2) pass a second include version that matches that specific version
+INCLUDE_VERSION_REGEXES = {
+ "beta": r"'^(\d+\.\d+(b\d+)?)$'",
+ "nonbeta": r"'^\d+\.\d+(\.\d+)?$'",
+ # Same as nonbeta, except for the esr suffix
+ "esr": r"'^\d+\.\d+(\.\d+)?esr$'",
+ # Previous esr versions, for update testing before we update users to esr102
+ "esr115-next": r"'^(52|60|68|78|91|102)+\.\d+(\.\d+)?esr$'",
+}
+
+MAR_CHANNEL_ID_OVERRIDE_REGEXES = {
+ "beta": r"'^\d+\.\d+(\.\d+)?$$,firefox-mozilla-beta,firefox-mozilla-release'",
+}
+
+
+def ensure_wrapped_singlequote(regexes):
+ """Ensure that a regex (from INCLUDE_VERSION_REGEXES or MAR_CHANNEL_ID_OVERRIDE_REGEXES)
+ is wrapper in single quotes.
+ """
+ for name, regex in regexes.items():
+ if regex[0] != "'" or regex[-1] != "'":
+ raise Exception(
+ "Regex {} is invalid: not wrapped with single quotes.\n{}".format(
+ name, regex
+ )
+ )
+
+
+ensure_wrapped_singlequote(INCLUDE_VERSION_REGEXES)
+ensure_wrapped_singlequote(MAR_CHANNEL_ID_OVERRIDE_REGEXES)
+
+
+@transforms.add
+def add_command(config, tasks):
+ keyed_by_args = [
+ "channel",
+ "archive-prefix",
+ "previous-archive-prefix",
+ "aus-server",
+ "override-certs",
+ "include-version",
+ "mar-channel-id-override",
+ "last-watershed",
+ ]
+ optional_args = [
+ "updater-platform",
+ ]
+
+ release_config = get_release_config(config)
+
+ for task in tasks:
+ task["description"] = "generate update verify config for {}".format(
+ task["attributes"]["build_platform"]
+ )
+
+ command = [
+ "python",
+ "testing/mozharness/scripts/release/update-verify-config-creator.py",
+ "--product",
+ task["extra"]["product"],
+ "--stage-product",
+ task["shipping-product"],
+ "--app-name",
+ task["extra"]["app-name"],
+ "--branch-prefix",
+ task["extra"]["branch-prefix"],
+ "--platform",
+ task["extra"]["platform"],
+ "--to-version",
+ release_config["version"],
+ "--to-app-version",
+ release_config["appVersion"],
+ "--to-build-number",
+ str(release_config["build_number"]),
+ "--to-buildid",
+ config.params["moz_build_date"],
+ "--to-revision",
+ get_branch_rev(config),
+ "--output-file",
+ "update-verify.cfg",
+ ]
+
+ repo_path = urlsplit(get_branch_repo(config)).path.lstrip("/")
+ command.extend(["--repo-path", repo_path])
+
+ if release_config.get("partial_versions"):
+ for partial in release_config["partial_versions"].split(","):
+ command.extend(["--partial-version", partial.split("build")[0]])
+
+ for arg in optional_args:
+ if task["extra"].get(arg):
+ command.append(f"--{arg}")
+ command.append(task["extra"][arg])
+
+ for arg in keyed_by_args:
+ thing = f"extra.{arg}"
+ resolve_keyed_by(
+ task,
+ thing,
+ item_name=task["name"],
+ platform=task["attributes"]["build_platform"],
+ **{
+ "release-type": config.params["release_type"],
+ "release-level": release_level(config.params["project"]),
+ },
+ )
+ # ignore things that resolved to null
+ if not task["extra"].get(arg):
+ continue
+ if arg == "include-version":
+ task["extra"][arg] = INCLUDE_VERSION_REGEXES[task["extra"][arg]]
+ if arg == "mar-channel-id-override":
+ task["extra"][arg] = MAR_CHANNEL_ID_OVERRIDE_REGEXES[task["extra"][arg]]
+
+ command.append(f"--{arg}")
+ command.append(task["extra"][arg])
+
+ task["run"].update(
+ {
+ "using": "mach",
+ "mach": " ".join(command),
+ }
+ )
+
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/upload_generated_sources.py b/taskcluster/gecko_taskgraph/transforms/upload_generated_sources.py
new file mode 100644
index 0000000000..b862645eed
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/upload_generated_sources.py
@@ -0,0 +1,40 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the upload-generated-files task description template,
+taskcluster/ci/upload-generated-sources/kind.yml, into an actual task description.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def add_task_info(config, jobs):
+ for job in jobs:
+ dep_task = job["primary-dependency"]
+ del job["primary-dependency"]
+
+ # Add a dependency on the build task.
+ job["dependencies"] = {"build": dep_task.label}
+ # Label the job to match the build task it's uploading from.
+ job["label"] = dep_task.label.replace("build-", "upload-generated-sources-")
+ # Copy over some bits of metdata from the build task.
+ dep_th = dep_task.task["extra"]["treeherder"]
+ job.setdefault("attributes", {})
+ job["attributes"]["build_platform"] = dep_task.attributes.get("build_platform")
+ if dep_task.attributes.get("shippable"):
+ job["attributes"]["shippable"] = True
+ plat = "{}/{}".format(
+ dep_th["machine"]["platform"], dep_task.attributes.get("build_type")
+ )
+ job["treeherder"]["platform"] = plat
+ job["treeherder"]["tier"] = dep_th["tier"]
+ if dep_th["symbol"] != "N":
+ job["treeherder"]["symbol"] = "Ugs{}".format(dep_th["symbol"])
+ job["run-on-projects"] = dep_task.attributes.get("run_on_projects")
+ job["optimization"] = dep_task.optimization
+
+ yield job
diff --git a/taskcluster/gecko_taskgraph/transforms/upload_symbols.py b/taskcluster/gecko_taskgraph/transforms/upload_symbols.py
new file mode 100644
index 0000000000..f6d40e9a45
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/upload_symbols.py
@@ -0,0 +1,95 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Transform the upload-symbols task description template,
+taskcluster/ci/upload-symbols/job-template.yml into an actual task description.
+"""
+
+
+import logging
+
+from taskgraph.transforms.base import TransformSequence
+from taskgraph.util.treeherder import inherit_treeherder_from_dep, join_symbol
+
+from gecko_taskgraph.util.attributes import (
+ RELEASE_PROJECTS,
+ copy_attributes_from_dependent_job,
+)
+
+logger = logging.getLogger(__name__)
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def check_nightlies(config, tasks):
+ """Ensure that we upload symbols for all shippable builds, so that crash-stats can
+ resolve any reports sent to it. Try may enable full symbols but not upload them.
+
+ Putting this check here (instead of the transforms for the build kind) lets us
+ leverage the any not-for-build-platforms set in the update-symbols kind."""
+ for task in tasks:
+ dep = task["primary-dependency"]
+ if (
+ config.params["project"] in RELEASE_PROJECTS
+ and dep.attributes.get("shippable")
+ and not dep.attributes.get("enable-full-crashsymbols")
+ and not dep.attributes.get("skip-upload-crashsymbols")
+ ):
+ raise Exception(
+ "Shippable job %s should have enable-full-crashsymbols attribute "
+ "set to true to enable symbol upload to crash-stats" % dep.label
+ )
+ yield task
+
+
+@transforms.add
+def fill_template(config, tasks):
+ for task in tasks:
+ dep = task["primary-dependency"]
+ task.pop("dependent-tasks", None)
+
+ # Fill out the dynamic fields in the task description
+ task["label"] = dep.label + "-upload-symbols"
+
+ # Skip tasks where we don't have the full crashsymbols enabled
+ if not dep.attributes.get("enable-full-crashsymbols") or dep.attributes.get(
+ "skip-upload-crashsymbols"
+ ):
+ logger.debug("Skipping upload symbols task for %s", task["label"])
+ continue
+
+ task["dependencies"] = {"build": dep.label}
+ task["worker"]["env"]["GECKO_HEAD_REPOSITORY"] = config.params[
+ "head_repository"
+ ]
+ task["worker"]["env"]["GECKO_HEAD_REV"] = config.params["head_rev"]
+ task["worker"]["env"]["SYMBOL_SECRET"] = task["worker"]["env"][
+ "SYMBOL_SECRET"
+ ].format(level=config.params["level"])
+
+ attributes = copy_attributes_from_dependent_job(dep)
+ attributes.update(task.get("attributes", {}))
+ task["attributes"] = attributes
+
+ treeherder = inherit_treeherder_from_dep(task, dep)
+ th = dep.task.get("extra")["treeherder"]
+ th_symbol = th.get("symbol")
+ th_groupsymbol = th.get("groupSymbol", "?")
+
+ # Disambiguate the treeherder symbol.
+ sym = "Sym" + (th_symbol[1:] if th_symbol.startswith("B") else th_symbol)
+ treeherder.setdefault("symbol", join_symbol(th_groupsymbol, sym))
+ task["treeherder"] = treeherder
+
+ # We only want to run these tasks if the build is run.
+ # XXX Better to run this on promote phase instead?
+ task["run-on-projects"] = dep.attributes.get("run_on_projects")
+ task["optimization"] = {"upload-symbols": None}
+ task["if-dependencies"] = ["build"]
+
+ # clear out the stuff that's not part of a task description
+ del task["primary-dependency"]
+
+ yield task
diff --git a/taskcluster/gecko_taskgraph/transforms/upstream_artifact_task.py b/taskcluster/gecko_taskgraph/transforms/upstream_artifact_task.py
new file mode 100644
index 0000000000..62f94a8238
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/transforms/upstream_artifact_task.py
@@ -0,0 +1,29 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Find upstream artifact task.
+"""
+
+from taskgraph.transforms.base import TransformSequence
+
+transforms = TransformSequence()
+
+
+@transforms.add
+def find_upstream_artifact_task(config, jobs):
+ for job in jobs:
+ dep_job = None
+ if job.get("dependent-tasks"):
+ dep_labels = [l for l in job["dependent-tasks"].keys()]
+ for label in dep_labels:
+ if label.endswith("-mac-signing"):
+ assert (
+ dep_job is None
+ ), "Can't determine whether " "{} or {} is dep_job!".format(
+ dep_job.label, label
+ )
+ dep_job = job["dependent-tasks"][label]
+ if dep_job is not None:
+ job["upstream-artifact-task"] = dep_job
+ yield job
diff --git a/taskcluster/gecko_taskgraph/try_option_syntax.py b/taskcluster/gecko_taskgraph/try_option_syntax.py
new file mode 100644
index 0000000000..3e054d63f9
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/try_option_syntax.py
@@ -0,0 +1,755 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import argparse
+import copy
+import logging
+import re
+import shlex
+from collections import defaultdict
+
+logger = logging.getLogger(__name__)
+
+# The build type aliases are very cryptic and only used in try flags these are
+# mappings from the single char alias to a longer more recognizable form.
+BUILD_TYPE_ALIASES = {"o": "opt", "d": "debug"}
+
+# consider anything in this whitelist of kinds to be governed by -b/-p
+BUILD_KINDS = {
+ "build",
+ "artifact-build",
+ "hazard",
+ "l10n",
+ "valgrind",
+ "spidermonkey",
+}
+
+
+# mapping from shortcut name (usable with -u) to a boolean function identifying
+# matching test names
+def alias_prefix(prefix):
+ return lambda name: name.startswith(prefix)
+
+
+def alias_contains(infix):
+ return lambda name: infix in name
+
+
+def alias_matches(pattern):
+ pattern = re.compile(pattern)
+ return lambda name: pattern.match(name)
+
+
+UNITTEST_ALIASES = {
+ # Aliases specify shorthands that can be used in try syntax. The shorthand
+ # is the dictionary key, with the value representing a pattern for matching
+ # unittest_try_names.
+ #
+ # Note that alias expansion is performed in the absence of any chunk
+ # prefixes. For example, the first example above would replace "foo-7"
+ # with "foobar-7". Note that a few aliases allowed chunks to be specified
+ # without a leading `-`, for example 'mochitest-dt1'. That's no longer
+ # supported.
+ "cppunit": alias_prefix("cppunit"),
+ "crashtest": alias_prefix("crashtest"),
+ "crashtest-e10s": alias_prefix("crashtest-e10s"),
+ "e10s": alias_contains("e10s"),
+ "firefox-ui-functional": alias_prefix("firefox-ui-functional"),
+ "gaia-js-integration": alias_contains("gaia-js-integration"),
+ "gtest": alias_prefix("gtest"),
+ "jittest": alias_prefix("jittest"),
+ "jittests": alias_prefix("jittest"),
+ "jsreftest": alias_prefix("jsreftest"),
+ "jsreftest-e10s": alias_prefix("jsreftest-e10s"),
+ "marionette": alias_prefix("marionette"),
+ "mochitest": alias_prefix("mochitest"),
+ "mochitests": alias_prefix("mochitest"),
+ "mochitest-e10s": alias_prefix("mochitest-e10s"),
+ "mochitests-e10s": alias_prefix("mochitest-e10s"),
+ "mochitest-debug": alias_prefix("mochitest-debug-"),
+ "mochitest-a11y": alias_contains("mochitest-a11y"),
+ "mochitest-bc": alias_prefix("mochitest-browser-chrome"),
+ "mochitest-e10s-bc": alias_prefix("mochitest-browser-chrome-e10s"),
+ "mochitest-browser-chrome": alias_prefix("mochitest-browser-chrome"),
+ "mochitest-e10s-browser-chrome": alias_prefix("mochitest-browser-chrome-e10s"),
+ "mochitest-chrome": alias_contains("mochitest-chrome"),
+ "mochitest-dt": alias_prefix("mochitest-devtools-chrome"),
+ "mochitest-e10s-dt": alias_prefix("mochitest-devtools-chrome-e10s"),
+ "mochitest-gl": alias_prefix("mochitest-webgl"),
+ "mochitest-gl-e10s": alias_prefix("mochitest-webgl-e10s"),
+ "mochitest-gpu": alias_prefix("mochitest-gpu"),
+ "mochitest-gpu-e10s": alias_prefix("mochitest-gpu-e10s"),
+ "mochitest-media": alias_prefix("mochitest-media"),
+ "mochitest-media-e10s": alias_prefix("mochitest-media-e10s"),
+ "mochitest-vg": alias_prefix("mochitest-valgrind"),
+ "reftest": alias_matches(r"^(plain-)?reftest.*$"),
+ "reftest-no-accel": alias_matches(r"^(plain-)?reftest-no-accel.*$"),
+ "reftests": alias_matches(r"^(plain-)?reftest.*$"),
+ "reftests-e10s": alias_matches(r"^(plain-)?reftest-e10s.*$"),
+ "robocop": alias_prefix("robocop"),
+ "web-platform-test": alias_prefix("web-platform-tests"),
+ "web-platform-tests": alias_prefix("web-platform-tests"),
+ "web-platform-tests-e10s": alias_prefix("web-platform-tests-e10s"),
+ "web-platform-tests-crashtests": alias_prefix("web-platform-tests-crashtest"),
+ "web-platform-tests-print-reftest": alias_prefix(
+ "web-platform-tests-print-reftest"
+ ),
+ "web-platform-tests-reftests": alias_prefix("web-platform-tests-reftest"),
+ "web-platform-tests-reftests-e10s": alias_prefix("web-platform-tests-reftest-e10s"),
+ "web-platform-tests-wdspec": alias_prefix("web-platform-tests-wdspec"),
+ "web-platform-tests-wdspec-e10s": alias_prefix("web-platform-tests-wdspec-e10s"),
+ "xpcshell": alias_prefix("xpcshell"),
+}
+
+# unittest platforms can be specified by substring of the "pretty name", which
+# is basically the old Buildbot builder name. This dict has {pretty name,
+# [test_platforms]} translations, This includes only the most commonly-used
+# substrings. It is OK to add new test platforms to various shorthands here;
+# if you add a new Linux64 test platform for instance, people will expect that
+# their previous methods of requesting "all linux64 tests" will include this
+# new platform, and they shouldn't have to explicitly spell out the new platform
+# every time for such cases.
+#
+# Note that the test platforms here are only the prefix up to the `/`.
+UNITTEST_PLATFORM_PRETTY_NAMES = {
+ "Ubuntu": [
+ "linux32",
+ "linux64",
+ "linux64-asan",
+ "linux1804-64",
+ "linux1804-64-asan",
+ ],
+ "x64": ["linux64", "linux64-asan", "linux1804-64", "linux1804-64-asan"],
+ "Android 7.0 Moto G5 32bit": ["android-hw-g5-7.0-arm7"],
+ "Android 7.0 Samsung A51 32bit": ["android-hw-a51-11.0-arm7"],
+ "Android 7.0 Samsung A51 64bit": ["android-hw-a51-11.0-aarch64"],
+ "Android 8.0 Google Pixel 2 32bit": ["android-hw-p2-8.0-arm7"],
+ "Android 8.0 Google Pixel 2 64bit": ["android-hw-p2-8.0-android-aarch64"],
+ "Android 13.0 Google Pixel 5 32bit": ["android-hw-p5-13.0-arm7"],
+ "Android 13.0 Google Pixel 5 64bit": ["android-hw-p5-13.0-android-aarch64"],
+ "Windows 7": ["windows7-32"],
+ "Windows 7 VM": ["windows7-32-vm"],
+ "Windows 10": ["windows10-64"],
+}
+
+TEST_CHUNK_SUFFIX = re.compile("(.*)-([0-9]+)$")
+
+
+def escape_whitespace_in_brackets(input_str):
+ """
+ In tests you may restrict them by platform [] inside of the brackets
+ whitespace may occur this is typically invalid shell syntax so we escape it
+ with backslash sequences .
+ """
+ result = ""
+ in_brackets = False
+ for char in input_str:
+ if char == "[":
+ in_brackets = True
+ result += char
+ continue
+
+ if char == "]":
+ in_brackets = False
+ result += char
+ continue
+
+ if char == " " and in_brackets:
+ result += r"\ "
+ continue
+
+ result += char
+
+ return result
+
+
+def split_try_msg(message):
+ try:
+ try_idx = message.index("try:")
+ except ValueError:
+ return []
+ message = message[try_idx:].split("\n")[0]
+ # shlex used to ensure we split correctly when giving values to argparse.
+ return shlex.split(escape_whitespace_in_brackets(message))
+
+
+def parse_message(message):
+ parts = split_try_msg(message)
+
+ # Argument parser based on try flag flags
+ parser = argparse.ArgumentParser()
+ parser.add_argument("-b", "--build", dest="build_types")
+ parser.add_argument(
+ "-p", "--platform", nargs="?", dest="platforms", const="all", default="all"
+ )
+ parser.add_argument(
+ "-u", "--unittests", nargs="?", dest="unittests", const="all", default="all"
+ )
+ parser.add_argument(
+ "-t", "--talos", nargs="?", dest="talos", const="all", default="none"
+ )
+ parser.add_argument(
+ "-r", "--raptor", nargs="?", dest="raptor", const="all", default="none"
+ )
+ parser.add_argument(
+ "-i", "--interactive", dest="interactive", action="store_true", default=False
+ )
+ parser.add_argument(
+ "-e", "--all-emails", dest="notifications", action="store_const", const="all"
+ )
+ parser.add_argument(
+ "-f",
+ "--failure-emails",
+ dest="notifications",
+ action="store_const",
+ const="failure",
+ )
+ parser.add_argument("-j", "--job", dest="jobs", action="append")
+ parser.add_argument(
+ "--rebuild-talos",
+ dest="talos_trigger_tests",
+ action="store",
+ type=int,
+ default=1,
+ )
+ parser.add_argument(
+ "--rebuild-raptor",
+ dest="raptor_trigger_tests",
+ action="store",
+ type=int,
+ default=1,
+ )
+ parser.add_argument("--setenv", dest="env", action="append")
+ parser.add_argument("--gecko-profile", dest="profile", action="store_true")
+ parser.add_argument("--tag", dest="tag", action="store", default=None)
+ parser.add_argument("--no-retry", dest="no_retry", action="store_true")
+ parser.add_argument(
+ "--include-nightly", dest="include_nightly", action="store_true"
+ )
+ parser.add_argument("--artifact", dest="artifact", action="store_true")
+
+ # While we are transitioning from BB to TC, we want to push jobs to tc-worker
+ # machines but not overload machines with every try push. Therefore, we add
+ # this temporary option to be able to push jobs to tc-worker.
+ parser.add_argument(
+ "-w",
+ "--taskcluster-worker",
+ dest="taskcluster_worker",
+ action="store_true",
+ default=False,
+ )
+
+ # In order to run test jobs multiple times
+ parser.add_argument("--rebuild", dest="trigger_tests", type=int, default=1)
+ args, _ = parser.parse_known_args(parts)
+
+ try_options = vars(args)
+ try_task_config = {
+ "use-artifact-builds": try_options.pop("artifact"),
+ "gecko-profile": try_options.pop("profile"),
+ "env": dict(arg.split("=") for arg in try_options.pop("env") or []),
+ }
+ return {
+ "try_options": try_options,
+ "try_task_config": try_task_config,
+ }
+
+
+class TryOptionSyntax:
+ def __init__(self, parameters, full_task_graph, graph_config):
+ """
+ Apply the try options in parameters.
+
+ The resulting object has attributes:
+
+ - build_types: a list containing zero or more of 'opt' and 'debug'
+ - platforms: a list of selected platform names, or None for all
+ - unittests: a list of tests, of the form given below, or None for all
+ - jobs: a list of requested job names, or None for all
+ - trigger_tests: the number of times tests should be triggered (--rebuild)
+ - interactive: true if --interactive
+ - notifications: either None if no notifications or one of 'all' or 'failure'
+ - talos_trigger_tests: the number of time talos tests should be triggered (--rebuild-talos)
+ - tag: restrict tests to the specified tag
+ - no_retry: do not retry failed jobs
+
+ The unittests and talos lists contain dictionaries of the form:
+
+ {
+ 'test': '<suite name>',
+ 'platforms': [..platform names..], # to limit to only certain platforms
+ 'only_chunks': set([..chunk numbers..]), # to limit only to certain chunks
+ }
+ """
+ self.full_task_graph = full_task_graph
+ self.graph_config = graph_config
+ self.jobs = []
+ self.build_types = []
+ self.platforms = []
+ self.unittests = []
+ self.talos = []
+ self.raptor = []
+ self.trigger_tests = 0
+ self.interactive = False
+ self.notifications = None
+ self.talos_trigger_tests = 0
+ self.raptor_trigger_tests = 0
+ self.tag = None
+ self.no_retry = False
+
+ options = parameters["try_options"]
+ if not options:
+ return None
+ self.jobs = self.parse_jobs(options["jobs"])
+ self.build_types = self.parse_build_types(
+ options["build_types"], full_task_graph
+ )
+ self.platforms = self.parse_platforms(options, full_task_graph)
+ self.unittests = self.parse_test_option(
+ "unittest_try_name", options["unittests"], full_task_graph
+ )
+ self.talos = self.parse_test_option(
+ "talos_try_name", options["talos"], full_task_graph
+ )
+ self.raptor = self.parse_test_option(
+ "raptor_try_name", options["raptor"], full_task_graph
+ )
+ self.trigger_tests = options["trigger_tests"]
+ self.interactive = options["interactive"]
+ self.notifications = options["notifications"]
+ self.talos_trigger_tests = options["talos_trigger_tests"]
+ self.raptor_trigger_tests = options["raptor_trigger_tests"]
+ self.tag = options["tag"]
+ self.no_retry = options["no_retry"]
+ self.include_nightly = options["include_nightly"]
+
+ self.test_tiers = self.generate_test_tiers(full_task_graph)
+
+ def generate_test_tiers(self, full_task_graph):
+ retval = defaultdict(set)
+ for t in full_task_graph.tasks.values():
+ if t.attributes.get("kind") == "test":
+ try:
+ tier = t.task["extra"]["treeherder"]["tier"]
+ name = t.attributes.get("unittest_try_name")
+ retval[name].add(tier)
+ except KeyError:
+ pass
+
+ return retval
+
+ def parse_jobs(self, jobs_arg):
+ if not jobs_arg or jobs_arg == ["none"]:
+ return [] # default is `-j none`
+ if jobs_arg == ["all"]:
+ return None
+ expanded = []
+ for job in jobs_arg:
+ expanded.extend(j.strip() for j in job.split(","))
+ return expanded
+
+ def parse_build_types(self, build_types_arg, full_task_graph):
+ if build_types_arg is None:
+ build_types_arg = []
+
+ build_types = [
+ _f
+ for _f in (
+ BUILD_TYPE_ALIASES.get(build_type) for build_type in build_types_arg
+ )
+ if _f
+ ]
+
+ all_types = {
+ t.attributes["build_type"]
+ for t in full_task_graph.tasks.values()
+ if "build_type" in t.attributes
+ }
+ bad_types = set(build_types) - all_types
+ if bad_types:
+ raise Exception(
+ "Unknown build type(s) [%s] specified for try" % ",".join(bad_types)
+ )
+
+ return build_types
+
+ def parse_platforms(self, options, full_task_graph):
+ platform_arg = options["platforms"]
+ if platform_arg == "all":
+ return None
+
+ RIDEALONG_BUILDS = self.graph_config["try"]["ridealong-builds"]
+ results = []
+ for build in platform_arg.split(","):
+ if build in ("macosx64",):
+ # Regular opt builds are faster than shippable ones, but we don't run
+ # tests against them.
+ # We want to choose them (and only them) if no tests were requested.
+ if (
+ options["unittests"] == "none"
+ and options["talos"] == "none"
+ and options["raptor"] == "none"
+ ):
+ results.append("macosx64")
+ logger.info("adding macosx64 for try syntax using macosx64.")
+ # Otherwise, use _just_ the shippable builds.
+ else:
+ results.append("macosx64-shippable")
+ logger.info(
+ "adding macosx64-shippable for try syntax using macosx64."
+ )
+ else:
+ results.append(build)
+ if build in RIDEALONG_BUILDS:
+ results.extend(RIDEALONG_BUILDS[build])
+ logger.info(
+ "platform %s triggers ridealong builds %s"
+ % (build, ", ".join(RIDEALONG_BUILDS[build]))
+ )
+
+ test_platforms = {
+ t.attributes["test_platform"]
+ for t in full_task_graph.tasks.values()
+ if "test_platform" in t.attributes
+ }
+ build_platforms = {
+ t.attributes["build_platform"]
+ for t in full_task_graph.tasks.values()
+ if "build_platform" in t.attributes
+ }
+ all_platforms = test_platforms | build_platforms
+ bad_platforms = set(results) - all_platforms
+ if bad_platforms:
+ raise Exception(
+ "Unknown platform(s) [%s] specified for try" % ",".join(bad_platforms)
+ )
+
+ return results
+
+ def parse_test_option(self, attr_name, test_arg, full_task_graph):
+ """
+
+ Parse a unittest (-u) or talos (-t) option, in the context of a full
+ task graph containing available `unittest_try_name` or `talos_try_name`
+ attributes. There are three cases:
+
+ - test_arg is == 'none' (meaning an empty list)
+ - test_arg is == 'all' (meaning use the list of jobs for that job type)
+ - test_arg is comma string which needs to be parsed
+ """
+
+ # Empty job list case...
+ if test_arg is None or test_arg == "none":
+ return []
+
+ all_platforms = {
+ t.attributes["test_platform"].split("/")[0]
+ for t in full_task_graph.tasks.values()
+ if "test_platform" in t.attributes
+ }
+
+ tests = self.parse_test_opts(test_arg, all_platforms)
+
+ if not tests:
+ return []
+
+ all_tests = {
+ t.attributes[attr_name]
+ for t in full_task_graph.tasks.values()
+ if attr_name in t.attributes
+ }
+
+ # Special case where tests is 'all' and must be expanded
+ if tests[0]["test"] == "all":
+ results = []
+ all_entry = tests[0]
+ for test in all_tests:
+ entry = {"test": test}
+ # If there are platform restrictions copy them across the list.
+ if "platforms" in all_entry:
+ entry["platforms"] = list(all_entry["platforms"])
+ results.append(entry)
+ return self.parse_test_chunks(all_tests, results)
+ return self.parse_test_chunks(all_tests, tests)
+
+ def parse_test_opts(self, input_str, all_platforms):
+ """
+ Parse `testspec,testspec,..`, where each testspec is a test name
+ optionally followed by a list of test platforms or negated platforms in
+ `[]`.
+
+ No brackets indicates that tests should run on all platforms for which
+ builds are available. If testspecs are provided, then each is treated,
+ from left to right, as an instruction to include or (if negated)
+ exclude a set of test platforms. A single spec may expand to multiple
+ test platforms via UNITTEST_PLATFORM_PRETTY_NAMES. If the first test
+ spec is negated, processing begins with the full set of available test
+ platforms; otherwise, processing begins with an empty set of test
+ platforms.
+ """
+
+ # Final results which we will return.
+ tests = []
+
+ cur_test = {}
+ token = ""
+ in_platforms = False
+
+ def normalize_platforms():
+ if "platforms" not in cur_test:
+ return
+ # if the first spec is a negation, start with all platforms
+ if cur_test["platforms"][0][0] == "-":
+ platforms = all_platforms.copy()
+ else:
+ platforms = []
+ for platform in cur_test["platforms"]:
+ if platform[0] == "-":
+ platforms = [p for p in platforms if p != platform[1:]]
+ else:
+ platforms.append(platform)
+ cur_test["platforms"] = platforms
+
+ def add_test(value):
+ normalize_platforms()
+ cur_test["test"] = value.strip()
+ tests.insert(0, cur_test)
+
+ def add_platform(value):
+ platform = value.strip()
+ if platform[0] == "-":
+ negated = True
+ platform = platform[1:]
+ else:
+ negated = False
+ platforms = UNITTEST_PLATFORM_PRETTY_NAMES.get(platform, [platform])
+ if negated:
+ platforms = ["-" + p for p in platforms]
+ cur_test["platforms"] = platforms + cur_test.get("platforms", [])
+
+ # This might be somewhat confusing but we parse the string _backwards_ so
+ # there is no ambiguity over what state we are in.
+ for char in reversed(input_str):
+
+ # , indicates exiting a state
+ if char == ",":
+
+ # Exit a particular platform.
+ if in_platforms:
+ add_platform(token)
+
+ # Exit a particular test.
+ else:
+ add_test(token)
+ cur_test = {}
+
+ # Token must always be reset after we exit a state
+ token = ""
+ elif char == "[":
+ # Exiting platform state entering test state.
+ add_platform(token)
+ token = ""
+ in_platforms = False
+ elif char == "]":
+ # Entering platform state.
+ in_platforms = True
+ else:
+ # Accumulator.
+ token = char + token
+
+ # Handle any left over tokens.
+ if token:
+ add_test(token)
+
+ return tests
+
+ def handle_alias(self, test, all_tests):
+ """
+ Expand a test if its name refers to an alias, returning a list of test
+ dictionaries cloned from the first (to maintain any metadata).
+ """
+ if test["test"] not in UNITTEST_ALIASES:
+ return [test]
+
+ alias = UNITTEST_ALIASES[test["test"]]
+
+ def mktest(name):
+ newtest = copy.deepcopy(test)
+ newtest["test"] = name
+ return newtest
+
+ def exprmatch(alias):
+ return [t for t in all_tests if alias(t)]
+
+ return [mktest(t) for t in exprmatch(alias)]
+
+ def parse_test_chunks(self, all_tests, tests):
+ """
+ Test flags may include parameters to narrow down the number of chunks in a
+ given push. We don't model 1 chunk = 1 job in taskcluster so we must check
+ each test flag to see if it is actually specifying a chunk.
+ """
+ results = []
+ seen_chunks = {}
+ for test in tests:
+ matches = TEST_CHUNK_SUFFIX.match(test["test"])
+ if matches:
+ name = matches.group(1)
+ chunk = matches.group(2)
+ if name in seen_chunks:
+ seen_chunks[name].add(chunk)
+ else:
+ seen_chunks[name] = {chunk}
+ test["test"] = name
+ test["only_chunks"] = seen_chunks[name]
+ results.append(test)
+ else:
+ results.extend(self.handle_alias(test, all_tests))
+
+ # uniquify the results over the test names
+ results = sorted(
+ {test["test"]: test for test in results}.values(),
+ key=lambda test: test["test"],
+ )
+ return results
+
+ def find_all_attribute_suffixes(self, graph, prefix):
+ rv = set()
+ for t in graph.tasks.values():
+ for a in t.attributes:
+ if a.startswith(prefix):
+ rv.add(a[len(prefix) :])
+ return sorted(rv)
+
+ def task_matches(self, task):
+ attr = task.attributes.get
+
+ def check_run_on_projects():
+ return {"all"} & set(attr("run_on_projects", []))
+
+ def match_test(try_spec, attr_name):
+ run_by_default = True
+ if attr("build_type") not in self.build_types:
+ return False
+
+ if (
+ self.platforms is not None
+ and attr("build_platform") not in self.platforms
+ ):
+ return False
+ if not check_run_on_projects():
+ run_by_default = False
+
+ if try_spec is None:
+ return run_by_default
+
+ # TODO: optimize this search a bit
+ for test in try_spec:
+ if attr(attr_name) == test["test"]:
+ break
+ else:
+ return False
+
+ if "only_chunks" in test and attr("test_chunk") not in test["only_chunks"]:
+ return False
+
+ tier = task.task["extra"]["treeherder"]["tier"]
+ if "platforms" in test:
+ if "all" in test["platforms"]:
+ return True
+ platform = attr("test_platform", "").split("/")[0]
+ # Platforms can be forced by syntax like "-u xpcshell[Windows 8]"
+ return platform in test["platforms"]
+ if tier != 1:
+ # Run Tier 2/3 tests if their build task is Tier 2/3 OR if there is
+ # no tier 1 test of that name.
+ build_task = self.full_task_graph.tasks[task.dependencies["build"]]
+ build_task_tier = build_task.task["extra"]["treeherder"]["tier"]
+
+ name = attr("unittest_try_name")
+ test_tiers = self.test_tiers.get(name)
+
+ if tier <= build_task_tier:
+ logger.debug(
+ "not skipping tier {} test {} because build task {} "
+ "is tier {}".format(
+ tier, task.label, build_task.label, build_task_tier
+ )
+ )
+ return True
+ if 1 not in test_tiers:
+ logger.debug(
+ "not skipping tier {} test {} without explicit inclusion; "
+ "it is configured to run on tiers {}".format(
+ tier, task.label, test_tiers
+ )
+ )
+ return True
+ logger.debug(
+ "skipping tier {} test {} because build task {} is "
+ "tier {} and there is a higher-tier test of the same name".format(
+ tier, task.label, build_task.label, build_task_tier
+ )
+ )
+ return False
+ if run_by_default:
+ return check_run_on_projects()
+ return False
+
+ if attr("job_try_name"):
+ # Beware the subtle distinction between [] and None for self.jobs and self.platforms.
+ # They will be [] if there was no try syntax, and None if try syntax was detected but
+ # they remained unspecified.
+ if self.jobs is not None:
+ return attr("job_try_name") in self.jobs
+
+ # User specified `-j all`
+ if (
+ self.platforms is not None
+ and attr("build_platform") not in self.platforms
+ ):
+ return False # honor -p for jobs governed by a platform
+ # "all" means "everything with `try` in run_on_projects"
+ return check_run_on_projects()
+ if attr("kind") == "test":
+ return (
+ match_test(self.unittests, "unittest_try_name")
+ or match_test(self.talos, "talos_try_name")
+ or match_test(self.raptor, "raptor_try_name")
+ )
+ if attr("kind") in BUILD_KINDS:
+ if attr("build_type") not in self.build_types:
+ return False
+ if self.platforms is None:
+ # for "-p all", look for try in the 'run_on_projects' attribute
+ return check_run_on_projects()
+ if attr("build_platform") not in self.platforms:
+ return False
+ return True
+ return False
+
+ def __str__(self):
+ def none_for_all(list):
+ if list is None:
+ return "<all>"
+ return ", ".join(str(e) for e in list)
+
+ return "\n".join(
+ [
+ "build_types: " + ", ".join(self.build_types),
+ "platforms: " + none_for_all(self.platforms),
+ "unittests: " + none_for_all(self.unittests),
+ "talos: " + none_for_all(self.talos),
+ "raptor" + none_for_all(self.raptor),
+ "jobs: " + none_for_all(self.jobs),
+ "trigger_tests: " + str(self.trigger_tests),
+ "interactive: " + str(self.interactive),
+ "notifications: " + str(self.notifications),
+ "talos_trigger_tests: " + str(self.talos_trigger_tests),
+ "raptor_trigger_tests: " + str(self.raptor_trigger_tests),
+ "tag: " + str(self.tag),
+ "no_retry: " + str(self.no_retry),
+ ]
+ )
diff --git a/taskcluster/gecko_taskgraph/util/__init__.py b/taskcluster/gecko_taskgraph/util/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/util/__init__.py
diff --git a/taskcluster/gecko_taskgraph/util/attributes.py b/taskcluster/gecko_taskgraph/util/attributes.py
new file mode 100644
index 0000000000..0ed0be5a8d
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/util/attributes.py
@@ -0,0 +1,143 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import re
+
+INTEGRATION_PROJECTS = {
+ "autoland",
+}
+
+TRUNK_PROJECTS = INTEGRATION_PROJECTS | {"mozilla-central", "comm-central"}
+
+RELEASE_PROJECTS = {
+ "mozilla-central",
+ "mozilla-beta",
+ "mozilla-release",
+ "mozilla-esr102",
+ "mozilla-esr115",
+ "comm-central",
+ "comm-beta",
+ "comm-esr102",
+ "comm-esr115",
+}
+
+RELEASE_PROMOTION_PROJECTS = {
+ "jamun",
+ "maple",
+ "try",
+ "try-comm-central",
+} | RELEASE_PROJECTS
+
+TEMPORARY_PROJECTS = set(
+ {
+ # When using a "Disposable Project Branch" you can specify your branch here. e.g.:
+ "oak",
+ }
+)
+
+TRY_PROJECTS = {
+ "try",
+ "try-comm-central",
+}
+
+ALL_PROJECTS = RELEASE_PROMOTION_PROJECTS | TRUNK_PROJECTS | TEMPORARY_PROJECTS
+
+RUN_ON_PROJECT_ALIASES = {
+ # key is alias, value is lambda to test it against
+ "all": lambda project: True,
+ "integration": lambda project: (
+ project in INTEGRATION_PROJECTS or project == "toolchains"
+ ),
+ "release": lambda project: (project in RELEASE_PROJECTS or project == "toolchains"),
+ "trunk": lambda project: (project in TRUNK_PROJECTS or project == "toolchains"),
+ "trunk-only": lambda project: project in TRUNK_PROJECTS,
+ "autoland": lambda project: project in ("autoland", "toolchains"),
+ "autoland-only": lambda project: project == "autoland",
+ "mozilla-central": lambda project: project in ("mozilla-central", "toolchains"),
+ "mozilla-central-only": lambda project: project == "mozilla-central",
+}
+
+_COPYABLE_ATTRIBUTES = (
+ "accepted-mar-channel-ids",
+ "artifact_map",
+ "artifact_prefix",
+ "build_platform",
+ "build_type",
+ "l10n_chunk",
+ "locale",
+ "mar-channel-id",
+ "maven_packages",
+ "nightly",
+ "required_signoffs",
+ "shippable",
+ "shipping_phase",
+ "shipping_product",
+ "signed",
+ "stub-installer",
+ "update-channel",
+)
+
+
+def match_run_on_projects(project, run_on_projects):
+ """Determine whether the given project is included in the `run-on-projects`
+ parameter, applying expansions for things like "integration" mentioned in
+ the attribute documentation."""
+ aliases = RUN_ON_PROJECT_ALIASES.keys()
+ run_aliases = set(aliases) & set(run_on_projects)
+ if run_aliases:
+ if any(RUN_ON_PROJECT_ALIASES[alias](project) for alias in run_aliases):
+ return True
+
+ return project in run_on_projects
+
+
+def match_run_on_hg_branches(hg_branch, run_on_hg_branches):
+ """Determine whether the given project is included in the `run-on-hg-branches`
+ parameter. Allows 'all'."""
+ if "all" in run_on_hg_branches:
+ return True
+
+ for expected_hg_branch_pattern in run_on_hg_branches:
+ if re.match(expected_hg_branch_pattern, hg_branch):
+ return True
+
+ return False
+
+
+def copy_attributes_from_dependent_job(dep_job, denylist=()):
+ return {
+ attr: dep_job.attributes[attr]
+ for attr in _COPYABLE_ATTRIBUTES
+ if attr in dep_job.attributes and attr not in denylist
+ }
+
+
+def sorted_unique_list(*args):
+ """Join one or more lists, and return a sorted list of unique members"""
+ combined = set().union(*args)
+ return sorted(combined)
+
+
+def release_level(project):
+ """
+ Whether this is a staging release or not.
+
+ :return str: One of "production" or "staging".
+ """
+ return "production" if project in RELEASE_PROJECTS else "staging"
+
+
+def is_try(params):
+ """
+ Determine whether this graph is being built on a try project or for
+ `mach try fuzzy`.
+ """
+ return "try" in params["project"] or params["try_mode"] == "try_select"
+
+
+def task_name(task):
+ if task.label.startswith(task.kind + "-"):
+ return task.label[len(task.kind) + 1 :]
+ raise AttributeError(f"Task {task.label} does not have a name.")
diff --git a/taskcluster/gecko_taskgraph/util/backstop.py b/taskcluster/gecko_taskgraph/util/backstop.py
new file mode 100644
index 0000000000..26c9a4fb91
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/util/backstop.py
@@ -0,0 +1,84 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+from requests import HTTPError
+from taskgraph.util.taskcluster import find_task_id, get_artifact
+
+from gecko_taskgraph.util.attributes import INTEGRATION_PROJECTS, TRY_PROJECTS
+from gecko_taskgraph.util.taskcluster import state_task
+
+BACKSTOP_PUSH_INTERVAL = 20
+BACKSTOP_TIME_INTERVAL = 60 * 4 # minutes
+BACKSTOP_INDEX = "{trust-domain}.v2.{project}.latest.taskgraph.backstop"
+
+
+def is_backstop(
+ params,
+ push_interval=BACKSTOP_PUSH_INTERVAL,
+ time_interval=BACKSTOP_TIME_INTERVAL,
+ trust_domain="gecko",
+ integration_projects=INTEGRATION_PROJECTS,
+):
+ """Determines whether the given parameters represent a backstop push.
+
+ Args:
+ push_interval (int): Number of pushes
+ time_interval (int): Minutes between forced schedules.
+ Use 0 to disable.
+ trust_domain (str): "gecko" for Firefox, "comm" for Thunderbird
+ integration_projects (set): project that uses backstop optimization
+ Returns:
+ bool: True if this is a backstop, otherwise False.
+ """
+ # In case this is being faked on try.
+ if params.get("backstop", False):
+ return True
+
+ project = params["project"]
+ pushid = int(params["pushlog_id"])
+ pushdate = int(params["pushdate"])
+
+ if project in TRY_PROJECTS:
+ return False
+ if project not in integration_projects:
+ return True
+
+ # On every Nth push, want to run all tasks.
+ if pushid % push_interval == 0:
+ return True
+
+ if time_interval <= 0:
+ return False
+
+ # We also want to ensure we run all tasks at least once per N minutes.
+ subs = {"trust-domain": trust_domain, "project": project}
+ index = BACKSTOP_INDEX.format(**subs)
+
+ try:
+ last_backstop_id = find_task_id(index)
+ except KeyError:
+ # Index wasn't found, implying there hasn't been a backstop push yet.
+ return True
+
+ if state_task(last_backstop_id) in ("failed", "exception"):
+ # If the last backstop failed its decision task, make this a backstop.
+ return True
+
+ try:
+ last_pushdate = get_artifact(last_backstop_id, "public/parameters.yml")[
+ "pushdate"
+ ]
+ except HTTPError as e:
+ # If the last backstop decision task exists in the index, but
+ # parameters.yml isn't available yet, it means the decision task is
+ # still running. If that's the case, we can be pretty sure the time
+ # component will not cause a backstop, so just return False.
+ if e.response.status_code == 404:
+ return False
+ raise
+
+ if (pushdate - last_pushdate) / 60 >= time_interval:
+ return True
+ return False
diff --git a/taskcluster/gecko_taskgraph/util/bugbug.py b/taskcluster/gecko_taskgraph/util/bugbug.py
new file mode 100644
index 0000000000..50e02d69c6
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/util/bugbug.py
@@ -0,0 +1,125 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import json
+import os
+import sys
+import time
+
+import requests
+from mozbuild.util import memoize
+from taskgraph import create
+from taskgraph.util.taskcluster import requests_retry_session
+
+try:
+ # TODO(py3): use time.monotonic()
+ from time import monotonic
+except ImportError:
+ from time import time as monotonic
+
+BUGBUG_BASE_URL = "https://bugbug.herokuapp.com"
+RETRY_TIMEOUT = 9 * 60 # seconds
+RETRY_INTERVAL = 10 # seconds
+
+# Preset confidence thresholds.
+CT_LOW = 0.7
+CT_MEDIUM = 0.8
+CT_HIGH = 0.9
+
+GROUP_TRANSLATIONS = {
+ "testing/web-platform/tests": "",
+ "testing/web-platform/mozilla/tests": "/_mozilla",
+}
+
+
+def translate_group(group):
+ for prefix, value in GROUP_TRANSLATIONS.items():
+ if group.startswith(prefix):
+ return group.replace(prefix, value)
+
+ return group
+
+
+class BugbugTimeoutException(Exception):
+ pass
+
+
+@memoize
+def get_session():
+ s = requests.Session()
+ s.headers.update({"X-API-KEY": "gecko-taskgraph"})
+ return requests_retry_session(retries=5, session=s)
+
+
+def _write_perfherder_data(lower_is_better):
+ if os.environ.get("MOZ_AUTOMATION", "0") == "1":
+ perfherder_data = {
+ "framework": {"name": "build_metrics"},
+ "suites": [
+ {
+ "name": suite,
+ "value": value,
+ "lowerIsBetter": True,
+ "shouldAlert": False,
+ "subtests": [],
+ }
+ for suite, value in lower_is_better.items()
+ ],
+ }
+ print(f"PERFHERDER_DATA: {json.dumps(perfherder_data)}", file=sys.stderr)
+
+
+@memoize
+def push_schedules(branch, rev):
+ # Noop if we're in test-action-callback
+ if create.testing:
+ return
+
+ url = BUGBUG_BASE_URL + "/push/{branch}/{rev}/schedules".format(
+ branch=branch, rev=rev
+ )
+ start = monotonic()
+ session = get_session()
+
+ # On try there is no fallback and pulling is slower, so we allow bugbug more
+ # time to compute the results.
+ # See https://github.com/mozilla/bugbug/issues/1673.
+ timeout = RETRY_TIMEOUT
+ if branch == "try":
+ timeout += int(timeout / 3)
+
+ attempts = timeout / RETRY_INTERVAL
+ i = 0
+ while i < attempts:
+ r = session.get(url)
+ r.raise_for_status()
+
+ if r.status_code != 202:
+ break
+
+ time.sleep(RETRY_INTERVAL)
+ i += 1
+ end = monotonic()
+
+ _write_perfherder_data(
+ lower_is_better={
+ "bugbug_push_schedules_time": end - start,
+ "bugbug_push_schedules_retries": i,
+ }
+ )
+
+ data = r.json()
+ if r.status_code == 202:
+ raise BugbugTimeoutException(f"Timed out waiting for result from '{url}'")
+
+ if "groups" in data:
+ data["groups"] = {translate_group(k): v for k, v in data["groups"].items()}
+
+ if "config_groups" in data:
+ data["config_groups"] = {
+ translate_group(k): v for k, v in data["config_groups"].items()
+ }
+
+ return data
diff --git a/taskcluster/gecko_taskgraph/util/cached_tasks.py b/taskcluster/gecko_taskgraph/util/cached_tasks.py
new file mode 100644
index 0000000000..fff9bb9844
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/util/cached_tasks.py
@@ -0,0 +1,82 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import hashlib
+import time
+
+TARGET_CACHE_INDEX = "{trust_domain}.cache.level-{level}.{type}.{name}.hash.{digest}"
+EXTRA_CACHE_INDEXES = [
+ "{trust_domain}.cache.level-{level}.{type}.{name}.latest",
+ "{trust_domain}.cache.level-{level}.{type}.{name}.pushdate.{build_date_long}",
+]
+
+
+def add_optimization(
+ config, taskdesc, cache_type, cache_name, digest=None, digest_data=None
+):
+ """
+ Allow the results of this task to be cached. This adds index routes to the
+ task so it can be looked up for future runs, and optimization hints so that
+ cached artifacts can be found. Exactly one of `digest` and `digest_data`
+ must be passed.
+
+ :param TransformConfig config: The configuration for the kind being transformed.
+ :param dict taskdesc: The description of the current task.
+ :param str cache_type: The type of task result being cached.
+ :param str cache_name: The name of the object being cached.
+ :param digest: A unique string indentifying this version of the artifacts
+ being generated. Typically this will be the hash of inputs to the task.
+ :type digest: bytes or None
+ :param digest_data: A list of bytes representing the inputs of this task.
+ They will be concatenated and hashed to create the digest for this
+ task.
+ :type digest_data: list of bytes or None
+ """
+ cached_task = taskdesc.get("attributes", {}).get("cached_task")
+ if cached_task is False:
+ return
+
+ if (digest is None) == (digest_data is None):
+ raise Exception("Must pass exactly one of `digest` and `digest_data`.")
+ if digest is None:
+ digest = hashlib.sha256("\n".join(digest_data).encode("utf-8")).hexdigest()
+
+ subs = {
+ "trust_domain": config.graph_config["trust-domain"],
+ "type": cache_type,
+ "name": cache_name,
+ "digest": digest,
+ }
+
+ # We'll try to find a cached version of the toolchain at levels above
+ # and including the current level, starting at the highest level.
+ index_routes = []
+ for level in reversed(range(int(config.params["level"]), 4)):
+ subs["level"] = level
+ index_routes.append(TARGET_CACHE_INDEX.format(**subs))
+ taskdesc["optimization"] = {"index-search": index_routes}
+
+ # ... and cache at the lowest level.
+ taskdesc.setdefault("routes", []).append(
+ f"index.{TARGET_CACHE_INDEX.format(**subs)}"
+ )
+
+ # ... and add some extra routes for humans
+ subs["build_date_long"] = time.strftime(
+ "%Y.%m.%d.%Y%m%d%H%M%S", time.gmtime(config.params["build_date"])
+ )
+ taskdesc["routes"].extend(
+ [f"index.{route.format(**subs)}" for route in EXTRA_CACHE_INDEXES]
+ )
+
+ taskdesc["attributes"]["cached_task"] = {
+ "type": cache_type,
+ "name": cache_name,
+ "digest": digest,
+ }
+
+ # Allow future pushes to find this task before it completes
+ # Implementation in morphs
+ taskdesc["attributes"]["eager_indexes"] = [TARGET_CACHE_INDEX.format(**subs)]
diff --git a/taskcluster/gecko_taskgraph/util/chunking.py b/taskcluster/gecko_taskgraph/util/chunking.py
new file mode 100644
index 0000000000..2c6c429a2c
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/util/chunking.py
@@ -0,0 +1,315 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+"""Utility functions to handle test chunking."""
+
+import json
+import logging
+import os
+from abc import ABCMeta, abstractmethod
+
+from manifestparser import TestManifest
+from manifestparser.filters import chunk_by_runtime, tags
+from mozbuild.util import memoize
+from moztest.resolve import TEST_SUITES, TestManifestLoader, TestResolver
+
+from gecko_taskgraph import GECKO
+from gecko_taskgraph.util.bugbug import CT_LOW, BugbugTimeoutException, push_schedules
+
+logger = logging.getLogger(__name__)
+here = os.path.abspath(os.path.dirname(__file__))
+resolver = TestResolver.from_environment(cwd=here, loader_cls=TestManifestLoader)
+
+
+def guess_mozinfo_from_task(task, repo=""):
+ """Attempt to build a mozinfo dict from a task definition.
+
+ This won't be perfect and many values used in the manifests will be missing. But
+ it should cover most of the major ones and be "good enough" for chunking in the
+ taskgraph.
+
+ Args:
+ task (dict): A task definition.
+
+ Returns:
+ A dict that can be used as a mozinfo replacement.
+ """
+ setting = task["test-setting"]
+ arch = setting["platform"]["arch"]
+ p_os = setting["platform"]["os"]
+
+ info = {
+ "asan": setting["build"].get("asan", False),
+ "bits": 32 if "32" in arch else 64,
+ "ccov": setting["build"].get("ccov", False),
+ "debug": setting["build"]["type"] in ("debug", "debug-isolated-process"),
+ "e10s": not setting["runtime"].get("1proc", False),
+ "no-fission": "no-fission" in setting["runtime"].keys(),
+ "fission": any(
+ "1proc" not in key or "no-fission" not in key
+ for key in setting["runtime"].keys()
+ ),
+ "headless": "-headless" in task["test-name"],
+ "condprof": "conditioned_profile" in setting["runtime"].keys(),
+ "tsan": setting["build"].get("tsan", False),
+ "xorigin": any("xorigin" in key for key in setting["runtime"].keys()),
+ "socketprocess_networking": "socketprocess_networking"
+ in setting["runtime"].keys(),
+ "nightly_build": repo in ["mozilla-central", "autoland", "try", ""], # trunk
+ "http3": "http3" in setting["runtime"].keys(),
+ }
+ for platform in ("android", "linux", "mac", "win"):
+ if p_os["name"].startswith(platform):
+ info["os"] = platform
+ break
+ else:
+ raise ValueError("{} is not a known platform!".format(p_os["name"]))
+
+ # crashreporter is disabled for asan / tsan builds
+ if info["asan"] or info["tsan"]:
+ info["crashreporter"] = False
+ else:
+ info["crashreporter"] = True
+
+ info["appname"] = "fennec" if info["os"] == "android" else "firefox"
+
+ # guess processor
+ if arch == "aarch64":
+ info["processor"] = "aarch64"
+ elif info["os"] == "android" and "arm" in arch:
+ info["processor"] = "arm"
+ elif info["bits"] == 32:
+ info["processor"] = "x86"
+ else:
+ info["processor"] = "x86_64"
+
+ # guess toolkit
+ if info["os"] == "android":
+ info["toolkit"] = "android"
+ elif info["os"] == "win":
+ info["toolkit"] = "windows"
+ elif info["os"] == "mac":
+ info["toolkit"] = "cocoa"
+ else:
+ info["toolkit"] = "gtk"
+
+ # guess os_version
+ os_versions = {
+ ("linux", "1804"): "18.04",
+ ("macosx", "1015"): "10.15",
+ ("macosx", "1100"): "11.00",
+ ("windows", "7"): "6.1",
+ ("windows", "10"): "10.0",
+ }
+ for (name, old_ver), new_ver in os_versions.items():
+ if p_os["name"] == name and p_os["version"] == old_ver:
+ info["os_version"] = new_ver
+ break
+
+ return info
+
+
+@memoize
+def get_runtimes(platform, suite_name):
+ if not suite_name or not platform:
+ raise TypeError("suite_name and platform cannot be empty.")
+
+ base = os.path.join(GECKO, "testing", "runtimes", "manifest-runtimes-{}.json")
+ for key in ("android", "windows"):
+ if key in platform:
+ path = base.format(key)
+ break
+ else:
+ path = base.format("unix")
+
+ if not os.path.exists(path):
+ raise OSError(f"manifest runtime file at {path} not found.")
+
+ with open(path) as fh:
+ return json.load(fh)[suite_name]
+
+
+def chunk_manifests(suite, platform, chunks, manifests):
+ """Run the chunking algorithm.
+
+ Args:
+ platform (str): Platform used to find runtime info.
+ chunks (int): Number of chunks to split manifests into.
+ manifests(list): Manifests to chunk.
+
+ Returns:
+ A list of length `chunks` where each item contains a list of manifests
+ that run in that chunk.
+ """
+ manifests = set(manifests)
+
+ if "web-platform-tests" not in suite:
+ runtimes = {
+ k: v for k, v in get_runtimes(platform, suite).items() if k in manifests
+ }
+ return [
+ c[1]
+ for c in chunk_by_runtime(None, chunks, runtimes).get_chunked_manifests(
+ manifests
+ )
+ ]
+
+ # Keep track of test paths for each chunk, and the runtime information.
+ chunked_manifests = [[] for _ in range(chunks)]
+
+ # Spread out the test manifests evenly across all chunks.
+ for index, key in enumerate(sorted(manifests)):
+ chunked_manifests[index % chunks].append(key)
+
+ # One last sort by the number of manifests. Chunk size should be more or less
+ # equal in size.
+ chunked_manifests.sort(key=lambda x: len(x))
+
+ # Return just the chunked test paths.
+ return chunked_manifests
+
+
+class BaseManifestLoader(metaclass=ABCMeta):
+ def __init__(self, params):
+ self.params = params
+
+ @abstractmethod
+ def get_manifests(self, flavor, subsuite, mozinfo):
+ """Compute which manifests should run for the given flavor, subsuite and mozinfo.
+
+ This function returns skipped manifests separately so that more balanced
+ chunks can be achieved by only considering "active" manifests in the
+ chunking algorithm.
+
+ Args:
+ flavor (str): The suite to run. Values are defined by the 'build_flavor' key
+ in `moztest.resolve.TEST_SUITES`.
+ subsuite (str): The subsuite to run or 'undefined' to denote no subsuite.
+ mozinfo (frozenset): Set of data in the form of (<key>, <value>) used
+ for filtering.
+
+ Returns:
+ A tuple of two manifest lists. The first is the set of active manifests (will
+ run at least one test. The second is a list of skipped manifests (all tests are
+ skipped).
+ """
+
+
+class DefaultLoader(BaseManifestLoader):
+ """Load manifests using metadata from the TestResolver."""
+
+ @memoize
+ def get_tests(self, suite):
+ suite_definition = TEST_SUITES[suite]
+ return list(
+ resolver.resolve_tests(
+ flavor=suite_definition["build_flavor"],
+ subsuite=suite_definition.get("kwargs", {}).get(
+ "subsuite", "undefined"
+ ),
+ )
+ )
+
+ @memoize
+ def get_manifests(self, suite, mozinfo):
+ mozinfo = dict(mozinfo)
+ # Compute all tests for the given suite/subsuite.
+ tests = self.get_tests(suite)
+
+ # TODO: the only exception here is we schedule webgpu as that is a --tag
+ if "web-platform-tests" in suite:
+ manifests = set()
+ for t in tests:
+ manifests.add(t["manifest"])
+ return {
+ "active": list(manifests),
+ "skipped": [],
+ "other_dirs": dict.fromkeys(manifests, ""),
+ }
+
+ manifests = {chunk_by_runtime.get_manifest(t) for t in tests}
+
+ filters = None
+ if mozinfo["condprof"]:
+ filters = [tags(["condprof"])]
+
+ # Compute the active tests.
+ m = TestManifest()
+ m.tests = tests
+ tests = m.active_tests(disabled=False, exists=False, filters=filters, **mozinfo)
+ active = {}
+ # map manifests and 'other' directories included
+ for t in tests:
+ mp = chunk_by_runtime.get_manifest(t)
+ active.setdefault(mp, [])
+
+ if not mp.startswith(t["dir_relpath"]):
+ active[mp].append(t["dir_relpath"])
+
+ skipped = manifests - set(active.keys())
+ other = {}
+ for m in active:
+ if len(active[m]) > 0:
+ other[m] = list(set(active[m]))
+ return {
+ "active": list(active.keys()),
+ "skipped": list(skipped),
+ "other_dirs": other,
+ }
+
+
+class BugbugLoader(DefaultLoader):
+ """Load manifests using metadata from the TestResolver, and then
+ filter them based on a query to bugbug."""
+
+ CONFIDENCE_THRESHOLD = CT_LOW
+
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ self.timedout = False
+
+ @memoize
+ def get_manifests(self, suite, mozinfo):
+ manifests = super().get_manifests(suite, mozinfo)
+
+ # Don't prune any manifests if we're on a backstop push or there was a timeout.
+ if self.params["backstop"] or self.timedout:
+ return manifests
+
+ try:
+ data = push_schedules(self.params["project"], self.params["head_rev"])
+ except BugbugTimeoutException:
+ logger.warning("Timed out waiting for bugbug, loading all test manifests.")
+ self.timedout = True
+ return self.get_manifests(suite, mozinfo)
+
+ bugbug_manifests = {
+ m
+ for m, c in data.get("groups", {}).items()
+ if c >= self.CONFIDENCE_THRESHOLD
+ }
+
+ manifests["active"] = list(set(manifests["active"]) & bugbug_manifests)
+ manifests["skipped"] = list(set(manifests["skipped"]) & bugbug_manifests)
+ return manifests
+
+
+manifest_loaders = {
+ "bugbug": BugbugLoader,
+ "default": DefaultLoader,
+}
+
+_loader_cache = {}
+
+
+def get_manifest_loader(name, params):
+ # Ensure we never create more than one instance of the same loader type for
+ # performance reasons.
+ if name in _loader_cache:
+ return _loader_cache[name]
+
+ loader = manifest_loaders[name](dict(params))
+ _loader_cache[name] = loader
+ return loader
diff --git a/taskcluster/gecko_taskgraph/util/copy_task.py b/taskcluster/gecko_taskgraph/util/copy_task.py
new file mode 100644
index 0000000000..0aaf43361e
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/util/copy_task.py
@@ -0,0 +1,40 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from mozbuild.util import ReadOnlyDict
+from taskgraph.task import Task
+
+immutable_types = {int, float, bool, str, type(None), ReadOnlyDict}
+
+
+def copy_task(obj):
+ """
+ Perform a deep copy of a task that has a tree-like structure.
+
+ Unlike copy.deepcopy, this does *not* support copying graph-like structure,
+ but it does it more efficiently than deepcopy.
+ """
+ ty = type(obj)
+ if ty in immutable_types:
+ return obj
+ if ty is dict:
+ return {k: copy_task(v) for k, v in obj.items()}
+ if ty is list:
+ return [copy_task(elt) for elt in obj]
+ if ty is Task:
+ task = Task(
+ kind=copy_task(obj.kind),
+ label=copy_task(obj.label),
+ attributes=copy_task(obj.attributes),
+ task=copy_task(obj.task),
+ description=copy_task(obj.description),
+ optimization=copy_task(obj.optimization),
+ dependencies=copy_task(obj.dependencies),
+ soft_dependencies=copy_task(obj.soft_dependencies),
+ if_dependencies=copy_task(obj.if_dependencies),
+ )
+ if obj.task_id:
+ task.task_id = obj.task_id
+ return task
+ raise NotImplementedError(f"copying '{ty}' from '{obj}'")
diff --git a/taskcluster/gecko_taskgraph/util/declarative_artifacts.py b/taskcluster/gecko_taskgraph/util/declarative_artifacts.py
new file mode 100644
index 0000000000..545472dec3
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/util/declarative_artifacts.py
@@ -0,0 +1,92 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import re
+
+from gecko_taskgraph.util.scriptworker import (
+ generate_beetmover_artifact_map,
+ generate_beetmover_upstream_artifacts,
+)
+
+_ARTIFACT_ID_PER_PLATFORM = {
+ "android-aarch64-opt": "{package}-default-arm64-v8a",
+ "android-arm-opt": "{package}-default-armeabi-v7a",
+ "android-x86-opt": "{package}-default-x86",
+ "android-x86_64-opt": "{package}-default-x86_64",
+ "android-geckoview-fat-aar-opt": "{package}-default",
+ "android-aarch64-shippable": "{package}{update_channel}-omni-arm64-v8a",
+ "android-aarch64-shippable-lite": "{package}{update_channel}-arm64-v8a",
+ "android-arm-shippable": "{package}{update_channel}-omni-armeabi-v7a",
+ "android-arm-shippable-lite": "{package}{update_channel}-armeabi-v7a",
+ "android-x86-shippable": "{package}{update_channel}-omni-x86",
+ "android-x86-shippable-lite": "{package}{update_channel}-x86",
+ "android-x86_64-shippable": "{package}{update_channel}-omni-x86_64",
+ "android-x86_64-shippable-lite": "{package}{update_channel}-x86_64",
+ "android-geckoview-fat-aar-shippable": "{package}{update_channel}-omni",
+ "android-geckoview-fat-aar-shippable-lite": "{package}{update_channel}",
+}
+
+
+def get_geckoview_artifact_map(config, job):
+ return generate_beetmover_artifact_map(
+ config,
+ job,
+ **get_geckoview_template_vars(
+ config,
+ job["attributes"]["build_platform"],
+ job["maven-package"],
+ job["attributes"].get("update-channel"),
+ ),
+ )
+
+
+def get_geckoview_upstream_artifacts(config, job, package, platform=""):
+ if not platform:
+ platform = job["attributes"]["build_platform"]
+ upstream_artifacts = generate_beetmover_upstream_artifacts(
+ config,
+ job,
+ platform="",
+ **get_geckoview_template_vars(
+ config, platform, package, job["attributes"].get("update-channel")
+ ),
+ )
+ return [
+ {key: value for key, value in upstream_artifact.items() if key != "locale"}
+ for upstream_artifact in upstream_artifacts
+ ]
+
+
+def get_geckoview_template_vars(config, platform, package, update_channel):
+ version_groups = re.match(r"(\d+).(\d+).*", config.params["version"])
+ if version_groups:
+ major_version, minor_version = version_groups.groups()
+
+ return {
+ "artifact_id": get_geckoview_artifact_id(
+ config,
+ platform,
+ package,
+ update_channel,
+ ),
+ "build_date": config.params["moz_build_date"],
+ "major_version": major_version,
+ "minor_version": minor_version,
+ }
+
+
+def get_geckoview_artifact_id(config, platform, package, update_channel=None):
+ if update_channel == "release":
+ update_channel = ""
+ elif update_channel is not None:
+ update_channel = f"-{update_channel}"
+ else:
+ # For shippable builds, mozharness defaults to using
+ # "nightly-{project}" for the update channel. For other builds, the
+ # update channel is not set, but the value is not substituted.
+ update_channel = "-nightly-{}".format(config.params["project"])
+ return _ARTIFACT_ID_PER_PLATFORM[platform].format(
+ update_channel=update_channel, package=package
+ )
diff --git a/taskcluster/gecko_taskgraph/util/docker.py b/taskcluster/gecko_taskgraph/util/docker.py
new file mode 100644
index 0000000000..e8de7d1fdb
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/util/docker.py
@@ -0,0 +1,333 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import hashlib
+import json
+import os
+import re
+import sys
+from collections.abc import Mapping
+from urllib.parse import quote, urlencode, urlunparse
+
+import requests
+import requests_unixsocket
+from mozbuild.util import memoize
+from mozpack.archive import create_tar_gz_from_files
+from mozpack.files import GeneratedFile
+from taskgraph.util.yaml import load_yaml
+
+from .. import GECKO
+
+IMAGE_DIR = os.path.join(GECKO, "taskcluster", "docker")
+
+
+def docker_url(path, **kwargs):
+ docker_socket = os.environ.get("DOCKER_SOCKET", "/var/run/docker.sock")
+ return urlunparse(
+ ("http+unix", quote(docker_socket, safe=""), path, "", urlencode(kwargs), "")
+ )
+
+
+def post_to_docker(tar, api_path, **kwargs):
+ """POSTs a tar file to a given docker API path.
+
+ The tar argument can be anything that can be passed to requests.post()
+ as data (e.g. iterator or file object).
+ The extra keyword arguments are passed as arguments to the docker API.
+ """
+ # requests-unixsocket doesn't honor requests timeouts
+ # See https://github.com/msabramo/requests-unixsocket/issues/44
+ # We have some large docker images that trigger the default timeout,
+ # so we increase the requests-unixsocket timeout here.
+ session = requests.Session()
+ session.mount(
+ requests_unixsocket.DEFAULT_SCHEME,
+ requests_unixsocket.UnixAdapter(timeout=120),
+ )
+ req = session.post(
+ docker_url(api_path, **kwargs),
+ data=tar,
+ stream=True,
+ headers={"Content-Type": "application/x-tar"},
+ )
+ if req.status_code != 200:
+ message = req.json().get("message")
+ if not message:
+ message = f"docker API returned HTTP code {req.status_code}"
+ raise Exception(message)
+ status_line = {}
+
+ buf = b""
+ for content in req.iter_content(chunk_size=None):
+ if not content:
+ continue
+ # Sometimes, a chunk of content is not a complete json, so we cumulate
+ # with leftovers from previous iterations.
+ buf += content
+ try:
+ data = json.loads(buf)
+ except Exception:
+ continue
+ buf = b""
+ # data is sometimes an empty dict.
+ if not data:
+ continue
+ # Mimick how docker itself presents the output. This code was tested
+ # with API version 1.18 and 1.26.
+ if "status" in data:
+ if "id" in data:
+ if sys.stderr.isatty():
+ total_lines = len(status_line)
+ line = status_line.setdefault(data["id"], total_lines)
+ n = total_lines - line
+ if n > 0:
+ # Move the cursor up n lines.
+ sys.stderr.write(f"\033[{n}A")
+ # Clear line and move the cursor to the beginning of it.
+ sys.stderr.write("\033[2K\r")
+ sys.stderr.write(
+ "{}: {} {}\n".format(
+ data["id"], data["status"], data.get("progress", "")
+ )
+ )
+ if n > 1:
+ # Move the cursor down n - 1 lines, which, considering
+ # the carriage return on the last write, gets us back
+ # where we started.
+ sys.stderr.write(f"\033[{n - 1}B")
+ else:
+ status = status_line.get(data["id"])
+ # Only print status changes.
+ if status != data["status"]:
+ sys.stderr.write("{}: {}\n".format(data["id"], data["status"]))
+ status_line[data["id"]] = data["status"]
+ else:
+ status_line = {}
+ sys.stderr.write("{}\n".format(data["status"]))
+ elif "stream" in data:
+ sys.stderr.write(data["stream"])
+ elif "aux" in data:
+ sys.stderr.write(repr(data["aux"]))
+ elif "error" in data:
+ sys.stderr.write("{}\n".format(data["error"]))
+ # Sadly, docker doesn't give more than a plain string for errors,
+ # so the best we can do to propagate the error code from the command
+ # that failed is to parse the error message...
+ errcode = 1
+ m = re.search(r"returned a non-zero code: (\d+)", data["error"])
+ if m:
+ errcode = int(m.group(1))
+ sys.exit(errcode)
+ else:
+ raise NotImplementedError(repr(data))
+ sys.stderr.flush()
+
+
+def docker_image(name, by_tag=False):
+ """
+ Resolve in-tree prebuilt docker image to ``<registry>/<repository>@sha256:<digest>``,
+ or ``<registry>/<repository>:<tag>`` if `by_tag` is `True`.
+ """
+ try:
+ with open(os.path.join(IMAGE_DIR, name, "REGISTRY")) as f:
+ registry = f.read().strip()
+ except OSError:
+ with open(os.path.join(IMAGE_DIR, "REGISTRY")) as f:
+ registry = f.read().strip()
+
+ if not by_tag:
+ hashfile = os.path.join(IMAGE_DIR, name, "HASH")
+ try:
+ with open(hashfile) as f:
+ return f"{registry}/{name}@{f.read().strip()}"
+ except OSError:
+ raise Exception(f"Failed to read HASH file {hashfile}")
+
+ try:
+ with open(os.path.join(IMAGE_DIR, name, "VERSION")) as f:
+ tag = f.read().strip()
+ except OSError:
+ tag = "latest"
+ return f"{registry}/{name}:{tag}"
+
+
+class VoidWriter:
+ """A file object with write capabilities that does nothing with the written
+ data."""
+
+ def write(self, buf):
+ pass
+
+
+def generate_context_hash(topsrcdir, image_path, image_name, args):
+ """Generates a sha256 hash for context directory used to build an image."""
+
+ return stream_context_tar(
+ topsrcdir, image_path, VoidWriter(), image_name, args=args
+ )
+
+
+class HashingWriter:
+ """A file object with write capabilities that hashes the written data at
+ the same time it passes down to a real file object."""
+
+ def __init__(self, writer):
+ self._hash = hashlib.sha256()
+ self._writer = writer
+
+ def write(self, buf):
+ self._hash.update(buf)
+ self._writer.write(buf)
+
+ def hexdigest(self):
+ return self._hash.hexdigest()
+
+
+def create_context_tar(topsrcdir, context_dir, out_path, image_name, args):
+ """Create a context tarball.
+
+ A directory ``context_dir`` containing a Dockerfile will be assembled into
+ a gzipped tar file at ``out_path``.
+
+ We also scan the source Dockerfile for special syntax that influences
+ context generation.
+
+ If a line in the Dockerfile has the form ``# %include <path>``,
+ the relative path specified on that line will be matched against
+ files in the source repository and added to the context under the
+ path ``topsrcdir/``. If an entry is a directory, we add all files
+ under that directory.
+
+ Returns the SHA-256 hex digest of the created archive.
+ """
+ with open(out_path, "wb") as fh:
+ return stream_context_tar(
+ topsrcdir,
+ context_dir,
+ fh,
+ image_name=image_name,
+ args=args,
+ )
+
+
+def stream_context_tar(topsrcdir, context_dir, out_file, image_name, args):
+ """Like create_context_tar, but streams the tar file to the `out_file` file
+ object."""
+ archive_files = {}
+ content = []
+
+ context_dir = os.path.join(topsrcdir, context_dir)
+
+ for root, dirs, files in os.walk(context_dir):
+ for f in files:
+ source_path = os.path.join(root, f)
+ archive_path = source_path[len(context_dir) + 1 :]
+ archive_files[archive_path] = source_path
+
+ # Parse Dockerfile for special syntax of extra files to include.
+ with open(os.path.join(context_dir, "Dockerfile"), "r") as fh:
+ for line in fh:
+ content.append(line)
+
+ if not line.startswith("# %include"):
+ continue
+
+ p = line[len("# %include ") :].strip()
+ if os.path.isabs(p):
+ raise Exception("extra include path cannot be absolute: %s" % p)
+
+ fs_path = os.path.normpath(os.path.join(topsrcdir, p))
+ # Check for filesystem traversal exploits.
+ if not fs_path.startswith(topsrcdir):
+ raise Exception("extra include path outside topsrcdir: %s" % p)
+
+ if not os.path.exists(fs_path):
+ raise Exception("extra include path does not exist: %s" % p)
+
+ if os.path.isdir(fs_path):
+ for root, dirs, files in os.walk(fs_path):
+ for f in files:
+ source_path = os.path.join(root, f)
+ rel = source_path[len(fs_path) + 1 :]
+ archive_path = os.path.join("topsrcdir", p, rel)
+ archive_files[archive_path] = source_path
+ else:
+ archive_path = os.path.join("topsrcdir", p)
+ archive_files[archive_path] = fs_path
+
+ archive_files["Dockerfile"] = GeneratedFile("".join(content).encode("utf-8"))
+
+ writer = HashingWriter(out_file)
+ create_tar_gz_from_files(writer, archive_files, f"{image_name}.tar")
+ return writer.hexdigest()
+
+
+class ImagePathsMap(Mapping):
+ """ImagePathsMap contains the mapping of Docker image names to their
+ context location in the filesystem. The register function allows Thunderbird
+ to define additional images under comm/taskcluster.
+ """
+
+ def __init__(self, config_path, image_dir=IMAGE_DIR):
+ config = load_yaml(GECKO, config_path)
+ self.__update_image_paths(config["jobs"], image_dir)
+
+ def __getitem__(self, key):
+ return self.__dict__[key]
+
+ def __iter__(self):
+ return iter(self.__dict__)
+
+ def __len__(self):
+ return len(self.__dict__)
+
+ def __update_image_paths(self, jobs, image_dir):
+ self.__dict__.update(
+ {
+ k: os.path.join(image_dir, v.get("definition", k))
+ for k, v in jobs.items()
+ }
+ )
+
+ def register(self, jobs_config_path, image_dir):
+ """Register additional image_paths. In this case, there is no 'jobs'
+ key in the loaded YAML as this file is loaded via jobs-from in kind.yml."""
+ jobs = load_yaml(GECKO, jobs_config_path)
+ self.__update_image_paths(jobs, image_dir)
+
+
+image_paths = ImagePathsMap("taskcluster/ci/docker-image/kind.yml")
+
+
+def image_path(name):
+ if name in image_paths:
+ return image_paths[name]
+ return os.path.join(IMAGE_DIR, name)
+
+
+@memoize
+def parse_volumes(image):
+ """Parse VOLUME entries from a Dockerfile for an image."""
+ volumes = set()
+
+ path = image_path(image)
+
+ with open(os.path.join(path, "Dockerfile"), "rb") as fh:
+ for line in fh:
+ line = line.strip()
+ # We assume VOLUME definitions don't use ARGS.
+ if not line.startswith(b"VOLUME "):
+ continue
+
+ v = line.split(None, 1)[1]
+ if v.startswith(b"["):
+ raise ValueError(
+ "cannot parse array syntax for VOLUME; "
+ "convert to multiple entries"
+ )
+
+ volumes |= {v.decode("utf-8") for v in v.split()}
+
+ return volumes
diff --git a/taskcluster/gecko_taskgraph/util/hash.py b/taskcluster/gecko_taskgraph/util/hash.py
new file mode 100644
index 0000000000..485c9a7c48
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/util/hash.py
@@ -0,0 +1,68 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import hashlib
+
+import mozpack.path as mozpath
+from mozbuild.util import memoize
+from mozversioncontrol import get_repository_object
+
+
+@memoize
+def hash_path(path):
+ """Hash a single file.
+
+ Returns the SHA-256 hash in hex form.
+ """
+ with open(path, mode="rb") as fh:
+ return hashlib.sha256(fh.read()).hexdigest()
+
+
+@memoize
+def get_file_finder(base_path):
+ from pathlib import Path
+
+ repo = get_repository_object(base_path)
+ if repo:
+ files = repo.get_tracked_files_finder(base_path)
+ if files:
+ return files
+ else:
+ return None
+ else:
+ return get_repository_object(Path(base_path)).get_tracked_files_finder(
+ base_path
+ )
+
+
+def hash_paths(base_path, patterns):
+ """
+ Give a list of path patterns, return a digest of the contents of all
+ the corresponding files, similarly to git tree objects or mercurial
+ manifests.
+
+ Each file is hashed. The list of all hashes and file paths is then
+ itself hashed to produce the result.
+ """
+ finder = get_file_finder(base_path)
+ h = hashlib.sha256()
+ files = {}
+ if finder:
+ for pattern in patterns:
+ found = list(finder.find(pattern))
+ if found:
+ files.update(found)
+ else:
+ raise Exception("%s did not match anything" % pattern)
+ for path in sorted(files.keys()):
+ if path.endswith((".pyc", ".pyd", ".pyo")):
+ continue
+ h.update(
+ "{} {}\n".format(
+ hash_path(mozpath.abspath(mozpath.join(base_path, path))),
+ mozpath.normsep(path),
+ ).encode("utf-8")
+ )
+
+ return h.hexdigest()
diff --git a/taskcluster/gecko_taskgraph/util/hg.py b/taskcluster/gecko_taskgraph/util/hg.py
new file mode 100644
index 0000000000..18a92fbd0d
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/util/hg.py
@@ -0,0 +1,139 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import logging
+import subprocess
+
+import requests
+from mozbuild.util import memoize
+from redo import retry
+
+logger = logging.getLogger(__name__)
+
+PUSHLOG_CHANGESET_TMPL = (
+ "{repository}/json-pushes?version=2&changeset={revision}&tipsonly=1"
+)
+PUSHLOG_PUSHES_TMPL = (
+ "{repository}/json-pushes/?version=2&startID={push_id_start}&endID={push_id_end}"
+)
+
+
+def _query_pushlog(url):
+ response = retry(
+ requests.get,
+ attempts=5,
+ sleeptime=10,
+ args=(url,),
+ kwargs={"timeout": 60, "headers": {"User-Agent": "TaskCluster"}},
+ )
+
+ return response.json()["pushes"]
+
+
+def find_hg_revision_push_info(repository, revision):
+ """Given the parameters for this action and a revision, find the
+ pushlog_id of the revision."""
+ url = PUSHLOG_CHANGESET_TMPL.format(repository=repository, revision=revision)
+
+ pushes = _query_pushlog(url)
+
+ if len(pushes) != 1:
+ raise RuntimeError(
+ "Found {} pushlog_ids, expected 1, for {} revision {}: {}".format(
+ len(pushes), repository, revision, pushes
+ )
+ )
+
+ pushid = list(pushes.keys())[0]
+ return {
+ "pushdate": pushes[pushid]["date"],
+ "pushid": pushid,
+ "user": pushes[pushid]["user"],
+ }
+
+
+@memoize
+def get_push_data(repository, project, push_id_start, push_id_end):
+ url = PUSHLOG_PUSHES_TMPL.format(
+ repository=repository,
+ push_id_start=push_id_start - 1,
+ push_id_end=push_id_end,
+ )
+
+ try:
+ pushes = _query_pushlog(url)
+
+ return {
+ push_id: pushes[str(push_id)]
+ for push_id in range(push_id_start, push_id_end + 1)
+ }
+
+ # In the event of request times out, requests will raise a TimeoutError.
+ except requests.exceptions.Timeout:
+ logger.warning("json-pushes timeout")
+
+ # In the event of a network problem (e.g. DNS failure, refused connection, etc),
+ # requests will raise a ConnectionError.
+ except requests.exceptions.ConnectionError:
+ logger.warning("json-pushes connection error")
+
+ # In the event of the rare invalid HTTP response(e.g 404, 401),
+ # requests will raise an HTTPError exception
+ except requests.exceptions.HTTPError:
+ logger.warning("Bad Http response")
+
+ # When we get invalid JSON (i.e. 500 error), it results in a ValueError (bug 1313426)
+ except ValueError as error:
+ logger.warning(f"Invalid JSON, possible server error: {error}")
+
+ # We just print the error out as a debug message if we failed to catch the exception above
+ except requests.exceptions.RequestException as error:
+ logger.warning(error)
+
+ return None
+
+
+@memoize
+def get_json_automationrelevance(repository, revision):
+ url = "{}/json-automationrelevance/{}".format(repository.rstrip("/"), revision)
+ logger.debug("Querying version control for metadata: %s", url)
+
+ def get_automationrelevance():
+ response = requests.get(url, timeout=30)
+ return response.json()
+
+ return retry(get_automationrelevance, attempts=10, sleeptime=10)
+
+
+def get_hg_revision_branch(root, revision):
+ """Given the parameters for a revision, find the hg_branch (aka
+ relbranch) of the revision."""
+ return subprocess.check_output(
+ [
+ "hg",
+ "identify",
+ "-T",
+ "{branch}",
+ "--rev",
+ revision,
+ ],
+ cwd=root,
+ universal_newlines=True,
+ )
+
+
+# For these functions, we assume that run-task has correctly checked out the
+# revision indicated by GECKO_HEAD_REF, so all that remains is to see what the
+# current revision is. Mercurial refers to that as `.`.
+def get_hg_commit_message(root, rev="."):
+ return subprocess.check_output(
+ ["hg", "log", "-r", rev, "-T", "{desc}"], cwd=root, universal_newlines=True
+ )
+
+
+def calculate_head_rev(root):
+ return subprocess.check_output(
+ ["hg", "log", "-r", ".", "-T", "{node}"], cwd=root, universal_newlines=True
+ )
diff --git a/taskcluster/gecko_taskgraph/util/partials.py b/taskcluster/gecko_taskgraph/util/partials.py
new file mode 100644
index 0000000000..1a3affcc42
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/util/partials.py
@@ -0,0 +1,297 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import logging
+
+import redo
+import requests
+
+from gecko_taskgraph.util.scriptworker import (
+ BALROG_SCOPE_ALIAS_TO_PROJECT,
+ BALROG_SERVER_SCOPES,
+)
+
+logger = logging.getLogger(__name__)
+
+PLATFORM_RENAMES = {
+ "windows2012-32": "win32",
+ "windows2012-64": "win64",
+ "windows2012-aarch64": "win64-aarch64",
+ "osx-cross": "macosx64",
+ "osx": "macosx64",
+}
+
+BALROG_PLATFORM_MAP = {
+ "linux": ["Linux_x86-gcc3"],
+ "linux32": ["Linux_x86-gcc3"],
+ "linux64": ["Linux_x86_64-gcc3"],
+ "linux64-asan-reporter": ["Linux_x86_64-gcc3-asan"],
+ "macosx64": [
+ "Darwin_x86_64-gcc3-u-i386-x86_64",
+ "Darwin_x86-gcc3-u-i386-x86_64",
+ "Darwin_aarch64-gcc3",
+ "Darwin_x86-gcc3",
+ "Darwin_x86_64-gcc3",
+ ],
+ "win32": ["WINNT_x86-msvc", "WINNT_x86-msvc-x86", "WINNT_x86-msvc-x64"],
+ "win64": ["WINNT_x86_64-msvc", "WINNT_x86_64-msvc-x64"],
+ "win64-asan-reporter": ["WINNT_x86_64-msvc-x64-asan"],
+ "win64-aarch64": [
+ "WINNT_aarch64-msvc-aarch64",
+ ],
+}
+
+FTP_PLATFORM_MAP = {
+ "Darwin_x86-gcc3": "mac",
+ "Darwin_x86-gcc3-u-i386-x86_64": "mac",
+ "Darwin_x86_64-gcc3": "mac",
+ "Darwin_x86_64-gcc3-u-i386-x86_64": "mac",
+ "Darwin_aarch64-gcc3": "mac",
+ "Linux_x86-gcc3": "linux-i686",
+ "Linux_x86_64-gcc3": "linux-x86_64",
+ "Linux_x86_64-gcc3-asan": "linux-x86_64-asan-reporter",
+ "WINNT_x86_64-msvc-x64-asan": "win64-asan-reporter",
+ "WINNT_x86-msvc": "win32",
+ "WINNT_x86-msvc-x64": "win32",
+ "WINNT_x86-msvc-x86": "win32",
+ "WINNT_x86_64-msvc": "win64",
+ "WINNT_x86_64-msvc-x64": "win64",
+ "WINNT_aarch64-msvc-aarch64": "win64-aarch64",
+}
+
+
+def get_balrog_platform_name(platform):
+ """Convert build platform names into balrog platform names.
+
+ Remove known values instead to catch aarch64 and other platforms
+ that may be added.
+ """
+ removals = ["-devedition", "-shippable"]
+ for remove in removals:
+ platform = platform.replace(remove, "")
+ return PLATFORM_RENAMES.get(platform, platform)
+
+
+def _sanitize_platform(platform):
+ platform = get_balrog_platform_name(platform)
+ if platform not in BALROG_PLATFORM_MAP:
+ return platform
+ return BALROG_PLATFORM_MAP[platform][0]
+
+
+def get_builds(release_history, platform, locale):
+ """Examine cached balrog release history and return the list of
+ builds we need to generate diffs from"""
+ platform = _sanitize_platform(platform)
+ return release_history.get(platform, {}).get(locale, {})
+
+
+def get_partials_artifacts_from_params(release_history, platform, locale):
+ platform = _sanitize_platform(platform)
+ return [
+ (artifact, details.get("previousVersion", None))
+ for artifact, details in release_history.get(platform, {})
+ .get(locale, {})
+ .items()
+ ]
+
+
+def get_partials_info_from_params(release_history, platform, locale):
+ platform = _sanitize_platform(platform)
+
+ artifact_map = {}
+ for k in release_history.get(platform, {}).get(locale, {}):
+ details = release_history[platform][locale][k]
+ attributes = ("buildid", "previousBuildNumber", "previousVersion")
+ artifact_map[k] = {
+ attr: details[attr] for attr in attributes if attr in details
+ }
+ return artifact_map
+
+
+def _retry_on_http_errors(url, verify, params, errors):
+ if params:
+ params_str = "&".join("=".join([k, str(v)]) for k, v in params.items())
+ else:
+ params_str = ""
+ logger.info("Connecting to %s?%s", url, params_str)
+ for _ in redo.retrier(sleeptime=5, max_sleeptime=30, attempts=10):
+ try:
+ req = requests.get(url, verify=verify, params=params, timeout=10)
+ req.raise_for_status()
+ return req
+ except requests.HTTPError as e:
+ if e.response.status_code in errors:
+ logger.exception(
+ "Got HTTP %s trying to reach %s", e.response.status_code, url
+ )
+ else:
+ raise
+ else:
+ raise Exception(f"Cannot connect to {url}!")
+
+
+def get_sorted_releases(product, branch):
+ """Returns a list of release names from Balrog.
+ :param product: product name, AKA appName
+ :param branch: branch name, e.g. mozilla-central
+ :return: a sorted list of release names, most recent first.
+ """
+ url = f"{_get_balrog_api_root(branch)}/releases"
+ params = {
+ "product": product,
+ # Adding -nightly-2 (2 stands for the beginning of build ID
+ # based on date) should filter out release and latest blobs.
+ # This should be changed to -nightly-3 in 3000 ;)
+ "name_prefix": f"{product}-{branch}-nightly-2",
+ "names_only": True,
+ }
+ req = _retry_on_http_errors(url=url, verify=True, params=params, errors=[500])
+ releases = req.json()["names"]
+ releases = sorted(releases, reverse=True)
+ return releases
+
+
+def get_release_builds(release, branch):
+ url = f"{_get_balrog_api_root(branch)}/releases/{release}"
+ req = _retry_on_http_errors(url=url, verify=True, params=None, errors=[500])
+ return req.json()
+
+
+def _get_balrog_api_root(branch):
+ # Query into the scopes scriptworker uses to make sure we check against the same balrog server
+ # That our jobs would use.
+ scope = None
+ for alias, projects in BALROG_SCOPE_ALIAS_TO_PROJECT:
+ if branch in projects and alias in BALROG_SERVER_SCOPES:
+ scope = BALROG_SERVER_SCOPES[alias]
+ break
+ else:
+ scope = BALROG_SERVER_SCOPES["default"]
+
+ if scope == "balrog:server:dep":
+ return "https://stage.balrog.nonprod.cloudops.mozgcp.net/api/v1"
+ return "https://aus5.mozilla.org/api/v1"
+
+
+def find_localtest(fileUrls):
+ for channel in fileUrls:
+ if "-localtest" in channel:
+ return channel
+
+
+def populate_release_history(
+ product, branch, maxbuilds=4, maxsearch=10, partial_updates=None
+):
+ # Assuming we are using release branches when we know the list of previous
+ # releases in advance
+ if partial_updates is not None:
+ return _populate_release_history(
+ product, branch, partial_updates=partial_updates
+ )
+ return _populate_nightly_history(
+ product, branch, maxbuilds=maxbuilds, maxsearch=maxsearch
+ )
+
+
+def _populate_nightly_history(product, branch, maxbuilds=4, maxsearch=10):
+ """Find relevant releases in Balrog
+ Not all releases have all platforms and locales, due
+ to Taskcluster migration.
+
+ Args:
+ product (str): capitalized product name, AKA appName, e.g. Firefox
+ branch (str): branch name (mozilla-central)
+ maxbuilds (int): Maximum number of historical releases to populate
+ maxsearch(int): Traverse at most this many releases, to avoid
+ working through the entire history.
+ Returns:
+ json object based on data from balrog api
+
+ results = {
+ 'platform1': {
+ 'locale1': {
+ 'buildid1': mar_url,
+ 'buildid2': mar_url,
+ 'buildid3': mar_url,
+ },
+ 'locale2': {
+ 'target.partial-1.mar': {'buildid1': 'mar_url'},
+ }
+ },
+ 'platform2': {
+ }
+ }
+ """
+ last_releases = get_sorted_releases(product, branch)
+
+ partial_mar_tmpl = "target.partial-{}.mar"
+
+ builds = dict()
+ for release in last_releases[:maxsearch]:
+ # maxbuilds in all categories, don't make any more queries
+ full = len(builds) > 0 and all(
+ len(builds[platform][locale]) >= maxbuilds
+ for platform in builds
+ for locale in builds[platform]
+ )
+ if full:
+ break
+ history = get_release_builds(release, branch)
+
+ for platform in history["platforms"]:
+ if "alias" in history["platforms"][platform]:
+ continue
+ if platform not in builds:
+ builds[platform] = dict()
+ for locale in history["platforms"][platform]["locales"]:
+ if locale not in builds[platform]:
+ builds[platform][locale] = dict()
+ if len(builds[platform][locale]) >= maxbuilds:
+ continue
+ buildid = history["platforms"][platform]["locales"][locale]["buildID"]
+ url = history["platforms"][platform]["locales"][locale]["completes"][0][
+ "fileUrl"
+ ]
+ nextkey = len(builds[platform][locale]) + 1
+ builds[platform][locale][partial_mar_tmpl.format(nextkey)] = {
+ "buildid": buildid,
+ "mar_url": url,
+ }
+ return builds
+
+
+def _populate_release_history(product, branch, partial_updates):
+ builds = dict()
+ for version, release in partial_updates.items():
+ prev_release_blob = "{product}-{version}-build{build_number}".format(
+ product=product, version=version, build_number=release["buildNumber"]
+ )
+ partial_mar_key = f"target-{version}.partial.mar"
+ history = get_release_builds(prev_release_blob, branch)
+ # use one of the localtest channels to avoid relying on bouncer
+ localtest = find_localtest(history["fileUrls"])
+ url_pattern = history["fileUrls"][localtest]["completes"]["*"]
+
+ for platform in history["platforms"]:
+ if "alias" in history["platforms"][platform]:
+ continue
+ if platform not in builds:
+ builds[platform] = dict()
+ for locale in history["platforms"][platform]["locales"]:
+ if locale not in builds[platform]:
+ builds[platform][locale] = dict()
+ buildid = history["platforms"][platform]["locales"][locale]["buildID"]
+ url = url_pattern.replace(
+ "%OS_FTP%", FTP_PLATFORM_MAP[platform]
+ ).replace("%LOCALE%", locale)
+ builds[platform][locale][partial_mar_key] = {
+ "buildid": buildid,
+ "mar_url": url,
+ "previousVersion": version,
+ "previousBuildNumber": release["buildNumber"],
+ "product": product,
+ }
+ return builds
diff --git a/taskcluster/gecko_taskgraph/util/partners.py b/taskcluster/gecko_taskgraph/util/partners.py
new file mode 100644
index 0000000000..2546e1ae88
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/util/partners.py
@@ -0,0 +1,555 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import json
+import logging
+import os
+import xml.etree.ElementTree as ET
+from urllib.parse import urlencode
+
+import requests
+import yaml
+from redo import retry
+from taskgraph.util.schema import resolve_keyed_by
+
+from gecko_taskgraph.util.attributes import release_level
+from gecko_taskgraph.util.copy_task import copy_task
+
+# Suppress chatty requests logging
+logging.getLogger("requests").setLevel(logging.WARNING)
+
+log = logging.getLogger(__name__)
+
+GITHUB_API_ENDPOINT = "https://api.github.com/graphql"
+
+"""
+LOGIN_QUERY, MANIFEST_QUERY, and REPACK_CFG_QUERY are all written to the Github v4 API,
+which users GraphQL. See https://developer.github.com/v4/
+"""
+
+LOGIN_QUERY = """query {
+ viewer {
+ login
+ name
+ }
+}
+"""
+
+# Returns the contents of default.xml from a manifest repository
+MANIFEST_QUERY = """query {
+ repository(owner:"%(owner)s", name:"%(repo)s") {
+ object(expression: "master:%(file)s") {
+ ... on Blob {
+ text
+ }
+ }
+ }
+}
+"""
+# Example response:
+# {
+# "data": {
+# "repository": {
+# "object": {
+# "text": "<?xml version=\"1.0\" ?>\n<manifest>\n " +
+# "<remote fetch=\"git@github.com:mozilla-partners/\" name=\"mozilla-partners\"/>\n " +
+# "<remote fetch=\"git@github.com:mozilla/\" name=\"mozilla\"/>\n\n " +
+# "<project name=\"repack-scripts\" path=\"scripts\" remote=\"mozilla-partners\" " +
+# "revision=\"master\"/>\n <project name=\"build-tools\" path=\"scripts/tools\" " +
+# "remote=\"mozilla\" revision=\"master\"/>\n <project name=\"mozilla-EME-free\" " +
+# "path=\"partners/mozilla-EME-free\" remote=\"mozilla-partners\" " +
+# "revision=\"master\"/>\n</manifest>\n"
+# }
+# }
+# }
+# }
+
+# Returns the contents of desktop/*/repack.cfg for a partner repository
+REPACK_CFG_QUERY = """query{
+ repository(owner:"%(owner)s", name:"%(repo)s") {
+ object(expression: "%(revision)s:desktop/"){
+ ... on Tree {
+ entries {
+ name
+ object {
+ ... on Tree {
+ entries {
+ name
+ object {
+ ... on Blob {
+ text
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+"""
+# Example response:
+# {
+# "data": {
+# "repository": {
+# "object": {
+# "entries": [
+# {
+# "name": "mozilla-EME-free",
+# "object": {
+# "entries": [
+# {
+# "name": "distribution",
+# "object": {}
+# },
+# {
+# "name": "repack.cfg",
+# "object": {
+# "text": "aus=\"mozilla-EMEfree\"\ndist_id=\"mozilla-EMEfree\"\n" +
+# "dist_version=\"1.0\"\nlinux-i686=true\nlinux-x86_64=true\n" +
+# " locales=\"ach af de en-US\"\nmac=true\nwin32=true\nwin64=true\n" +
+# "output_dir=\"%(platform)s-EME-free/%(locale)s\"\n\n" +
+# "# Upload params\nbucket=\"net-mozaws-prod-delivery-firefox\"\n" +
+# "upload_to_candidates=true\n"
+# }
+# }
+# ]
+# }
+# }
+# ]
+# }
+# }
+# }
+# }
+
+# Map platforms in repack.cfg into their equivalents in taskcluster
+TC_PLATFORM_PER_FTP = {
+ "linux-i686": "linux-shippable",
+ "linux-x86_64": "linux64-shippable",
+ "mac": "macosx64-shippable",
+ "win32": "win32-shippable",
+ "win64": "win64-shippable",
+ "win64-aarch64": "win64-aarch64-shippable",
+}
+
+TASKCLUSTER_PROXY_SECRET_ROOT = "http://taskcluster/secrets/v1/secret"
+
+LOCALES_FILE = os.path.join(
+ os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__)))),
+ "browser",
+ "locales",
+ "l10n-changesets.json",
+)
+
+# cache data at the module level
+partner_configs = {}
+
+
+def get_token(params):
+ """We use a Personal Access Token from Github to lookup partner config. No extra scopes are
+ needed on the token to read public repositories, but need the 'repo' scope to see private
+ repositories. This is not fine grained and also grants r/w access, but is revoked at the repo
+ level.
+ """
+
+ # Allow for local taskgraph debugging
+ if os.environ.get("GITHUB_API_TOKEN"):
+ return os.environ["GITHUB_API_TOKEN"]
+
+ # The 'usual' method - via taskClusterProxy for decision tasks
+ url = "{secret_root}/project/releng/gecko/build/level-{level}/partner-github-api".format(
+ secret_root=TASKCLUSTER_PROXY_SECRET_ROOT, **params
+ )
+ try:
+ resp = retry(
+ requests.get,
+ attempts=2,
+ sleeptime=10,
+ args=(url,),
+ kwargs={"timeout": 60, "headers": ""},
+ )
+ j = resp.json()
+ return j["secret"]["key"]
+ except (requests.ConnectionError, ValueError, KeyError):
+ raise RuntimeError("Could not get Github API token to lookup partner data")
+
+
+def query_api(query, token):
+ """Make a query with a Github auth header, returning the json"""
+ headers = {"Authorization": "bearer %s" % token}
+ r = requests.post(GITHUB_API_ENDPOINT, json={"query": query}, headers=headers)
+ r.raise_for_status()
+
+ j = r.json()
+ if "errors" in j:
+ raise RuntimeError("Github query error - %s", j["errors"])
+ return j
+
+
+def check_login(token):
+ log.debug("Checking we have a valid login")
+ query_api(LOGIN_QUERY, token)
+
+
+def get_repo_params(repo):
+ """Parse the organisation and repo name from an https or git url for a repo"""
+ if repo.startswith("https"):
+ # eg https://github.com/mozilla-partners/mozilla-EME-free
+ return repo.rsplit("/", 2)[-2:]
+ if repo.startswith("git@"):
+ # eg git@github.com:mozilla-partners/mailru.git
+ repo = repo.replace(".git", "")
+ return repo.split(":")[-1].split("/")
+
+
+def get_partners(manifestRepo, token):
+ """Given the url to a manifest repository, retrieve the default.xml and parse it into a
+ list of partner repos.
+ """
+ log.debug("Querying for manifest default.xml in %s", manifestRepo)
+ owner, repo = get_repo_params(manifestRepo)
+ query = MANIFEST_QUERY % {"owner": owner, "repo": repo, "file": "default.xml"}
+ raw_manifest = query_api(query, token)
+ log.debug("Raw manifest: %s", raw_manifest)
+ if not raw_manifest["data"]["repository"]:
+ raise RuntimeError(
+ "Couldn't load partner manifest at %s, insufficient permissions ?"
+ % manifestRepo
+ )
+ e = ET.fromstring(raw_manifest["data"]["repository"]["object"]["text"])
+
+ remotes = {}
+ partners = {}
+ for child in e:
+ if child.tag == "remote":
+ name = child.attrib["name"]
+ url = child.attrib["fetch"]
+ remotes[name] = url
+ log.debug("Added remote %s at %s", name, url)
+ elif child.tag == "project":
+ # we don't need to check any code repos
+ if "scripts" in child.attrib["path"]:
+ continue
+ owner, _ = get_repo_params(remotes[child.attrib["remote"]] + "_")
+ partner_url = {
+ "owner": owner,
+ "repo": child.attrib["name"],
+ "revision": child.attrib["revision"],
+ }
+ partners[child.attrib["name"]] = partner_url
+ log.debug(
+ "Added partner %s at revision %s"
+ % (partner_url["repo"], partner_url["revision"])
+ )
+ return partners
+
+
+def parse_config(data):
+ """Parse a single repack.cfg file into a python dictionary.
+ data is contents of the file, in "foo=bar\nbaz=buzz" style. We do some translation on
+ locales and platforms data, otherwise passthrough
+ """
+ ALLOWED_KEYS = (
+ "locales",
+ "platforms",
+ "upload_to_candidates",
+ "repack_stub_installer",
+ "publish_to_releases",
+ )
+ config = {"platforms": []}
+ for l in data.splitlines():
+ if "=" in l:
+ l = str(l)
+ key, value = l.split("=", 1)
+ value = value.strip("'\"").rstrip("'\"")
+ if key in TC_PLATFORM_PER_FTP.keys():
+ if value.lower() == "true":
+ config["platforms"].append(TC_PLATFORM_PER_FTP[key])
+ continue
+ if key not in ALLOWED_KEYS:
+ continue
+ if key == "locales":
+ # a list please
+ value = value.split(" ")
+ config[key] = value
+ return config
+
+
+def get_repack_configs(repackRepo, token):
+ """For a partner repository, retrieve all the repack.cfg files and parse them into a dict"""
+ log.debug("Querying for configs in %s", repackRepo)
+ query = REPACK_CFG_QUERY % repackRepo
+ raw_configs = query_api(query, token)
+ raw_configs = raw_configs["data"]["repository"]["object"]["entries"]
+
+ configs = {}
+ for sub_config in raw_configs:
+ name = sub_config["name"]
+ for file in sub_config["object"].get("entries", []):
+ if file["name"] != "repack.cfg":
+ continue
+ configs[name] = parse_config(file["object"]["text"])
+ return configs
+
+
+def get_attribution_config(manifestRepo, token):
+ log.debug("Querying for manifest attribution_config.yml in %s", manifestRepo)
+ owner, repo = get_repo_params(manifestRepo)
+ query = MANIFEST_QUERY % {
+ "owner": owner,
+ "repo": repo,
+ "file": "attribution_config.yml",
+ }
+ raw_manifest = query_api(query, token)
+ if not raw_manifest["data"]["repository"]:
+ raise RuntimeError(
+ "Couldn't load partner manifest at %s, insufficient permissions ?"
+ % manifestRepo
+ )
+ # no file has been set up, gracefully continue
+ if raw_manifest["data"]["repository"]["object"] is None:
+ log.debug("No attribution_config.yml file found")
+ return {}
+
+ return yaml.safe_load(raw_manifest["data"]["repository"]["object"]["text"])
+
+
+def get_partner_config_by_url(manifest_url, kind, token, partner_subset=None):
+ """Retrieve partner data starting from the manifest url, which points to a repository
+ containing a default.xml that is intended to be drive the Google tool 'repo'. It
+ descends into each partner repo to lookup and parse the repack.cfg file(s).
+
+ If partner_subset is a list of sub_config names only return data for those.
+
+ Supports caching data by kind to avoid repeated requests, relying on the related kinds for
+ partner repacking, signing, repackage, repackage signing all having the same kind prefix.
+ """
+ if not manifest_url:
+ raise RuntimeError(f"Manifest url for {kind} not defined")
+ if kind not in partner_configs:
+ log.info("Looking up data for %s from %s", kind, manifest_url)
+ check_login(token)
+ if kind == "release-partner-attribution":
+ partner_configs[kind] = get_attribution_config(manifest_url, token)
+ else:
+ partners = get_partners(manifest_url, token)
+
+ partner_configs[kind] = {}
+ for partner, partner_url in partners.items():
+ if partner_subset and partner not in partner_subset:
+ continue
+ partner_configs[kind][partner] = get_repack_configs(partner_url, token)
+
+ return partner_configs[kind]
+
+
+def check_if_partners_enabled(config, tasks):
+ if (
+ (
+ config.params["release_enable_partner_repack"]
+ and config.kind.startswith("release-partner-repack")
+ )
+ or (
+ config.params["release_enable_partner_attribution"]
+ and config.kind.startswith("release-partner-attribution")
+ )
+ or (
+ config.params["release_enable_emefree"]
+ and config.kind.startswith("release-eme-free-")
+ )
+ ):
+ yield from tasks
+
+
+def get_partner_config_by_kind(config, kind):
+ """Retrieve partner data starting from the manifest url, which points to a repository
+ containing a default.xml that is intended to be drive the Google tool 'repo'. It
+ descends into each partner repo to lookup and parse the repack.cfg file(s).
+
+ Supports caching data by kind to avoid repeated requests, relying on the related kinds for
+ partner repacking, signing, repackage, repackage signing all having the same kind prefix.
+ """
+ partner_subset = config.params["release_partners"]
+ partner_configs = config.params["release_partner_config"] or {}
+
+ # TODO eme-free should be a partner; we shouldn't care about per-kind
+ for k in partner_configs:
+ if kind.startswith(k):
+ kind_config = partner_configs[k]
+ break
+ else:
+ return {}
+ # if we're only interested in a subset of partners we remove the rest
+ if partner_subset:
+ if kind.startswith("release-partner-repack"):
+ # TODO - should be fatal to have an unknown partner in partner_subset
+ for partner in [p for p in kind_config.keys() if p not in partner_subset]:
+ del kind_config[partner]
+ elif kind.startswith("release-partner-attribution") and isinstance(
+ kind_config, dict
+ ):
+ all_configs = copy_task(kind_config.get("configs", []))
+ kind_config["configs"] = []
+ for this_config in all_configs:
+ if this_config["campaign"] in partner_subset:
+ kind_config["configs"].append(this_config)
+ return kind_config
+
+
+def _fix_subpartner_locales(orig_config, all_locales):
+ subpartner_config = copy_task(orig_config)
+ # Get an ordered list of subpartner locales that is a subset of all_locales
+ subpartner_config["locales"] = sorted(
+ list(set(orig_config["locales"]) & set(all_locales))
+ )
+ return subpartner_config
+
+
+def fix_partner_config(orig_config):
+ pc = {}
+ with open(LOCALES_FILE) as fh:
+ all_locales = list(json.load(fh).keys())
+ # l10n-changesets.json doesn't include en-US, but the repack list does
+ if "en-US" not in all_locales:
+ all_locales.append("en-US")
+ for kind, kind_config in orig_config.items():
+ if kind == "release-partner-attribution":
+ pc[kind] = {}
+ if kind_config:
+ pc[kind] = {"defaults": kind_config["defaults"]}
+ for config in kind_config["configs"]:
+ # Make sure our locale list is a subset of all_locales
+ pc[kind].setdefault("configs", []).append(
+ _fix_subpartner_locales(config, all_locales)
+ )
+ else:
+ for partner, partner_config in kind_config.items():
+ for subpartner, subpartner_config in partner_config.items():
+ # get rid of empty subpartner configs
+ if not subpartner_config:
+ continue
+ # Make sure our locale list is a subset of all_locales
+ pc.setdefault(kind, {}).setdefault(partner, {})[
+ subpartner
+ ] = _fix_subpartner_locales(subpartner_config, all_locales)
+ return pc
+
+
+# seems likely this exists elsewhere already
+def get_ftp_platform(platform):
+ if platform.startswith("win32"):
+ return "win32"
+ if platform.startswith("win64-aarch64"):
+ return "win64-aarch64"
+ if platform.startswith("win64"):
+ return "win64"
+ if platform.startswith("macosx"):
+ return "mac"
+ if platform.startswith("linux-"):
+ return "linux-i686"
+ if platform.startswith("linux64"):
+ return "linux-x86_64"
+ raise ValueError(f"Unimplemented platform {platform}")
+
+
+# Ugh
+def locales_per_build_platform(build_platform, locales):
+ if build_platform.startswith("mac"):
+ exclude = ["ja"]
+ else:
+ exclude = ["ja-JP-mac"]
+ return [locale for locale in locales if locale not in exclude]
+
+
+def get_partner_url_config(parameters, graph_config):
+ partner_url_config = copy_task(graph_config["partner-urls"])
+ substitutions = {
+ "release-product": parameters["release_product"],
+ "release-level": release_level(parameters["project"]),
+ "release-type": parameters["release_type"],
+ }
+ resolve_keyed_by(
+ partner_url_config,
+ "release-eme-free-repack",
+ "eme-free manifest_url",
+ **substitutions,
+ )
+ resolve_keyed_by(
+ partner_url_config,
+ "release-partner-repack",
+ "partner manifest url",
+ **substitutions,
+ )
+ resolve_keyed_by(
+ partner_url_config,
+ "release-partner-attribution",
+ "partner attribution url",
+ **substitutions,
+ )
+ return partner_url_config
+
+
+def get_repack_ids_by_platform(config, build_platform):
+ partner_config = get_partner_config_by_kind(config, config.kind)
+ combinations = []
+ for partner, subconfigs in partner_config.items():
+ for sub_config_name, sub_config in subconfigs.items():
+ if build_platform not in sub_config.get("platforms", []):
+ continue
+ locales = locales_per_build_platform(
+ build_platform, sub_config.get("locales", [])
+ )
+ for locale in locales:
+ combinations.append(f"{partner}/{sub_config_name}/{locale}")
+ return sorted(combinations)
+
+
+def get_partners_to_be_published(config):
+ # hardcoded kind because release-bouncer-aliases doesn't match otherwise
+ partner_config = get_partner_config_by_kind(config, "release-partner-repack")
+ partners = []
+ for partner, subconfigs in partner_config.items():
+ for sub_config_name, sub_config in subconfigs.items():
+ if sub_config.get("publish_to_releases"):
+ partners.append((partner, sub_config_name, sub_config["platforms"]))
+ return partners
+
+
+def apply_partner_priority(config, jobs):
+ priority = None
+ # Reduce the priority of the partner repack jobs because they don't block QE. Meanwhile
+ # leave EME-free jobs alone because they do, and they'll get the branch priority like the rest
+ # of the release. Only bother with this in production, not on staging releases on try.
+ # medium is the same as mozilla-central, see taskcluster/ci/config.yml. ie higher than
+ # integration branches because we don't want to wait a lot for the graph to be done, but
+ # for multiple releases the partner tasks always wait for non-partner.
+ if (
+ config.kind.startswith(
+ ("release-partner-repack", "release-partner-attribution")
+ )
+ and release_level(config.params["project"]) == "production"
+ ):
+ priority = "medium"
+ for job in jobs:
+ if priority:
+ job["priority"] = priority
+ yield job
+
+
+def generate_attribution_code(defaults, partner):
+ params = {
+ "medium": defaults["medium"],
+ "source": defaults["source"],
+ "campaign": partner["campaign"],
+ "content": partner["content"],
+ }
+ if partner.get("variation"):
+ params["variation"] = partner["variation"]
+ if partner.get("experiment"):
+ params["experiment"] = partner["experiment"]
+
+ code = urlencode(params)
+ return code
diff --git a/taskcluster/gecko_taskgraph/util/perfile.py b/taskcluster/gecko_taskgraph/util/perfile.py
new file mode 100644
index 0000000000..4e82d87dad
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/util/perfile.py
@@ -0,0 +1,104 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import itertools
+import json
+import logging
+import math
+
+import taskgraph
+from mozbuild.util import memoize
+from mozpack.path import match as mozpackmatch
+
+from gecko_taskgraph import files_changed
+
+from .. import GECKO
+
+logger = logging.getLogger(__name__)
+
+
+@memoize
+def perfile_number_of_chunks(is_try, try_task_config, head_repository, head_rev, type):
+ if taskgraph.fast and not is_try:
+ # When iterating on taskgraph changes, the exact number of chunks that
+ # test-verify runs usually isn't important, so skip it when going fast.
+ return 3
+ tests_per_chunk = 10.0
+ if type.startswith("test-coverage"):
+ tests_per_chunk = 30.0
+
+ if type.startswith("test-verify-wpt") or type.startswith("test-coverage-wpt"):
+ file_patterns = [
+ "testing/web-platform/tests/**",
+ "testing/web-platform/mozilla/tests/**",
+ ]
+ elif type.startswith("test-verify-gpu") or type.startswith("test-coverage-gpu"):
+ file_patterns = [
+ "**/*webgl*/**/test_*",
+ "**/dom/canvas/**/test_*",
+ "**/gfx/tests/**/test_*",
+ "**/devtools/canvasdebugger/**/browser_*",
+ "**/reftest*/**",
+ ]
+ elif type.startswith("test-verify") or type.startswith("test-coverage"):
+ file_patterns = [
+ "**/test_*",
+ "**/browser_*",
+ "**/crashtest*/**",
+ "js/src/tests/test/**",
+ "js/src/tests/non262/**",
+ "js/src/tests/test262/**",
+ ]
+ else:
+ # Returning 0 means no tests to run, this captures non test-verify tasks
+ return 1
+
+ changed_files = set()
+ if try_task_config:
+ suite_to_paths = json.loads(try_task_config)
+ specified_files = itertools.chain.from_iterable(suite_to_paths.values())
+ changed_files.update(specified_files)
+
+ if is_try:
+ changed_files.update(files_changed.get_locally_changed_files(GECKO))
+ else:
+ changed_files.update(files_changed.get_changed_files(head_repository, head_rev))
+
+ test_count = 0
+ for pattern in file_patterns:
+ for path in changed_files:
+ # TODO: consider running tests if a manifest changes
+ if path.endswith(".list") or path.endswith(".ini"):
+ continue
+ if path.endswith("^headers^"):
+ continue
+
+ if mozpackmatch(path, pattern):
+ gpu = False
+ if type == "test-verify-e10s" or type == "test-coverage-e10s":
+ # file_patterns for test-verify will pick up some gpu tests, lets ignore
+ # in the case of reftest, we will not have any in the regular case
+ gpu_dirs = [
+ "dom/canvas",
+ "gfx/tests",
+ "devtools/canvasdebugger",
+ "webgl",
+ ]
+ for gdir in gpu_dirs:
+ if len(path.split(gdir)) > 1:
+ gpu = True
+
+ if not gpu:
+ test_count += 1
+
+ chunks = test_count / tests_per_chunk
+ chunks = int(math.ceil(chunks))
+
+ # Never return 0 chunks on try, so that per-file tests can be pushed to try with
+ # an explicit path, and also so "empty" runs can be checked on try.
+ if is_try and chunks == 0:
+ chunks = 1
+
+ return chunks
diff --git a/taskcluster/gecko_taskgraph/util/platforms.py b/taskcluster/gecko_taskgraph/util/platforms.py
new file mode 100644
index 0000000000..2c423223fe
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/util/platforms.py
@@ -0,0 +1,58 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import re
+
+from taskgraph.util.attributes import keymatch
+
+# platform family is extracted from build platform by taking the alphabetic prefix
+# and then translating win -> windows
+_platform_re = re.compile(r"^[a-z]*")
+_renames = {"win": "windows"}
+
+
+_archive_formats = {
+ "linux": ".tar.bz2",
+ "macosx": ".tar.gz",
+ "windows": ".zip",
+}
+
+_executable_extension = {
+ "linux": "",
+ "macosx": "",
+ "windows": ".exe",
+}
+
+_architectures = {
+ r"linux\b.*": "x86",
+ r"linux64\b.*": "x86_64",
+ r"macosx64\b.*": "macos-x86_64-aarch64",
+ r"win32\b.*": "x86",
+ r"win64\b(?!-aarch64).*": "x86_64",
+ r"win64-aarch64\b.*": "aarch64",
+}
+
+
+def platform_family(build_platform):
+ """Given a build platform, return the platform family (linux, macosx, etc.)"""
+ family = _platform_re.match(build_platform).group(0)
+ return _renames.get(family, family)
+
+
+def archive_format(build_platform):
+ """Given a build platform, return the archive format used on the platform."""
+ return _archive_formats[platform_family(build_platform)]
+
+
+def executable_extension(build_platform):
+ """Given a build platform, return the executable extension used on the platform."""
+ return _executable_extension[platform_family(build_platform)]
+
+
+def architecture(build_platform):
+ matches = keymatch(_architectures, build_platform)
+ if len(matches) == 1:
+ return matches[0]
+ raise Exception(f"Could not determine architecture of platform `{build_platform}`.")
diff --git a/taskcluster/gecko_taskgraph/util/scriptworker.py b/taskcluster/gecko_taskgraph/util/scriptworker.py
new file mode 100644
index 0000000000..3f1f64d9f8
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/util/scriptworker.py
@@ -0,0 +1,859 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""Make scriptworker.cot.verify more user friendly by making scopes dynamic.
+
+Scriptworker uses certain scopes to determine which sets of credentials to use.
+Certain scopes are restricted by branch in chain of trust verification, and are
+checked again at the script level. This file provides functions to adjust
+these scopes automatically by project; this makes pushing to try, forking a
+project branch, and merge day uplifts more user friendly.
+
+In the future, we may adjust scopes by other settings as well, e.g. different
+scopes for `push-to-candidates` rather than `push-to-releases`, even if both
+happen on mozilla-beta and mozilla-release.
+
+Additional configuration is found in the :ref:`graph config <taskgraph-graph-config>`.
+"""
+import functools
+import itertools
+import json
+import os
+from datetime import datetime
+
+import jsone
+from mozbuild.util import memoize
+from taskgraph.util.schema import resolve_keyed_by
+from taskgraph.util.taskcluster import get_artifact_prefix
+from taskgraph.util.yaml import load_yaml
+
+from gecko_taskgraph.util.copy_task import copy_task
+
+# constants {{{1
+"""Map signing scope aliases to sets of projects.
+
+Currently m-c and DevEdition on m-b use nightly signing; Beta on m-b and m-r
+use release signing. These data structures aren't set-up to handle different
+scopes on the same repo, so we use a different set of them for DevEdition, and
+callers are responsible for using the correct one (by calling the appropriate
+helper below). More context on this in https://bugzilla.mozilla.org/show_bug.cgi?id=1358601.
+
+We will need to add esr support at some point. Eventually we want to add
+nuance so certain m-b and m-r tasks use dep or nightly signing, and we only
+release sign when we have a signed-off set of candidate builds. This current
+approach works for now, though.
+
+This is a list of list-pairs, for ordering.
+"""
+SIGNING_SCOPE_ALIAS_TO_PROJECT = [
+ [
+ "all-nightly-branches",
+ {
+ "mozilla-central",
+ "comm-central",
+ },
+ ],
+ [
+ "all-release-branches",
+ {
+ "mozilla-beta",
+ "mozilla-release",
+ "mozilla-esr102",
+ "mozilla-esr115",
+ "comm-beta",
+ "comm-esr102",
+ "comm-esr115",
+ },
+ ],
+]
+
+"""Map the signing scope aliases to the actual scopes.
+"""
+SIGNING_CERT_SCOPES = {
+ "all-release-branches": "signing:cert:release-signing",
+ "all-nightly-branches": "signing:cert:nightly-signing",
+ "default": "signing:cert:dep-signing",
+}
+
+DEVEDITION_SIGNING_SCOPE_ALIAS_TO_PROJECT = [
+ [
+ "beta",
+ {
+ "mozilla-beta",
+ },
+ ]
+]
+
+DEVEDITION_SIGNING_CERT_SCOPES = {
+ "beta": "signing:cert:nightly-signing",
+ "default": "signing:cert:dep-signing",
+}
+
+"""Map beetmover scope aliases to sets of projects.
+"""
+BEETMOVER_SCOPE_ALIAS_TO_PROJECT = [
+ [
+ "all-nightly-branches",
+ {
+ "mozilla-central",
+ "comm-central",
+ "oak",
+ },
+ ],
+ [
+ "all-release-branches",
+ {
+ "mozilla-beta",
+ "mozilla-release",
+ "mozilla-esr102",
+ "mozilla-esr115",
+ "comm-beta",
+ "comm-esr102",
+ "comm-esr115",
+ },
+ ],
+]
+
+"""Map the beetmover scope aliases to the actual scopes.
+"""
+BEETMOVER_BUCKET_SCOPES = {
+ "all-release-branches": "beetmover:bucket:release",
+ "all-nightly-branches": "beetmover:bucket:nightly",
+ "default": "beetmover:bucket:dep",
+}
+
+"""Map the beetmover scope aliases to the actual scopes.
+These are the scopes needed to import artifacts into the product delivery APT repos.
+"""
+BEETMOVER_APT_REPO_SCOPES = {
+ "all-release-branches": "beetmover:apt-repo:release",
+ "all-nightly-branches": "beetmover:apt-repo:nightly",
+ "default": "beetmover:apt-repo:dep",
+}
+
+"""Map the beetmover tasks aliases to the actual action scopes.
+"""
+BEETMOVER_ACTION_SCOPES = {
+ "nightly": "beetmover:action:push-to-nightly",
+ "nightly-oak": "beetmover:action:push-to-nightly",
+ "default": "beetmover:action:push-to-candidates",
+}
+
+"""Map the beetmover tasks aliases to the actual action scopes.
+The action scopes are generic across different repo types.
+"""
+BEETMOVER_REPO_ACTION_SCOPES = {
+ "default": "beetmover:action:import-from-gcs-to-artifact-registry",
+}
+
+"""Known balrog actions."""
+BALROG_ACTIONS = (
+ "submit-locale",
+ "submit-toplevel",
+ "schedule",
+ "v2-submit-locale",
+ "v2-submit-toplevel",
+)
+
+"""Map balrog scope aliases to sets of projects.
+
+This is a list of list-pairs, for ordering.
+"""
+BALROG_SCOPE_ALIAS_TO_PROJECT = [
+ [
+ "nightly",
+ {
+ "mozilla-central",
+ "comm-central",
+ "oak",
+ },
+ ],
+ [
+ "beta",
+ {
+ "mozilla-beta",
+ "comm-beta",
+ },
+ ],
+ [
+ "release",
+ {
+ "mozilla-release",
+ "comm-esr102",
+ "comm-esr115",
+ },
+ ],
+ [
+ "esr102",
+ {
+ "mozilla-esr102",
+ },
+ ],
+ [
+ "esr115",
+ {
+ "mozilla-esr115",
+ },
+ ],
+]
+
+"""Map the balrog scope aliases to the actual scopes.
+"""
+BALROG_SERVER_SCOPES = {
+ "nightly": "balrog:server:nightly",
+ "aurora": "balrog:server:aurora",
+ "beta": "balrog:server:beta",
+ "release": "balrog:server:release",
+ "esr102": "balrog:server:esr",
+ "esr115": "balrog:server:esr",
+ "default": "balrog:server:dep",
+}
+
+
+""" The list of the release promotion phases which we send notifications for
+"""
+RELEASE_NOTIFICATION_PHASES = ("promote", "push", "ship")
+
+
+def add_scope_prefix(config, scope):
+ """
+ Prepends the scriptworker scope prefix from the :ref:`graph config
+ <taskgraph-graph-config>`.
+
+ Args:
+ config (TransformConfig): The configuration for the kind being transformed.
+ scope (string): The suffix of the scope
+
+ Returns:
+ string: the scope to use.
+ """
+ return "{prefix}:{scope}".format(
+ prefix=config.graph_config["scriptworker"]["scope-prefix"],
+ scope=scope,
+ )
+
+
+def with_scope_prefix(f):
+ """
+ Wraps a function, calling :py:func:`add_scope_prefix` on the result of
+ calling the wrapped function.
+
+ Args:
+ f (callable): A function that takes a ``config`` and some keyword
+ arguments, and returns a scope suffix.
+
+ Returns:
+ callable: the wrapped function
+ """
+
+ @functools.wraps(f)
+ def wrapper(config, **kwargs):
+ scope_or_scopes = f(config, **kwargs)
+ if isinstance(scope_or_scopes, list):
+ return map(functools.partial(add_scope_prefix, config), scope_or_scopes)
+ return add_scope_prefix(config, scope_or_scopes)
+
+ return wrapper
+
+
+# scope functions {{{1
+@with_scope_prefix
+def get_scope_from_project(config, alias_to_project_map, alias_to_scope_map):
+ """Determine the restricted scope from `config.params['project']`.
+
+ Args:
+ config (TransformConfig): The configuration for the kind being transformed.
+ alias_to_project_map (list of lists): each list pair contains the
+ alias and the set of projects that match. This is ordered.
+ alias_to_scope_map (dict): the alias alias to scope
+
+ Returns:
+ string: the scope to use.
+ """
+ for alias, projects in alias_to_project_map:
+ if config.params["project"] in projects and alias in alias_to_scope_map:
+ return alias_to_scope_map[alias]
+ return alias_to_scope_map["default"]
+
+
+@with_scope_prefix
+def get_scope_from_release_type(config, release_type_to_scope_map):
+ """Determine the restricted scope from `config.params['target_tasks_method']`.
+
+ Args:
+ config (TransformConfig): The configuration for the kind being transformed.
+ release_type_to_scope_map (dict): the maps release types to scopes
+
+ Returns:
+ string: the scope to use.
+ """
+ return release_type_to_scope_map.get(
+ config.params["release_type"], release_type_to_scope_map["default"]
+ )
+
+
+def get_phase_from_target_method(config, alias_to_tasks_map, alias_to_phase_map):
+ """Determine the phase from `config.params['target_tasks_method']`.
+
+ Args:
+ config (TransformConfig): The configuration for the kind being transformed.
+ alias_to_tasks_map (list of lists): each list pair contains the
+ alias and the set of target methods that match. This is ordered.
+ alias_to_phase_map (dict): the alias to phase map
+
+ Returns:
+ string: the phase to use.
+ """
+ for alias, tasks in alias_to_tasks_map:
+ if (
+ config.params["target_tasks_method"] in tasks
+ and alias in alias_to_phase_map
+ ):
+ return alias_to_phase_map[alias]
+ return alias_to_phase_map["default"]
+
+
+get_signing_cert_scope = functools.partial(
+ get_scope_from_project,
+ alias_to_project_map=SIGNING_SCOPE_ALIAS_TO_PROJECT,
+ alias_to_scope_map=SIGNING_CERT_SCOPES,
+)
+
+get_devedition_signing_cert_scope = functools.partial(
+ get_scope_from_project,
+ alias_to_project_map=DEVEDITION_SIGNING_SCOPE_ALIAS_TO_PROJECT,
+ alias_to_scope_map=DEVEDITION_SIGNING_CERT_SCOPES,
+)
+
+get_beetmover_bucket_scope = functools.partial(
+ get_scope_from_project,
+ alias_to_project_map=BEETMOVER_SCOPE_ALIAS_TO_PROJECT,
+ alias_to_scope_map=BEETMOVER_BUCKET_SCOPES,
+)
+
+get_beetmover_apt_repo_scope = functools.partial(
+ get_scope_from_project,
+ alias_to_project_map=BEETMOVER_SCOPE_ALIAS_TO_PROJECT,
+ alias_to_scope_map=BEETMOVER_APT_REPO_SCOPES,
+)
+
+get_beetmover_repo_action_scope = functools.partial(
+ get_scope_from_release_type,
+ release_type_to_scope_map=BEETMOVER_REPO_ACTION_SCOPES,
+)
+
+get_beetmover_action_scope = functools.partial(
+ get_scope_from_release_type,
+ release_type_to_scope_map=BEETMOVER_ACTION_SCOPES,
+)
+
+get_balrog_server_scope = functools.partial(
+ get_scope_from_project,
+ alias_to_project_map=BALROG_SCOPE_ALIAS_TO_PROJECT,
+ alias_to_scope_map=BALROG_SERVER_SCOPES,
+)
+
+cached_load_yaml = memoize(load_yaml)
+
+
+# release_config {{{1
+def get_release_config(config):
+ """Get the build number and version for a release task.
+
+ Currently only applies to beetmover tasks.
+
+ Args:
+ config (TransformConfig): The configuration for the kind being transformed.
+
+ Returns:
+ dict: containing both `build_number` and `version`. This can be used to
+ update `task.payload`.
+ """
+ release_config = {}
+
+ partial_updates = os.environ.get("PARTIAL_UPDATES", "")
+ if partial_updates != "" and config.kind in (
+ "release-bouncer-sub",
+ "release-bouncer-check",
+ "release-update-verify-config",
+ "release-secondary-update-verify-config",
+ "release-balrog-submit-toplevel",
+ "release-secondary-balrog-submit-toplevel",
+ ):
+ partial_updates = json.loads(partial_updates)
+ release_config["partial_versions"] = ", ".join(
+ [
+ "{}build{}".format(v, info["buildNumber"])
+ for v, info in partial_updates.items()
+ ]
+ )
+ if release_config["partial_versions"] == "{}":
+ del release_config["partial_versions"]
+
+ release_config["version"] = config.params["version"]
+ release_config["appVersion"] = config.params["app_version"]
+
+ release_config["next_version"] = config.params["next_version"]
+ release_config["build_number"] = config.params["build_number"]
+ return release_config
+
+
+def get_signing_cert_scope_per_platform(build_platform, is_shippable, config):
+ if "devedition" in build_platform:
+ return get_devedition_signing_cert_scope(config)
+ if is_shippable:
+ return get_signing_cert_scope(config)
+ return add_scope_prefix(config, "signing:cert:dep-signing")
+
+
+# generate_beetmover_upstream_artifacts {{{1
+def generate_beetmover_upstream_artifacts(
+ config, job, platform, locale=None, dependencies=None, **kwargs
+):
+ """Generate the upstream artifacts for beetmover, using the artifact map.
+
+ Currently only applies to beetmover tasks.
+
+ Args:
+ job (dict): The current job being generated
+ dependencies (list): A list of the job's dependency labels.
+ platform (str): The current build platform
+ locale (str): The current locale being beetmoved.
+
+ Returns:
+ list: A list of dictionaries conforming to the upstream_artifacts spec.
+ """
+ base_artifact_prefix = get_artifact_prefix(job)
+ resolve_keyed_by(
+ job,
+ "attributes.artifact_map",
+ "artifact map",
+ **{
+ "release-type": config.params["release_type"],
+ "platform": platform,
+ },
+ )
+ map_config = copy_task(cached_load_yaml(job["attributes"]["artifact_map"]))
+ upstream_artifacts = list()
+
+ if not locale:
+ locales = map_config["default_locales"]
+ elif isinstance(locale, list):
+ locales = locale
+ else:
+ locales = [locale]
+
+ if not dependencies:
+ if job.get("dependencies"):
+ dependencies = job["dependencies"].keys()
+ elif job.get("primary-dependency"):
+ dependencies = [job["primary-dependency"].kind]
+ else:
+ raise Exception(f"Unsupported type of dependency. Got job: {job}")
+
+ for locale, dep in itertools.product(locales, dependencies):
+ paths = list()
+
+ for filename in map_config["mapping"]:
+ resolve_keyed_by(
+ map_config["mapping"][filename],
+ "from",
+ f"beetmover filename {filename}",
+ platform=platform,
+ )
+ if dep not in map_config["mapping"][filename]["from"]:
+ continue
+ if locale != "en-US" and not map_config["mapping"][filename]["all_locales"]:
+ continue
+ if (
+ "only_for_platforms" in map_config["mapping"][filename]
+ and platform
+ not in map_config["mapping"][filename]["only_for_platforms"]
+ ):
+ continue
+ if (
+ "not_for_platforms" in map_config["mapping"][filename]
+ and platform in map_config["mapping"][filename]["not_for_platforms"]
+ ):
+ continue
+ if "partials_only" in map_config["mapping"][filename]:
+ continue
+ # The next time we look at this file it might be a different locale.
+ file_config = copy_task(map_config["mapping"][filename])
+ resolve_keyed_by(
+ file_config,
+ "source_path_modifier",
+ "source path modifier",
+ locale=locale,
+ )
+
+ kwargs["locale"] = locale
+
+ paths.append(
+ os.path.join(
+ base_artifact_prefix,
+ jsone.render(file_config["source_path_modifier"], kwargs),
+ jsone.render(filename, kwargs),
+ )
+ )
+
+ if (
+ job.get("dependencies")
+ and getattr(job["dependencies"][dep], "attributes", None)
+ and job["dependencies"][dep].attributes.get("release_artifacts")
+ ):
+ paths = [
+ path
+ for path in paths
+ if path in job["dependencies"][dep].attributes["release_artifacts"]
+ ]
+
+ if not paths:
+ continue
+
+ upstream_artifacts.append(
+ {
+ "taskId": {"task-reference": f"<{dep}>"},
+ "taskType": map_config["tasktype_map"].get(dep),
+ "paths": sorted(paths),
+ "locale": locale,
+ }
+ )
+
+ upstream_artifacts.sort(key=lambda u: u["paths"])
+ return upstream_artifacts
+
+
+def generate_artifact_registry_gcs_sources(dep):
+ gcs_sources = []
+ locale = dep.attributes.get("locale")
+ if not locale:
+ repackage_deb_reference = "<repackage-deb>"
+ repackage_deb_artifact = "public/build/target.deb"
+ else:
+ repackage_deb_reference = "<repackage-deb-l10n>"
+ repackage_deb_artifact = f"public/build/{locale}/target.langpack.deb"
+ for config in dep.task["payload"]["artifactMap"]:
+ if (
+ config["taskId"]["task-reference"] == repackage_deb_reference
+ and repackage_deb_artifact in config["paths"]
+ ):
+ gcs_sources.append(
+ config["paths"][repackage_deb_artifact]["destinations"][0]
+ )
+ return gcs_sources
+
+
+# generate_beetmover_artifact_map {{{1
+def generate_beetmover_artifact_map(config, job, **kwargs):
+ """Generate the beetmover artifact map.
+
+ Currently only applies to beetmover tasks.
+
+ Args:
+ config (): Current taskgraph configuration.
+ job (dict): The current job being generated
+ Common kwargs:
+ platform (str): The current build platform
+ locale (str): The current locale being beetmoved.
+
+ Returns:
+ list: A list of dictionaries containing source->destination
+ maps for beetmover.
+ """
+ platform = kwargs.get("platform", "")
+ resolve_keyed_by(
+ job,
+ "attributes.artifact_map",
+ job["label"],
+ **{
+ "release-type": config.params["release_type"],
+ "platform": platform,
+ },
+ )
+ map_config = copy_task(cached_load_yaml(job["attributes"]["artifact_map"]))
+ base_artifact_prefix = map_config.get(
+ "base_artifact_prefix", get_artifact_prefix(job)
+ )
+
+ artifacts = list()
+
+ dependencies = job["dependencies"].keys()
+
+ if kwargs.get("locale"):
+ if isinstance(kwargs["locale"], list):
+ locales = kwargs["locale"]
+ else:
+ locales = [kwargs["locale"]]
+ else:
+ locales = map_config["default_locales"]
+
+ resolve_keyed_by(map_config, "s3_bucket_paths", job["label"], platform=platform)
+
+ for locale, dep in sorted(itertools.product(locales, dependencies)):
+ paths = dict()
+ for filename in map_config["mapping"]:
+ # Relevancy checks
+ resolve_keyed_by(
+ map_config["mapping"][filename], "from", "blah", platform=platform
+ )
+ if dep not in map_config["mapping"][filename]["from"]:
+ # We don't get this file from this dependency.
+ continue
+ if locale != "en-US" and not map_config["mapping"][filename]["all_locales"]:
+ # This locale either doesn't produce or shouldn't upload this file.
+ continue
+ if (
+ "only_for_platforms" in map_config["mapping"][filename]
+ and platform
+ not in map_config["mapping"][filename]["only_for_platforms"]
+ ):
+ # This platform either doesn't produce or shouldn't upload this file.
+ continue
+ if (
+ "not_for_platforms" in map_config["mapping"][filename]
+ and platform in map_config["mapping"][filename]["not_for_platforms"]
+ ):
+ # This platform either doesn't produce or shouldn't upload this file.
+ continue
+ if "partials_only" in map_config["mapping"][filename]:
+ continue
+
+ # copy_task because the next time we look at this file the locale will differ.
+ file_config = copy_task(map_config["mapping"][filename])
+
+ for field in [
+ "destinations",
+ "locale_prefix",
+ "source_path_modifier",
+ "update_balrog_manifest",
+ "pretty_name",
+ "checksums_path",
+ ]:
+ resolve_keyed_by(
+ file_config, field, job["label"], locale=locale, platform=platform
+ )
+
+ # This format string should ideally be in the configuration file,
+ # but this would mean keeping variable names in sync between code + config.
+ destinations = [
+ "{s3_bucket_path}/{dest_path}/{locale_prefix}{filename}".format(
+ s3_bucket_path=bucket_path,
+ dest_path=dest_path,
+ locale_prefix=file_config["locale_prefix"],
+ filename=file_config.get("pretty_name", filename),
+ )
+ for dest_path, bucket_path in itertools.product(
+ file_config["destinations"], map_config["s3_bucket_paths"]
+ )
+ ]
+ # Creating map entries
+ # Key must be artifact path, to avoid trampling duplicates, such
+ # as public/build/target.apk and public/build/en-US/target.apk
+ key = os.path.join(
+ base_artifact_prefix,
+ file_config["source_path_modifier"],
+ filename,
+ )
+
+ paths[key] = {
+ "destinations": destinations,
+ }
+ if file_config.get("checksums_path"):
+ paths[key]["checksums_path"] = file_config["checksums_path"]
+
+ # optional flag: balrog manifest
+ if file_config.get("update_balrog_manifest"):
+ paths[key]["update_balrog_manifest"] = True
+ if file_config.get("balrog_format"):
+ paths[key]["balrog_format"] = file_config["balrog_format"]
+
+ if not paths:
+ # No files for this dependency/locale combination.
+ continue
+
+ # Render all variables for the artifact map
+ platforms = copy_task(map_config.get("platform_names", {}))
+ if platform:
+ for key in platforms.keys():
+ resolve_keyed_by(platforms, key, job["label"], platform=platform)
+
+ upload_date = datetime.fromtimestamp(config.params["build_date"])
+
+ kwargs.update(
+ {
+ "locale": locale,
+ "version": config.params["version"],
+ "branch": config.params["project"],
+ "build_number": config.params["build_number"],
+ "year": upload_date.year,
+ "month": upload_date.strftime("%m"), # zero-pad the month
+ "upload_date": upload_date.strftime("%Y-%m-%d-%H-%M-%S"),
+ }
+ )
+ kwargs.update(**platforms)
+ paths = jsone.render(paths, kwargs)
+ artifacts.append(
+ {
+ "taskId": {"task-reference": f"<{dep}>"},
+ "locale": locale,
+ "paths": paths,
+ }
+ )
+
+ return artifacts
+
+
+# generate_beetmover_partials_artifact_map {{{1
+def generate_beetmover_partials_artifact_map(config, job, partials_info, **kwargs):
+ """Generate the beetmover partials artifact map.
+
+ Currently only applies to beetmover tasks.
+
+ Args:
+ config (): Current taskgraph configuration.
+ job (dict): The current job being generated
+ partials_info (dict): Current partials and information about them in a dict
+ Common kwargs:
+ platform (str): The current build platform
+ locale (str): The current locale being beetmoved.
+
+ Returns:
+ list: A list of dictionaries containing source->destination
+ maps for beetmover.
+ """
+ platform = kwargs.get("platform", "")
+ resolve_keyed_by(
+ job,
+ "attributes.artifact_map",
+ "artifact map",
+ **{
+ "release-type": config.params["release_type"],
+ "platform": platform,
+ },
+ )
+ map_config = copy_task(cached_load_yaml(job["attributes"]["artifact_map"]))
+ base_artifact_prefix = map_config.get(
+ "base_artifact_prefix", get_artifact_prefix(job)
+ )
+
+ artifacts = list()
+ dependencies = job["dependencies"].keys()
+
+ if kwargs.get("locale"):
+ locales = [kwargs["locale"]]
+ else:
+ locales = map_config["default_locales"]
+
+ resolve_keyed_by(
+ map_config, "s3_bucket_paths", "s3_bucket_paths", platform=platform
+ )
+
+ platforms = copy_task(map_config.get("platform_names", {}))
+ if platform:
+ for key in platforms.keys():
+ resolve_keyed_by(platforms, key, key, platform=platform)
+ upload_date = datetime.fromtimestamp(config.params["build_date"])
+
+ for locale, dep in itertools.product(locales, dependencies):
+ paths = dict()
+ for filename in map_config["mapping"]:
+ # Relevancy checks
+ if dep not in map_config["mapping"][filename]["from"]:
+ # We don't get this file from this dependency.
+ continue
+ if locale != "en-US" and not map_config["mapping"][filename]["all_locales"]:
+ # This locale either doesn't produce or shouldn't upload this file.
+ continue
+ if "partials_only" not in map_config["mapping"][filename]:
+ continue
+ # copy_task because the next time we look at this file the locale will differ.
+ file_config = copy_task(map_config["mapping"][filename])
+
+ for field in [
+ "destinations",
+ "locale_prefix",
+ "source_path_modifier",
+ "update_balrog_manifest",
+ "from_buildid",
+ "pretty_name",
+ "checksums_path",
+ ]:
+ resolve_keyed_by(
+ file_config, field, field, locale=locale, platform=platform
+ )
+
+ # This format string should ideally be in the configuration file,
+ # but this would mean keeping variable names in sync between code + config.
+ destinations = [
+ "{s3_bucket_path}/{dest_path}/{locale_prefix}{filename}".format(
+ s3_bucket_path=bucket_path,
+ dest_path=dest_path,
+ locale_prefix=file_config["locale_prefix"],
+ filename=file_config.get("pretty_name", filename),
+ )
+ for dest_path, bucket_path in itertools.product(
+ file_config["destinations"], map_config["s3_bucket_paths"]
+ )
+ ]
+ # Creating map entries
+ # Key must be artifact path, to avoid trampling duplicates, such
+ # as public/build/target.apk and public/build/en-US/target.apk
+ key = os.path.join(
+ base_artifact_prefix,
+ file_config["source_path_modifier"],
+ filename,
+ )
+ partials_paths = {}
+ for pname, info in partials_info.items():
+ partials_paths[key] = {
+ "destinations": destinations,
+ }
+ if file_config.get("checksums_path"):
+ partials_paths[key]["checksums_path"] = file_config[
+ "checksums_path"
+ ]
+
+ # optional flag: balrog manifest
+ if file_config.get("update_balrog_manifest"):
+ partials_paths[key]["update_balrog_manifest"] = True
+ if file_config.get("balrog_format"):
+ partials_paths[key]["balrog_format"] = file_config[
+ "balrog_format"
+ ]
+ # optional flag: from_buildid
+ if file_config.get("from_buildid"):
+ partials_paths[key]["from_buildid"] = file_config["from_buildid"]
+
+ # render buildid
+ kwargs.update(
+ {
+ "partial": pname,
+ "from_buildid": info["buildid"],
+ "previous_version": info.get("previousVersion"),
+ "buildid": str(config.params["moz_build_date"]),
+ "locale": locale,
+ "version": config.params["version"],
+ "branch": config.params["project"],
+ "build_number": config.params["build_number"],
+ "year": upload_date.year,
+ "month": upload_date.strftime("%m"), # zero-pad the month
+ "upload_date": upload_date.strftime("%Y-%m-%d-%H-%M-%S"),
+ }
+ )
+ kwargs.update(**platforms)
+ paths.update(jsone.render(partials_paths, kwargs))
+
+ if not paths:
+ continue
+
+ artifacts.append(
+ {
+ "taskId": {"task-reference": f"<{dep}>"},
+ "locale": locale,
+ "paths": paths,
+ }
+ )
+
+ artifacts.sort(key=lambda a: sorted(a["paths"].items()))
+ return artifacts
diff --git a/taskcluster/gecko_taskgraph/util/signed_artifacts.py b/taskcluster/gecko_taskgraph/util/signed_artifacts.py
new file mode 100644
index 0000000000..2467ff8046
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/util/signed_artifacts.py
@@ -0,0 +1,198 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+"""
+Defines artifacts to sign before repackage.
+"""
+
+from taskgraph.util.taskcluster import get_artifact_path
+
+from gecko_taskgraph.util.declarative_artifacts import get_geckoview_upstream_artifacts
+
+LANGPACK_SIGN_PLATFORMS = { # set
+ "linux64-shippable",
+ "linux64-devedition",
+ "macosx64-shippable",
+ "macosx64-devedition",
+}
+
+
+def is_partner_kind(kind):
+ if kind and kind.startswith(("release-partner", "release-eme-free")):
+ return True
+
+
+def is_notarization_kind(kind):
+ if kind and "notarization" in kind:
+ return True
+
+
+def is_mac_signing_king(kind):
+ return kind and "mac-signing" in kind
+
+
+def generate_specifications_of_artifacts_to_sign(
+ config, job, keep_locale_template=True, kind=None, dep_kind=None
+):
+ build_platform = job["attributes"].get("build_platform")
+ use_stub = job["attributes"].get("stub-installer")
+ # Get locales to know if we want to sign ja-JP-mac langpack
+ locales = job["attributes"].get("chunk_locales", [])
+ if kind == "release-source-signing":
+ artifacts_specifications = [
+ {
+ "artifacts": [get_artifact_path(job, "source.tar.xz")],
+ "formats": ["autograph_gpg"],
+ }
+ ]
+ elif "android" in build_platform:
+ artifacts_specifications = [
+ {
+ "artifacts": get_geckoview_artifacts_to_sign(config, job),
+ "formats": ["autograph_gpg"],
+ }
+ ]
+ # XXX: Mars aren't signed here (on any platform) because internals will be
+ # signed at after this stage of the release
+ elif "macosx" in build_platform:
+ langpack_formats = []
+ if is_notarization_kind(config.kind):
+ formats = ["apple_notarization"]
+ artifacts_specifications = [
+ {
+ "artifacts": [
+ get_artifact_path(job, "{locale}/target.tar.gz"),
+ get_artifact_path(job, "{locale}/target.pkg"),
+ ],
+ "formats": formats,
+ }
+ ]
+ else:
+ # This task is mac-signing
+ if is_partner_kind(kind):
+ extension = "tar.gz"
+ else:
+ extension = "dmg"
+ artifacts_specifications = [
+ {
+ "artifacts": [
+ get_artifact_path(job, f"{{locale}}/target.{extension}")
+ ],
+ "formats": ["macapp", "autograph_widevine", "autograph_omnija"],
+ }
+ ]
+ langpack_formats = ["autograph_langpack"]
+
+ if "ja-JP-mac" in locales and build_platform in LANGPACK_SIGN_PLATFORMS:
+ artifacts_specifications += [
+ {
+ "artifacts": [
+ get_artifact_path(job, "ja-JP-mac/target.langpack.xpi")
+ ],
+ "formats": langpack_formats,
+ }
+ ]
+ elif "win" in build_platform:
+ artifacts_specifications = [
+ {
+ "artifacts": [
+ get_artifact_path(job, "{locale}/setup.exe"),
+ ],
+ "formats": ["autograph_authenticode_sha2"],
+ },
+ {
+ "artifacts": [
+ get_artifact_path(job, "{locale}/target.zip"),
+ ],
+ "formats": [
+ "autograph_authenticode_sha2",
+ "autograph_widevine",
+ "autograph_omnija",
+ ],
+ },
+ ]
+
+ if use_stub:
+ artifacts_specifications[0]["artifacts"] += [
+ get_artifact_path(job, "{locale}/setup-stub.exe")
+ ]
+ elif "linux" in build_platform:
+ artifacts_specifications = [
+ {
+ "artifacts": [get_artifact_path(job, "{locale}/target.tar.bz2")],
+ "formats": ["autograph_gpg", "autograph_widevine", "autograph_omnija"],
+ }
+ ]
+ if build_platform in LANGPACK_SIGN_PLATFORMS:
+ artifacts_specifications += [
+ {
+ "artifacts": [
+ get_artifact_path(job, "{locale}/target.langpack.xpi")
+ ],
+ "formats": ["autograph_langpack"],
+ }
+ ]
+ else:
+ raise Exception("Platform not implemented for signing")
+
+ if not keep_locale_template:
+ artifacts_specifications = _strip_locale_template(artifacts_specifications)
+
+ if is_partner_kind(kind):
+ artifacts_specifications = _strip_widevine_for_partners(
+ artifacts_specifications
+ )
+
+ return artifacts_specifications
+
+
+def _strip_locale_template(artifacts_without_locales):
+ for spec in artifacts_without_locales:
+ for index, artifact in enumerate(spec["artifacts"]):
+ stripped_artifact = artifact.format(locale="")
+ stripped_artifact = stripped_artifact.replace("//", "/")
+ spec["artifacts"][index] = stripped_artifact
+
+ return artifacts_without_locales
+
+
+def _strip_widevine_for_partners(artifacts_specifications):
+ """Partner repacks should not resign that's previously signed for fear of breaking partial
+ updates
+ """
+ for spec in artifacts_specifications:
+ if "autograph_widevine" in spec["formats"]:
+ spec["formats"].remove("autograph_widevine")
+ if "autograph_omnija" in spec["formats"]:
+ spec["formats"].remove("autograph_omnija")
+
+ return artifacts_specifications
+
+
+def get_signed_artifacts(input, formats, behavior=None):
+ """
+ Get the list of signed artifacts for the given input and formats.
+ """
+ artifacts = set()
+ if input.endswith(".dmg"):
+ artifacts.add(input.replace(".dmg", ".tar.gz"))
+ if behavior and behavior != "mac_sign":
+ artifacts.add(input.replace(".dmg", ".pkg"))
+ else:
+ artifacts.add(input)
+ if "autograph_gpg" in formats:
+ artifacts.add(f"{input}.asc")
+
+ return artifacts
+
+
+def get_geckoview_artifacts_to_sign(config, job):
+ upstream_artifacts = []
+ for package in job["attributes"]["maven_packages"]:
+ upstream_artifacts += get_geckoview_upstream_artifacts(config, job, package)
+ return [
+ path
+ for upstream_artifact in upstream_artifacts
+ for path in upstream_artifact["paths"]
+ if not path.endswith(".md5") and not path.endswith(".sha1")
+ ]
diff --git a/taskcluster/gecko_taskgraph/util/taskcluster.py b/taskcluster/gecko_taskgraph/util/taskcluster.py
new file mode 100644
index 0000000000..cddb01fd37
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/util/taskcluster.py
@@ -0,0 +1,128 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import logging
+import os
+
+import taskcluster_urls as liburls
+from taskcluster import Hooks
+from taskgraph.util import taskcluster as tc_util
+from taskgraph.util.taskcluster import (
+ _do_request,
+ get_index_url,
+ get_root_url,
+ get_task_definition,
+ get_task_url,
+)
+
+logger = logging.getLogger(__name__)
+
+
+def insert_index(index_path, task_id, data=None, use_proxy=False):
+ index_url = get_index_url(index_path, use_proxy=use_proxy)
+
+ # Find task expiry.
+ expires = get_task_definition(task_id, use_proxy=use_proxy)["expires"]
+
+ response = _do_request(
+ index_url,
+ method="put",
+ json={
+ "taskId": task_id,
+ "rank": 0,
+ "data": data or {},
+ "expires": expires,
+ },
+ )
+ return response
+
+
+def status_task(task_id, use_proxy=False):
+ """Gets the status of a task given a task_id.
+
+ In testing mode, just logs that it would have retrieved status.
+
+ Args:
+ task_id (str): A task id.
+ use_proxy (bool): Whether to use taskcluster-proxy (default: False)
+
+ Returns:
+ dict: A dictionary object as defined here:
+ https://docs.taskcluster.net/docs/reference/platform/queue/api#status
+ """
+ if tc_util.testing:
+ logger.info(f"Would have gotten status for {task_id}.")
+ else:
+ resp = _do_request(get_task_url(task_id, use_proxy) + "/status")
+ status = resp.json().get("status", {})
+ return status
+
+
+def state_task(task_id, use_proxy=False):
+ """Gets the state of a task given a task_id.
+
+ In testing mode, just logs that it would have retrieved state. This is a subset of the
+ data returned by :func:`status_task`.
+
+ Args:
+ task_id (str): A task id.
+ use_proxy (bool): Whether to use taskcluster-proxy (default: False)
+
+ Returns:
+ str: The state of the task, one of
+ ``pending, running, completed, failed, exception, unknown``.
+ """
+ if tc_util.testing:
+ logger.info(f"Would have gotten state for {task_id}.")
+ else:
+ status = status_task(task_id, use_proxy=use_proxy).get("state") or "unknown"
+ return status
+
+
+def trigger_hook(hook_group_id, hook_id, hook_payload):
+ hooks = Hooks({"rootUrl": get_root_url(True)})
+ response = hooks.triggerHook(hook_group_id, hook_id, hook_payload)
+
+ logger.info(
+ "Task seen here: {}/tasks/{}".format(
+ get_root_url(os.environ.get("TASKCLUSTER_PROXY_URL")),
+ response["status"]["taskId"],
+ )
+ )
+
+
+def list_task_group_tasks(task_group_id):
+ """Generate the tasks in a task group"""
+ params = {}
+ while True:
+ url = liburls.api(
+ get_root_url(False),
+ "queue",
+ "v1",
+ f"task-group/{task_group_id}/list",
+ )
+ resp = _do_request(url, method="get", params=params).json()
+ yield from resp["tasks"]
+ if resp.get("continuationToken"):
+ params = {"continuationToken": resp.get("continuationToken")}
+ else:
+ break
+
+
+def list_task_group_incomplete_task_ids(task_group_id):
+ states = ("running", "pending", "unscheduled")
+ for task in [t["status"] for t in list_task_group_tasks(task_group_id)]:
+ if task["state"] in states:
+ yield task["taskId"]
+
+
+def list_task_group_complete_tasks(task_group_id):
+ tasks = {}
+ for task in list_task_group_tasks(task_group_id):
+ if task.get("status", {}).get("state", "") == "completed":
+ tasks[task.get("task", {}).get("metadata", {}).get("name", "")] = task.get(
+ "status", {}
+ ).get("taskId", "")
+ return tasks
diff --git a/taskcluster/gecko_taskgraph/util/taskgraph.py b/taskcluster/gecko_taskgraph/util/taskgraph.py
new file mode 100644
index 0000000000..bac7b3fbb8
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/util/taskgraph.py
@@ -0,0 +1,49 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+"""
+Tools for interacting with existing taskgraphs.
+"""
+
+from taskgraph.util.taskcluster import find_task_id, get_artifact
+
+
+def find_decision_task(parameters, graph_config):
+ """Given the parameters for this action, find the taskId of the decision
+ task"""
+ head_rev_param = "{}head_rev".format(graph_config["project-repo-param-prefix"])
+ return find_task_id(
+ "{}.v2.{}.revision.{}.taskgraph.decision".format(
+ graph_config["trust-domain"],
+ parameters["project"],
+ parameters[head_rev_param],
+ )
+ )
+
+
+def find_existing_tasks(previous_graph_ids):
+ existing_tasks = {}
+ for previous_graph_id in previous_graph_ids:
+ label_to_taskid = get_artifact(previous_graph_id, "public/label-to-taskid.json")
+ existing_tasks.update(label_to_taskid)
+ return existing_tasks
+
+
+def find_existing_tasks_from_previous_kinds(
+ full_task_graph, previous_graph_ids, rebuild_kinds
+):
+ """Given a list of previous decision/action taskIds and kinds to ignore
+ from the previous graphs, return a dictionary of labels-to-taskids to use
+ as ``existing_tasks`` in the optimization step."""
+ existing_tasks = find_existing_tasks(previous_graph_ids)
+ kind_labels = {
+ t.label
+ for t in full_task_graph.tasks.values()
+ if t.attributes["kind"] not in rebuild_kinds
+ }
+ return {
+ label: taskid
+ for (label, taskid) in existing_tasks.items()
+ if label in kind_labels
+ }
diff --git a/taskcluster/gecko_taskgraph/util/templates.py b/taskcluster/gecko_taskgraph/util/templates.py
new file mode 100644
index 0000000000..e6640a7edd
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/util/templates.py
@@ -0,0 +1,59 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+from gecko_taskgraph.util.copy_task import copy_task
+
+
+def merge_to(source, dest):
+ """
+ Merge dict and arrays (override scalar values)
+
+ Keys from source override keys from dest, and elements from lists in source
+ are appended to lists in dest.
+
+ :param dict source: to copy from
+ :param dict dest: to copy to (modified in place)
+ """
+
+ for key, value in source.items():
+ if (
+ isinstance(value, dict)
+ and len(value) == 1
+ and list(value)[0].startswith("by-")
+ ):
+ # Do not merge by-* values as this is likely to confuse someone
+ dest[key] = value
+ continue
+
+ # Override mismatching or empty types
+ if type(value) != type(dest.get(key)): # noqa
+ dest[key] = value
+ continue
+
+ # Merge dict
+ if isinstance(value, dict):
+ merge_to(value, dest[key])
+ continue
+
+ if isinstance(value, list):
+ dest[key] = dest[key] + value
+ continue
+
+ dest[key] = value
+
+ return dest
+
+
+def merge(*objects):
+ """
+ Merge the given objects, using the semantics described for merge_to, with
+ objects later in the list taking precedence. From an inheritance
+ perspective, "parents" should be listed before "children".
+
+ Returns the result without modifying any arguments.
+ """
+ if len(objects) == 1:
+ return copy_task(objects[0])
+ return merge_to(objects[-1], merge(*objects[:-1]))
diff --git a/taskcluster/gecko_taskgraph/util/verify.py b/taskcluster/gecko_taskgraph/util/verify.py
new file mode 100644
index 0000000000..75ddbda674
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/util/verify.py
@@ -0,0 +1,454 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import logging
+import os
+import re
+import sys
+
+import attr
+from taskgraph.util.treeherder import join_symbol
+from taskgraph.util.verify import VerificationSequence
+
+from gecko_taskgraph import GECKO
+from gecko_taskgraph.util.attributes import (
+ ALL_PROJECTS,
+ RELEASE_PROJECTS,
+ RUN_ON_PROJECT_ALIASES,
+)
+
+logger = logging.getLogger(__name__)
+doc_base_path = os.path.join(GECKO, "taskcluster", "docs")
+
+
+verifications = VerificationSequence()
+
+
+@attr.s(frozen=True)
+class DocPaths:
+ _paths = attr.ib(factory=list)
+
+ def get_files(self, filename):
+ rv = []
+ for p in self._paths:
+ doc_path = os.path.join(p, filename)
+ if os.path.exists(doc_path):
+ rv.append(doc_path)
+ return rv
+
+ def add(self, path):
+ """
+ Projects that make use of Firefox's taskgraph can extend it with
+ their own task kinds by registering additional paths for documentation.
+ documentation_paths.add() needs to be called by the project's Taskgraph
+ registration function. See taskgraph.config.
+ """
+ self._paths.append(path)
+
+
+documentation_paths = DocPaths()
+documentation_paths.add(doc_base_path)
+
+
+def verify_docs(filename, identifiers, appearing_as):
+ """
+ Look for identifiers of the type appearing_as in the files
+ returned by documentation_paths.get_files(). Firefox will have
+ a single file in a list, but projects such as Thunderbird can have
+ documentation in another location and may return multiple files.
+ """
+ # We ignore identifiers starting with '_' for the sake of tests.
+ # Strings starting with "_" are ignored for doc verification
+ # hence they can be used for faking test values
+ doc_files = documentation_paths.get_files(filename)
+ doctext = "".join([open(d).read() for d in doc_files])
+
+ if appearing_as == "inline-literal":
+ expression_list = [
+ "``" + identifier + "``"
+ for identifier in identifiers
+ if not identifier.startswith("_")
+ ]
+ elif appearing_as == "heading":
+ expression_list = [
+ "\n" + identifier + "\n(?:(?:(?:-+\n)+)|(?:(?:.+\n)+))"
+ for identifier in identifiers
+ if not identifier.startswith("_")
+ ]
+ else:
+ raise Exception(f"appearing_as = `{appearing_as}` not defined")
+
+ for expression, identifier in zip(expression_list, identifiers):
+ match_group = re.search(expression, doctext)
+ if not match_group:
+ raise Exception(
+ "{}: `{}` missing from doc file: `{}`".format(
+ appearing_as, identifier, filename
+ )
+ )
+
+
+@verifications.add("initial")
+def verify_run_using():
+ from gecko_taskgraph.transforms.job import registry
+
+ verify_docs(
+ filename="transforms/job.rst",
+ identifiers=registry.keys(),
+ appearing_as="inline-literal",
+ )
+
+
+@verifications.add("parameters")
+def verify_parameters_docs(parameters):
+ if not parameters.strict:
+ return
+
+ parameters_dict = dict(**parameters)
+ verify_docs(
+ filename="parameters.rst",
+ identifiers=list(parameters_dict),
+ appearing_as="inline-literal",
+ )
+
+
+@verifications.add("kinds")
+def verify_kinds_docs(kinds):
+ verify_docs(filename="kinds.rst", identifiers=kinds.keys(), appearing_as="heading")
+
+
+@verifications.add("full_task_set")
+def verify_attributes(task, taskgraph, scratch_pad, graph_config, parameters):
+ if task is None:
+ verify_docs(
+ filename="attributes.rst",
+ identifiers=list(scratch_pad["attribute_set"]),
+ appearing_as="heading",
+ )
+ return
+ scratch_pad.setdefault("attribute_set", set()).update(task.attributes.keys())
+
+
+@verifications.add("full_task_graph")
+def verify_task_graph_symbol(task, taskgraph, scratch_pad, graph_config, parameters):
+ """
+ This function verifies that tuple
+ (collection.keys(), machine.platform, groupSymbol, symbol) is unique
+ for a target task graph.
+ """
+ if task is None:
+ return
+ task_dict = task.task
+ if "extra" in task_dict:
+ extra = task_dict["extra"]
+ if "treeherder" in extra:
+ treeherder = extra["treeherder"]
+
+ collection_keys = tuple(sorted(treeherder.get("collection", {}).keys()))
+ if len(collection_keys) != 1:
+ raise Exception(
+ "Task {} can't be in multiple treeherder collections "
+ "(the part of the platform after `/`): {}".format(
+ task.label, collection_keys
+ )
+ )
+ platform = treeherder.get("machine", {}).get("platform")
+ group_symbol = treeherder.get("groupSymbol")
+ symbol = treeherder.get("symbol")
+
+ key = (platform, collection_keys[0], group_symbol, symbol)
+ if key in scratch_pad:
+ raise Exception(
+ "Duplicate treeherder platform and symbol in tasks "
+ "`{}`and `{}`: {} {}".format(
+ task.label,
+ scratch_pad[key],
+ f"{platform}/{collection_keys[0]}",
+ join_symbol(group_symbol, symbol),
+ )
+ )
+ else:
+ scratch_pad[key] = task.label
+
+
+@verifications.add("full_task_graph")
+def verify_trust_domain_v2_routes(
+ task, taskgraph, scratch_pad, graph_config, parameters
+):
+ """
+ This function ensures that any two tasks have distinct ``index.{trust-domain}.v2`` routes.
+ """
+ if task is None:
+ return
+ route_prefix = "index.{}.v2".format(graph_config["trust-domain"])
+ task_dict = task.task
+ routes = task_dict.get("routes", [])
+
+ for route in routes:
+ if route.startswith(route_prefix):
+ if route in scratch_pad:
+ raise Exception(
+ "conflict between {}:{} for route: {}".format(
+ task.label, scratch_pad[route], route
+ )
+ )
+ else:
+ scratch_pad[route] = task.label
+
+
+@verifications.add("full_task_graph")
+def verify_routes_notification_filters(
+ task, taskgraph, scratch_pad, graph_config, parameters
+):
+ """
+ This function ensures that only understood filters for notifications are
+ specified.
+
+ See: https://firefox-ci-tc.services.mozilla.com/docs/manual/using/task-notifications
+ """
+ if task is None:
+ return
+ route_prefix = "notify."
+ valid_filters = ("on-any", "on-completed", "on-failed", "on-exception")
+ task_dict = task.task
+ routes = task_dict.get("routes", [])
+
+ for route in routes:
+ if route.startswith(route_prefix):
+ # Get the filter of the route
+ route_filter = route.split(".")[-1]
+ if route_filter not in valid_filters:
+ raise Exception(
+ "{} has invalid notification filter ({})".format(
+ task.label, route_filter
+ )
+ )
+
+
+@verifications.add("full_task_graph")
+def verify_dependency_tiers(task, taskgraph, scratch_pad, graph_config, parameters):
+ tiers = scratch_pad
+ if task is not None:
+ tiers[task.label] = (
+ task.task.get("extra", {}).get("treeherder", {}).get("tier", sys.maxsize)
+ )
+ else:
+
+ def printable_tier(tier):
+ if tier == sys.maxsize:
+ return "unknown"
+ return tier
+
+ for task in taskgraph.tasks.values():
+ tier = tiers[task.label]
+ for d in task.dependencies.values():
+ if taskgraph[d].task.get("workerType") == "always-optimized":
+ continue
+ if "dummy" in taskgraph[d].kind:
+ continue
+ if tier < tiers[d]:
+ raise Exception(
+ "{} (tier {}) cannot depend on {} (tier {})".format(
+ task.label,
+ printable_tier(tier),
+ d,
+ printable_tier(tiers[d]),
+ )
+ )
+
+
+@verifications.add("full_task_graph")
+def verify_required_signoffs(task, taskgraph, scratch_pad, graph_config, parameters):
+ """
+ Task with required signoffs can't be dependencies of tasks with less
+ required signoffs.
+ """
+ all_required_signoffs = scratch_pad
+ if task is not None:
+ all_required_signoffs[task.label] = set(
+ task.attributes.get("required_signoffs", [])
+ )
+ else:
+
+ def printable_signoff(signoffs):
+ if len(signoffs) == 1:
+ return "required signoff {}".format(*signoffs)
+ if signoffs:
+ return "required signoffs {}".format(", ".join(signoffs))
+ return "no required signoffs"
+
+ for task in taskgraph.tasks.values():
+ required_signoffs = all_required_signoffs[task.label]
+ for d in task.dependencies.values():
+ if required_signoffs < all_required_signoffs[d]:
+ raise Exception(
+ "{} ({}) cannot depend on {} ({})".format(
+ task.label,
+ printable_signoff(required_signoffs),
+ d,
+ printable_signoff(all_required_signoffs[d]),
+ )
+ )
+
+
+@verifications.add("full_task_graph")
+def verify_aliases(task, taskgraph, scratch_pad, graph_config, parameters):
+ """
+ This function verifies that aliases are not reused.
+ """
+ if task is None:
+ return
+ if task.kind not in ("toolchain", "fetch"):
+ return
+ for_kind = scratch_pad.setdefault(task.kind, {})
+ aliases = for_kind.setdefault("aliases", {})
+ alias_attribute = f"{task.kind}-alias"
+ if task.label in aliases:
+ raise Exception(
+ "Task `{}` has a {} of `{}`, masking a task of that name.".format(
+ aliases[task.label],
+ alias_attribute,
+ task.label[len(task.kind) + 1 :],
+ )
+ )
+ labels = for_kind.setdefault("labels", set())
+ labels.add(task.label)
+ attributes = task.attributes
+ if alias_attribute in attributes:
+ keys = attributes[alias_attribute]
+ if not keys:
+ keys = []
+ elif isinstance(keys, str):
+ keys = [keys]
+ for key in keys:
+ full_key = f"{task.kind}-{key}"
+ if full_key in labels:
+ raise Exception(
+ "Task `{}` has a {} of `{}`,"
+ " masking a task of that name.".format(
+ task.label,
+ alias_attribute,
+ key,
+ )
+ )
+ if full_key in aliases:
+ raise Exception(
+ "Duplicate {} in tasks `{}`and `{}`: {}".format(
+ alias_attribute,
+ task.label,
+ aliases[full_key],
+ key,
+ )
+ )
+ else:
+ aliases[full_key] = task.label
+
+
+@verifications.add("optimized_task_graph")
+def verify_always_optimized(task, taskgraph, scratch_pad, graph_config, parameters):
+ """
+ This function ensures that always-optimized tasks have been optimized.
+ """
+ if task is None:
+ return
+ if task.task.get("workerType") == "always-optimized":
+ raise Exception(f"Could not optimize the task {task.label!r}")
+
+
+@verifications.add("full_task_graph", run_on_projects=RELEASE_PROJECTS)
+def verify_shippable_no_sccache(task, taskgraph, scratch_pad, graph_config, parameters):
+ if task and task.attributes.get("shippable"):
+ if task.task.get("payload", {}).get("env", {}).get("USE_SCCACHE"):
+ raise Exception(f"Shippable job {task.label} cannot use sccache")
+
+
+@verifications.add("full_task_graph")
+def verify_test_packaging(task, taskgraph, scratch_pad, graph_config, parameters):
+ if task is None:
+ # In certain cases there are valid reasons for tests to be missing,
+ # don't error out when that happens.
+ missing_tests_allowed = any(
+ (
+ # user specified `--target-kind`
+ parameters.get("target-kind") is not None,
+ # manifest scheduling is enabled
+ parameters["test_manifest_loader"] != "default",
+ )
+ )
+
+ exceptions = []
+ for task in taskgraph.tasks.values():
+ if task.kind == "build" and not task.attributes.get(
+ "skip-verify-test-packaging"
+ ):
+ build_env = task.task.get("payload", {}).get("env", {})
+ package_tests = build_env.get("MOZ_AUTOMATION_PACKAGE_TESTS")
+ shippable = task.attributes.get("shippable", False)
+ build_has_tests = scratch_pad.get(task.label)
+
+ if package_tests != "1":
+ # Shippable builds should always package tests.
+ if shippable:
+ exceptions.append(
+ "Build job {} is shippable and does not specify "
+ "MOZ_AUTOMATION_PACKAGE_TESTS=1 in the "
+ "environment.".format(task.label)
+ )
+
+ # Build tasks in the scratch pad have tests dependent on
+ # them, so we need to package tests during build.
+ if build_has_tests:
+ exceptions.append(
+ "Build job {} has tests dependent on it and does not specify "
+ "MOZ_AUTOMATION_PACKAGE_TESTS=1 in the environment".format(
+ task.label
+ )
+ )
+ else:
+ # Build tasks that aren't in the scratch pad have no
+ # dependent tests, so we shouldn't package tests.
+ # With the caveat that we expect shippable jobs to always
+ # produce tests.
+ if not build_has_tests and not shippable:
+ # If we have not generated all task kinds, we can't verify that
+ # there are no dependent tests.
+ if not missing_tests_allowed:
+ exceptions.append(
+ "Build job {} has no tests, but specifies "
+ "MOZ_AUTOMATION_PACKAGE_TESTS={} in the environment. "
+ "Unset MOZ_AUTOMATION_PACKAGE_TESTS in the task definition "
+ "to fix.".format(task.label, package_tests)
+ )
+ if exceptions:
+ raise Exception("\n".join(exceptions))
+ return
+ if task.kind == "test":
+ build_task = taskgraph[task.dependencies["build"]]
+ scratch_pad[build_task.label] = 1
+
+
+@verifications.add("full_task_graph")
+def verify_run_known_projects(task, taskgraph, scratch_pad, graph_config, parameters):
+ """Validates the inputs in run-on-projects.
+
+ We should never let 'try' (or 'try-comm-central') be in run-on-projects even though it
+ is valid because it is not considered for try pushes. While here we also validate for
+ other unknown projects or typos.
+ """
+ if task and task.attributes.get("run_on_projects"):
+ projects = set(task.attributes["run_on_projects"])
+ if {"try", "try-comm-central"} & set(projects):
+ raise Exception(
+ "In task {}: using try in run-on-projects is invalid; use try "
+ "selectors to select this task on try".format(task.label)
+ )
+ # try isn't valid, but by the time we get here its not an available project anyway.
+ valid_projects = ALL_PROJECTS | set(RUN_ON_PROJECT_ALIASES.keys())
+ invalid_projects = projects - valid_projects
+ if invalid_projects:
+ raise Exception(
+ "Task '{}' has an invalid run-on-projects value: "
+ "{}".format(task.label, invalid_projects)
+ )
diff --git a/taskcluster/gecko_taskgraph/util/workertypes.py b/taskcluster/gecko_taskgraph/util/workertypes.py
new file mode 100644
index 0000000000..b941ba85f6
--- /dev/null
+++ b/taskcluster/gecko_taskgraph/util/workertypes.py
@@ -0,0 +1,105 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from mozbuild.util import memoize
+from taskgraph.util.attributes import keymatch
+from taskgraph.util.keyed_by import evaluate_keyed_by
+
+from gecko_taskgraph.util.attributes import release_level as _release_level
+
+WORKER_TYPES = {
+ "gce/gecko-1-b-linux": ("docker-worker", "linux"),
+ "gce/gecko-2-b-linux": ("docker-worker", "linux"),
+ "gce/gecko-3-b-linux": ("docker-worker", "linux"),
+ "invalid/invalid": ("invalid", None),
+ "invalid/always-optimized": ("always-optimized", None),
+ "scriptworker-prov-v1/signing-linux-v1": ("scriptworker-signing", None),
+ "scriptworker-k8s/gecko-3-shipit": ("shipit", None),
+ "scriptworker-k8s/gecko-1-shipit": ("shipit", None),
+}
+
+
+@memoize
+def _get(graph_config, alias, level, release_level, project):
+ """Get the configuration for this worker_type alias: {provisioner,
+ worker-type, implementation, os}"""
+ level = str(level)
+
+ # handle the legacy (non-alias) format
+ if "/" in alias:
+ alias = alias.format(level=level)
+ provisioner, worker_type = alias.split("/", 1)
+ try:
+ implementation, os = WORKER_TYPES[alias]
+ return {
+ "provisioner": provisioner,
+ "worker-type": worker_type,
+ "implementation": implementation,
+ "os": os,
+ }
+ except KeyError:
+ return {
+ "provisioner": provisioner,
+ "worker-type": worker_type,
+ }
+
+ matches = keymatch(graph_config["workers"]["aliases"], alias)
+ if len(matches) > 1:
+ raise KeyError("Multiple matches for worker-type alias " + alias)
+ elif not matches:
+ raise KeyError("No matches for worker-type alias " + alias)
+ worker_config = matches[0].copy()
+
+ worker_config["provisioner"] = evaluate_keyed_by(
+ worker_config["provisioner"],
+ f"worker-type alias {alias} field provisioner",
+ {"level": level},
+ ).format(
+ **{
+ "trust-domain": graph_config["trust-domain"],
+ "level": level,
+ "alias": alias,
+ }
+ )
+ attrs = {"level": level, "release-level": release_level}
+ if project:
+ attrs["project"] = project
+ worker_config["worker-type"] = evaluate_keyed_by(
+ worker_config["worker-type"],
+ f"worker-type alias {alias} field worker-type",
+ attrs,
+ ).format(
+ **{
+ "trust-domain": graph_config["trust-domain"],
+ "level": level,
+ "alias": alias,
+ }
+ )
+
+ return worker_config
+
+
+def worker_type_implementation(graph_config, parameters, worker_type):
+ """Get the worker implementation and OS for the given workerType, where the
+ OS represents the host system, not the target OS, in the case of
+ cross-compiles."""
+ worker_config = _get(
+ graph_config, worker_type, "1", "staging", parameters["project"]
+ )
+ return worker_config["implementation"], worker_config.get("os")
+
+
+def get_worker_type(graph_config, parameters, worker_type):
+ """
+ Get the worker type provisioner and worker-type, optionally evaluating
+ aliases from the graph config.
+ """
+ worker_config = _get(
+ graph_config,
+ worker_type,
+ parameters["level"],
+ _release_level(parameters.get("project")),
+ parameters.get("project"),
+ )
+ return worker_config["provisioner"], worker_config["worker-type"]
diff --git a/taskcluster/mach_commands.py b/taskcluster/mach_commands.py
new file mode 100644
index 0000000000..b752cb7d16
--- /dev/null
+++ b/taskcluster/mach_commands.py
@@ -0,0 +1,416 @@
+# -*- coding: utf-8 -*-
+
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+import argparse
+import json
+import logging
+import os
+import sys
+import time
+import traceback
+from functools import partial
+
+import gecko_taskgraph.main
+from gecko_taskgraph.main import commands as taskgraph_commands
+from mach.decorators import Command, CommandArgument, SettingsProvider, SubCommand
+
+logger = logging.getLogger("taskcluster")
+
+
+@SettingsProvider
+class TaskgraphConfig(object):
+ @classmethod
+ def config_settings(cls):
+ return [
+ (
+ "taskgraph.diffcmd",
+ "string",
+ "The command to run with `./mach taskgraph --diff`",
+ "diff --report-identical-files "
+ "--label={attr}@{base} --label={attr}@{cur} -U20",
+ {},
+ )
+ ]
+
+
+def strtobool(value):
+ """Convert string to boolean.
+
+ Wraps "distutils.util.strtobool", deferring the import of the package
+ in case it's not installed. Otherwise, we have a "chicken and egg problem" where
+ |mach bootstrap| would install the required package to enable "distutils.util", but
+ it can't because mach fails to interpret this file.
+ """
+ from distutils.util import strtobool
+
+ return bool(strtobool(value))
+
+
+def get_taskgraph_command_parser(name):
+ """Given a command name, obtain its argument parser.
+
+ Args:
+ name (str): Name of the command.
+
+ Returns:
+ ArgumentParser: An ArgumentParser instance.
+ """
+ command = taskgraph_commands[name]
+ parser = argparse.ArgumentParser()
+ for arg in command.func.args:
+ parser.add_argument(*arg[0], **arg[1])
+
+ parser.set_defaults(func=command.func, **command.defaults)
+ return parser
+
+
+def get_taskgraph_decision_parser():
+ parser = get_taskgraph_command_parser("decision")
+
+ extra_args = [
+ (
+ ["--optimize-target-tasks"],
+ {
+ "type": lambda flag: strtobool(flag),
+ "nargs": "?",
+ "const": "true",
+ "help": "If specified, this indicates whether the target "
+ "tasks are eligible for optimization. Otherwise, the default "
+ "for the project is used.",
+ },
+ ),
+ (
+ ["--include-push-tasks"],
+ {
+ "action": "store_true",
+ "help": "Whether tasks from the on-push graph should be re-used "
+ "in this graph. This allows cron graphs to avoid rebuilding "
+ "jobs that were built on-push.",
+ },
+ ),
+ (
+ ["--rebuild-kind"],
+ {
+ "dest": "rebuild_kinds",
+ "action": "append",
+ "default": argparse.SUPPRESS,
+ "help": "Kinds that should not be re-used from the on-push graph.",
+ },
+ ),
+ ]
+ for arg in extra_args:
+ parser.add_argument(*arg[0], **arg[1])
+
+ return parser
+
+
+@Command(
+ "taskgraph",
+ category="ci",
+ description="Manipulate TaskCluster task graphs defined in-tree",
+)
+def taskgraph_command(command_context):
+ """The taskgraph subcommands all relate to the generation of task graphs
+ for Gecko continuous integration. A task graph is a set of tasks linked
+ by dependencies: for example, a binary must be built before it is tested,
+ and that build may further depend on various toolchains, libraries, etc.
+ """
+
+
+@SubCommand(
+ "taskgraph",
+ "tasks",
+ description="Show all tasks in the taskgraph",
+ parser=partial(get_taskgraph_command_parser, "tasks"),
+)
+def taskgraph_tasks(command_context, **options):
+ return run_show_taskgraph(command_context, **options)
+
+
+@SubCommand(
+ "taskgraph",
+ "full",
+ description="Show the full taskgraph",
+ parser=partial(get_taskgraph_command_parser, "full"),
+)
+def taskgraph_full(command_context, **options):
+ return run_show_taskgraph(command_context, **options)
+
+
+@SubCommand(
+ "taskgraph",
+ "target",
+ description="Show the target task set",
+ parser=partial(get_taskgraph_command_parser, "target"),
+)
+def taskgraph_target(command_context, **options):
+ return run_show_taskgraph(command_context, **options)
+
+
+@SubCommand(
+ "taskgraph",
+ "target-graph",
+ description="Show the target taskgraph",
+ parser=partial(get_taskgraph_command_parser, "target-graph"),
+)
+def taskgraph_target_graph(command_context, **options):
+ return run_show_taskgraph(command_context, **options)
+
+
+@SubCommand(
+ "taskgraph",
+ "optimized",
+ description="Show the optimized taskgraph",
+ parser=partial(get_taskgraph_command_parser, "optimized"),
+)
+def taskgraph_optimized(command_context, **options):
+ return run_show_taskgraph(command_context, **options)
+
+
+@SubCommand(
+ "taskgraph",
+ "morphed",
+ description="Show the morphed taskgraph",
+ parser=partial(get_taskgraph_command_parser, "morphed"),
+)
+def taskgraph_morphed(command_context, **options):
+ return run_show_taskgraph(command_context, **options)
+
+
+def run_show_taskgraph(command_context, **options):
+ # There are cases where we don't want to set up mach logging (e.g logs
+ # are being redirected to disk). By monkeypatching the 'setup_logging'
+ # function we can let 'taskgraph.main' decide whether or not to log to
+ # the terminal.
+ gecko_taskgraph.main.setup_logging = partial(
+ setup_logging,
+ command_context,
+ quiet=options["quiet"],
+ verbose=options["verbose"],
+ )
+ show_taskgraph = options.pop("func")
+ return show_taskgraph(options)
+
+
+@SubCommand("taskgraph", "actions", description="Write actions.json to stdout")
+@CommandArgument(
+ "--root", "-r", help="root of the taskgraph definition relative to topsrcdir"
+)
+@CommandArgument(
+ "--quiet", "-q", action="store_true", help="suppress all logging output"
+)
+@CommandArgument(
+ "--verbose",
+ "-v",
+ action="store_true",
+ help="include debug-level logging output",
+)
+@CommandArgument(
+ "--parameters",
+ "-p",
+ default="project=mozilla-central",
+ help="parameters file (.yml or .json; see `taskcluster/docs/parameters.rst`)`",
+)
+def taskgraph_actions(command_context, **options):
+ return show_actions(command_context, options)
+
+
+@SubCommand(
+ "taskgraph",
+ "decision",
+ description="Run the decision task",
+ parser=get_taskgraph_decision_parser,
+)
+def taskgraph_decision(command_context, **options):
+ """Run the decision task: generate a task graph and submit to
+ TaskCluster. This is only meant to be called within decision tasks,
+ and requires a great many arguments. Commands like `mach taskgraph
+ optimized` are better suited to use on the command line, and can take
+ the parameters file generated by a decision task."""
+ try:
+ setup_logging(command_context)
+ start = time.monotonic()
+ ret = taskgraph_commands["decision"].func(options)
+ end = time.monotonic()
+ if os.environ.get("MOZ_AUTOMATION") == "1":
+ perfherder_data = {
+ "framework": {"name": "build_metrics"},
+ "suites": [
+ {
+ "name": "decision",
+ "value": end - start,
+ "lowerIsBetter": True,
+ "shouldAlert": True,
+ "subtests": [],
+ }
+ ],
+ }
+ print(
+ "PERFHERDER_DATA: {}".format(json.dumps(perfherder_data)),
+ file=sys.stderr,
+ )
+ return ret
+ except Exception:
+ traceback.print_exc()
+ sys.exit(1)
+
+
+@SubCommand(
+ "taskgraph",
+ "cron",
+ description="Provide a pointer to the new `.cron.yml` handler.",
+)
+def taskgraph_cron(command_context, **options):
+ print(
+ 'Handling of ".cron.yml" files has move to '
+ "https://hg.mozilla.org/ci/ci-admin/file/default/build-decision."
+ )
+ sys.exit(1)
+
+
+@SubCommand(
+ "taskgraph",
+ "action-callback",
+ description="Run action callback used by action tasks",
+ parser=partial(get_taskgraph_command_parser, "action-callback"),
+)
+def action_callback(command_context, **options):
+ setup_logging(command_context)
+ taskgraph_commands["action-callback"].func(options)
+
+
+@SubCommand(
+ "taskgraph",
+ "test-action-callback",
+ description="Run an action callback in a testing mode",
+ parser=partial(get_taskgraph_command_parser, "test-action-callback"),
+)
+def test_action_callback(command_context, **options):
+ setup_logging(command_context)
+
+ if not options["parameters"]:
+ options["parameters"] = "project=mozilla-central"
+
+ taskgraph_commands["test-action-callback"].func(options)
+
+
+def setup_logging(command_context, quiet=False, verbose=True):
+ """
+ Set up Python logging for all loggers, sending results to stderr (so
+ that command output can be redirected easily) and adding the typical
+ mach timestamp.
+ """
+ # remove the old terminal handler
+ old = command_context.log_manager.replace_terminal_handler(None)
+
+ # re-add it, with level and fh set appropriately
+ if not quiet:
+ level = logging.DEBUG if verbose else logging.INFO
+ command_context.log_manager.add_terminal_logging(
+ fh=sys.stderr,
+ level=level,
+ write_interval=old.formatter.write_interval,
+ write_times=old.formatter.write_times,
+ )
+
+ # all of the taskgraph logging is unstructured logging
+ command_context.log_manager.enable_unstructured()
+
+
+def show_actions(command_context, options):
+ import gecko_taskgraph
+ import gecko_taskgraph.actions
+ from taskgraph.generator import TaskGraphGenerator
+ from taskgraph.parameters import parameters_loader
+
+ try:
+ setup_logging(
+ command_context, quiet=options["quiet"], verbose=options["verbose"]
+ )
+ parameters = parameters_loader(options["parameters"])
+
+ tgg = TaskGraphGenerator(
+ root_dir=options.get("root"),
+ parameters=parameters,
+ )
+
+ actions = gecko_taskgraph.actions.render_actions_json(
+ tgg.parameters,
+ tgg.graph_config,
+ decision_task_id="DECISION-TASK",
+ )
+ print(json.dumps(actions, sort_keys=True, indent=2, separators=(",", ": ")))
+ except Exception:
+ traceback.print_exc()
+ sys.exit(1)
+
+
+@Command(
+ "taskcluster-load-image",
+ category="ci",
+ description="Load a pre-built Docker image. Note that you need to "
+ "have docker installed and running for this to work.",
+ parser=partial(get_taskgraph_command_parser, "load-image"),
+)
+def load_image(command_context, **kwargs):
+ taskgraph_commands["load-image"].func(kwargs)
+
+
+@Command(
+ "taskcluster-build-image",
+ category="ci",
+ description="Build a Docker image",
+ parser=partial(get_taskgraph_command_parser, "build-image"),
+)
+def build_image(command_context, **kwargs):
+ try:
+ taskgraph_commands["build-image"].func(kwargs)
+ except Exception:
+ traceback.print_exc()
+ sys.exit(1)
+
+
+@Command(
+ "taskcluster-image-digest",
+ category="ci",
+ description="Print the digest of the image of this name based on the "
+ "current contents of the tree.",
+ parser=partial(get_taskgraph_command_parser, "build-image"),
+)
+def image_digest(command_context, **kwargs):
+ taskgraph_commands["image-digest"].func(kwargs)
+
+
+@Command(
+ "release-history",
+ category="ci",
+ description="Query balrog for release history used by enable partials generation",
+)
+@CommandArgument(
+ "-b",
+ "--branch",
+ help="The gecko project branch used in balrog, such as "
+ "mozilla-central, release, maple",
+)
+@CommandArgument(
+ "--product", default="Firefox", help="The product identifier, such as 'Firefox'"
+)
+def generate_partials_builds(command_context, product, branch):
+ from gecko_taskgraph.util.partials import populate_release_history
+
+ try:
+ import yaml
+
+ release_history = {"release_history": populate_release_history(product, branch)}
+ print(
+ yaml.safe_dump(
+ release_history, allow_unicode=True, default_flow_style=False
+ )
+ )
+ except Exception:
+ traceback.print_exc()
+ sys.exit(1)
diff --git a/taskcluster/moz.build b/taskcluster/moz.build
new file mode 100644
index 0000000000..584e5a72e2
--- /dev/null
+++ b/taskcluster/moz.build
@@ -0,0 +1,18 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+with Files("**"):
+ BUG_COMPONENT = ("Firefox Build System", "Task Configuration")
+
+PYTHON_UNITTEST_MANIFESTS += [
+ "gecko_taskgraph/test/python.ini",
+ "test/python.ini",
+]
+SPHINX_TREES["/taskcluster"] = "docs"
+SPHINX_PYTHON_PACKAGE_DIRS += ["gecko_taskgraph"]
+
+with Files("docs/**"):
+ SCHEDULES.exclusive = ["docs"]
diff --git a/taskcluster/scripts/builder/build-haz-linux.sh b/taskcluster/scripts/builder/build-haz-linux.sh
new file mode 100755
index 0000000000..b8253037bf
--- /dev/null
+++ b/taskcluster/scripts/builder/build-haz-linux.sh
@@ -0,0 +1,184 @@
+#!/bin/bash -ex
+
+function usage() {
+ echo "Usage: $0 [--project <js|browser>] <workspace-dir> flags..."
+ echo "flags are treated the same way as a commit message would be"
+ echo "(as in, they are scanned for directives just like a try: ... line)"
+}
+
+PROJECT=js
+WORKSPACE=
+while [[ $# -gt 0 ]]; do
+ if [[ "$1" == "-h" ]] || [[ "$1" == "--help" ]]; then
+ usage
+ exit 0
+ elif [[ "$1" == "--project" ]]; then
+ shift
+ PROJECT="$1"
+ shift
+ elif [[ "$1" == "--no-tooltool" ]]; then
+ shift
+ elif [[ -z "$WORKSPACE" ]]; then
+ WORKSPACE=$( cd "$1" && pwd )
+ shift
+ break
+ fi
+done
+
+function check_commit_msg () {
+ ( set +e;
+ if [[ -n "$AUTOMATION" ]]; then
+ hg --cwd "$GECKO_PATH" log -r. --template '{desc}\n' | grep -F -q -- "$1"
+ else
+ echo -- "$SCRIPT_FLAGS" | grep -F -q -- "$1"
+ fi
+ )
+}
+
+if check_commit_msg "--dep"; then
+ HAZ_DEP=1
+fi
+
+SCRIPT_FLAGS=$*
+
+ANALYSIS_DIR="$WORKSPACE/haz-$PROJECT"
+
+# Ensure all the scripts in this dir are on the path....
+DIRNAME=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+PATH=$DIRNAME:$PATH
+
+# Use GECKO_BASE_REPOSITORY as a signal for whether we are running in automation.
+export AUTOMATION=${GECKO_BASE_REPOSITORY:+1}
+
+: "${GECKO_PATH:="$DIRNAME"/../../..}"
+
+if ! [ -d "$GECKO_PATH" ]; then
+ echo "GECKO_PATH must be set to a directory containing a gecko source checkout" >&2
+ exit 1
+fi
+
+# Directory to hold the compiled JS shell that will run the analysis.
+HAZARD_SHELL_OBJDIR=$WORKSPACE/obj-haz-shell
+
+export NO_MERCURIAL_SETUP_CHECK=1
+
+if [[ "$PROJECT" = "browser" ]]; then (
+ cd "$WORKSPACE"
+ set "$WORKSPACE"
+ # Mozbuild config:
+ export MOZBUILD_STATE_PATH=$WORKSPACE/mozbuild/
+ # Create .mozbuild so mach doesn't complain about this
+ mkdir -p "$MOZBUILD_STATE_PATH"
+) fi
+
+# Build the shell
+export HAZARD_SHELL_OBJDIR # This will be picked up by mozconfig.haz_shell.
+$GECKO_PATH/mach hazards build-shell
+
+# Run a self-test
+$GECKO_PATH/mach hazards self-test --shell-objdir="$HAZARD_SHELL_OBJDIR"
+
+# Artifacts folder is outside of the cache.
+mkdir -p "$HOME"/artifacts/ || true
+
+function grab_artifacts () {
+ local artifacts
+ artifacts="$HOME/artifacts"
+
+ [ -d "$ANALYSIS_DIR" ] && (
+ cd "$ANALYSIS_DIR"
+ ls -lah
+
+ # Do not error out if no files found
+ shopt -s nullglob
+ set +e
+ local important
+ important=(refs.txt unnecessary.txt hazards.txt gcFunctions.txt allFunctions.txt heapWriteHazards.txt rootingHazards.json hazards.html)
+
+ # Bundle up the less important but still useful intermediate outputs,
+ # just to cut down on the clutter in treeherder's Job Details pane.
+ tar -acvf "${artifacts}/hazardIntermediates.tar.xz" --exclude-from <(IFS=$'\n'; echo "${important[*]}") *.txt *.lst build_xgill.log
+
+ # Upload the important outputs individually, so that they will be
+ # visible in Job Details and accessible to automated jobs.
+ for f in "${important[@]}"; do
+ gzip -9 -c "$f" > "${artifacts}/$f.gz"
+ done
+
+ # Check whether the user requested .xdb file upload in the top commit comment
+ if check_commit_msg "--upload-xdbs"; then
+ HAZ_UPLOAD_XDBS=1
+ fi
+
+ if [ -n "$HAZ_UPLOAD_XDBS" ]; then
+ for f in *.xdb; do
+ xz -c "$f" > "${artifacts}/$f.bz2"
+ done
+ fi
+ )
+}
+
+function check_hazards () {
+ (
+ set +e
+ NUM_HAZARDS=$(grep -c 'Function.*has unrooted.*live across GC call' "$1"/hazards.txt)
+ NUM_UNSAFE=$(grep -c '^Function.*takes unsafe address of unrooted' "$1"/refs.txt)
+ NUM_UNNECESSARY=$(grep -c '^Function.* has unnecessary root' "$1"/unnecessary.txt)
+ NUM_DROPPED=$(grep -c '^Dropped CFG' "$1"/build_xgill.log)
+ NUM_WRITE_HAZARDS=$(perl -lne 'print $1 if m!found (\d+)/\d+ allowed errors!' "$1"/heapWriteHazards.txt)
+ NUM_MISSING=$(grep -c '^Function.*expected hazard.*but none were found' "$1"/hazards.txt)
+
+ set +x
+ echo "TinderboxPrint: rooting hazards<br/>$NUM_HAZARDS"
+ echo "TinderboxPrint: (unsafe references to unrooted GC pointers)<br/>$NUM_UNSAFE"
+ echo "TinderboxPrint: (unnecessary roots)<br/>$NUM_UNNECESSARY"
+ echo "TinderboxPrint: missing expected hazards<br/>$NUM_MISSING"
+ echo "TinderboxPrint: heap write hazards<br/>$NUM_WRITE_HAZARDS"
+
+ # Display errors in a way that will get picked up by the taskcluster scraper.
+ perl -lne 'print "TEST-UNEXPECTED-FAIL | hazards | $1 $2" if /^Function.* has (unrooted .*live across GC call).* (at .*)$/' "$1"/hazards.txt
+
+ exit_status=0
+
+ if [ $NUM_HAZARDS -gt 0 ]; then
+ echo "TEST-UNEXPECTED-FAIL | hazards | $NUM_HAZARDS rooting hazards detected" >&2
+ echo "TinderboxPrint: documentation<br/><a href='https://wiki.mozilla.org/Javascript:Hazard_Builds#Diagnosing_a_rooting_hazards_failure'>static rooting hazard analysis failures</a>, visit \"Inspect Task\" link for hazard details"
+ exit_status=1
+ fi
+
+ if [ $NUM_MISSING -gt 0 ]; then
+ echo "TEST-UNEXPECTED-FAIL | hazards | $NUM_MISSING expected hazards went undetected" >&2
+ echo "TinderboxPrint: documentation<br/><a href='https://wiki.mozilla.org/Javascript:Hazard_Builds#Diagnosing_a_rooting_hazards_failure'>static rooting hazard analysis failures</a>, visit \"Inspect Task\" link for hazard details"
+ exit_status=1
+ fi
+
+ NUM_ALLOWED_WRITE_HAZARDS=0
+ if [ $NUM_WRITE_HAZARDS -gt $NUM_ALLOWED_WRITE_HAZARDS ]; then
+ echo "TEST-UNEXPECTED-FAIL | heap-write-hazards | $NUM_WRITE_HAZARDS heap write hazards detected out of $NUM_ALLOWED_WRITE_HAZARDS allowed" >&2
+ echo "TinderboxPrint: documentation<br/><a href='https://wiki.mozilla.org/Javascript:Hazard_Builds#Diagnosing_a_heap_write_hazard_failure'>heap write hazard analysis failures</a>, visit \"Inspect Task\" link for hazard details"
+ exit_status = 1
+ fi
+
+ if [ $NUM_DROPPED -gt 0 ]; then
+ echo "TEST-UNEXPECTED-FAIL | hazards | $NUM_DROPPED CFGs dropped" >&2
+ echo "TinderboxPrint: sixgill unable to handle constructs<br/>$NUM_DROPPED"
+ exit_status=1
+ fi
+
+ if [ $exit_status -ne 0 ]; then
+ exit $exit_status
+ fi
+ )
+}
+
+trap grab_artifacts EXIT
+
+# Gather the information from the source tree by compiling it.
+$GECKO_PATH/mach hazards gather --project=$PROJECT --work-dir="$ANALYSIS_DIR"
+
+# Analyze the collected information.
+$GECKO_PATH/mach hazards analyze --project=$PROJECT --shell-objdir="$HAZARD_SHELL_OBJDIR" --work-dir="$ANALYSIS_DIR"
+
+check_hazards "$ANALYSIS_DIR"
+
+################################### script end ###################################
diff --git a/taskcluster/scripts/builder/build-l10n.sh b/taskcluster/scripts/builder/build-l10n.sh
new file mode 100755
index 0000000000..0a324c7479
--- /dev/null
+++ b/taskcluster/scripts/builder/build-l10n.sh
@@ -0,0 +1,90 @@
+#! /bin/bash -vex
+
+set -x -e
+
+echo "running as" $(id)
+
+####
+# Taskcluster friendly wrapper for performing fx desktop l10n repacks via mozharness.
+# Based on ./build-linux.sh
+####
+
+# Inputs, with defaults
+
+: MOZHARNESS_SCRIPT ${MOZHARNESS_SCRIPT}
+: MOZHARNESS_CONFIG ${MOZHARNESS_CONFIG}
+: MOZHARNESS_CONFIG_PATHS ${MOZHARNESS_CONFIG_PATHS}
+: MOZHARNESS_ACTIONS ${MOZHARNESS_ACTIONS}
+: MOZHARNESS_OPTIONS ${MOZHARNESS_OPTIONS}
+
+: TOOLTOOL_CACHE ${TOOLTOOL_CACHE:=/builds/worker/tooltool-cache}
+
+: MOZ_SCM_LEVEL ${MOZ_SCM_LEVEL:=1}
+
+: MOZ_SCM_LEVEL ${MOZ_SCM_LEVEL:=1}
+
+: WORKSPACE ${WORKSPACE:=/builds/worker/workspace}
+: MOZ_OBJDIR ${MOZ_OBJDIR:=$WORKSPACE/obj-build}
+
+set -v
+
+fail() {
+ echo # make sure error message is on a new line
+ echo "[build-l10n.sh:error]" "${@}"
+ exit 1
+}
+
+export MOZ_CRASHREPORTER_NO_REPORT=1
+export TINDERBOX_OUTPUT=1
+
+# test required parameters are supplied
+if [[ -z ${MOZHARNESS_SCRIPT} ]]; then fail "MOZHARNESS_SCRIPT is not set"; fi
+if [[ -z "${MOZHARNESS_CONFIG}" && -z "${EXTRA_MOZHARNESS_CONFIG}" ]]; then fail "MOZHARNESS_CONFIG or EXTRA_MOZHARNESS_CONFIG is not set"; fi
+
+# set up mozharness configuration, via command line, env, etc.
+
+# $TOOLTOOL_CACHE bypasses mozharness completely and is read by tooltool_wrapper.sh to set the
+# cache. However, only some mozharness scripts use tooltool_wrapper.sh, so this may not be
+# entirely effective.
+export TOOLTOOL_CACHE
+
+export MOZ_OBJDIR
+
+config_path_cmds=""
+for path in ${MOZHARNESS_CONFIG_PATHS}; do
+ config_path_cmds="${config_path_cmds} --extra-config-path ${GECKO_PATH}/${path}"
+done
+
+# support multiple, space delimited, config files
+config_cmds=""
+for cfg in $MOZHARNESS_CONFIG; do
+ config_cmds="${config_cmds} --config ${cfg}"
+done
+
+# if MOZHARNESS_ACTIONS is given, only run those actions (completely overriding default_actions
+# in the mozharness configuration)
+if [ -n "$MOZHARNESS_ACTIONS" ]; then
+ actions=""
+ for action in $MOZHARNESS_ACTIONS; do
+ actions="$actions --$action"
+ done
+fi
+
+# if MOZHARNESS_OPTIONS is given, append them to mozharness command line run
+if [ -n "$MOZHARNESS_OPTIONS" ]; then
+ options=""
+ for option in $MOZHARNESS_OPTIONS; do
+ options="$options --$option"
+ done
+fi
+
+cd /builds/worker
+
+$GECKO_PATH/mach python -- \
+ $GECKO_PATH/testing/${MOZHARNESS_SCRIPT} \
+ ${config_path_cmds} \
+ ${config_cmds} \
+ $actions \
+ $options \
+ --log-level=debug \
+ --work-dir=$WORKSPACE \
diff --git a/taskcluster/scripts/builder/build-linux.sh b/taskcluster/scripts/builder/build-linux.sh
new file mode 100755
index 0000000000..35c54788b4
--- /dev/null
+++ b/taskcluster/scripts/builder/build-linux.sh
@@ -0,0 +1,125 @@
+#! /bin/bash -vex
+
+set -x -e
+
+echo "running as" $(id)
+
+####
+# Taskcluster friendly wrapper for performing fx desktop builds via mozharness.
+####
+
+# Inputs, with defaults
+
+: MOZHARNESS_SCRIPT ${MOZHARNESS_SCRIPT}
+: MOZHARNESS_CONFIG ${MOZHARNESS_CONFIG}
+: MOZHARNESS_CONFIG_PATHS ${MOZHARNESS_CONFIG_PATHS}
+: MOZHARNESS_ACTIONS ${MOZHARNESS_ACTIONS}
+: MOZHARNESS_OPTIONS ${MOZHARNESS_OPTIONS}
+
+: TOOLTOOL_CACHE ${TOOLTOOL_CACHE:=/builds/worker/tooltool-cache}
+
+: MOZ_SCM_LEVEL ${MOZ_SCM_LEVEL:=1}
+
+: NEED_XVFB ${NEED_XVFB:=false}
+
+: MH_CUSTOM_BUILD_VARIANT_CFG ${MH_CUSTOM_BUILD_VARIANT_CFG}
+: MH_BRANCH ${MH_BRANCH:=mozilla-central}
+: MH_BUILD_POOL ${MH_BUILD_POOL:=staging}
+
+: WORKSPACE ${WORKSPACE:=/builds/worker/workspace}
+: MOZ_OBJDIR ${MOZ_OBJDIR:=$WORKSPACE/obj-build}
+
+set -v
+
+fail() {
+ echo # make sure error message is on a new line
+ echo "[build-linux.sh:error]" "${@}"
+ exit 1
+}
+
+export MOZ_CRASHREPORTER_NO_REPORT=1
+export TINDERBOX_OUTPUT=1
+
+# use "simple" package names so that they can be hard-coded in the task's
+# extras.locations
+export MOZ_SIMPLE_PACKAGE_NAME=target
+
+# test required parameters are supplied
+if [[ -z ${MOZHARNESS_SCRIPT} ]]; then fail "MOZHARNESS_SCRIPT is not set"; fi
+if [[ -z "${MOZHARNESS_CONFIG}" && -z "${EXTRA_MOZHARNESS_CONFIG}" ]]; then fail "MOZHARNESS_CONFIG or EXTRA_MOZHARNESS_CONFIG is not set"; fi
+
+# run XVfb in the background, if necessary
+if $NEED_XVFB; then
+ . /builds/worker/scripts/xvfb.sh
+
+ cleanup() {
+ local rv=$?
+ cleanup_xvfb
+ exit $rv
+ }
+ trap cleanup EXIT INT
+
+ start_xvfb '1024x768x24' 2
+fi
+
+# set up mozharness configuration, via command line, env, etc.
+
+debug_flag=""
+if [ 0$DEBUG -ne 0 ]; then
+ debug_flag='--debug'
+fi
+
+custom_build_variant_cfg_flag=""
+if [ -n "${MH_CUSTOM_BUILD_VARIANT_CFG}" ]; then
+ custom_build_variant_cfg_flag="--custom-build-variant-cfg=${MH_CUSTOM_BUILD_VARIANT_CFG}"
+fi
+
+# $TOOLTOOL_CACHE bypasses mozharness completely and is read by tooltool_wrapper.sh to set the
+# cache. However, only some mozharness scripts use tooltool_wrapper.sh, so this may not be
+# entirely effective.
+export TOOLTOOL_CACHE
+
+export MOZ_OBJDIR
+
+config_path_cmds=""
+for path in ${MOZHARNESS_CONFIG_PATHS}; do
+ config_path_cmds="${config_path_cmds} --extra-config-path ${GECKO_PATH}/${path}"
+done
+
+# support multiple, space delimited, config files
+config_cmds=""
+for cfg in $MOZHARNESS_CONFIG; do
+ config_cmds="${config_cmds} --config ${cfg}"
+done
+
+# if MOZHARNESS_ACTIONS is given, only run those actions (completely overriding default_actions
+# in the mozharness configuration)
+if [ -n "$MOZHARNESS_ACTIONS" ]; then
+ actions=""
+ for action in $MOZHARNESS_ACTIONS; do
+ actions="$actions --$action"
+ done
+fi
+
+# if MOZHARNESS_OPTIONS is given, append them to mozharness command line run
+if [ -n "$MOZHARNESS_OPTIONS" ]; then
+ options=""
+ for option in $MOZHARNESS_OPTIONS; do
+ options="$options --$option"
+ done
+fi
+
+cd /builds/worker
+
+$GECKO_PATH/mach python -- \
+ $GECKO_PATH/testing/${MOZHARNESS_SCRIPT} \
+ ${config_path_cmds} \
+ ${config_cmds} \
+ $debug_flag \
+ $custom_build_variant_cfg_flag \
+ $actions \
+ $options \
+ --log-level=debug \
+ --work-dir=$WORKSPACE \
+ --branch=${MH_BRANCH} \
+ --build-pool=${MH_BUILD_POOL}
diff --git a/taskcluster/scripts/builder/build-sm-package.sh b/taskcluster/scripts/builder/build-sm-package.sh
new file mode 100755
index 0000000000..816256ea9c
--- /dev/null
+++ b/taskcluster/scripts/builder/build-sm-package.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+set -xe
+
+# Default variables values.
+: ${WORK:=$HOME/workspace}
+
+mkdir -p $UPLOAD_DIR
+
+# Package up the sources into the release tarball.
+AUTOMATION=1 DIST=$UPLOAD_DIR $GECKO_PATH/js/src/make-source-package.py
+
+# Extract the tarball into a new directory in the workspace.
+
+PACKAGE_DIR=$WORK/sm-package
+
+# Do not use -p option because the package directory should not exist.
+mkdir $PACKAGE_DIR
+pushd $PACKAGE_DIR
+
+tar -xvf $UPLOAD_DIR/mozjs-*.tar.*z*
+
+: ${PYTHON3:=python3}
+
+status=0
+(
+ # Build the freshly extracted, packaged SpiderMonkey.
+ cd ./mozjs-*
+ AUTOMATION=1 $PYTHON3 js/src/devtools/automation/autospider.py --skip-tests=checks $SPIDERMONKEY_VARIANT
+) || status=$?
+
+# Copy artifacts for upload by TaskCluster
+cp -rL ./mozjs-*/obj-spider/dist/bin/{js,jsapi-tests,js-gdb.py,libmozjs*} $UPLOAD_DIR
+
+exit $status
diff --git a/taskcluster/scripts/builder/build-sm.sh b/taskcluster/scripts/builder/build-sm.sh
new file mode 100755
index 0000000000..7ee31bbcf4
--- /dev/null
+++ b/taskcluster/scripts/builder/build-sm.sh
@@ -0,0 +1,64 @@
+#!/bin/bash
+
+set -x
+
+# Default variables values.
+: ${SPIDERMONKEY_VARIANT:=plain}
+: ${WORK:=$HOME/workspace}
+: ${PYTHON3:=python3}
+
+# Ensure upload dir exists
+mkdir -p $UPLOAD_DIR
+
+# Run the script
+export MOZ_UPLOAD_DIR="$(cd "$UPLOAD_DIR"; pwd)"
+export OBJDIR=$WORK/obj-spider
+AUTOMATION=1 $PYTHON3 $GECKO_PATH/js/src/devtools/automation/autospider.py ${SPIDERMONKEY_PLATFORM:+--platform=$SPIDERMONKEY_PLATFORM} $SPIDERMONKEY_VARIANT
+BUILD_STATUS=$?
+
+# Copy artifacts for upload by TaskCluster.
+upload=${MOZ_JS_UPLOAD_BINARIES_DEFAULT-1}
+# User-provided override switch.
+if [ -n "$MOZ_JS_UPLOAD_BINARIES" ]; then
+ upload=1
+fi
+if [ "$upload" = "1" ]; then
+ (
+ cd "$OBJDIR/dist/bin"
+ zip "$UPLOAD_DIR/target.jsshell.zip" {js,jsapi-tests,js-gdb.py,libnspr4.so,libplds4.so,libplc4.so}
+ )
+ cp -L "$OBJDIR/mozinfo.json" "$UPLOAD_DIR/target.mozinfo.json"
+
+ # Fuzzing users want the correct version of llvm-symbolizer available in the
+ # same directory as the built output.
+ if [ -d "$MOZ_FETCHES_DIR/llvm-symbolizer" ]; then
+ for f in "$MOZ_FETCHES_DIR/llvm-symbolizer/bin/llvm-symbolizer"*; do
+ gzip -c "$f" > "$UPLOAD_DIR/llvm-symbolizer.gz" || echo "gzip $f failed" >&2
+ break
+ done
+ fi
+else # !upload
+# Provide a note for users on why we don't include artifacts for these builds
+# by default, and how they can get the artifacts if they really need them.
+ cat >"$UPLOAD_DIR"/README-artifacts.txt <<'EOF'
+Artifact upload has been disabled for this build due to infrequent usage of the
+generated artifacts. If you find yourself in a position where you need the
+shell or similar artifacts from this build, please redo your push with the
+environment variable MOZ_JS_UPLOAD_BINARIES set to 1. You can provide this as
+the option `--env MOZ_JS_UPLOAD_BINARIES=1` to `mach try fuzzy` or `mach try auto`.
+EOF
+fi
+
+# Fuzzing also uses a few fields in target.json file for automated downloads to
+# identify what was built.
+if [ -n "$MOZ_BUILD_DATE" ] && [ -n "$GECKO_HEAD_REV" ]; then
+ cat >"$UPLOAD_DIR"/target.json <<EOF
+{
+ "buildid": "$MOZ_BUILD_DATE",
+ "moz_source_stamp": "$GECKO_HEAD_REV"
+}
+EOF
+ cp "$GECKO_PATH"/mozconfig.autospider "$UPLOAD_DIR"
+fi
+
+exit $BUILD_STATUS
diff --git a/taskcluster/scripts/builder/repackage.sh b/taskcluster/scripts/builder/repackage.sh
new file mode 100755
index 0000000000..6ff67693af
--- /dev/null
+++ b/taskcluster/scripts/builder/repackage.sh
@@ -0,0 +1,95 @@
+#! /bin/bash -vex
+
+set -x -e
+
+echo "running as" $(id)
+
+####
+# Taskcluster friendly wrapper for performing fx desktop builds via mozharness.
+####
+
+# Inputs, with defaults
+
+: MOZHARNESS_SCRIPT ${MOZHARNESS_SCRIPT}
+: MOZHARNESS_CONFIG ${MOZHARNESS_CONFIG}
+: MOZHARNESS_CONFIG_PATHS ${MOZHARNESS_CONFIG_PATHS}
+: MOZHARNESS_ACTIONS ${MOZHARNESS_ACTIONS}
+: MOZHARNESS_OPTIONS ${MOZHARNESS_OPTIONS}
+
+: TOOLTOOL_CACHE ${TOOLTOOL_CACHE:=/builds/worker/tooltool-cache}
+
+: MOZ_SCM_LEVEL ${MOZ_SCM_LEVEL:=1}
+
+: WORKSPACE ${WORKSPACE:=/builds/worker/workspace}
+: MOZ_OBJDIR ${MOZ_OBJDIR:=$WORKSPACE/obj-build}
+
+set -v
+
+fail() {
+ echo # make sure error message is on a new line
+ echo "[build-linux.sh:error]" "${@}"
+ exit 1
+}
+
+export MOZ_CRASHREPORTER_NO_REPORT=1
+export TINDERBOX_OUTPUT=1
+
+# use "simple" package names so that they can be hard-coded in the task's
+# extras.locations
+export MOZ_SIMPLE_PACKAGE_NAME=target
+
+# test required parameters are supplied
+if [[ -z ${MOZHARNESS_SCRIPT} ]]; then fail "MOZHARNESS_SCRIPT is not set"; fi
+if [[ -z "${MOZHARNESS_CONFIG}" && -z "${EXTRA_MOZHARNESS_CONFIG}" ]]; then fail "MOZHARNESS_CONFIG or EXTRA_MOZHARNESS_CONFIG is not set"; fi
+
+# set up mozharness configuration, via command line, env, etc.
+
+debug_flag=""
+if [ 0$DEBUG -ne 0 ]; then
+ debug_flag='--debug'
+fi
+
+# $TOOLTOOL_CACHE bypasses mozharness completely and is read by tooltool_wrapper.sh to set the
+# cache. However, only some mozharness scripts use tooltool_wrapper.sh, so this may not be
+# entirely effective.
+export TOOLTOOL_CACHE
+
+export MOZ_OBJDIR
+
+config_path_cmds=""
+for path in ${MOZHARNESS_CONFIG_PATHS}; do
+ config_path_cmds="${config_path_cmds} --extra-config-path ${GECKO_PATH}/${path}"
+done
+
+# support multiple, space delimited, config files
+config_cmds=""
+for cfg in $MOZHARNESS_CONFIG; do
+ config_cmds="${config_cmds} --config ${cfg}"
+done
+
+# if MOZHARNESS_ACTIONS is given, only run those actions (completely overriding default_actions
+# in the mozharness configuration)
+if [ -n "$MOZHARNESS_ACTIONS" ]; then
+ actions=""
+ for action in $MOZHARNESS_ACTIONS; do
+ actions="$actions --$action"
+ done
+fi
+
+# if MOZHARNESS_OPTIONS is given, append them to mozharness command line run
+if [ -n "$MOZHARNESS_OPTIONS" ]; then
+ options=""
+ for option in $MOZHARNESS_OPTIONS; do
+ options="$options --$option"
+ done
+fi
+
+cd /builds/worker
+
+$GECKO_PATH/mach python $GECKO_PATH/testing/${MOZHARNESS_SCRIPT} \
+ ${config_path_cmds} \
+ ${config_cmds} \
+ $actions \
+ $options \
+ --log-level=debug \
+ --work-dir=$WORKSPACE \
diff --git a/taskcluster/scripts/copy.sh b/taskcluster/scripts/copy.sh
new file mode 100755
index 0000000000..931145a3b6
--- /dev/null
+++ b/taskcluster/scripts/copy.sh
@@ -0,0 +1,9 @@
+#! /bin/bash -ex
+
+# This script copies the contents of the "scripts" folder into a docker
+# container using tar/untar the container id must be passed.
+
+DIRNAME=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
+docker exec $1 mkdir -p $2
+cd $DIRNAME
+tar -cv * | docker exec -i $1 tar -x -C $2
diff --git a/taskcluster/scripts/misc/afl-nyx.patch b/taskcluster/scripts/misc/afl-nyx.patch
new file mode 100644
index 0000000000..1be1a5fb1b
--- /dev/null
+++ b/taskcluster/scripts/misc/afl-nyx.patch
@@ -0,0 +1,847 @@
+From 705d24fb3ad80af5544b43ade6927d24a9367a69 Mon Sep 17 00:00:00 2001
+From: "Christian Holler (:decoder)" <choller@mozilla.com>
+Date: Thu, 14 Oct 2021 20:59:27 +0200
+Subject: [PATCH 01/10] Initial commit for compiler, preload and userspace
+ tools
+
+---
+ config.h | 2 +
+ llvm_mode/Makefile | 20 +++------
+ llvm_mode/afl-llvm-pass.so.cc | 3 +-
+ llvm_mode/afl-llvm-rt.o.c | 83 ++++++++++++++++++++++++++++++++---
+ 4 files changed, 87 insertions(+), 21 deletions(-)
+
+diff --git a/config.h b/config.h
+index ea6aac4..b21298d 100644
+--- a/config.h
++++ b/config.h
+@@ -328,6 +328,8 @@
+ #define MAP_SIZE_POW2 16
+ #define MAP_SIZE (1 << MAP_SIZE_POW2)
+
++#define STATE_STR_LEN 12
++
+ /* Maximum allocator request size (keep well under INT_MAX): */
+
+ #define MAX_ALLOC 0x40000000
+diff --git a/llvm_mode/Makefile b/llvm_mode/Makefile
+index 7617f91..823e959 100644
+--- a/llvm_mode/Makefile
++++ b/llvm_mode/Makefile
+@@ -23,6 +23,7 @@ BIN_PATH = $(PREFIX)/bin
+ VERSION = $(shell grep '^\#define VERSION ' ../config.h | cut -d '"' -f2)
+
+ LLVM_CONFIG ?= llvm-config
++LLVM_BINPATH = $(shell $(LLVM_CONFIG) --bindir)
+
+ CFLAGS ?= -O3 -funroll-loops
+ CFLAGS += -Wall -D_FORTIFY_SOURCE=2 -g -Wno-pointer-sign \
+@@ -51,8 +52,8 @@ endif
+ # probably better.
+
+ ifeq "$(origin CC)" "default"
+- CC = clang
+- CXX = clang++
++ CC = $(LLVM_BINPATH)/clang
++ CXX = $(LLVM_BINPATH)/clang++
+ endif
+
+ ifndef AFL_TRACE_PC
+@@ -61,7 +62,7 @@ else
+ PROGS = ../afl-clang-fast ../afl-llvm-rt.o ../afl-llvm-rt-32.o ../afl-llvm-rt-64.o
+ endif
+
+-all: test_deps $(PROGS) test_build all_done
++all: test_deps $(PROGS) all_done
+
+ test_deps:
+ ifndef AFL_TRACE_PC
+@@ -94,18 +95,7 @@ endif
+ @printf "[*] Building 64-bit variant of the runtime (-m64)... "
+ @$(CC) $(CFLAGS) -m64 -fPIC -c $< -o $@ 2>/dev/null; if [ "$$?" = "0" ]; then echo "success!"; else echo "failed (that's fine)"; fi
+
+-test_build: $(PROGS)
+- @echo "[*] Testing the CC wrapper and instrumentation output..."
+- unset AFL_USE_ASAN AFL_USE_MSAN AFL_INST_RATIO; AFL_QUIET=1 AFL_PATH=. AFL_CC=$(CC) ../afl-clang-fast $(CFLAGS) ../test-instr.c -o test-instr $(LDFLAGS)
+-# Use /dev/null to avoid problems with optimization messing up expected
+-# branches. See https://github.com/google/AFL/issues/30.
+- ../afl-showmap -m none -q -o .test-instr0 ./test-instr < /dev/null
+- echo 1 | ../afl-showmap -m none -q -o .test-instr1 ./test-instr
+- @rm -f test-instr
+- @cmp -s .test-instr0 .test-instr1; DR="$$?"; rm -f .test-instr0 .test-instr1; if [ "$$DR" = "0" ]; then echo; echo "Oops, the instrumentation does not seem to be behaving correctly!"; echo; echo "Please ping <lcamtuf@google.com> to troubleshoot the issue."; echo; exit 1; fi
+- @echo "[+] All right, the instrumentation seems to be working!"
+-
+-all_done: test_build
++all_done:
+ @echo "[+] All done! You can now use '../afl-clang-fast' to compile programs."
+
+ .NOTPARALLEL: clean
+diff --git a/llvm_mode/afl-llvm-pass.so.cc b/llvm_mode/afl-llvm-pass.so.cc
+index 154a5db..0bfbfdf 100644
+--- a/llvm_mode/afl-llvm-pass.so.cc
++++ b/llvm_mode/afl-llvm-pass.so.cc
+@@ -105,7 +105,8 @@ bool AFLCoverage::runOnModule(Module &M) {
+
+ GlobalVariable *AFLMapPtr =
+ new GlobalVariable(M, PointerType::get(Int8Ty, 0), false,
+- GlobalValue::ExternalLinkage, 0, "__afl_area_ptr");
++ GlobalVariable::ExternalLinkage, 0, "__afl_area_ptr",
++ 0, GlobalVariable::GeneralDynamicTLSModel, 0, false);
+
+ GlobalVariable *AFLPrevLoc = new GlobalVariable(
+ M, Int32Ty, false, GlobalValue::ExternalLinkage, 0, "__afl_prev_loc",
+diff --git a/llvm_mode/afl-llvm-rt.o.c b/llvm_mode/afl-llvm-rt.o.c
+index 60475c9..536adb9 100644
+--- a/llvm_mode/afl-llvm-rt.o.c
++++ b/llvm_mode/afl-llvm-rt.o.c
+@@ -41,6 +41,10 @@
+ #include <sys/shm.h>
+ #include <sys/wait.h>
+ #include <sys/types.h>
++#include <syscall.h>
++
++#define gettid() ((pid_t)syscall(SYS_gettid))
++
+
+ /* This is a somewhat ugly hack for the experimental 'trace-pc-guard' mode.
+ Basically, we need to make sure that the forkserver is initialized after
+@@ -53,12 +57,23 @@
+ #endif /* ^USE_TRACE_PC */
+
+
++void enable_afl_tracing(void);
++void disable_afl_tracing(void);
++void init_afl_tracing(void);
++
++
+ /* Globals needed by the injected instrumentation. The __afl_area_initial region
+ is used for instrumentation output before __afl_map_shm() has a chance to run.
+ It will end up as .comm, so it shouldn't be too wasteful. */
+
++#define FIREFOX_CONTROL_AREA_ADDR 0x100000
++
++u8*** __firefox_afl_control_areas = NULL;
++
+ u8 __afl_area_initial[MAP_SIZE];
+-u8* __afl_area_ptr = __afl_area_initial;
++__thread u8* __afl_area_ptr = __afl_area_initial;
++
++u8* __afl_area_ptr_pre = __afl_area_initial;
+
+ __thread u32 __afl_prev_loc;
+
+@@ -82,17 +97,15 @@ static void __afl_map_shm(void) {
+
+ u32 shm_id = atoi(id_str);
+
+- __afl_area_ptr = shmat(shm_id, NULL, 0);
++ __afl_area_ptr_pre = shmat(shm_id, NULL, 0);
+
+ /* Whooooops. */
+
+- if (__afl_area_ptr == (void *)-1) _exit(1);
++ if (__afl_area_ptr_pre == (void *)-1) _exit(1);
+
+ /* Write something into the bitmap so that even with low AFL_INST_RATIO,
+ our parent doesn't give up on us. */
+
+- __afl_area_ptr[0] = 1;
+-
+ }
+
+ }
+@@ -256,6 +269,16 @@ void __afl_manual_init(void) {
+
+ __attribute__((constructor(CONST_PRIO))) void __afl_auto_init(void) {
+
++ __firefox_afl_control_areas = mmap((void*)FIREFOX_CONTROL_AREA_ADDR, 0x1000, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED , 0, 0);
++ if(__firefox_afl_control_areas == (void*)-1){
++ exit(1);
++ }
++
++ __firefox_afl_control_areas[0] = (u8**) enable_afl_tracing;
++ __firefox_afl_control_areas[1] = (u8**) disable_afl_tracing;
++ __firefox_afl_control_areas[2] = (u8**) init_afl_tracing;
++ __firefox_afl_control_areas[3] = (u8**) 1337;
++
+ is_persistent = !!getenv(PERSIST_ENV_VAR);
+
+ if (getenv(DEFER_ENV_VAR)) return;
+@@ -310,5 +333,55 @@ void __sanitizer_cov_trace_pc_guard_init(uint32_t* start, uint32_t* stop) {
+ start++;
+
+ }
++}
++
++void enable_afl_tracing(void){
++ if(__afl_area_ptr == __afl_area_initial && __afl_area_ptr_pre != __afl_area_initial){
++ __afl_area_ptr = __afl_area_ptr_pre;
++ }
++}
++
++void disable_afl_tracing(void){
++ if(__afl_area_ptr != __afl_area_initial){
++ __afl_area_ptr = __afl_area_initial;
++ }
++}
++
++void init_afl_tracing(){
++ __afl_area_ptr_pre[0] = 1;
++}
++
++void print_afl_bitmap(void){
++ if(__afl_area_ptr_pre == __afl_area_initial){
++ return;
++ }
++ void* data = __afl_area_ptr_pre;
++ int size = 2 << 15;
++ char ascii[17];
++ size_t i, j;
++ ascii[16] = '\0';
++ for (i = 0; i < size; ++i) {
++ printf("%02X ", ((unsigned char*)data)[i]);
++ if (((unsigned char*)data)[i] >= ' ' && ((unsigned char*)data)[i] <= '~') {
++ ascii[i % 16] = ((unsigned char*)data)[i];
++ } else {
++ ascii[i % 16] = '.';
++ }
++ if ((i+1) % 8 == 0 || i+1 == size) {
++ printf(" ");
++ if ((i+1) % 16 == 0) {
++ printf("| %s \n", ascii);
++ } else if (i+1 == size) {
++ ascii[(i+1) % 16] = '\0';
++ if ((i+1) % 16 <= 8) {
++ printf(" ");
++ }
++ for (j = (i+1) % 16; j < 16; ++j) {
++ printf(" ");
++ }
++ printf("| %s \n", ascii);
++ }
++ }
++ }
+
+ }
+--
+2.37.1
+
+From 003221dd9fec462177445040c7fa57c09397c684 Mon Sep 17 00:00:00 2001
+From: "Christian Holler (:decoder)" <choller@mozilla.com>
+Date: Fri, 15 Oct 2021 11:55:02 +0200
+Subject: [PATCH 02/10] [compiler] Add selective instrumentation through
+ AFL_INST_FILTER
+
+---
+ llvm_mode/afl-clang-fast.c | 57 +++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 56 insertions(+), 1 deletion(-)
+
+diff --git a/llvm_mode/afl-clang-fast.c b/llvm_mode/afl-clang-fast.c
+index c154e01..b5aa521 100644
+--- a/llvm_mode/afl-clang-fast.c
++++ b/llvm_mode/afl-clang-fast.c
+@@ -29,6 +29,9 @@
+ */
+
+ #define AFL_MAIN
++#ifndef _GNU_SOURCE
++#define _GNU_SOURCE
++#endif
+
+ #include "../config.h"
+ #include "../types.h"
+@@ -39,6 +42,7 @@
+ #include <unistd.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <linux/limits.h>
+
+ static u8* obj_path; /* Path to runtime libraries */
+ static u8** cc_params; /* Parameters passed to the real CC */
+@@ -119,13 +123,63 @@ static void edit_params(u32 argc, char** argv) {
+ cc_params[0] = alt_cc ? alt_cc : (u8*)"clang";
+ }
+
++#define CPP_SUFF ".cpp"
++#define CPP_SLEN (sizeof(CPP_SUFF)-1)
++#define C_SUFF ".c"
++#define C_SLEN (sizeof(C_SUFF)-1)
++ u8 should_instrument = 1;
++
++ u8* instfilter = getenv("AFL_INST_FILTER");
++
++ if (instfilter) {
++
++ should_instrument = 0;
++
++ char cwd [PATH_MAX];
++ getcwd(cwd, sizeof(cwd));
++
++ for (u32 argi = 0; argi < argc; ++argi) {
++ u8 is_source = 0;
++ u32 arglen = strlen(argv[argi]);
++ //SAYF("Checking: %s\n", argv[argi]);
++ if (arglen > CPP_SLEN) {
++ if (!memcmp(argv[argi] + arglen - CPP_SLEN, CPP_SUFF, CPP_SLEN)) {
++ is_source = 1;
++ }
++ }
++
++ if (!is_source && arglen > C_SLEN) {
++ if (!memcmp(argv[argi] + arglen - C_SLEN, C_SUFF, C_SLEN)) {
++ is_source = 1;
++ }
++ }
++
++ if (is_source) {
++ //SAYF("This is a source file: %s\n", argv[argi]);
++ char relpath [PATH_MAX];
++ strcat(relpath, cwd);
++ strcat(relpath, "/");
++ strcat(relpath, argv[argi]);
++ char abspath [PATH_MAX];
++ if (realpath(relpath, abspath)) {
++ if (strcasestr(abspath, instfilter)) {
++ should_instrument = 1;
++ SAYF("Instrumenting file %s\n", argv[argi]);
++ break;
++ }
++ }
++ }
++ }
++
++ }
++
+ /* There are two ways to compile afl-clang-fast. In the traditional mode, we
+ use afl-llvm-pass.so to inject instrumentation. In the experimental
+ 'trace-pc-guard' mode, we use native LLVM instrumentation callbacks
+ instead. The latter is a very recent addition - see:
+
+ http://clang.llvm.org/docs/SanitizerCoverage.html#tracing-pcs-with-guards */
+-
++if (should_instrument) {
+ #ifdef USE_TRACE_PC
+ cc_params[cc_par_cnt++] = "-fsanitize-coverage=trace-pc-guard";
+ cc_params[cc_par_cnt++] = "-mllvm";
+@@ -136,6 +190,7 @@ static void edit_params(u32 argc, char** argv) {
+ cc_params[cc_par_cnt++] = "-Xclang";
+ cc_params[cc_par_cnt++] = alloc_printf("%s/afl-llvm-pass.so", obj_path);
+ #endif /* ^USE_TRACE_PC */
++}
+
+ cc_params[cc_par_cnt++] = "-Qunused-arguments";
+
+--
+2.37.1
+
+From 3e126e0f9bf21c32cb650d49f5f088b213538854 Mon Sep 17 00:00:00 2001
+From: "Christian Holler (:decoder)" <choller@mozilla.com>
+Date: Tue, 22 Feb 2022 16:44:27 +0100
+Subject: [PATCH 03/10] Fix AFL compiler to ignore wasm-compiled code
+
+---
+ llvm_mode/afl-clang-fast.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/llvm_mode/afl-clang-fast.c b/llvm_mode/afl-clang-fast.c
+index 226ee36..6d4171c 100644
+--- a/llvm_mode/afl-clang-fast.c
++++ b/llvm_mode/afl-clang-fast.c
+@@ -213,6 +213,7 @@ if (should_instrument) {
+ if (strstr(cur, "FORTIFY_SOURCE")) fortify_set = 1;
+
+ if (!strcmp(cur, "-shared")) maybe_linking = 0;
++ if (!strcmp(cur, "--target=wasm32-wasi")) maybe_linking = 0;
+
+ if (!strcmp(cur, "-Wl,-z,defs") ||
+ !strcmp(cur, "-Wl,--no-undefined")) continue;
+--
+2.37.1
+
+From e2e269e9d00b47cc6a139045688f32b26d30fc85 Mon Sep 17 00:00:00 2001
+From: "Christian Holler (:decoder)" <choller@mozilla.com>
+Date: Thu, 9 Jun 2022 10:20:34 +0200
+Subject: [PATCH 04/10] Update IRBuilder calls to LLVM 14 API
+
+---
+ llvm_mode/afl-llvm-pass.so.cc | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/llvm_mode/afl-llvm-pass.so.cc b/llvm_mode/afl-llvm-pass.so.cc
+index 0bfbfdf..203cffa 100644
+--- a/llvm_mode/afl-llvm-pass.so.cc
++++ b/llvm_mode/afl-llvm-pass.so.cc
+@@ -38,12 +38,14 @@
+ #include <stdlib.h>
+ #include <unistd.h>
+
++#include "llvm/Pass.h"
+ #include "llvm/ADT/Statistic.h"
+ #include "llvm/IR/IRBuilder.h"
+ #include "llvm/IR/LegacyPassManager.h"
+ #include "llvm/IR/Module.h"
+ #include "llvm/Support/Debug.h"
+ #include "llvm/Transforms/IPO/PassManagerBuilder.h"
++#include "llvm/Passes/OptimizationLevel.h"
+
+ using namespace llvm;
+
+@@ -132,20 +134,20 @@ bool AFLCoverage::runOnModule(Module &M) {
+
+ /* Load prev_loc */
+
+- LoadInst *PrevLoc = IRB.CreateLoad(AFLPrevLoc);
++ LoadInst *PrevLoc = IRB.CreateLoad(IRB.getInt32Ty(), AFLPrevLoc);
+ PrevLoc->setMetadata(M.getMDKindID("nosanitize"), MDNode::get(C, None));
+ Value *PrevLocCasted = IRB.CreateZExt(PrevLoc, IRB.getInt32Ty());
+
+ /* Load SHM pointer */
+
+- LoadInst *MapPtr = IRB.CreateLoad(AFLMapPtr);
++ LoadInst *MapPtr = IRB.CreateLoad(PointerType::get(Int8Ty, 0), AFLMapPtr);
+ MapPtr->setMetadata(M.getMDKindID("nosanitize"), MDNode::get(C, None));
+ Value *MapPtrIdx =
+- IRB.CreateGEP(MapPtr, IRB.CreateXor(PrevLocCasted, CurLoc));
++ IRB.CreateGEP(Int8Ty, MapPtr, IRB.CreateXor(PrevLocCasted, CurLoc));
+
+ /* Update bitmap */
+
+- LoadInst *Counter = IRB.CreateLoad(MapPtrIdx);
++ LoadInst *Counter = IRB.CreateLoad(IRB.getInt8Ty(), MapPtrIdx);
+ Counter->setMetadata(M.getMDKindID("nosanitize"), MDNode::get(C, None));
+ Value *Incr = IRB.CreateAdd(Counter, ConstantInt::get(Int8Ty, 1));
+ IRB.CreateStore(Incr, MapPtrIdx)
+--
+2.37.1
+
+From be3f79c5b472e5a8a06266d7a74ebb162b3d8cba Mon Sep 17 00:00:00 2001
+From: "Christian Holler (:decoder)" <choller@mozilla.com>
+Date: Thu, 9 Jun 2022 11:37:44 +0200
+Subject: [PATCH 05/10] Switch AFLCoverage pass to new pass manager
+
+---
+ llvm_mode/afl-clang-fast.c | 7 ++---
+ llvm_mode/afl-llvm-pass.so.cc | 58 +++++++++++++++++------------------
+ 2 files changed, 31 insertions(+), 34 deletions(-)
+
+diff --git a/llvm_mode/afl-clang-fast.c b/llvm_mode/afl-clang-fast.c
+index 6d4171c..5e00286 100644
+--- a/llvm_mode/afl-clang-fast.c
++++ b/llvm_mode/afl-clang-fast.c
+@@ -178,14 +178,12 @@ static void edit_params(u32 argc, char** argv) {
+ http://clang.llvm.org/docs/SanitizerCoverage.html#tracing-pcs-with-guards */
+ if (should_instrument) {
+ #ifdef USE_TRACE_PC
++ #error "unsupported"
+ cc_params[cc_par_cnt++] = "-fsanitize-coverage=trace-pc-guard";
+ cc_params[cc_par_cnt++] = "-mllvm";
+ cc_params[cc_par_cnt++] = "-sanitizer-coverage-block-threshold=0";
+ #else
+- cc_params[cc_par_cnt++] = "-Xclang";
+- cc_params[cc_par_cnt++] = "-load";
+- cc_params[cc_par_cnt++] = "-Xclang";
+- cc_params[cc_par_cnt++] = alloc_printf("%s/afl-llvm-pass.so", obj_path);
++ cc_params[cc_par_cnt++] = alloc_printf("-fpass-plugin=%s/afl-llvm-pass.so", obj_path);
+ #endif /* ^USE_TRACE_PC */
+ }
+
+diff --git a/llvm_mode/afl-llvm-pass.so.cc b/llvm_mode/afl-llvm-pass.so.cc
+index 203cffa..1483943 100644
+--- a/llvm_mode/afl-llvm-pass.so.cc
++++ b/llvm_mode/afl-llvm-pass.so.cc
+@@ -41,44 +41,57 @@
+ #include "llvm/Pass.h"
+ #include "llvm/ADT/Statistic.h"
+ #include "llvm/IR/IRBuilder.h"
+-#include "llvm/IR/LegacyPassManager.h"
+ #include "llvm/IR/Module.h"
+-#include "llvm/Support/Debug.h"
+-#include "llvm/Transforms/IPO/PassManagerBuilder.h"
++#include "llvm/IR/PassManager.h"
+ #include "llvm/Passes/OptimizationLevel.h"
++#include "llvm/Passes/PassPlugin.h"
++#include "llvm/Passes/PassBuilder.h"
++#include "llvm/Support/Debug.h"
+
+ using namespace llvm;
+
+ namespace {
+
+- class AFLCoverage : public ModulePass {
++ class AFLCoverage : public PassInfoMixin<AFLCoverage> {
+
+ public:
+
+- static char ID;
+- AFLCoverage() : ModulePass(ID) { }
+-
+- bool runOnModule(Module &M) override;
+-
+- // StringRef getPassName() const override {
+- // return "American Fuzzy Lop Instrumentation";
+- // }
++ AFLCoverage() { }
+
++ PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM);
+ };
+
+ }
+
++extern "C" ::llvm::PassPluginLibraryInfo LLVM_ATTRIBUTE_WEAK
++llvmGetPassPluginInfo() {
++
++ return {LLVM_PLUGIN_API_VERSION, "AFLCoverage", "v0.1",
++ /* lambda to insert our pass into the pass pipeline. */
++ [](PassBuilder &PB) {
+
+-char AFLCoverage::ID = 0;
++ #if LLVM_VERSION_MAJOR <= 13
++ using OptimizationLevel = typename PassBuilder::OptimizationLevel;
++ #endif
++ PB.registerOptimizerLastEPCallback(
++ [](ModulePassManager &MPM, OptimizationLevel OL) {
+
++ MPM.addPass(AFLCoverage());
+
+-bool AFLCoverage::runOnModule(Module &M) {
++ });
++ }};
++
++}
++
++PreservedAnalyses AFLCoverage::run(Module &M, ModuleAnalysisManager &MAM) {
+
+ LLVMContext &C = M.getContext();
+
+ IntegerType *Int8Ty = IntegerType::getInt8Ty(C);
+ IntegerType *Int32Ty = IntegerType::getInt32Ty(C);
+
++ auto PA = PreservedAnalyses::all();
++
+ /* Show a banner */
+
+ char be_quiet = 0;
+@@ -175,21 +188,6 @@ bool AFLCoverage::runOnModule(Module &M) {
+
+ }
+
+- return true;
++ return PA;
+
+ }
+-
+-
+-static void registerAFLPass(const PassManagerBuilder &,
+- legacy::PassManagerBase &PM) {
+-
+- PM.add(new AFLCoverage());
+-
+-}
+-
+-
+-static RegisterStandardPasses RegisterAFLPass(
+- PassManagerBuilder::EP_ModuleOptimizerEarly, registerAFLPass);
+-
+-static RegisterStandardPasses RegisterAFLPass0(
+- PassManagerBuilder::EP_EnabledOnOptLevel0, registerAFLPass);
+--
+2.37.1
+
+From bd47b9066e616fdfdad1808ec0365992a4962ff2 Mon Sep 17 00:00:00 2001
+From: Jesse Schwartzentruber <truber@mozilla.com>
+Date: Tue, 9 Aug 2022 17:18:15 -0400
+Subject: [PATCH 06/10] Add install step for afl-clang-fast only
+
+---
+ llvm_mode/Makefile | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/llvm_mode/Makefile b/llvm_mode/Makefile
+index 823e959..b155eb5 100644
+--- a/llvm_mode/Makefile
++++ b/llvm_mode/Makefile
+@@ -103,3 +103,13 @@ all_done:
+ clean:
+ rm -f *.o *.so *~ a.out core core.[1-9][0-9]* test-instr .test-instr0 .test-instr1
+ rm -f $(PROGS) ../afl-clang-fast++
++
++install: all
++ mkdir -p -m 755 $${DESTDIR}$(BIN_PATH) $${DESTDIR}$(HELPER_PATH)
++ifndef AFL_TRACE_PC
++ if [ -f ../afl-clang-fast -a -f ../afl-llvm-pass.so -a -f ../afl-llvm-rt.o ]; then set -e; install -m 755 ../afl-clang-fast $${DESTDIR}$(BIN_PATH); ln -sf afl-clang-fast $${DESTDIR}$(BIN_PATH)/afl-clang-fast++; install -m 755 ../afl-llvm-pass.so ../afl-llvm-rt.o $${DESTDIR}$(HELPER_PATH); fi
++else
++ if [ -f ../afl-clang-fast -a -f ../afl-llvm-rt.o ]; then set -e; install -m 755 ../afl-clang-fast $${DESTDIR}$(BIN_PATH); ln -sf afl-clang-fast $${DESTDIR}$(BIN_PATH)/afl-clang-fast++; install -m 755 ../afl-llvm-rt.o $${DESTDIR}$(HELPER_PATH); fi
++endif
++ if [ -f ../afl-llvm-rt-32.o ]; then set -e; install -m 755 ../afl-llvm-rt-32.o $${DESTDIR}$(HELPER_PATH); fi
++ if [ -f ../afl-llvm-rt-64.o ]; then set -e; install -m 755 ../afl-llvm-rt-64.o $${DESTDIR}$(HELPER_PATH); fi
+--
+2.37.1
+
+From 11f8b04786239bc8daa2c7a207b5e19f5c19ec6e Mon Sep 17 00:00:00 2001
+From: Jesse Schwartzentruber <truber@mozilla.com>
+Date: Thu, 11 Aug 2022 11:39:37 -0400
+Subject: [PATCH 07/10] Reenable instrumentation tests
+
+---
+ config.h | 4 ++++
+ llvm_mode/Makefile | 15 +++++++++++++--
+ llvm_mode/afl-llvm-rt.o.c | 1 +
+ 3 files changed, 18 insertions(+), 2 deletions(-)
+
+diff --git a/config.h b/config.h
+index b21298d..c035af2 100644
+--- a/config.h
++++ b/config.h
+@@ -285,6 +285,10 @@
+ #define PERSIST_ENV_VAR "__AFL_PERSISTENT"
+ #define DEFER_ENV_VAR "__AFL_DEFER_FORKSRV"
+
++/* Enable tracing by default at startup */
++
++#define TRACE_ENV_VAR "__AFL_ENABLE_TRACE"
++
+ /* In-code signatures for deferred and persistent mode. */
+
+ #define PERSIST_SIG "##SIG_AFL_PERSISTENT##"
+diff --git a/llvm_mode/Makefile b/llvm_mode/Makefile
+index b155eb5..4f460ff 100644
+--- a/llvm_mode/Makefile
++++ b/llvm_mode/Makefile
+@@ -62,7 +62,7 @@ else
+ PROGS = ../afl-clang-fast ../afl-llvm-rt.o ../afl-llvm-rt-32.o ../afl-llvm-rt-64.o
+ endif
+
+-all: test_deps $(PROGS) all_done
++all: test_deps $(PROGS) test_build all_done
+
+ test_deps:
+ ifndef AFL_TRACE_PC
+@@ -95,7 +95,18 @@ endif
+ @printf "[*] Building 64-bit variant of the runtime (-m64)... "
+ @$(CC) $(CFLAGS) -m64 -fPIC -c $< -o $@ 2>/dev/null; if [ "$$?" = "0" ]; then echo "success!"; else echo "failed (that's fine)"; fi
+
+-all_done:
++test_build: $(PROGS)
++ @echo "[*] Testing the CC wrapper and instrumentation output..."
++ unset AFL_USE_ASAN AFL_USE_MSAN AFL_INST_RATIO; AFL_QUIET=1 AFL_PATH=. AFL_CC=$(CC) ../afl-clang-fast $(CFLAGS) ../test-instr.c -o test-instr $(LDFLAGS)
++# Use /dev/null to avoid problems with optimization messing up expected
++# branches. See https://github.com/google/AFL/issues/30.
++ __AFL_ENABLE_TRACE=1 ../afl-showmap -m none -q -o .test-instr0 ./test-instr < /dev/null
++ echo 1 | __AFL_ENABLE_TRACE=1 ../afl-showmap -m none -q -o .test-instr1 ./test-instr
++ @rm -f test-instr
++ @cmp -s .test-instr0 .test-instr1; DR="$$?"; rm -f .test-instr0 .test-instr1; if [ "$$DR" = "0" ]; then echo; echo "Oops, the instrumentation does not seem to be behaving correctly!"; echo; echo "Please ping <lcamtuf@google.com> to troubleshoot the issue."; echo; exit 1; fi
++ @echo "[+] All right, the instrumentation seems to be working!"
++
++all_done: test_build
+ @echo "[+] All done! You can now use '../afl-clang-fast' to compile programs."
+
+ .NOTPARALLEL: clean
+diff --git a/llvm_mode/afl-llvm-rt.o.c b/llvm_mode/afl-llvm-rt.o.c
+index 536adb9..c3b710f 100644
+--- a/llvm_mode/afl-llvm-rt.o.c
++++ b/llvm_mode/afl-llvm-rt.o.c
+@@ -285,6 +285,7 @@ __attribute__((constructor(CONST_PRIO))) void __afl_auto_init(void) {
+
+ __afl_manual_init();
+
++ if (getenv(TRACE_ENV_VAR)) enable_afl_tracing();
+ }
+
+
+--
+2.37.1
+
+From dd1050393281f2ea4c9b6521f5e48bec365b0a8a Mon Sep 17 00:00:00 2001
+From: Jesse Schwartzentruber <truber@mozilla.com>
+Date: Thu, 11 Aug 2022 13:17:34 -0400
+Subject: [PATCH 08/10] Add search in HELPER_PATH for libraries.
+
+---
+ llvm_mode/afl-clang-fast.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/llvm_mode/afl-clang-fast.c b/llvm_mode/afl-clang-fast.c
+index 5e00286..70b6af2 100644
+--- a/llvm_mode/afl-clang-fast.c
++++ b/llvm_mode/afl-clang-fast.c
+@@ -85,6 +85,16 @@ static void find_obj(u8* argv0) {
+ return;
+ }
+
++ ck_free(tmp);
++ tmp = alloc_printf("%s/../lib/afl/afl-llvm-rt.o", dir);
++
++ if (!access(tmp, R_OK)) {
++ ck_free(tmp);
++ obj_path = alloc_printf("%s/../lib/afl", dir);
++ ck_free(dir);
++ return;
++ }
++
+ ck_free(tmp);
+ ck_free(dir);
+
+--
+2.37.1
+
+From 9eb9eaf26d473bb8479df380f918a1bf83250029 Mon Sep 17 00:00:00 2001
+From: Jesse Schwartzentruber <truber@mozilla.com>
+Date: Thu, 11 Aug 2022 19:16:36 -0400
+Subject: [PATCH 09/10] Don't instrument at all for wasm
+
+---
+ llvm_mode/afl-clang-fast.c | 41 ++++++++++++++++++++------------------
+ 1 file changed, 22 insertions(+), 19 deletions(-)
+
+diff --git a/llvm_mode/afl-clang-fast.c b/llvm_mode/afl-clang-fast.c
+index 70b6af2..0d1e76b 100644
+--- a/llvm_mode/afl-clang-fast.c
++++ b/llvm_mode/afl-clang-fast.c
+@@ -180,23 +180,6 @@ static void edit_params(u32 argc, char** argv) {
+
+ }
+
+- /* There are two ways to compile afl-clang-fast. In the traditional mode, we
+- use afl-llvm-pass.so to inject instrumentation. In the experimental
+- 'trace-pc-guard' mode, we use native LLVM instrumentation callbacks
+- instead. The latter is a very recent addition - see:
+-
+- http://clang.llvm.org/docs/SanitizerCoverage.html#tracing-pcs-with-guards */
+-if (should_instrument) {
+-#ifdef USE_TRACE_PC
+- #error "unsupported"
+- cc_params[cc_par_cnt++] = "-fsanitize-coverage=trace-pc-guard";
+- cc_params[cc_par_cnt++] = "-mllvm";
+- cc_params[cc_par_cnt++] = "-sanitizer-coverage-block-threshold=0";
+-#else
+- cc_params[cc_par_cnt++] = alloc_printf("-fpass-plugin=%s/afl-llvm-pass.so", obj_path);
+-#endif /* ^USE_TRACE_PC */
+-}
+-
+ cc_params[cc_par_cnt++] = "-Qunused-arguments";
+
+ /* Detect stray -v calls from ./configure scripts. */
+@@ -222,7 +204,10 @@ if (should_instrument) {
+ if (strstr(cur, "FORTIFY_SOURCE")) fortify_set = 1;
+
+ if (!strcmp(cur, "-shared")) maybe_linking = 0;
+- if (!strcmp(cur, "--target=wasm32-wasi")) maybe_linking = 0;
++ if (!strcmp(cur, "--target=wasm32-wasi")) {
++ maybe_linking = 0;
++ should_instrument = 0;
++ }
+
+ if (!strcmp(cur, "-Wl,-z,defs") ||
+ !strcmp(cur, "-Wl,--no-undefined")) continue;
+@@ -231,6 +216,23 @@ if (should_instrument) {
+
+ }
+
++ /* There are two ways to compile afl-clang-fast. In the traditional mode, we
++ use afl-llvm-pass.so to inject instrumentation. In the experimental
++ 'trace-pc-guard' mode, we use native LLVM instrumentation callbacks
++ instead. The latter is a very recent addition - see:
++
++ http://clang.llvm.org/docs/SanitizerCoverage.html#tracing-pcs-with-guards */
++ if (should_instrument) {
++#ifdef USE_TRACE_PC
++ #error "unsupported"
++ cc_params[cc_par_cnt++] = "-fsanitize-coverage=trace-pc-guard";
++ cc_params[cc_par_cnt++] = "-mllvm";
++ cc_params[cc_par_cnt++] = "-sanitizer-coverage-block-threshold=0";
++#else
++ cc_params[cc_par_cnt++] = alloc_printf("-fpass-plugin=%s/afl-llvm-pass.so", obj_path);
++#endif /* ^USE_TRACE_PC */
++ }
++
+ if (getenv("AFL_HARDEN")) {
+
+ cc_params[cc_par_cnt++] = "-fstack-protector-all";
+--
+2.37.1
+
+From 6ea1771e95d6f4c19453047996b0fc4ffa3fdeda Mon Sep 17 00:00:00 2001
+From: Jesse Schwartzentruber <truber@mozilla.com>
+Date: Wed, 20 Apr 2022 15:39:28 -0400
+Subject: [PATCH 10/10] fix instrumentation for
+ -Werror,-Wunused-but-set-variable
+
+`used` is so it isn't optimized out. `unused` is to avoid the warning.
+---
+ llvm_mode/afl-clang-fast.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/llvm_mode/afl-clang-fast.c b/llvm_mode/afl-clang-fast.c
+index 0d1e76b..3bc0daa 100644
+--- a/llvm_mode/afl-clang-fast.c
++++ b/llvm_mode/afl-clang-fast.c
+@@ -321,7 +321,7 @@ static void edit_params(u32 argc, char** argv) {
+ */
+
+ cc_params[cc_par_cnt++] = "-D__AFL_LOOP(_A)="
+- "({ static volatile char *_B __attribute__((used)); "
++ "({ static volatile char *_B __attribute__((used,unused)); "
+ " _B = (char*)\"" PERSIST_SIG "\"; "
+ #ifdef __APPLE__
+ "__attribute__((visibility(\"default\"))) "
+@@ -333,7 +333,7 @@ static void edit_params(u32 argc, char** argv) {
+ "_L(_A); })";
+
+ cc_params[cc_par_cnt++] = "-D__AFL_INIT()="
+- "do { static volatile char *_A __attribute__((used)); "
++ "do { static volatile char *_A __attribute__((used,unused)); "
+ " _A = (char*)\"" DEFER_SIG "\"; "
+ #ifdef __APPLE__
+ "__attribute__((visibility(\"default\"))) "
+--
+2.37.1
+
+From 0884906de0cdd007b28b15aae35cee484d1bc31d Mon Sep 17 00:00:00 2001
+From: Mike Hommey <mh@glandium.org>
+Date: Tue, 6 Sep 2022 11:08:55 +0900
+Subject: [PATCH] Fix build failures with clang 15
+
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 5e800db..c875f2d 100644
+--- a/Makefile
++++ b/Makefile
+@@ -50,7 +50,7 @@ ifndef AFL_NO_X86
+
+ test_x86:
+ @echo "[*] Checking for the ability to compile x86 code..."
+- @echo 'main() { __asm__("xorb %al, %al"); }' | $(CC) -w -x c - -o .test || ( echo; echo "Oops, looks like your compiler can't generate x86 code."; echo; echo "Don't panic! You can use the LLVM or QEMU mode, but see docs/INSTALL first."; echo "(To ignore this error, set AFL_NO_X86=1 and try again.)"; echo; exit 1 )
++ @echo 'int main() { __asm__("xorb %al, %al"); }' | $(CC) -w -x c - -o .test || ( echo; echo "Oops, looks like your compiler can't generate x86 code."; echo; echo "Don't panic! You can use the LLVM or QEMU mode, but see docs/INSTALL first."; echo "(To ignore this error, set AFL_NO_X86=1 and try again.)"; echo; exit 1 )
+ @rm -f .test
+ @echo "[+] Everything seems to be working, ready to compile."
+
+--
+2.37.1.1.g659da70093
+
+From 0544d02715a26a032f109984d5f70360b80f3875 Mon Sep 17 00:00:00 2001
+From: Mike Hommey <mh@glandium.org>
+Date: Wed, 14 Dec 2022 16:25:53 +0900
+Subject: [PATCH] Add missing include
+
+---
+ llvm_mode/afl-llvm-pass.so.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/llvm_mode/afl-llvm-pass.so.cc b/llvm_mode/afl-llvm-pass.so.cc
+index 1483943..0a7c37a 100644
+--- a/llvm_mode/afl-llvm-pass.so.cc
++++ b/llvm_mode/afl-llvm-pass.so.cc
+@@ -39,6 +39,7 @@
+ #include <unistd.h>
+
+ #include "llvm/Pass.h"
++#include "llvm/ADT/None.h"
+ #include "llvm/ADT/Statistic.h"
+ #include "llvm/IR/IRBuilder.h"
+ #include "llvm/IR/Module.h"
+--
+2.38.1.1.g6d9df9d320
+
diff --git a/taskcluster/scripts/misc/android-gradle-dependencies-lite.sh b/taskcluster/scripts/misc/android-gradle-dependencies-lite.sh
new file mode 100755
index 0000000000..bf91d64709
--- /dev/null
+++ b/taskcluster/scripts/misc/android-gradle-dependencies-lite.sh
@@ -0,0 +1,21 @@
+#!/bin/bash -vex
+
+set -x -e
+
+echo "running as" $(id)
+
+set -v
+
+cd $GECKO_PATH
+
+# Needed for Nexus
+export PATH=$MOZ_FETCHES_DIR/jdk-8/bin:$PATH
+
+. taskcluster/scripts/misc/android-gradle-dependencies/before.sh
+
+export MOZCONFIG=mobile/android/config/mozconfigs/android-arm-gradle-dependencies/nightly-lite
+./mach build
+./mach gradle downloadDependencies
+./mach android gradle-dependencies
+
+. taskcluster/scripts/misc/android-gradle-dependencies/after.sh
diff --git a/taskcluster/scripts/misc/android-gradle-dependencies.sh b/taskcluster/scripts/misc/android-gradle-dependencies.sh
new file mode 100755
index 0000000000..2624dc961a
--- /dev/null
+++ b/taskcluster/scripts/misc/android-gradle-dependencies.sh
@@ -0,0 +1,21 @@
+#!/bin/bash -vex
+
+set -x -e
+
+echo "running as" $(id)
+
+set -v
+
+cd $GECKO_PATH
+
+# Nexus needs Java 8
+export PATH=$MOZ_FETCHES_DIR/jdk-8/bin:$PATH
+
+. taskcluster/scripts/misc/android-gradle-dependencies/before.sh
+
+export MOZCONFIG=mobile/android/config/mozconfigs/android-arm-gradle-dependencies/nightly
+./mach build
+./mach gradle downloadDependencies
+./mach android gradle-dependencies
+
+. taskcluster/scripts/misc/android-gradle-dependencies/after.sh
diff --git a/taskcluster/scripts/misc/android-gradle-dependencies/after.sh b/taskcluster/scripts/misc/android-gradle-dependencies/after.sh
new file mode 100755
index 0000000000..446f40db12
--- /dev/null
+++ b/taskcluster/scripts/misc/android-gradle-dependencies/after.sh
@@ -0,0 +1,32 @@
+#!/bin/bash -vex
+
+set -x -e
+
+echo "running as" $(id)
+
+: WORKSPACE ${WORKSPACE:=/builds/worker/workspace}
+
+set -v
+
+# Package everything up.
+pushd $WORKSPACE
+mkdir -p android-gradle-dependencies /builds/worker/artifacts
+
+# NEXUS_WORK is exported by `before.sh`.
+cp -R ${NEXUS_WORK}/storage/mozilla android-gradle-dependencies
+cp -R ${NEXUS_WORK}/storage/central android-gradle-dependencies
+cp -R ${NEXUS_WORK}/storage/google android-gradle-dependencies
+cp -R ${NEXUS_WORK}/storage/gradle-plugins android-gradle-dependencies
+
+# The Gradle wrapper will have downloaded and verified the hash of exactly one
+# Gradle distribution. It will be located in $GRADLE_USER_HOME, like
+# ~/.gradle/wrapper/dists/gradle-2.7-all/$PROJECT_HASH/gradle-2.7-all.zip. We
+# want to remove the version from the internal directory for use via tooltool in
+# a mozconfig.
+cp ${GRADLE_USER_HOME}/wrapper/dists/gradle-*-*/*/gradle-*-*.zip gradle.zip
+unzip -q gradle.zip
+mv gradle-* android-gradle-dependencies/gradle-dist
+
+tar cavf /builds/worker/artifacts/android-gradle-dependencies.tar.zst android-gradle-dependencies
+
+popd
diff --git a/taskcluster/scripts/misc/android-gradle-dependencies/before.sh b/taskcluster/scripts/misc/android-gradle-dependencies/before.sh
new file mode 100755
index 0000000000..7150731d73
--- /dev/null
+++ b/taskcluster/scripts/misc/android-gradle-dependencies/before.sh
@@ -0,0 +1,30 @@
+#!/bin/bash -vex
+
+set -x -e
+
+echo "running as" $(id)
+
+: WORKSPACE ${WORKSPACE:=/builds/worker/workspace}
+
+set -v
+
+# Export NEXUS_WORK so that `after.sh` can use it.
+export NEXUS_WORK=/builds/worker/workspace/sonatype-nexus-work
+mkdir -p ${NEXUS_WORK}/conf
+cp /builds/worker/workspace/build/src/taskcluster/scripts/misc/android-gradle-dependencies/nexus.xml ${NEXUS_WORK}/conf/nexus.xml
+
+RUN_AS_USER=worker $MOZ_FETCHES_DIR/sonatype-nexus/bin/nexus restart
+
+# Wait "a while" for Nexus to actually start. Don't fail if this fails.
+wget --quiet --retry-connrefused --waitretry=2 --tries=100 \
+ http://localhost:8081/nexus/service/local/status || true
+rm -rf status
+
+# It's helpful when debugging to see the "latest state".
+curl http://localhost:8081/nexus/service/local/status || true
+
+# Verify Nexus has actually started. Fail if this fails.
+curl --fail --silent --location http://localhost:8081/nexus/service/local/status | grep '<state>STARTED</state>'
+
+# It's helpful when debugging to see the repository configurations.
+curl http://localhost:8081/nexus/service/local/repositories || true
diff --git a/taskcluster/scripts/misc/android-gradle-dependencies/nexus.xml b/taskcluster/scripts/misc/android-gradle-dependencies/nexus.xml
new file mode 100644
index 0000000000..e3e37373d8
--- /dev/null
+++ b/taskcluster/scripts/misc/android-gradle-dependencies/nexus.xml
@@ -0,0 +1,413 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<nexusConfiguration>
+ <version>2.8.0</version>
+ <nexusVersion>2.12.0-01</nexusVersion>
+ <globalConnectionSettings>
+ <connectionTimeout>20000</connectionTimeout>
+ <retrievalRetryCount>3</retrievalRetryCount>
+ <queryString></queryString>
+ </globalConnectionSettings>
+ <restApi>
+ <uiTimeout>60000</uiTimeout>
+ </restApi>
+ <httpProxy>
+ <enabled>true</enabled>
+ <port>8082</port>
+ <proxyPolicy>strict</proxyPolicy>
+ </httpProxy>
+ <routing>
+ <resolveLinks>true</resolveLinks>
+ </routing>
+ <repositories>
+ <repository>
+ <id>mozilla</id>
+ <name>Mozilla Maven</name>
+ <providerRole>org.sonatype.nexus.proxy.repository.Repository</providerRole>
+ <providerHint>maven2</providerHint>
+ <localStatus>IN_SERVICE</localStatus>
+ <notFoundCacheActive>true</notFoundCacheActive>
+ <notFoundCacheTTL>1440</notFoundCacheTTL>
+ <userManaged>true</userManaged>
+ <exposed>true</exposed>
+ <browseable>true</browseable>
+ <writePolicy>READ_ONLY</writePolicy>
+ <indexable>true</indexable>
+ <searchable>true</searchable>
+ <localStorage>
+ <provider>file</provider>
+ </localStorage>
+ <remoteStorage>
+ <url>https://maven.mozilla.org/maven2/</url>
+ </remoteStorage>
+ <externalConfiguration>
+ <repositoryPolicy>RELEASE</repositoryPolicy>
+ <checksumPolicy>STRICT</checksumPolicy>
+ <fileTypeValidation>true</fileTypeValidation>
+ <downloadRemoteIndex>false</downloadRemoteIndex>
+ <artifactMaxAge>-1</artifactMaxAge>
+ <metadataMaxAge>1440</metadataMaxAge>
+ <itemMaxAge>1440</itemMaxAge>
+ <autoBlockActive>true</autoBlockActive>
+ </externalConfiguration>
+ </repository>
+ <repository>
+ <id>gradle-plugins</id>
+ <name>Gradle Plugins</name>
+ <providerRole>org.sonatype.nexus.proxy.repository.Repository</providerRole>
+ <providerHint>maven2</providerHint>
+ <localStatus>IN_SERVICE</localStatus>
+ <notFoundCacheActive>true</notFoundCacheActive>
+ <notFoundCacheTTL>1440</notFoundCacheTTL>
+ <userManaged>true</userManaged>
+ <exposed>true</exposed>
+ <browseable>true</browseable>
+ <writePolicy>READ_ONLY</writePolicy>
+ <indexable>true</indexable>
+ <searchable>true</searchable>
+ <localStorage>
+ <provider>file</provider>
+ </localStorage>
+ <remoteStorage>
+ <url>https://plugins.gradle.org/m2/</url>
+ </remoteStorage>
+ <externalConfiguration>
+ <repositoryPolicy>RELEASE</repositoryPolicy>
+ <checksumPolicy>STRICT</checksumPolicy>
+ <fileTypeValidation>true</fileTypeValidation>
+ <downloadRemoteIndex>false</downloadRemoteIndex>
+ <artifactMaxAge>-1</artifactMaxAge>
+ <metadataMaxAge>1440</metadataMaxAge>
+ <itemMaxAge>1440</itemMaxAge>
+ <autoBlockActive>true</autoBlockActive>
+ </externalConfiguration>
+ </repository>
+ <repository>
+ <id>google</id>
+ <name>google</name>
+ <providerRole>org.sonatype.nexus.proxy.repository.Repository</providerRole>
+ <providerHint>maven2</providerHint>
+ <localStatus>IN_SERVICE</localStatus>
+ <notFoundCacheActive>true</notFoundCacheActive>
+ <notFoundCacheTTL>1440</notFoundCacheTTL>
+ <userManaged>true</userManaged>
+ <exposed>true</exposed>
+ <browseable>true</browseable>
+ <writePolicy>READ_ONLY</writePolicy>
+ <indexable>true</indexable>
+ <searchable>true</searchable>
+ <localStorage>
+ <provider>file</provider>
+ </localStorage>
+ <remoteStorage>
+ <url>https://maven.google.com/</url>
+ </remoteStorage>
+ <externalConfiguration>
+ <repositoryPolicy>RELEASE</repositoryPolicy>
+ <!-- Google doesn't publish checksums. Why, Google, why? -->
+ <checksumPolicy>STRICT_IF_EXISTS</checksumPolicy>
+ <fileTypeValidation>true</fileTypeValidation>
+ <downloadRemoteIndex>false</downloadRemoteIndex>
+ <artifactMaxAge>-1</artifactMaxAge>
+ <metadataMaxAge>1440</metadataMaxAge>
+ <itemMaxAge>1440</itemMaxAge>
+ <autoBlockActive>true</autoBlockActive>
+ </externalConfiguration>
+ </repository>
+ <repository>
+ <id>central</id>
+ <name>Central</name>
+ <providerRole>org.sonatype.nexus.proxy.repository.Repository</providerRole>
+ <providerHint>maven2</providerHint>
+ <localStatus>IN_SERVICE</localStatus>
+ <notFoundCacheActive>true</notFoundCacheActive>
+ <notFoundCacheTTL>1440</notFoundCacheTTL>
+ <userManaged>true</userManaged>
+ <exposed>true</exposed>
+ <browseable>true</browseable>
+ <writePolicy>READ_ONLY</writePolicy>
+ <indexable>true</indexable>
+ <searchable>true</searchable>
+ <localStorage>
+ <provider>file</provider>
+ </localStorage>
+ <remoteStorage>
+ <url>https://repo1.maven.org/maven2/</url>
+ </remoteStorage>
+ <externalConfiguration>
+ <proxyMode>ALLOW</proxyMode>
+ <artifactMaxAge>-1</artifactMaxAge>
+ <itemMaxAge>1440</itemMaxAge>
+ <cleanseRepositoryMetadata>false</cleanseRepositoryMetadata>
+ <downloadRemoteIndex>false</downloadRemoteIndex>
+ <checksumPolicy>WARN</checksumPolicy>
+ <repositoryPolicy>RELEASE</repositoryPolicy>
+ </externalConfiguration>
+ </repository>
+ <repository>
+ <id>apache-snapshots</id>
+ <name>Apache Snapshots</name>
+ <providerRole>org.sonatype.nexus.proxy.repository.Repository</providerRole>
+ <providerHint>maven2</providerHint>
+ <localStatus>IN_SERVICE</localStatus>
+ <notFoundCacheActive>true</notFoundCacheActive>
+ <notFoundCacheTTL>1440</notFoundCacheTTL>
+ <userManaged>true</userManaged>
+ <exposed>true</exposed>
+ <browseable>true</browseable>
+ <writePolicy>READ_ONLY</writePolicy>
+ <indexable>true</indexable>
+ <searchable>true</searchable>
+ <localStorage>
+ <provider>file</provider>
+ </localStorage>
+ <remoteStorage>
+ <url>https://repository.apache.org/snapshots/</url>
+ </remoteStorage>
+ <externalConfiguration>
+ <proxyMode>ALLOW</proxyMode>
+ <artifactMaxAge>1440</artifactMaxAge>
+ <itemMaxAge>1440</itemMaxAge>
+ <cleanseRepositoryMetadata>false</cleanseRepositoryMetadata>
+ <downloadRemoteIndex>false</downloadRemoteIndex>
+ <checksumPolicy>WARN</checksumPolicy>
+ <repositoryPolicy>SNAPSHOT</repositoryPolicy>
+ </externalConfiguration>
+ </repository>
+ <repository>
+ <id>releases</id>
+ <name>Releases</name>
+ <providerRole>org.sonatype.nexus.proxy.repository.Repository</providerRole>
+ <providerHint>maven2</providerHint>
+ <localStatus>IN_SERVICE</localStatus>
+ <notFoundCacheTTL>1440</notFoundCacheTTL>
+ <userManaged>true</userManaged>
+ <exposed>true</exposed>
+ <browseable>true</browseable>
+ <writePolicy>ALLOW_WRITE_ONCE</writePolicy>
+ <indexable>true</indexable>
+ <searchable>true</searchable>
+ <localStorage>
+ <provider>file</provider>
+ </localStorage>
+ <externalConfiguration>
+ <proxyMode>ALLOW</proxyMode>
+ <artifactMaxAge>-1</artifactMaxAge>
+ <itemMaxAge>1440</itemMaxAge>
+ <cleanseRepositoryMetadata>false</cleanseRepositoryMetadata>
+ <downloadRemoteIndex>false</downloadRemoteIndex>
+ <checksumPolicy>WARN</checksumPolicy>
+ <repositoryPolicy>RELEASE</repositoryPolicy>
+ </externalConfiguration>
+ </repository>
+ <repository>
+ <id>snapshots</id>
+ <name>Snapshots</name>
+ <providerRole>org.sonatype.nexus.proxy.repository.Repository</providerRole>
+ <providerHint>maven2</providerHint>
+ <localStatus>IN_SERVICE</localStatus>
+ <notFoundCacheTTL>1440</notFoundCacheTTL>
+ <userManaged>true</userManaged>
+ <exposed>true</exposed>
+ <browseable>true</browseable>
+ <writePolicy>ALLOW_WRITE</writePolicy>
+ <indexable>true</indexable>
+ <searchable>true</searchable>
+ <localStorage>
+ <provider>file</provider>
+ </localStorage>
+ <externalConfiguration>
+ <proxyMode>ALLOW</proxyMode>
+ <artifactMaxAge>1440</artifactMaxAge>
+ <itemMaxAge>1440</itemMaxAge>
+ <cleanseRepositoryMetadata>false</cleanseRepositoryMetadata>
+ <downloadRemoteIndex>false</downloadRemoteIndex>
+ <checksumPolicy>WARN</checksumPolicy>
+ <repositoryPolicy>SNAPSHOT</repositoryPolicy>
+ </externalConfiguration>
+ </repository>
+ <repository>
+ <id>thirdparty</id>
+ <name>3rd party</name>
+ <providerRole>org.sonatype.nexus.proxy.repository.Repository</providerRole>
+ <providerHint>maven2</providerHint>
+ <localStatus>IN_SERVICE</localStatus>
+ <notFoundCacheTTL>1440</notFoundCacheTTL>
+ <userManaged>true</userManaged>
+ <exposed>true</exposed>
+ <browseable>true</browseable>
+ <writePolicy>ALLOW_WRITE_ONCE</writePolicy>
+ <indexable>true</indexable>
+ <searchable>true</searchable>
+ <localStorage>
+ <provider>file</provider>
+ </localStorage>
+ <externalConfiguration>
+ <proxyMode>ALLOW</proxyMode>
+ <artifactMaxAge>-1</artifactMaxAge>
+ <itemMaxAge>1440</itemMaxAge>
+ <cleanseRepositoryMetadata>false</cleanseRepositoryMetadata>
+ <downloadRemoteIndex>false</downloadRemoteIndex>
+ <checksumPolicy>WARN</checksumPolicy>
+ <repositoryPolicy>RELEASE</repositoryPolicy>
+ </externalConfiguration>
+ </repository>
+ <repository>
+ <id>central-m1</id>
+ <name>Central M1 shadow</name>
+ <providerRole>org.sonatype.nexus.proxy.repository.ShadowRepository</providerRole>
+ <providerHint>m2-m1-shadow</providerHint>
+ <localStatus>IN_SERVICE</localStatus>
+ <notFoundCacheTTL>15</notFoundCacheTTL>
+ <userManaged>true</userManaged>
+ <exposed>true</exposed>
+ <browseable>true</browseable>
+ <writePolicy>READ_ONLY</writePolicy>
+ <localStorage>
+ <provider>file</provider>
+ </localStorage>
+ <externalConfiguration>
+ <masterRepositoryId>central</masterRepositoryId>
+ <syncAtStartup>false</syncAtStartup>
+ </externalConfiguration>
+ </repository>
+ <repository>
+ <id>public</id>
+ <name>Public Repositories</name>
+ <providerRole>org.sonatype.nexus.proxy.repository.GroupRepository</providerRole>
+ <providerHint>maven2</providerHint>
+ <localStatus>IN_SERVICE</localStatus>
+ <notFoundCacheTTL>15</notFoundCacheTTL>
+ <userManaged>true</userManaged>
+ <exposed>true</exposed>
+ <browseable>true</browseable>
+ <writePolicy>READ_ONLY</writePolicy>
+ <indexable>true</indexable>
+ <localStorage>
+ <provider>file</provider>
+ </localStorage>
+ <externalConfiguration>
+ <mergeMetadata>true</mergeMetadata>
+ <memberRepositories>
+ <memberRepository>releases</memberRepository>
+ <memberRepository>snapshots</memberRepository>
+ <memberRepository>thirdparty</memberRepository>
+ <memberRepository>central</memberRepository>
+ </memberRepositories>
+ </externalConfiguration>
+ </repository>
+ </repositories>
+ <repositoryGrouping>
+ <pathMappings>
+ <pathMapping>
+ <id>inhouse-stuff</id>
+ <groupId>*</groupId>
+ <routeType>inclusive</routeType>
+ <routePatterns>
+ <routePattern>^/(com|org)/somecompany/.*</routePattern>
+ </routePatterns>
+ <repositories>
+ <repository>snapshots</repository>
+ <repository>releases</repository>
+ </repositories>
+ </pathMapping>
+ <pathMapping>
+ <id>apache-stuff</id>
+ <groupId>*</groupId>
+ <routeType>exclusive</routeType>
+ <routePatterns>
+ <routePattern>^/org/some-oss/.*</routePattern>
+ </routePatterns>
+ <repositories>
+ <repository>releases</repository>
+ <repository>snapshots</repository>
+ </repositories>
+ </pathMapping>
+ </pathMappings>
+ </repositoryGrouping>
+ <repositoryTargets>
+ <repositoryTarget>
+ <id>1</id>
+ <name>All (Maven2)</name>
+ <contentClass>maven2</contentClass>
+ <patterns>
+ <pattern>.*</pattern>
+ </patterns>
+ </repositoryTarget>
+ <repositoryTarget>
+ <id>2</id>
+ <name>All (Maven1)</name>
+ <contentClass>maven1</contentClass>
+ <patterns>
+ <pattern>.*</pattern>
+ </patterns>
+ </repositoryTarget>
+ <repositoryTarget>
+ <id>3</id>
+ <name>All but sources (Maven2)</name>
+ <contentClass>maven2</contentClass>
+ <patterns>
+ <pattern>(?!.*-sources.*).*</pattern>
+ </patterns>
+ </repositoryTarget>
+ <repositoryTarget>
+ <id>4</id>
+ <name>All Metadata (Maven2)</name>
+ <contentClass>maven2</contentClass>
+ <patterns>
+ <pattern>.*maven-metadata\.xml.*</pattern>
+ </patterns>
+ </repositoryTarget>
+ <repositoryTarget>
+ <id>any</id>
+ <name>All (Any Repository)</name>
+ <contentClass>any</contentClass>
+ <patterns>
+ <pattern>.*</pattern>
+ </patterns>
+ </repositoryTarget>
+ <repositoryTarget>
+ <id>site</id>
+ <name>All (site)</name>
+ <contentClass>site</contentClass>
+ <patterns>
+ <pattern>.*</pattern>
+ </patterns>
+ </repositoryTarget>
+ <repositoryTarget>
+ <id>npm</id>
+ <name>All (npm)</name>
+ <contentClass>npm</contentClass>
+ <patterns>
+ <pattern>.*</pattern>
+ </patterns>
+ </repositoryTarget>
+ <repositoryTarget>
+ <id>nuget</id>
+ <name>All (nuget)</name>
+ <contentClass>nuget</contentClass>
+ <patterns>
+ <pattern>.*</pattern>
+ </patterns>
+ </repositoryTarget>
+ <repositoryTarget>
+ <id>rubygems</id>
+ <name>All (rubygems)</name>
+ <contentClass>rubygems</contentClass>
+ <patterns>
+ <pattern>.*</pattern>
+ </patterns>
+ </repositoryTarget>
+ </repositoryTargets>
+ <smtpConfiguration>
+ <hostname>smtp-host</hostname>
+ <port>25</port>
+ <username>smtp-username</username>
+ <password>{jyU2gDFaNz8HQ4ybBAIdtJ6KL+YB08GXQs7vLPnia3o=}</password>
+ <systemEmailAddress>system@nexus.org</systemEmailAddress>
+ </smtpConfiguration>
+ <notification />
+</nexusConfiguration>
diff --git a/taskcluster/scripts/misc/are-we-esmified-yet.py b/taskcluster/scripts/misc/are-we-esmified-yet.py
new file mode 100644
index 0000000000..c16658baee
--- /dev/null
+++ b/taskcluster/scripts/misc/are-we-esmified-yet.py
@@ -0,0 +1,193 @@
+#!/usr/bin/env python3
+
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import json
+import pathlib
+import re
+import subprocess
+import sys
+
+TBPL_FAILURE = 2
+
+excluded_files = [
+ # Testcase for loader.
+ "js/xpconnect/tests/chrome/file_expandosharing.jsm",
+ "js/xpconnect/tests/unit/environment_script.js",
+ "js/xpconnect/tests/unit/bogus_element_type.jsm",
+ "js/xpconnect/tests/unit/bogus_exports_type.jsm",
+ "js/xpconnect/tests/unit/envChain.jsm",
+ "js/xpconnect/tests/unit/envChain_subscript.jsm",
+ "js/xpconnect/tests/unit/environment_checkscript.jsm",
+ "js/xpconnect/tests/unit/environment_loadscript.jsm",
+ "js/xpconnect/tests/unit/import_stack.jsm",
+ "js/xpconnect/tests/unit/importer.jsm",
+ "js/xpconnect/tests/unit/jsm_loaded-1.jsm",
+ "js/xpconnect/tests/unit/jsm_loaded-2.jsm",
+ "js/xpconnect/tests/unit/jsm_loaded-3.jsm",
+ "js/xpconnect/tests/unit/not-esmified-not-exported.jsm",
+ "js/xpconnect/tests/unit/recursive_importA.jsm",
+ "js/xpconnect/tests/unit/recursive_importB.jsm",
+ "js/xpconnect/tests/unit/ReturnCodeChild.jsm",
+ "js/xpconnect/tests/unit/syntax_error.jsm",
+ "js/xpconnect/tests/unit/TestBlob.jsm",
+ "js/xpconnect/tests/unit/TestFile.jsm",
+ "js/xpconnect/tests/unit/uninitialized_lexical.jsm",
+ "dom/url/tests/file_url.jsm",
+ "dom/url/tests/file_worker_url.jsm",
+ "dom/url/tests/test_bug883784.jsm",
+ "dom/workers/test/WorkerTest.jsm",
+ "dom/encoding/test/file_stringencoding.jsm",
+ "remote/shared/messagehandler/test/browser/resources/modules/root/invalid.jsm",
+ "toolkit/actors/TestProcessActorChild.jsm",
+ "toolkit/actors/TestProcessActorParent.jsm",
+ "toolkit/actors/TestWindowChild.jsm",
+ "toolkit/actors/TestWindowParent.jsm",
+ # Testcase for build system.
+ "python/mozbuild/mozbuild/test/backend/data/build/bar.jsm",
+ "python/mozbuild/mozbuild/test/backend/data/build/baz.jsm",
+ "python/mozbuild/mozbuild/test/backend/data/build/foo.jsm",
+ "python/mozbuild/mozbuild/test/backend/data/build/qux.jsm",
+ # Testcase for test harness.
+ "testing/mochitest/tests/Harness_sanity/ImportTesting.jsm",
+ # EXPORTED_SYMBOLS inside testcase.
+ "tools/lint/eslint/eslint-plugin-mozilla/tests/mark-exported-symbols-as-used.js",
+]
+
+if pathlib.Path(".hg").exists():
+ mode = "hg"
+elif pathlib.Path(".git").exists():
+ mode = "git"
+else:
+ print(
+ "Error: This script needs to be run inside mozilla-central checkout "
+ "of either mercurial or git.",
+ file=sys.stderr,
+ )
+ sys.exit(TBPL_FAILURE)
+
+
+def new_files_struct():
+ return {
+ "jsm": [],
+ "esm": [],
+ "subdir": {},
+ }
+
+
+def put_file(files, kind, path):
+ """Put a path into files tree structure."""
+
+ if str(path) in excluded_files:
+ return
+
+ name = path.name
+
+ current_files = files
+ for part in path.parent.parts:
+ if part not in current_files["subdir"]:
+ current_files["subdir"][part] = new_files_struct()
+ current_files = current_files["subdir"][part]
+
+ current_files[kind].append(name)
+
+
+def run(cmd):
+ """Run command and return output as lines, excluding empty line."""
+ lines = subprocess.run(cmd, stdout=subprocess.PIPE).stdout.decode()
+ return filter(lambda x: x != "", lines.split("\n"))
+
+
+def collect_jsm(files):
+ """Collect JSM files."""
+ kind = "jsm"
+
+ # jsm files
+ if mode == "hg":
+ cmd = ["hg", "files", "set:glob:**/*.jsm"]
+ else:
+ cmd = ["git", "ls-files", "*.jsm"]
+ for line in run(cmd):
+ put_file(files, kind, pathlib.Path(line))
+
+ # js files with EXPORTED_SYMBOLS
+ if mode == "hg":
+ cmd = ["hg", "files", "set:grep('EXPORTED_SYMBOLS = \[') and glob:**/*.js"]
+ for line in run(cmd):
+ put_file(files, kind, pathlib.Path(line))
+ else:
+ handled = {}
+ cmd = ["git", "grep", "EXPORTED_SYMBOLS = \[", "*.js"]
+ for line in run(cmd):
+ m = re.search("^([^:]+):", line)
+ if not m:
+ continue
+ path = m.group(1)
+ if path in handled:
+ continue
+ handled[path] = True
+ put_file(files, kind, pathlib.Path(path))
+
+
+def collect_esm(files):
+ """Collect system ESM files."""
+ kind = "esm"
+
+ # sys.mjs files
+ if mode == "hg":
+ cmd = ["hg", "files", "set:glob:**/*.sys.mjs"]
+ else:
+ cmd = ["git", "ls-files", "*.sys.mjs"]
+ for line in run(cmd):
+ put_file(files, kind, pathlib.Path(line))
+
+
+def to_stat(files):
+ """Convert files tree into status tree."""
+ jsm = len(files["jsm"])
+ esm = len(files["esm"])
+ subdir = {}
+
+ for key, sub_files in files["subdir"].items():
+ sub_stat = to_stat(sub_files)
+
+ subdir[key] = sub_stat
+ jsm += sub_stat["jsm"]
+ esm += sub_stat["esm"]
+
+ stat = {
+ "jsm": jsm,
+ "esm": esm,
+ }
+ if len(subdir):
+ stat["subdir"] = subdir
+
+ return stat
+
+
+if mode == "hg":
+ cmd = ["hg", "parent", "--template", "{node}"]
+ commit_hash = list(run(cmd))[0]
+
+ cmd = ["hg", "parent", "--template", "{date|shortdate}"]
+ date = list(run(cmd))[0]
+else:
+ cmd = ["git", "log", "-1", "--pretty=%H"]
+ git_hash = list(run(cmd))[0]
+ cmd = ["git", "cinnabar", "git2hg", git_hash]
+ commit_hash = list(run(cmd))[0]
+
+ cmd = ["git", "log", "-1", "--pretty=%cs"]
+ date = list(run(cmd))[0]
+
+files = new_files_struct()
+collect_jsm(files)
+collect_esm(files)
+
+stat = to_stat(files)
+stat["hash"] = commit_hash
+stat["date"] = date
+
+print(json.dumps(stat, indent=2))
diff --git a/taskcluster/scripts/misc/browsertime.sh b/taskcluster/scripts/misc/browsertime.sh
new file mode 100755
index 0000000000..27ef83c095
--- /dev/null
+++ b/taskcluster/scripts/misc/browsertime.sh
@@ -0,0 +1,19 @@
+#!/bin/bash -vex
+
+set -x -e
+
+echo "running as" $(id)
+
+set -v
+
+cd $GECKO_PATH
+
+export PATH=$PATH:$MOZ_FETCHES_DIR/node/bin
+
+./mach browsertime --setup
+
+# We have tools/browsertime/{package.json,node_modules,...} and want
+# browsertime/{package.json,node_modules}.
+mkdir -p /builds/worker/artifacts
+cd tools
+tar caf /builds/worker/artifacts/browsertime.tar.zst browsertime
diff --git a/taskcluster/scripts/misc/build-afl.sh b/taskcluster/scripts/misc/build-afl.sh
new file mode 100755
index 0000000000..371000aa2a
--- /dev/null
+++ b/taskcluster/scripts/misc/build-afl.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+set -e -x
+
+artifact=$(basename "$TOOLCHAIN_ARTIFACT")
+dir="${artifact%.tar.*}"
+scripts="$(realpath "${0%/*}")"
+
+cd "$MOZ_FETCHES_DIR/AFL"
+patch -p1 -i "$scripts/afl-nyx.patch"
+make afl-showmap \
+ CC="$MOZ_FETCHES_DIR/clang/bin/clang"
+# -O3 -funroll-loops as per llvm_mode/Makefile
+CFLAGS="-O3 -funroll-loops --sysroot $MOZ_FETCHES_DIR/sysroot" \
+CXXFLAGS="-O3 -funroll-loops --sysroot $MOZ_FETCHES_DIR/sysroot" \
+make -C llvm_mode install \
+ DESTDIR="../$dir" \
+ PREFIX=/ \
+ LLVM_CONFIG="$MOZ_FETCHES_DIR/clang/bin/llvm-config"
+
+tar caf "$artifact" "$dir"
+
+mkdir -p "$UPLOAD_DIR"
+mv "$artifact" "$UPLOAD_DIR"
diff --git a/taskcluster/scripts/misc/build-binutils-linux.sh b/taskcluster/scripts/misc/build-binutils-linux.sh
new file mode 100755
index 0000000000..b4e1d8bf6d
--- /dev/null
+++ b/taskcluster/scripts/misc/build-binutils-linux.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+set -x -e -v
+
+# This script is for building binutils for Linux.
+
+cd $GECKO_PATH
+
+PATH=$MOZ_FETCHES_DIR/gcc/bin:$PATH
+
+build/unix/build-binutils/build-binutils.sh $MOZ_FETCHES_DIR
+
+# Put a tarball in the artifacts dir
+mkdir -p $UPLOAD_DIR
+cp $MOZ_FETCHES_DIR/binutils.tar.* $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/build-breakpad-injector.sh b/taskcluster/scripts/misc/build-breakpad-injector.sh
new file mode 100755
index 0000000000..ecd53e13d1
--- /dev/null
+++ b/taskcluster/scripts/misc/build-breakpad-injector.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -x -e -v
+
+# This script is for building libbreakpadinjector.so, currently for linux only
+
+COMPRESS_EXT=zst
+
+cd $GECKO_PATH
+
+export MOZ_OBJDIR=obj-injector
+
+echo ac_add_options --enable-project=tools/crashreporter/injector > .mozconfig
+echo ac_add_options --enable-linker=lld >> .mozconfig
+
+INJECTOR=libbreakpadinjector.so
+
+TOOLCHAINS="rustc clang"
+
+for t in $TOOLCHAINS; do
+ PATH="$MOZ_FETCHES_DIR/$t/bin:$PATH"
+done
+
+./mach build -v
+
+mkdir injector
+cp $MOZ_OBJDIR/dist/bin/$INJECTOR injector/
+
+tar -acf injector.tar.$COMPRESS_EXT injector/
+mkdir -p $UPLOAD_DIR
+cp injector.tar.$COMPRESS_EXT $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/build-cctools-port.sh b/taskcluster/scripts/misc/build-cctools-port.sh
new file mode 100755
index 0000000000..d0ea6b78f4
--- /dev/null
+++ b/taskcluster/scripts/misc/build-cctools-port.sh
@@ -0,0 +1,100 @@
+#!/bin/bash
+
+# cctools sometimes needs to be rebuilt when clang is modified.
+# Until bug 1471905 is addressed, increase the following number
+# when a forced rebuild of cctools is necessary: 1
+
+set -x -e -v
+
+# This script is for building cctools (Apple's binutils) for Linux using
+# cctools-port (https://github.com/tpoechtrager/cctools-port).
+WORKSPACE=$HOME/workspace
+
+# Set some crosstools-port and libtapi directories
+CROSSTOOLS_SOURCE_DIR=$MOZ_FETCHES_DIR/cctools-port
+CROSSTOOLS_CCTOOLS_DIR=$CROSSTOOLS_SOURCE_DIR/cctools
+CROSSTOOLS_BUILD_DIR=$WORKSPACE/cctools
+LIBTAPI_SOURCE_DIR=$MOZ_FETCHES_DIR/apple-libtapi
+LIBTAPI_BUILD_DIR=$WORKSPACE/libtapi-build
+LDID_SOURCE_DIR=$MOZ_FETCHES_DIR/ldid
+CLANG_DIR=$MOZ_FETCHES_DIR/clang
+
+# Create our directories
+mkdir -p $CROSSTOOLS_BUILD_DIR $LIBTAPI_BUILD_DIR
+
+cd $GECKO_PATH
+
+# Common setup for libtapi and cctools
+export CC=$CLANG_DIR/bin/clang
+export CXX=$CLANG_DIR/bin/clang++
+# We also need this LD_LIBRARY_PATH at build time, since tapi builds bits of
+# clang build tools, and then executes those tools.
+export LD_LIBRARY_PATH=$CLANG_DIR/lib
+
+# Build libtapi; the included build.sh is not sufficient for our purposes.
+cd $LIBTAPI_BUILD_DIR
+
+# Values taken from build.sh
+TAPI_REPOSITORY=tapi-1000.10.8
+TAPI_VERSION=10.0.0
+
+INCLUDE_FIX="-I $LIBTAPI_SOURCE_DIR/src/llvm/projects/clang/include -I $PWD/projects/clang/include"
+
+cmake $LIBTAPI_SOURCE_DIR/src/llvm \
+ -GNinja \
+ -DCMAKE_CXX_FLAGS="$INCLUDE_FIX" \
+ -DLLVM_INCLUDE_TESTS=OFF \
+ -DCMAKE_BUILD_TYPE=RELEASE \
+ -DCMAKE_INSTALL_PREFIX=$CROSSTOOLS_BUILD_DIR \
+ -DCMAKE_SYSROOT=$MOZ_FETCHES_DIR/sysroot \
+ -DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld \
+ -DCMAKE_SHARED_LINKER_FLAGS=-fuse-ld=lld \
+ -DLLVM_TARGETS_TO_BUILD="X86;ARM;AArch64" \
+ -DTAPI_REPOSITORY_STRING=$TAPI_REPOSITORY \
+ -DTAPI_FULL_VERSION=$TAPI_VERSION
+
+ninja clangBasic -v
+ninja libtapi install-libtapi install-tapi-headers -v
+
+# Setup LDFLAGS late so run-at-build-time tools in the basic clang build don't
+# pick up the possibly-incompatible libstdc++ from clang.
+# Also set it up such that loading libtapi doesn't require a LD_LIBRARY_PATH.
+# (this requires two dollars and extra backslashing because it's used verbatim
+# via a Makefile)
+export LDFLAGS="-fuse-ld=lld -lpthread -Wl,-rpath-link,$MOZ_FETCHES_DIR/sysroot/lib/x86_64-linux-gnu -Wl,-rpath-link,$MOZ_FETCHES_DIR/sysroot/usr/lib/x86_64-linux-gnu -Wl,-rpath,\\\$\$ORIGIN/../lib,-rpath,\\\$\$ORIGIN/../../clang/lib"
+
+export CC="$CC --sysroot=$MOZ_FETCHES_DIR/sysroot"
+export CXX="$CXX --sysroot=$MOZ_FETCHES_DIR/sysroot"
+
+# Configure crosstools-port
+cd $CROSSTOOLS_CCTOOLS_DIR
+# Force re-libtoolization to overwrite files with the new libtool bits.
+perl -pi -e 's/(LIBTOOLIZE -c)/\1 -f/' autogen.sh
+./autogen.sh
+./configure \
+ --prefix=$CROSSTOOLS_BUILD_DIR \
+ --target=x86_64-apple-darwin \
+ --with-llvm-config=$CLANG_DIR/bin/llvm-config \
+ --enable-lto-support \
+ --enable-tapi-support \
+ --with-libtapi=$CROSSTOOLS_BUILD_DIR
+
+# Build cctools
+make -j `nproc --all` install
+
+# Build ldid
+cd $LDID_SOURCE_DIR
+# The crypto library in the sysroot cannot be linked in a PIE executable so we use -no-pie
+make -j `nproc --all` install INSTALLPREFIX=$CROSSTOOLS_BUILD_DIR LDFLAGS="-no-pie -Wl,-Bstatic -lcrypto -Wl,-Bdynamic -ldl -pthread"
+
+strip $CROSSTOOLS_BUILD_DIR/bin/*
+# various build scripts based on cmake want to find `lipo` without a prefix
+cp $CROSSTOOLS_BUILD_DIR/bin/x86_64-apple-darwin-lipo $CROSSTOOLS_BUILD_DIR/bin/lipo
+
+(cd $CROSSTOOLS_BUILD_DIR/bin/; for i in x86_64-apple-darwin-*; do
+ ln $i aarch64${i#x86_64}
+done)
+
+# Put a tarball in the artifacts dir
+mkdir -p $UPLOAD_DIR
+tar caf $UPLOAD_DIR/cctools.tar.zst -C $CROSSTOOLS_BUILD_DIR/.. `basename $CROSSTOOLS_BUILD_DIR`
diff --git a/taskcluster/scripts/misc/build-clang-mingw.sh b/taskcluster/scripts/misc/build-clang-mingw.sh
new file mode 100755
index 0000000000..2e8543b38e
--- /dev/null
+++ b/taskcluster/scripts/misc/build-clang-mingw.sh
@@ -0,0 +1,254 @@
+#!/bin/bash
+set -x -e -v
+
+# This script is for building a mingw-clang toolchain for use on Linux.
+
+if [[ $# -eq 0 ]]; then
+ echo "Provide either x86 or x64 to specify a toolchain."
+ exit 1;
+elif [ "$1" == "x86" ]; then
+ machine="i686"
+ compiler_rt_machine="i386"
+ crt_flags="--enable-lib32 --disable-lib64"
+ WRAPPER_FLAGS=""
+elif [ "$1" == "x64" ]; then
+ machine="x86_64"
+ compiler_rt_machine="x86_64"
+ crt_flags="--disable-lib32 --enable-lib64"
+ WRAPPER_FLAGS=""
+else
+ echo "Provide either x86 or x64 to specify a toolchain."
+ exit 1;
+fi
+
+TOOLCHAIN_DIR=$MOZ_FETCHES_DIR/llvm-project
+INSTALL_DIR=$MOZ_FETCHES_DIR/clang
+CROSS_PREFIX_DIR=$INSTALL_DIR/$machine-w64-mingw32
+
+make_flags="-j$(nproc)"
+
+if [ -d "$MOZ_FETCHES_DIR/binutils/bin" ]; then
+ export PATH="$MOZ_FETCHES_DIR/binutils/bin:$PATH"
+fi
+
+# This is default value of _WIN32_WINNT. Gecko configure script explicitly sets this,
+# so this is not used to build Gecko itself. We default to 0x601, which is Windows 7.
+default_win32_winnt=0x601
+
+cd $GECKO_PATH
+
+patch_file2="$(pwd)/taskcluster/scripts/misc/mingw-dwrite_3.patch"
+patch_file3="$(pwd)/taskcluster/scripts/misc/mingw-unknown.patch"
+patch_file4="$(pwd)/taskcluster/scripts/misc/mingw-enum.patch"
+patch_file5="$(pwd)/taskcluster/scripts/misc/mingw-widl.patch"
+patch_file6="$(pwd)/taskcluster/scripts/misc/mingw-dispatchqueue.patch"
+patch_file10="$(pwd)/taskcluster/scripts/misc/mingw-ts_sd.patch"
+patch_file11="$(pwd)/taskcluster/scripts/misc/mingw-composition.patch"
+
+prepare() {
+ pushd $MOZ_FETCHES_DIR/mingw-w64
+ patch -p1 <$patch_file2
+ patch -p1 <$patch_file3
+ patch -p1 <$patch_file4
+ patch -p1 <$patch_file5
+ patch -p1 <$patch_file6
+ patch -p1 <$patch_file10
+ patch -p1 <$patch_file11
+ popd
+}
+
+install_wrappers() {
+ pushd $INSTALL_DIR/bin
+
+ compiler_flags="--sysroot \$DIR/../$machine-w64-mingw32 -rtlib=compiler-rt -stdlib=libc++ -fuse-ld=lld $WRAPPER_FLAGS -fuse-cxa-atexit -Qunused-arguments"
+
+ cat <<EOF >$machine-w64-mingw32-clang
+#!/bin/sh
+DIR="\$(cd "\$(dirname "\$0")" && pwd)"
+\$DIR/clang -target $machine-w64-mingw32 $compiler_flags "\$@"
+EOF
+ chmod +x $machine-w64-mingw32-clang
+
+ cat <<EOF >$machine-w64-mingw32-clang++
+#!/bin/sh
+DIR="\$(cd "\$(dirname "\$0")" && pwd)"
+\$DIR/clang -target $machine-w64-mingw32 --driver-mode=g++ $compiler_flags "\$@"
+EOF
+ chmod +x $machine-w64-mingw32-clang++
+
+ CC="$machine-w64-mingw32-clang"
+ CXX="$machine-w64-mingw32-clang++"
+
+ popd
+}
+
+build_mingw() {
+ mkdir mingw-w64-headers
+ pushd mingw-w64-headers
+ $MOZ_FETCHES_DIR/mingw-w64/mingw-w64-headers/configure \
+ --host=$machine-w64-mingw32 \
+ --enable-sdk=all \
+ --enable-idl \
+ --with-default-msvcrt=ucrt \
+ --with-default-win32-winnt=$default_win32_winnt \
+ --prefix=$CROSS_PREFIX_DIR
+ make $make_flags install
+ popd
+
+ mkdir mingw-w64-crt
+ pushd mingw-w64-crt
+ $MOZ_FETCHES_DIR/mingw-w64/mingw-w64-crt/configure \
+ --host=$machine-w64-mingw32 \
+ $crt_flags \
+ --with-default-msvcrt=ucrt \
+ CC="$CC" \
+ AR=llvm-ar \
+ RANLIB=llvm-ranlib \
+ DLLTOOL=llvm-dlltool \
+ --prefix=$CROSS_PREFIX_DIR
+ make $make_flags
+ make $make_flags install
+ popd
+
+ mkdir widl
+ pushd widl
+ $MOZ_FETCHES_DIR/mingw-w64/mingw-w64-tools/widl/configure --target=$machine-w64-mingw32 --prefix=$INSTALL_DIR
+ make $make_flags
+ make $make_flags install
+ popd
+}
+
+build_compiler_rt() {
+ CLANG_VERSION=$(basename $(dirname $(dirname $(dirname $($CC --print-libgcc-file-name -rtlib=compiler-rt)))))
+ mkdir compiler-rt
+ pushd compiler-rt
+ cmake \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_C_COMPILER=$CC \
+ -DCMAKE_SYSTEM_NAME=Windows \
+ -DCMAKE_AR=$INSTALL_DIR/bin/llvm-ar \
+ -DCMAKE_RANLIB=$INSTALL_DIR/bin/llvm-ranlib \
+ -DCMAKE_C_COMPILER_WORKS=1 \
+ -DCMAKE_C_COMPILER_TARGET=$compiler_rt_machine-windows-gnu \
+ -DCOMPILER_RT_DEFAULT_TARGET_ONLY=TRUE \
+ $TOOLCHAIN_DIR/compiler-rt/lib/builtins
+ make $make_flags
+ mkdir -p $INSTALL_DIR/lib/clang/$CLANG_VERSION/lib/windows
+ cp lib/windows/libclang_rt.builtins-$compiler_rt_machine.a $INSTALL_DIR/lib/clang/$CLANG_VERSION/lib/windows/
+ popd
+}
+
+build_runtimes() {
+ # Below, we specify -g -gcodeview to build static libraries with debug information.
+ # Because we're not distributing these builds, this is fine. If one were to distribute
+ # the builds, perhaps one would want to make those flags conditional or investigation
+ # other options.
+ DEBUG_FLAGS="-g -gcodeview"
+
+ # First configure libcxx
+ mkdir runtimes
+ pushd runtimes
+ cmake \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=$CROSS_PREFIX_DIR \
+ -DCMAKE_C_COMPILER=$CC \
+ -DCMAKE_CXX_COMPILER=$CXX \
+ -DCMAKE_CROSSCOMPILING=TRUE \
+ -DCMAKE_SYSTEM_NAME=Windows \
+ -DCMAKE_C_COMPILER_WORKS=TRUE \
+ -DCMAKE_CXX_COMPILER_WORKS=TRUE \
+ -DLLVM_COMPILER_CHECKED=TRUE \
+ -DCMAKE_AR=$INSTALL_DIR/bin/llvm-ar \
+ -DCMAKE_RANLIB=$INSTALL_DIR/bin/llvm-ranlib \
+ -DCMAKE_CXX_FLAGS="${DEBUG_FLAGS} -D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS" \
+ -DLIBCXX_USE_COMPILER_RT=ON \
+ -DLIBCXX_INSTALL_HEADERS=ON \
+ -DLIBCXX_ENABLE_EXCEPTIONS=ON \
+ -DLIBCXX_ENABLE_THREADS=ON \
+ -DLIBCXX_HAS_WIN32_THREAD_API=ON \
+ -DLIBCXX_ENABLE_MONOTONIC_CLOCK=ON \
+ -DLIBCXX_ENABLE_SHARED=OFF \
+ -DLIBCXX_SUPPORTS_STD_EQ_CXX11_FLAG=TRUE \
+ -DLIBCXX_HAVE_CXX_ATOMICS_WITHOUT_LIB=TRUE \
+ -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF \
+ -DLIBCXX_ENABLE_FILESYSTEM=OFF \
+ -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=TRUE \
+ -DLIBCXX_CXX_ABI=libcxxabi \
+ -DLIBCXXABI_USE_LLVM_UNWINDER=TRUE \
+ -DLIBCXXABI_ENABLE_STATIC_UNWINDER=TRUE \
+ -DLLVM_NO_OLD_LIBSTDCXX=TRUE \
+ -DLIBUNWIND_USE_COMPILER_RT=TRUE \
+ -DLIBUNWIND_ENABLE_THREADS=TRUE \
+ -DLIBUNWIND_ENABLE_SHARED=FALSE \
+ -DLIBUNWIND_ENABLE_CROSS_UNWINDING=FALSE \
+ -DLIBUNWIND_CXX_FLAGS="${DEBUG_FLAGS} -Wno-dll-attribute-on-redeclaration -nostdinc++ -DPSAPI_VERSION=2" \
+ -DLIBUNWIND_C_FLAGS="-Wno-dll-attribute-on-redeclaration" \
+ -DLIBCXXABI_USE_COMPILER_RT=ON \
+ -DLIBCXXABI_ENABLE_EXCEPTIONS=ON \
+ -DLIBCXXABI_ENABLE_THREADS=ON \
+ -DLIBCXXABI_TARGET_TRIPLE=$machine-w64-mingw32 \
+ -DLIBCXXABI_ENABLE_SHARED=OFF \
+ -DLIBCXXABI_CXX_FLAGS="${DEBUG_FLAGS} -D_LIBCPP_HAS_THREAD_API_WIN32" \
+ -DLLVM_ENABLE_RUNTIMES="libcxxabi;libcxx;libunwind" \
+ $TOOLCHAIN_DIR/runtimes
+
+ make $make_flags VERBOSE=1
+ make $make_flags install
+
+ popd
+}
+
+build_libssp() {
+ pushd $MOZ_FETCHES_DIR/gcc-source/
+
+ # Massage the environment for the build-libssp.sh script
+ mkdir -p ./$machine-w64-mingw32/lib
+ cp $MOZ_FETCHES_DIR/llvm-mingw/libssp-Makefile .
+ sed -i 's/set -e/set -x -e -v/' $MOZ_FETCHES_DIR/llvm-mingw/build-libssp.sh
+ sed -i 's/(CROSS)gcc/(CROSS)clang/' libssp-Makefile
+ sed -i 's/\$(CROSS)ar/llvm-ar/' libssp-Makefile
+ OLDPATH=$PATH
+ PATH=$INSTALL_DIR/bin:$PATH
+
+ # Run the script
+ TOOLCHAIN_ARCHS=$machine $MOZ_FETCHES_DIR/llvm-mingw/build-libssp.sh .
+
+ # Grab the artifacts, cleanup
+ cp $MOZ_FETCHES_DIR/gcc-source/$machine-w64-mingw32/lib/{libssp.a,libssp_nonshared.a} $INSTALL_DIR/$machine-w64-mingw32/lib/
+ unset TOOLCHAIN_ARCHS
+ PATH=$OLDPATH
+ popd
+}
+
+build_utils() {
+ pushd $INSTALL_DIR/bin/
+ for prog in ar nm objcopy ranlib readobj strip; do
+ ln -s llvm-$prog $machine-w64-mingw32-$prog
+ done
+ ./clang $MOZ_FETCHES_DIR/llvm-mingw/wrappers/windres-wrapper.c -O2 -Wl,-s -o $machine-w64-mingw32-windres
+ popd
+}
+
+export PATH=$INSTALL_DIR/bin:$PATH
+
+prepare
+
+mkdir $TOOLCHAIN_DIR/build
+pushd $TOOLCHAIN_DIR/build
+
+install_wrappers
+build_mingw
+build_compiler_rt
+build_runtimes
+build_libssp
+build_utils
+
+popd
+
+# Put a tarball in the artifacts dir
+mkdir -p $UPLOAD_DIR
+
+pushd $(dirname $INSTALL_DIR)
+tar caf clangmingw.tar.zst clang
+mv clangmingw.tar.zst $UPLOAD_DIR
+popd
diff --git a/taskcluster/scripts/misc/build-clang-tidy-external.sh b/taskcluster/scripts/misc/build-clang-tidy-external.sh
new file mode 100755
index 0000000000..8647432e7c
--- /dev/null
+++ b/taskcluster/scripts/misc/build-clang-tidy-external.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+set -x
+
+# # Delete the external directory
+rm -rf $GECKO_PATH/build/clang-plugin/external/*
+
+# Move external repository into its place
+cp -r $MOZ_FETCHES_DIR/civet.git/* $GECKO_PATH/build/clang-plugin/external
+
+# Call build-clang.sh with this script's first argument (our JSON config)
+$GECKO_PATH/taskcluster/scripts/misc/build-clang.sh $1
diff --git a/taskcluster/scripts/misc/build-clang.sh b/taskcluster/scripts/misc/build-clang.sh
new file mode 100755
index 0000000000..9307774062
--- /dev/null
+++ b/taskcluster/scripts/misc/build-clang.sh
@@ -0,0 +1,72 @@
+#!/bin/bash
+set -x -e -v
+
+# This script is for building clang.
+
+ORIGPWD="$PWD"
+CONFIGS=$(for c; do echo -n " -c $GECKO_PATH/$c"; done)
+
+cd $GECKO_PATH
+
+if [ -d "$MOZ_FETCHES_DIR/binutils/bin" ]; then
+ export PATH="$MOZ_FETCHES_DIR/binutils/bin:$PATH"
+fi
+
+# Make the installed compiler-rt(s) available to clang.
+UPLOAD_DIR= taskcluster/scripts/misc/repack-clang.sh
+
+case "$CONFIGS" in
+*macosx64*)
+ # cmake makes decisions based on the output of the mac-only sw_vers, which is
+ # obviously missing when cross-compiling, so create a fake one. The exact
+ # version doesn't really matter: as of writing, cmake checks at most for 10.5.
+ mkdir -p $ORIGPWD/bin
+ echo "#!/bin/sh" > $ORIGPWD/bin/sw_vers
+ echo echo 10.12 >> $ORIGPWD/bin/sw_vers
+ chmod +x $ORIGPWD/bin/sw_vers
+ # these variables are used in build-clang.py
+ export CROSS_SYSROOT=$(ls -d $MOZ_FETCHES_DIR/MacOSX1*.sdk)
+ export PATH=$PATH:$ORIGPWD/bin
+ ;;
+*win64*)
+ case "$(uname -s)" in
+ MINGW*|MSYS*)
+ export UPLOAD_DIR=$ORIGPWD/public/build
+ # Set up all the Visual Studio paths.
+ . taskcluster/scripts/misc/vs-setup.sh
+
+ # LLVM_ENABLE_DIA_SDK is set if the directory "$ENV{VSINSTALLDIR}DIA SDK"
+ # exists.
+ export VSINSTALLDIR="${VSPATH}/"
+
+ export PATH="$(cd $MOZ_FETCHES_DIR/cmake && pwd)/bin:${PATH}"
+ export PATH="$(cd $MOZ_FETCHES_DIR/ninja && pwd)/bin:${PATH}"
+ ;;
+ *)
+ export VSINSTALLDIR="$MOZ_FETCHES_DIR/vs"
+ ;;
+ esac
+ ;;
+*linux64*|*android*)
+ ;;
+*)
+ echo Cannot figure out build configuration for $CONFIGS
+ exit 1
+ ;;
+esac
+
+# gets a bit too verbose here
+set +x
+
+cd $MOZ_FETCHES_DIR/llvm-project
+python3 $GECKO_PATH/build/build-clang/build-clang.py $CONFIGS
+
+set -x
+
+if [ -f clang*.tar.zst ]; then
+ # Put a tarball in the artifacts dir
+ mkdir -p $UPLOAD_DIR
+ cp clang*.tar.zst $UPLOAD_DIR
+fi
+
+. $GECKO_PATH/taskcluster/scripts/misc/vs-cleanup.sh
diff --git a/taskcluster/scripts/misc/build-compiler-rt-wasi.sh b/taskcluster/scripts/misc/build-compiler-rt-wasi.sh
new file mode 100755
index 0000000000..d23e4b1e5a
--- /dev/null
+++ b/taskcluster/scripts/misc/build-compiler-rt-wasi.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -x -e -v
+
+artifact=$(basename $TOOLCHAIN_ARTIFACT)
+dir=${artifact%.tar.*}
+
+cd $MOZ_FETCHES_DIR/wasi-sdk
+LLVM_PROJ_DIR=$MOZ_FETCHES_DIR/llvm-project
+
+mkdir -p build/install/wasi
+# The wasi-sdk build system wants to build clang itself. We trick it into
+# thinking it did, and put our own clang where it would have built its own.
+ln -s $MOZ_FETCHES_DIR/clang build/llvm
+touch build/llvm.BUILT
+
+# The wasi-sdk build system wants a clang and an ar binary in
+# build/install/$PREFIX/bin
+ln -s $MOZ_FETCHES_DIR/clang/bin build/install/wasi/bin
+ln -s llvm-ar build/install/wasi/bin/ar
+
+# Build compiler-rt
+make \
+ LLVM_PROJ_DIR=$LLVM_PROJ_DIR \
+ PREFIX=/wasi \
+ build/compiler-rt.BUILT \
+ -j$(nproc)
+
+mkdir -p $dir/lib
+mv build/install/wasi/lib/clang/*/lib/wasi $dir/lib
+tar --zstd -cf $artifact $dir
+mkdir -p $UPLOAD_DIR
+mv $artifact $UPLOAD_DIR/
diff --git a/taskcluster/scripts/misc/build-compiler-rt.sh b/taskcluster/scripts/misc/build-compiler-rt.sh
new file mode 100755
index 0000000000..b5665381d1
--- /dev/null
+++ b/taskcluster/scripts/misc/build-compiler-rt.sh
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+set -e -x
+
+artifact=$(basename $TOOLCHAIN_ARTIFACT)
+dir=${artifact%.tar.*}
+target=${dir#compiler-rt-}
+
+case "$target" in
+*-linux-android)
+ EXTRA_CMAKE_FLAGS="
+ -DCOMPILER_RT_BUILD_LIBFUZZER=OFF
+ -DCOMPILER_RT_BUILD_ORC=OFF
+ -DCOMPILER_RT_BUILTINS_HIDE_SYMBOLS=OFF
+ "
+ ;;
+*-apple-darwin)
+ EXTRA_CMAKE_FLAGS="
+ -DCOMPILER_RT_ENABLE_IOS=OFF
+ -DCOMPILER_RT_ENABLE_WATCHOS=OFF
+ -DCOMPILER_RT_ENABLE_TVOS=OFF
+ "
+ ;;
+*-windows-msvc)
+ EXTRA_CMAKE_FLAGS="
+ -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded
+ "
+ ;;
+esac
+
+EXTRA_CMAKE_FLAGS="
+ $EXTRA_CMAKE_FLAGS
+ -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON
+ -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF
+"
+
+export EXTRA_CMAKE_FLAGS
+
+$(dirname $0)/build-llvm-common.sh compiler-rt install $target "$@"
diff --git a/taskcluster/scripts/misc/build-cpython.sh b/taskcluster/scripts/misc/build-cpython.sh
new file mode 100755
index 0000000000..f6a683cc7d
--- /dev/null
+++ b/taskcluster/scripts/misc/build-cpython.sh
@@ -0,0 +1,70 @@
+#!/bin/sh
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# This script builds the official interpreter for the python language,
+# while also packing in a few default extra packages.
+
+set -e
+set -x
+
+# Required fetch artifact
+clang_bindir=${MOZ_FETCHES_DIR}/clang/bin
+clang_libdir=${MOZ_FETCHES_DIR}/clang/lib
+python_src=${MOZ_FETCHES_DIR}/cpython-source
+
+# Make the compiler-rt available to clang.
+env UPLOAD_DIR= $GECKO_PATH/taskcluster/scripts/misc/repack-clang.sh
+
+# Setup environment
+export PATH=${clang_bindir}:${PATH}
+export CC=clang
+export CXX=clang++
+export LDFLAGS=-fuse-ld=lld
+
+# Extra setup for OSX
+case `uname -s` in
+ Darwin)
+ case `uname -m` in
+ aarch64)
+ macosx_version_min=11.0
+ ;;
+ *)
+ macosx_version_min=10.12
+ ;;
+ esac
+ macosx_sdk=13.3
+ # NOTE: both CFLAGS and CPPFLAGS need to be set here, otherwise
+ # configure step fails.
+ sysroot_flags="-isysroot ${MOZ_FETCHES_DIR}/MacOSX${macosx_sdk}.sdk -mmacosx-version-min=${macosx_version_min}"
+ export CPPFLAGS=${sysroot_flags}
+ export CFLAGS=${sysroot_flags}
+ export LDFLAGS="${LDFLAGS} ${sysroot_flags}"
+ configure_flags_extra=--with-openssl=/usr/local/opt/openssl
+
+ # see https://bugs.python.org/issue44065
+ sed -i -e 's,$CC --print-multiarch,:,' ${python_src}/configure
+ ;;
+esac
+
+# Patch Python to honor MOZPYTHONHOME instead of PYTHONHOME. That way we have a
+# relocatable python for free, while not interfering with the system Python that
+# already honors PYTHONHOME.
+find ${python_src} -type f -print0 | xargs -0 perl -i -pe "s,PYTHONHOME,MOZPYTHONHOME,g"
+
+# Actual build
+work_dir=`pwd`
+tardir=python
+
+cd `mktemp -d`
+${python_src}/configure --prefix=/${tardir} --enable-optimizations ${configure_flags_extra} || { exit_status=$? && cat config.log && exit $exit_status ; }
+export MAKEFLAGS=-j`nproc`
+make
+make DESTDIR=${work_dir} install
+cd ${work_dir}
+
+${work_dir}/python/bin/python3 -m pip install --upgrade pip==23.0
+${work_dir}/python/bin/python3 -m pip install -r ${GECKO_PATH}/build/psutil_requirements.txt -r ${GECKO_PATH}/build/zstandard_requirements.txt
+
+$(dirname $0)/pack.sh ${tardir}
diff --git a/taskcluster/scripts/misc/build-custom-car-linux.sh b/taskcluster/scripts/misc/build-custom-car-linux.sh
new file mode 100755
index 0000000000..c92b696e28
--- /dev/null
+++ b/taskcluster/scripts/misc/build-custom-car-linux.sh
@@ -0,0 +1,65 @@
+#!/bin/bash
+set -x -e -v
+
+# This script is for building a custom version of chromium-as-release on Linux
+
+# First argument must be the artifact name
+ARTIFACT_NAME=$(basename $TOOLCHAIN_ARTIFACT)
+shift
+
+# Use the rest of the arguments as the build config
+CONFIG=$(echo $* | tr -d "'")
+
+
+mkdir custom_car
+cd custom_car
+CUSTOM_CAR_DIR=$PWD
+
+# Setup depot_tools
+git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
+export PATH=$PATH:$CUSTOM_CAR_DIR/depot_tools
+
+
+# Get chromium source code and dependencies
+mkdir chromium
+cd chromium
+fetch --no-history --nohooks chromium
+
+# setup the .gclient file to ensure pgo profiles are downloaded
+# for some reason we need to set --name flag even though it already exists.
+# currently the gclient.py file does NOT recognize --custom-var as it's own argument
+gclient config --name src "https://chromium.googlesource.com/chromium/src.git" --custom-var="checkout_pgo_profiles=True" --unmanaged
+
+cd src
+
+# now we can run hooks and fetch PGO + everything else
+gclient runhooks
+
+# PGO data should be in src/chrome/build/pgo_profiles/
+# with a name like "chrome-{OS}-<some unique identifier>"
+export PGO_DATA_DIR="$CUSTOM_CAR_DIR/chromium/src/chrome/build/pgo_profiles"
+for entry in "$PGO_DATA_DIR"/*
+do
+ if [ -f "$entry" ];then
+ export PGO_DATA_PATH="$entry"
+ fi
+done
+CONFIG=$(echo $CONFIG pgo_data_path='"'$PGO_DATA_PATH'"')
+
+
+# set up then build chrome
+gn gen out/Default --args="$CONFIG"
+autoninja -C out/Default chrome # skips test binaries
+
+
+# Gather binary and related files into a zip, and upload it
+cd ..
+mkdir chromium
+
+mv src/out/Default chromium
+chmod -R +x chromium
+
+tar caf $ARTIFACT_NAME chromium
+
+mkdir -p $UPLOAD_DIR
+mv $ARTIFACT_NAME $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/build-custom-car-win64.sh b/taskcluster/scripts/misc/build-custom-car-win64.sh
new file mode 100644
index 0000000000..512a0a072f
--- /dev/null
+++ b/taskcluster/scripts/misc/build-custom-car-win64.sh
@@ -0,0 +1,102 @@
+#!/bin/bash
+set -x -e -v
+
+# This script is for building a custom version of chromium-as-release on Windows
+
+# First argument must be the artifact name
+ARTIFACT_NAME=$(basename $TOOLCHAIN_ARTIFACT)
+shift
+
+# Use the rest of the arguments as the build config
+CONFIG=$(echo $* | tr -d "'")
+
+mkdir custom_car
+cd custom_car
+CUSTOM_CAR_DIR=$PWD
+
+# setup VS 2022
+. $GECKO_PATH/taskcluster/scripts/misc/vs-setup.sh
+
+# setup depot_tools
+git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
+export PATH="$(cd ./depot_tools && pwd):$PATH"
+
+# setup some environment variables for chromium build scripts
+export DEPOT_TOOLS_WIN_TOOLCHAIN=0
+export GYP_MSVS_OVERRIDE_PATH="$MOZ_FETCHES_DIR/VS"
+export GYP_MSVS_VERSION=2022
+export vs2022_install="$MOZ_FETCHES_DIR/VS"
+export WINDOWSSDKDIR="$MOZ_FETCHES_DIR/VS/Windows Kits/10"
+export DEPOT_TOOLS_UPDATE=1
+export GCLIENT_PY3=1
+# Fool GYP
+touch "$MOZ_FETCHES_DIR/VS/VC/vcvarsall.bat"
+
+
+# construct some of our own dirs and move VS dlls + other files
+# to a path that chromium build files are expecting
+mkdir chrome_dll
+cd chrome_dll
+mkdir system32
+cd ../
+pushd "$WINDOWSSDKDIR"
+mkdir -p Debuggers/x64/
+popd
+mv $MOZ_FETCHES_DIR/VS/VC/Redist/MSVC/14.34.31931/x64/Microsoft.VC143.CRT/* chrome_dll/system32/
+mv "$WINDOWSSDKDIR/App Certification Kit/"* "$WINDOWSSDKDIR"/Debuggers/x64/
+export WINDIR="$PWD/chrome_dll"
+
+# run glcient once first to get some windows deps
+gclient
+
+# fetch chromium src code
+mkdir chromium
+cd chromium
+fetch --no-history --nohooks chromium
+
+# setup the .gclient file to ensure pgo profiles are downloaded
+# for some reason we need to set --name flag even though it already exists.
+# currently the gclient.py file does NOT recognize --custom-var as it's own argument
+gclient config --name src https://chromium.googlesource.com/chromium/src.git --custom-var=checkout_pgo_profiles=True --unmanaged
+
+cd src
+
+# For fast fetches it seems we will be missing some dummy files in windows.
+# We can create a dummy this way to satisfy the rest of the build sequence
+# this is ok because we are not doing any development here and don't need
+# history.
+python3 build/util/lastchange.py -o build/util/LASTCHANGE
+
+# now we can run hooks and fetch PGO + everything else
+gclient runhooks
+
+# PGO data should be in src/chrome/build/pgo_profiles/
+# with a name like "chrome-{OS}-<some unique identifier>"
+export PGO_DATA_DIR="$CUSTOM_CAR_DIR/chromium/src/chrome/build/pgo_profiles"
+for entry in "$PGO_DATA_DIR"/*
+do
+ if [ -f "$entry" ];then
+ export PGO_DATA_PATH="$entry"
+ fi
+done
+# compute a relative path that the build scripts looks for.
+# this odd pathing seems to only happen on windows
+PGO_FILE=${PGO_DATA_PATH#*/*/*/*/*/*/*/*/*/}
+mv $PGO_DATA_PATH build/config/compiler/pgo/
+CONFIG=$(echo $CONFIG pgo_data_path='"'$PGO_FILE'"')
+
+# set up then build chrome
+gn gen out/Default --args="$CONFIG"
+autoninja -C out/Default chrome # skips test binaries
+
+# Gather binary and related files into a zip, and upload it
+cd ..
+mkdir chromium
+
+mv src/out/Default chromium
+chmod -R +x chromium
+
+tar caf $ARTIFACT_NAME chromium
+
+mkdir -p $UPLOAD_DIR
+mv $ARTIFACT_NAME $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/build-custom-v8.sh b/taskcluster/scripts/misc/build-custom-v8.sh
new file mode 100755
index 0000000000..5c8ea673ad
--- /dev/null
+++ b/taskcluster/scripts/misc/build-custom-v8.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+set -x -e -v
+
+# This script is for building a custom version of V8
+ARTIFACT_NAME='d8.tar.zst'
+CONFIG='is_debug=false target_cpu="x64"'
+if [[ $# -eq 0 ]]; then
+ echo "Using default configuration for v8 build."
+ CONFIG=$(echo $CONFIG | tr -d "'")
+else
+ # First argument must be the artifact name
+ ARTIFACT_NAME="$1"
+ shift
+
+ # Use the rest of the arguments as the build config
+ CONFIG=$(echo $* | tr -d "'")
+fi
+
+echo "Config: $CONFIG"
+echo "Artifact name: $ARTIFACT_NAME"
+
+cd $GECKO_PATH
+
+# Setup depot_tools
+git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
+export PATH=$PATH:$GECKO_PATH/depot_tools
+
+# Get v8 source code and dependencies
+fetch --force v8
+cd v8
+
+# Build v8
+gn gen out/release --args="$CONFIG"
+ninja -C out/release d8
+
+# Gather binary and related files into a zip, and upload it
+cd ..
+mkdir d8
+
+cp -R v8/out/release d8
+cp -R v8/include d8
+chmod -R +x d8
+
+tar caf $ARTIFACT_NAME d8
+
+mkdir -p $UPLOAD_DIR
+cp $ARTIFACT_NAME $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/build-dist-toolchains.sh b/taskcluster/scripts/misc/build-dist-toolchains.sh
new file mode 100755
index 0000000000..1ad1871775
--- /dev/null
+++ b/taskcluster/scripts/misc/build-dist-toolchains.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+set -x -e -v
+
+# This script is for packaging toolchains suitable for use by distributed sccache.
+TL_NAME="$1"
+
+mkdir -p $HOME/artifacts
+mkdir -p $HOME/toolchains
+
+mv $MOZ_FETCHES_DIR/$TL_NAME $HOME/toolchains/$TL_NAME
+
+$MOZ_FETCHES_DIR/sccache/sccache --package-toolchain $HOME/toolchains/$TL_NAME/bin/$TL_NAME $HOME/artifacts/$TL_NAME-dist-toolchain.tar.xz
diff --git a/taskcluster/scripts/misc/build-dmg-hfsplus.sh b/taskcluster/scripts/misc/build-dmg-hfsplus.sh
new file mode 100755
index 0000000000..b0039432aa
--- /dev/null
+++ b/taskcluster/scripts/misc/build-dmg-hfsplus.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+set -x -e -v
+
+# This script is for building libdmg-hfsplus to get the `dmg` and `hfsplus`
+# tools for producing DMG archives on Linux.
+
+WORKSPACE=$HOME/workspace
+STAGE=$WORKSPACE/dmg
+
+mkdir -p $UPLOAD_DIR $STAGE
+
+cd $MOZ_FETCHES_DIR/libdmg-hfsplus
+
+# The openssl libraries in the sysroot cannot be linked in a PIE executable so we use -no-pie
+cmake \
+ -DCMAKE_C_COMPILER=$MOZ_FETCHES_DIR/clang/bin/clang \
+ -DCMAKE_CXX_COMPILER=$MOZ_FETCHES_DIR/clang/bin/clang++ \
+ -DCMAKE_SYSROOT=$MOZ_FETCHES_DIR/sysroot \
+ -DOPENSSL_USE_STATIC_LIBS=1 \
+ -DCMAKE_EXE_LINKER_FLAGS=-no-pie \
+ .
+
+make VERBOSE=1 -j$(nproc)
+
+# We only need the dmg and hfsplus tools.
+strip dmg/dmg hfs/hfsplus
+cp dmg/dmg hfs/hfsplus $STAGE
+
+# duplicate the functionality of taskcluster-lib-urls, but in bash..
+queue_base="$TASKCLUSTER_ROOT_URL/api/queue/v1"
+
+cat >$STAGE/README<<EOF
+Source is available as a taskcluster artifact:
+$queue_base/task/$(python3 -c 'import json, os; print("{task}/artifacts/{artifact}".format(**next(f for f in json.loads(os.environ["MOZ_FETCHES"]) if "dmg-hfsplus" in f["artifact"])))')
+EOF
+tar caf $UPLOAD_DIR/dmg.tar.zst -C $WORKSPACE `basename $STAGE`
diff --git a/taskcluster/scripts/misc/build-gcc-linux.sh b/taskcluster/scripts/misc/build-gcc-linux.sh
new file mode 100755
index 0000000000..2e8acaabfc
--- /dev/null
+++ b/taskcluster/scripts/misc/build-gcc-linux.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+set -e
+
+# This script is for building GCC for Linux.
+
+root_dir=$MOZ_FETCHES_DIR
+data_dir=$GECKO_PATH/build/unix/build-gcc
+
+PATH=$MOZ_FETCHES_DIR/gcc/bin:$PATH
+
+. $data_dir/build-gcc.sh
+
+pushd $root_dir/gcc-source
+ln -sf ../gmp-source gmp
+ln -sf ../isl-source isl
+ln -sf ../mpc-source mpc
+ln -sf ../mpfr-source mpfr
+popd
+
+for patch in "$@"; do
+ apply_patch $GECKO_PATH/$patch
+done
+
+build_gcc
+
+# Put a tarball in the artifacts dir
+mkdir -p $UPLOAD_DIR
+cp $MOZ_FETCHES_DIR/gcc.tar.* $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/build-gcc-sixgill-plugin-linux.sh b/taskcluster/scripts/misc/build-gcc-sixgill-plugin-linux.sh
new file mode 100755
index 0000000000..1ee9dc626c
--- /dev/null
+++ b/taskcluster/scripts/misc/build-gcc-sixgill-plugin-linux.sh
@@ -0,0 +1,80 @@
+#!/bin/bash
+
+set -e
+set -x
+
+# This script is for building the sixgill GCC plugin for Linux. It relies on
+# the gcc checkout because it needs to recompile gmp and the gcc build script
+# determines the version of gmp to download.
+
+root_dir=$MOZ_FETCHES_DIR
+build_dir=$GECKO_PATH/build
+data_dir=$GECKO_PATH/build/unix/build-gcc
+
+sixgill_rev=a642a811d6ee
+sixgill_repo=https://hg.mozilla.org/users/sfink_mozilla.com/sixgill
+
+. $data_dir/build-gcc.sh
+
+mkdir $root_dir/gcc-source || true
+pushd $root_dir/gcc-source
+ln -sf ../gmp-source gmp
+ln -sf ../isl-source isl
+ln -sf ../mpc-source mpc
+ln -sf ../mpfr-source mpfr
+popd
+
+export TMPDIR=${TMPDIR:-/tmp/}
+export gcc_bindir=$MOZ_FETCHES_DIR/gcc/bin
+export gmp_prefix=/tools/gmp
+export gmp_dir=$root_dir$gmp_prefix
+
+prepare_sixgill() {(
+ cd $root_dir
+ hg clone -r $sixgill_rev $sixgill_repo || ( cd sixgill && hg update -r $sixgill_rev )
+)}
+
+build_gmp() {
+ if ! [ -x $gcc_bindir/gcc ]; then
+ echo "GCC not found in $gcc_bindir/gcc" >&2
+ exit 1
+ fi
+
+ # The sixgill plugin uses some gmp symbols, including some not exported by
+ # cc1/cc1plus. So link the plugin statically to libgmp. Except that the
+ # default static build does not have -fPIC, and will result in a relocation
+ # error, so build our own. This requires the gcc and related source to be
+ # in $root_dir/gcc-source.
+
+ mkdir $root_dir/gmp-objdir || true
+ (
+ cd $root_dir/gmp-objdir
+ $root_dir/gcc-source/gmp/configure --disable-shared --with-pic --prefix=$gmp_prefix
+ make -j8
+ make install DESTDIR=$root_dir
+ )
+}
+
+build_sixgill() {(
+ cd $root_dir/sixgill
+ export CC=$gcc_bindir/gcc
+ export CXX=$gcc_bindir/g++
+ export PATH="$gcc_bindir:$PATH"
+ export LD_LIBRARY_PATH="${gcc_bindir%/bin}/lib64"
+ export TARGET_CC=$CC
+ export CPPFLAGS=-I$gmp_dir/include
+ export EXTRA_LDFLAGS=-L$gmp_dir/lib
+ export HOST_CFLAGS=$CPPFLAGS
+
+ ./release.sh --build-and-package --with-gmp=$gmp_dir
+ tarball=$(ls -td *-sixgill | head -1)/sixgill.tar.xz
+ cp $tarball $root_dir/sixgill.tar.xz
+)}
+
+prepare_sixgill
+build_gmp
+build_sixgill
+
+# Put a tarball in the artifacts dir
+mkdir -p $UPLOAD_DIR
+cp $MOZ_FETCHES_DIR/sixgill.tar.* $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/build-geckodriver.sh b/taskcluster/scripts/misc/build-geckodriver.sh
new file mode 100755
index 0000000000..7434ee2ef8
--- /dev/null
+++ b/taskcluster/scripts/misc/build-geckodriver.sh
@@ -0,0 +1,60 @@
+#!/bin/bash
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+set -x -e -v
+
+# Needed by osx-cross-linker.
+export TARGET="$1"
+
+cd $GECKO_PATH
+
+EXE=
+COMPRESS_EXT=gz
+
+case "$TARGET" in
+*windows-msvc)
+ EXE=.exe
+ COMPRESS_EXT=zip
+ . $GECKO_PATH/taskcluster/scripts/misc/vs-setup.sh
+ # Bug 1584530: don't require the Microsoft MSVC runtime to be installed.
+ export RUSTFLAGS="-Ctarget-feature=+crt-static -C linker=$MOZ_FETCHES_DIR/clang/bin/lld-link"
+ export TARGET_CFLAGS="-Xclang -ivfsoverlay -Xclang $MOZ_FETCHES_DIR/vs/overlay.yaml"
+ export TARGET_CXXFLAGS="-Xclang -ivfsoverlay -Xclang $MOZ_FETCHES_DIR/vs/overlay.yaml"
+ ;;
+# OSX cross builds are a bit harder
+*-apple-darwin)
+ export PATH="$MOZ_FETCHES_DIR/clang/bin:$PATH"
+ export RUSTFLAGS="-C linker=$GECKO_PATH/taskcluster/scripts/misc/osx-cross-linker"
+ if test "$TARGET" = "aarch64-apple-darwin"; then
+ export MACOSX_DEPLOYMENT_TARGET=11.0
+ else
+ export MACOSX_DEPLOYMENT_TARGET=10.12
+ fi
+ ;;
+aarch64-unknown-linux-musl)
+ export RUSTFLAGS="-C linker=$MOZ_FETCHES_DIR/clang/bin/clang -C link-arg=--target=$TARGET -C link-arg=-fuse-ld=lld"
+ ;;
+esac
+
+export PATH="$MOZ_FETCHES_DIR/rustc/bin:$PATH"
+
+cd $GECKO_PATH/testing/geckodriver
+
+cp $GECKO_PATH/.cargo/config.in $GECKO_PATH/.cargo/config
+
+cargo build --frozen --verbose --release --target "$TARGET"
+
+cd $GECKO_PATH
+mkdir -p $UPLOAD_DIR
+
+cp target/$TARGET/release/geckodriver$EXE .
+if [ "$COMPRESS_EXT" = "zip" ]; then
+ zip geckodriver.zip geckodriver$EXE
+ cp geckodriver.zip $UPLOAD_DIR
+else
+ tar -acf geckodriver.tar.$COMPRESS_EXT geckodriver$EXE
+ cp geckodriver.tar.$COMPRESS_EXT $UPLOAD_DIR
+fi
+
+. $GECKO_PATH/taskcluster/scripts/misc/vs-cleanup.sh
diff --git a/taskcluster/scripts/misc/build-gn-common.sh b/taskcluster/scripts/misc/build-gn-common.sh
new file mode 100755
index 0000000000..b72d51df09
--- /dev/null
+++ b/taskcluster/scripts/misc/build-gn-common.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+set -e -v
+
+# This is shared code for building GN.
+cd $MOZ_FETCHES_DIR/gn
+
+if test -n "$MAC_CROSS"; then
+ python3 build/gen.py --platform darwin --no-last-commit-position
+else
+ python3 build/gen.py --no-last-commit-position
+fi
+
+cat > out/last_commit_position.h <<EOF
+#ifndef OUT_LAST_COMMIT_POSITION_H_
+#define OUT_LAST_COMMIT_POSITION_H_
+
+#define LAST_COMMIT_POSITION_NUM 0
+#define LAST_COMMIT_POSITION "unknown"
+
+#endif // OUT_LAST_COMMIT_POSITION_H_
+EOF
+
+ninja -C out -v
+
+STAGE=gn
+mkdir -p $UPLOAD_DIR $STAGE
+
+# At this point, the resulting binary is at:
+# $WORKSPACE/out/Release/gn
+if test "$MAC_CROSS" = "" -a "$(uname)" = "Linux"; then
+ strip out/gn
+fi
+cp out/gn $STAGE
+
+tar -c $STAGE | python3 $GECKO_PATH/taskcluster/scripts/misc/zstdpy > gn.tar.zst
+cp gn.tar.zst $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/build-gn-linux.sh b/taskcluster/scripts/misc/build-gn-linux.sh
new file mode 100755
index 0000000000..f6fd9fd507
--- /dev/null
+++ b/taskcluster/scripts/misc/build-gn-linux.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+set -e -v
+
+# This script is for building GN on Linux.
+
+WORKSPACE=$HOME/workspace
+export CC=gcc
+export CXX=g++
+export LDFLAGS=-lrt
+
+cd $GECKO_PATH
+
+. taskcluster/scripts/misc/build-gn-common.sh
diff --git a/taskcluster/scripts/misc/build-gn-macosx.sh b/taskcluster/scripts/misc/build-gn-macosx.sh
new file mode 100755
index 0000000000..0daafea940
--- /dev/null
+++ b/taskcluster/scripts/misc/build-gn-macosx.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+set -e -v
+
+# This script is for building GN.
+
+WORKSPACE=$HOME/workspace
+
+CROSS_SYSROOT=$MOZ_FETCHES_DIR/MacOSX13.3.sdk
+export MACOSX_DEPLOYMENT_TARGET=10.12
+
+export CC=$MOZ_FETCHES_DIR/clang/bin/clang
+export CXX=$MOZ_FETCHES_DIR/clang/bin/clang++
+export AR=$MOZ_FETCHES_DIR/clang/bin/llvm-ar
+export CFLAGS="-target x86_64-apple-darwin -isysroot ${CROSS_SYSROOT} -I${CROSS_SYSROOT}/usr/include -iframework ${CROSS_SYSROOT}/System/Library/Frameworks"
+export CXXFLAGS="-stdlib=libc++ ${CFLAGS}"
+export LDFLAGS="-fuse-ld=lld ${CXXFLAGS} -Wl,-syslibroot,${CROSS_SYSROOT} -Wl,-dead_strip"
+
+# We patch tools/gn/bootstrap/bootstrap.py to detect this.
+export MAC_CROSS=1
+
+cd $GECKO_PATH
+
+. taskcluster/scripts/misc/build-gn-common.sh
diff --git a/taskcluster/scripts/misc/build-gn-win64.sh b/taskcluster/scripts/misc/build-gn-win64.sh
new file mode 100755
index 0000000000..3ecd71fc74
--- /dev/null
+++ b/taskcluster/scripts/misc/build-gn-win64.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+set -e -v -x
+
+# This script is for building GN on Windows.
+
+UPLOAD_DIR=$PWD/public/build
+
+cd $GECKO_PATH
+
+export PATH="$(cd $MOZ_FETCHES_DIR && pwd)/ninja/bin:$PATH"
+export PATH="$(cd $MOZ_FETCHES_DIR && pwd)/mingw64/bin:$PATH"
+
+. taskcluster/scripts/misc/vs-setup.sh
+. taskcluster/scripts/misc/build-gn-common.sh
+
+. $GECKO_PATH/taskcluster/scripts/misc/vs-cleanup.sh
diff --git a/taskcluster/scripts/misc/build-hfsplus-linux.sh b/taskcluster/scripts/misc/build-hfsplus-linux.sh
new file mode 100755
index 0000000000..91f9901ebc
--- /dev/null
+++ b/taskcluster/scripts/misc/build-hfsplus-linux.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+set -x -e -v
+
+# This script is for building hfsplus for Linux.
+
+cd $GECKO_PATH
+
+export PATH=$PATH:$MOZ_FETCHES_DIR/clang/bin
+
+build/unix/build-hfsplus/build-hfsplus.sh $MOZ_FETCHES_DIR
+
+# Put a tarball in the artifacts dir
+mkdir -p $UPLOAD_DIR
+cp $MOZ_FETCHES_DIR/hfsplus.tar.* $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/build-libunwind.sh b/taskcluster/scripts/misc/build-libunwind.sh
new file mode 100755
index 0000000000..1be5168d0a
--- /dev/null
+++ b/taskcluster/scripts/misc/build-libunwind.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+set -e -x
+
+artifact=$(basename $TOOLCHAIN_ARTIFACT)
+dir=${artifact%.tar.*}
+target=${dir#libunwind-}
+
+# Make the android compiler-rt available to clang.
+env UPLOAD_DIR= $GECKO_PATH/taskcluster/scripts/misc/repack-clang.sh
+
+EXTRA_CMAKE_FLAGS="
+ $EXTRA_CMAKE_FLAGS
+ -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON
+ -DCMAKE_C_COMPILER_WORKS=1
+ -DCMAKE_CXX_COMPILER_WORKS=1
+ -DLLVM_ENABLE_RUNTIMES=libunwind
+ -DLIBUNWIND_ENABLE_SHARED=OFF
+"
+
+export EXTRA_CMAKE_FLAGS
+
+$(dirname $0)/build-llvm-common.sh runtimes install $target "$@"
diff --git a/taskcluster/scripts/misc/build-llvm-common.sh b/taskcluster/scripts/misc/build-llvm-common.sh
new file mode 100755
index 0000000000..9ee9147bc0
--- /dev/null
+++ b/taskcluster/scripts/misc/build-llvm-common.sh
@@ -0,0 +1,206 @@
+#!/bin/sh
+
+set -e -x
+
+artifact=$(basename $TOOLCHAIN_ARTIFACT)
+dir=${artifact%.tar.*}
+what=$1
+shift
+install=$1
+shift
+target=$1
+shift
+
+clang=$MOZ_FETCHES_DIR/clang/bin/clang
+
+case "$target" in
+aarch64-apple-darwin)
+ arch=arm64
+ export MACOSX_DEPLOYMENT_TARGET=11.0
+ compiler_wrapper() {
+ echo exec \$MOZ_FETCHES_DIR/clang/bin/$1 -mcpu=apple-m1 \"\$@\" > $1
+ chmod +x $1
+ }
+ compiler_wrapper clang
+ compiler_wrapper clang++
+ clang=$PWD/clang
+ ;;
+x86_64-apple-darwin)
+ arch=x86_64
+ export MACOSX_DEPLOYMENT_TARGET=10.12
+ ;;
+armv7-linux-android|i686-linux-android)
+ api_level=16
+ ;;
+aarch64-linux-android|x86_64-linux-android)
+ api_level=21
+ ;;
+esac
+
+case "$target" in
+*-apple-darwin)
+ EXTRA_CMAKE_FLAGS="
+ $EXTRA_CMAKE_FLAGS
+ -DCMAKE_LINKER=$MOZ_FETCHES_DIR/clang/bin/ld64.lld
+ -DCMAKE_LIPO=$MOZ_FETCHES_DIR/clang/bin/llvm-lipo
+ -DCMAKE_SYSTEM_NAME=Darwin
+ -DCMAKE_SYSTEM_VERSION=$MACOSX_DEPLOYMENT_TARGET
+ -DCMAKE_OSX_SYSROOT=$MOZ_FETCHES_DIR/MacOSX13.3.sdk
+ -DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld
+ -DCMAKE_SHARED_LINKER_FLAGS=-fuse-ld=lld
+ -DDARWIN_osx_ARCHS=$arch
+ -DDARWIN_osx_SYSROOT=$MOZ_FETCHES_DIR/MacOSX13.3.sdk
+ -DDARWIN_macosx_OVERRIDE_SDK_VERSION=11.0
+ -DDARWIN_osx_BUILTIN_ARCHS=$arch
+ -DLLVM_DEFAULT_TARGET_TRIPLE=$target
+ "
+ # compiler-rt build script expects to find `codesign` in $PATH.
+ # Give it a fake one.
+ echo "#!/bin/sh" > codesign
+ chmod +x codesign
+ # cmake makes decisions based on the output of the mac-only sw_vers, which is
+ # obviously missing when cross-compiling, so create a fake one. The exact
+ # version doesn't really matter: as of writing, cmake checks at most for 10.5.
+ echo "#!/bin/sh" > sw_vers
+ echo echo 10.12 >> sw_vers
+ chmod +x sw_vers
+ PATH="$PATH:$PWD"
+ ;;
+*-linux-android)
+ case "$target" in
+ armv7-linux-android)
+ arch=arm
+ ;;
+ *-linux-android)
+ arch=${target%-linux-android}
+ ;;
+ esac
+ target=$target$api_level
+ # These flags are only necessary to pass the cmake tests. They don't end up
+ # actually using libgcc, so use an empty library instead of trying to find
+ # where it is in the NDK.
+ if [ "$what" = "compiler-rt" ]; then
+ exe_linker_flags="--rtlib=libgcc -L$PWD"
+ touch libgcc.a
+ fi
+ EXTRA_CMAKE_FLAGS="
+ $EXTRA_CMAKE_FLAGS
+ -DCMAKE_SYSROOT=$MOZ_FETCHES_DIR/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot
+ -DCMAKE_LINKER=$MOZ_FETCHES_DIR/clang/bin/ld.lld
+ -DCMAKE_EXE_LINKER_FLAGS='-fuse-ld=lld $exe_linker_flags'
+ -DCMAKE_SHARED_LINKER_FLAGS=-fuse-ld=lld
+ -DANDROID=1
+ -DANDROID_NATIVE_API_LEVEL=$api_level
+ -DSANITIZER_ALLOW_CXXABI=OFF
+ -DLLVM_DEFAULT_TARGET_TRIPLE=$arch-unknown-linux-android
+ "
+ ;;
+*-unknown-linux-gnu)
+ if [ -d "$MOZ_FETCHES_DIR/sysroot" ]; then
+ sysroot=$MOZ_FETCHES_DIR/sysroot
+ else
+ sysroot=$MOZ_FETCHES_DIR/sysroot-${target%-unknown-linux-gnu}-linux-gnu
+ fi
+ if [ "${target%-unknown-linux-gnu}" = i686 ]; then
+ EXTRA_CMAKE_FLAGS="
+ $EXTRA_CMAKE_FLAGS
+ -DLLVM_TABLEGEN=$MOZ_FETCHES_DIR/clang/bin/llvm-tblgen
+ "
+ fi
+ EXTRA_CMAKE_FLAGS="
+ $EXTRA_CMAKE_FLAGS
+ -DCMAKE_SYSROOT=$sysroot
+ -DCMAKE_LINKER=$MOZ_FETCHES_DIR/clang/bin/ld.lld
+ -DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld
+ -DCMAKE_SHARED_LINKER_FLAGS=-fuse-ld=lld
+ -DLLVM_ENABLE_TERMINFO=OFF
+ "
+ ;;
+*-pc-windows-msvc)
+ EXTRA_CMAKE_FLAGS="
+ $EXTRA_CMAKE_FLAGS
+ -DCMAKE_TOOLCHAIN_FILE=$MOZ_FETCHES_DIR/llvm-project/llvm/cmake/platforms/WinMsvc.cmake
+ -DLLVM_NATIVE_TOOLCHAIN=$MOZ_FETCHES_DIR/clang
+ -DHOST_ARCH=${target%-pc-windows-msvc}
+ -DLLVM_DISABLE_ASSEMBLY_FILES=ON
+ "
+ # LLVM 15+ uses different input variables.
+ if grep -q LLVM_WINSYSROOT $MOZ_FETCHES_DIR/llvm-project/llvm/cmake/platforms/WinMsvc.cmake; then
+ EXTRA_CMAKE_FLAGS="
+ $EXTRA_CMAKE_FLAGS
+ -DLLVM_WINSYSROOT=$MOZ_FETCHES_DIR/vs
+ "
+ else
+ # WinMsvc.cmake before LLVM 15 doesn't support spaces in WINDSK_BASE.
+ ln -s "windows kits/10" $MOZ_FETCHES_DIR/vs/sdk
+ EXTRA_CMAKE_FLAGS="
+ $EXTRA_CMAKE_FLAGS
+ -DMSVC_BASE=$MOZ_FETCHES_DIR/vs/vc/tools/msvc/14.29.30133
+ -DWINSDK_BASE=$MOZ_FETCHES_DIR/vs/sdk
+ -DWINSDK_VER=10.0.19041.0
+ "
+ fi
+ ;;
+*)
+ echo $target is not supported yet
+ exit 1
+ ;;
+esac
+
+case "$target" in
+*-pc-windows-msvc)
+ ;;
+*)
+ EXTRA_CMAKE_FLAGS="
+ $EXTRA_CMAKE_FLAGS
+ -DCMAKE_C_COMPILER=$clang
+ -DCMAKE_CXX_COMPILER=$clang++
+ -DCMAKE_AR=$MOZ_FETCHES_DIR/clang/bin/llvm-ar
+ -DCMAKE_RANLIB=$MOZ_FETCHES_DIR/clang/bin/llvm-ranlib
+ "
+ ;;
+esac
+
+mkdir build
+cd build
+
+for patchfile in "$@"; do
+ case $patchfile in
+ *.json)
+ jq -r '.patches[]' $GECKO_PATH/$patchfile | while read p; do
+ patch -d $MOZ_FETCHES_DIR/llvm-project -p1 < $GECKO_PATH/$(dirname $patchfile)/$p
+ done
+ ;;
+ *)
+ patch -d $MOZ_FETCHES_DIR/llvm-project -p1 < $GECKO_PATH/$patchfile
+ ;;
+ esac
+done
+
+eval cmake \
+ $MOZ_FETCHES_DIR/llvm-project/$what \
+ -GNinja \
+ -DCMAKE_C_COMPILER_TARGET=$target \
+ -DCMAKE_CXX_COMPILER_TARGET=$target \
+ -DCMAKE_ASM_COMPILER_TARGET=$target \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=${PWD}/${dir} \
+ -DLLVM_ENABLE_ASSERTIONS=OFF \
+ -DLLVM_CONFIG_PATH=$MOZ_FETCHES_DIR/clang/bin/llvm-config \
+ $EXTRA_CMAKE_FLAGS
+
+ninja -v $install
+
+if [ "$what" = "compiler-rt" ]; then
+ # ninja install doesn't copy the PDBs
+ case "$target" in
+ *-pc-windows-msvc)
+ cp lib/windows/*pdb $dir/lib/windows/
+ ;;
+ esac
+fi
+
+tar caf "$artifact" "$dir"
+
+mkdir -p "$UPLOAD_DIR"
+mv "$artifact" "$UPLOAD_DIR"
diff --git a/taskcluster/scripts/misc/build-llvm-symbolizer.sh b/taskcluster/scripts/misc/build-llvm-symbolizer.sh
new file mode 100755
index 0000000000..f0b3657376
--- /dev/null
+++ b/taskcluster/scripts/misc/build-llvm-symbolizer.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+set -e -x
+
+$(dirname $0)/build-llvm-common.sh llvm install-llvm-symbolizer "$@"
diff --git a/taskcluster/scripts/misc/build-mar-tools.sh b/taskcluster/scripts/misc/build-mar-tools.sh
new file mode 100755
index 0000000000..1a813dd772
--- /dev/null
+++ b/taskcluster/scripts/misc/build-mar-tools.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+set -x -e -v
+
+# This script is for building mar and mbsdiff
+
+COMPRESS_EXT=zst
+
+cd $GECKO_PATH
+
+export MOZ_OBJDIR=obj-mar
+
+echo ac_add_options --enable-project=tools/update-packaging > .mozconfig
+echo ac_add_options --enable-linker=lld >> .mozconfig
+
+TOOLCHAINS="clang"
+
+for t in $TOOLCHAINS; do
+ PATH="$MOZ_FETCHES_DIR/$t/bin:$PATH"
+done
+
+./mach build -v
+
+mkdir mar-tools
+cp $MOZ_OBJDIR/dist/host/bin/{mar,mbsdiff} mar-tools/
+
+tar -acf mar-tools.tar.$COMPRESS_EXT mar-tools/
+mkdir -p $UPLOAD_DIR
+cp mar-tools.tar.$COMPRESS_EXT $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/build-mingw-fxc2-x86.sh b/taskcluster/scripts/misc/build-mingw-fxc2-x86.sh
new file mode 100755
index 0000000000..da93bbf1bc
--- /dev/null
+++ b/taskcluster/scripts/misc/build-mingw-fxc2-x86.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+set -x -e -v
+
+WORKSPACE=$HOME/workspace
+INSTALL_DIR=$WORKSPACE/fxc2
+
+mkdir -p $INSTALL_DIR/bin
+
+export PATH="$MOZ_FETCHES_DIR/clang/bin:$PATH"
+
+# --------------
+
+cd $MOZ_FETCHES_DIR/fxc2
+make -j$(nproc) x86
+
+cp fxc2.exe $INSTALL_DIR/bin/
+cp dll/d3dcompiler_47_32.dll $INSTALL_DIR/bin/d3dcompiler_47.dll
+
+# --------------
+
+cd $WORKSPACE
+tar caf fxc2.tar.zst fxc2
+
+mkdir -p $UPLOAD_DIR
+cp fxc2.tar.* $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/build-mingw32-nsis.sh b/taskcluster/scripts/misc/build-mingw32-nsis.sh
new file mode 100755
index 0000000000..806f9c8608
--- /dev/null
+++ b/taskcluster/scripts/misc/build-mingw32-nsis.sh
@@ -0,0 +1,70 @@
+#!/bin/bash
+set -x -e -v
+
+INSTALL_DIR=$MOZ_FETCHES_DIR/nsis
+
+mkdir -p $INSTALL_DIR
+
+cd $MOZ_FETCHES_DIR
+
+export PATH="$MOZ_FETCHES_DIR/binutils/bin:$MOZ_FETCHES_DIR/clang/bin:$PATH"
+
+# Call.S, included from CallCPP.S contains directives that clang's integrated
+# assembler doesn't understand.
+cat <<'EOF' >$MOZ_FETCHES_DIR/clang/bin/i686-w64-mingw32-gcc
+#!/bin/sh
+case "$@" in
+*/CallCPP.S)
+ $(dirname $0)/i686-w64-mingw32-clang -fno-integrated-as "$@"
+ ;;
+*)
+ $(dirname $0)/i686-w64-mingw32-clang "$@"
+ ;;
+esac
+EOF
+
+chmod +x $MOZ_FETCHES_DIR/clang/bin/i686-w64-mingw32-gcc
+ln -s i686-w64-mingw32-clang++ $MOZ_FETCHES_DIR/clang/bin/i686-w64-mingw32-g++
+
+# --------------
+
+cd zlib-1.2.13
+make -f win32/Makefile.gcc PREFIX=i686-w64-mingw32-
+
+cd ../nsis-3.07-src
+patch -p1 < $GECKO_PATH/build/win32/nsis-no-insert-timestamp.patch
+patch -p1 < $GECKO_PATH/build/win32/nsis-no-underscore.patch
+# --exclude-libs is not supported by lld, but is not required anyways.
+# /fixed is passed by the build system when building with MSVC but not
+# when building with GCC/binutils. The build system doesn't really support
+# clang/lld, but apparently binutils and lld don't have the same defaults
+# related to this. Unfortunately, /fixed is necessary for the stubs to be
+# handled properly by the resource editor in NSIS, which doesn't handle
+# relocations, so we pass the equivalent flag to lld-link through lld through
+# clang.
+sed -i 's/-Wl,--exclude-libs,msvcrt.a/-Wl,-Xlink=-fixed/' SCons/Config/gnu
+# memcpy.c and memset.c are built with a C++ compiler so we need to
+# avoid their symbols being mangled.
+sed -i '2i extern "C"' SCons/Config/{memcpy,memset}.c
+# Makensisw is skipped because its resource file fails to build with
+# llvm-rc, but we don't need makensisw.
+scons \
+ PATH=$PATH \
+ CC="clang --sysroot $MOZ_FETCHES_DIR/sysroot-x86_64-linux-gnu" \
+ CXX="clang++ --sysroot $MOZ_FETCHES_DIR/sysroot-x86_64-linux-gnu" \
+ XGCC_W32_PREFIX=i686-w64-mingw32- \
+ ZLIB_W32=../zlib-1.2.13 \
+ SKIPUTILS="NSIS Menu,Makensisw" \
+ PREFIX_DEST=$INSTALL_DIR/ \
+ PREFIX_BIN=bin \
+ NSIS_CONFIG_CONST_DATA_PATH=no \
+ VERSION=3.07 \
+ install
+# --------------
+
+cd $MOZ_FETCHES_DIR
+
+tar caf nsis.tar.zst nsis
+
+mkdir -p $UPLOAD_DIR
+cp nsis.tar.* $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/build-mkbom-linux.sh b/taskcluster/scripts/misc/build-mkbom-linux.sh
new file mode 100755
index 0000000000..8b4a69a1ef
--- /dev/null
+++ b/taskcluster/scripts/misc/build-mkbom-linux.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+set -x -e -v
+
+# This script is for building mkbom for Linux.
+mkdir -p $UPLOAD_DIR
+
+export PATH=$PATH:$MOZ_FETCHES_DIR/clang/bin
+cd $MOZ_FETCHES_DIR/bomutils
+
+make_flags="-j$(nproc)"
+make "$make_flags"
+
+cd $(mktemp -d)
+mkdir mkbom
+
+cp $MOZ_FETCHES_DIR/bomutils/build/bin/mkbom ./mkbom/mkbom
+tar caf $UPLOAD_DIR/mkbom.tar.zst ./mkbom
diff --git a/taskcluster/scripts/misc/build-mozmake.sh b/taskcluster/scripts/misc/build-mozmake.sh
new file mode 100755
index 0000000000..455496787b
--- /dev/null
+++ b/taskcluster/scripts/misc/build-mozmake.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+set -x -e -v
+
+. $GECKO_PATH/taskcluster/scripts/misc/vs-setup.sh
+
+cd $MOZ_FETCHES_DIR/make
+
+# Patch for http://savannah.gnu.org/bugs/?58656
+patch -p1 <<'EOF'
+diff --git a/src/remake.c b/src/remake.c
+index fb237c5..b2ba069 100644
+--- a/src/remake.c
++++ b/src/remake.c
+@@ -35,6 +35,13 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
+ #endif
+ #ifdef WINDOWS32
+ #include <io.h>
++#include <sys/stat.h>
++#if defined(_MSC_VER) && _MSC_VER > 1200
++/* VC7 or later support _stat64 to access 64-bit file size. */
++#define stat64 _stat64
++#else
++#define stat64 stat
++#endif
+ #endif
+
+
+@@ -1466,7 +1473,11 @@ static FILE_TIMESTAMP
+ name_mtime (const char *name)
+ {
+ FILE_TIMESTAMP mtime;
++#if defined(WINDOWS32)
++ struct stat64 st;
++#else
+ struct stat st;
++#endif
+ int e;
+
+ #if defined(WINDOWS32)
+@@ -1498,7 +1509,7 @@ name_mtime (const char *name)
+ tend = &tem[0];
+ }
+
+- e = stat (tem, &st);
++ e = stat64 (tem, &st);
+ if (e == 0 && !_S_ISDIR (st.st_mode) && tend < tem + (p - name - 1))
+ {
+ errno = ENOTDIR;
+EOF
+
+chmod +w src/config.h.W32
+sed "/#define BATCH_MODE_ONLY_SHELL/s/\/\*\(.*\)\*\//\1/" src/config.h.W32 > src/config.h
+make -f Basic.mk \
+ MAKE_HOST=Windows32 \
+ MKDIR.cmd='mkdir -p $1' \
+ RM.cmd='rm -f $1' \
+ CP.cmd='cp $1 $2' \
+ msvc_CC="$MOZ_FETCHES_DIR/clang/bin/clang-cl -Xclang -ivfsoverlay -Xclang $MOZ_FETCHES_DIR/vs/overlay.yaml" \
+ msvc_LD=$MOZ_FETCHES_DIR/clang/bin/lld-link
+
+mkdir mozmake
+cp WinRel/gnumake.exe mozmake/mozmake.exe
+
+tar -acvf mozmake.tar.zst mozmake
+mkdir -p $UPLOAD_DIR
+cp mozmake.tar.zst $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/build-msix-packaging.sh b/taskcluster/scripts/misc/build-msix-packaging.sh
new file mode 100755
index 0000000000..345057a016
--- /dev/null
+++ b/taskcluster/scripts/misc/build-msix-packaging.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+set -x -e -v
+
+cd $MOZ_FETCHES_DIR/msix-packaging
+
+export PATH=$MOZ_FETCHES_DIR/clang/bin:$PATH
+
+# makelinux.sh invokes `make` with no parallelism. These jobs run on hosts with
+# 16+ vCPUs; let's try to take advantage.
+export MAKEFLAGS=-j16
+
+./makelinux.sh --pack -- \
+ -DCMAKE_SYSROOT=$MOZ_FETCHES_DIR/sysroot \
+ -DCMAKE_EXE_LINKER_FLAGS_INIT='-fuse-ld=lld -Wl,-rpath=\$ORIGIN' \
+ -DCMAKE_SHARED_LINKER_FLAGS_INIT='-fuse-ld=lld -Wl,-rpath=\$ORIGIN' \
+ -DCMAKE_SKIP_BUILD_RPATH=TRUE
+
+mkdir msix-packaging
+cp .vs/bin/makemsix msix-packaging
+cp .vs/lib/libmsix.so msix-packaging
+
+# The `msix-packaging` tool links against libicu dynamically. It would be
+# better to link statically, but it's not easy to achieve. This copies the
+# needed libicu libraries from the sysroot, and the rpath settings above allows
+# them to be loaded, which means the consuming environment doesn't need to
+# install libicu directly.
+LD_LIBRARY_PATH=$MOZ_FETCHES_DIR/sysroot/usr/lib/x86_64-linux-gnu \
+ldd msix-packaging/libmsix.so | awk '$3 ~ /libicu/ {print $3}' | xargs -I '{}' cp '{}' msix-packaging
+
+tar caf msix-packaging.tar.zst msix-packaging
+
+mkdir -p $UPLOAD_DIR
+cp msix-packaging.tar.zst $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/build-nasm.sh b/taskcluster/scripts/misc/build-nasm.sh
new file mode 100755
index 0000000000..79b0887b3e
--- /dev/null
+++ b/taskcluster/scripts/misc/build-nasm.sh
@@ -0,0 +1,63 @@
+#!/bin/bash
+set -x -e -v
+
+COMPRESS_EXT=zst
+
+cd $MOZ_FETCHES_DIR/nasm-*
+
+case $(cat version) in
+2.14.02)
+ # Fix for .debug_loc section containing garbage on elf32
+ # https://bugzilla.nasm.us/show_bug.cgi?id=3392631
+ patch -p1 <<'EOF'
+diff --git a/output/outelf.c b/output/outelf.c
+index de99d076..47031e12 100644
+--- a/output/outelf.c
++++ b/output/outelf.c
+@@ -3275,7 +3275,7 @@ static void dwarf_generate(void)
+ WRITELONG(pbuf,framelen-4); /* initial length */
+
+ /* build loc section */
+- loclen = 16;
++ loclen = is_elf64() ? 16 : 8;
+ locbuf = pbuf = nasm_malloc(loclen);
+ if (is_elf32()) {
+ WRITELONG(pbuf,0); /* null beginning offset */
+EOF
+ ;;
+esac
+
+export PATH="$MOZ_FETCHES_DIR/clang/bin:$PATH"
+
+case "$1" in
+ win64)
+ TARGET=x86_64-w64-mingw32
+ CC=x86_64-w64-mingw32-clang
+ EXE=.exe
+ ;;
+ macosx64)
+ export MACOSX_DEPLOYMENT_TARGET=10.12
+ TARGET=x86_64-apple-darwin
+ CC="clang -fuse-ld=lld --target=$TARGET -isysroot $MOZ_FETCHES_DIR/MacOSX13.3.sdk"
+ EXE=
+ ;;
+ macosx64-aarch64)
+ export MACOSX_DEPLOYMENT_TARGET=11.0
+ TARGET=aarch64-apple-darwin
+ CC="clang -fuse-ld=lld --target=$TARGET -isysroot $MOZ_FETCHES_DIR/MacOSX13.3.sdk"
+ EXE=
+ ;;
+ *)
+ CC="clang --sysroot=$MOZ_FETCHES_DIR/sysroot-x86_64-linux-gnu"
+ EXE=
+ ;;
+esac
+./configure CC="$CC" AR=llvm-ar RANLIB=llvm-ranlib LDFLAGS=-fuse-ld=lld ${TARGET:+--host=$TARGET}
+make -j$(nproc)
+
+mv nasm$EXE nasm-tmp
+mkdir nasm
+mv nasm-tmp nasm/nasm$EXE
+tar -acf nasm.tar.$COMPRESS_EXT nasm
+mkdir -p "$UPLOAD_DIR"
+cp nasm.tar.$COMPRESS_EXT "$UPLOAD_DIR"
diff --git a/taskcluster/scripts/misc/build-nsis.sh b/taskcluster/scripts/misc/build-nsis.sh
new file mode 100755
index 0000000000..b1b8e06248
--- /dev/null
+++ b/taskcluster/scripts/misc/build-nsis.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -x -e -v
+
+export PATH=$MOZ_FETCHES_DIR/clang/bin:$PATH
+
+# nsis/ contains the pre-built windows native nsis. We build a linux
+# makensis from source and install it there.
+INSTALL_DIR=$MOZ_FETCHES_DIR/nsis
+
+cd $MOZ_FETCHES_DIR/nsis-3.07-src
+patch -p1 < $GECKO_PATH/build/win32/nsis-no-underscore.patch
+scons \
+ -j $(nproc) \
+ PATH=$PATH \
+ CC="clang --sysroot $MOZ_FETCHES_DIR/sysroot-x86_64-linux-gnu" \
+ CXX="clang++ --sysroot $MOZ_FETCHES_DIR/sysroot-x86_64-linux-gnu" \
+ SKIPSTUBS=all \
+ SKIPPLUGINS=all \
+ SKIPUTILS=all \
+ SKIPMISC=all \
+ PREFIX_DEST=$INSTALL_DIR/ \
+ PREFIX_BIN=bin \
+ NSIS_CONFIG_CONST_DATA_PATH=no \
+ VERSION=3.07 \
+ install-compiler
+
+cd $MOZ_FETCHES_DIR
+
+tar caf nsis.tar.zst nsis
+
+mkdir -p $UPLOAD_DIR
+cp nsis.tar.zst $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/build-pkgconf.sh b/taskcluster/scripts/misc/build-pkgconf.sh
new file mode 100755
index 0000000000..bc4ec7d4bb
--- /dev/null
+++ b/taskcluster/scripts/misc/build-pkgconf.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+set -x -e -v
+
+# This script is for building pkgconfs.
+PROJECT=pkgconf
+
+cd ${MOZ_FETCHES_DIR}/${PROJECT}
+
+export PATH="$MOZ_FETCHES_DIR/clang/bin:$PATH"
+
+case "$1" in
+x86_64-unknown-linux-gnu)
+ CC="clang --sysroot=$MOZ_FETCHES_DIR/sysroot-x86_64-linux-gnu"
+ EXE=
+ ;;
+x86_64-apple-darwin)
+ export MACOSX_DEPLOYMENT_TARGET=10.12
+ TARGET=$1
+ CC="clang --target=$TARGET -isysroot $MOZ_FETCHES_DIR/MacOSX13.3.sdk"
+ EXE=
+ ;;
+aarch64-apple-darwin)
+ export MACOSX_DEPLOYMENT_TARGET=11.0
+ TARGET=$1
+ CC="clang --target=$TARGET -isysroot $MOZ_FETCHES_DIR/MacOSX13.3.sdk"
+ EXE=
+ ;;
+x86_64-pc-windows-gnu)
+ TARGET=x86_64-w64-mingw32
+ CC="x86_64-w64-mingw32-clang -DPKGCONFIG_IS_STATIC=1"
+ EXE=.exe
+ ;;
+esac
+
+./configure --disable-shared CC="$CC" AR=llvm-ar RANLIB=llvm-ranlib LDFLAGS=-fuse-ld=lld ${TARGET:+--host=$TARGET}
+make -j$(nproc) V=1
+
+mv ${PROJECT}${EXE} ${PROJECT}_tmp
+mkdir ${PROJECT}
+mv ${PROJECT}_tmp ${PROJECT}/pkg-config${EXE}
+tar -acf ${PROJECT}.tar.zst ${PROJECT}
+
+mkdir -p $UPLOAD_DIR
+mv ${PROJECT}.tar.zst $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/build-resourcemonitor.sh b/taskcluster/scripts/misc/build-resourcemonitor.sh
new file mode 100755
index 0000000000..6643079c76
--- /dev/null
+++ b/taskcluster/scripts/misc/build-resourcemonitor.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+set -x -e -v
+
+cd "$MOZ_FETCHES_DIR"/resource-monitor/ || exit 1
+COMPRESS_EXT=zst
+
+PATH="$MOZ_FETCHES_DIR/go/bin:$PATH"
+export PATH
+
+EXE_SUFFIX=""
+
+case "$1" in
+ linux64) GOOS=linux; GOARCH=amd64 ;;
+ macos64) GOOS=darwin; GOARCH=amd64 ;;
+ windows64) GOOS=windows; GOARCH=amd64; EXE_SUFFIX=".exe" ;;
+ windows32) GOOS=windows; GOARCH=386; EXE_SUFFIX=".exe" ;;
+ *)
+ echo "Unknown architecture $1 not recognized in build-resourcemonitor.sh" >&2
+ exit 1
+ ;;
+esac
+
+export GOOS
+export GOARCH
+export EXE_SUFFIX
+
+echo "GOOS=$GOOS"
+echo "GOARCH=$GOARCH"
+
+go build .
+
+STAGING_DIR="resource-monitor"
+mv "resource-monitor${EXE_SUFFIX}" resource-monitor.tmp
+mkdir "${STAGING_DIR}"
+
+cp resource-monitor.tmp "${STAGING_DIR}/resource-monitor${EXE_SUFFIX}"
+
+tar -acf "resource-monitor.tar.$COMPRESS_EXT" "${STAGING_DIR}"/
+mkdir -p "$UPLOAD_DIR"
+cp "resource-monitor.tar.$COMPRESS_EXT" "$UPLOAD_DIR"
diff --git a/taskcluster/scripts/misc/build-rust-based-toolchain.sh b/taskcluster/scripts/misc/build-rust-based-toolchain.sh
new file mode 100755
index 0000000000..a5939ed58e
--- /dev/null
+++ b/taskcluster/scripts/misc/build-rust-based-toolchain.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+set -x -e -v
+
+artifact=$(basename "$TOOLCHAIN_ARTIFACT")
+project=${artifact%.tar.*}
+workspace=$HOME/workspace
+
+# Exported for osx-cross-linker.
+export TARGET=$1
+shift
+
+FEATURES="$@"
+
+case "$TARGET" in
+x86_64-unknown-linux-gnu)
+ # Native Linux Build
+ export RUSTFLAGS="-Clinker=$MOZ_FETCHES_DIR/clang/bin/clang++ -C link-arg=--sysroot=$MOZ_FETCHES_DIR/sysroot-x86_64-linux-gnu -C link-arg=-fuse-ld=lld"
+ export CC=$MOZ_FETCHES_DIR/clang/bin/clang
+ export CXX=$MOZ_FETCHES_DIR/clang/bin/clang++
+ export TARGET_CFLAGS="--sysroot=$MOZ_FETCHES_DIR/sysroot-x86_64-linux-gnu"
+ export TARGET_CXXFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0 --sysroot=$MOZ_FETCHES_DIR/sysroot-x86_64-linux-gnu"
+ ;;
+*-apple-darwin)
+ # Cross-compiling for Mac on Linux.
+ export PATH="$MOZ_FETCHES_DIR/clang/bin:$PATH"
+ export RUSTFLAGS="-C linker=$GECKO_PATH/taskcluster/scripts/misc/osx-cross-linker"
+ if test "$TARGET" = "aarch64-apple-darwin"; then
+ export MACOSX_DEPLOYMENT_TARGET=11.0
+ else
+ export MACOSX_DEPLOYMENT_TARGET=10.12
+ fi
+ export CC="$MOZ_FETCHES_DIR/clang/bin/clang"
+ export CXX="$MOZ_FETCHES_DIR/clang/bin/clang++"
+ export TARGET_CFLAGS="-isysroot $MOZ_FETCHES_DIR/MacOSX13.3.sdk"
+ export TARGET_CXXFLAGS="-isysroot $MOZ_FETCHES_DIR/MacOSX13.3.sdk -stdlib=libc++"
+ ;;
+*-pc-windows-msvc)
+ # Cross-compiling for Windows on Linux.
+ export CC=$MOZ_FETCHES_DIR/clang/bin/clang-cl
+ export CXX=$MOZ_FETCHES_DIR/clang/bin/clang-cl
+ export TARGET_AR=$MOZ_FETCHES_DIR/clang/bin/llvm-lib
+
+ . $GECKO_PATH/taskcluster/scripts/misc/vs-setup.sh
+ export CARGO_TARGET_I686_PC_WINDOWS_MSVC_LINKER=$MOZ_FETCHES_DIR/clang/bin/lld-link
+ export CARGO_TARGET_X86_64_PC_WINDOWS_MSVC_LINKER=$MOZ_FETCHES_DIR/clang/bin/lld-link
+ export TARGET_CFLAGS="-Xclang -ivfsoverlay -Xclang $MOZ_FETCHES_DIR/vs/overlay.yaml"
+ export TARGET_CXXFLAGS="-Xclang -ivfsoverlay -Xclang $MOZ_FETCHES_DIR/vs/overlay.yaml"
+ ;;
+esac
+
+PATH="$MOZ_FETCHES_DIR/rustc/bin:$PATH"
+
+cargo install \
+ --locked \
+ --verbose \
+ --path $MOZ_FETCHES_DIR/${FETCH-$project} \
+ --target-dir $workspace/obj \
+ --root $workspace/out \
+ --target "$TARGET" \
+ ${FEATURES:+--features "$FEATURES"}
+
+mkdir $workspace/$project
+mv $workspace/out/bin/* $workspace/$project
+tar -C $workspace -acvf $project.tar.zst $project
+mkdir -p $UPLOAD_DIR
+mv $project.tar.zst $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/build-sysroot-wasi.sh b/taskcluster/scripts/misc/build-sysroot-wasi.sh
new file mode 100755
index 0000000000..2c6ef551ce
--- /dev/null
+++ b/taskcluster/scripts/misc/build-sysroot-wasi.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+set -x -e -v
+
+artifact=$(basename $TOOLCHAIN_ARTIFACT)
+sysroot=${artifact%.tar.*}
+
+# Make the wasi compiler-rt available to clang.
+env UPLOAD_DIR= $GECKO_PATH/taskcluster/scripts/misc/repack-clang.sh
+
+cd $MOZ_FETCHES_DIR/wasi-sdk
+LLVM_PROJ_DIR=$MOZ_FETCHES_DIR/llvm-project
+
+mkdir -p build/install/wasi
+# The wasi-sdk build system wants to build clang itself. We trick it into
+# thinking it did, and put our own clang where it would have built its own.
+ln -s $MOZ_FETCHES_DIR/clang build/llvm
+touch build/llvm.BUILT
+
+# The wasi-sdk build system wants a clang and an ar binary in
+# build/install/$PREFIX/bin
+ln -s $MOZ_FETCHES_DIR/clang/bin build/install/wasi/bin
+ln -s llvm-ar build/install/wasi/bin/ar
+
+# Build wasi-libc, libc++ and libc++abi.
+do_make() {
+ make \
+ LLVM_PROJ_DIR=$LLVM_PROJ_DIR \
+ PREFIX=/wasi \
+ -j$(nproc) \
+ $1
+}
+
+do_make build/wasi-libc.BUILT
+
+# The wasi-sdk build system has a dependency on compiler-rt for libcxxabi,
+# but that's not actually necessary. Pretend it's already built.
+# Because compiler-rt has a dependency on wasi-libc, we can only do this
+# after wasi-libc is built.
+touch build/compiler-rt.BUILT
+
+do_make build/libcxx.BUILT
+
+mv build/install/wasi/share/wasi-sysroot $sysroot
+tar --zstd -cf $artifact $sysroot
+mkdir -p $UPLOAD_DIR
+mv $artifact $UPLOAD_DIR/
diff --git a/taskcluster/scripts/misc/build-sysroot.sh b/taskcluster/scripts/misc/build-sysroot.sh
new file mode 100755
index 0000000000..8b110eadf7
--- /dev/null
+++ b/taskcluster/scripts/misc/build-sysroot.sh
@@ -0,0 +1,127 @@
+#!/bin/sh
+
+set -x
+set -e
+
+arch=$1
+shift
+
+sysroot=$(basename $TOOLCHAIN_ARTIFACT)
+sysroot=${sysroot%%.*}
+
+# To repackage Firefox as a .deb package
+# we bootstrap jessie systems on a bullseye image.
+# To keep the build and repackage environments
+# consistent the build baseline used here (jessie) should be
+# synchronized with the packaging baseline used in
+# taskcluster/docker/debian-repackage/Dockerfile
+# and python/mozbuild/mozbuild/repackaging/deb.py
+case "$arch" in
+i386|amd64)
+ dist=jessie
+ if [ -n "$PACKAGES_TASKS" ]; then
+ gcc_version=8
+ else
+ gcc_version=4.9
+ fi
+ # The Debian Jessie GPG key expired.
+ extra_apt_opt='Apt::Key::gpgvcommand "/usr/local/sbin/gpgvnoexpkeysig"'
+ ;;
+arm64)
+ dist=buster
+ gcc_version=8
+ ;;
+*)
+ echo "$arch is not supported." >&2
+ exit 1
+ ;;
+esac
+
+case "$dist" in
+jessie)
+ repo_url=https://archive.debian.org/debian
+ ;;
+*)
+ SNAPSHOT=20210208T213147Z
+ repo_url=http://snapshot.debian.org/archive/debian/$SNAPSHOT
+ ;;
+esac
+
+packages="
+ linux-libc-dev
+ libasound2-dev
+ libstdc++-${gcc_version}-dev
+ libdbus-glib-1-dev
+ libfontconfig1-dev
+ libfreetype6-dev
+ libgconf2-dev
+ libgcc-${gcc_version}-dev
+ libgtk-3-dev
+ libpango1.0-dev
+ libpulse-dev
+ libx11-xcb-dev
+ libxt-dev
+ valgrind
+ $*
+"
+
+# --keyring=... works around https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=981710
+# For a sysroot, we don't need everything. Essentially only libraries and headers, as
+# well as pkgconfig files. We exclude debug info files and valgrind files that are not
+# useful to build.
+queue_base="$TASKCLUSTER_ROOT_URL/api/queue/v1"
+(
+ echo "deb $repo_url $dist main"
+ for task in $PACKAGES_TASKS; do
+ echo "deb [trusted=yes] $queue_base/task/$task/artifacts/public/build/ apt/"
+ done
+) | mmdebstrap \
+ --architectures=$arch \
+ --variant=extract \
+ --include=$(echo $packages | tr ' ' ,) \
+ $dist \
+ $sysroot \
+ - \
+ --aptopt=/etc/apt/apt.conf.d/99taskcluster \
+ ${extra_apt_opt:+--aptopt="$extra_apt_opt"} \
+ --dpkgopt=path-exclude="*" \
+ --dpkgopt=path-include="/lib/*" \
+ --dpkgopt=path-include="/lib32/*" \
+ --dpkgopt=path-include="/usr/include/*" \
+ --dpkgopt=path-include="/usr/lib/*" \
+ --dpkgopt=path-include="/usr/lib32/*" \
+ --dpkgopt=path-exclude="/usr/lib/debug/*" \
+ --dpkgopt=path-exclude="/usr/lib/python*" \
+ --dpkgopt=path-exclude="/usr/lib/valgrind/*" \
+ --dpkgopt=path-include="/usr/share/pkgconfig/*" \
+ --keyring=/usr/share/keyrings/debian-archive-removed-keys.gpg \
+ -v
+
+# Remove files that are created despite the path-exclude=*.
+rm -rf $sysroot/etc $sysroot/dev $sysroot/tmp $sysroot/var
+
+# Remove empty directories
+find $sysroot -depth -type d -empty -delete
+
+# Adjust symbolic links to link into the sysroot instead of absolute
+# paths that end up pointing at the host system.
+find $sysroot -type l | while read l; do
+ t=$(readlink $l)
+ case "$t" in
+ /*)
+ # We have a path in the form "$sysroot/a/b/c/d" and we want ../../..,
+ # which is how we get from d to the root of the sysroot. For that,
+ # we start from the directory containing d ("$sysroot/a/b/c"), remove
+ # all non-slash characters, leaving is with "///", replace each slash
+ # with "../", which gives us "../../../", and then we remove the last
+ # slash.
+ rel=$(dirname $l | sed 's,[^/],,g;s,/,../,g;s,/$,,')
+ ln -sf $rel$t $l
+ ;;
+ esac
+done
+
+tar caf $sysroot.tar.zst $sysroot
+
+mkdir -p "$UPLOAD_DIR"
+mv "$sysroot.tar.zst" "$UPLOAD_DIR"
diff --git a/taskcluster/scripts/misc/build-upx.sh b/taskcluster/scripts/misc/build-upx.sh
new file mode 100755
index 0000000000..a0ad9af626
--- /dev/null
+++ b/taskcluster/scripts/misc/build-upx.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+set -x -e -v
+
+WORKSPACE=$HOME/workspace
+INSTALL_DIR=$WORKSPACE/upx
+
+mkdir -p $INSTALL_DIR/bin
+
+cd $WORKSPACE
+
+git clone -n https://github.com/upx/upx.git upx-clone
+cd upx-clone
+# https://github.com/upx/upx/releases/tag/v3.95
+git checkout 7a3637ff5a800b8bcbad20ae7f668d8c8449b014 # Asserts integrity of the clone (right?)
+git submodule update --init --recursive
+cd src
+make -j$(nproc)
+cp upx.out $INSTALL_DIR/bin/upx
+
+# --------------
+
+cd $WORKSPACE
+tar caf upx.tar.zst upx
+
+mkdir -p $UPLOAD_DIR
+cp upx.tar.* $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/build-winchecksec.sh b/taskcluster/scripts/misc/build-winchecksec.sh
new file mode 100755
index 0000000000..f13ef5b77b
--- /dev/null
+++ b/taskcluster/scripts/misc/build-winchecksec.sh
@@ -0,0 +1,54 @@
+#!/bin/bash
+set -e -v -x
+
+mkdir -p $UPLOAD_DIR
+
+cd $MOZ_FETCHES_DIR/winchecksec
+
+SUFFIX=
+
+case "$1" in
+x86_64-pc-windows-msvc)
+ SUFFIX=.exe
+ export PATH="$MOZ_FETCHES_DIR/clang/bin:$PATH"
+
+ . $GECKO_PATH/taskcluster/scripts/misc/vs-setup.sh
+
+ # Patch pe-parse because clang-cl doesn't support /analyze.
+ patch -p1 <<'EOF'
+--- a/pe-parse/cmake/compilation_flags.cmake
++++ b/pe-parse/cmake/compilation_flags.cmake
+@@ -1,5 +1,5 @@
+ if (MSVC)
+- list(APPEND DEFAULT_CXX_FLAGS /W4 /analyze)
++ list(APPEND DEFAULT_CXX_FLAGS /W4)
+
+ if (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
+ list(APPEND DEFAULT_CXX_FLAGS /Zi)
+EOF
+
+ CMAKE_FLAGS='
+ -DCMAKE_CXX_COMPILER=clang-cl
+ -DCMAKE_C_COMPILER=clang-cl
+ -DCMAKE_LINKER=lld-link
+ -DCMAKE_C_FLAGS="-fuse-ld=lld -Xclang -ivfsoverlay -Xclang $MOZ_FETCHES_DIR/vs/overlay.yaml"
+ -DCMAKE_CXX_FLAGS="-fuse-ld=lld -EHsc -Xclang -ivfsoverlay -Xclang $MOZ_FETCHES_DIR/vs/overlay.yaml"
+ -DCMAKE_RC_COMPILER=llvm-rc
+ -DCMAKE_MT=llvm-mt
+ -DCMAKE_SYSTEM_NAME=Windows
+ -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded
+ '
+ ;;
+esac
+
+eval cmake \
+ -GNinja \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DBUILD_SHARED_LIBS=Off \
+ $CMAKE_FLAGS
+
+ninja -v
+
+cd ..
+tar -caf winchecksec.tar.zst winchecksec/winchecksec${SUFFIX}
+cp winchecksec.tar.zst $UPLOAD_DIR/
diff --git a/taskcluster/scripts/misc/build-wine.sh b/taskcluster/scripts/misc/build-wine.sh
new file mode 100755
index 0000000000..e292fd2e1e
--- /dev/null
+++ b/taskcluster/scripts/misc/build-wine.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+set -x -e -v
+
+WORKSPACE=$HOME/workspace
+INSTALL_DIR=$WORKSPACE/wine
+
+mkdir -p $INSTALL_DIR
+mkdir -p $WORKSPACE/build/wine
+mkdir -p $WORKSPACE/build/wine64
+
+cd $WORKSPACE/build/wine64
+$MOZ_FETCHES_DIR/wine-source/configure --enable-win64 --without-x --without-freetype --prefix=$INSTALL_DIR/
+make -j$(nproc)
+
+cd $WORKSPACE/build/wine
+$MOZ_FETCHES_DIR/wine-source/configure --with-wine64=../wine64 --without-x --without-freetype --prefix=$INSTALL_DIR/
+make -j$(nproc)
+make install
+
+cd $WORKSPACE/build/wine64
+make install
+
+# --------------
+
+cd $WORKSPACE/
+tar caf wine.tar.zst wine
+
+mkdir -p $UPLOAD_DIR
+cp wine.tar.* $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/build-xar-linux.sh b/taskcluster/scripts/misc/build-xar-linux.sh
new file mode 100755
index 0000000000..5c1706b10e
--- /dev/null
+++ b/taskcluster/scripts/misc/build-xar-linux.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+set -x -e -v
+
+# This script is for building xar for Linux.
+mkdir -p $UPLOAD_DIR
+
+export PATH=$PATH:$MOZ_FETCHES_DIR/clang/bin
+cd $MOZ_FETCHES_DIR/xar/xar
+
+./autogen.sh --prefix=/builds/worker --enable-static
+make_flags="-j$(nproc)"
+make $make_flags
+
+cd $(mktemp -d)
+mkdir xar
+
+cp $MOZ_FETCHES_DIR/xar/xar/src/xar ./xar/xar
+tar caf $UPLOAD_DIR/xar.tar.zst ./xar
diff --git a/taskcluster/scripts/misc/fetch-chromium.py b/taskcluster/scripts/misc/fetch-chromium.py
new file mode 100644
index 0000000000..d9a03261d1
--- /dev/null
+++ b/taskcluster/scripts/misc/fetch-chromium.py
@@ -0,0 +1,235 @@
+#!/usr/bin/python3 -u
+# -*- coding: utf-8 -*-
+
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+"""
+This script downloads the latest chromium build (or a manually
+defined version) for a given platform. It then uploads the build,
+with the revision of the build stored in a REVISION file.
+"""
+
+import argparse
+import errno
+import os
+import shutil
+import subprocess
+import tempfile
+
+import requests
+from redo import retriable
+
+LAST_CHANGE_URL = (
+ # formatted with platform
+ "https://www.googleapis.com/download/storage/v1/b/"
+ "chromium-browser-snapshots/o/{}%2FLAST_CHANGE?alt=media"
+)
+
+CHROMIUM_BASE_URL = (
+ # formatted with (platform/revision/archive)
+ "https://www.googleapis.com/download/storage/v1/b/"
+ "chromium-browser-snapshots/o/{}%2F{}%2F{}?alt=media"
+)
+
+
+CHROMIUM_INFO = {
+ "linux": {
+ "platform": "Linux_x64",
+ "chromium": "chrome-linux.zip",
+ "result": "chromium-linux.tar.bz2",
+ "chromedriver": "chromedriver_linux64.zip",
+ },
+ "win32": {
+ "platform": "Win",
+ "chromium": "chrome-win.zip",
+ "result": "chromium-win32.tar.bz2",
+ "chromedriver": "chromedriver_win32.zip",
+ },
+ "win64": {
+ "platform": "Win",
+ "chromium": "chrome-win.zip",
+ "result": "chromium-win64.tar.bz2",
+ "chromedriver": "chromedriver_win32.zip",
+ },
+ "mac": {
+ "platform": "Mac",
+ "chromium": "chrome-mac.zip",
+ "result": "chromium-mac.tar.bz2",
+ "chromedriver": "chromedriver_mac64.zip",
+ },
+}
+
+
+def log(msg):
+ print("build-chromium: %s" % msg)
+
+
+@retriable(attempts=7, sleeptime=5, sleepscale=2)
+def fetch_file(url, filepath):
+ """Download a file from the given url to a given file."""
+ size = 4096
+ r = requests.get(url, stream=True)
+ r.raise_for_status()
+
+ with open(filepath, "wb") as fd:
+ for chunk in r.iter_content(size):
+ fd.write(chunk)
+
+
+def unzip(zippath, target):
+ """Unzips an archive to the target location."""
+ log("Unpacking archive at: %s to: %s" % (zippath, target))
+ unzip_command = ["unzip", "-q", "-o", zippath, "-d", target]
+ subprocess.check_call(unzip_command)
+
+
+@retriable(attempts=7, sleeptime=5, sleepscale=2)
+def fetch_chromium_revision(platform):
+ """Get the revision of the latest chromium build."""
+ chromium_platform = CHROMIUM_INFO[platform]["platform"]
+ revision_url = LAST_CHANGE_URL.format(chromium_platform)
+
+ log("Getting revision number for latest %s chromium build..." % chromium_platform)
+
+ # Expecting a file with a single number indicating the latest
+ # chromium build with a chromedriver that we can download
+ r = requests.get(revision_url, timeout=30)
+ r.raise_for_status()
+
+ chromium_revision = r.content.decode("utf-8")
+ return chromium_revision.strip()
+
+
+def fetch_chromium_build(platform, revision, zippath):
+ """Download a chromium build for a given revision, or the latest."""
+ if not revision:
+ revision = fetch_chromium_revision(platform)
+
+ download_platform = CHROMIUM_INFO[platform]["platform"]
+ download_url = CHROMIUM_BASE_URL.format(
+ download_platform, revision, CHROMIUM_INFO[platform]["chromium"]
+ )
+
+ log("Downloading %s chromium build revision %s..." % (download_platform, revision))
+ log(download_url)
+ fetch_file(download_url, zippath)
+ return revision
+
+
+def fetch_chromedriver(platform, revision, chromium_dir):
+ """Get the chromedriver for the given revision and repackage it."""
+ download_url = CHROMIUM_BASE_URL.format(
+ CHROMIUM_INFO[platform]["platform"],
+ revision,
+ CHROMIUM_INFO[platform]["chromedriver"],
+ )
+
+ tmpzip = os.path.join(tempfile.mkdtemp(), "cd-tmp.zip")
+ log("Downloading chromedriver from %s" % download_url)
+ fetch_file(download_url, tmpzip)
+
+ tmppath = tempfile.mkdtemp()
+ unzip(tmpzip, tmppath)
+
+ # Find the chromedriver then copy it to the chromium directory
+ cd_path = None
+ for dirpath, _, filenames in os.walk(tmppath):
+ for filename in filenames:
+ if filename == "chromedriver" or filename == "chromedriver.exe":
+ cd_path = os.path.join(dirpath, filename)
+ break
+ if cd_path is not None:
+ break
+ if cd_path is None:
+ raise Exception("Could not find chromedriver binary in %s" % tmppath)
+ log("Copying chromedriver from: %s to: %s" % (cd_path, chromium_dir))
+ shutil.copy(cd_path, chromium_dir)
+
+
+def build_chromium_archive(platform, revision=None):
+ """
+ Download and store a chromium build for a given platform.
+
+ Retrieves either the latest version, or uses a pre-defined version if
+ the `--revision` option is given a revision.
+ """
+ upload_dir = os.environ.get("UPLOAD_DIR")
+ if upload_dir:
+ # Create the upload directory if it doesn't exist.
+ try:
+ log("Creating upload directory in %s..." % os.path.abspath(upload_dir))
+ os.makedirs(upload_dir)
+ except OSError as e:
+ if e.errno != errno.EEXIST:
+ raise
+
+ # Make a temporary location for the file
+ tmppath = tempfile.mkdtemp()
+ tmpzip = os.path.join(tmppath, "tmp-chromium.zip")
+
+ revision = fetch_chromium_build(platform, revision, tmpzip)
+
+ # Unpack archive in `tmpzip` to store the revision number and
+ # the chromedriver
+ unzip(tmpzip, tmppath)
+
+ dirs = [
+ d
+ for d in os.listdir(tmppath)
+ if os.path.isdir(os.path.join(tmppath, d)) and d.startswith("chrome-")
+ ]
+
+ if len(dirs) > 1:
+ raise Exception(
+ "Too many directories starting with `chrome-` after extracting."
+ )
+ elif len(dirs) == 0:
+ raise Exception(
+ "Could not find any directories after extraction of chromium zip."
+ )
+
+ chromium_dir = os.path.join(tmppath, dirs[0])
+ revision_file = os.path.join(chromium_dir, ".REVISION")
+ with open(revision_file, "w+") as f:
+ f.write(str(revision))
+
+ # Get and store the chromedriver
+ fetch_chromedriver(platform, revision, chromium_dir)
+
+ tar_file = CHROMIUM_INFO[platform]["result"]
+ tar_command = ["tar", "cjf", tar_file, "-C", tmppath, dirs[0]]
+ log("Added revision to %s file." % revision_file)
+
+ log("Tarring with the command: %s" % str(tar_command))
+ subprocess.check_call(tar_command)
+
+ upload_dir = os.environ.get("UPLOAD_DIR")
+ if upload_dir:
+ # Move the tarball to the output directory for upload.
+ log("Moving %s to the upload directory..." % tar_file)
+ shutil.copy(tar_file, os.path.join(upload_dir, tar_file))
+
+ shutil.rmtree(tmppath)
+
+
+def parse_args():
+ """Read command line arguments and return options."""
+ parser = argparse.ArgumentParser()
+ parser.add_argument(
+ "--platform", help="Platform version of chromium to build.", required=True
+ )
+ parser.add_argument(
+ "--revision",
+ help="Revision of chromium to build to get. "
+ "(Defaults to the newest chromium build).",
+ default=None,
+ )
+
+ return parser.parse_args()
+
+
+if __name__ == "__main__":
+ args = vars(parse_args())
+ build_chromium_archive(**args)
diff --git a/taskcluster/scripts/misc/fetch-content b/taskcluster/scripts/misc/fetch-content
new file mode 100755
index 0000000000..f3160fad5d
--- /dev/null
+++ b/taskcluster/scripts/misc/fetch-content
@@ -0,0 +1,881 @@
+#!/usr/bin/python3 -u
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import argparse
+import bz2
+import concurrent.futures
+import contextlib
+import datetime
+import gzip
+import hashlib
+import json
+import lzma
+import multiprocessing
+import os
+import pathlib
+import random
+import re
+import stat
+import subprocess
+import sys
+import tarfile
+import tempfile
+import time
+import urllib.parse
+import urllib.request
+import zipfile
+
+try:
+ import zstandard
+except ImportError:
+ zstandard = None
+
+try:
+ import certifi
+except ImportError:
+ certifi = None
+
+
+CONCURRENCY = multiprocessing.cpu_count()
+
+
+def log(msg):
+ print(msg, file=sys.stderr)
+ sys.stderr.flush()
+
+
+class IntegrityError(Exception):
+ """Represents an integrity error when downloading a URL."""
+
+
+def ZstdCompressor(*args, **kwargs):
+ if not zstandard:
+ raise ValueError("zstandard Python package not available")
+ return zstandard.ZstdCompressor(*args, **kwargs)
+
+
+def ZstdDecompressor(*args, **kwargs):
+ if not zstandard:
+ raise ValueError("zstandard Python package not available")
+ return zstandard.ZstdDecompressor(*args, **kwargs)
+
+
+@contextlib.contextmanager
+def rename_after_close(fname, *args, **kwargs):
+ """
+ Context manager that opens a temporary file to use as a writer,
+ and closes the file on context exit, renaming it to the expected
+ file name in case of success, or removing it in case of failure.
+
+ Takes the same options as open(), but must be used as a context
+ manager.
+ """
+ path = pathlib.Path(fname)
+ tmp = path.with_name("%s.tmp" % path.name)
+ try:
+ with tmp.open(*args, **kwargs) as fh:
+ yield fh
+ except Exception:
+ tmp.unlink()
+ raise
+ else:
+ tmp.rename(fname)
+
+
+# The following is copied from
+# https://github.com/mozilla-releng/redo/blob/6d07678a014e0c525e54a860381a165d34db10ff/redo/__init__.py#L15-L85
+def retrier(attempts=5, sleeptime=10, max_sleeptime=300, sleepscale=1.5, jitter=1):
+ """
+ A generator function that sleeps between retries, handles exponential
+ backoff and jitter. The action you are retrying is meant to run after
+ retrier yields.
+
+ At each iteration, we sleep for sleeptime + random.randint(-jitter, jitter).
+ Afterwards sleeptime is multiplied by sleepscale for the next iteration.
+
+ Args:
+ attempts (int): maximum number of times to try; defaults to 5
+ sleeptime (float): how many seconds to sleep between tries; defaults to
+ 60s (one minute)
+ max_sleeptime (float): the longest we'll sleep, in seconds; defaults to
+ 300s (five minutes)
+ sleepscale (float): how much to multiply the sleep time by each
+ iteration; defaults to 1.5
+ jitter (int): random jitter to introduce to sleep time each iteration.
+ the amount is chosen at random between [-jitter, +jitter]
+ defaults to 1
+
+ Yields:
+ None, a maximum of `attempts` number of times
+
+ Example:
+ >>> n = 0
+ >>> for _ in retrier(sleeptime=0, jitter=0):
+ ... if n == 3:
+ ... # We did the thing!
+ ... break
+ ... n += 1
+ >>> n
+ 3
+
+ >>> n = 0
+ >>> for _ in retrier(sleeptime=0, jitter=0):
+ ... if n == 6:
+ ... # We did the thing!
+ ... break
+ ... n += 1
+ ... else:
+ ... print("max tries hit")
+ max tries hit
+ """
+ jitter = jitter or 0 # py35 barfs on the next line if jitter is None
+ if jitter > sleeptime:
+ # To prevent negative sleep times
+ raise Exception(
+ "jitter ({}) must be less than sleep time ({})".format(jitter, sleeptime)
+ )
+
+ sleeptime_real = sleeptime
+ for _ in range(attempts):
+ log("attempt %i/%i" % (_ + 1, attempts))
+
+ yield sleeptime_real
+
+ if jitter:
+ sleeptime_real = sleeptime + random.randint(-jitter, jitter)
+ # our jitter should scale along with the sleeptime
+ jitter = int(jitter * sleepscale)
+ else:
+ sleeptime_real = sleeptime
+
+ sleeptime *= sleepscale
+
+ if sleeptime_real > max_sleeptime:
+ sleeptime_real = max_sleeptime
+
+ # Don't need to sleep the last time
+ if _ < attempts - 1:
+ log(
+ "sleeping for %.2fs (attempt %i/%i)" % (sleeptime_real, _ + 1, attempts)
+ )
+ time.sleep(sleeptime_real)
+
+
+def stream_download(url, sha256=None, size=None):
+ """Download a URL to a generator, optionally with content verification.
+
+ If ``sha256`` or ``size`` are defined, the downloaded URL will be
+ validated against those requirements and ``IntegrityError`` will be
+ raised if expectations do not match.
+
+ Because verification cannot occur until the file is completely downloaded
+ it is recommended for consumers to not do anything meaningful with the
+ data if content verification is being used. To securely handle retrieved
+ content, it should be streamed to a file or memory and only operated
+ on after the generator is exhausted without raising.
+ """
+ log("Downloading %s" % url)
+
+ h = hashlib.sha256()
+ length = 0
+
+ t0 = time.time()
+ with urllib.request.urlopen(
+ url, timeout=60, cafile=certifi.where()
+ ) if certifi else urllib.request.urlopen(url, timeout=60) as fh:
+ if not url.endswith(".gz") and fh.info().get("Content-Encoding") == "gzip":
+ fh = gzip.GzipFile(fileobj=fh)
+
+ while True:
+ chunk = fh.read(65536)
+ if not chunk:
+ break
+
+ h.update(chunk)
+ length += len(chunk)
+
+ yield chunk
+
+ duration = time.time() - t0
+ digest = h.hexdigest()
+
+ log(
+ "%s resolved to %d bytes with sha256 %s in %.3fs"
+ % (url, length, digest, duration)
+ )
+
+ if size:
+ if size == length:
+ log("Verified size of %s" % url)
+ else:
+ raise IntegrityError(
+ "size mismatch on %s: wanted %d; got %d" % (url, size, length)
+ )
+
+ if sha256:
+ if digest == sha256:
+ log("Verified sha256 integrity of %s" % url)
+ else:
+ raise IntegrityError(
+ "sha256 mismatch on %s: wanted %s; got %s" % (url, sha256, digest)
+ )
+
+
+def download_to_path(url, path, sha256=None, size=None):
+ """Download a URL to a filesystem path, possibly with verification."""
+
+ # We download to a temporary file and rename at the end so there's
+ # no chance of the final file being partially written or containing
+ # bad data.
+ try:
+ path.unlink()
+ except FileNotFoundError:
+ pass
+
+ for _ in retrier(attempts=5, sleeptime=60):
+ try:
+ log("Downloading %s to %s" % (url, path))
+
+ with rename_after_close(path, "wb") as fh:
+ for chunk in stream_download(url, sha256=sha256, size=size):
+ fh.write(chunk)
+
+ return
+ except IntegrityError:
+ raise
+ except Exception as e:
+ log("Download failed: {}".format(e))
+ continue
+
+ raise Exception("Download failed, no more retries!")
+
+
+def download_to_memory(url, sha256=None, size=None):
+ """Download a URL to memory, possibly with verification."""
+
+ data = b""
+ for _ in retrier(attempts=5, sleeptime=60):
+ try:
+ log("Downloading %s" % (url))
+
+ for chunk in stream_download(url, sha256=sha256, size=size):
+ data += chunk
+
+ return data
+ except IntegrityError:
+ raise
+ except Exception as e:
+ log("Download failed: {}".format(e))
+ continue
+
+ raise Exception("Download failed, no more retries!")
+
+
+def gpg_verify_path(path: pathlib.Path, public_key_data: bytes, signature_data: bytes):
+ """Verify that a filesystem path verifies using GPG.
+
+ Takes a Path defining a file to verify. ``public_key_data`` contains
+ bytes with GPG public key data. ``signature_data`` contains a signed
+ GPG document to use with ``gpg --verify``.
+ """
+ log("Validating GPG signature of %s" % path)
+ log("GPG key data:\n%s" % public_key_data.decode("ascii"))
+
+ with tempfile.TemporaryDirectory() as td:
+ try:
+ # --batch since we're running unattended.
+ gpg_args = ["gpg", "--homedir", td, "--batch"]
+
+ log("Importing GPG key...")
+ subprocess.run(gpg_args + ["--import"], input=public_key_data, check=True)
+
+ log("Verifying GPG signature...")
+ subprocess.run(
+ gpg_args + ["--verify", "-", "%s" % path],
+ input=signature_data,
+ check=True,
+ )
+
+ log("GPG signature verified!")
+ finally:
+ # There is a race between the agent self-terminating and
+ # shutil.rmtree() from the temporary directory cleanup that can
+ # lead to exceptions. Kill the agent before cleanup to prevent this.
+ env = dict(os.environ)
+ env["GNUPGHOME"] = td
+ subprocess.run(["gpgconf", "--kill", "gpg-agent"], env=env)
+
+
+def open_tar_stream(path: pathlib.Path):
+ """"""
+ if path.suffix == ".bz2":
+ return bz2.open(str(path), "rb")
+ elif path.suffix in (".gz", ".tgz") :
+ return gzip.open(str(path), "rb")
+ elif path.suffix == ".xz":
+ return lzma.open(str(path), "rb")
+ elif path.suffix == ".zst":
+ dctx = ZstdDecompressor()
+ return dctx.stream_reader(path.open("rb"))
+ elif path.suffix == ".tar":
+ return path.open("rb")
+ else:
+ raise ValueError("unknown archive format for tar file: %s" % path)
+
+
+def archive_type(path: pathlib.Path):
+ """Attempt to identify a path as an extractable archive."""
+ if path.suffixes[-2:-1] == [".tar"] or path.suffixes[-1:] == [".tgz"]:
+ return "tar"
+ elif path.suffix == ".zip":
+ return "zip"
+ else:
+ return None
+
+
+def extract_archive(path, dest_dir, typ):
+ """Extract an archive to a destination directory."""
+
+ # Resolve paths to absolute variants.
+ path = path.resolve()
+ dest_dir = dest_dir.resolve()
+
+ log("Extracting %s to %s" % (path, dest_dir))
+ t0 = time.time()
+
+ # We pipe input to the decompressor program so that we can apply
+ # custom decompressors that the program may not know about.
+ if typ == "tar":
+ ifh = open_tar_stream(path)
+ # On Windows, the tar program doesn't support things like symbolic
+ # links, while Windows actually support them. The tarfile module in
+ # python does. So use that. But since it's significantly slower than
+ # the tar program on Linux, only use tarfile on Windows (tarfile is
+ # also not much slower on Windows, presumably because of the
+ # notoriously bad I/O).
+ if sys.platform == "win32":
+ tar = tarfile.open(fileobj=ifh, mode="r|")
+ tar.extractall(str(dest_dir))
+ args = []
+ else:
+ args = ["tar", "xf", "-"]
+ pipe_stdin = True
+ elif typ == "zip":
+ # unzip from stdin has wonky behavior. We don't use a pipe for it.
+ ifh = open(os.devnull, "rb")
+ args = ["unzip", "-o", str(path)]
+ pipe_stdin = False
+ else:
+ raise ValueError("unknown archive format: %s" % path)
+
+ if args:
+ with ifh, subprocess.Popen(
+ args, cwd=str(dest_dir), bufsize=0, stdin=subprocess.PIPE
+ ) as p:
+ while True:
+ if not pipe_stdin:
+ break
+
+ chunk = ifh.read(131072)
+ if not chunk:
+ break
+
+ p.stdin.write(chunk)
+
+ if p.returncode:
+ raise Exception("%r exited %d" % (args, p.returncode))
+
+ log("%s extracted in %.3fs" % (path, time.time() - t0))
+
+
+def repack_archive(
+ orig: pathlib.Path, dest: pathlib.Path, strip_components=0, prefix=""
+):
+ assert orig != dest
+ log("Repacking as %s" % dest)
+ orig_typ = archive_type(orig)
+ typ = archive_type(dest)
+ if not orig_typ:
+ raise Exception("Archive type not supported for %s" % orig.name)
+ if not typ:
+ raise Exception("Archive type not supported for %s" % dest.name)
+
+ if dest.suffixes[-2:] != [".tar", ".zst"]:
+ raise Exception("Only producing .tar.zst archives is supported.")
+
+ if strip_components or prefix:
+
+ def filter(name):
+ if strip_components:
+ stripped = "/".join(name.split("/")[strip_components:])
+ if not stripped:
+ raise Exception(
+ "Stripping %d components would remove files" % strip_components
+ )
+ name = stripped
+ return prefix + name
+
+ else:
+ filter = None
+
+ with rename_after_close(dest, "wb") as fh:
+ ctx = ZstdCompressor()
+ if orig_typ == "zip":
+ assert typ == "tar"
+ zip = zipfile.ZipFile(orig)
+ # Convert the zip stream to a tar on the fly.
+ with ctx.stream_writer(fh) as compressor, tarfile.open(
+ fileobj=compressor, mode="w:"
+ ) as tar:
+ for zipinfo in zip.infolist():
+ if zipinfo.is_dir():
+ continue
+ tarinfo = tarfile.TarInfo()
+ filename = zipinfo.filename
+ tarinfo.name = filter(filename) if filter else filename
+ tarinfo.size = zipinfo.file_size
+ # Zip files don't have any knowledge of the timezone
+ # they were created in. Which is not really convenient to
+ # reliably convert to a timestamp. But we don't really
+ # care about accuracy, but rather about reproducibility,
+ # so we pick UTC.
+ time = datetime.datetime(
+ *zipinfo.date_time, tzinfo=datetime.timezone.utc
+ )
+ tarinfo.mtime = time.timestamp()
+ # 0 is MS-DOS, 3 is UNIX. Only in the latter case do we
+ # get anything useful for the tar file mode.
+ if zipinfo.create_system == 3:
+ mode = zipinfo.external_attr >> 16
+ else:
+ mode = 0o0644
+ tarinfo.mode = stat.S_IMODE(mode)
+ if stat.S_ISLNK(mode):
+ tarinfo.type = tarfile.SYMTYPE
+ tarinfo.linkname = zip.read(filename).decode()
+ tar.addfile(tarinfo, zip.open(filename))
+ elif stat.S_ISREG(mode) or stat.S_IFMT(mode) == 0:
+ tar.addfile(tarinfo, zip.open(filename))
+ else:
+ raise Exception("Unsupported file mode %o" % stat.S_IFMT(mode))
+
+ elif orig_typ == "tar":
+ if typ == "zip":
+ raise Exception("Repacking a tar to zip is not supported")
+ assert typ == "tar"
+
+ ifh = open_tar_stream(orig)
+ if filter:
+ # To apply the filter, we need to open the tar stream and
+ # tweak it.
+ origtar = tarfile.open(fileobj=ifh, mode="r|")
+ with ctx.stream_writer(fh) as compressor, tarfile.open(
+ fileobj=compressor,
+ mode="w:",
+ format=origtar.format,
+ ) as tar:
+ for tarinfo in origtar:
+ if tarinfo.isdir():
+ continue
+ tarinfo.name = filter(tarinfo.name)
+ if "path" in tarinfo.pax_headers:
+ tarinfo.pax_headers["path"] = filter(
+ tarinfo.pax_headers["path"]
+ )
+ if tarinfo.isfile():
+ tar.addfile(tarinfo, origtar.extractfile(tarinfo))
+ else:
+ tar.addfile(tarinfo)
+ else:
+ # We only change compression here. The tar stream is unchanged.
+ ctx.copy_stream(ifh, fh)
+
+
+def fetch_and_extract(url, dest_dir, extract=True, sha256=None, size=None):
+ """Fetch a URL and extract it to a destination path.
+
+ If the downloaded URL is an archive, it is extracted automatically
+ and the archive is deleted. Otherwise the file remains in place in
+ the destination directory.
+ """
+
+ basename = urllib.parse.urlparse(url).path.split("/")[-1]
+ dest_path = dest_dir / basename
+
+ download_to_path(url, dest_path, sha256=sha256, size=size)
+
+ if not extract:
+ return
+
+ typ = archive_type(dest_path)
+ if typ:
+ extract_archive(dest_path, dest_dir, typ)
+ log("Removing %s" % dest_path)
+ dest_path.unlink()
+
+
+def fetch_urls(downloads):
+ """Fetch URLs pairs to a pathlib.Path."""
+ with concurrent.futures.ThreadPoolExecutor(CONCURRENCY) as e:
+ fs = []
+
+ for download in downloads:
+ fs.append(e.submit(fetch_and_extract, *download))
+
+ for f in fs:
+ f.result()
+
+
+def _git_checkout_github_archive(dest_path: pathlib.Path, repo: str,
+ commit: str, prefix: str):
+ 'Use github archive generator to speed up github git repo cloning'
+ repo = repo.rstrip('/')
+ github_url = '{repo}/archive/{commit}.tar.gz'.format(**locals())
+
+ with tempfile.TemporaryDirectory() as td:
+ temp_dir = pathlib.Path(td)
+ dl_dest = temp_dir / 'archive.tar.gz'
+ download_to_path(github_url, dl_dest)
+ repack_archive(dl_dest, dest_path,
+ strip_components=1,
+ prefix=prefix + '/')
+
+
+def _github_submodule_required(repo: str, commit: str):
+ 'Use github API to check if submodules are used'
+ url = '{repo}/blob/{commit}/.gitmodules'.format(**locals())
+ try:
+ status_code = urllib.request.urlopen(url).getcode()
+ return status_code == 200
+ except:
+ return False
+
+
+def git_checkout_archive(
+ dest_path: pathlib.Path,
+ repo: str,
+ commit: str,
+ prefix=None,
+ ssh_key=None,
+ include_dot_git=False,
+):
+ """Produce an archive of the files comprising a Git checkout."""
+ dest_path.parent.mkdir(parents=True, exist_ok=True)
+
+ if not prefix:
+ prefix = repo.rstrip("/").rsplit("/", 1)[-1]
+
+ if dest_path.suffixes[-2:] != [".tar", ".zst"]:
+ raise Exception("Only producing .tar.zst archives is supported.")
+
+ if repo.startswith('https://github.com/'):
+ if not include_dot_git and not _github_submodule_required(repo, commit):
+ log("Using github archive service to speedup archive creation")
+ # Always log sha1 info, either from commit or resolved from repo.
+ if re.match(r"^[a-fA-F0-9]{40}$", commit):
+ revision = commit
+ else:
+ ref_output = subprocess.check_output(["git", "ls-remote", repo,
+ 'refs/heads/' + commit])
+ revision, _ = ref_output.decode().split(maxsplit=1)
+ log("Fetching revision {}".format(revision))
+ return _git_checkout_github_archive(dest_path, repo, commit, prefix)
+
+ with tempfile.TemporaryDirectory() as td:
+ temp_dir = pathlib.Path(td)
+
+ git_dir = temp_dir / prefix
+
+ # This could be faster with a shallow clone. However, Git requires a ref
+ # to initiate a clone. Since the commit-ish may not refer to a ref, we
+ # simply perform a full clone followed by a checkout.
+ print("cloning %s to %s" % (repo, git_dir))
+
+ env = os.environ.copy()
+ keypath = ""
+ if ssh_key:
+ taskcluster_secret_url = api(
+ os.environ.get("TASKCLUSTER_PROXY_URL"),
+ "secrets",
+ "v1",
+ "secret/{keypath}".format(keypath=ssh_key),
+ )
+ taskcluster_secret = b"".join(stream_download(taskcluster_secret_url))
+ taskcluster_secret = json.loads(taskcluster_secret)
+ sshkey = taskcluster_secret["secret"]["ssh_privkey"]
+
+ keypath = temp_dir.joinpath("ssh-key")
+ keypath.write_text(sshkey)
+ keypath.chmod(0o600)
+
+ env = {
+ "GIT_SSH_COMMAND": "ssh -o 'StrictHostKeyChecking no' -i {keypath}".format(
+ keypath=keypath
+ )
+ }
+
+ subprocess.run(["git", "clone", "-n", repo, str(git_dir)], check=True, env=env)
+
+ # Always use a detached head so that git prints out what it checked out.
+ subprocess.run(
+ ["git", "checkout", "--detach", commit], cwd=str(git_dir), check=True
+ )
+
+ # When including the .git, we want --depth 1, but a direct clone would not
+ # necessarily be able to give us the right commit.
+ if include_dot_git:
+ initial_clone = git_dir.with_name(git_dir.name + ".orig")
+ git_dir.rename(initial_clone)
+ subprocess.run(
+ [
+ "git",
+ "clone",
+ "file://" + str(initial_clone),
+ str(git_dir),
+ "--depth",
+ "1",
+ ],
+ check=True,
+ )
+ subprocess.run(
+ ["git", "remote", "set-url", "origin", repo],
+ cwd=str(git_dir),
+ check=True,
+ )
+
+ # --depth 1 can induce more work on the server side, so only use it for
+ # submodule initialization when we want to keep the .git directory.
+ depth = ["--depth", "1"] if include_dot_git else []
+ subprocess.run(
+ ["git", "submodule", "update", "--init"] + depth,
+ cwd=str(git_dir),
+ check=True,
+ )
+
+ if keypath:
+ os.remove(keypath)
+
+ print("creating archive %s of commit %s" % (dest_path, commit))
+ exclude_dot_git = [] if include_dot_git else ["--exclude=.git"]
+ proc = subprocess.Popen(
+ [
+ "tar",
+ "cf",
+ "-",
+ ]
+ + exclude_dot_git
+ + [
+ "-C",
+ str(temp_dir),
+ prefix,
+ ],
+ stdout=subprocess.PIPE,
+ )
+
+ with rename_after_close(dest_path, "wb") as out:
+ ctx = ZstdCompressor()
+ ctx.copy_stream(proc.stdout, out)
+
+ proc.wait()
+
+
+def command_git_checkout_archive(args):
+ dest = pathlib.Path(args.dest)
+
+ try:
+ git_checkout_archive(
+ dest,
+ args.repo,
+ args.commit,
+ prefix=args.path_prefix,
+ ssh_key=args.ssh_key_secret,
+ include_dot_git=args.include_dot_git,
+ )
+ except Exception:
+ try:
+ dest.unlink()
+ except FileNotFoundError:
+ pass
+
+ raise
+
+
+def command_static_url(args):
+ gpg_sig_url = args.gpg_sig_url
+ gpg_env_key = args.gpg_key_env
+
+ if bool(gpg_sig_url) != bool(gpg_env_key):
+ print("--gpg-sig-url and --gpg-key-env must both be defined")
+ return 1
+
+ if gpg_sig_url:
+ gpg_signature = b"".join(stream_download(gpg_sig_url))
+ gpg_key = os.environb[gpg_env_key.encode("ascii")]
+
+ dest = pathlib.Path(args.dest)
+ dest.parent.mkdir(parents=True, exist_ok=True)
+
+ basename = urllib.parse.urlparse(args.url).path.split("/")[-1]
+ if basename.endswith("".join(dest.suffixes)):
+ dl_dest = dest
+ else:
+ dl_dest = dest.parent / basename
+
+ try:
+ download_to_path(args.url, dl_dest, sha256=args.sha256, size=args.size)
+
+ if gpg_sig_url:
+ gpg_verify_path(dl_dest, gpg_key, gpg_signature)
+
+ if dl_dest != dest or args.strip_components or args.add_prefix:
+ repack_archive(dl_dest, dest, args.strip_components, args.add_prefix)
+ except Exception:
+ try:
+ dl_dest.unlink()
+ except FileNotFoundError:
+ pass
+
+ raise
+
+ if dl_dest != dest:
+ log("Removing %s" % dl_dest)
+ dl_dest.unlink()
+
+
+def api(root_url, service, version, path):
+ # taskcluster-lib-urls is not available when this script runs, so
+ # simulate its behavior:
+ return "{root_url}/api/{service}/{version}/{path}".format(
+ root_url=root_url, service=service, version=version, path=path
+ )
+
+
+def get_hash(fetch, root_url):
+ path = "task/{task}/artifacts/{artifact}".format(
+ task=fetch["task"], artifact="public/chain-of-trust.json"
+ )
+ url = api(root_url, "queue", "v1", path)
+ cot = json.loads(download_to_memory(url))
+ return cot["artifacts"][fetch["artifact"]]["sha256"]
+
+
+def command_task_artifacts(args):
+ start = time.monotonic()
+ fetches = json.loads(os.environ["MOZ_FETCHES"])
+ downloads = []
+ for fetch in fetches:
+ extdir = pathlib.Path(args.dest)
+ if "dest" in fetch:
+ # Note: normpath doesn't like pathlib.Path in python 3.5
+ extdir = pathlib.Path(os.path.normpath(str(extdir.joinpath(fetch["dest"]))))
+ extdir.mkdir(parents=True, exist_ok=True)
+ root_url = os.environ["TASKCLUSTER_ROOT_URL"]
+ sha256 = None
+ if fetch.get("verify-hash"):
+ sha256 = get_hash(fetch, root_url)
+ if fetch["artifact"].startswith("public/"):
+ path = "task/{task}/artifacts/{artifact}".format(
+ task=fetch["task"], artifact=fetch["artifact"]
+ )
+ url = api(root_url, "queue", "v1", path)
+ else:
+ url = ("{proxy_url}/api/queue/v1/task/{task}/artifacts/{artifact}").format(
+ proxy_url=os.environ["TASKCLUSTER_PROXY_URL"],
+ task=fetch["task"],
+ artifact=fetch["artifact"],
+ )
+ downloads.append((url, extdir, fetch["extract"], sha256))
+
+ fetch_urls(downloads)
+ end = time.monotonic()
+
+ perfherder_data = {
+ "framework": {"name": "build_metrics"},
+ "suites": [
+ {
+ "name": "fetch_content",
+ "value": end - start,
+ "lowerIsBetter": True,
+ "shouldAlert": False,
+ "subtests": [],
+ }
+ ],
+ }
+ print("PERFHERDER_DATA: {}".format(json.dumps(perfherder_data)), file=sys.stderr)
+
+
+def main():
+ parser = argparse.ArgumentParser()
+ subparsers = parser.add_subparsers(title="sub commands")
+
+ git_checkout = subparsers.add_parser(
+ "git-checkout-archive",
+ help="Obtain an archive of files from a Git repository checkout",
+ )
+ git_checkout.set_defaults(func=command_git_checkout_archive)
+ git_checkout.add_argument(
+ "--path-prefix", help="Prefix for paths in produced archive"
+ )
+ git_checkout.add_argument("repo", help="URL to Git repository to be cloned")
+ git_checkout.add_argument("commit", help="Git commit to check out")
+ git_checkout.add_argument("dest", help="Destination path of archive")
+ git_checkout.add_argument(
+ "--ssh-key-secret", help="The scope path of the ssh key to used for checkout"
+ )
+ git_checkout.add_argument(
+ "--include-dot-git", action="store_true", help="Include the .git directory"
+ )
+
+ url = subparsers.add_parser("static-url", help="Download a static URL")
+ url.set_defaults(func=command_static_url)
+ url.add_argument("--sha256", required=True, help="SHA-256 of downloaded content")
+ url.add_argument(
+ "--size", required=True, type=int, help="Size of downloaded content, in bytes"
+ )
+ url.add_argument(
+ "--gpg-sig-url",
+ help="URL containing signed GPG document validating " "URL to fetch",
+ )
+ url.add_argument(
+ "--gpg-key-env", help="Environment variable containing GPG key to validate"
+ )
+ url.add_argument(
+ "--strip-components",
+ type=int,
+ default=0,
+ help="Number of leading components to strip from file "
+ "names in the downloaded archive",
+ )
+ url.add_argument(
+ "--add-prefix",
+ default="",
+ help="Prefix to add to file names in the downloaded " "archive",
+ )
+ url.add_argument("url", help="URL to fetch")
+ url.add_argument("dest", help="Destination path")
+
+ artifacts = subparsers.add_parser("task-artifacts", help="Fetch task artifacts")
+ artifacts.set_defaults(func=command_task_artifacts)
+ artifacts.add_argument(
+ "-d",
+ "--dest",
+ default=os.environ.get("MOZ_FETCHES_DIR"),
+ help="Destination directory which will contain all "
+ "artifacts (defaults to $MOZ_FETCHES_DIR)",
+ )
+
+ args = parser.parse_args()
+
+ if not args.dest:
+ parser.error(
+ "no destination directory specified, either pass in --dest "
+ "or set $MOZ_FETCHES_DIR"
+ )
+
+ return args.func(args)
+
+
+if __name__ == "__main__":
+ sys.exit(main())
diff --git a/taskcluster/scripts/misc/get_vs.py b/taskcluster/scripts/misc/get_vs.py
new file mode 100755
index 0000000000..d630abedb8
--- /dev/null
+++ b/taskcluster/scripts/misc/get_vs.py
@@ -0,0 +1,111 @@
+#!/usr/bin/env python3
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import argparse
+import os
+import shutil
+import ssl
+from pathlib import Path
+from tempfile import TemporaryDirectory
+from urllib import request
+
+import certifi
+import yaml
+from buildconfig import topsrcdir
+from vsdownload import downloadPackages, extractPackages
+
+# Hack to hook certifi
+_urlopen = request.urlopen
+
+
+def urlopen(url, data=None):
+ return _urlopen(
+ url, data, context=ssl.create_default_context(cafile=certifi.where())
+ )
+
+
+request.urlopen = urlopen
+
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(
+ description="Download and build a Visual Studio artifact"
+ )
+ parser.add_argument("manifest", help="YAML manifest of the contents to download")
+ parser.add_argument("outdir", help="Output directory")
+ args = parser.parse_args()
+
+ out_dir = Path(args.outdir)
+ with open(Path(topsrcdir) / args.manifest) as f:
+ selected = yaml.safe_load(f.read())
+ with TemporaryDirectory(prefix="get_vs", dir=".") as tmpdir:
+ tmpdir = Path(tmpdir)
+ dl_cache = tmpdir / "cache"
+ downloadPackages(selected, dl_cache)
+ unpacked = tmpdir / "unpack"
+ extractPackages(selected, dl_cache, unpacked)
+ vfs = {}
+ # Fill the output directory with all the paths in lowercase form for
+ # cross-compiles.
+ for subpath in ("VC", "Windows Kits/10", "DIA SDK"):
+ dest = subpath
+ # When running on Windows, SDK files are extracted under Windows Kits,
+ # but on other platforms, they end up in Program Files/Windows Kits.
+ program_files_subpath = unpacked / "Program Files" / subpath
+ if program_files_subpath.exists():
+ subpath = program_files_subpath
+ else:
+ subpath = unpacked / subpath
+ dest = Path(dest)
+ for root, dirs, files in os.walk(subpath):
+ relpath = Path(root).relative_to(subpath)
+ for f in files:
+ path = Path(root) / f
+ mode = os.stat(path).st_mode
+ with open(path, "rb") as fh:
+ lower_f = f.lower()
+ # Ideally, we'd use the overlay for .libs too but as of
+ # writing it's still impractical to use, so lowercase
+ # them for now, that'll be enough.
+ if lower_f.endswith(".lib"):
+ f = lower_f
+ name = str(dest / relpath / f)
+ # Set executable flag on .exe files, the Firefox build
+ # system wants it.
+ if lower_f.endswith(".exe"):
+ mode |= (mode & 0o444) >> 2
+ print("Adding", name)
+ out_file = out_dir / name
+ out_file.parent.mkdir(parents=True, exist_ok=True)
+ with out_file.open("wb") as out_fh:
+ shutil.copyfileobj(fh, out_fh)
+ os.chmod(out_file, mode)
+ if lower_f.endswith((".h", ".idl")):
+ vfs.setdefault(str(dest / relpath), []).append(f)
+ # Create an overlay file for use with clang's -ivfsoverlay flag.
+ overlay = {
+ "version": 0,
+ "case-sensitive": False,
+ "root-relative": "overlay-dir",
+ "overlay-relative": True,
+ "roots": [
+ {
+ "name": p,
+ "type": "directory",
+ "contents": [
+ {
+ "name": f,
+ "type": "file",
+ "external-contents": f"{p}/{f}",
+ }
+ for f in files
+ ],
+ }
+ for p, files in vfs.items()
+ ],
+ }
+ overlay_yaml = out_dir / "overlay.yaml"
+ with overlay_yaml.open("w") as fh:
+ fh.write(yaml.dump(overlay))
diff --git a/taskcluster/scripts/misc/mingw-composition.patch b/taskcluster/scripts/misc/mingw-composition.patch
new file mode 100644
index 0000000000..40edf921d8
--- /dev/null
+++ b/taskcluster/scripts/misc/mingw-composition.patch
@@ -0,0 +1,50 @@
+diff --git a/mingw-w64-headers/include/windows.ui.composition.h b/mingw-w64-headers/include/windows.ui.composition.h
+index 9dac0f1..58872d5 100644
+--- a/mingw-w64-headers/include/windows.ui.composition.h
++++ b/mingw-w64-headers/include/windows.ui.composition.h
+@@ -4916,13 +4916,13 @@ namespace ABI {
+ ICompositionDrawingSurface : public IInspectable
+ {
+ virtual HRESULT STDMETHODCALLTYPE get_AlphaMode(
+- enum DirectXAlphaMode *value) = 0;
++ ABI::Windows::Graphics::DirectX::DirectXAlphaMode *value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_PixelFormat(
+- enum DirectXPixelFormat *value) = 0;
++ ABI::Windows::Graphics::DirectX::DirectXPixelFormat *value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_Size(
+- struct Size *value) = 0;
++ ABI::Windows::Foundation::Size *value) = 0;
+
+ };
+ }
+@@ -5704,8 +5704,8 @@ namespace ABI {
+ {
+ virtual HRESULT STDMETHODCALLTYPE CreateDrawingSurface(
+ struct Size pixels,
+- enum DirectXPixelFormat format,
+- enum DirectXAlphaMode mode,
++ ABI::Windows::Graphics::DirectX::DirectXPixelFormat format,
++ ABI::Windows::Graphics::DirectX::DirectXAlphaMode mode,
+ ABI::Windows::UI::Composition::ICompositionDrawingSurface **result) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE add_RenderingDeviceReplaced(
+@@ -9338,7 +9338,7 @@ namespace ABI {
+ boolean value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_Offset(
+- struct Vector3 *value) = 0;
++ ABI::Windows::Foundation::Numerics::Vector3 *value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE put_Offset(
+ struct Vector3 value) = 0;
+@@ -9383,7 +9383,7 @@ namespace ABI {
+ struct Vector3 value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE get_Size(
+- struct Vector2 *value) = 0;
++ ABI::Windows::Foundation::Numerics::Vector2 *value) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE put_Size(
+ struct Vector2 value) = 0;
diff --git a/taskcluster/scripts/misc/mingw-dispatchqueue.patch b/taskcluster/scripts/misc/mingw-dispatchqueue.patch
new file mode 100644
index 0000000000..70fd9be819
--- /dev/null
+++ b/taskcluster/scripts/misc/mingw-dispatchqueue.patch
@@ -0,0 +1,157 @@
+From 6e031273d1763ef1fd7acc11a6ed6c2a819c91ba Mon Sep 17 00:00:00 2001
+From: Tom Ritter <tom@ritter.vg>
+Date: Thu, 2 Feb 2023 15:51:46 -0500
+Subject: [PATCH 6/6] Add back IDispatcherQueueController
+
+---
+ mingw-w64-headers/include/windows.system.h | 127 +++++++++++++++++++++
+ 1 file changed, 127 insertions(+)
+
+diff --git a/mingw-w64-headers/include/windows.system.h b/mingw-w64-headers/include/windows.system.h
+index 688361148..1bb159a31 100644
+--- a/mingw-w64-headers/include/windows.system.h
++++ b/mingw-w64-headers/include/windows.system.h
+@@ -41,6 +41,22 @@ namespace ABI {
+ #endif /* __cplusplus */
+ #endif
+
++#ifndef ____x_ABI_CWindows_CSystem_CIDispatcherQueueController_FWD_DEFINED__
++#define ____x_ABI_CWindows_CSystem_CIDispatcherQueueController_FWD_DEFINED__
++typedef interface __x_ABI_CWindows_CSystem_CIDispatcherQueueController __x_ABI_CWindows_CSystem_CIDispatcherQueueController;
++#ifdef __cplusplus
++#define __x_ABI_CWindows_CSystem_CIDispatcherQueueController ABI::Windows::System::IDispatcherQueueController
++namespace ABI {
++ namespace Windows {
++ namespace System {
++ interface IDispatcherQueueController;
++ }
++ }
++}
++#endif /* __cplusplus */
++#endif
++
++
+ #ifndef ____x_ABI_CWindows_CSystem_CUser_FWD_DEFINED__
+ #define ____x_ABI_CWindows_CSystem_CUser_FWD_DEFINED__
+ #ifdef __cplusplus
+@@ -269,6 +285,117 @@ static __WIDL_INLINE HRESULT __x_ABI_CWindows_CSystem_CIUserChangedEventArgs_get
+ #endif /* ____x_ABI_CWindows_CSystem_CIUserChangedEventArgs_INTERFACE_DEFINED__ */
+ #endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */
+
++/*****************************************************************************
++ * IDispatcherQueueController interface
++ */
++#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x50000
++#ifndef ____x_ABI_CWindows_CSystem_CIDispatcherQueueController_INTERFACE_DEFINED__
++#define ____x_ABI_CWindows_CSystem_CIDispatcherQueueController_INTERFACE_DEFINED__
++
++DEFINE_GUID(IID___x_ABI_CWindows_CSystem_CIDispatcherQueueController, 0x22f34e66, 0x50db, 0x4e36, 0xa9,0x8d, 0x61,0xc0,0x1b,0x38,0x4d,0x20);
++#if defined(__cplusplus) && !defined(CINTERFACE)
++} /* extern "C" */
++namespace ABI {
++ namespace Windows {
++ namespace System {
++ MIDL_INTERFACE("22f34e66-50db-4e36-a98d-61c01b384d20")
++ IDispatcherQueueController : public IInspectable
++ {
++ };
++ }
++ }
++}
++extern "C" {
++#ifdef __CRT_UUID_DECL
++__CRT_UUID_DECL(__x_ABI_CWindows_CSystem_CIDispatcherQueueController, 0x22f34e66, 0x50db, 0x4e36, 0xa9,0x8d, 0x61,0xc0,0x1b,0x38,0x4d,0x20)
++#endif
++#else
++typedef struct __x_ABI_CWindows_CSystem_CIDispatcherQueueControllerVtbl {
++ BEGIN_INTERFACE
++
++ /*** IUnknown methods ***/
++ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
++ __x_ABI_CWindows_CSystem_CIDispatcherQueueController *This,
++ REFIID riid,
++ void **ppvObject);
++
++ ULONG (STDMETHODCALLTYPE *AddRef)(
++ __x_ABI_CWindows_CSystem_CIDispatcherQueueController *This);
++
++ ULONG (STDMETHODCALLTYPE *Release)(
++ __x_ABI_CWindows_CSystem_CIDispatcherQueueController *This);
++
++ /*** IInspectable methods ***/
++ HRESULT (STDMETHODCALLTYPE *GetIids)(
++ __x_ABI_CWindows_CSystem_CIDispatcherQueueController *This,
++ ULONG *iidCount,
++ IID **iids);
++
++ HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
++ __x_ABI_CWindows_CSystem_CIDispatcherQueueController *This,
++ HSTRING *className);
++
++ HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
++ __x_ABI_CWindows_CSystem_CIDispatcherQueueController *This,
++ TrustLevel *trustLevel);
++
++ END_INTERFACE
++} __x_ABI_CWindows_CSystem_CIDispatcherQueueControllerVtbl;
++
++interface __x_ABI_CWindows_CSystem_CIDispatcherQueueController {
++ CONST_VTBL __x_ABI_CWindows_CSystem_CIDispatcherQueueControllerVtbl* lpVtbl;
++};
++
++#ifdef COBJMACROS
++#ifndef WIDL_C_INLINE_WRAPPERS
++/*** IUnknown methods ***/
++#define __x_ABI_CWindows_CSystem_CIDispatcherQueueController_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
++#define __x_ABI_CWindows_CSystem_CIDispatcherQueueController_AddRef(This) (This)->lpVtbl->AddRef(This)
++#define __x_ABI_CWindows_CSystem_CIDispatcherQueueController_Release(This) (This)->lpVtbl->Release(This)
++/*** IInspectable methods ***/
++#define __x_ABI_CWindows_CSystem_CIDispatcherQueueController_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
++#define __x_ABI_CWindows_CSystem_CIDispatcherQueueController_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
++#define __x_ABI_CWindows_CSystem_CIDispatcherQueueController_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
++#else
++/*** IUnknown methods ***/
++static FORCEINLINE HRESULT __x_ABI_CWindows_CSystem_CIDispatcherQueueController_QueryInterface(__x_ABI_CWindows_CSystem_CIDispatcherQueueController* This,REFIID riid,void **ppvObject) {
++ return This->lpVtbl->QueryInterface(This,riid,ppvObject);
++}
++static FORCEINLINE ULONG __x_ABI_CWindows_CSystem_CIDispatcherQueueController_AddRef(__x_ABI_CWindows_CSystem_CIDispatcherQueueController* This) {
++ return This->lpVtbl->AddRef(This);
++}
++static FORCEINLINE ULONG __x_ABI_CWindows_CSystem_CIDispatcherQueueController_Release(__x_ABI_CWindows_CSystem_CIDispatcherQueueController* This) {
++ return This->lpVtbl->Release(This);
++}
++/*** IInspectable methods ***/
++static FORCEINLINE HRESULT __x_ABI_CWindows_CSystem_CIDispatcherQueueController_GetIids(__x_ABI_CWindows_CSystem_CIDispatcherQueueController* This,ULONG *iidCount,IID **iids) {
++ return This->lpVtbl->GetIids(This,iidCount,iids);
++}
++static FORCEINLINE HRESULT __x_ABI_CWindows_CSystem_CIDispatcherQueueController_GetRuntimeClassName(__x_ABI_CWindows_CSystem_CIDispatcherQueueController* This,HSTRING *className) {
++ return This->lpVtbl->GetRuntimeClassName(This,className);
++}
++static FORCEINLINE HRESULT __x_ABI_CWindows_CSystem_CIDispatcherQueueController_GetTrustLevel(__x_ABI_CWindows_CSystem_CIDispatcherQueueController* This,TrustLevel *trustLevel) {
++ return This->lpVtbl->GetTrustLevel(This,trustLevel);
++}
++#endif
++#ifdef WIDL_using_Windows_System
++#define IID_IDispatcherQueueController IID___x_ABI_CWindows_CSystem_CIDispatcherQueueController
++#define IDispatcherQueueControllerVtbl __x_ABI_CWindows_CSystem_CIDispatcherQueueControllerVtbl
++#define IDispatcherQueueController __x_ABI_CWindows_CSystem_CIDispatcherQueueController
++#define IDispatcherQueueController_QueryInterface __x_ABI_CWindows_CSystem_CIDispatcherQueueController_QueryInterface
++#define IDispatcherQueueController_AddRef __x_ABI_CWindows_CSystem_CIDispatcherQueueController_AddRef
++#define IDispatcherQueueController_Release __x_ABI_CWindows_CSystem_CIDispatcherQueueController_Release
++#define IDispatcherQueueController_GetIids __x_ABI_CWindows_CSystem_CIDispatcherQueueController_GetIids
++#define IDispatcherQueueController_GetRuntimeClassName __x_ABI_CWindows_CSystem_CIDispatcherQueueController_GetRuntimeClassName
++#define IDispatcherQueueController_GetTrustLevel __x_ABI_CWindows_CSystem_CIDispatcherQueueController_GetTrustLevel
++#endif /* WIDL_using_Windows_System */
++#endif
++
++#endif
++
++#endif /* ____x_ABI_CWindows_CSystem_CIDispatcherQueueController_INTERFACE_DEFINED__ */
++#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x50000 */
++
+ /*
+ * Class Windows.System.User
+ */
+--
+2.25.1
+
diff --git a/taskcluster/scripts/misc/mingw-dwrite_3.patch b/taskcluster/scripts/misc/mingw-dwrite_3.patch
new file mode 100644
index 0000000000..25c7b89eea
--- /dev/null
+++ b/taskcluster/scripts/misc/mingw-dwrite_3.patch
@@ -0,0 +1,87 @@
+From a9804765e442063be37338933b9c40e3e3d01aac Mon Sep 17 00:00:00 2001
+From: Sanketh Menda <me@snkth.com>
+Date: Thu, 2 Feb 2023 12:29:03 -0500
+Subject: [PATCH 4/7] dwrite_3.h: rename GetGlyphImageFormats_ to
+ GetGlyphImageFormats
+
+Wine's WIDL currently doesn't support overloading functions, so till
+that is fixed patch dwrite_3.h to rename GlyphImageFormats_ to
+GetGlyphImageFormats.
+---
+ mingw-w64-headers/include/dwrite_3.h | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/mingw-w64-headers/include/dwrite_3.h b/mingw-w64-headers/include/dwrite_3.h
+index 205c47f04..352731bf1 100644
+--- a/mingw-w64-headers/include/dwrite_3.h
++++ b/mingw-w64-headers/include/dwrite_3.h
+@@ -8181,7 +8181,7 @@ DEFINE_GUID(IID_IDWriteFontFace4, 0x27f2a904, 0x4eb8, 0x441d, 0x96,0x78, 0x05,0x
+ MIDL_INTERFACE("27f2a904-4eb8-441d-9678-0563f53e3e2f")
+ IDWriteFontFace4 : public IDWriteFontFace3
+ {
+- virtual HRESULT STDMETHODCALLTYPE GetGlyphImageFormats_(
++ virtual HRESULT STDMETHODCALLTYPE GetGlyphImageFormats(
+ UINT16 glyph,
+ UINT32 ppem_first,
+ UINT32 ppem_last,
+@@ -8481,7 +8481,7 @@ typedef struct IDWriteFontFace4Vtbl {
+ WINBOOL *are_local);
+
+ /*** IDWriteFontFace4 methods ***/
+- HRESULT (STDMETHODCALLTYPE *GetGlyphImageFormats_)(
++ HRESULT (STDMETHODCALLTYPE *GetGlyphImageFormats)(
+ IDWriteFontFace4 *This,
+ UINT16 glyph,
+ UINT32 ppem_first,
+@@ -8562,7 +8562,7 @@ interface IDWriteFontFace4 {
+ #define IDWriteFontFace4_AreCharactersLocal(This,characters,count,enqueue_if_not,are_local) (This)->lpVtbl->AreCharactersLocal(This,characters,count,enqueue_if_not,are_local)
+ #define IDWriteFontFace4_AreGlyphsLocal(This,glyphs,count,enqueue_if_not,are_local) (This)->lpVtbl->AreGlyphsLocal(This,glyphs,count,enqueue_if_not,are_local)
+ /*** IDWriteFontFace4 methods ***/
+-#define IDWriteFontFace4_GetGlyphImageFormats_(This,glyph,ppem_first,ppem_last,formats) (This)->lpVtbl->GetGlyphImageFormats_(This,glyph,ppem_first,ppem_last,formats)
++#define IDWriteFontFace4_GetGlyphImageFormats(This,glyph,ppem_first,ppem_last,formats) (This)->lpVtbl->GetGlyphImageFormats(This,glyph,ppem_first,ppem_last,formats)
+ #define IDWriteFontFace4_GetGlyphImageFormats(This) (This)->lpVtbl->GetGlyphImageFormats(This)
+ #define IDWriteFontFace4_GetGlyphImageData(This,glyph,ppem,format,data,context) (This)->lpVtbl->GetGlyphImageData(This,glyph,ppem,format,data,context)
+ #define IDWriteFontFace4_ReleaseGlyphImageData(This,context) (This)->lpVtbl->ReleaseGlyphImageData(This,context)
+@@ -8705,8 +8705,8 @@ static __WIDL_INLINE HRESULT IDWriteFontFace4_AreGlyphsLocal(IDWriteFontFace4* T
+ return This->lpVtbl->AreGlyphsLocal(This,glyphs,count,enqueue_if_not,are_local);
+ }
+ /*** IDWriteFontFace4 methods ***/
+-static __WIDL_INLINE HRESULT IDWriteFontFace4_GetGlyphImageFormats_(IDWriteFontFace4* This,UINT16 glyph,UINT32 ppem_first,UINT32 ppem_last,DWRITE_GLYPH_IMAGE_FORMATS *formats) {
+- return This->lpVtbl->GetGlyphImageFormats_(This,glyph,ppem_first,ppem_last,formats);
++static __WIDL_INLINE HRESULT IDWriteFontFace4_GetGlyphImageFormats(IDWriteFontFace4* This,UINT16 glyph,UINT32 ppem_first,UINT32 ppem_last,DWRITE_GLYPH_IMAGE_FORMATS *formats) {
++ return This->lpVtbl->GetGlyphImageFormats(This,glyph,ppem_first,ppem_last,formats);
+ }
+ static __WIDL_INLINE DWRITE_GLYPH_IMAGE_FORMATS IDWriteFontFace4_GetGlyphImageFormats(IDWriteFontFace4* This) {
+ return This->lpVtbl->GetGlyphImageFormats(This);
+@@ -9033,7 +9033,7 @@ typedef struct IDWriteFontFace5Vtbl {
+ WINBOOL *are_local);
+
+ /*** IDWriteFontFace4 methods ***/
+- HRESULT (STDMETHODCALLTYPE *GetGlyphImageFormats_)(
++ HRESULT (STDMETHODCALLTYPE *GetGlyphImageFormats)(
+ IDWriteFontFace5 *This,
+ UINT16 glyph,
+ UINT32 ppem_first,
+@@ -9134,7 +9134,7 @@ interface IDWriteFontFace5 {
+ #define IDWriteFontFace5_AreCharactersLocal(This,characters,count,enqueue_if_not,are_local) (This)->lpVtbl->AreCharactersLocal(This,characters,count,enqueue_if_not,are_local)
+ #define IDWriteFontFace5_AreGlyphsLocal(This,glyphs,count,enqueue_if_not,are_local) (This)->lpVtbl->AreGlyphsLocal(This,glyphs,count,enqueue_if_not,are_local)
+ /*** IDWriteFontFace4 methods ***/
+-#define IDWriteFontFace5_GetGlyphImageFormats_(This,glyph,ppem_first,ppem_last,formats) (This)->lpVtbl->GetGlyphImageFormats_(This,glyph,ppem_first,ppem_last,formats)
++#define IDWriteFontFace5_GetGlyphImageFormats(This,glyph,ppem_first,ppem_last,formats) (This)->lpVtbl->GetGlyphImageFormats(This,glyph,ppem_first,ppem_last,formats)
+ #define IDWriteFontFace5_GetGlyphImageFormats(This) (This)->lpVtbl->GetGlyphImageFormats(This)
+ #define IDWriteFontFace5_GetGlyphImageData(This,glyph,ppem,format,data,context) (This)->lpVtbl->GetGlyphImageData(This,glyph,ppem,format,data,context)
+ #define IDWriteFontFace5_ReleaseGlyphImageData(This,context) (This)->lpVtbl->ReleaseGlyphImageData(This,context)
+@@ -9283,8 +9283,8 @@ static __WIDL_INLINE HRESULT IDWriteFontFace5_AreGlyphsLocal(IDWriteFontFace5* T
+ return This->lpVtbl->AreGlyphsLocal(This,glyphs,count,enqueue_if_not,are_local);
+ }
+ /*** IDWriteFontFace4 methods ***/
+-static __WIDL_INLINE HRESULT IDWriteFontFace5_GetGlyphImageFormats_(IDWriteFontFace5* This,UINT16 glyph,UINT32 ppem_first,UINT32 ppem_last,DWRITE_GLYPH_IMAGE_FORMATS *formats) {
+- return This->lpVtbl->GetGlyphImageFormats_(This,glyph,ppem_first,ppem_last,formats);
++static __WIDL_INLINE HRESULT IDWriteFontFace5_GetGlyphImageFormats(IDWriteFontFace5* This,UINT16 glyph,UINT32 ppem_first,UINT32 ppem_last,DWRITE_GLYPH_IMAGE_FORMATS *formats) {
++ return This->lpVtbl->GetGlyphImageFormats(This,glyph,ppem_first,ppem_last,formats);
+ }
+ static __WIDL_INLINE DWRITE_GLYPH_IMAGE_FORMATS IDWriteFontFace5_GetGlyphImageFormats(IDWriteFontFace5* This) {
+ return This->lpVtbl->GetGlyphImageFormats(This);
+--
+2.25.1
+
diff --git a/taskcluster/scripts/misc/mingw-enum.patch b/taskcluster/scripts/misc/mingw-enum.patch
new file mode 100644
index 0000000000..de12434ee3
--- /dev/null
+++ b/taskcluster/scripts/misc/mingw-enum.patch
@@ -0,0 +1,25 @@
+From b415d3e199de9cb2dce6290721bcfc2871f33769 Mon Sep 17 00:00:00 2001
+From: Tom Ritter <tom@ritter.vg>
+Date: Thu, 2 Feb 2023 12:26:47 -0500
+Subject: [PATCH 3/7] Fix enum int issues
+
+---
+ mingw-w64-headers/include/windows.foundation.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/mingw-w64-headers/include/windows.foundation.h b/mingw-w64-headers/include/windows.foundation.h
+index fd66e27d3..7981f3380 100644
+--- a/mingw-w64-headers/include/windows.foundation.h
++++ b/mingw-w64-headers/include/windows.foundation.h
+@@ -647,7 +647,7 @@ static __WIDL_INLINE HRESULT __x_ABI_CWindows_CFoundation_CIAsyncActionCompleted
+ namespace ABI {
+ namespace Windows {
+ namespace Foundation {
+- enum PropertyType {
++ enum PropertyType : int {
+ PropertyType_Empty = 0,
+ PropertyType_UInt8 = 1,
+ PropertyType_Int16 = 2,
+--
+2.25.1
+
diff --git a/taskcluster/scripts/misc/mingw-ts_sd.patch b/taskcluster/scripts/misc/mingw-ts_sd.patch
new file mode 100644
index 0000000000..c76f5f1dab
--- /dev/null
+++ b/taskcluster/scripts/misc/mingw-ts_sd.patch
@@ -0,0 +1,33 @@
+From 8e23d493352ada53b3a766f14e2e93484353c15c Mon Sep 17 00:00:00 2001
+From: Tom Ritter <tom@ritter.vg>
+Date: Wed, 8 Feb 2023 10:52:16 -0500
+Subject: [PATCH 11/11] TS_SD_ defines
+
+---
+ mingw-w64-headers/include/textstor.h | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/mingw-w64-headers/include/textstor.h b/mingw-w64-headers/include/textstor.h
+index 0681cab92..64b5ebec5 100644
+--- a/mingw-w64-headers/include/textstor.h
++++ b/mingw-w64-headers/include/textstor.h
+@@ -68,6 +68,16 @@ extern "C" {
+
+ #define TS_SD_LOADING (0x2)
+
++#define TS_SD_RESERVED (0x4)
++
++#define TS_SD_TKBAUTOCORRECTENABLE (0x8)
++
++#define TS_SD_TKBPREDICTIONENABLE (0x10)
++
++#define TS_SD_UIINTEGRATIONENABLE (0x20)
++
++#define TS_SD_INPUTPANEMANUALDISPLAYENABLE (0x40)
++
+ #define TS_SS_DISJOINTSEL (0x1)
+
+ #define TS_SS_REGIONS (0x2)
+--
+2.25.1
+
diff --git a/taskcluster/scripts/misc/mingw-unknown.patch b/taskcluster/scripts/misc/mingw-unknown.patch
new file mode 100644
index 0000000000..2e29e60106
--- /dev/null
+++ b/taskcluster/scripts/misc/mingw-unknown.patch
@@ -0,0 +1,46 @@
+From 753c3ad7018936ef9a9d2af8b75efbfa14c149b7 Mon Sep 17 00:00:00 2001
+From: Tom Ritter <tom@ritter.vg>
+Date: Thu, 2 Feb 2023 12:26:22 -0500
+Subject: [PATCH 2/7] Add back the IUnknown_QI functions
+
+---
+ mingw-w64-headers/include/unknwn.h | 23 +++++++++++++++++++++++
+ 1 file changed, 23 insertions(+)
+
+diff --git a/mingw-w64-headers/include/unknwn.h b/mingw-w64-headers/include/unknwn.h
+index f3ada04a2..f33e8f270 100644
+--- a/mingw-w64-headers/include/unknwn.h
++++ b/mingw-w64-headers/include/unknwn.h
+@@ -169,6 +169,29 @@ static __WIDL_INLINE ULONG IUnknown_Release(IUnknown* This) {
+
+ #endif
+
++HRESULT STDMETHODCALLTYPE IUnknown_QueryInterface_Proxy(
++ IUnknown* This,
++ REFIID riid,
++ void **ppvObject);
++void __RPC_STUB IUnknown_QueryInterface_Stub(
++ IRpcStubBuffer* This,
++ IRpcChannelBuffer* pRpcChannelBuffer,
++ PRPC_MESSAGE pRpcMessage,
++ DWORD* pdwStubPhase);
++ULONG STDMETHODCALLTYPE IUnknown_AddRef_Proxy(
++ IUnknown* This);
++void __RPC_STUB IUnknown_AddRef_Stub(
++ IRpcStubBuffer* This,
++ IRpcChannelBuffer* pRpcChannelBuffer,
++ PRPC_MESSAGE pRpcMessage,
++ DWORD* pdwStubPhase);
++ULONG STDMETHODCALLTYPE IUnknown_Release_Proxy(
++ IUnknown* This);
++void __RPC_STUB IUnknown_Release_Stub(
++ IRpcStubBuffer* This,
++ IRpcChannelBuffer* pRpcChannelBuffer,
++ PRPC_MESSAGE pRpcMessage,
++ DWORD* pdwStubPhase);
+
+ #endif /* __IUnknown_INTERFACE_DEFINED__ */
+
+--
+2.25.1
+
diff --git a/taskcluster/scripts/misc/mingw-widl.patch b/taskcluster/scripts/misc/mingw-widl.patch
new file mode 100644
index 0000000000..225a908ad7
--- /dev/null
+++ b/taskcluster/scripts/misc/mingw-widl.patch
@@ -0,0 +1,35 @@
+From 534ecbfb4da9a27c287a9a44ea18ef44ccf2aac2 Mon Sep 17 00:00:00 2001
+From: Tom Ritter <tom@ritter.vg>
+Date: Thu, 2 Feb 2023 13:28:39 -0500
+Subject: [PATCH 5/7] Fix widl
+
+In commit c94f44f9b455 (in wine's repo) open_typelib was changed
+from returning a file descriptor (null on error) to aborting if
+an error was encountered.
+
+This is incorrect, because read_importlib in typelib.c has a
+fallback behavior where it calls open_typelib again if it
+fails the first time. And _then_ it will error if it couldn't do
+it either time.
+
+Restore the original behavior for open_typelib
+---
+ mingw-w64-tools/widl/src/widl.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/mingw-w64-tools/widl/src/widl.c b/mingw-w64-tools/widl/src/widl.c
+index 986aa3624..39bc8ac21 100644
+--- a/mingw-w64-tools/widl/src/widl.c
++++ b/mingw-w64-tools/widl/src/widl.c
+@@ -710,7 +710,7 @@ int open_typelib( const char *name )
+ TRYOPEN( strmake( "%s%s/%s", default_dirs[i], pe_dir, name ));
+ }
+ }
+- error( "cannot find %s\n", name );
++ return -1;
+ #undef TRYOPEN
+ }
+
+--
+2.25.1
+
diff --git a/taskcluster/scripts/misc/moz.build b/taskcluster/scripts/misc/moz.build
new file mode 100644
index 0000000000..3b5b0e1e58
--- /dev/null
+++ b/taskcluster/scripts/misc/moz.build
@@ -0,0 +1,8 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+with Files("verify-updatebot.py"):
+ BUG_COMPONENT = ("Developer Infrastructure", "Mach Vendor & Updatebot")
diff --git a/taskcluster/scripts/misc/osx-cross-linker b/taskcluster/scripts/misc/osx-cross-linker
new file mode 100755
index 0000000000..1e685db5fb
--- /dev/null
+++ b/taskcluster/scripts/misc/osx-cross-linker
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+exec $MOZ_FETCHES_DIR/clang/bin/clang -v \
+ -fuse-ld=lld \
+ -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET:-10.12} \
+ -target $TARGET \
+ -isysroot $MOZ_FETCHES_DIR/MacOSX13.3.sdk \
+ "$@"
diff --git a/taskcluster/scripts/misc/pack-cpython.sh b/taskcluster/scripts/misc/pack-cpython.sh
new file mode 100755
index 0000000000..71a11adb07
--- /dev/null
+++ b/taskcluster/scripts/misc/pack-cpython.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+set -x -e -v
+
+# This script is for extracting python bianry for windows from setup file.
+
+ARTIFACT_NAME=win64-cpython.tar.zst
+PYTHON_INSTALLER=`echo $MOZ_FETCHES_DIR/python-3.*-amd64.exe`
+WINE=$MOZ_FETCHES_DIR/wine/bin/wine
+
+cabextract $PYTHON_INSTALLER
+
+tardir=python
+mkdir $tardir
+pushd $tardir
+msiextract ../*
+rm api-ms-win-*
+
+# bundle pip
+$WINE python.exe -m ensurepip
+$WINE python.exe -m pip install --upgrade pip==23.0
+$WINE python.exe -m pip install --only-binary ':all:' -r ${GECKO_PATH}/build/psutil_requirements.txt -r ${GECKO_PATH}/build/zstandard_requirements.txt
+
+# extra symlinks to have a consistent install with Linux and OSX
+ln -s python.exe python3.exe
+chmod u+x python3.exe
+
+ln -s ./Scripts/pip3.exe pip3.exe
+chmod u+x pip3.exe
+
+
+popd
+
+tar caf `basename ${TOOLCHAIN_ARTIFACT}` ${tardir}
+
+mkdir -p $UPLOAD_DIR
+mv `basename ${TOOLCHAIN_ARTIFACT}` $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/pack.sh b/taskcluster/scripts/misc/pack.sh
new file mode 100755
index 0000000000..f19feb5053
--- /dev/null
+++ b/taskcluster/scripts/misc/pack.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+set -x
+set -e
+set -o pipefail
+
+[ -z "$1" ] && echo Missing argument && exit 1
+
+dir=$(dirname "$1")
+name=$(basename "$1")
+
+case "$(uname -s)" in
+Darwin)
+ TAR_FLAGS=--no-fflags
+ ;;
+*)
+ TAR_FLAGS=
+ ;;
+esac
+
+(cd "$dir"; find "$name"/* -not -type d -print0 | tar $TAR_FLAGS -cvf - --null -T -) | python3 $GECKO_PATH/taskcluster/scripts/misc/zstdpy > "$name.tar.zst"
+
+mkdir -p "$UPLOAD_DIR"
+mv "$name.tar.zst" "$UPLOAD_DIR"
diff --git a/taskcluster/scripts/misc/private_local_toolchain.sh b/taskcluster/scripts/misc/private_local_toolchain.sh
new file mode 100755
index 0000000000..df255a8576
--- /dev/null
+++ b/taskcluster/scripts/misc/private_local_toolchain.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+set -x
+set -e
+set -o pipefail
+
+script=$1
+shift
+artifact=$(basename $TOOLCHAIN_ARTIFACT)
+dir=${artifact%.tar.*}
+
+$GECKO_PATH/mach python --virtualenv build $(dirname $0)/$script "$@" $dir
+
+$(dirname $0)/pack.sh $dir
diff --git a/taskcluster/scripts/misc/repack-android-avd-linux.sh b/taskcluster/scripts/misc/repack-android-avd-linux.sh
new file mode 100755
index 0000000000..f36fda905d
--- /dev/null
+++ b/taskcluster/scripts/misc/repack-android-avd-linux.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -x -e -v
+
+# Initialize XVFB for the AVD
+. /builds/worker/scripts/xvfb.sh
+
+cleanup() {
+ local rv=$?
+ cleanup_xvfb
+ exit $rv
+}
+trap cleanup EXIT INT
+
+start_xvfb '1024x768x24' 2
+
+# This script is for fetching and repacking the Android SDK (for
+# Linux), the tools required to produce Android packages.
+
+UPLOAD_DIR=/builds/worker/artifacts/
+AVD_JSON_CONFIG="$1"
+
+mkdir -p $HOME/artifacts $UPLOAD_DIR
+
+# Populate /builds/worker/.mozbuild/android-device
+cd $GECKO_PATH
+./mach python python/mozboot/mozboot/android.py --artifact-mode --prewarm-avd --avd-manifest="$AVD_JSON_CONFIG" --no-interactive --list-packages
+
+tar cavf $UPLOAD_DIR/android-avd-linux.tar.zst -C /builds/worker/.mozbuild android-device
+
+ls -al $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/repack-android-emulator-linux.sh b/taskcluster/scripts/misc/repack-android-emulator-linux.sh
new file mode 100755
index 0000000000..be6a61640d
--- /dev/null
+++ b/taskcluster/scripts/misc/repack-android-emulator-linux.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+set -x -e -v
+
+# This script is for fetching and repacking the Android emulator (for
+# Linux), the tools required to produce Android packages.
+
+mkdir -p $UPLOAD_DIR
+
+# Populate /builds/worker/.mozbuild/android-emulator-linux.
+cd $GECKO_PATH
+./mach python python/mozboot/mozboot/android.py --emulator-only --no-interactive --list-packages
+
+# Remove extra files we don't need
+rm -rfv /builds/worker/.mozbuild/android-sdk-linux/tools
+mkdir /builds/worker/.mozbuild/android-sdk-linux/system-images
+mkdir /builds/worker/.mozbuild/android-sdk-linux/platforms
+find /builds/worker/.mozbuild/android-sdk-linux/emulator/qemu -type f -not -name "*x86*" -print -delete
+
+tar cavf $UPLOAD_DIR/android-emulator-linux.tar.zst -C /builds/worker/.mozbuild android-sdk-linux bundletool.jar
+
+ls -al $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/repack-android-ndk-linux.sh b/taskcluster/scripts/misc/repack-android-ndk-linux.sh
new file mode 100755
index 0000000000..f48b60c3e1
--- /dev/null
+++ b/taskcluster/scripts/misc/repack-android-ndk-linux.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+set -x -e -v
+
+# This script is for fetching and repacking the Android NDK (for
+# Linux), the tools required to produce native Android programs.
+
+mkdir -p $UPLOAD_DIR
+
+# Populate /builds/worker/.mozbuild/android-ndk-$VER.
+cd $GECKO_PATH
+./mach python python/mozboot/mozboot/android.py --ndk-only --no-interactive
+
+# Don't generate a tarball with a versioned NDK directory.
+mv $HOME/.mozbuild/android-ndk-* $HOME/.mozbuild/android-ndk
+tar cavf $UPLOAD_DIR/android-ndk.tar.zst -C /builds/worker/.mozbuild android-ndk
+
+ls -al $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/repack-android-sdk-linux.sh b/taskcluster/scripts/misc/repack-android-sdk-linux.sh
new file mode 100755
index 0000000000..ee2b068701
--- /dev/null
+++ b/taskcluster/scripts/misc/repack-android-sdk-linux.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+set -x -e -v
+
+# This script is for fetching and repacking the Android SDK (for
+# Linux), the tools required to produce Android packages.
+
+mkdir -p $UPLOAD_DIR
+
+# Populate /builds/worker/.mozbuild/android-sdk-linux.
+cd $GECKO_PATH
+./mach python python/mozboot/mozboot/android.py --artifact-mode --no-interactive --list-packages
+
+tar cavf $UPLOAD_DIR/android-sdk-linux.tar.zst -C /builds/worker/.mozbuild android-sdk-linux bundletool.jar
+
+ls -al $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/repack-android-system-images-linux.sh b/taskcluster/scripts/misc/repack-android-system-images-linux.sh
new file mode 100755
index 0000000000..395061ba9e
--- /dev/null
+++ b/taskcluster/scripts/misc/repack-android-system-images-linux.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+set -x -e -v
+
+# This script is for fetching and repacking the Android SDK (for
+# Linux), the tools required to produce Android packages.
+
+AVD_JSON_CONFIG="$1"
+
+mkdir -p $UPLOAD_DIR
+
+# Populate /builds/worker/.mozbuild/android-sdk-linux.
+cd $GECKO_PATH
+./mach python python/mozboot/mozboot/android.py --artifact-mode --system-images-only --avd-manifest="$AVD_JSON_CONFIG" --no-interactive --list-packages
+
+tar cavf $UPLOAD_DIR/android-system-images-linux.tar.zst -C /builds/worker/.mozbuild android-sdk-linux/system-images
+
+ls -al $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/repack-clang.sh b/taskcluster/scripts/misc/repack-clang.sh
new file mode 100755
index 0000000000..4a1b3ed01e
--- /dev/null
+++ b/taskcluster/scripts/misc/repack-clang.sh
@@ -0,0 +1,52 @@
+#!/bin/bash
+set -x -e -v
+
+shopt -s nullglob
+
+# This script is for repacking clang for cross targets on a Linux host.
+
+cd $MOZ_FETCHES_DIR
+
+# We have a clang toolchain in $MOZ_FETCHES_DIR/clang
+# We have some compiler-rts in $MOZ_FETCHES_DIR/compiler-rt*
+# We have some libunwinds in $MOZ_FETCHES_DIR/libunwind*
+# We copy everything from the compiler-rts into clang/lib/clang/$version/
+# and everything from the libunwinds into clang/
+clang_ver_dir=$(echo clang/lib/clang/*/include)
+clang_ver_dir=${clang_ver_dir%/include}
+[ -n "$clang_ver_dir" ] && for c in compiler-rt* libunwind*; do
+ case $c in
+ compiler-rt*)
+ clang_dir=$clang_ver_dir
+ ;;
+ libunwind*)
+ clang_dir=clang
+ ;;
+ esac
+ find $c -mindepth 1 -type d | while read d; do
+ mkdir -p "$clang_dir/${d#$c/}"
+ find $d -mindepth 1 -maxdepth 1 -not -type d | while read f; do
+ target_file="$clang_dir/${f#$c/}"
+ case $d in
+ compiler-rt-*/lib/darwin)
+ if [ -f "$target_file" ]; then
+ # Unify overlapping files for darwin/
+ $MOZ_FETCHES_DIR/cctools/bin/lipo -create "$f" "$target_file" -output "$target_file.new"
+ mv "$target_file.new" "$target_file"
+ continue
+ fi
+ ;;
+ esac
+ if [ -f "$target_file" ] && ! diff -q "$f" "$target_file" 2>/dev/null; then
+ echo "Cannot copy $f because it is already in ${target_file%/*}" >&2 && exit 1
+ fi
+ cp "$f" "$target_file"
+ done
+ done
+done
+
+if [ -n "$UPLOAD_DIR" ]; then
+ tar caf clang.tar.zst clang
+ mkdir -p $UPLOAD_DIR
+ mv clang.tar.zst $UPLOAD_DIR
+fi
diff --git a/taskcluster/scripts/misc/repack-jdk-linux.sh b/taskcluster/scripts/misc/repack-jdk-linux.sh
new file mode 100755
index 0000000000..2d13e360e5
--- /dev/null
+++ b/taskcluster/scripts/misc/repack-jdk-linux.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+set -x -e -v
+
+# This script is for fetching and repacking the OpenJDK (for
+# Linux)
+
+AVD_JSON_CONFIG="$1"
+
+mkdir -p $UPLOAD_DIR
+
+# Populate /builds/worker/.mozbuild/jdk
+cd $GECKO_PATH
+./mach python python/mozboot/mozboot/android.py --jdk-only
+
+tar cavf $UPLOAD_DIR/jdk-linux.tar.zst -C /builds/worker/.mozbuild jdk
+
+ls -al $UPLOAD_DIR
diff --git a/taskcluster/scripts/misc/repack-node.sh b/taskcluster/scripts/misc/repack-node.sh
new file mode 100755
index 0000000000..d3880e4799
--- /dev/null
+++ b/taskcluster/scripts/misc/repack-node.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+set -x -e -v
+
+# This script is for repacking Node (and NPM) from nodejs.org.
+
+mkdir -p "$UPLOAD_DIR"
+
+cd "$MOZ_FETCHES_DIR"
+
+# npx doesn't have great security characteristics (it downloads and executes
+# stuff directly out of npm at runtime), so let's not risk it getting into
+# anyone's PATH who doesn't already have it there:
+rm -f node/bin/npx node/bin/npx.exe
+tar caf "$UPLOAD_DIR"/node.tar.zst node
diff --git a/taskcluster/scripts/misc/repack_rust.py b/taskcluster/scripts/misc/repack_rust.py
new file mode 100755
index 0000000000..909ff379dc
--- /dev/null
+++ b/taskcluster/scripts/misc/repack_rust.py
@@ -0,0 +1,647 @@
+#!/usr/bin/env python3
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+"""
+This script downloads and repacks official rust language builds
+with the necessary tool and target support for the Firefox
+build environment.
+"""
+
+import argparse
+import errno
+import hashlib
+import os
+import shutil
+import subprocess
+import tarfile
+import textwrap
+from contextlib import contextmanager
+
+import requests
+import toml
+import zstandard
+
+
+def log(msg):
+ print("repack: %s" % msg, flush=True)
+
+
+def fetch_file(url):
+ """Download a file from the given url if it's not already present.
+
+ Returns the SHA-2 256-bit hash of the received file."""
+ filename = os.path.basename(url)
+ sha = hashlib.sha256()
+ size = 4096
+ if os.path.exists(filename):
+ with open(filename, "rb") as fd:
+ while True:
+ block = fd.read(size)
+ if not block:
+ return sha.hexdigest()
+ sha.update(block)
+ log("Could not calculate checksum!")
+ return None
+ r = requests.get(url, stream=True)
+ r.raise_for_status()
+ with open(filename, "wb") as fd:
+ for chunk in r.iter_content(size):
+ fd.write(chunk)
+ sha.update(chunk)
+ return sha.hexdigest()
+
+
+def check_call_with_input(cmd, input_data):
+ """Invoke a command, passing the input String over stdin.
+
+ This is like subprocess.check_call, but allows piping
+ input to interactive commands."""
+ p = subprocess.Popen(cmd, stdin=subprocess.PIPE)
+ p.communicate(input_data)
+ if p.wait():
+ raise subprocess.CalledProcessError(p.returncode, cmd)
+
+
+def setup_gpg():
+ """Add the signing key to the current gpg config.
+
+ Import a hard-coded copy of the release signing public key
+ and mark it trusted in the gpg database so subsequent
+ signature checks can succeed or fail cleanly."""
+ keyid = "0x85AB96E6FA1BE5FE"
+ log("Importing signing key %s..." % keyid)
+ key = b"""
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFJEwMkBEADlPACa2K7reD4x5zd8afKx75QYKmxqZwywRbgeICeD4bKiQoJZ
+dUjmn1LgrGaXuBMKXJQhyA34e/1YZel/8et+HPE5XpljBfNYXWbVocE1UMUTnFU9
+CKXa4AhJ33f7we2/QmNRMUifw5adPwGMg4D8cDKXk02NdnqQlmFByv0vSaArR5kn
+gZKnLY6o0zZ9Buyy761Im/ShXqv4ATUgYiFc48z33G4j+BDmn0ryGr1aFdP58tHp
+gjWtLZs0iWeFNRDYDje6ODyu/MjOyuAWb2pYDH47Xu7XedMZzenH2TLM9yt/hyOV
+xReDPhvoGkaO8xqHioJMoPQi1gBjuBeewmFyTSPS4deASukhCFOcTsw/enzJagiS
+ZAq6Imehduke+peAL1z4PuRmzDPO2LPhVS7CDXtuKAYqUV2YakTq8MZUempVhw5n
+LqVaJ5/XiyOcv405PnkT25eIVVVghxAgyz6bOU/UMjGQYlkUxI7YZ9tdreLlFyPR
+OUL30E8q/aCd4PGJV24yJ1uit+yS8xjyUiMKm4J7oMP2XdBN98TUfLGw7SKeAxyU
+92BHlxg7yyPfI4TglsCzoSgEIV6xoGOVRRCYlGzSjUfz0bCMCclhTQRBkegKcjB3
+sMTyG3SPZbjTlCqrFHy13e6hGl37Nhs8/MvXUysq2cluEISn5bivTKEeeQARAQAB
+tERSdXN0IExhbmd1YWdlIChUYWcgYW5kIFJlbGVhc2UgU2lnbmluZyBLZXkpIDxy
+dXN0LWtleUBydXN0LWxhbmcub3JnPokCOAQTAQIAIgUCUkTAyQIbAwYLCQgHAwIG
+FQgCCQoLBBYCAwECHgECF4AACgkQhauW5vob5f5fYQ//b1DWK1NSGx5nZ3zYZeHJ
+9mwGCftIaA2IRghAGrNf4Y8DaPqR+w1OdIegWn8kCoGfPfGAVW5XXJg+Oxk6QIaD
+2hJojBUrq1DALeCZVewzTVw6BN4DGuUexsc53a8DcY2Yk5WE3ll6UKq/YPiWiPNX
+9r8FE2MJwMABB6mWZLqJeg4RCrriBiCG26NZxGE7RTtPHyppoVxWKAFDiWyNdJ+3
+UnjldWrT9xFqjqfXWw9Bhz8/EoaGeSSbMIAQDkQQpp1SWpljpgqvctZlc5fHhsG6
+lmzW5RM4NG8OKvq3UrBihvgzwrIfoEDKpXbk3DXqaSs1o81NH5ftVWWbJp/ywM9Q
+uMC6n0YWiMZMQ1cFBy7tukpMkd+VPbPkiSwBhPkfZIzUAWd74nanN5SKBtcnymgJ
++OJcxfZLiUkXRj0aUT1GLA9/7wnikhJI+RvwRfHBgrssXBKNPOfXGWajtIAmZc2t
+kR1E8zjBVLId7r5M8g52HKk+J+y5fVgJY91nxG0zf782JjtYuz9+knQd55JLFJCO
+hhbv3uRvhvkqgauHagR5X9vCMtcvqDseK7LXrRaOdOUDrK/Zg/abi5d+NIyZfEt/
+ObFsv3idAIe/zpU6xa1nYNe3+Ixlb6mlZm3WCWGxWe+GvNW/kq36jZ/v/8pYMyVO
+p/kJqnf9y4dbufuYBg+RLqC5Ag0EUkTAyQEQANxy2tTSeRspfrpBk9+ju+KZ3zc4
+umaIsEa5DxJ2zIKHywVAR67Um0K1YRG07/F5+tD9TIRkdx2pcmpjmSQzqdk3zqa9
+2Zzeijjz2RNyBY8qYmyE08IncjTsFFB8OnvdXcsAgjCFmI1BKnePxrABL/2k8X18
+aysPb0beWqQVsi5FsSpAHu6k1kaLKc+130x6Hf/YJAjeo+S7HeU5NeOz3zD+h5bA
+Q25qMiVHX3FwH7rFKZtFFog9Ogjzi0TkDKKxoeFKyADfIdteJWFjOlCI9KoIhfXq
+Et9JMnxApGqsJElJtfQjIdhMN4Lnep2WkudHAfwJ/412fe7wiW0rcBMvr/BlBGRY
+vM4sTgN058EwIuY9Qmc8RK4gbBf6GsfGNJjWozJ5XmXElmkQCAvbQFoAfi5TGfVb
+77QQrhrQlSpfIYrvfpvjYoqj618SbU6uBhzh758gLllmMB8LOhxWtq9eyn1rMWyR
+KL1fEkfvvMc78zP+Px6yDMa6UIez8jZXQ87Zou9EriLbzF4QfIYAqR9LUSMnLk6K
+o61tSFmFEDobC3tc1jkSg4zZe/wxskn96KOlmnxgMGO0vJ7ASrynoxEnQE8k3WwA
++/YJDwboIR7zDwTy3Jw3mn1FgnH+c7Rb9h9geOzxKYINBFz5Hd0MKx7kZ1U6WobW
+KiYYxcCmoEeguSPHABEBAAGJAh8EGAECAAkFAlJEwMkCGwwACgkQhauW5vob5f7f
+FA//Ra+itJF4NsEyyhx4xYDOPq4uj0VWVjLdabDvFjQtbBLwIyh2bm8uO3AY4r/r
+rM5WWQ8oIXQ2vvXpAQO9g8iNlFez6OLzbfdSG80AG74pQqVVVyCQxD7FanB/KGge
+tAoOstFxaCAg4nxFlarMctFqOOXCFkylWl504JVIOvgbbbyj6I7qCUmbmqazBSMU
+K8c/Nz+FNu2Uf/lYWOeGogRSBgS0CVBcbmPUpnDHLxZWNXDWQOCxbhA1Uf58hcyu
+036kkiWHh2OGgJqlo2WIraPXx1cGw1Ey+U6exbtrZfE5kM9pZzRG7ZY83CXpYWMp
+kyVXNWmf9JcIWWBrXvJmMi0FDvtgg3Pt1tnoxqdilk6yhieFc8LqBn6CZgFUBk0t
+NSaWk3PsN0N6Ut8VXY6sai7MJ0Gih1gE1xadWj2zfZ9sLGyt2jZ6wK++U881YeXA
+ryaGKJ8sIs182hwQb4qN7eiUHzLtIh8oVBHo8Q4BJSat88E5/gOD6IQIpxc42iRL
+T+oNZw1hdwNyPOT1GMkkn86l3o7klwmQUWCPm6vl1aHp3omo+GHC63PpNFO5RncJ
+Ilo3aBKKmoE5lDSMGE8KFso5awTo9z9QnVPkRsk6qeBYit9xE3x3S+iwjcSg0nie
+aAkc0N00nc9V9jfPvt4z/5A5vjHh+NhFwH5h2vBJVPdsz6m5Ag0EVI9keAEQAL3R
+oVsHncJTmjHfBOV4JJsvCum4DuJDZ/rDdxauGcjMUWZaG338ZehnDqG1Yn/ys7zE
+aKYUmqyT+XP+M2IAQRTyxwlU1RsDlemQfWrESfZQCCmbnFScL0E7cBzy4xvtInQe
+UaFgJZ1BmxbzQrx+eBBdOTDv7RLnNVygRmMzmkDhxO1IGEu1+3ETIg/DxFE7VQY0
+It/Ywz+nHu1o4Hemc/GdKxu9hcYvcRVc/Xhueq/zcIM96l0m+CFbs0HMKCj8dgMe
+Ng6pbbDjNM+cV+5BgpRdIpE2l9W7ImpbLihqcZt47J6oWt/RDRVoKOzRxjhULVyV
+2VP9ESr48HnbvxcpvUAEDCQUhsGpur4EKHFJ9AmQ4zf91gWLrDc6QmlACn9o9ARU
+fOV5aFsZI9ni1MJEInJTP37stz/uDECRie4LTL4O6P4Dkto8ROM2wzZq5CiRNfnT
+PP7ARfxlCkpg+gpLYRlxGUvRn6EeYwDtiMQJUQPfpGHSvThUlgDEsDrpp4SQSmdA
+CB+rvaRqCawWKoXs0In/9wylGorRUupeqGC0I0/rh+f5mayFvORzwy/4KK4QIEV9
+aYTXTvSRl35MevfXU1Cumlaqle6SDkLr3ZnFQgJBqap0Y+Nmmz2HfO/pohsbtHPX
+92SN3dKqaoSBvzNGY5WT3CsqxDtik37kR3f9/DHpABEBAAGJBD4EGAECAAkFAlSP
+ZHgCGwICKQkQhauW5vob5f7BXSAEGQECAAYFAlSPZHgACgkQXLSpNHs7CdwemA/+
+KFoGuFqU0uKT9qblN4ugRyil5itmTRVffl4tm5OoWkW8uDnu7Ue3vzdzy+9NV8X2
+wRG835qjXijWP++AGuxgW6LB9nV5OWiKMCHOWnUjJQ6pNQMAgSN69QzkFXVF/q5f
+bkma9TgSbwjrVMyPzLSRwq7HsT3V02Qfr4cyq39QeILGy/NHW5z6LZnBy3BaVSd0
+lGjCEc3yfH5OaB79na4W86WCV5n4IT7cojFM+LdL6P46RgmEtWSG3/CDjnJl6BLR
+WqatRNBWLIMKMpn+YvOOL9TwuP1xbqWr1vZ66wksm53NIDcWhptpp0KEuzbU0/Dt
+OltBhcX8tOmO36LrSadX9rwckSETCVYklmpAHNxPml011YNDThtBidvsicw1vZwR
+HsXn+txlL6RAIRN+J/Rw3uOiJAqN9Qgedpx2q+E15t8MiTg/FXtB9SysnskFT/BH
+z0USNKJUY0btZBw3eXWzUnZf59D8VW1M/9JwznCHAx0c9wy/gRDiwt9w4RoXryJD
+VAwZg8rwByjldoiThUJhkCYvJ0R3xH3kPnPlGXDW49E9R8C2umRC3cYOL4U9dOQ1
+5hSlYydF5urFGCLIvodtE9q80uhpyt8L/5jj9tbwZWv6JLnfBquZSnCGqFZRfXlb
+Jphk9+CBQWwiZSRLZRzqQ4ffl4xyLuolx01PMaatkQbRaw/+JpgRNlurKQ0PsTrO
+8tztO/tpBBj/huc2DGkSwEWvkfWElS5RLDKdoMVs/j5CLYUJzZVikUJRm7m7b+OA
+P3W1nbDhuID+XV1CSBmGifQwpoPTys21stTIGLgznJrIfE5moFviOLqD/LrcYlsq
+CQg0yleu7SjOs//8dM3mC2FyLaE/dCZ8l2DCLhHw0+ynyRAvSK6aGCmZz6jMjmYF
+MXgiy7zESksMnVFMulIJJhR3eB0wx2GitibjY/ZhQ7tD3i0yy9ILR07dFz4pgkVM
+afxpVR7fmrMZ0t+yENd+9qzyAZs0ksxORoc2ze90SCx2jwEX/3K+m4I0hP2H/w5W
+gqdvuRLiqf+4BGW4zqWkLLlNIe/okt0r82SwHtDN0Ui1asmZTGj6sm8SXtwx+5cE
+38MttWqjDiibQOSthRVcETByRYM8KcjYSUCi4PoBc3NpDONkFbZm6XofR/f5mTcl
+2jDw6fIeVc4Hd1jBGajNzEqtneqqbdAkPQaLsuD2TMkQfTDJfE/IljwjrhDa9Mi+
+odtnMWq8vlwOZZ24/8/BNK5qXuCYL67O7AJB4ZQ6BT+g4z96iRLbupzu/XJyXkQF
+rOY/Ghegvn7fDrnt2KC9MpgeFBXzUp+k5rzUdF8jbCx5apVjA1sWXB9Kh3L+DUwF
+Mve696B5tlHyc1KxjHR6w9GRsh4=
+=5FXw
+-----END PGP PUBLIC KEY BLOCK-----
+"""
+ check_call_with_input(["gpg", "--import"], key)
+ check_call_with_input(
+ ["gpg", "--command-fd", "0", "--edit-key", keyid], b"trust\n5\ny\n"
+ )
+
+
+def verify_sha(filename, sha):
+ """Verify that the checksum file matches the given sha digest."""
+ sha_filename = filename + ".sha256"
+ with open(sha_filename) as f:
+ # Older sha256 files would contain `sha filename`, but more recent
+ # ones only contain `sha`.
+ checksum = f.readline().split()[0]
+ if checksum != sha:
+ raise ValueError("Checksum mismatch in %s" % filename)
+ return True
+ log("No checksum file for %s!" % filename)
+ return False
+
+
+def fetch(url, validate=True):
+ """Download and verify a package url."""
+ base = os.path.basename(url)
+ log("Fetching %s..." % base)
+ if validate:
+ fetch_file(url + ".asc")
+ fetch_file(url + ".sha256")
+ sha = fetch_file(url)
+ if validate:
+ log("Verifying %s..." % base)
+ verify_sha(base, sha)
+ subprocess.check_call(
+ ["gpg", "--keyid-format", "0xlong", "--verify", base + ".asc", base]
+ )
+ return sha
+
+
+def install(filename, target):
+ """Run a package's installer script against the given target directory."""
+ log("Unpacking %s..." % filename)
+ subprocess.check_call(["tar", "xf", filename])
+ basename = filename.split(".tar")[0]
+ log("Installing %s..." % basename)
+ install_cmd = [os.path.join(basename, "install.sh")]
+ install_cmd += ["--prefix=" + os.path.abspath(target)]
+ install_cmd += ["--disable-ldconfig"]
+ subprocess.check_call(install_cmd)
+ log("Cleaning %s..." % basename)
+ shutil.rmtree(basename)
+
+
+def package(manifest, pkg, target):
+ """Pull out the package dict for a particular package and target
+ from the given manifest."""
+ version = manifest["pkg"][pkg]["version"]
+ if target in manifest["pkg"][pkg]["target"]:
+ info = manifest["pkg"][pkg]["target"][target]
+ else:
+ # rust-src is the same for all targets, and has a literal '*' in the
+ # section key/name instead of a target
+ info = manifest["pkg"][pkg]["target"]["*"]
+ if "xz_url" in info:
+ info["url"] = info.pop("xz_url")
+ info["hash"] = info.pop("xz_hash")
+ return (version, info)
+
+
+def fetch_package(manifest, pkg, host):
+ version, info = package(manifest, pkg, host)
+ if not info["available"]:
+ log("%s marked unavailable for %s" % (pkg, host))
+ raise KeyError
+
+ log("%s %s\n %s\n %s" % (pkg, version, info["url"], info["hash"]))
+ sha = fetch(info["url"], info["hash"] is not None)
+ if info["hash"] and sha != info["hash"]:
+ log(
+ "Checksum mismatch: package resource is different from manifest"
+ "\n %s" % sha
+ )
+ raise AssertionError
+ return info
+
+
+def fetch_std(manifest, targets):
+ stds = []
+ for target in targets:
+ stds.append(fetch_package(manifest, "rust-std", target))
+ # not available for i686
+ if target != "i686-unknown-linux-musl":
+ stds.append(fetch_package(manifest, "rust-analysis", target))
+ return stds
+
+
+def fetch_optional(manifest, pkg, host):
+ try:
+ return fetch_package(manifest, pkg, host)
+ except KeyError:
+ # The package is not available, oh well!
+ return None
+
+
+@contextmanager
+def chdir(path):
+ d = os.getcwd()
+ log('cd "%s"' % path)
+ os.chdir(path)
+ try:
+ yield
+ finally:
+ log('cd "%s"' % d)
+ os.chdir(d)
+
+
+def build_tar_package(name, base, directory):
+ name = os.path.realpath(name)
+ log("tarring {} from {}/{}".format(name, base, directory))
+ assert name.endswith(".tar.zst")
+
+ cctx = zstandard.ZstdCompressor()
+ with open(name, "wb") as f, cctx.stream_writer(f) as z:
+ with tarfile.open(mode="w|", fileobj=z) as tf:
+ with chdir(base):
+ tf.add(directory)
+
+
+def fetch_manifest(channel="stable", host=None, targets=()):
+ if channel.startswith("bors-"):
+ assert host
+ rev = channel[len("bors-") :]
+ base_url = "https://s3-us-west-1.amazonaws.com/rust-lang-ci2/rustc-builds"
+ manifest = {
+ "date": "some date",
+ "pkg": {},
+ }
+
+ def target(url):
+ return {
+ "url": url,
+ "hash": None,
+ "available": requests.head(url).status_code == 200,
+ }
+
+ for pkg in (
+ "cargo",
+ "rustc",
+ "rustfmt-preview",
+ "clippy-preview",
+ "rust-analyzer-preview",
+ ):
+ manifest["pkg"][pkg] = {
+ "version": "bors",
+ "target": {
+ host: target(
+ "{}/{}/{}-nightly-{}.tar.xz".format(base_url, rev, pkg, host)
+ ),
+ },
+ }
+ manifest["pkg"]["rust-src"] = {
+ "version": "bors",
+ "target": {
+ "*": target("{}/{}/rust-src-nightly.tar.xz".format(base_url, rev)),
+ },
+ }
+ for pkg in ("rust-std", "rust-analysis"):
+ manifest["pkg"][pkg] = {
+ "version": "bors",
+ "target": {
+ t: target(
+ "{}/{}/{}-nightly-{}.tar.xz".format(base_url, rev, pkg, t)
+ )
+ for t in sorted(set(targets) | set([host]))
+ },
+ }
+ return manifest
+ if "-" in channel:
+ channel, date = channel.split("-", 1)
+ prefix = "/" + date
+ else:
+ prefix = ""
+ url = "https://static.rust-lang.org/dist%s/channel-rust-%s.toml" % (prefix, channel)
+ req = requests.get(url)
+ req.raise_for_status()
+ manifest = toml.loads(req.text)
+ if manifest["manifest-version"] != "2":
+ raise NotImplementedError(
+ "Unrecognized manifest version %s." % manifest["manifest-version"]
+ )
+ return manifest
+
+
+def patch_src(patch, module):
+ log("Patching Rust src... {} with {}".format(module, patch))
+ patch = os.path.realpath(patch)
+ subprocess.check_call(["patch", "-d", module, "-p1", "-i", patch, "--fuzz=0", "-s"])
+
+
+def build_src(install_dir, host, targets, patches):
+ install_dir = os.path.abspath(install_dir)
+ fetches = os.environ["MOZ_FETCHES_DIR"]
+ rust_dir = os.path.join(fetches, "rust")
+ patch_dir = os.path.join(os.environ["GECKO_PATH"], "build", "build-rust")
+
+ # Clear and remake any previous install directory.
+ try:
+ shutil.rmtree(install_dir)
+ except OSError as e:
+ if e.errno != errno.ENOENT:
+ raise
+ os.makedirs(install_dir)
+
+ # Patch the src (see the --patch flag's description for details)
+ for p in patches:
+ module, colon, file = p.partition(":")
+ if not colon:
+ module, file = "", p
+ patch_file = os.path.join(patch_dir, file)
+ patch_module = os.path.join(rust_dir, module)
+ patch_src(patch_file, patch_module)
+
+ log("Building Rust...")
+
+ example_config = ""
+ for example_toml in ("config.example.toml", "config.toml.example"):
+ path = os.path.join(rust_dir, example_toml)
+ if os.path.exists(path):
+ with open(path) as file:
+ example_config = file.read()
+ break
+
+ if "ignore-git" in example_config:
+ omit_git_hash = "ignore-git"
+ else:
+ omit_git_hash = "omit-git-hash"
+
+ # Rust builds are configured primarily through a config.toml file.
+ #
+ # `sysconfdir` is overloaded to be relative instead of absolute.
+ # This is the default of `install.sh`, but for whatever reason
+ # `x.py install` has its own default of `/etc` which we don't want.
+ #
+ # `missing-tools` is set so `rustfmt` is allowed to fail. This means
+ # we can "succeed" at building Rust while failing to build, say, Cargo.
+ # Ideally the build system would have better granularity:
+ # https://github.com/rust-lang/rust/issues/79249
+ base_config = textwrap.dedent(
+ """
+ [build]
+ docs = false
+ sanitizers = true
+ extended = true
+ tools = ["analysis", "cargo", "rustfmt", "clippy", "src", "rust-analyzer"]
+
+ [rust]
+ {omit_git_hash} = false
+ use-lld = true
+
+ [install]
+ prefix = "{prefix}"
+ sysconfdir = "etc"
+
+ [dist]
+ missing-tools = true
+
+ [llvm]
+ download-ci-llvm = false
+ """.format(
+ prefix=install_dir,
+ omit_git_hash=omit_git_hash,
+ )
+ )
+
+ # Rust requires these to be specified per-target
+ target_config = textwrap.dedent(
+ """
+ [target.{target}]
+ cc = "clang"
+ cxx = "clang++"
+ linker = "clang"
+
+ """
+ )
+
+ final_config = base_config
+ for target in sorted(set(targets) | set([host])):
+ final_config = final_config + target_config.format(target=target)
+
+ with open(os.path.join(rust_dir, "config.toml"), "w") as file:
+ file.write(final_config)
+
+ # Setup the env so compilers and toolchains are visible
+ clang = os.path.join(fetches, "clang")
+ clang_bin = os.path.join(clang, "bin")
+ clang_lib = os.path.join(clang, "lib")
+
+ env = os.environ.copy()
+ env.update(
+ {
+ "PATH": os.pathsep.join((clang_bin, os.environ["PATH"])),
+ "LD_LIBRARY_PATH": clang_lib,
+ }
+ )
+
+ # x.py install does everything we need for us.
+ # If you're running into issues, consider using `-vv` to debug it.
+ command = ["python3", "x.py", "install", "-v", "--host", host]
+ for target in targets:
+ command.extend(["--target", target])
+
+ subprocess.check_call(command, stderr=subprocess.STDOUT, env=env, cwd=rust_dir)
+
+
+def repack(
+ host,
+ targets,
+ channel="stable",
+ cargo_channel=None,
+ patches=[],
+):
+ install_dir = "rustc"
+ if channel == "dev":
+ build_src(install_dir, host, targets, patches)
+ else:
+ if patches:
+ raise ValueError(
+ 'Patch specified, but channel "%s" is not "dev"!'
+ "\nPatches are only for building from source." % channel
+ )
+ log("Repacking rust for %s supporting %s..." % (host, targets))
+ manifest = fetch_manifest(channel, host, targets)
+ log("Using manifest for rust %s as of %s." % (channel, manifest["date"]))
+ if cargo_channel == channel:
+ cargo_manifest = manifest
+ else:
+ cargo_manifest = fetch_manifest(cargo_channel, host, targets)
+ log(
+ "Using manifest for cargo %s as of %s."
+ % (cargo_channel, cargo_manifest["date"])
+ )
+
+ log("Fetching packages...")
+ rustc = fetch_package(manifest, "rustc", host)
+ cargo = fetch_package(cargo_manifest, "cargo", host)
+ stds = fetch_std(manifest, targets)
+ rustsrc = fetch_package(manifest, "rust-src", host)
+ rustfmt = fetch_optional(manifest, "rustfmt-preview", host)
+ clippy = fetch_optional(manifest, "clippy-preview", host)
+ rust_analyzer = fetch_optional(manifest, "rust-analyzer-preview", host)
+
+ log("Installing packages...")
+
+ # Clear any previous install directory.
+ try:
+ shutil.rmtree(install_dir)
+ except OSError as e:
+ if e.errno != errno.ENOENT:
+ raise
+ install(os.path.basename(rustc["url"]), install_dir)
+ install(os.path.basename(cargo["url"]), install_dir)
+ install(os.path.basename(rustsrc["url"]), install_dir)
+ if rustfmt:
+ install(os.path.basename(rustfmt["url"]), install_dir)
+ if clippy:
+ install(os.path.basename(clippy["url"]), install_dir)
+ if rust_analyzer:
+ install(os.path.basename(rust_analyzer["url"]), install_dir)
+ for std in stds:
+ install(os.path.basename(std["url"]), install_dir)
+ pass
+
+ log("Creating archive...")
+ tar_file = install_dir + ".tar.zst"
+ build_tar_package(tar_file, ".", install_dir)
+ shutil.rmtree(install_dir)
+ log("%s is ready." % tar_file)
+
+ upload_dir = os.environ.get("UPLOAD_DIR")
+ if upload_dir:
+ # Create the upload directory if it doesn't exist.
+ try:
+ log("Creating upload directory in %s..." % os.path.abspath(upload_dir))
+ os.makedirs(upload_dir)
+ except OSError as e:
+ if e.errno != errno.EEXIST:
+ raise
+ # Move the tarball to the output directory for upload.
+ log("Moving %s to the upload directory..." % tar_file)
+ shutil.move(tar_file, upload_dir)
+
+
+def expand_platform(name):
+ """Expand a shortcut name to a full Rust platform string."""
+ platforms = {
+ "android": "armv7-linux-androideabi",
+ "android_x86": "i686-linux-android",
+ "android_x86-64": "x86_64-linux-android",
+ "android_aarch64": "aarch64-linux-android",
+ "linux64": "x86_64-unknown-linux-gnu",
+ "linux32": "i686-unknown-linux-gnu",
+ "mac": "x86_64-apple-darwin",
+ "macos": "x86_64-apple-darwin",
+ "mac64": "x86_64-apple-darwin",
+ "mac32": "i686-apple-darwin",
+ "win64": "x86_64-pc-windows-msvc",
+ "win32": "i686-pc-windows-msvc",
+ "mingw32": "i686-pc-windows-gnu",
+ }
+ return platforms.get(name, name)
+
+
+def validate_channel(channel):
+ """Require a specific release version.
+
+ Packaging from meta-channels, like `stable`, `beta`, or `nightly`
+ doesn't give repeatable output. Reject such channels."""
+ channel_prefixes = ("stable", "beta", "nightly")
+ if any([channel.startswith(c) for c in channel_prefixes]):
+ if "-" not in channel:
+ raise ValueError(
+ 'Generic channel "%s" specified!'
+ "\nPlease give a specific release version"
+ ' like "1.24.0" or "beta-2018-02-20".' % channel
+ )
+
+
+def args():
+ """Read command line arguments and return options."""
+ parser = argparse.ArgumentParser()
+ parser.add_argument(
+ "--channel",
+ help="Release channel to use:"
+ " 1.xx.y, beta-yyyy-mm-dd,"
+ " nightly-yyyy-mm-dd,"
+ " bors-$rev (grab a build from rust's CI),"
+ " or dev (build from source).",
+ required=True,
+ )
+ parser.add_argument(
+ "--patch",
+ dest="patches",
+ action="append",
+ default=[],
+ help="apply the given patch file to a dev build."
+ " Patch files should be placed in /build/build-rust."
+ " Patches can be prefixed with `module-path:` to specify they"
+ " apply to that git submodule in the Rust source."
+ " e.g. `src/llvm-project:mypatch.diff` patches rust's llvm."
+ " Can be given more than once.",
+ )
+ parser.add_argument(
+ "--cargo-channel",
+ help="Release channel version to use for cargo."
+ " Defaults to the same as --channel.",
+ )
+ parser.add_argument(
+ "--host",
+ help="Host platform for the toolchain executable:"
+ " e.g. linux64 or aarch64-linux-android."
+ " Defaults to linux64.",
+ )
+ parser.add_argument(
+ "--target",
+ dest="targets",
+ action="append",
+ default=[],
+ help="Additional target platform to support:"
+ " e.g. linux32 or i686-pc-windows-gnu."
+ " can be given more than once.",
+ )
+ args = parser.parse_args()
+ if not args.cargo_channel:
+ args.cargo_channel = args.channel
+ validate_channel(args.channel)
+ validate_channel(args.cargo_channel)
+ if not args.host:
+ args.host = "linux64"
+ args.host = expand_platform(args.host)
+ args.targets = [expand_platform(t) for t in args.targets]
+
+ return args
+
+
+if __name__ == "__main__":
+ args = vars(args())
+ setup_gpg()
+ repack(**args)
diff --git a/taskcluster/scripts/misc/run-profileserver-macos.sh b/taskcluster/scripts/misc/run-profileserver-macos.sh
new file mode 100755
index 0000000000..61873a273a
--- /dev/null
+++ b/taskcluster/scripts/misc/run-profileserver-macos.sh
@@ -0,0 +1,20 @@
+#! /bin/bash -vex
+set -x -e
+
+####
+# Taskcluster friendly wrapper for running the profileserver on macOS
+####
+
+export UPLOAD_PATH=../../artifacts
+mkdir -p $UPLOAD_PATH
+
+export JARLOG_FILE="en-US.log"
+
+export LLVM_PROFDATA=$MOZ_FETCHES_DIR/clang/bin/llvm-profdata
+
+set -v
+
+./mach python python/mozbuild/mozbuild/action/install.py $MOZ_FETCHES_DIR/target.dmg $MOZ_FETCHES_DIR
+./mach python build/pgo/profileserver.py --binary $MOZ_FETCHES_DIR/*.app/Contents/MacOS/firefox
+
+tar -Jcvf $UPLOAD_PATH/profdata.tar.xz merged.profdata en-US.log
diff --git a/taskcluster/scripts/misc/run-profileserver.sh b/taskcluster/scripts/misc/run-profileserver.sh
new file mode 100755
index 0000000000..dd0ad31f05
--- /dev/null
+++ b/taskcluster/scripts/misc/run-profileserver.sh
@@ -0,0 +1,42 @@
+#! /bin/bash -vex
+
+set -x -e
+
+echo "running as" $(id)
+
+: NEED_XVFB ${NEED_XVFB:=false}
+: UPLOAD_PATH ${UPLOAD_PATH:=$HOME/artifacts}
+export UPLOAD_PATH
+
+####
+# Taskcluster friendly wrapper for running the profileserver
+####
+
+PGO_RUNDIR=obj-firefox/dist
+export JARLOG_FILE="en-US.log"
+export LLVM_PROFDATA=$MOZ_FETCHES_DIR/clang/bin/llvm-profdata
+
+set -v
+
+if $NEED_XVFB; then
+ # run XVfb in the background
+ . /builds/worker/scripts/xvfb.sh
+
+ cleanup() {
+ local rv=$?
+ cleanup_xvfb
+ exit $rv
+ }
+ trap cleanup EXIT INT
+
+ start_xvfb '1024x768x24' 2
+fi
+
+# Move our fetched firefox into objdir/dist so the jarlog entries will match
+# the paths when the final PGO stage packages the build.
+mkdir -p $PGO_RUNDIR
+mkdir -p $UPLOAD_PATH
+mv $MOZ_FETCHES_DIR/firefox $PGO_RUNDIR
+./mach python build/pgo/profileserver.py --binary $PGO_RUNDIR/firefox/firefox
+
+tar -acvf $UPLOAD_PATH/profdata.tar.xz merged.profdata en-US.log
diff --git a/taskcluster/scripts/misc/source-test-clang-setup.sh b/taskcluster/scripts/misc/source-test-clang-setup.sh
new file mode 100755
index 0000000000..5388b6376e
--- /dev/null
+++ b/taskcluster/scripts/misc/source-test-clang-setup.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+source $HOME/checkouts/gecko/taskcluster/scripts/misc/source-test-common.sh
+
+# Add clang-tidy to PATH
+export PATH=$MOZ_FETCHES_DIR/clang-tidy/bin:$PATH
+
+# Use toolchain clang
+export LD_LIBRARY_PATH=$MOZ_FETCHES_DIR/clang/lib
+
+# Write custom mozconfig
+export MOZCONFIG=$GECKO_PATH/mozconfig
+
+# Add to mozconfig all the appropriate options
+cat <<EOT >> $MOZCONFIG
+# Enable debug mode
+ac_add_options --enable-debug
+# Enable clang-plugin in order to have all defines activated for static-analysis
+ac_add_options --enable-clang-plugin
+# Enable GC zeal, a testing and debugging feature that helps find GC-related bugs in JSAPI applications.
+ac_add_options --enable-gczeal
+# Do not treat warnings as errors
+ac_add_options --disable-warnings-as-errors
+EOT
+
+# Mach lookup clang-tidy in clang-tools
+mkdir -p $MOZBUILD_STATE_PATH/clang-tools
+ln -s $MOZ_FETCHES_DIR/clang-tidy $MOZBUILD_STATE_PATH/clang-tools/clang-tidy
diff --git a/taskcluster/scripts/misc/source-test-common.sh b/taskcluster/scripts/misc/source-test-common.sh
new file mode 100755
index 0000000000..eb2409cf4e
--- /dev/null
+++ b/taskcluster/scripts/misc/source-test-common.sh
@@ -0,0 +1,16 @@
+#! /bin/bash -vex
+
+set -x -e
+
+export MOZBUILD_STATE_PATH=$HOME/workspace
+
+# Add toolchain binaries to PATH to run ./mach configure
+export PATH=$MOZ_FETCHES_DIR/clang/bin:$PATH
+export PATH=$MOZ_FETCHES_DIR/rustc/bin:$PATH
+export PATH=$MOZ_FETCHES_DIR/cbindgen:$PATH
+export PATH=$MOZ_FETCHES_DIR/nasm:$PATH
+export PATH=$MOZ_FETCHES_DIR/node/bin:$PATH
+
+# Use clang as host compiler
+export CC=$MOZ_FETCHES_DIR/clang/bin/clang
+export CXX=$MOZ_FETCHES_DIR/clang/bin/clang++
diff --git a/taskcluster/scripts/misc/source-test-infer-setup.sh b/taskcluster/scripts/misc/source-test-infer-setup.sh
new file mode 100755
index 0000000000..57786013c5
--- /dev/null
+++ b/taskcluster/scripts/misc/source-test-infer-setup.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+source $GECKO_PATH/taskcluster/scripts/misc/source-test-common.sh
+
+# Write custom mozconfig
+MOZCONFIG=$GECKO_PATH/mozconfig
+echo "ac_add_options --enable-project=mobile/android" > $MOZCONFIG
+echo "ac_add_options --target=arm-linux-androideabi" >> $MOZCONFIG
+echo "ac_add_options --with-android-sdk=${MOZ_FETCHES_DIR}/android-sdk-linux" >> $MOZCONFIG
+echo "ac_add_options --with-android-ndk=${MOZ_FETCHES_DIR}/android-ndk" >> $MOZCONFIG
+
+# Write custom grade properties
+export GRADLE_USER_HOME=$HOME/workspace/gradle
+mkdir -p $GRADLE_USER_HOME
+echo "org.gradle.daemon=false" >> ${GRADLE_USER_HOME}/gradle.properties
+
+# Mach lookup infer in infer...
+mkdir -p $MOZBUILD_STATE_PATH/infer/infer
+mv $MOZ_FETCHES_DIR/infer/{bin,lib} $MOZBUILD_STATE_PATH/infer/infer
diff --git a/taskcluster/scripts/misc/summarize-tgdiff.py b/taskcluster/scripts/misc/summarize-tgdiff.py
new file mode 100644
index 0000000000..f3a265ed66
--- /dev/null
+++ b/taskcluster/scripts/misc/summarize-tgdiff.py
@@ -0,0 +1,54 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import argparse
+import json
+import pathlib
+
+
+def filter_changes(line):
+ # Skip diff headers
+ if line.startswith("---") or line.startswith("+++"):
+ return False
+
+ # Only count lines that changed
+ return line.startswith("-") or line.startswith("+")
+
+
+def run():
+
+ parser = argparse.ArgumentParser(
+ description="Classify output of taskgraph for CI analsyis"
+ )
+ parser.add_argument(
+ "path",
+ type=pathlib.Path,
+ help="Folder containing all the TXT files from taskgraph target.",
+ )
+ parser.add_argument(
+ "threshold",
+ type=int,
+ help="Minimum number of lines to trigger a warning on taskgraph output.",
+ )
+ args = parser.parse_args()
+
+ out = {"files": {}, "status": "OK", "threshold": args.threshold}
+ for path in args.path.glob("*.txt"):
+
+ with path.open() as f:
+ nb = len(list(filter(filter_changes, f.readlines())))
+
+ out["files"][path.stem] = {
+ "nb": nb,
+ "status": "WARNING" if nb >= args.threshold else "OK",
+ }
+
+ if nb >= args.threshold:
+ out["status"] = "WARNING"
+
+ (args.path / "summary.json").write_text(json.dumps(out, sort_keys=True, indent=4))
+
+
+if __name__ == "__main__":
+ run()
diff --git a/taskcluster/scripts/misc/tooltool-download.sh b/taskcluster/scripts/misc/tooltool-download.sh
new file mode 100644
index 0000000000..5f971d725a
--- /dev/null
+++ b/taskcluster/scripts/misc/tooltool-download.sh
@@ -0,0 +1,21 @@
+# Fetch a tooltool manifest.
+
+cd $MOZ_FETCHES_DIR
+
+TOOLTOOL_DL_FLAGS=
+
+if [ -n "$UPLOAD_DIR" ]; then
+ TOOLTOOL_DL_FLAGS="${TOOLTOOL_DL_FLAGS=} --artifact-manifest $UPLOAD_DIR/toolchains.json"
+fi
+
+: TOOLTOOL_CACHE ${TOOLTOOL_CACHE:=/builds/worker/tooltool-cache}
+export TOOLTOOL_CACHE
+
+if [ -z "$TOOLTOOL_MANIFEST" ]; then
+ echo This script should not be used when there is no tooltool manifest set
+ exit 1
+fi
+
+${GECKO_PATH}/mach artifact toolchain -v${TOOLTOOL_DL_FLAGS} --tooltool-manifest "${GECKO_PATH}/${TOOLTOOL_MANIFEST}"${TOOLTOOL_CACHE:+ --cache-dir ${TOOLTOOL_CACHE}} --retry 5
+
+cd $OLDPWD
diff --git a/taskcluster/scripts/misc/unify.sh b/taskcluster/scripts/misc/unify.sh
new file mode 100755
index 0000000000..85c57667d8
--- /dev/null
+++ b/taskcluster/scripts/misc/unify.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+set -x -e
+
+export LIPO=$MOZ_FETCHES_DIR/cctools/bin/x86_64-apple-darwin-lipo
+
+for i in x64 aarch64; do
+ $GECKO_PATH/mach python -m mozbuild.action.unpack_dmg $MOZ_FETCHES_DIR/$i/target.dmg $i
+done
+$GECKO_PATH/mach python $GECKO_PATH/toolkit/mozapps/installer/unify.py x64/*.app aarch64/*.app
+$GECKO_PATH/mach python -m mozbuild.action.make_dmg x64 target.dmg
+
+mkdir -p $UPLOAD_DIR
+mv target.dmg $UPLOAD_DIR/
+
+python3 -c '
+import json
+import os
+
+for artifact in json.loads(os.environ["MOZ_FETCHES"]):
+ if artifact.get("extract") and artifact.get("dest", "").startswith("x64"):
+ print(artifact["dest"], os.path.basename(artifact["artifact"]))
+' | while read dir artifact; do
+ if [ "$artifact" = target.crashreporter-symbols.zip ]; then
+ $GECKO_PATH/mach python $GECKO_PATH/python/mozbuild/mozbuild/action/unify_symbols.py $MOZ_FETCHES_DIR/$dir $MOZ_FETCHES_DIR/aarch64${dir#x64}
+ else
+ $GECKO_PATH/mach python $GECKO_PATH/python/mozbuild/mozbuild/action/unify_tests.py $MOZ_FETCHES_DIR/$dir $MOZ_FETCHES_DIR/aarch64${dir#x64}
+ fi
+
+ case $artifact in
+ *.tar.gz)
+ find $MOZ_FETCHES_DIR/$dir -not -type d -printf '%P\0' | tar -C $MOZ_FETCHES_DIR/$dir --owner=0:0 --group=0:0 -zcf $artifact --no-recursion --null -T -
+ ;;
+ *.zip)
+ $GECKO_PATH/mach python $GECKO_PATH/python/mozbuild/mozbuild/action/zip.py -C $MOZ_FETCHES_DIR/$dir $PWD/$artifact '*'
+ ;;
+ esac
+ mv $artifact $UPLOAD_DIR/
+done
diff --git a/taskcluster/scripts/misc/unpack-sdk.py b/taskcluster/scripts/misc/unpack-sdk.py
new file mode 100644
index 0000000000..290370db42
--- /dev/null
+++ b/taskcluster/scripts/misc/unpack-sdk.py
@@ -0,0 +1,87 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import hashlib
+import os
+import shutil
+import stat
+import sys
+import tempfile
+from io import BytesIO
+from urllib.request import urlopen
+
+from mozpack.macpkg import Pbzx, uncpio, unxar
+
+
+def unpack_sdk(url, sha256, extract_prefix, out_dir="."):
+ with tempfile.TemporaryFile() as pkg:
+ hash = hashlib.sha256()
+ with urlopen(url) as fh:
+ # Equivalent to shutil.copyfileobj, but computes sha256 at the same time.
+ while True:
+ buf = fh.read(1024 * 1024)
+ if not buf:
+ break
+ hash.update(buf)
+ pkg.write(buf)
+ digest = hash.hexdigest()
+ if digest != sha256:
+ raise Exception(f"(actual) {digest} != (expected) {sha256}")
+
+ pkg.seek(0, os.SEEK_SET)
+
+ for name, content in unxar(pkg):
+ if name in ("Payload", "Content"):
+ extract_payload(content, extract_prefix, out_dir)
+
+
+def extract_payload(fileobj, extract_prefix, out_dir="."):
+ hardlinks = {}
+ for path, st, content in uncpio(Pbzx(fileobj)):
+ # When there are hardlinks, normally a cpio stream is supposed to
+ # contain the data for all of them, but, even with compression, that
+ # can be a waste of space, so in some cpio streams (*cough* *cough*,
+ # Apple's, e.g. in Xcode), the files after the first one have dummy
+ # data.
+ # As we may be filtering the first file out (if it doesn't match
+ # extract_prefix), we need to keep its data around (we're not going
+ # to be able to rewind).
+ # We could do something fancy in the case where the first file is not
+ # filtered out, but in practice, it's not worth the extra complexity.
+ if stat.S_ISREG(st.mode) and st.nlink > 1:
+ key = (st.dev, st.ino)
+ hardlink = hardlinks.get(key)
+ if hardlink:
+ hardlink[0] -= 1
+ if hardlink[0] == 0:
+ del hardlinks[key]
+ else:
+ hardlink = hardlinks[key] = [st.nlink - 1, BytesIO(content.read())]
+ content = hardlink[1]
+ content.seek(0)
+
+ if not path:
+ continue
+ path = path.decode()
+ if not path.startswith(extract_prefix):
+ continue
+ path = os.path.join(out_dir, path[len(extract_prefix) :].lstrip("/"))
+ if stat.S_ISDIR(st.mode):
+ os.makedirs(path, exist_ok=True)
+ else:
+ parent = os.path.dirname(path)
+ if parent:
+ os.makedirs(parent, exist_ok=True)
+
+ if stat.S_ISLNK(st.mode):
+ os.symlink(content.read(), path)
+ elif stat.S_ISREG(st.mode):
+ with open(path, "wb") as out:
+ shutil.copyfileobj(content, out)
+ else:
+ raise Exception(f"File mode {st.mode:o} is not supported")
+
+
+if __name__ == "__main__":
+ unpack_sdk(*sys.argv[1:])
diff --git a/taskcluster/scripts/misc/verify-devtools-bundle.py b/taskcluster/scripts/misc/verify-devtools-bundle.py
new file mode 100644
index 0000000000..901db0eb08
--- /dev/null
+++ b/taskcluster/scripts/misc/verify-devtools-bundle.py
@@ -0,0 +1,85 @@
+#!/usr/bin/env python3
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, # You can obtain one at http://mozilla.org/MPL/2.0/.
+
+"""
+Check that the current sourcemap and worker bundles built for DevTools are up to date.
+This job should fail if any file impacting the bundle creation was modified without
+regenerating the bundles.
+
+This check should be run after building the bundles via:
+cd devtools/client/debugger
+yarn && node bin/bundle.js
+
+Those steps are done in the devtools-verify-bundle job, prior to calling this script.
+The script will only run `hg status devtools/` and check that no change is detected by
+mercurial.
+"""
+
+import argparse
+import json
+import subprocess
+import sys
+
+# Ignore module-manifest.json updates which can randomly happen when
+# building bundles.
+hg_exclude = "devtools/client/debugger/bin/module-manifest.json"
+
+print("Run `hg status devtools/`")
+status = (
+ subprocess.check_output(["hg", "status", "-n", "devtools/", "-X", hg_exclude])
+ .decode("utf-8")
+ .split("\n")
+)
+print(" status:")
+print("-" * 80)
+
+doc = "https://firefox-source-docs.mozilla.org/devtools/tests/node-tests.html#devtools-bundle"
+
+failures = {}
+for l in status:
+ if not l:
+ # Ignore empty lines
+ continue
+
+ failures[l] = [
+ {
+ "path": l,
+ "line": None,
+ "column": None,
+ "level": "error",
+ "message": l
+ + " is outdated and needs to be regenerated, "
+ + f"instructions at: {doc}",
+ }
+ ]
+
+
+diff = subprocess.check_output(["hg", "diff", "devtools/", "-X", hg_exclude]).decode(
+ "utf-8"
+)
+
+# Revert all the changes created by `node bin/bundle.js`
+subprocess.check_output(["hg", "revert", "-C", "devtools/"])
+
+parser = argparse.ArgumentParser()
+parser.add_argument("--output", required=True)
+args = parser.parse_args()
+
+with open(args.output, "w") as fp:
+ json.dump(failures, fp, indent=2)
+
+if len(failures) > 0:
+ print(
+ "TEST-UNEXPECTED-FAIL | devtools-bundle | DevTools bundles need to be regenerated, "
+ + f"instructions at: {doc}"
+ )
+
+ print("The following devtools bundles were detected as outdated:")
+ for failure in failures:
+ print(failure)
+
+ print(f"diff:{diff}")
+
+ sys.exit(1)
diff --git a/taskcluster/scripts/misc/vs-cleanup.sh b/taskcluster/scripts/misc/vs-cleanup.sh
new file mode 100644
index 0000000000..8bb93b266f
--- /dev/null
+++ b/taskcluster/scripts/misc/vs-cleanup.sh
@@ -0,0 +1,13 @@
+case "$(uname -s)" in
+MINGW*|MSYS*)
+ # For some reason, by the time the task finishes, and when run-task
+ # starts its cleanup, there is still a vctip.exe (MSVC telemetry-related
+ # process) running and using a dll that run-task can't then delete.
+ # "For some reason", because the same doesn't happen with other tasks.
+ # In fact, this used to happen with older versions of MSVC for other
+ # tasks, and stopped when upgrading to 15.8.4...
+ taskkill -f -im vctip.exe || true
+ # Same with the mspdbsrv process.
+ taskkill -f -im mspdbsrv.exe || true
+ ;;
+esac
diff --git a/taskcluster/scripts/misc/vs-setup.sh b/taskcluster/scripts/misc/vs-setup.sh
new file mode 100644
index 0000000000..3721f93114
--- /dev/null
+++ b/taskcluster/scripts/misc/vs-setup.sh
@@ -0,0 +1,42 @@
+VSDIR=vs
+VSPATH="${MOZ_FETCHES_DIR}/${VSDIR}"
+UNIX_VSPATH="$(cd ${MOZ_FETCHES_DIR} && pwd)/${VSDIR}"
+VCDIR=VC/Tools/MSVC/14.16.27023
+if [ ! -d "${VSPATH}/${VCDIR}" ]; then
+ VCDIR=VC/Tools/MSVC/14.29.30133
+fi
+if [ ! -d "${VSPATH}/${VCDIR}" ]; then
+ VCDIR=VC/Tools/MSVC/14.35.32215
+fi
+SDKDIR="Windows Kits/10"
+SDK_VERSION=10.0.17134.0
+if [ ! -d "${VSPATH}/${SDKDIR}/Lib/${SDK_VERSION}" ]; then
+ SDK_VERSION=10.0.19041.0
+fi
+if [ ! -d "${VSPATH}/${SDKDIR}/Lib/${SDK_VERSION}" ]; then
+ SDK_VERSION=10.0.22621.0
+fi
+
+case "$TARGET" in
+aarch64-pc-windows-msvc)
+ SDK_CPU=arm64
+ ;;
+i686-pc-windows-msvc)
+ SDK_CPU=x86
+ ;;
+*)
+ SDK_CPU=x64
+ ;;
+esac
+
+CRT_DIR="microsoft.vc141.crt"
+if [ ! -d "${UNIX_VSPATH}/redist/${SDK_CPU}/$CRT_DIR" ]; then
+ CRT_DIR="microsoft.vc142.crt"
+fi
+if [ ! -d "${UNIX_VSPATH}/redist/${SDK_CPU}/$CRT_DIR" ]; then
+ CRT_DIR="microsoft.vc143.crt"
+fi
+
+export INCLUDE="${VSPATH}/${VCDIR}/include;${VSPATH}/${VCDIR}/atlmfc/include;${VSPATH}/${SDKDIR}/Include/${SDK_VERSION}/ucrt;${VSPATH}/${SDKDIR}/Include/${SDK_VERSION}/shared;${VSPATH}/${SDKDIR}/Include/${SDK_VERSION}/um;${VSPATH}/${SDKDIR}/Include/${SDK_VERSION}/winrt;${VSPATH}/dia sdk/include"
+export LIB="${VSPATH}/${VCDIR}/lib/${SDK_CPU};${VSPATH}/${VCDIR}/atlmfc/lib/${SDK_CPU};${VSPATH}/${SDKDIR}/Lib/${SDK_VERSION}/um/${SDK_CPU};${VSPATH}/${SDKDIR}/Lib/${SDK_VERSION}/ucrt/${SDK_CPU};${VSPATH}/dia sdk/lib/amd64"
+export PATH="${UNIX_VSPATH}/${VCDIR}/bin/hostx64/${SDK_CPU}:${UNIX_VSPATH}/${VCDIR}/bin/hostx86/x86:${UNIX_VSPATH}/${SDKDIR}/bin/${SDK_VERSION}/${SDK_CPU}:${UNIX_VSPATH}/redist/${SDK_CPU}/$CRT_DIR:${UNIX_VSPATH}/${SDKDIR}/redist/ucrt/dlls/${SDK_CPU}:${UNIX_VSPATH}/dia sdk/bin/amd64:$PATH"
diff --git a/taskcluster/scripts/misc/wr-cargotest-macos-build.sh b/taskcluster/scripts/misc/wr-cargotest-macos-build.sh
new file mode 100755
index 0000000000..23b4ccedec
--- /dev/null
+++ b/taskcluster/scripts/misc/wr-cargotest-macos-build.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -x -e -v
+
+source ${GECKO_PATH}/taskcluster/scripts/misc/wr-macos-cross-build-setup.sh
+
+export UPLOAD_DIR="${HOME}/artifacts"
+mkdir -p "${UPLOAD_DIR}"
+
+# Do a cross-build for cargo test run
+pushd "${GECKO_PATH}/gfx/wr"
+CARGOFLAGS="-vv --frozen --target=${TARGET_TRIPLE}" \
+ CARGOTESTFLAGS="--no-run" \
+ ci-scripts/macos-debug-tests.sh
+# Package up the test binaries
+cd "target/${TARGET_TRIPLE}"
+mkdir cargo-test-binaries
+mv debug cargo-test-binaries/
+find cargo-test-binaries/debug/deps -type f -maxdepth 1 -executable -print0 > binaries.lst
+tar cjf cargo-test-binaries.tar.bz2 --null -T binaries.lst
+mv cargo-test-binaries.tar.bz2 "${UPLOAD_DIR}"
+# Clean the build
+cd "${GECKO_PATH}/gfx/wr"
+rm -rf target
+popd
diff --git a/taskcluster/scripts/misc/wr-macos-cross-build-setup.sh b/taskcluster/scripts/misc/wr-macos-cross-build-setup.sh
new file mode 100755
index 0000000000..1c9faa4b9b
--- /dev/null
+++ b/taskcluster/scripts/misc/wr-macos-cross-build-setup.sh
@@ -0,0 +1,60 @@
+#!/bin/bash
+set -x -e -v
+
+export TARGET_TRIPLE="x86_64-apple-darwin"
+
+MACOS_SYSROOT="${MOZ_FETCHES_DIR}/MacOSX13.3.sdk"
+CLANGDIR="${MOZ_FETCHES_DIR}/clang"
+
+# Deploy the wrench dependencies
+mv ${MOZ_FETCHES_DIR}/wrench-deps/{vendor,.cargo} "${GECKO_PATH}/gfx/wr/"
+
+# Building wrench with the `headless` feature also builds the osmesa-src crate,
+# which includes building C++ code. We have to do a bunch of shenanigans
+# to make this cross-compile properly.
+
+pushd "${MOZ_FETCHES_DIR}/clang/bin"
+
+# Add a pkg-config cross-compile wrapper. Without this, the configure script
+# will use pkg-config from the host, which will find host libraries that are
+# not what we want. This script stolen from
+# https://autotools.io/pkgconfig/cross-compiling.html
+cat > ${TARGET_TRIPLE}-pkg-config <<END_PKGCONFIG_WRAPPER
+#!/bin/sh
+export PKG_CONFIG_DIR=
+export PKG_CONFIG_LIBDIR=${MACOS_SYSROOT}/usr/lib/pkgconfig:${MACOS_SYSROOT}/usr/share/pkgconfig
+export PKG_CONFIG_SYSROOT_DIR=${MACOS_SYSROOT}
+exec pkg-config "\$@"
+END_PKGCONFIG_WRAPPER
+chmod +x "${TARGET_TRIPLE}-pkg-config"
+popd
+
+[ -d "${MOZ_FETCHES_DIR}/clang-mac/clang" ] && cat > ${MOZ_FETCHES_DIR}/clang-mac/clang/bin/llvm-config <<EOF_LLVM_CONFIG
+#!/bin/sh
+${MOZ_FETCHES_DIR}/clang/bin/llvm-config "\$@" | sed 's,${MOZ_FETCHES_DIR}/clang,${MOZ_FETCHES_DIR}/clang-mac/clang,g;s,-lLLVM-[0-9]\+,-lLLVM,g'
+EOF_LLVM_CONFIG
+
+export PATH="${MOZ_FETCHES_DIR}/rustc/bin:${MOZ_FETCHES_DIR}/clang/bin:${MOZ_FETCHES_DIR}/wrench-deps/meson:${PATH}"
+
+# Tell the configure script where to find zlib, because otherwise it tries
+# to use pkg-config to find it, which fails (no .pc file in the macos SDK).
+export ZLIB_CFLAGS="-I${MACOS_SYSROOT}/usr/include"
+export ZLIB_LIBS="-L${MACOS_SYSROOT}/usr/lib -lz"
+
+# Set up compiler and flags for cross-compile. Careful to only export the
+# target-specific CFLAGS/CXXFLAGS variables, to not break any host builds.
+export CC="${CLANGDIR}/bin/clang"
+TARGET_CFLAGS="-fuse-ld=lld -target ${TARGET_TRIPLE} -mmacosx-version-min=10.12 --rtlib=compiler-rt --sysroot ${MACOS_SYSROOT} -Qunused-arguments"
+export CFLAGS_${TARGET_TRIPLE//-/_}="${TARGET_CFLAGS}"
+export CXX="${CLANGDIR}/bin/clang++"
+TARGET_CXXFLAGS="-fuse-ld=lld -target ${TARGET_TRIPLE} -mmacosx-version-min=10.12 --rtlib=compiler-rt --sysroot ${MACOS_SYSROOT} -stdlib=libc++ -Qunused-arguments"
+export CXXFLAGS_${TARGET_TRIPLE//-/_}="${TARGET_CXXFLAGS}"
+export AR="${CLANGDIR}/bin/llvm-ar"
+
+# See documentation in cargo-linker for why we need this. TL;DR is that passing
+# the right arguments to the linker when invoked by cargo is nigh impossible
+# without this.
+export MOZ_CARGO_WRAP_LD="${CC}"
+export MOZ_CARGO_WRAP_LD_CXX="${CXX}"
+export MOZ_CARGO_WRAP_LDFLAGS="${TARGET_CFLAGS}"
+export CARGO_TARGET_X86_64_APPLE_DARWIN_LINKER="${GECKO_PATH}/build/cargo-linker"
diff --git a/taskcluster/scripts/misc/wrench-android-build.sh b/taskcluster/scripts/misc/wrench-android-build.sh
new file mode 100755
index 0000000000..975ba8b85b
--- /dev/null
+++ b/taskcluster/scripts/misc/wrench-android-build.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+set -x -e -v
+
+MODE=${1?"First argument must be debug|release"}
+
+pushd "${MOZ_FETCHES_DIR}"
+mv wrench-deps/{vendor,.cargo,cargo-apk} ${GECKO_PATH}/gfx/wr
+popd
+
+pushd "${GECKO_PATH}/gfx/wr/wrench"
+# These things come from the toolchain dependencies of the job that invokes
+# this script (webrender-wrench-android-build).
+export PATH="${PATH}:${MOZ_FETCHES_DIR}/rustc/bin"
+export PATH="${PATH}:${JAVA_HOME}/bin"
+export ANDROID_SDK_ROOT="${MOZ_FETCHES_DIR}/android-sdk-linux"
+export ANDROID_NDK_ROOT="${MOZ_FETCHES_DIR}/android-ndk"
+
+if [ "$MODE" == "debug" ]; then
+ ../cargo-apk/bin/cargo-apk apk build --frozen --verbose --lib
+elif [ "$MODE" == "release" ]; then
+ ../cargo-apk/bin/cargo-apk apk build --frozen --verbose --lib --release
+else
+ echo "Unknown mode '${MODE}'; must be 'debug' or 'release'"
+ exit 1
+fi
+popd
diff --git a/taskcluster/scripts/misc/wrench-deps-vendoring.sh b/taskcluster/scripts/misc/wrench-deps-vendoring.sh
new file mode 100755
index 0000000000..f81dc1be93
--- /dev/null
+++ b/taskcluster/scripts/misc/wrench-deps-vendoring.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -x -e -v
+
+# This scripts uses `cargo-vendor` to download all the dependencies needed
+# to build `wrench` (a tool used for standalone testing of webrender), and
+# exports those dependencies as a tarball. This avoids having to download
+# these dependencies on every test job that uses `wrench`.
+
+UPLOAD_DIR=$HOME/artifacts
+
+cd $GECKO_PATH
+export PATH=$PATH:$MOZ_FETCHES_DIR/rustc/bin:$HOME/.cargo/bin
+cd gfx/wr/
+mkdir .cargo
+cargo vendor --sync ./Cargo.toml > .cargo/config
+mkdir wrench-deps
+mv vendor .cargo wrench-deps/
+mkdir wrench-deps/cargo-apk
+# Until there's a version of cargo-apk published on crates.io that has
+# https://github.com/rust-windowing/android-ndk-rs/pull/236, we need to use
+# an unpublished version. Additionally, until we update the NDK version used
+# in gecko we must use our own patched version. See bug 1615148.
+(cd $MOZ_FETCHES_DIR/android-ndk-rs/cargo-apk; cargo update -p home --precise 0.5.5)
+cargo install --locked --path $MOZ_FETCHES_DIR/android-ndk-rs/cargo-apk --root wrench-deps/cargo-apk cargo-apk
+
+ci-scripts/install-meson.sh
+mv meson wrench-deps/meson
+
+mkdir -p $UPLOAD_DIR
+tar caf $UPLOAD_DIR/wrench-deps.tar.zst wrench-deps
diff --git a/taskcluster/scripts/misc/wrench-macos-build.sh b/taskcluster/scripts/misc/wrench-macos-build.sh
new file mode 100755
index 0000000000..43842d4510
--- /dev/null
+++ b/taskcluster/scripts/misc/wrench-macos-build.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+set -x -e -v
+
+source ${GECKO_PATH}/taskcluster/scripts/misc/wr-macos-cross-build-setup.sh
+
+# The osmesa-src build which we do as part of the headless build below
+# doesn't seem to always use CFLAGS/CXXFLAGS where expected. Instead we
+# just squash those flags into CC/CXX and everything works out.
+# Export HOST_CC and HOST_CXX without the squashed flags, so that host
+# builds use them and don't see the target flags.
+export HOST_CC="${CC}"
+export HOST_CXX="${CXX}"
+CFLAGS_VAR="CFLAGS_${TARGET_TRIPLE//-/_}"
+CXXFLAGS_VAR="CXXFLAGS_${TARGET_TRIPLE//-/_}"
+export CC="${CC} ${!CFLAGS_VAR}"
+export ${CFLAGS_VAR}=
+export CXX="${CXX} ${!CXXFLAGS_VAR}"
+export ${CXXFLAGS_VAR}=
+
+export MESON_CROSSFILE=${GECKO_PATH}/gfx/wr/ci-scripts/etc/wr-darwin.meson
+export UPLOAD_DIR="${HOME}/artifacts"
+mkdir -p "${UPLOAD_DIR}"
+
+# Do a cross-build without the `headless` feature
+pushd "${GECKO_PATH}/gfx/wr/wrench"
+cargo build --release -vv --frozen --target=${TARGET_TRIPLE}
+# Package up the resulting wrench binary
+cd "../target/${TARGET_TRIPLE}"
+mkdir -p wrench-macos/bin
+mv release/wrench wrench-macos/bin/
+tar cjf wrench-macos.tar.bz2 wrench-macos
+mv wrench-macos.tar.bz2 "${UPLOAD_DIR}"
+# Clean the build
+cd "${GECKO_PATH}/gfx/wr"
+rm -rf target
+popd
+
+# Do a cross-build with the `headless` feature
+pushd "${GECKO_PATH}/gfx/wr/wrench"
+cargo build --release -vv --frozen --target=${TARGET_TRIPLE} --features headless
+# Package up the wrench binary and some libraries that we will need
+cd "../target/${TARGET_TRIPLE}"
+
+# Copy the native macOS libLLVM as dynamic dependency
+cp "${MOZ_FETCHES_DIR}/clang-mac/clang/lib/libLLVM.dylib" release/build/osmesa-src*/out/mesa/src/gallium/targets/osmesa/
+
+mkdir wrench-macos-headless
+mv release wrench-macos-headless/
+tar cjf wrench-macos-headless.tar.bz2 \
+ wrench-macos-headless/release/wrench \
+ wrench-macos-headless/release/build/osmesa-src*/out/mesa/src/gallium/targets/osmesa \
+ wrench-macos-headless/release/build/osmesa-src*/out/mesa/src/mapi/shared-glapi
+mv wrench-macos-headless.tar.bz2 "${UPLOAD_DIR}"
+
+# Clean the build
+cd "${GECKO_PATH}/gfx/wr"
+rm -rf target
+popd
diff --git a/taskcluster/scripts/misc/wrench-windows-tests.sh b/taskcluster/scripts/misc/wrench-windows-tests.sh
new file mode 100644
index 0000000000..52b3a32173
--- /dev/null
+++ b/taskcluster/scripts/misc/wrench-windows-tests.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+set -x -e -v
+
+# This script runs the windows CI scripts for standalone WebRender. The CI
+# scripts build WebRender in various "standalone" (without Gecko)
+# configurations and also run WebRender's reftest suite using the `wrench`
+# tool in the WebRender repository.
+# The builds involved require a number of dependencies to be available,
+# which is all handled below.
+
+cd $GECKO_PATH
+
+export PATH=$PATH:$(cd $MOZ_FETCHES_DIR && pwd)/rustc/bin
+
+. taskcluster/scripts/misc/vs-setup.sh
+
+# Move the wrench-deps vendored crates into place
+mv ${MOZ_FETCHES_DIR}/wrench-deps/{vendor,.cargo} gfx/wr
+cd gfx/wr
+
+# This is needed for the WebRender standalone reftests
+powershell.exe 'iex (Get-Content -Raw ci-scripts\set-screenresolution.ps1); Set-ScreenResolution 1920 1080'
+
+# Run the CI scripts
+export CARGOFLAGS='--verbose --frozen'
+cmd.exe /c 'ci-scripts\windows-tests.cmd'
+
+. $GECKO_PATH/taskcluster/scripts/misc/vs-cleanup.sh
diff --git a/taskcluster/scripts/misc/zstdpy b/taskcluster/scripts/misc/zstdpy
new file mode 100755
index 0000000000..7fc27fded6
--- /dev/null
+++ b/taskcluster/scripts/misc/zstdpy
@@ -0,0 +1,79 @@
+#!/usr/bin/env python3
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+"""This script compresses and decompresses data using the zstandard compression
+format, as provided by the python-zstandard module.
+
+Data is provided on stdin and output on stdout."""
+
+import sys
+import zstandard
+from argparse import ArgumentParser
+
+
+def main(argv=None):
+ parser = ArgumentParser(description=__doc__)
+ parser.set_defaults(mode="compress")
+ parser.add_argument(
+ "-z",
+ "--compress",
+ dest="mode",
+ action="store_const",
+ const="compress",
+ help="compress the data (this is the default)",
+ )
+ parser.add_argument(
+ "-d",
+ "--decompress",
+ dest="mode",
+ action="store_const",
+ const="decompress",
+ help="decompress the data",
+ )
+ parser.add_argument(
+ "-T",
+ "--threads",
+ dest="threads",
+ default=1,
+ type=int,
+ help="Compress using # working threads. If 0, use number of CPUs on the system. (default 1)",
+ )
+ parser.add_argument(
+ "-l",
+ "--level",
+ dest="level",
+ default=3,
+ type=int,
+ help="Compression level from 1-22 (default 3)",
+ )
+ parser.add_argument(
+ "file",
+ nargs="?",
+ help="File to compress/decompress. Default is stdin.",
+ )
+
+ args = parser.parse_args(argv)
+
+ # The zstd commandline tool uses 0 to specify number of threads equal to
+ # the number of CPUs whereas the python module uses negative numbers to
+ # flag this behavior. Emulate the zstd commandline utility's behavior here
+ if args.threads == 0:
+ args.threads = -1
+
+ if args.file:
+ in_file = open(args.file, "rb")
+ else:
+ in_file = sys.stdin.buffer
+
+ if args.mode == "compress":
+ ctx = zstandard.ZstdCompressor(level=args.level, threads=args.threads)
+ elif args.mode == "decompress":
+ ctx = zstandard.ZstdDecompressor()
+
+ ctx.copy_stream(in_file, sys.stdout.buffer)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/taskcluster/scripts/run-task b/taskcluster/scripts/run-task
new file mode 100755
index 0000000000..fb0d32f8f5
--- /dev/null
+++ b/taskcluster/scripts/run-task
@@ -0,0 +1,1005 @@
+#!/usr/bin/python3 -u
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+"""Run a task after performing common actions.
+
+This script is meant to be the "driver" for TaskCluster based tasks.
+It receives some common arguments to control the run-time environment.
+
+It performs actions as requested from the arguments. Then it executes
+the requested process and prints its output, prefixing it with the
+current time to improve log usefulness.
+"""
+
+import sys
+
+
+if sys.version_info[0:2] < (3, 5):
+ print('run-task requires Python 3.5+')
+ sys.exit(1)
+
+
+import argparse
+import datetime
+import errno
+import io
+import json
+import os
+import random
+import re
+import shutil
+import signal
+import socket
+import stat
+import subprocess
+
+import urllib.error
+import urllib.request
+
+from threading import Thread
+
+FINGERPRINT_URL = 'http://taskcluster/secrets/v1/secret/project/taskcluster/gecko/hgfingerprint'
+FALLBACK_FINGERPRINT = {
+ 'fingerprints':
+ "sha256:4D:EB:21:6E:35:2F:99:C6:8F:C3:47:9B:57:B8:6C:17:15:8F:86:09:D4:6C:17:1D:87:B0:DE:F9:0E:51:70:FC,"
+ "sha256:90:85:39:A8:4F:47:20:58:98:0D:48:4D:8A:AC:71:DB:5C:AF:76:44:F1:B1:3E:56:92:FF:21:8C:C9:A9:F7:11"
+}
+
+HGMOINTERNAL_CONFIG_URL = 'http://taskcluster/secrets/v1/secret/project/taskcluster/gecko/hgmointernal'
+
+CACHE_UID_GID_MISMATCH = '''
+There is a UID/GID mismatch on the cache. This likely means:
+
+a) different tasks are running as a different user/group
+b) different Docker images have different UID/GID for the same user/group
+
+Our cache policy is that the UID/GID for ALL tasks must be consistent
+for the lifetime of the cache. This eliminates permissions problems due
+to file/directory user/group ownership.
+
+To make this error go away, ensure that all Docker images are use
+a consistent UID/GID and that all tasks using this cache are running as
+the same user/group.
+'''
+
+
+NON_EMPTY_VOLUME = '''
+error: volume %s is not empty
+
+Our Docker image policy requires volumes to be empty.
+
+The volume was likely populated as part of building the Docker image.
+Change the Dockerfile and anything run from it to not create files in
+any VOLUME.
+
+A lesser possibility is that you stumbled upon a TaskCluster platform bug
+where it fails to use new volumes for tasks.
+'''
+
+
+FETCH_CONTENT_NOT_FOUND = '''
+error: fetch-content script not found
+
+The script at `taskcluster/scripts/misc/fetch-content` could not be
+detected in the current environment.
+
+If this task clones gecko, make sure the GECKO_PATH environment variable
+is set to proper location. Otherwise, the script may need to be mounted
+or added to the task's docker image then added to the PATH.
+'''
+
+# The exit code to use when caches should be purged and the task retried.
+# This is EX_OSFILE (from sysexits.h):
+# Some system file does not exist, cannot be opened, or has some
+# sort of error (e.g., syntax error).
+EXIT_PURGE_CACHE = 72
+
+
+IS_MACOSX = sys.platform == 'darwin'
+IS_POSIX = os.name == 'posix'
+IS_WINDOWS = os.name == 'nt'
+
+
+def print_line(prefix, m):
+ now = datetime.datetime.utcnow().isoformat().encode('utf-8')
+ # slice microseconds to 3 decimals.
+ now = now[:-3] if now[-7:-6] == b'.' else now
+ bytes = b'[%s %sZ] %s' % (prefix, now, m)
+ written = 0
+ while written < len(bytes):
+ written += (sys.stdout.buffer.write(bytes[written:]) or 0)
+ sys.stdout.buffer.flush()
+
+
+def run_and_prefix_output(prefix, args, *, extra_env=None, cwd=None):
+ """Runs a process and prefixes its output with the time.
+
+ Returns the process exit code.
+ """
+ print_line(
+ prefix,
+ b"executing %r%s\n" % (args, b"in %s" % (cwd.encode("utf-8"),) if cwd else b""),
+ )
+
+ env = dict(os.environ)
+ env.update(extra_env or {})
+
+ # Note: TaskCluster's stdin is a TTY. This attribute is lost
+ # when we pass sys.stdin to the invoked process. If we cared
+ # to preserve stdin as a TTY, we could make this work. But until
+ # someone needs it, don't bother.
+
+ # We want stdout to be bytes on Python 3. That means we can't use
+ # universal_newlines=True (because it implies text mode). But
+ # p.stdout.readline() won't work for bytes text streams. So, on Python 3,
+ # we manually install a latin1 stream wrapper. This allows us to readline()
+ # and preserves bytes, without losing any data.
+
+ p = subprocess.Popen(args,
+ # Disable buffering because we want to receive output
+ # as it is generated so timestamps in logs are
+ # accurate.
+ bufsize=0,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT,
+ stdin=sys.stdin.fileno(),
+ env=env,
+ cwd=cwd)
+
+ stdout = io.TextIOWrapper(p.stdout, encoding='latin1')
+
+ while True:
+ data = stdout.readline().encode('latin1')
+
+ if data == b'':
+ break
+
+ print_line(prefix, data)
+
+ return p.wait()
+
+
+def get_posix_user_group(user, group):
+ import grp
+ import pwd
+
+ try:
+ user_record = pwd.getpwnam(user)
+ except KeyError:
+ print('could not find user %s; specify a valid user with --user' % user)
+ sys.exit(1)
+
+ try:
+ group_record = grp.getgrnam(group)
+ except KeyError:
+ print('could not find group %s; specify a valid group with --group' %
+ group)
+ sys.exit(1)
+
+ # Most tasks use worker:worker. We require they have a specific numeric ID
+ # because otherwise it is too easy for files written to caches to have
+ # mismatched numeric IDs, which results in permissions errors.
+ if user_record.pw_name == 'worker' and user_record.pw_uid != 1000:
+ print('user `worker` must have uid=1000; got %d' % user_record.pw_uid)
+ sys.exit(1)
+
+ if group_record.gr_name == 'worker' and group_record.gr_gid != 1000:
+ print('group `worker` must have gid=1000; got %d' % group_record.gr_gid)
+ sys.exit(1)
+
+ # Find all groups to which this user is a member.
+ gids = [g.gr_gid for g in grp.getgrall() if group in g.gr_mem]
+
+ return user_record, group_record, gids
+
+
+def write_audit_entry(path, msg):
+ now = datetime.datetime.utcnow().isoformat().encode('utf-8')
+ with open(path, 'ab') as fh:
+ fh.write(b'[%sZ %s] %s\n' % (
+ now, os.environb.get(b'TASK_ID', b'UNKNOWN'), msg))
+
+
+WANTED_DIR_MODE = stat.S_IXUSR | stat.S_IRUSR | stat.S_IWUSR
+
+
+def set_dir_permissions(path, uid, gid):
+ st = os.lstat(path)
+
+ if st.st_uid != uid or st.st_gid != gid:
+ os.chown(path, uid, gid)
+
+ # Also make sure dirs are writable in case we need to delete
+ # them.
+ if st.st_mode & WANTED_DIR_MODE != WANTED_DIR_MODE:
+ os.chmod(path, st.st_mode | WANTED_DIR_MODE)
+
+
+def chown_recursive(path, user, group, uid, gid):
+ print_line(b'chown',
+ b'recursively changing ownership of %s to %s:%s\n' %
+ (path.encode('utf-8'), user.encode('utf-8'), group.encode(
+ 'utf-8')))
+
+ set_dir_permissions(path, uid, gid)
+
+ for root, dirs, files in os.walk(path):
+ for d in dirs:
+ set_dir_permissions(os.path.join(root, d), uid, gid)
+
+ for f in files:
+ # File may be a symlink that points to nowhere. In which case
+ # os.chown() would fail because it attempts to follow the
+ # symlink. We only care about directory entries, not what
+ # they point to. So setting the owner of the symlink should
+ # be sufficient.
+ os.lchown(os.path.join(root, f), uid, gid)
+
+
+def configure_cache_posix(cache, user, group,
+ untrusted_caches, running_as_root):
+ """Configure a cache path on POSIX platforms.
+
+ For each cache, we write out a special file denoting attributes and
+ capabilities of run-task and the task being executed. These attributes
+ are used by subsequent run-task invocations to validate that use of
+ the cache is acceptable.
+
+ We /could/ blow away the cache data on requirements mismatch.
+ While this would be convenient, this could result in "competing" tasks
+ effectively undoing the other's work. This would slow down task
+ execution in aggregate. Without monitoring for this, people may not notice
+ the problem and tasks would be slower than they could be. We follow the
+ principle of "fail fast" to ensure optimal task execution.
+
+ We also write an audit log of who used the caches. This log is printed
+ during failures to help aid debugging.
+ """
+
+ our_requirements = {
+ # Include a version string that we can bump whenever to trigger
+ # fresh caches. The actual value is not relevant and doesn't need
+ # to follow any explicit order. Since taskgraph bakes this file's
+ # hash into cache names, any change to this file/version is sufficient
+ # to force the use of a new cache.
+ b'version=1',
+ # Include the UID and GID the task will run as to ensure that tasks
+ # with different UID and GID don't share the same cache.
+ b'uid=%d' % user.pw_uid,
+ b'gid=%d' % group.gr_gid,
+ }
+
+ requires_path = os.path.join(cache, '.cacherequires')
+ audit_path = os.path.join(cache, '.cachelog')
+
+ # The cache is empty. Configure it.
+ if not os.listdir(cache):
+ print_line(b'cache', b'cache %s is empty; writing requirements: '
+ b'%s\n' % (
+ cache.encode('utf-8'), b' '.join(sorted(our_requirements))))
+
+ # We write a requirements file so future invocations know what the
+ # requirements are.
+ with open(requires_path, 'wb') as fh:
+ fh.write(b'\n'.join(sorted(our_requirements)))
+
+ # And make it read-only as a precaution against deletion.
+ os.chmod(requires_path, stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH)
+
+ write_audit_entry(audit_path,
+ b'created; requirements: %s' %
+ b', '.join(sorted(our_requirements)))
+
+ set_dir_permissions(cache, user.pw_uid, group.gr_gid)
+ return
+
+ # The cache has content and we have a requirements file. Validate
+ # requirements alignment.
+ if os.path.exists(requires_path):
+ with open(requires_path, 'rb') as fh:
+ wanted_requirements = set(fh.read().splitlines())
+
+ print_line(b'cache', b'cache %s exists; requirements: %s\n' % (
+ cache.encode('utf-8'), b' '.join(sorted(wanted_requirements))))
+
+ missing = wanted_requirements - our_requirements
+
+ # Allow requirements mismatch for uid/gid if and only if caches
+ # are untrusted. This allows cache behavior on Try to be
+ # reasonable. Otherwise, random tasks could "poison" cache
+ # usability by introducing uid/gid mismatches. For untrusted
+ # environments like Try, this is a perfectly reasonable thing to
+ # allow.
+ if missing and untrusted_caches and running_as_root and \
+ all(s.startswith((b'uid=', b'gid=')) for s in missing):
+ print_line(b'cache',
+ b'cache %s uid/gid mismatch; this is acceptable '
+ b'because caches for this task are untrusted; '
+ b'changing ownership to facilitate cache use\n' %
+ cache.encode('utf-8'))
+ chown_recursive(cache, user.pw_name, group.gr_name, user.pw_uid,
+ group.gr_gid)
+
+ # And write out the updated reality.
+ with open(requires_path, 'wb') as fh:
+ fh.write(b'\n'.join(sorted(our_requirements)))
+
+ write_audit_entry(audit_path,
+ b'chown; requirements: %s' %
+ b', '.join(sorted(our_requirements)))
+
+ elif missing:
+ print('error: requirements for populated cache %s differ from '
+ 'this task' % cache)
+ print('cache requirements: %s' % ' '.join(sorted(
+ s.decode('utf-8') for s in wanted_requirements)))
+ print('our requirements: %s' % ' '.join(sorted(
+ s.decode('utf-8') for s in our_requirements)))
+ if any(s.startswith((b'uid=', b'gid=')) for s in missing):
+ print(CACHE_UID_GID_MISMATCH)
+
+ write_audit_entry(audit_path,
+ b'requirements mismatch; wanted: %s' %
+ b', '.join(sorted(our_requirements)))
+
+ print('')
+ print('audit log:')
+ with open(audit_path, 'r') as fh:
+ print(fh.read())
+
+ return True
+ else:
+ write_audit_entry(audit_path, b'used')
+
+ # We don't need to adjust permissions here because the cache is
+ # associated with a uid/gid and the first task should have set
+ # a proper owner/group.
+
+ return
+
+ # The cache has content and no requirements file. This shouldn't
+ # happen because run-task should be the first thing that touches a
+ # cache.
+ print('error: cache %s is not empty and is missing a '
+ '.cacherequires file; the cache names for this task are '
+ 'likely mis-configured or TASKCLUSTER_CACHES is not set '
+ 'properly' % cache)
+
+ write_audit_entry(audit_path, b'missing .cacherequires')
+ return True
+
+
+def configure_volume_posix(volume, user, group, running_as_root):
+ # The only time we should see files in the volume is if the Docker
+ # image build put files there.
+ #
+ # For the sake of simplicity, our policy is that volumes should be
+ # empty. This also has the advantage that an empty volume looks
+ # a lot like an empty cache. Tasks can rely on caches being
+ # swapped in and out on any volume without any noticeable change
+ # of behavior.
+ volume_files = os.listdir(volume)
+ if volume_files:
+ print(NON_EMPTY_VOLUME % volume)
+ print('entries in root directory: %s' %
+ ' '.join(sorted(volume_files)))
+ sys.exit(1)
+
+ # The volume is almost certainly owned by root:root. Chown it so it
+ # is writable.
+
+ if running_as_root:
+ print_line(b'volume', b'changing ownership of volume %s '
+ b'to %d:%d\n' % (volume.encode('utf-8'),
+ user.pw_uid,
+ group.gr_gid))
+ set_dir_permissions(volume, user.pw_uid, group.gr_gid)
+
+
+def vcs_checkout(source_repo, dest, store_path,
+ base_repo=None, revision=None, branch=None,
+ fetch_hgfingerprint=False, sparse_profile=None):
+ # Specify method to checkout a revision. This defaults to revisions as
+ # SHA-1 strings, but also supports symbolic revisions like `tip` via the
+ # branch flag.
+ if revision:
+ revision_flag = '--revision'
+ revision_value = revision
+ elif branch:
+ revision_flag = '--branch'
+ revision_value = branch
+ else:
+ print('revision is not specified for checkout')
+ sys.exit(1)
+
+ if IS_MACOSX or IS_POSIX:
+ hg_bin = 'hg'
+ elif IS_WINDOWS:
+ # This is where OCC installs it in the AMIs.
+ hg_bin = r'C:\Program Files\Mercurial\hg.exe'
+ if not os.path.exists(hg_bin):
+ print('could not find Mercurial executable: %s' % hg_bin)
+ sys.exit(1)
+
+ store_path = os.path.abspath(store_path)
+ args = [
+ hg_bin,
+ 'robustcheckout',
+ '--sharebase', store_path,
+ '--purge',
+ ]
+
+ # Obtain certificate fingerprints. Without this, the checkout will use the fingerprint
+ # on the system, which is managed some other way (such as puppet)
+ if fetch_hgfingerprint:
+ try:
+ print_line(b'vcs', b'fetching hg.mozilla.org fingerprint from %s\n' %
+ FINGERPRINT_URL.encode('utf-8'))
+ res = urllib.request.urlopen(FINGERPRINT_URL, timeout=10)
+ secret = res.read()
+ try:
+ secret = json.loads(secret.decode('utf-8'))
+ except ValueError:
+ print_line(b'vcs', b'invalid JSON in hg fingerprint secret')
+ sys.exit(1)
+ except (urllib.error.URLError, socket.timeout):
+ print_line(b'vcs', b'Unable to retrieve current hg.mozilla.org fingerprint'
+ b'using the secret service, using fallback instead.')
+ # XXX This fingerprint will not be accurate if running on an old
+ # revision after the server fingerprint has changed.
+ secret = {'secret': FALLBACK_FINGERPRINT}
+
+ hgmo_fingerprint = secret['secret']['fingerprints']
+ args.extend([
+ '--config', 'hostsecurity.hg.mozilla.org:fingerprints=%s' % hgmo_fingerprint,
+ ])
+
+ if base_repo:
+ args.extend(['--upstream', base_repo])
+ if sparse_profile:
+ args.extend(['--sparseprofile', sparse_profile])
+
+ dest = os.path.abspath(dest)
+ args.extend([
+ revision_flag, revision_value,
+ source_repo, dest,
+ ])
+
+ res = run_and_prefix_output(b'vcs', args,
+ extra_env={'PYTHONUNBUFFERED': '1'})
+ if res:
+ sys.exit(res)
+
+ # Update the current revision hash and ensure that it is well formed.
+ revision = subprocess.check_output(
+ [hg_bin, 'log',
+ '--rev', '.',
+ '--template', '{node}'],
+ cwd=dest,
+ # Triggers text mode on Python 3.
+ universal_newlines=True)
+
+ assert re.match('^[a-f0-9]{40}$', revision)
+
+ msg = ("TinderboxPrint:<a href={source_repo}/rev/{revision} "
+ "title='Built from {repo_name} revision {revision}'>"
+ "{revision}</a>\n".format(revision=revision,
+ source_repo=source_repo,
+ repo_name=source_repo.split('/')[-1]))
+
+ print_line(b'vcs', msg.encode('utf-8'))
+
+ return revision
+
+
+def fetch_artifacts():
+ print_line(b'fetches', b'fetching artifacts\n')
+
+ fetch_content = shutil.which('fetch-content')
+ if not fetch_content and os.environ.get('GECKO_PATH'):
+ fetch_content = os.path.join(os.environ['GECKO_PATH'], 'taskcluster',
+ 'scripts', 'misc', 'fetch-content')
+
+ if not fetch_content or not os.path.isfile(fetch_content):
+ fetch_content = os.path.join(os.path.dirname(__file__),
+ 'fetch-content')
+
+ if not os.path.isfile(fetch_content):
+ print(FETCH_CONTENT_NOT_FOUND)
+ sys.exit(1)
+
+ cmd = [sys.executable, '-u', fetch_content, 'task-artifacts']
+ res = run_and_prefix_output(b'fetches', cmd)
+ if res:
+ sys.exit(res)
+
+ print_line(b'fetches', b'finished fetching artifacts\n')
+
+
+def add_vcs_arguments(parser, project, name):
+ """Adds arguments to ArgumentParser to control VCS options for a project."""
+
+ parser.add_argument('--%s-checkout' % project,
+ help='Directory where %s checkout should be created' %
+ name)
+ parser.add_argument('--%s-sparse-profile' % project,
+ help='Path to sparse profile for %s checkout' % name)
+
+
+def resolve_checkout_url(base_repo, head_repo):
+ """Resolve the Mercurial URL to perform a checkout against, either the
+ public hg.mozilla.org service or a CI-only regional mirror.
+
+ The config will be of the form:
+ {
+ "aws/us-west-2": { # key built from `TASKCLUSTER_WORKER_LOCATION` variable
+ "rate": 0.5,
+ "domain": "us-west-2.hgmointernal.net"
+ },
+ "google/us-central1": {...}
+ }
+ """
+ worker_location = os.getenv('TASKCLUSTER_WORKER_LOCATION')
+ if not worker_location:
+ print_line(b'vcs', b'TASKCLUSTER_WORKER_LOCATION environment variable not set; '
+ b'using public hg.mozilla.org service\n')
+ return base_repo, head_repo
+
+ try:
+ worker_location = json.loads(worker_location)
+ except json.JSONDecodeError:
+ print_line(b'vcs', b'Could not decode TASKCLUSTER_WORKER_LOCATION environment variable '
+ b'as JSON. Content: %s\n' % worker_location.encode('utf-8'))
+ print_line(b'vcs', b'using public hg.mozilla.org service\n')
+ return base_repo, head_repo
+
+ if 'cloud' not in worker_location or 'region' not in worker_location:
+ print_line(b'vcs', b'TASKCLUSTER_WORKER_LOCATION missing required keys; '
+ b'using public hg.mozilla.org service\n')
+ return base_repo, head_repo
+
+ config_key = '%(cloud)s/%(region)s' % worker_location
+
+ try:
+ print_line(b'vcs', b'fetching hgmointernal config from %s\n' %
+ HGMOINTERNAL_CONFIG_URL.encode('utf-8'))
+
+ # Get the hgmointernal config Taskcluster secret
+ res = urllib.request.urlopen(HGMOINTERNAL_CONFIG_URL, timeout=10)
+ hgmointernal_config = json.loads(res.read().decode('utf-8'))['secret']
+
+ # Use public hg service if region not yet supported
+ if config_key not in hgmointernal_config:
+ print_line(b'vcs', b'region %s not yet supported; using public '
+ b'hg.mozilla.org service\n' % config_key.encode('utf-8'))
+
+ return base_repo, head_repo
+
+ # Only send a percentage of traffic to the internal mirror
+ rate = float(hgmointernal_config[config_key]['rate'])
+
+ if random.random() > rate:
+ print_line(b'vcs', b'hgmointernal rate miss; using '
+ b'public hg.mozilla.org service\n')
+ return base_repo, head_repo
+
+ print_line(b'vcs', b'hgmointernal rate hit; cloning from '
+ b'private hgweb mirror\n')
+
+ mirror_domain = hgmointernal_config[config_key]['domain']
+
+ if base_repo and base_repo.startswith('https://hg.mozilla.org'):
+ base_repo = base_repo.replace('hg.mozilla.org', mirror_domain, 1)
+
+ if head_repo and head_repo.startswith('https://hg.mozilla.org'):
+ head_repo = head_repo.replace('hg.mozilla.org', mirror_domain, 1)
+
+ return base_repo, head_repo
+
+ except (KeyError, ValueError):
+ print_line(b'vcs', b'invalid JSON in hgmointernal config; '
+ b'falling back to public hg.mozilla.org service\n')
+
+ except (urllib.error.URLError, socket.timeout):
+ print_line(b'vcs', b'Unable to retrieve hgmointernal config using '
+ b'the secret service; falling back to public hg.mozilla.org '
+ b'service\n')
+
+ return base_repo, head_repo
+
+
+def collect_vcs_options(args, project):
+ checkout = getattr(args, '%s_checkout' % project)
+ sparse_profile = getattr(args, '%s_sparse_profile' % project)
+
+ env_prefix = project.upper()
+
+ base_repo = os.environ.get('%s_BASE_REPOSITORY' % env_prefix)
+ head_repo = os.environ.get('%s_HEAD_REPOSITORY' % env_prefix)
+ revision = os.environ.get('%s_HEAD_REV' % env_prefix)
+ branch = os.environ.get('%s_HEAD_REF' % env_prefix)
+
+ store_path = os.environ.get('HG_STORE_PATH')
+
+ # Expand ~ in some paths.
+ if checkout:
+ checkout = os.path.expanduser(checkout)
+ if store_path:
+ store_path = os.path.expanduser(store_path)
+
+ # Some callers set the base repository to mozilla-central for historical
+ # reasons. Switch to mozilla-unified because robustcheckout works best
+ # with it.
+ if base_repo == 'https://hg.mozilla.org/mozilla-central':
+ base_repo = 'https://hg.mozilla.org/mozilla-unified'
+
+ # No need to check the hgmointernal config if we aren't performing
+ # a checkout.
+ if checkout:
+ base_repo, head_repo = resolve_checkout_url(base_repo, head_repo)
+
+ return {
+ 'store-path': store_path,
+ 'project': project,
+ 'env-prefix': env_prefix,
+ 'checkout': checkout,
+ 'sparse-profile': sparse_profile,
+ 'base-repo': base_repo,
+ 'head-repo': head_repo,
+ 'revision': revision,
+ 'branch': branch,
+ }
+
+
+def vcs_checkout_from_args(args, project):
+ options = collect_vcs_options(args, project)
+
+ if not options['checkout']:
+ if options['branch'] and not options['revision']:
+ print('task should be defined in terms of non-symbolic revision')
+ sys.exit(1)
+ return
+
+ os.environ['%s_HEAD_REV' % options['env-prefix']] = vcs_checkout(
+ options['head-repo'],
+ options['checkout'],
+ options['store-path'],
+ base_repo=options['base-repo'],
+ revision=options['revision'],
+ fetch_hgfingerprint=args.fetch_hgfingerprint,
+ branch=options['branch'],
+ sparse_profile=options['sparse-profile'])
+
+
+def maybe_run_resource_monitoring():
+ """Run the resource monitor if available.
+
+ Discussion in https://github.com/taskcluster/taskcluster-rfcs/pull/160
+ and https://bugzil.la/1648051
+ """
+ if 'MOZ_FETCHES' not in os.environ:
+ return
+ if 'RESOURCE_MONITOR_OUTPUT' not in os.environ:
+ return
+
+ prefix = b'resource_monitor'
+
+ executable = '{}/resource-monitor/resource-monitor{}'.format(
+ os.environ.get('MOZ_FETCHES_DIR'), '.exe' if IS_WINDOWS else '')
+
+ if not os.path.exists(executable) or not os.access(executable, os.X_OK):
+ print_line(prefix, b"%s not executable\n" % executable.encode('utf-8'))
+ return
+ args = [
+ executable,
+ '-process',
+ str(os.getpid()),
+ '-output',
+ os.environ["RESOURCE_MONITOR_OUTPUT"],
+ ]
+ print_line(prefix, b"Resource monitor starting: %s\n" % str(args).encode('utf-8'))
+ # Avoid environment variables the payload doesn't need.
+ del os.environ['RESOURCE_MONITOR_OUTPUT']
+
+ # Without CREATE_NEW_PROCESS_GROUP Windows signals will attempt to kill run-task, too.
+ process = subprocess.Popen(args,
+ bufsize=0,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT,
+ creationflags=subprocess.CREATE_NEW_PROCESS_GROUP if IS_WINDOWS else 0,
+ cwd=os.getcwd())
+
+ def capture_output():
+ fh = io.TextIOWrapper(process.stdout, encoding='latin1')
+ while True:
+ data = fh.readline().encode('latin1')
+ if data == b'':
+ break
+ print_line(prefix, data)
+
+ monitor_process = Thread(target=capture_output)
+ monitor_process.start()
+ return process
+
+
+def main(args):
+ print_line(b'setup', b'run-task started in %s\n' % os.getcwd().encode('utf-8'))
+ running_as_root = IS_POSIX and os.getuid() == 0
+
+ # Set a reasonable limit to the number of open files.
+ # Running under docker inherits the system defaults, which are not subject
+ # to the "standard" limits set by pam_limits.so, and while they work well
+ # for servers that may receive a lot of connections, they cause performance
+ # problems for things that close file descriptors before forking (for good
+ # reasons), like python's `subprocess.Popen(..., close_fds=True)` (and while
+ # the default was close_fds=False in python2, that changed in python3).
+ # In some cases, Firefox does the same thing when spawning subprocesses.
+ # Processes spawned by this one will inherit the limit set here.
+ try:
+ import resource
+ # Keep the hard limit the same, though, allowing processes to change their
+ # soft limit if they need to (Firefox does, for instance).
+ (soft, hard) = resource.getrlimit(resource.RLIMIT_NOFILE)
+ limit = os.environ.get('MOZ_LIMIT_NOFILE')
+ if limit:
+ limit = int(limit)
+ else:
+ # If no explicit limit is given, use 1024 if it's less than the current
+ # soft limit. For instance, the default on macOS is 256, so we'd pick
+ # that rather than 1024.
+ limit = min(soft, 1024)
+ # Now apply the limit, if it's different from the original one.
+ if limit != soft:
+ resource.setrlimit(resource.RLIMIT_NOFILE, (limit, hard))
+ except ImportError:
+ # The resource module is UNIX only.
+ pass
+
+ # Arguments up to '--' are ours. After are for the main task
+ # to be executed.
+ try:
+ i = args.index('--')
+ our_args = args[0:i]
+ task_args = args[i + 1:]
+ except ValueError:
+ our_args = args
+ task_args = []
+
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--user', default='worker', help='user to run as')
+ parser.add_argument('--group', default='worker', help='group to run as')
+ parser.add_argument('--task-cwd', help='directory to run the provided command in')
+
+ add_vcs_arguments(parser, 'gecko', 'Firefox')
+ add_vcs_arguments(parser, 'comm', 'Comm')
+
+ parser.add_argument('--fetch-hgfingerprint', action='store_true',
+ help='Fetch the latest hgfingerprint from the secrets store, '
+ 'using the taskclsuerProxy')
+
+ args = parser.parse_args(our_args)
+
+ uid = gid = gids = None
+ if IS_POSIX and running_as_root:
+ user, group, gids = get_posix_user_group(args.user, args.group)
+ uid = user.pw_uid
+ gid = group.gr_gid
+
+ if running_as_root and os.path.exists("/dev/kvm"):
+ # Ensure kvm permissions for worker, required for Android x86
+ st = os.stat("/dev/kvm")
+ os.chmod("/dev/kvm", st.st_mode | 0o666)
+
+ # Validate caches.
+ #
+ # Taskgraph should pass in a list of paths that are caches via an
+ # environment variable (which we don't want to pass down to child
+ # processes).
+
+ if 'TASKCLUSTER_CACHES' in os.environ:
+ caches = os.environ['TASKCLUSTER_CACHES'].split(';')
+ del os.environ['TASKCLUSTER_CACHES']
+ else:
+ caches = []
+
+ if 'TASKCLUSTER_UNTRUSTED_CACHES' in os.environ:
+ untrusted_caches = True
+ del os.environ['TASKCLUSTER_UNTRUSTED_CACHES']
+ else:
+ untrusted_caches = False
+
+ for cache in caches:
+ if not os.path.isdir(cache):
+ print('error: cache %s is not a directory; this should never '
+ 'happen' % cache)
+ return 1
+
+ if running_as_root:
+ purge = configure_cache_posix(cache, user, group, untrusted_caches,
+ running_as_root)
+
+ if purge:
+ return EXIT_PURGE_CACHE
+
+ if 'TASKCLUSTER_VOLUMES' in os.environ:
+ volumes = os.environ['TASKCLUSTER_VOLUMES'].split(';')
+ del os.environ['TASKCLUSTER_VOLUMES']
+ else:
+ volumes = []
+
+ if volumes and not IS_POSIX:
+ print('assertion failed: volumes not expected on Windows')
+ return 1
+
+ # Sanitize volumes.
+ for volume in volumes:
+ # If a volume is a cache, it was dealt with above.
+ if volume in caches:
+ print_line(b'volume', b'volume %s is a cache\n' %
+ volume.encode('utf-8'))
+ continue
+
+ if running_as_root:
+ configure_volume_posix(volume, user, group, running_as_root)
+
+ all_caches_and_volumes = set(map(os.path.normpath, caches))
+ all_caches_and_volumes |= set(map(os.path.normpath, volumes))
+
+ def path_in_cache_or_volume(path):
+ path = os.path.normpath(path)
+
+ while path:
+ if path in all_caches_and_volumes:
+ return True
+
+ path, child = os.path.split(path)
+ if not child:
+ break
+
+ return False
+
+ def prepare_checkout_dir(checkout):
+ if not checkout:
+ return
+
+ # The checkout path becomes the working directory. Since there are
+ # special cache files in the cache's root directory and working
+ # directory purging could blow them away, disallow this scenario.
+ if os.path.exists(os.path.join(checkout, '.cacherequires')):
+ print('error: cannot perform vcs checkout into cache root: %s' %
+ checkout)
+ sys.exit(1)
+
+ # TODO given the performance implications, consider making this a fatal
+ # error.
+ if not path_in_cache_or_volume(checkout):
+ print_line(b'vcs', b'WARNING: vcs checkout path (%s) not in cache '
+ b'or volume; performance will likely suffer\n' %
+ checkout.encode('utf-8'))
+
+ # Ensure the directory for the source checkout exists.
+ try:
+ os.makedirs(os.path.dirname(checkout))
+ except OSError as e:
+ if e.errno != errno.EEXIST:
+ raise
+
+ # And that it is owned by the appropriate user/group.
+ if running_as_root:
+ os.chown(os.path.dirname(checkout), uid, gid)
+
+ def prepare_hg_store_path():
+ # And ensure the shared store path exists and has proper permissions.
+ if 'HG_STORE_PATH' not in os.environ:
+ print('error: HG_STORE_PATH environment variable not set')
+ sys.exit(1)
+
+ store_path = os.environ['HG_STORE_PATH']
+
+ if not path_in_cache_or_volume(store_path):
+ print_line(b'vcs', b'WARNING: HG_STORE_PATH (%s) not in cache or '
+ b'volume; performance will likely suffer\n' %
+ store_path.encode('utf-8'))
+
+ try:
+ os.makedirs(store_path)
+ except OSError as e:
+ if e.errno != errno.EEXIST:
+ raise
+
+ if running_as_root:
+ os.chown(store_path, uid, gid)
+
+ prepare_checkout_dir(args.gecko_checkout)
+ if args.gecko_checkout or args.comm_checkout:
+ prepare_hg_store_path()
+
+ if IS_POSIX and running_as_root:
+ # Drop permissions to requested user.
+ # This code is modeled after what `sudo` was observed to do in a Docker
+ # container. We do not bother calling setrlimit() because containers have
+ # their own limits.
+ print_line(b'setup', b'running as %s:%s\n' % (
+ args.user.encode('utf-8'), args.group.encode('utf-8')))
+
+ os.setgroups(gids)
+ os.umask(0o22)
+ os.setresgid(gid, gid, gid)
+ os.setresuid(uid, uid, uid)
+
+ vcs_checkout_from_args(args, 'gecko')
+ vcs_checkout_from_args(args, 'comm')
+
+ resource_process = None
+
+ try:
+ for k in ('GECKO_PATH', 'MOZ_FETCHES_DIR', 'UPLOAD_DIR', 'MOZ_PYTHON_HOME'):
+ if k in os.environ:
+ # Normalize paths to use forward slashes. Some shell scripts
+ # tolerate that better on Windows.
+ os.environ[k] = os.path.abspath(os.environ[k]).replace(os.sep, '/')
+ print_line(b'setup', b'%s is %s\n' % (
+ k.encode('utf-8'),
+ os.environ[k].encode('utf-8')))
+
+ if 'MOZ_FETCHES' in os.environ:
+ fetch_artifacts()
+
+ # If Python is a fetch dependency, add it to the PATH and setting
+ # the mozilla-specific MOZ_PYTHON_HOME to relocate binaries.
+ if 'MOZ_PYTHON_HOME' in os.environ:
+
+ print_line(b'setup',
+ b'Setting up local python environment\n')
+ prev = [os.environ['PATH']] if 'PATH' in os.environ else []
+
+ moz_python_home = os.environ['MOZ_PYTHON_HOME']
+ if IS_WINDOWS:
+ ext = '.exe'
+ moz_python_bindir = moz_python_home
+ else:
+ ext = ''
+ moz_python_bindir = moz_python_home + '/bin'
+
+
+ # just a sanity check
+ candidate = os.path.join(moz_python_bindir, f'python3{ext}')
+ if not os.path.exists(candidate):
+ raise RuntimeError("Inconsistent Python installation: "
+ "archive found, but no python3 binary "
+ "detected")
+
+ new = os.environ['PATH'] = os.pathsep.join([moz_python_bindir]
+ + prev)
+
+ # Relocate the python binary. Standard way uses PYTHONHOME, but
+ # this conflicts with system python (e.g. used by hg) so we
+ # maintain a small patch to use MOZPYTHONHOME instead.
+ os.environ['MOZPYTHONHOME'] = moz_python_home
+
+ print_line(b'setup',
+ b'updated PATH with python artifact: '
+ + new.encode() + b'\n')
+
+
+ resource_process = maybe_run_resource_monitoring()
+
+ return run_and_prefix_output(b'task', task_args, cwd=args.task_cwd)
+ finally:
+ if resource_process:
+ print_line(b'resource_monitor', b'terminating\n')
+ if IS_WINDOWS:
+ # .terminate() on Windows is not a graceful shutdown, due to
+ # differences in signals. CTRL_BREAK_EVENT will work provided
+ # the subprocess is in a different process group, so this script
+ # isn't also killed.
+ os.kill(resource_process.pid, signal.CTRL_BREAK_EVENT)
+ else:
+ resource_process.terminate()
+ resource_process.wait()
+
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv[1:]))
diff --git a/taskcluster/scripts/tester/run-wizard b/taskcluster/scripts/tester/run-wizard
new file mode 100755
index 0000000000..4ec5a5d337
--- /dev/null
+++ b/taskcluster/scripts/tester/run-wizard
@@ -0,0 +1,176 @@
+#!/usr/bin/env python3
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this,
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import datetime
+import os
+import subprocess
+import sys
+import time
+from distutils.spawn import find_executable
+from textwrap import wrap
+
+here = os.path.dirname(os.path.abspath(__file__))
+MOZHARNESS_WORKDIR = os.path.expanduser(os.path.join('~', 'workspace', 'build'))
+
+MACH_SETUP_FINISHED = """
+Mozharness has finished downloading the build and tests to:
+{}
+
+A limited mach environment has also been set up and added to the $PATH, but
+it may be missing the command you need. To see a list of commands, run:
+ $ mach help
+""".lstrip().format(MOZHARNESS_WORKDIR)
+
+MACH_SETUP_FAILED = """
+Could not set up mach environment, no mach binary detected.
+""".lstrip()
+
+
+def call(cmd, **kwargs):
+ print(" ".join(cmd))
+ return subprocess.call(cmd, **kwargs)
+
+
+def wait_for_run_mozharness(timeout=60):
+ starttime = datetime.datetime.now()
+ while datetime.datetime.now() - starttime < datetime.timedelta(seconds=timeout):
+ if os.path.isfile(os.path.join(here, 'run-mozharness')):
+ break
+ time.sleep(0.2)
+ else:
+ print("Timed out after %d seconds waiting for the 'run-mozharness' binary" % timeout)
+ return 1
+
+
+def setup_mach_environment():
+ mach_src = os.path.join(MOZHARNESS_WORKDIR, 'tests', 'mach')
+ if not os.path.isfile(mach_src):
+ return 1
+
+ mach_dest = os.path.expanduser(os.path.join('~', 'bin', 'mach'))
+ if os.path.exists(mach_dest):
+ os.remove(mach_dest)
+ os.symlink(mach_src, mach_dest)
+ return 0
+
+
+def run_mozharness(*args):
+ wait_for_run_mozharness()
+ try:
+ return call(['run-mozharness'] + list(args))
+ finally:
+ setup_mach_environment()
+
+
+def setup():
+ """Run the mozharness script without the 'run-tests' action.
+
+ This will do all the necessary setup steps like creating a virtualenv and
+ downloading the tests and firefox binary. But it stops before running the
+ tests.
+ """
+ status = run_mozharness('--no-run-tests')
+
+ if find_executable('mach'):
+ print(MACH_SETUP_FINISHED)
+ else:
+ print(MACH_SETUP_FAILED)
+
+ return status
+
+
+def clone():
+ """Clone the correct gecko repository and update to the proper revision."""
+ base_repo = os.environ['GECKO_HEAD_REPOSITORY']
+ dest = os.path.expanduser(os.path.join('~', 'gecko'))
+
+ # Specify method to checkout a revision. This defaults to revisions as
+ # SHA-1 strings, but also supports symbolic revisions like `tip` via the
+ # branch flag.
+ if os.environ.get('GECKO_HEAD_REV'):
+ revision_flag = b'--revision'
+ revision = os.environ['GECKO_HEAD_REV']
+ elif os.environ.get('GECKO_HEAD_REF'):
+ revision_flag = b'--branch'
+ revision = os.environ['GECKO_HEAD_REF']
+ else:
+ print('revision is not specified for checkout')
+ return 1
+
+ # TODO Bug 1301382 - pin hg.mozilla.org fingerprint.
+ call([
+ b'/usr/bin/hg', b'robustcheckout',
+ b'--sharebase', os.environ['HG_STORE_PATH'],
+ b'--purge',
+ b'--upstream', b'https://hg.mozilla.org/mozilla-unified',
+ revision_flag, revision,
+ base_repo, dest
+ ])
+ print("Finished cloning to {} at revision {}.".format(dest, revision))
+
+
+def exit():
+ pass
+
+
+OPTIONS = [
+ ('Resume task', run_mozharness,
+ "Resume the original task without modification. This can be useful for "
+ "passively monitoring it from another shell."),
+ ('Setup task', setup,
+ "Setup the task (download the application and tests) but don't run the "
+ "tests just yet. The tests can be run with a custom configuration later. "
+ "This will provide a mach environment (experimental)."),
+ ('Clone gecko', clone,
+ "Perform a clone of gecko using the task's repo and update it to the "
+ "task's revision."),
+ ('Exit', exit, "Exit this wizard and return to the shell.")
+]
+
+
+def _fmt_options():
+ max_line_len = 60
+ max_name_len = max(len(o[0]) for o in OPTIONS)
+
+ # TODO Pad will be off if there are more than 9 options.
+ pad = ' ' * (max_name_len+6)
+
+ msg = []
+ for i, (name, _, desc) in enumerate(OPTIONS):
+ desc = wrap(desc, width=max_line_len)
+ desc = [desc[0]] + [pad + l for l in desc[1:]]
+
+ optstr = '{}) {} - {}\n'.format(
+ i+1, name.ljust(max_name_len), '\n'.join(desc))
+ msg.append(optstr)
+ msg.append("Select one of the above options: ")
+ return '\n'.join(msg)
+
+
+def wizard():
+ print("This wizard can help you get started with some common debugging "
+ "workflows.\nWhat would you like to do?\n")
+ print(_fmt_options(), end="")
+ choice = None
+ while True:
+ choice = raw_input().decode('utf8')
+ try:
+ choice = int(choice)-1
+ if 0 <= choice < len(OPTIONS):
+ break
+ except ValueError:
+ pass
+
+ print("Must provide an integer from 1-{}:".format(len(OPTIONS)))
+
+ func = OPTIONS[choice][1]
+ ret = func()
+
+ print("Use the 'run-wizard' command to start this wizard again.")
+ return ret
+
+
+if __name__ == '__main__':
+ sys.exit(wizard())
diff --git a/taskcluster/scripts/tester/test-linux.sh b/taskcluster/scripts/tester/test-linux.sh
new file mode 100755
index 0000000000..1d87c1f2b8
--- /dev/null
+++ b/taskcluster/scripts/tester/test-linux.sh
@@ -0,0 +1,287 @@
+#! /bin/bash -xe
+
+set -x -e
+
+echo "running as" $(id)
+
+# Detect distribution
+. /etc/os-release
+if [ "${ID}" == "ubuntu" ]; then
+ DISTRIBUTION="Ubuntu"
+elif [ "${ID}" == "debian" ]; then
+ DISTRIBUTION="Debian"
+else
+ DISTRIBUTION="Unknown"
+fi
+
+# Detect release version if supported
+FILE="/etc/lsb-release"
+if [ -e $FILE ] ; then
+ . /etc/lsb-release
+ RELEASE="${DISTRIB_RELEASE}"
+else
+ RELEASE="unknown"
+fi
+
+####
+# Taskcluster friendly wrapper for performing fx desktop tests via mozharness.
+####
+
+# Inputs, with defaults
+
+: GECKO_PATH ${GECKO_PATH}
+: MOZHARNESS_PATH ${MOZHARNESS_PATH}
+: MOZHARNESS_URL ${MOZHARNESS_URL}
+: MOZHARNESS_SCRIPT ${MOZHARNESS_SCRIPT}
+: MOZHARNESS_CONFIG ${MOZHARNESS_CONFIG}
+: MOZHARNESS_OPTIONS ${MOZHARNESS_OPTIONS}
+: MOZ_ENABLE_WAYLAND ${MOZ_ENABLE_WAYLAND}
+: NEED_XVFB ${NEED_XVFB:=true}
+: NEED_WINDOW_MANAGER ${NEED_WINDOW_MANAGER:=false}
+: NEED_PULSEAUDIO ${NEED_PULSEAUDIO:=false}
+: NEED_COMPIZ ${NEED_COPMPIZ:=false}
+: START_VNC ${START_VNC:=false}
+: TASKCLUSTER_INTERACTIVE ${TASKCLUSTER_INTERACTIVE:=false}
+: mozharness args "${@}"
+: WORKING_DIR ${WORKING_DIR:=$(pwd)}
+: WORKSPACE ${WORKSPACE:=${WORKING_DIR%/}/workspace}
+
+set -v
+mkdir -p "$WORKSPACE"
+cd "$WORKSPACE"
+
+fail() {
+ echo # make sure error message is on a new line
+ echo "[test-linux.sh:error]" "${@}"
+ exit 1
+}
+
+# start pulseaudio
+maybe_start_pulse() {
+ if $NEED_PULSEAUDIO; then
+ # call pulseaudio for Ubuntu only
+ if [ $DISTRIBUTION == "Ubuntu" ]; then
+ pulseaudio --daemonize --log-level=4 --log-time=1 --log-target=stderr --start --fail -vvvvv --exit-idle-time=-1 --cleanup-shm --dump-conf
+ fi
+ fi
+}
+
+# test required parameters are supplied
+if [ -z "${MOZHARNESS_PATH}" -a -z "${MOZHARNESS_URL}" ]; then
+ fail "MOZHARNESS_PATH or MOZHARNESS_URL must be defined";
+fi
+
+if [[ -z ${MOZHARNESS_SCRIPT} ]]; then fail "MOZHARNESS_SCRIPT is not set"; fi
+if [[ -z ${MOZHARNESS_CONFIG} ]]; then fail "MOZHARNESS_CONFIG is not set"; fi
+
+if [ $MOZ_ENABLE_WAYLAND ]; then
+ NEED_XVFB=true
+ NEED_WINDOW_MANAGER=true
+fi
+
+# make sure artifact directories exist
+mkdir -p "$WORKSPACE/logs"
+mkdir -p "$WORKING_DIR/artifacts/public"
+mkdir -p "$WORKSPACE/build/blobber_upload_dir"
+
+cleanup_mutter() {
+ local mutter_pids=`ps aux | grep 'mutter --wayland' | grep -v grep | awk '{print $2}'`
+ if [ "$mutter_pids" != "" ]; then
+ echo "Killing the following Mutter processes: $mutter_pids"
+ sudo kill $mutter_pids
+ else
+ echo "No Mutter processes to kill"
+ fi
+}
+
+cleanup() {
+ local rv=$?
+ if [[ -s $HOME/.xsession-errors ]]; then
+ # To share X issues
+ cp "$HOME/.xsession-errors" "$WORKING_DIR/artifacts/public/xsession-errors.log"
+ fi
+ if [ $MOZ_ENABLE_WAYLAND ]; then
+ cleanup_mutter
+ fi
+ if $NEED_XVFB; then
+ cleanup_xvfb
+ fi
+ exit $rv
+}
+trap cleanup EXIT INT
+
+# Download mozharness with exponential backoff
+# curl already applies exponential backoff, but not for all
+# failed cases, apparently, as we keep getting failed downloads
+# with 404 code.
+download_mozharness() {
+ local max_attempts=10
+ local timeout=1
+ local attempt=0
+
+ echo "Downloading mozharness"
+
+ while [[ $attempt < $max_attempts ]]; do
+ if curl --fail -o mozharness.zip --retry 10 -L $MOZHARNESS_URL; then
+ rm -rf mozharness
+ if unzip -q mozharness.zip -d mozharness; then
+ return 0
+ fi
+ echo "error unzipping mozharness.zip" >&2
+ else
+ echo "failed to download mozharness zip" >&2
+ fi
+ echo "Download failed, retrying in $timeout seconds..." >&2
+ sleep $timeout
+ timeout=$((timeout*2))
+ attempt=$((attempt+1))
+ done
+
+ fail "Failed to download and unzip mozharness"
+}
+
+# Download mozharness if we're told to.
+if [ ${MOZHARNESS_URL} ]; then
+ download_mozharness
+ rm mozharness.zip
+
+ if ! [ -d mozharness ]; then
+ fail "mozharness zip did not contain mozharness/"
+ fi
+
+ MOZHARNESS_PATH=`pwd`/mozharness
+fi
+
+# run XVfb in the background, if necessary
+if $NEED_XVFB; then
+ # note that this file is not available when run under native-worker
+ . $HOME/scripts/xvfb.sh
+ start_xvfb '1600x1200x24' 0
+fi
+
+if $START_VNC; then
+ x11vnc > "$WORKING_DIR/artifacts/public/x11vnc.log" 2>&1 &
+fi
+
+if $NEED_WINDOW_MANAGER; then
+ # This is read by xsession to select the window manager
+ . /etc/lsb-release
+ if [ $DISTRIBUTION == "Ubuntu" ] && [ $RELEASE == "16.04" ]; then
+ echo DESKTOP_SESSION=ubuntu > $HOME/.xsessionrc
+ elif [ $DISTRIBUTION == "Ubuntu" ] && [ $RELEASE == "18.04" ]; then
+ echo export DESKTOP_SESSION=gnome > $HOME/.xsessionrc
+ echo export XDG_CURRENT_DESKTOP=GNOME > $HOME/.xsessionrc
+ if [ $MOZ_ENABLE_WAYLAND ]; then
+ echo export XDG_SESSION_TYPE=wayland >> $HOME/.xsessionrc
+ else
+ echo export XDG_SESSION_TYPE=x11 >> $HOME/.xsessionrc
+ fi
+ else
+ :
+ fi
+
+ # DISPLAY has already been set above
+ # XXX: it would be ideal to add a semaphore logic to make sure that the
+ # window manager is ready
+ /etc/X11/Xsession 2>&1 &
+
+ # Turn off the screen saver and screen locking
+ gsettings set org.gnome.desktop.screensaver idle-activation-enabled false
+ gsettings set org.gnome.desktop.screensaver lock-enabled false
+ gsettings set org.gnome.desktop.screensaver lock-delay 3600
+
+ # Disable the screen saver
+ xset s off s reset
+
+ # This starts the gnome-keyring-daemon with an unlocked login keyring. libsecret uses this to
+ # store secrets. Firefox uses libsecret to store a key that protects sensitive information like
+ # credit card numbers.
+ if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
+ # if not found, launch a new one
+ eval `dbus-launch --sh-syntax`
+ fi
+ eval `echo '' | /usr/bin/gnome-keyring-daemon -r -d --unlock --components=secrets`
+
+ # Run mutter as nested wayland compositor to provide Wayland environment
+ # on top of XVfb.
+ if [ $MOZ_ENABLE_WAYLAND ]; then
+ env | grep "DISPLAY"
+ export XDG_RUNTIME_DIR=$WORKING_DIR
+ mutter --display=:0 --wayland --nested &
+ export WAYLAND_DISPLAY=wayland-0
+ retry_count=0
+ max_retries=5
+ until [ $retry_count -gt $max_retries ]; do
+ if [ -S "$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" ]; then
+ retry_count=$(($max_retries + 1))
+ else
+ retry_count=$(($retry_count + 1))
+ echo "Waiting for Mutter, retry: $retry_count"
+ sleep 2
+ fi
+ done
+ fi
+fi
+
+if [[ $NEED_COMPIZ == true ]] && [[ $RELEASE == 16.04 ]]; then
+ compiz 2>&1 &
+elif [[ $NEED_COMPIZ == true ]] && [[ $RELEASE == 18.04 ]]; then
+ compiz --replace 2>&1 &
+fi
+
+# Bug 1607713 - set cursor position to 0,0 to avoid odd libx11 interaction
+if [ $NEED_WINDOW_MANAGER ] && [ $DISPLAY == ':0' ]; then
+ xwit -root -warp 0 0
+fi
+
+maybe_start_pulse
+
+# For telemetry purposes, the build process wants information about the
+# source it is running
+export MOZ_SOURCE_REPO="${GECKO_HEAD_REPOSITORY}"
+export MOZ_SOURCE_CHANGESET="${GECKO_HEAD_REV}"
+
+# support multiple, space delimited, config files
+config_cmds=""
+for cfg in $MOZHARNESS_CONFIG; do
+ config_cmds="${config_cmds} --config-file ${MOZHARNESS_PATH}/configs/${cfg}"
+done
+
+if [ -n "$MOZHARNESS_OPTIONS" ]; then
+ options=""
+ for option in $MOZHARNESS_OPTIONS; do
+ options="$options --$option"
+ done
+fi
+
+# Use |mach python| if a source checkout exists so in-tree packages are
+# available.
+[[ -x "${GECKO_PATH}/mach" ]] && python="${PYTHON:-python3} ${GECKO_PATH}/mach python" || python="${PYTHON:-python2.7}"
+
+# Save the computed mozharness command to a binary which is useful for
+# interactive mode.
+mozharness_bin="$HOME/bin/run-mozharness"
+mkdir -p $(dirname $mozharness_bin)
+
+echo -e "#!/usr/bin/env bash
+# Some mozharness scripts assume base_work_dir is in
+# the current working directory, see bug 1279237
+cd "$WORKSPACE"
+cmd=\"${python} ${MOZHARNESS_PATH}/scripts/${MOZHARNESS_SCRIPT} ${config_cmds} ${options} ${@} \${@}\"
+echo \"Running: \${cmd}\"
+exec \${cmd}" > ${mozharness_bin}
+chmod +x ${mozharness_bin}
+
+# In interactive mode, the user will be prompted with options for what to do.
+if ! $TASKCLUSTER_INTERACTIVE; then
+ # run the given mozharness script and configs, but pass the rest of the
+ # arguments in from our own invocation
+ ${mozharness_bin};
+fi
+
+# Run a custom mach command (this is typically used by action tasks to run
+# harnesses in a particular way)
+if [ "$CUSTOM_MACH_COMMAND" ]; then
+ eval "'$WORKSPACE/build/venv/bin/python' '$WORKSPACE/build/tests/mach' ${CUSTOM_MACH_COMMAND} ${@}"
+ exit $?
+fi
diff --git a/taskcluster/test/conftest.py b/taskcluster/test/conftest.py
new file mode 100644
index 0000000000..9001958c6a
--- /dev/null
+++ b/taskcluster/test/conftest.py
@@ -0,0 +1,125 @@
+# Any copyright is dedicated to the public domain.
+# http://creativecommons.org/publicdomain/zero/1.0/
+
+import json
+import logging
+import os
+
+import pytest
+from gecko_taskgraph.util.bugbug import BUGBUG_BASE_URL
+from gecko_taskgraph.util.hg import PUSHLOG_PUSHES_TMPL
+from responses import RequestsMock
+from responses import logger as rsps_logger
+from taskgraph.generator import TaskGraphGenerator
+from taskgraph.parameters import parameters_loader
+
+here = os.path.abspath(os.path.dirname(__file__))
+
+
+@pytest.fixture(scope="session")
+def responses():
+ rsps_logger.setLevel(logging.WARNING)
+ with RequestsMock(assert_all_requests_are_fired=False) as rsps:
+ yield rsps
+
+
+@pytest.fixture(scope="session")
+def datadir():
+ return os.path.join(here, "data")
+
+
+@pytest.fixture(scope="session")
+def create_tgg(responses, datadir):
+ def inner(parameters=None, overrides=None):
+ params = parameters_loader(parameters, strict=False, overrides=overrides)
+ tgg = TaskGraphGenerator(None, params)
+
+ # Mock out certain requests as they may depend on a revision that does
+ # not exist on hg.mozilla.org.
+ mock_requests = {}
+
+ # bugbug /push/schedules
+ url = BUGBUG_BASE_URL + "/push/{project}/{head_rev}/schedules".format(
+ **tgg.parameters
+ )
+ mock_requests[url] = "bugbug-push-schedules.json"
+
+ # files changed
+ url = "{head_repository}/json-automationrelevance/{head_rev}".format(
+ **tgg.parameters
+ )
+ mock_requests[url] = "automationrelevance.json"
+
+ url = PUSHLOG_PUSHES_TMPL.format(
+ repository=tgg.parameters["head_repository"],
+ push_id_start=int(tgg.parameters["pushlog_id"]) - 2,
+ push_id_end=int(tgg.parameters["pushlog_id"]) - 1,
+ )
+ mock_requests[url] = "pushes.json"
+
+ for url, filename in mock_requests.items():
+ with open(os.path.join(datadir, filename)) as fh:
+ responses.add(
+ responses.GET,
+ url,
+ json=json.load(fh),
+ status=200,
+ )
+
+ # Still allow other real requests.
+ responses.add_passthru("https://hg.mozilla.org")
+ responses.add_passthru("https://firefox-ci-tc.services.mozilla.com")
+ return tgg
+
+ return inner
+
+
+@pytest.fixture(scope="module")
+def tgg(request, create_tgg):
+ if not hasattr(request.module, "PARAMS"):
+ pytest.fail("'tgg' fixture requires a module-level 'PARAMS' variable")
+
+ tgg = create_tgg(overrides=request.module.PARAMS)
+ return tgg
+
+
+@pytest.fixture(scope="module")
+def params(tgg):
+ return tgg.parameters
+
+
+@pytest.fixture(scope="module")
+def full_task_graph(tgg):
+ return tgg.full_task_graph
+
+
+@pytest.fixture(scope="module")
+def optimized_task_graph(full_task_graph, tgg):
+ return tgg.optimized_task_graph
+
+
+@pytest.fixture(scope="session")
+def filter_tasks():
+ def inner(graph, func):
+ return filter(func, graph.tasks.values())
+
+ return inner
+
+
+@pytest.fixture(scope="session")
+def print_dependents():
+ def inner(graph, label, indent=""):
+ if indent == "":
+ print(f"Dependent graph for {label}:")
+
+ dependents = set()
+ for task in graph.tasks.values():
+ if label in task.dependencies.values():
+ dependents.add(task.label)
+
+ print(f"{indent}{label}")
+ if dependents:
+ for dep in sorted(dependents):
+ inner(graph, dep, indent=indent + " ")
+
+ return inner
diff --git a/taskcluster/test/data/automationrelevance.json b/taskcluster/test/data/automationrelevance.json
new file mode 100644
index 0000000000..36289ded18
--- /dev/null
+++ b/taskcluster/test/data/automationrelevance.json
@@ -0,0 +1,169 @@
+{
+ "changesets": [
+ {
+ "author": "User \u003cuser@example.com\u003e",
+ "backsoutnodes": [],
+ "bugs": [
+ {
+ "no": "1646582",
+ "url": "https://bugzilla.mozilla.org/show_bug.cgi?id=1646582"
+ }
+ ],
+ "date": [1593028650.0, 0],
+ "desc": "Bug 1646582 - Remove nsIRemoteWebProgressRequest since it's not being used anywhere. r=barret\n\nDifferential Revision: https://phabricator.services.mozilla.com/D80127",
+ "extra": { "branch": "default", "moz-landing-system": "lando" },
+ "files": [
+ "dom/ipc/BrowserChild.cpp",
+ "dom/ipc/BrowserParent.cpp",
+ "dom/ipc/PBrowser.ipdl",
+ "dom/ipc/RemoteWebProgressRequest.cpp",
+ "dom/ipc/RemoteWebProgressRequest.h",
+ "dom/ipc/components.conf",
+ "dom/ipc/moz.build",
+ "dom/ipc/nsIRemoteWebProgressRequest.idl",
+ "dom/ipc/tests/browser.ini",
+ "dom/ipc/tests/browser_ElapsedTime.js",
+ "dom/ipc/tests/elapsed_time.sjs"
+ ],
+ "landingsystem": "lando",
+ "node": "9fc2e30af2852cbacf039e6b7cc36a0233c8ed4e",
+ "parents": ["226b1c518cba596226c80e4475a60ac3a0bfd198"],
+ "perfherderurl": "https://treeherder.mozilla.org/perf.html#/compare?originalProject=autoland&originalRevision=47d0de3f55cd0fcb345d4fa9a5a7d23891315182&newProject=autoland&newRevision=9fc2e30af2852cbacf039e6b7cc36a0233c8ed4e",
+ "phase": "public",
+ "pushdate": [1593029535, 0],
+ "pushhead": "47d0de3f55cd0fcb345d4fa9a5a7d23891315182",
+ "pushid": 119873,
+ "pushuser": "user@example.com",
+ "rev": 537254,
+ "reviewers": [{ "name": "barret", "revset": "reviewer(barret)" }],
+ "treeherderrepo": "autoland",
+ "treeherderrepourl": "https://treeherder.mozilla.org/#/jobs?repo=autoland"
+ },
+ {
+ "author": "User \u003cuser@example.com\u003e",
+ "backsoutnodes": [],
+ "bugs": [
+ {
+ "no": "1646582",
+ "url": "https://bugzilla.mozilla.org/show_bug.cgi?id=1646582"
+ }
+ ],
+ "date": [1593028695.0, 0],
+ "desc": "Bug 1646582 - Remove DOM(Inner)WindowID from nsIWebProgress. r=nika\n\nDifferential Revision: https://phabricator.services.mozilla.com/D80128",
+ "extra": { "branch": "default", "moz-landing-system": "lando" },
+ "files": [
+ "docshell/base/BrowsingContextWebProgress.cpp",
+ "dom/ipc/BrowserChild.cpp",
+ "dom/ipc/BrowserParent.cpp",
+ "dom/ipc/PBrowser.ipdl",
+ "dom/ipc/RemoteWebProgress.cpp",
+ "dom/ipc/RemoteWebProgress.h",
+ "dom/ipc/WindowGlobalParent.cpp",
+ "dom/ipc/nsIRemoteWebProgress.idl",
+ "toolkit/components/sessionstore/SessionStoreListener.cpp",
+ "toolkit/components/statusfilter/nsBrowserStatusFilter.cpp",
+ "uriloader/base/nsDocLoader.cpp",
+ "uriloader/base/nsIWebProgress.idl"
+ ],
+ "landingsystem": "lando",
+ "node": "1a749d5aaa71752a9f1d8296b7c32a2a30bccc84",
+ "parents": ["9fc2e30af2852cbacf039e6b7cc36a0233c8ed4e"],
+ "perfherderurl": "https://treeherder.mozilla.org/perf.html#/compare?originalProject=autoland&originalRevision=47d0de3f55cd0fcb345d4fa9a5a7d23891315182&newProject=autoland&newRevision=9fc2e30af2852cbacf039e6b7cc36a0233c8ed4e",
+ "phase": "public",
+ "pushdate": [1593029535, 0],
+ "pushhead": "47d0de3f55cd0fcb345d4fa9a5a7d23891315182",
+ "pushid": 119873,
+ "pushuser": "user@example.com",
+ "rev": 537255,
+ "reviewers": [{ "name": "nika", "revset": "reviewer(nika)" }],
+ "treeherderrepo": "autoland",
+ "treeherderrepourl": "https://treeherder.mozilla.org/#/jobs?repo=autoland"
+ },
+ {
+ "author": "User \u003cuser@example.com\u003e",
+ "backsoutnodes": [],
+ "bugs": [
+ {
+ "no": "1646582",
+ "url": "https://bugzilla.mozilla.org/show_bug.cgi?id=1646582"
+ }
+ ],
+ "date": [1593028744.0, 0],
+ "desc": "Bug 1646582 - Remove RemoteWebProgressManager. r=nika,Gijs\n\nDifferential Revision: https://phabricator.services.mozilla.com/D80129",
+ "extra": { "branch": "default", "moz-landing-system": "lando" },
+ "files": [
+ "devtools/client/responsive/browser/swap.js",
+ "dom/interfaces/base/nsIBrowser.idl",
+ "dom/ipc/BrowserParent.cpp",
+ "dom/ipc/BrowserParent.h",
+ "dom/ipc/RemoteWebProgress.cpp",
+ "dom/ipc/RemoteWebProgress.h",
+ "dom/ipc/WindowGlobalParent.cpp",
+ "dom/ipc/components.conf",
+ "dom/ipc/moz.build",
+ "dom/ipc/nsIRemoteWebProgress.idl",
+ "netwerk/ipc/DocumentLoadListener.cpp",
+ "netwerk/ipc/DocumentLoadListener.h",
+ "security/manager/ssl/nsSecureBrowserUI.cpp",
+ "toolkit/content/widgets/browser-custom-element.js",
+ "toolkit/modules/RemoteWebProgress.jsm",
+ "toolkit/modules/moz.build",
+ "tools/lint/eslint/modules.json"
+ ],
+ "landingsystem": "lando",
+ "node": "14b9b4515aabcb9060ece1a988c7993ef65a0bdc",
+ "parents": ["1a749d5aaa71752a9f1d8296b7c32a2a30bccc84"],
+ "perfherderurl": "https://treeherder.mozilla.org/perf.html#/compare?originalProject=autoland&originalRevision=47d0de3f55cd0fcb345d4fa9a5a7d23891315182&newProject=autoland&newRevision=9fc2e30af2852cbacf039e6b7cc36a0233c8ed4e",
+ "phase": "public",
+ "pushdate": [1593029535, 0],
+ "pushhead": "47d0de3f55cd0fcb345d4fa9a5a7d23891315182",
+ "pushid": 119873,
+ "pushuser": "user@example.com",
+ "rev": 537256,
+ "reviewers": [
+ { "name": "nika", "revset": "reviewer(nika)" },
+ { "name": "Gijs", "revset": "reviewer(Gijs)" }
+ ],
+ "treeherderrepo": "autoland",
+ "treeherderrepourl": "https://treeherder.mozilla.org/#/jobs?repo=autoland"
+ },
+ {
+ "author": "User \u003cuser@example.com\u003e",
+ "backsoutnodes": [],
+ "bugs": [
+ {
+ "no": "1646582",
+ "url": "https://bugzilla.mozilla.org/show_bug.cgi?id=1646582"
+ }
+ ],
+ "date": [1593028772.0, 0],
+ "desc": "Bug 1646582 - Pull the inner window id from the WindowGlobalParent, rather than passing it across PBrowser for updateForLocationChange. r=nika,Gijs\n\nDifferential Revision: https://phabricator.services.mozilla.com/D80131",
+ "extra": { "branch": "default", "moz-landing-system": "lando" },
+ "files": [
+ "devtools/client/responsive/browser/tunnel.js",
+ "dom/interfaces/base/nsIBrowser.idl",
+ "dom/ipc/BrowserChild.cpp",
+ "dom/ipc/BrowserParent.cpp",
+ "dom/ipc/PBrowser.ipdl",
+ "toolkit/content/widgets/browser-custom-element.js"
+ ],
+ "landingsystem": "lando",
+ "node": "47d0de3f55cd0fcb345d4fa9a5a7d23891315182",
+ "parents": ["14b9b4515aabcb9060ece1a988c7993ef65a0bdc"],
+ "perfherderurl": "https://treeherder.mozilla.org/perf.html#/compare?originalProject=autoland&originalRevision=47d0de3f55cd0fcb345d4fa9a5a7d23891315182&newProject=autoland&newRevision=9fc2e30af2852cbacf039e6b7cc36a0233c8ed4e",
+ "phase": "public",
+ "pushdate": [1593029535, 0],
+ "pushhead": "47d0de3f55cd0fcb345d4fa9a5a7d23891315182",
+ "pushid": 119873,
+ "pushuser": "user@example.com",
+ "rev": 537257,
+ "reviewers": [
+ { "name": "nika", "revset": "reviewer(nika)" },
+ { "name": "Gijs", "revset": "reviewer(Gijs)" }
+ ],
+ "treeherderrepo": "autoland",
+ "treeherderrepourl": "https://treeherder.mozilla.org/#/jobs?repo=autoland"
+ }
+ ],
+ "visible": true
+}
diff --git a/taskcluster/test/data/bugbug-push-schedules.json b/taskcluster/test/data/bugbug-push-schedules.json
new file mode 100644
index 0000000000..2bb448a8ee
--- /dev/null
+++ b/taskcluster/test/data/bugbug-push-schedules.json
@@ -0,0 +1,4632 @@
+{
+ "config_groups": {
+ "accessible/tests/browser/events/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw"
+ ],
+ "accessible/tests/browser/fission/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "accessible/tests/browser/mac/browser.ini": [
+ "test-macosx1014-64/debug-*",
+ "test-macosx1014-64/opt-*"
+ ],
+ "accessible/tests/browser/scroll/browser.ini": ["test-linux1804-64/opt-*"],
+ "accessible/tests/browser/states/browser.ini": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "accessible/tests/browser/telemetry/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "accessible/tests/mochitest/a11y.ini": ["test-linux1804-64-qr/opt-*-1proc"],
+ "accessible/tests/mochitest/actions/a11y.ini": [
+ "test-windows11-64-2009/opt-*-1proc"
+ ],
+ "accessible/tests/mochitest/tree/a11y.ini": [
+ "test-linux1804-64/opt-*-1proc"
+ ],
+ "browser/base/content/test/about/browser.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/base/content/test/alerts/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "browser/base/content/test/captivePortal/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw"
+ ],
+ "browser/base/content/test/contextMenu/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "browser/base/content/test/favicons/browser.ini": [
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/base/content/test/forms/browser.ini": [
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/base/content/test/fullscreen/browser.ini": [
+ "test-windows11-64-2009/debug-*"
+ ],
+ "browser/base/content/test/general/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "browser/base/content/test/keyboard/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw"
+ ],
+ "browser/base/content/test/pageActions/browser.ini": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "browser/base/content/test/pageinfo/browser.ini": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "browser/base/content/test/performance/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-windows11-64-2009-qr/opt-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/base/content/test/performance/hidpi/browser.ini": [
+ "test-windows11-64-2009/debug-*"
+ ],
+ "browser/base/content/test/performance/io/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "browser/base/content/test/performance/lowdpi/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw"
+ ],
+ "browser/base/content/test/popupNotifications/browser.ini": [
+ "test-macosx1014-64/opt-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "browser/base/content/test/popups/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "browser/base/content/test/protectionsUI/browser.ini": [
+ "test-windows11-64-2009-qr/debug-*",
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-windows11-64-2009-qr/opt-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/base/content/test/referrer/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "browser/base/content/test/sanitize/browser.ini": [
+ "test-windows11-64-2009-qr/debug-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "browser/base/content/test/siteIdentity/browser.ini": [
+ "test-windows11-64-2009-qr/debug-*",
+ "test-windows11-64-2009-qr/opt-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/base/content/test/static/browser.ini": [
+ "test-windows7-32/opt-*",
+ "test-macosx1014-64/opt-*",
+ "test-windows11-64-2009-qr/opt-*",
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/base/content/test/tabPrompts/browser.ini": [
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/base/content/test/tabcrashed/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "browser/base/content/test/tabs/browser.ini": [
+ "test-windows11-64-2009-asan/opt-*",
+ "test-linux1804-64/debug-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "browser/base/content/test/webextensions/browser.ini": [
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/base/content/test/zoom/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "browser/components/aboutlogins/tests/browser/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "browser/components/aboutlogins/tests/chrome/chrome.ini": [
+ "test-linux1804-64/debug-*-1proc",
+ "test-windows11-64-2009/debug-*-1proc"
+ ],
+ "browser/components/aboutlogins/tests/unit/xpcshell.ini": [
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/components/contextualidentity/test/browser/browser.ini": [
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/components/customizableui/test/browser.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-windows7-32/opt-*",
+ "test-macosx1014-64/debug-*",
+ "test-macosx1014-64/opt-*",
+ "test-windows11-64-2009-qr/debug-*",
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-windows11-64-2009-asan/opt-*",
+ "test-windows11-64-2009-qr/opt-*",
+ "test-windows11-64-2009/opt-*",
+ "test-windows7-32/debug-*"
+ ],
+ "browser/components/doh/test/browser/browser.ini": [
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/components/downloads/test/browser/browser.ini": [
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/components/downloads/test/unit/xpcshell.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/components/enterprisepolicies/tests/browser/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "browser/components/enterprisepolicies/tests/browser/disable_app_update/browser.ini": [
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/components/enterprisepolicies/tests/xpcshell/xpcshell.ini": [
+ "test-linux1804-64/debug-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/components/extensions/test/browser/browser-private.ini": [
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/components/extensions/test/browser/browser.ini": [
+ "test-windows7-32/opt-*",
+ "test-macosx1014-64/debug-*",
+ "test-macosx1014-64/opt-*",
+ "test-windows11-64-2009-qr/debug-*",
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64/opt-*",
+ "test-windows7-32/debug-*"
+ ],
+ "browser/components/extensions/test/mochitest/mochitest.ini": [
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64-qr/debug-*"
+ ],
+ "browser/components/migration/tests/unit/xpcshell.ini": [
+ "test-windows7-32/opt-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "browser/components/newtab/test/browser/abouthomecache/browser.ini": [
+ "test-windows11-64-2009-qr/debug-*",
+ "test-linux1804-64/debug-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "browser/components/newtab/test/browser/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "browser/components/newtab/test/xpcshell/xpcshell.ini": [
+ "test-linux1804-64-qr/opt-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "browser/components/originattributes/test/browser/browser.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-windows11-64-2009-qr/debug-*",
+ "test-linux1804-64/debug-*",
+ "test-linux1804-64/debug-*",
+ "test-linux1804-64/opt-*",
+ "test-linux1804-64-asan/opt-*"
+ ],
+ "browser/components/pioneer/test/browser/browser.ini": [
+ "test-windows7-32/opt-*",
+ "test-windows11-64-2009/debug-*",
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/components/places/tests/browser/browser.ini": [
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/components/places/tests/unit/xpcshell.ini": [
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/components/preferences/tests/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-linux1804-64/debug-*",
+ "test-windows11-64-2009-asan/opt-*",
+ "test-windows11-64-2009-qr/opt-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/components/preferences/tests/siteData/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "browser/components/protections/test/browser/browser.ini": [
+ "test-linux1804-64/debug-*",
+ "test-windows11-64-2009-qr/opt-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "browser/components/resistfingerprinting/test/browser/browser.ini": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "browser/components/resistfingerprinting/test/mochitest/mochitest.ini": [
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/components/safebrowsing/content/test/browser.ini": [
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/components/search/test/browser/browser.ini": [
+ "test-linux1804-64/debug-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "browser/components/search/test/browser/google_codes/browser.ini": [
+ "test-windows11-64-2009/debug-*"
+ ],
+ "browser/components/search/test/unit/xpcshell.ini": [
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/components/sessionstore/test/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw"
+ ],
+ "browser/components/sessionstore/test/unit/xpcshell.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "browser/components/shell/test/browser.ini": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "browser/components/shell/test/chrome.ini": [
+ "test-linux1804-64/opt-*-1proc"
+ ],
+ "browser/components/ssb/tests/browser/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw"
+ ],
+ "browser/components/tests/browser/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "browser/components/tests/browser/whats_new_page/browser.ini": [
+ "test-windows11-64-2009/debug-*"
+ ],
+ "browser/components/tests/unit/xpcshell.ini": [
+ "test-windows11-64-2009/opt-*",
+ "test-windows7-32/debug-*"
+ ],
+ "browser/components/touchbar/tests/browser/browser.ini": [
+ "test-macosx1014-64/debug-*",
+ "test-macosx1014-64/opt-*"
+ ],
+ "browser/components/translation/test/browser.ini": [
+ "test-windows7-32/opt-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/components/uitour/test/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "browser/components/urlbar/tests/browser-tips/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "browser/components/urlbar/tests/browser/browser.ini": [
+ "test-macosx1014-64/debug-*",
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/components/urlbar/tests/unit/xpcshell.ini": [
+ "test-linux1804-64-tsan/opt-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/extensions/formautofill/test/browser/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw"
+ ],
+ "browser/extensions/formautofill/test/browser/creditCard/browser.ini": [
+ "test-windows11-64-2009-qr/debug-*",
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "browser/extensions/formautofill/test/mochitest/creditCard/mochitest.ini": [
+ "test-macosx1014-64/debug-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/extensions/formautofill/test/mochitest/mochitest.ini": [
+ "test-macosx1014-64/opt-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "browser/extensions/formautofill/test/unit/xpcshell.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64-tsan/opt-*",
+ "test-windows7-32/debug-*"
+ ],
+ "browser/extensions/report-site-issue/test/browser/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "browser/modules/test/browser/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "browser/modules/test/unit/xpcshell.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/tools/mozscreenshots/controlCenter/browser.ini": [
+ "test-linux1804-64/opt-*"
+ ],
+ "browser/tools/mozscreenshots/permissionPrompts/browser.ini": [
+ "test-linux1804-64/opt-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "caps/tests/mochitest/chrome.ini": ["test-linux1804-64/opt-*-1proc"],
+ "devtools/client/aboutdebugging/test/browser/browser.ini": [
+ "test-linux1804-64/debug-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "devtools/client/application/test/browser/browser.ini": [
+ "test-linux1804-64/debug-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "devtools/client/debugger/test/mochitest/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw"
+ ],
+ "devtools/client/framework/test/browser-enable-popup-devtools-user.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "devtools/client/framework/test/browser-enable-popup-new-user.ini": [
+ "test-linux1804-64/opt-*"
+ ],
+ "devtools/client/framework/test/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw"
+ ],
+ "devtools/client/framework/test/metrics/browser_metrics_debugger.ini": [
+ "test-linux1804-64/opt-*"
+ ],
+ "devtools/client/inspector/computed/test/browser.ini": [
+ "test-windows11-64-2009/debug-*"
+ ],
+ "devtools/client/inspector/grids/test/browser.ini": [
+ "test-linux1804-64/opt-*"
+ ],
+ "devtools/client/inspector/markup/test/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "devtools/client/inspector/rules/test/browser_part1.ini": [
+ "test-linux1804-64/opt-*"
+ ],
+ "devtools/client/inspector/rules/test/browser_part2.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "devtools/client/inspector/shared/test/browser.ini": [
+ "test-linux1804-64/opt-*"
+ ],
+ "devtools/client/inspector/test/browser.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64/debug-*-spi-nw"
+ ],
+ "devtools/client/jsonview/test/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "devtools/client/netmonitor/src/har/test/browser.ini": [
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "devtools/client/netmonitor/test/browser.ini": [
+ "test-macosx1014-64/opt-*",
+ "test-linux1804-64/debug-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "devtools/client/responsive/test/browser/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw"
+ ],
+ "devtools/client/responsive/test/xpcshell/xpcshell.ini": [
+ "test-linux1804-64/opt-*"
+ ],
+ "devtools/client/shared/sourceeditor/test/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "devtools/client/shared/test/browser.ini": [
+ "test-linux1804-64/debug-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "devtools/client/storage/test/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw"
+ ],
+ "devtools/client/styleeditor/test/browser.ini": [
+ "test-linux1804-64/debug-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "devtools/client/webconsole/test/browser/_browser_console.ini": [
+ "test-windows11-64-2009-asan/opt-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "devtools/client/webconsole/test/browser/_jsterm.ini": [
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "devtools/client/webconsole/test/browser/_webconsole.ini": [
+ "test-linux1804-64/debug-*-spi-nw"
+ ],
+ "devtools/server/tests/chrome/chrome.ini": [
+ "test-linux1804-64/debug-*-spi-nw-1proc",
+ "test-windows7-32/opt-*-1proc"
+ ],
+ "devtools/server/tests/xpcshell/xpcshell.ini": [
+ "test-windows7-32/opt-*",
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64-qr/opt-*",
+ "test-linux1804-64/opt-*",
+ "test-windows7-32/debug-*"
+ ],
+ "devtools/shared/resources/tests/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "devtools/shared/test-helpers/browser.ini": [
+ "test-macosx1014-64/opt-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "devtools/shared/tests/xpcshell/xpcshell.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "devtools/shared/webconsole/test/chrome/chrome.ini": [
+ "test-windows7-32/opt-*-1proc"
+ ],
+ "docshell/test/browser/browser.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "docshell/test/mochitest/mochitest.ini": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "docshell/test/navigation/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw"
+ ],
+ "docshell/test/navigation/mochitest.ini": [
+ "test-linux1804-64-qr/debug-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "docshell/test/unit/xpcshell.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "dom/abort/tests/mochitest.ini": ["test-linux1804-64/opt-*"],
+ "dom/animation/test/mochitest.ini": [
+ "test-windows11-64-2009-qr/debug-*",
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "dom/base/test/chrome.ini": ["test-linux1804-64/debug-*-spi-nw-1proc"],
+ "dom/base/test/chrome/chrome.ini": ["test-windows11-64-2009/opt-*-1proc"],
+ "dom/base/test/mochitest.ini": [
+ "test-linux1804-64/debug-*",
+ "test-linux1804-64-qr/debug-*",
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64/opt-*",
+ "test-linux1804-64-tsan/opt-*",
+ "test-linux1804-64-asan/opt-*",
+ "test-android-em-7.0-x86_64/opt-geckoview-*",
+ "test-windows7-32/debug-*"
+ ],
+ "dom/broadcastchannel/tests/browser.ini": ["test-windows11-64-2009/opt-*"],
+ "dom/canvas/test/webgl-conf/generated-mochitest.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "dom/canvas/test/webgl-mochitest/mochitest.ini": [
+ "test-linux1804-64/opt-*"
+ ],
+ "dom/console/tests/mochitest.ini": ["test-windows11-64-2009/opt-*"],
+ "dom/credentialmanagement/tests/browser/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "dom/file/ipc/tests/mochitest.ini": ["test-windows11-64-2009/opt-*"],
+ "dom/file/tests/xpcshell.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64-qr/opt-*",
+ "test-android-em-7.0-x86_64/opt-geckoview-*"
+ ],
+ "dom/filesystem/tests/mochitest.ini": ["test-windows11-64-2009-qr/opt-*"],
+ "dom/html/reftests/autofocus/reftest.list": ["test-linux1804-64/opt-*"],
+ "dom/html/test/browser.ini": ["test-windows11-64-2009/opt-*"],
+ "dom/html/test/forms/mochitest.ini": ["test-linux1804-64/opt-*"],
+ "dom/html/test/mochitest.ini": [
+ "test-linux1804-64/debug-*",
+ "test-windows11-64-2009/opt-*",
+ "test-windows11-64-2009-asan/opt-*",
+ "test-linux1804-64-tsan/opt-*",
+ "test-macosx1014-64/debug-*"
+ ],
+ "dom/indexedDB/test/mochitest.ini": [
+ "test-macosx1014-64/opt-*",
+ "test-linux1804-64-qr/opt-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "dom/ipc/tests/JSProcessActor/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "dom/ipc/tests/JSWindowActor/browser.ini": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "dom/ipc/tests/browser.ini": ["test-windows7-32/opt-*"],
+ "dom/ipc/tests/chrome.ini": ["test-linux1804-64/debug-*-spi-nw-1proc"],
+ "dom/ipc/tests/xpcshell.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64-qr/opt-*",
+ "test-linux1804-64-tsan/opt-*"
+ ],
+ "dom/l10n/tests/mochitest/browser.ini": [
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "dom/l10n/tests/mochitest/chrome.ini": [
+ "test-linux1804-64/debug-*-spi-nw-1proc"
+ ],
+ "dom/localstorage/test/unit/xpcshell.ini": ["test-linux1804-64-qr/opt-*"],
+ "dom/media/mediacontrol/tests/browser.ini": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "dom/media/mediasource/test/mochitest.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-windows11-64-2009-qr/debug-*-spi",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "dom/media/test/crashtests/crashtests.list": ["test-linux1804-64/opt-*"],
+ "dom/media/test/mochitest.ini": [
+ "test-windows11-64-2009/opt-*",
+ "test-windows11-64-2009/opt-*-spi",
+ "test-linux1804-64/opt-*-spi"
+ ],
+ "dom/media/webaudio/test/mochitest.ini": [
+ "test-windows11-64-2009/opt-*",
+ "test-windows11-64-2009-qr/debug-*-spi",
+ "test-windows11-64-2009-qr/opt-*-spi"
+ ],
+ "dom/media/webrtc/tests/mochitests/mochitest.ini": [
+ "test-linux1804-64/debug-*",
+ "test-linux1804-64-qr/debug-*",
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64/opt-*",
+ "test-linux1804-64-qr/opt-*",
+ "test-windows11-64-2009/opt-*-spi",
+ "test-windows11-64-2009-qr/opt-*-spi",
+ "test-macosx1014-64/opt-*-spi",
+ "test-windows7-32/debug-*"
+ ],
+ "dom/media/webvtt/tests/xpcshell.ini": ["test-linux1804-64-qr/opt-*"],
+ "dom/network/tests/chrome.ini": ["test-linux1804-64-qr/opt-*-1proc"],
+ "dom/performance/tests/mochitest.ini": ["test-linux1804-64/opt-*"],
+ "dom/permission/tests/mochitest.ini": [
+ "test-linux1804-64/opt-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "dom/presentation/tests/mochitest/chrome.ini": [
+ "test-linux1804-64-qr/opt-*-1proc"
+ ],
+ "dom/presentation/tests/mochitest/mochitest.ini": [
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64-qr/opt-*",
+ "test-android-em-7.0-x86_64/opt-geckoview-*",
+ "test-android-em-7.0-x86_64/debug-geckoview-*",
+ "test-android-em-7.0-x86_64-qr/opt-geckoview-*"
+ ],
+ "dom/presentation/tests/xpcshell/xpcshell.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "dom/promise/tests/mochitest.ini": ["test-windows11-64-2009/opt-*"],
+ "dom/push/test/mochitest.ini": [
+ "test-windows11-64-2009-qr/opt-*",
+ "test-linux1804-64-qr/debug-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "dom/push/test/xpcshell/xpcshell.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64-qr/opt-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "dom/reporting/tests/browser.ini": ["test-windows11-64-2009/opt-*"],
+ "dom/security/test/csp/mochitest.ini": [
+ "test-linux1804-64-qr/debug-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "dom/security/test/general/browser.ini": ["test-linux1804-64/debug-*"],
+ "dom/security/test/general/mochitest.ini": ["test-windows11-64-2009/opt-*"],
+ "dom/security/test/https-only/browser.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "dom/security/test/mixedcontentblocker/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw"
+ ],
+ "dom/security/test/unit/xpcshell.ini": ["test-linux1804-64/debug-*-spi-nw"],
+ "dom/serviceworkers/test/browser.ini": ["test-windows11-64-2009/opt-*"],
+ "dom/serviceworkers/test/mochitest.ini": [
+ "test-linux1804-64-qr/opt-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "dom/system/tests/mochitest.ini": [
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64-tsan/opt-*"
+ ],
+ "dom/tests/browser/browser.ini": [
+ "test-macosx1014-64/opt-*",
+ "test-windows11-64-2009-qr/debug-*",
+ "test-windows11-64-2009-asan/opt-*",
+ "test-windows11-64-2009-qr/opt-*",
+ "test-linux1804-64/debug-*",
+ "test-linux1804-64/opt-*",
+ "test-windows7-32/debug-*"
+ ],
+ "dom/tests/mochitest/ajax/scriptaculous/mochitest.ini": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "dom/tests/mochitest/beacon/mochitest.ini": [
+ "test-windows11-64-2009-qr/opt-*",
+ "test-linux1804-64-tsan/opt-*"
+ ],
+ "dom/tests/mochitest/bugs/mochitest.ini": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "dom/tests/mochitest/chrome/chrome.ini": [
+ "test-windows11-64-2009/opt-*-1proc"
+ ],
+ "dom/tests/mochitest/dom-level0/mochitest.ini": [
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64-tsan/opt-*"
+ ],
+ "dom/tests/mochitest/dom-level1-core/mochitest.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "dom/tests/mochitest/fetch/mochitest.ini": [
+ "test-windows11-64-2009-qr/debug-*"
+ ],
+ "dom/tests/mochitest/gamepad/mochitest.ini": ["test-linux1804-64/opt-*"],
+ "dom/tests/mochitest/general/mochitest.ini": [
+ "test-windows11-64-2009-qr/opt-*",
+ "test-linux1804-64-tsan/opt-*"
+ ],
+ "dom/tests/mochitest/geolocation/chrome.ini": [
+ "test-linux1804-64-qr/opt-*-1proc"
+ ],
+ "dom/tests/mochitest/pointerlock/mochitest.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "dom/tests/mochitest/sessionstorage/chrome.ini": [
+ "test-linux1804-64-qr/opt-*-1proc"
+ ],
+ "dom/tests/mochitest/webcomponents/mochitest.ini": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "dom/tests/mochitest/whatwg/mochitest.ini": [
+ "test-windows11-64-2009-qr/opt-*",
+ "test-linux1804-64-tsan/opt-*"
+ ],
+ "dom/url/tests/browser.ini": ["test-windows7-32/opt-*"],
+ "dom/webauthn/tests/mochitest.ini": ["test-windows11-64-2009/opt-*"],
+ "dom/webgpu/mochitest/mochitest.ini": [
+ "test-linux1804-64-qr/opt-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "dom/websocket/tests/chrome.ini": ["test-linux1804-64-qr/opt-*-1proc"],
+ "dom/websocket/tests/mochitest.ini": [
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64-qr/debug-*",
+ "test-linux1804-64-asan/opt-*"
+ ],
+ "dom/websocket/tests/websocket_hybi/mochitest.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "dom/workers/test/browser.ini": ["test-windows11-64-2009/opt-*"],
+ "dom/workers/test/mochitest.ini": ["test-windows11-64-2009/opt-*"],
+ "dom/worklet/tests/mochitest.ini": [
+ "test-linux1804-64/debug-*",
+ "test-linux1804-64/opt-*",
+ "test-linux1804-64-tsan/opt-*"
+ ],
+ "dom/xhr/tests/mochitest.ini": ["test-windows11-64-2009-qr/opt-*"],
+ "dom/xslt/tests/mochitest/mochitest.ini": ["test-linux1804-64/opt-*"],
+ "editor/libeditor/tests/chrome.ini": [
+ "test-linux1804-64/debug-*-spi-nw-1proc"
+ ],
+ "editor/libeditor/tests/mochitest.ini": ["test-windows11-64-2009-qr/opt-*"],
+ "editor/reftests/xul/reftest.list": ["test-linux1804-64-qr/opt-*"],
+ "editor/spellchecker/tests/mochitest.ini": ["test-linux1804-64/opt-*"],
+ "extensions/permissions/test/unit/xpcshell.ini": [
+ "test-windows7-32/opt-*",
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64/debug-*-spi-nw"
+ ],
+ "extensions/spellcheck/tests/chrome/chrome.ini": [
+ "test-linux1804-64/debug-*-spi-nw-1proc"
+ ],
+ "extensions/spellcheck/tests/mochitest/mochitest.ini": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "extensions/universalchardet/tests/chrome.ini": [
+ "test-windows11-64-2009/opt-*-1proc"
+ ],
+ "gfx/layers/apz/test/mochitest/mochitest.ini": [
+ "test-linux1804-64/debug-*",
+ "test-windows11-64-2009/opt-*",
+ "test-android-em-7.0-x86_64-qr/debug-geckoview-*",
+ "test-windows11-64-2009/debug-*",
+ "test-windows11-64-2009-qr/debug-*",
+ "test-linux1804-64/opt-*",
+ "test-linux1804-64-qr/opt-*",
+ "test-windows11-64-2009-qr/opt-*",
+ "test-android-em-7.0-x86_64/opt-geckoview-*",
+ "test-android-em-7.0-x86_64-qr/opt-geckoview-*"
+ ],
+ "gfx/tests/crashtests/crashtests.list": ["test-linux1804-64/opt-*"],
+ "image/test/mochitest/mochitest.ini": [
+ "test-windows11-64-2009/opt-*",
+ "test-android-em-7.0-x86_64-qr/opt-geckoview-*"
+ ],
+ "image/test/unit/xpcshell.ini": ["test-linux1804-64/opt-*"],
+ "intl/uconv/tests/mochitest.ini": ["test-windows11-64-2009/opt-*"],
+ "js/xpconnect/tests/chrome/chrome.ini": [
+ "test-windows11-64-2009/debug-*-1proc"
+ ],
+ "js/xpconnect/tests/unit/xpcshell.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-linux1804-64-tsan/opt-*"
+ ],
+ "layout/base/tests/browser.ini": ["test-windows11-64-2009-qr/opt-*"],
+ "layout/base/tests/mochitest.ini": [
+ "test-windows11-64-2009/opt-*",
+ "test-windows11-64-2009-qr/debug-*",
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "layout/forms/test/mochitest.ini": [
+ "test-linux1804-64-qr/debug-*",
+ "test-android-em-7.0-x86_64-qr/debug-geckoview-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "layout/generic/test/mochitest.ini": [
+ "test-windows11-64-2009-qr/opt-*",
+ "test-linux1804-64-tsan/opt-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "layout/inspector/tests/chrome/chrome.ini": [
+ "test-linux1804-64/debug-*-1proc"
+ ],
+ "layout/inspector/tests/mochitest.ini": ["test-linux1804-64/opt-*"],
+ "layout/mathml/tests/mochitest.ini": ["test-linux1804-64/opt-*"],
+ "layout/reftests/async-scrolling/reftest.list": ["test-linux1804-64/opt-*"],
+ "layout/reftests/border-image/reftest.list": ["test-linux1804-64/opt-*"],
+ "layout/reftests/box-shadow/reftest.list": [
+ "test-linux1804-64-qr/debug-*-swr"
+ ],
+ "layout/reftests/bugs/reftest.list": [
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64-qr/debug-*-swr"
+ ],
+ "layout/reftests/canvas/reftest.list": ["test-windows11-64-2009-qr/opt-*"],
+ "layout/reftests/counters/reftest.list": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "layout/reftests/css-animations/reftest.list": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "layout/reftests/css-calc/reftest.list": ["test-linux1804-64/opt-*"],
+ "layout/reftests/css-default/submit-button/reftest.list": [
+ "test-linux1804-64/opt-*"
+ ],
+ "layout/reftests/css-disabled/output/reftest.list": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "layout/reftests/css-enabled/option/reftest.list": [
+ "test-linux1804-64/opt-*"
+ ],
+ "layout/reftests/css-gradients/reftest.list": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "layout/reftests/css-grid/reftest.list": ["test-linux1804-64/opt-*"],
+ "layout/reftests/css-invalid/fieldset/reftest.list": [
+ "test-linux1804-64/opt-*"
+ ],
+ "layout/reftests/css-invalid/output/reftest.list": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "layout/reftests/css-mediaqueries/reftest.list": [
+ "test-linux1804-64/opt-*"
+ ],
+ "layout/reftests/css-optional/reftest.list": ["test-linux1804-64-qr/opt-*"],
+ "layout/reftests/css-required/reftest.list": ["test-linux1804-64/opt-*"],
+ "layout/reftests/css-scroll-snap/reftest.list": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "layout/reftests/css-scrollbars/reftest.list": ["test-linux1804-64/opt-*"],
+ "layout/reftests/css-selectors/reftest.list": ["test-linux1804-64/opt-*"],
+ "layout/reftests/css-submit-invalid/button-submit/reftest.list": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "layout/reftests/css-submit-invalid/input-image/reftest.list": [
+ "test-linux1804-64/opt-*"
+ ],
+ "layout/reftests/css-submit-invalid/input-submit/reftest.list": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "layout/reftests/css-ui-valid/output/reftest.list": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "layout/reftests/css-variables/reftest.list": ["test-linux1804-64/opt-*"],
+ "layout/reftests/display-list/reftest.list": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "layout/reftests/first-letter/reftest.list": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "layout/reftests/flexbox/pagination/reftest.list": [
+ "test-windows11-64-2009-qr/debug-*"
+ ],
+ "layout/reftests/floats/reftest.list": [
+ "test-linux1804-64-qr/debug-*-swr",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "layout/reftests/font-matching/reftest.list": ["test-linux1804-64/opt-*"],
+ "layout/reftests/forms/input/datetime/reftest.list": [
+ "test-linux1804-64/opt-*"
+ ],
+ "layout/reftests/forms/input/number/reftest.list": [
+ "test-linux1804-64/opt-*",
+ "test-linux1804-64-qr/debug-*-swr"
+ ],
+ "layout/reftests/forms/output/reftest.list": ["test-linux1804-64/opt-*"],
+ "layout/reftests/forms/reftest.list": ["test-linux1804-64/opt-*"],
+ "layout/reftests/high-contrast/reftest.list": [
+ "test-linux1804-64-qr/debug-*"
+ ],
+ "layout/reftests/image-element/reftest.list": ["test-linux1804-64/opt-*"],
+ "layout/reftests/image-region/reftest.list": ["test-linux1804-64/opt-*"],
+ "layout/reftests/image/reftest.list": ["test-windows11-64-2009/opt-*"],
+ "layout/reftests/invalidation/reftest.list": [
+ "test-linux1804-64-qr/debug-*-swr"
+ ],
+ "layout/reftests/marquee/reftest.list": ["test-linux1804-64/opt-*"],
+ "layout/reftests/mathml/reftest.list": ["test-windows11-64-2009/opt-*"],
+ "layout/reftests/meta-viewport/reftest.list": [
+ "test-linux1804-64-qr/debug-*-swr"
+ ],
+ "layout/reftests/outline/reftest.list": ["test-linux1804-64-qr/opt-*"],
+ "layout/reftests/pixel-rounding/reftest.list": ["test-linux1804-64/opt-*"],
+ "layout/reftests/position-dynamic-changes/vertical/reftest_border_abspos.list": [
+ "test-linux1804-64/opt-*"
+ ],
+ "layout/reftests/position-dynamic-changes/vertical/reftest_margin_parent.list": [
+ "test-linux1804-64/opt-*"
+ ],
+ "layout/reftests/position-sticky/reftest.list": ["test-linux1804-64/opt-*"],
+ "layout/reftests/printing/reftest.list": [
+ "test-windows11-64-2009-qr/debug-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "layout/reftests/reftest-sanity/reftest.list": [
+ "test-linux1804-64/opt-*",
+ "test-linux1804-64-qr/debug-*-swr"
+ ],
+ "layout/reftests/reftest-sanity/urlprefixtests.list": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "layout/reftests/svg/as-image/reftest.list": [
+ "test-linux1804-64-qr/debug-*-swr"
+ ],
+ "layout/reftests/svg/reftest.list": [
+ "test-linux1804-64/opt-*",
+ "test-linux1804-64-qr/debug-*"
+ ],
+ "layout/reftests/svg/text/reftest.list": ["test-linux1804-64/opt-*"],
+ "layout/reftests/table-anonymous-boxes/reftest.list": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "layout/reftests/table-background/reftest.list": [
+ "test-linux1804-64/opt-*"
+ ],
+ "layout/reftests/table-html/reftest.list": ["test-linux1804-64/opt-*"],
+ "layout/reftests/transform-3d/reftest.list": [
+ "test-linux1804-64-qr/debug-*-swr"
+ ],
+ "layout/reftests/transform/reftest.list": [
+ "test-windows7-32/opt-*",
+ "test-linux1804-64-qr/debug-*-swr"
+ ],
+ "layout/reftests/usercss/reftest.list": ["test-linux1804-64/opt-*"],
+ "layout/reftests/web-animations/reftest.list": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "layout/reftests/writing-mode/reftest.list": ["test-linux1804-64-qr/opt-*"],
+ "layout/style/crashtests/crashtests.list": ["test-linux1804-64-qr/opt-*"],
+ "layout/style/test/mochitest.ini": [
+ "test-linux1804-64/debug-*",
+ "test-linux1804-64/opt-*",
+ "test-linux1804-64-tsan/opt-*",
+ "test-android-em-7.0-x86_64/opt-geckoview-*",
+ "test-android-em-7.0-x86_64/debug-geckoview-*"
+ ],
+ "layout/svg/tests/mochitest.ini": ["test-windows11-64-2009/opt-*"],
+ "layout/xul/test/browser.ini": ["test-windows11-64-2009-qr/opt-*"],
+ "layout/xul/test/chrome.ini": ["test-windows11-64-2009/opt-*-1proc"],
+ "mobile/android/components/extensions/test/mochitest/mochitest.ini": [
+ "test-android-em-7.0-x86_64/opt-geckoview-*"
+ ],
+ "modules/libpref/test/unit/xpcshell.ini": ["test-windows11-64-2009/opt-*"],
+ "netwerk/test/browser/browser.ini": ["test-windows11-64-2009-qr/opt-*"],
+ "netwerk/test/httpserver/test/xpcshell.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "netwerk/test/mochitests/mochitest.ini": [
+ "test-linux1804-64/debug-*",
+ "test-linux1804-64-qr/debug-*",
+ "test-linux1804-64-qr/opt-*",
+ "test-linux1804-64-tsan/opt-*"
+ ],
+ "netwerk/test/unit/xpcshell.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-macosx1014-64/debug-*",
+ "test-macosx1014-64/opt-*",
+ "test-linux1804-64-qr/opt-*",
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-android-em-7.0-x86_64/debug-geckoview-*",
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64-tsan/opt-*",
+ "test-linux1804-64/opt-*",
+ "test-windows7-32/debug-*",
+ "test-android-em-7.0-x86_64/opt-geckoview-*"
+ ],
+ "netwerk/test/unit_ipc/xpcshell.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64-tsan/opt-*",
+ "test-windows7-32/debug-*"
+ ],
+ "parser/htmlparser/tests/mochitest/browser.ini": [
+ "test-linux1804-64/opt-*"
+ ],
+ "parser/htmlparser/tests/mochitest/mochitest.ini": [
+ "test-linux1804-64-qr/opt-*",
+ "test-linux1804-64-tsan/opt-*"
+ ],
+ "remote/test/browser/page/browser.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "remote/test/browser/runtime/browser.ini": [
+ "test-windows11-64-2009-asan/opt-*"
+ ],
+ "security/manager/ssl/tests/mochitest/browser/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "security/manager/ssl/tests/unit/xpcshell-smartcards.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "security/manager/ssl/tests/unit/xpcshell.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64-qr/opt-*",
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-linux1804-64-tsan/opt-*",
+ "test-windows7-32/debug-*"
+ ],
+ "services/common/tests/unit/xpcshell.ini": [
+ "test-linux1804-64/debug-*-spi-nw"
+ ],
+ "services/fxaccounts/tests/xpcshell/xpcshell.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64/debug-*-spi-nw"
+ ],
+ "services/settings/test/unit/xpcshell.ini": [
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-android-em-7.0-x86_64/debug-geckoview-*",
+ "test-windows7-32/debug-*"
+ ],
+ "startupcache/test/browser/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw"
+ ],
+ "testing/crashtest/sanity/crashtests.list": ["test-linux1804-64/opt-*"],
+ "testing/mochitest/chrome/chrome.ini": [
+ "test-windows11-64-2009/opt-*-1proc"
+ ],
+ "testing/mochitest/tests/Harness_sanity/mochitest.ini": [
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "testing/mochitest/tests/browser/browser.ini": [
+ "test-linux1804-64/debug-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "testing/web-platform/mozilla/tests/dom": [
+ "test-android-em-7.0-x86_64/opt-geckoview-*",
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/mozilla/tests/webdriver": [
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "testing/web-platform/mozilla/tests/webdriver/take_full_screenshot": [
+ "test-windows11-64-2009/debug-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/IndexedDB/key-generators": [
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "testing/web-platform/tests/WebIDL/ecmascript-binding": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/acid/acid2": ["test-linux1804-64-qr/opt-*"],
+ "testing/web-platform/tests/apng": ["test-linux1804-64/opt-*"],
+ "testing/web-platform/tests/clipboard-apis/permissions": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/compat": ["test-windows11-64-2009-qr/opt-*"],
+ "testing/web-platform/tests/content-security-policy/default-src": [
+ "test-linux1804-64/opt-*"
+ ],
+ "testing/web-platform/tests/content-security-policy/frame-ancestors": [
+ "test-linux1804-64/opt-*"
+ ],
+ "testing/web-platform/tests/content-security-policy/securitypolicyviolation": [
+ "test-linux1804-64/opt-*"
+ ],
+ "testing/web-platform/tests/cookies/samesite": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/css/CSS2/backgrounds": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/css/CSS2/borders": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/css/CSS2/positioning": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/css/compositing": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/css/css-flexbox": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/css/css-font-loading": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/css/css-pseudo": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "testing/web-platform/tests/css/css-transforms": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/css/css-transitions": [
+ "test-windows11-64-2009/opt-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/css/css-ui": [
+ "test-windows11-64-2009/opt-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/css/css-will-change": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/css/css-writing-modes": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/css/cssom-view": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/css/filter-effects": [
+ "test-linux1804-64/opt-*",
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/css/mediaqueries": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/css/selectors": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "testing/web-platform/tests/dom/nodes": ["test-linux1804-64-qr/opt-*"],
+ "testing/web-platform/tests/encoding/streams": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/event-timing": ["test-linux1804-64/opt-*"],
+ "testing/web-platform/tests/fetch/api/basic": ["test-linux1804-64/opt-*"],
+ "testing/web-platform/tests/fetch/api/response": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/fetch/metadata": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/fetch/range": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/focus": ["test-windows11-64-2009-qr/opt-*"],
+ "testing/web-platform/tests/fullscreen/api": ["test-linux1804-64-qr/opt-*"],
+ "testing/web-platform/tests/fullscreen/rendering": [
+ "test-linux1804-64/opt-*"
+ ],
+ "testing/web-platform/tests/html-media-capture": [
+ "test-linux1804-64/opt-*"
+ ],
+ "testing/web-platform/tests/html/browsers/browsing-the-web": [
+ "test-linux1804-64/opt-*"
+ ],
+ "testing/web-platform/tests/html/browsers/the-window-object": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/html/cross-origin-embedder-policy": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/html/dom": ["test-linux1804-64-qr/opt-*"],
+ "testing/web-platform/tests/html/rendering/non-replaced-elements": [
+ "test-windows11-64-2009/opt-*-print-*",
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/html/semantics/embedded-content": [
+ "test-windows11-64-2009/opt-*",
+ "test-windows11-64-2009-qr/opt-*",
+ "test-macosx1014-64/debug-*"
+ ],
+ "testing/web-platform/tests/html/semantics/scripting-1": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/inert": [
+ "test-linux1804-64/opt-*",
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/infrastructure/expected-fail": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/infrastructure/webdriver/tests": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/loading": ["test-linux1804-64/opt-*"],
+ "testing/web-platform/tests/media-source": ["test-linux1804-64-qr/opt-*"],
+ "testing/web-platform/tests/mediacapture-record": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/mediacapture-streams": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/mimesniff/mime-types": [
+ "test-linux1804-64/opt-*",
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/mixed-content": ["test-linux1804-64-qr/opt-*"],
+ "testing/web-platform/tests/mixed-content/gen/top.http-rp": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "testing/web-platform/tests/mixed-content/gen/top.meta": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/origin-policy/bad-server": [
+ "test-linux1804-64/opt-*"
+ ],
+ "testing/web-platform/tests/origin-policy/content-security": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "testing/web-platform/tests/origin-policy/ids": [
+ "test-linux1804-64/opt-*",
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/page-lifecycle": ["test-linux1804-64/opt-*"],
+ "testing/web-platform/tests/page-visibility": ["test-linux1804-64/opt-*"],
+ "testing/web-platform/tests/picture-in-picture": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/pointerevents/pointerlock": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/quirks": ["test-linux1804-64-qr/opt-*"],
+ "testing/web-platform/tests/resize-observer": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "testing/web-platform/tests/resource-timing": [
+ "test-linux1804-64/opt-*",
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/screen-capture": ["test-linux1804-64-qr/opt-*"],
+ "testing/web-platform/tests/service-workers/cache-storage": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/service-workers/cache-storage/window": [
+ "test-linux1804-64/opt-*"
+ ],
+ "testing/web-platform/tests/service-workers/service-worker": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/shadow-dom/declarative": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/speech-api": ["test-linux1804-64/opt-*"],
+ "testing/web-platform/tests/streams": ["test-windows11-64-2009-qr/opt-*"],
+ "testing/web-platform/tests/streams/readable-streams": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/svg": ["test-linux1804-64-qr/opt-*"],
+ "testing/web-platform/tests/svg/animations": ["test-linux1804-64-qr/opt-*"],
+ "testing/web-platform/tests/svg/painting/reftests": [
+ "test-linux1804-64-qr/opt-*-print-*"
+ ],
+ "testing/web-platform/tests/svg/render": ["test-linux1804-64-qr/opt-*"],
+ "testing/web-platform/tests/uievents/mouse": ["test-linux1804-64-qr/opt-*"],
+ "testing/web-platform/tests/upgrade-insecure-requests/gen/top.http-rp": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/upgrade-insecure-requests/gen/top.meta": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/video-rvfc": ["test-linux1804-64/opt-*"],
+ "testing/web-platform/tests/wasm/webapi": ["test-linux1804-64/opt-*"],
+ "testing/web-platform/tests/web-animations": ["test-linux1804-64/opt-*"],
+ "testing/web-platform/tests/web-locks": ["test-windows11-64-2009-qr/opt-*"],
+ "testing/web-platform/tests/web-share": ["test-linux1804-64-qr/opt-*"],
+ "testing/web-platform/tests/webdriver/tests/classic/accept_alert": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/add_cookie": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/back": [
+ "test-windows11-64-2009/opt-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/delete_all_cookies": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/delete_cookie": [
+ "test-windows11-64-2009/opt-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/delete_session": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/dismiss_alert": [
+ "test-windows11-64-2009/opt-*-headless",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/element_clear": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/element_click": [
+ "test-windows11-64-2009/opt-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/element_send_keys": [
+ "test-windows11-64-2009/opt-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/execute_async_script": [
+ "test-windows11-64-2009/opt-*-headless"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/execute_script": [
+ "test-windows11-64-2009/opt-*-headless",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/find_element": [
+ "test-windows11-64-2009/opt-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/find_element_from_element": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/find_elements": [
+ "test-windows11-64-2009/opt-*-headless",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/find_elements_from_element": [
+ "test-windows11-64-2009/opt-*-headless",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/forward": [
+ "test-windows11-64-2009/opt-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/fullscreen_window": [
+ "test-windows11-64-2009/opt-*-headless",
+ "test-windows11-64-2009/debug-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/get_active_element": [
+ "test-windows11-64-2009/opt-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/get_alert_text": [
+ "test-windows11-64-2009/opt-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/get_current_url": [
+ "test-windows11-64-2009/opt-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/get_element_attribute": [
+ "test-windows11-64-2009/debug-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/get_element_css_value": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/get_element_property": [
+ "test-windows11-64-2009/opt-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/get_element_rect": [
+ "test-windows11-64-2009/opt-*-headless",
+ "test-windows11-64-2009/debug-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/get_element_tag_name": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/get_element_text": [
+ "test-windows11-64-2009/debug-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/get_named_cookie": [
+ "test-windows11-64-2009/debug-*",
+ "test-windows7-32/opt-*-headless",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/get_page_source": [
+ "test-windows11-64-2009/opt-*-headless",
+ "test-windows11-64-2009/debug-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/get_timeouts": [
+ "test-windows11-64-2009/opt-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/get_title": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/get_window_handles": [
+ "test-windows11-64-2009/debug-*",
+ "test-windows11-64-2009/opt-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/interface": [
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/is_element_enabled": [
+ "test-windows11-64-2009/debug-*",
+ "test-windows11-64-2009/opt-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/is_element_selected": [
+ "test-windows11-64-2009/opt-*-headless",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/maximize_window": [
+ "test-windows11-64-2009/opt-*-headless",
+ "test-windows11-64-2009/debug-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/new_session": [
+ "test-windows11-64-2009/opt-*-headless",
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/new_window": [
+ "test-windows11-64-2009/opt-*-headless",
+ "test-windows11-64-2009/debug-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/perform_actions": [
+ "test-windows11-64-2009/opt-*-headless"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/permissions": [
+ "test-windows11-64-2009/opt-*-headless",
+ "test-windows11-64-2009/debug-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/print": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/refresh": [
+ "test-windows11-64-2009/opt-*-headless",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/release_actions": [
+ "test-windows11-64-2009/opt-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/send_alert_text": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/set_timeouts": [
+ "test-windows11-64-2009/opt-*-headless",
+ "test-windows11-64-2009/debug-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/set_window_rect": [
+ "test-windows11-64-2009/opt-*-headless"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/status": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/switch_to_frame": [
+ "test-windows11-64-2009/opt-*-headless"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/switch_to_parent_frame": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/switch_to_window": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "testing/web-platform/tests/webdriver/tests/classic/take_screenshot": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "testing/web-platform/tests/webmessaging/with-options": [
+ "test-linux1804-64/opt-*"
+ ],
+ "testing/web-platform/tests/webrtc": ["test-linux1804-64-qr/opt-*"],
+ "testing/web-platform/tests/websockets": ["test-linux1804-64/opt-*"],
+ "testing/web-platform/tests/worklets": ["test-linux1804-64/opt-*"],
+ "testing/web-platform/tests/xhr": ["test-linux1804-64-qr/opt-*"],
+ "toolkit/components/aboutprocesses/tests/browser/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "toolkit/components/antitracking/test/browser/browser.ini": [
+ "test-macosx1014-64/opt-*",
+ "test-windows11-64-2009-qr/debug-*",
+ "test-linux1804-64/debug-*"
+ ],
+ "toolkit/components/antitracking/test/xpcshell/xpcshell.ini": [
+ "test-linux1804-64/debug-*",
+ "test-android-em-7.0-x86_64/debug-geckoview-*",
+ "test-linux1804-64/opt-*",
+ "test-windows7-32/debug-*"
+ ],
+ "toolkit/components/crashmonitor/test/unit/xpcshell.ini": [
+ "test-linux1804-64/opt-*"
+ ],
+ "toolkit/components/downloads/test/unit/xpcshell.ini": [
+ "test-linux1804-64/debug-*-spi-nw"
+ ],
+ "toolkit/components/enterprisepolicies/tests/xpcshell/xpcshell.ini": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "toolkit/components/extensions/test/browser/browser-serviceworker.ini": [
+ "test-linux1804-64/opt-*"
+ ],
+ "toolkit/components/extensions/test/browser/browser.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-windows7-32/opt-*",
+ "test-windows11-64-2009-qr/debug-*",
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-windows11-64-2009-qr/opt-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "toolkit/components/extensions/test/mochitest/chrome.ini": [
+ "test-windows11-64-2009/opt-*-1proc",
+ "test-windows11-64-2009/debug-*-1proc",
+ "test-linux1804-64/debug-*-spi-nw-1proc"
+ ],
+ "toolkit/components/extensions/test/mochitest/mochitest-remote.ini": [
+ "test-windows7-32/opt-*",
+ "test-windows11-64-2009/debug-*",
+ "test-macosx1014-64/debug-*",
+ "test-macosx1014-64/opt-*",
+ "test-linux1804-64-qr/opt-*",
+ "test-linux1804-64-qr/debug-*",
+ "test-windows11-64-2009-qr/opt-*",
+ "test-linux1804-64/debug-*",
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64-qr/debug-*",
+ "test-linux1804-64-tsan/opt-*",
+ "test-linux1804-64/opt-*",
+ "test-linux1804-64-asan/opt-*"
+ ],
+ "toolkit/components/extensions/test/mochitest/mochitest.ini": [
+ "test-linux1804-64/debug-*",
+ "test-linux1804-64-qr/debug-*",
+ "test-android-em-7.0-x86_64-qr/debug-geckoview-*",
+ "test-windows11-64-2009-qr/opt-*",
+ "test-linux1804-64-tsan/opt-*",
+ "test-android-em-7.0-x86_64/opt-geckoview-*",
+ "test-linux1804-64-qr/debug-*",
+ "test-macosx1014-64/debug-*",
+ "test-android-em-7.0-x86_64-qr/opt-geckoview-*"
+ ],
+ "toolkit/components/extensions/test/xpcshell/native_messaging.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64/opt-*",
+ "test-windows7-32/debug-*"
+ ],
+ "toolkit/components/extensions/test/xpcshell/xpcshell.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64/opt-*",
+ "test-windows7-32/debug-*"
+ ],
+ "toolkit/components/extensions/test/xpcshell/xpcshell-legacy-ep.ini": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "toolkit/components/extensions/test/xpcshell/xpcshell-remote.ini": [
+ "test-windows7-32/opt-*",
+ "test-windows11-64-2009/debug-*",
+ "test-macosx1014-64/debug-*",
+ "test-linux1804-64-qr/opt-*",
+ "test-linux1804-64-tsan/opt-*",
+ "test-windows7-32/debug-*"
+ ],
+ "toolkit/components/httpsonlyerror/tests/browser/browser.ini": [
+ "test-windows11-64-2009/debug-*"
+ ],
+ "toolkit/components/messaging-system/schemas/SpecialMessageActionSchemas/test/browser/browser.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-linux1804-64/opt-*"
+ ],
+ "toolkit/components/messaging-system/schemas/TriggerActionSchemas/test/browser/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw"
+ ],
+ "toolkit/components/messaging-system/test/unit/xpcshell.ini": [
+ "test-windows11-64-2009/debug-*"
+ ],
+ "toolkit/components/normandy/test/browser/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-windows11-64-2009-qr/opt-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "toolkit/components/normandy/test/unit/xpcshell.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64/debug-*-spi-nw"
+ ],
+ "toolkit/components/osfile/tests/xpcshell/xpcshell.ini": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "toolkit/components/passwordmgr/test/browser/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "toolkit/components/passwordmgr/test/mochitest/mochitest.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-macosx1014-64/opt-*",
+ "test-linux1804-64-qr/opt-*",
+ "test-linux1804-64-qr/debug-*",
+ "test-windows11-64-2009-qr/opt-*",
+ "test-linux1804-64-qr/debug-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "toolkit/components/passwordmgr/test/unit/xpcshell.ini": [
+ "test-linux1804-64/debug-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "toolkit/components/pictureinpicture/tests/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "toolkit/components/places/tests/browser/browser.ini": [
+ "test-linux1804-64/debug-*",
+ "test-windows11-64-2009-qr/opt-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "toolkit/components/places/tests/unifiedcomplete/xpcshell.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "toolkit/components/printing/tests/browser.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64/debug-*",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "toolkit/components/prompts/test/chrome.ini": [
+ "test-windows11-64-2009/opt-*-1proc"
+ ],
+ "toolkit/components/prompts/test/mochitest.ini": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "toolkit/components/remotebrowserutils/tests/browser/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "toolkit/components/satchel/test/mochitest.ini": [
+ "test-macosx1014-64/opt-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "toolkit/components/search/tests/xpcshell/xpcshell.ini": [
+ "test-windows7-32/opt-*",
+ "test-linux1804-64-qr/opt-*",
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-windows11-64-2009/opt-*",
+ "test-windows7-32/debug-*"
+ ],
+ "toolkit/components/telemetry/tests/browser/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "toolkit/components/telemetry/tests/unit/xpcshell.ini": [
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-linux1804-64/opt-*"
+ ],
+ "toolkit/components/thumbnails/test/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "toolkit/components/url-classifier/tests/mochitest/mochitest.ini": [
+ "test-linux1804-64/debug-*",
+ "test-linux1804-64-qr/debug-*",
+ "test-android-em-7.0-x86_64-qr/debug-geckoview-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "toolkit/components/url-classifier/tests/unit/xpcshell.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64-qr/opt-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "toolkit/components/viewsource/test/browser/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "toolkit/components/windowwatcher/test/browser.ini": [
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "toolkit/content/tests/browser/browser.ini": [
+ "test-windows11-64-2009-qr/debug-*",
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "toolkit/content/tests/chrome/chrome.ini": [
+ "test-windows11-64-2009/opt-*-1proc",
+ "test-linux1804-64/debug-*-spi-nw-1proc"
+ ],
+ "toolkit/content/tests/mochitest/mochitest.ini": [
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "toolkit/content/tests/reftests/reftest.list": ["test-linux1804-64/opt-*"],
+ "toolkit/content/tests/widgets/chrome.ini": [
+ "test-windows11-64-2009/opt-*-1proc"
+ ],
+ "toolkit/content/tests/widgets/mochitest.ini": [
+ "test-linux1804-64-qr/opt-*"
+ ],
+ "toolkit/crashreporter/test/unit/xpcshell.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "toolkit/modules/tests/xpcshell/xpcshell.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-macosx1014-64/debug-*",
+ "test-macosx1014-64/opt-*",
+ "test-linux1804-64-qr/opt-*",
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-linux1804-64/debug-*",
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64/opt-*",
+ "test-windows7-32/debug-*"
+ ],
+ "toolkit/mozapps/extensions/test/browser/browser.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64/debug-*",
+ "test-windows11-64-2009-qr/opt-*",
+ "test-linux1804-64/opt-*"
+ ],
+ "toolkit/mozapps/extensions/test/xpcshell/rs-blocklist/xpcshell.ini": [
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "toolkit/mozapps/extensions/test/xpcshell/xpcshell-unpack.ini": [
+ "test-linux1804-64/opt-*"
+ ],
+ "toolkit/mozapps/extensions/test/xpcshell/xpcshell.ini": [
+ "test-windows11-64-2009/opt-*",
+ "test-linux1804-64/opt-*",
+ "test-windows7-32/debug-*"
+ ],
+ "toolkit/mozapps/extensions/test/xpinstall/browser.ini": [
+ "test-windows11-64-2009-qr/opt-*",
+ "test-linux1804-64/debug-*"
+ ],
+ "toolkit/mozapps/update/tests/browser/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "toolkit/mozapps/update/tests/browser/browser.legacy.ini": [
+ "test-windows11-64-2009-qr/opt-*"
+ ],
+ "toolkit/xre/test/xpcshell.ini": [
+ "test-linux1804-64-qr/opt-*",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "tools/profiler/tests/browser/browser.ini": [
+ "test-windows11-64-2009/opt-*"
+ ],
+ "tools/profiler/tests/xpcshell/xpcshell.ini": [
+ "test-linux1804-64/debug-*-spi-nw",
+ "test-windows11-64-2009/opt-*"
+ ],
+ "uriloader/exthandler/tests/mochitest/browser.ini": [
+ "test-windows11-64-2009/debug-*",
+ "test-linux1804-64/debug-*-spi-nw"
+ ],
+ "uriloader/exthandler/tests/mochitest/mochitest.ini": [
+ "test-linux1804-64/opt-*"
+ ],
+ "uriloader/exthandler/tests/unit/xpcshell.ini": [
+ "test-linux1804-64/debug-*-spi-nw"
+ ],
+ "widget/reftests/reftest.list": ["test-linux1804-64-qr/opt-*"],
+ "widget/tests/chrome.ini": [
+ "test-windows7-32/opt-*-1proc",
+ "test-linux1804-64-qr/opt-*-1proc"
+ ],
+ "widget/tests/mochitest.ini": [
+ "test-windows11-64-2009-qr/opt-*",
+ "test-linux1804-64-tsan/opt-*"
+ ],
+ "xpcom/tests/unit/xpcshell.ini": ["test-windows11-64-2009/opt-*"]
+ },
+ "groups": {
+ "/IndexedDB/key-generators": 0.61,
+ "/WebIDL/ecmascript-binding": 0.6,
+ "/_mozilla/dom": 0.63,
+ "/_mozilla/webdriver": 0.77,
+ "/_mozilla/webdriver/take_full_screenshot": 0.55,
+ "/acid/acid2": 0.84,
+ "/apng": 0.69,
+ "/clipboard-apis/permissions": 0.57,
+ "/compat": 0.69,
+ "/content-security-policy/default-src": 0.55,
+ "/content-security-policy/frame-ancestors": 0.6,
+ "/content-security-policy/securitypolicyviolation": 0.58,
+ "/cookies/samesite": 0.5,
+ "/css/CSS2/backgrounds": 0.53,
+ "/css/CSS2/borders": 0.53,
+ "/css/CSS2/positioning": 0.54,
+ "/css/compositing": 0.64,
+ "/css/css-flexbox": 0.64,
+ "/css/css-font-loading": 0.52,
+ "/css/css-pseudo": 0.85,
+ "/css/css-transforms": 0.63,
+ "/css/css-transitions": 0.51,
+ "/css/css-ui": 0.69,
+ "/css/css-will-change": 0.59,
+ "/css/css-writing-modes": 0.69,
+ "/css/cssom-view": 0.79,
+ "/css/filter-effects": 0.67,
+ "/css/mediaqueries": 0.62,
+ "/css/selectors": 0.6,
+ "/dom/nodes": 0.76,
+ "/encoding/streams": 0.51,
+ "/event-timing": 0.61,
+ "/fetch/api/basic": 0.68,
+ "/fetch/api/response": 0.53,
+ "/fetch/metadata": 0.8,
+ "/fetch/range": 0.76,
+ "/focus": 0.68,
+ "/fullscreen/api": 0.64,
+ "/fullscreen/rendering": 0.58,
+ "/html-media-capture": 0.57,
+ "/html/browsers/browsing-the-web": 0.54,
+ "/html/browsers/the-window-object": 0.74,
+ "/html/cross-origin-embedder-policy": 0.75,
+ "/html/dom": 0.65,
+ "/html/rendering/non-replaced-elements": 0.73,
+ "/html/semantics/embedded-content": 0.55,
+ "/html/semantics/scripting-1": 0.57,
+ "/inert": 0.55,
+ "/infrastructure/expected-fail": 0.55,
+ "/infrastructure/webdriver/tests": 0.57,
+ "/loading": 0.57,
+ "/media-source": 0.68,
+ "/mediacapture-record": 0.76,
+ "/mediacapture-streams": 0.53,
+ "/mimesniff/mime-types": 0.7,
+ "/mixed-content": 0.57,
+ "/mixed-content/gen/top.http-rp": 0.51,
+ "/mixed-content/gen/top.meta": 0.65,
+ "/origin-policy/bad-server": 0.51,
+ "/origin-policy/content-security": 0.71,
+ "/origin-policy/ids": 0.81,
+ "/page-lifecycle": 0.57,
+ "/page-visibility": 0.63,
+ "/picture-in-picture": 0.57,
+ "/pointerevents/pointerlock": 0.82,
+ "/quirks": 0.56,
+ "/resize-observer": 0.55,
+ "/resource-timing": 0.69,
+ "/screen-capture": 0.58,
+ "/service-workers/cache-storage": 0.55,
+ "/service-workers/cache-storage/window": 0.51,
+ "/service-workers/service-worker": 0.87,
+ "/shadow-dom/declarative": 0.55,
+ "/speech-api": 0.57,
+ "/streams": 0.55,
+ "/streams/readable-streams": 0.5,
+ "/svg": 0.57,
+ "/svg/animations": 0.54,
+ "/svg/painting/reftests": 0.52,
+ "/svg/render": 0.55,
+ "/uievents/mouse": 0.55,
+ "/upgrade-insecure-requests/gen/top.http-rp": 0.71,
+ "/upgrade-insecure-requests/gen/top.meta": 0.7,
+ "/video-rvfc": 0.51,
+ "/wasm/webapi": 0.58,
+ "/web-animations": 0.57,
+ "/web-locks": 0.75,
+ "/web-share": 0.57,
+ "/webdriver/tests/classic/accept_alert": 0.86,
+ "/webdriver/tests/classic/add_cookie": 0.73,
+ "/webdriver/tests/classic/back": 0.73,
+ "/webdriver/tests/classic/delete_all_cookies": 0.73,
+ "/webdriver/tests/classic/delete_cookie": 0.76,
+ "/webdriver/tests/classic/delete_session": 0.7,
+ "/webdriver/tests/classic/dismiss_alert": 0.7,
+ "/webdriver/tests/classic/element_clear": 0.71,
+ "/webdriver/tests/classic/element_click": 0.79,
+ "/webdriver/tests/classic/element_send_keys": 0.67,
+ "/webdriver/tests/classic/execute_async_script": 0.82,
+ "/webdriver/tests/classic/execute_script": 0.76,
+ "/webdriver/tests/classic/find_element": 0.62,
+ "/webdriver/tests/classic/find_element_from_element": 0.73,
+ "/webdriver/tests/classic/find_elements": 0.66,
+ "/webdriver/tests/classic/find_elements_from_element": 0.73,
+ "/webdriver/tests/classic/forward": 0.82,
+ "/webdriver/tests/classic/fullscreen_window": 0.76,
+ "/webdriver/tests/classic/get_active_element": 0.67,
+ "/webdriver/tests/classic/get_alert_text": 0.73,
+ "/webdriver/tests/classic/get_current_url": 0.76,
+ "/webdriver/tests/classic/get_element_attribute": 0.56,
+ "/webdriver/tests/classic/get_element_css_value": 0.73,
+ "/webdriver/tests/classic/get_element_property": 0.73,
+ "/webdriver/tests/classic/get_element_rect": 0.79,
+ "/webdriver/tests/classic/get_element_tag_name": 0.79,
+ "/webdriver/tests/classic/get_element_text": 0.52,
+ "/webdriver/tests/classic/get_named_cookie": 0.67,
+ "/webdriver/tests/classic/get_page_source": 0.7,
+ "/webdriver/tests/classic/get_timeouts": 0.79,
+ "/webdriver/tests/classic/get_title": 0.67,
+ "/webdriver/tests/classic/get_window_handles": 0.73,
+ "/webdriver/tests/classic/interface": 0.66,
+ "/webdriver/tests/classic/is_element_enabled": 0.54,
+ "/webdriver/tests/classic/is_element_selected": 0.6,
+ "/webdriver/tests/classic/maximize_window": 0.79,
+ "/webdriver/tests/classic/new_session": 0.54,
+ "/webdriver/tests/classic/new_window": 0.51,
+ "/webdriver/tests/classic/perform_actions": 0.66,
+ "/webdriver/tests/classic/permissions": 0.73,
+ "/webdriver/tests/classic/print": 0.86,
+ "/webdriver/tests/classic/refresh": 0.54,
+ "/webdriver/tests/classic/release_actions": 0.68,
+ "/webdriver/tests/classic/send_alert_text": 0.74,
+ "/webdriver/tests/classic/set_timeouts": 0.53,
+ "/webdriver/tests/classic/set_window_rect": 0.68,
+ "/webdriver/tests/classic/status": 0.74,
+ "/webdriver/tests/classic/switch_to_frame": 0.56,
+ "/webdriver/tests/classic/switch_to_parent_frame": 0.79,
+ "/webdriver/tests/classic/switch_to_window": 0.74,
+ "/webdriver/tests/classic/take_screenshot": 0.67,
+ "/webmessaging/with-options": 0.55,
+ "/webrtc": 0.9,
+ "/websockets": 0.68,
+ "/worklets": 0.65,
+ "/xhr": 0.78,
+ "accessible/tests/browser/events/browser.ini": 0.77,
+ "accessible/tests/browser/fission/browser.ini": 0.76,
+ "accessible/tests/browser/mac/browser.ini": 0.74,
+ "accessible/tests/browser/scroll/browser.ini": 0.52,
+ "accessible/tests/browser/states/browser.ini": 0.78,
+ "accessible/tests/browser/telemetry/browser.ini": 0.77,
+ "accessible/tests/mochitest/a11y.ini": 0.59,
+ "accessible/tests/mochitest/actions/a11y.ini": 0.51,
+ "accessible/tests/mochitest/tree/a11y.ini": 0.86,
+ "browser/base/content/test/about/browser.ini": 0.85,
+ "browser/base/content/test/alerts/browser.ini": 0.63,
+ "browser/base/content/test/captivePortal/browser.ini": 0.53,
+ "browser/base/content/test/contextMenu/browser.ini": 0.52,
+ "browser/base/content/test/favicons/browser.ini": 0.66,
+ "browser/base/content/test/forms/browser.ini": 0.64,
+ "browser/base/content/test/fullscreen/browser.ini": 0.82,
+ "browser/base/content/test/general/browser.ini": 0.99,
+ "browser/base/content/test/keyboard/browser.ini": 0.74,
+ "browser/base/content/test/pageActions/browser.ini": 0.79,
+ "browser/base/content/test/pageinfo/browser.ini": 0.72,
+ "browser/base/content/test/performance/browser.ini": 0.98,
+ "browser/base/content/test/performance/hidpi/browser.ini": 0.68,
+ "browser/base/content/test/performance/io/browser.ini": 0.67,
+ "browser/base/content/test/performance/lowdpi/browser.ini": 0.68,
+ "browser/base/content/test/popupNotifications/browser.ini": 0.85,
+ "browser/base/content/test/popups/browser.ini": 0.66,
+ "browser/base/content/test/protectionsUI/browser.ini": 0.76,
+ "browser/base/content/test/referrer/browser.ini": 0.77,
+ "browser/base/content/test/sanitize/browser.ini": 0.7,
+ "browser/base/content/test/siteIdentity/browser.ini": 0.95,
+ "browser/base/content/test/static/browser.ini": 0.8,
+ "browser/base/content/test/tabPrompts/browser.ini": 0.73,
+ "browser/base/content/test/tabcrashed/browser.ini": 0.6,
+ "browser/base/content/test/tabs/browser.ini": 0.81,
+ "browser/base/content/test/webextensions/browser.ini": 0.88,
+ "browser/base/content/test/zoom/browser.ini": 0.7,
+ "browser/components/aboutlogins/tests/browser/browser.ini": 0.75,
+ "browser/components/aboutlogins/tests/chrome/chrome.ini": 0.78,
+ "browser/components/aboutlogins/tests/unit/xpcshell.ini": 0.86,
+ "browser/components/contextualidentity/test/browser/browser.ini": 0.52,
+ "browser/components/customizableui/test/browser.ini": 0.97,
+ "browser/components/doh/test/browser/browser.ini": 0.65,
+ "browser/components/downloads/test/browser/browser.ini": 0.68,
+ "browser/components/downloads/test/unit/xpcshell.ini": 0.7,
+ "browser/components/enterprisepolicies/tests/browser/browser.ini": 0.85,
+ "browser/components/enterprisepolicies/tests/browser/disable_app_update/browser.ini": 0.65,
+ "browser/components/enterprisepolicies/tests/xpcshell/xpcshell.ini": 0.51,
+ "browser/components/extensions/test/browser/browser-private.ini": 0.88,
+ "browser/components/extensions/test/browser/browser.ini": 0.99,
+ "browser/components/extensions/test/mochitest/mochitest.ini": 0.72,
+ "browser/components/migration/tests/unit/xpcshell.ini": 0.93,
+ "browser/components/newtab/test/browser/abouthomecache/browser.ini": 0.96,
+ "browser/components/newtab/test/browser/browser.ini": 0.77,
+ "browser/components/newtab/test/xpcshell/xpcshell.ini": 0.69,
+ "browser/components/originattributes/test/browser/browser.ini": 0.76,
+ "browser/components/pioneer/test/browser/browser.ini": 0.63,
+ "browser/components/places/tests/browser/browser.ini": 0.93,
+ "browser/components/places/tests/unit/xpcshell.ini": 0.67,
+ "browser/components/preferences/tests/browser.ini": 0.97,
+ "browser/components/preferences/tests/siteData/browser.ini": 0.96,
+ "browser/components/protections/test/browser/browser.ini": 0.94,
+ "browser/components/resistfingerprinting/test/browser/browser.ini": 0.92,
+ "browser/components/resistfingerprinting/test/mochitest/mochitest.ini": 0.64,
+ "browser/components/safebrowsing/content/test/browser.ini": 0.65,
+ "browser/components/search/test/browser/browser.ini": 0.96,
+ "browser/components/search/test/browser/google_codes/browser.ini": 0.67,
+ "browser/components/search/test/unit/xpcshell.ini": 0.59,
+ "browser/components/sessionstore/test/browser.ini": 0.92,
+ "browser/components/sessionstore/test/unit/xpcshell.ini": 0.86,
+ "browser/components/shell/test/browser.ini": 0.95,
+ "browser/components/shell/test/chrome.ini": 0.79,
+ "browser/components/ssb/tests/browser/browser.ini": 0.81,
+ "browser/components/tests/browser/browser.ini": 0.67,
+ "browser/components/tests/browser/whats_new_page/browser.ini": 0.56,
+ "browser/components/tests/unit/xpcshell.ini": 0.82,
+ "browser/components/touchbar/tests/browser/browser.ini": 0.66,
+ "browser/components/translation/test/browser.ini": 0.89,
+ "browser/components/uitour/test/browser.ini": 0.91,
+ "browser/components/urlbar/tests/browser-tips/browser.ini": 0.82,
+ "browser/components/urlbar/tests/browser/browser.ini": 0.99,
+ "browser/components/urlbar/tests/unit/xpcshell.ini": 0.51,
+ "browser/extensions/formautofill/test/browser/browser.ini": 0.59,
+ "browser/extensions/formautofill/test/browser/creditCard/browser.ini": 0.97,
+ "browser/extensions/formautofill/test/mochitest/creditCard/mochitest.ini": 0.62,
+ "browser/extensions/formautofill/test/mochitest/mochitest.ini": 0.77,
+ "browser/extensions/formautofill/test/unit/xpcshell.ini": 0.78,
+ "browser/extensions/report-site-issue/test/browser/browser.ini": 0.53,
+ "browser/modules/test/browser/browser.ini": 0.99,
+ "browser/modules/test/unit/xpcshell.ini": 0.75,
+ "browser/tools/mozscreenshots/controlCenter/browser.ini": 0.69,
+ "browser/tools/mozscreenshots/permissionPrompts/browser.ini": 0.98,
+ "caps/tests/mochitest/chrome.ini": 0.57,
+ "devtools/client/aboutdebugging/test/browser/browser.ini": 0.69,
+ "devtools/client/application/test/browser/browser.ini": 0.94,
+ "devtools/client/debugger/test/mochitest/browser.ini": 0.65,
+ "devtools/client/framework/test/browser-enable-popup-devtools-user.ini": 0.56,
+ "devtools/client/framework/test/browser-enable-popup-new-user.ini": 0.56,
+ "devtools/client/framework/test/browser.ini": 0.91,
+ "devtools/client/framework/test/metrics/browser_metrics_debugger.ini": 0.63,
+ "devtools/client/inspector/computed/test/browser.ini": 0.8,
+ "devtools/client/inspector/grids/test/browser.ini": 0.57,
+ "devtools/client/inspector/markup/test/browser.ini": 0.91,
+ "devtools/client/inspector/rules/test/browser_part1.ini": 0.86,
+ "devtools/client/inspector/rules/test/browser_part2.ini": 0.59,
+ "devtools/client/inspector/shared/test/browser.ini": 0.63,
+ "devtools/client/inspector/test/browser.ini": 0.68,
+ "devtools/client/jsonview/test/browser.ini": 0.62,
+ "devtools/client/netmonitor/src/har/test/browser.ini": 0.76,
+ "devtools/client/netmonitor/test/browser.ini": 0.91,
+ "devtools/client/responsive/test/browser/browser.ini": 0.71,
+ "devtools/client/responsive/test/xpcshell/xpcshell.ini": 0.55,
+ "devtools/client/shared/sourceeditor/test/browser.ini": 0.71,
+ "devtools/client/shared/test/browser.ini": 0.94,
+ "devtools/client/storage/test/browser.ini": 0.66,
+ "devtools/client/styleeditor/test/browser.ini": 0.91,
+ "devtools/client/webconsole/test/browser/_browser_console.ini": 0.88,
+ "devtools/client/webconsole/test/browser/_jsterm.ini": 0.71,
+ "devtools/client/webconsole/test/browser/_webconsole.ini": 0.89,
+ "devtools/server/tests/chrome/chrome.ini": 0.77,
+ "devtools/server/tests/xpcshell/xpcshell.ini": 0.85,
+ "devtools/shared/resources/tests/browser.ini": 0.9,
+ "devtools/shared/test-helpers/browser.ini": 0.55,
+ "devtools/shared/tests/xpcshell/xpcshell.ini": 0.7,
+ "devtools/shared/webconsole/test/chrome/chrome.ini": 0.65,
+ "docshell/test/browser/browser.ini": 0.96,
+ "docshell/test/mochitest/mochitest.ini": 0.85,
+ "docshell/test/navigation/browser.ini": 0.68,
+ "docshell/test/navigation/mochitest.ini": 0.8,
+ "docshell/test/unit/xpcshell.ini": 0.52,
+ "dom/abort/tests/mochitest.ini": 0.69,
+ "dom/animation/test/mochitest.ini": 0.69,
+ "dom/base/test/chrome.ini": 0.57,
+ "dom/base/test/chrome/chrome.ini": 0.88,
+ "dom/base/test/mochitest.ini": 0.91,
+ "dom/broadcastchannel/tests/browser.ini": 0.69,
+ "dom/canvas/test/webgl-conf/generated-mochitest.ini": 0.6,
+ "dom/canvas/test/webgl-mochitest/mochitest.ini": 0.67,
+ "dom/console/tests/mochitest.ini": 0.62,
+ "dom/credentialmanagement/tests/browser/browser.ini": 0.6,
+ "dom/file/ipc/tests/mochitest.ini": 0.67,
+ "dom/file/tests/xpcshell.ini": 0.67,
+ "dom/filesystem/tests/mochitest.ini": 0.8,
+ "dom/html/reftests/autofocus/reftest.list": 0.68,
+ "dom/html/test/browser.ini": 0.77,
+ "dom/html/test/forms/mochitest.ini": 0.75,
+ "dom/html/test/mochitest.ini": 0.56,
+ "dom/indexedDB/test/mochitest.ini": 0.53,
+ "dom/ipc/tests/JSProcessActor/browser.ini": 0.71,
+ "dom/ipc/tests/JSWindowActor/browser.ini": 0.75,
+ "dom/ipc/tests/browser.ini": 0.58,
+ "dom/ipc/tests/chrome.ini": 0.63,
+ "dom/ipc/tests/xpcshell.ini": 0.89,
+ "dom/l10n/tests/mochitest/browser.ini": 0.64,
+ "dom/l10n/tests/mochitest/chrome.ini": 0.55,
+ "dom/localstorage/test/unit/xpcshell.ini": 0.54,
+ "dom/media/mediacontrol/tests/browser.ini": 0.79,
+ "dom/media/mediasource/test/mochitest.ini": 0.82,
+ "dom/media/test/crashtests/crashtests.list": 0.57,
+ "dom/media/test/mochitest.ini": 0.95,
+ "dom/media/webaudio/test/mochitest.ini": 0.61,
+ "dom/media/webrtc/tests/mochitests/mochitest.ini": 0.98,
+ "dom/media/webvtt/tests/xpcshell.ini": 0.8,
+ "dom/network/tests/chrome.ini": 0.57,
+ "dom/performance/tests/mochitest.ini": 0.67,
+ "dom/permission/tests/mochitest.ini": 0.75,
+ "dom/presentation/tests/mochitest/chrome.ini": 0.55,
+ "dom/presentation/tests/mochitest/mochitest.ini": 0.69,
+ "dom/presentation/tests/xpcshell/xpcshell.ini": 0.8,
+ "dom/promise/tests/mochitest.ini": 0.55,
+ "dom/push/test/mochitest.ini": 0.63,
+ "dom/push/test/xpcshell/xpcshell.ini": 0.53,
+ "dom/reporting/tests/browser.ini": 0.68,
+ "dom/security/test/csp/mochitest.ini": 0.67,
+ "dom/security/test/general/browser.ini": 0.59,
+ "dom/security/test/general/mochitest.ini": 0.6,
+ "dom/security/test/https-only/browser.ini": 0.94,
+ "dom/security/test/mixedcontentblocker/browser.ini": 0.52,
+ "dom/security/test/unit/xpcshell.ini": 0.69,
+ "dom/serviceworkers/test/browser.ini": 0.86,
+ "dom/serviceworkers/test/mochitest.ini": 0.51,
+ "dom/system/tests/mochitest.ini": 0.56,
+ "dom/tests/browser/browser.ini": 0.89,
+ "dom/tests/mochitest/ajax/scriptaculous/mochitest.ini": 0.55,
+ "dom/tests/mochitest/beacon/mochitest.ini": 0.67,
+ "dom/tests/mochitest/bugs/mochitest.ini": 0.96,
+ "dom/tests/mochitest/chrome/chrome.ini": 0.58,
+ "dom/tests/mochitest/dom-level0/mochitest.ini": 0.66,
+ "dom/tests/mochitest/dom-level1-core/mochitest.ini": 0.56,
+ "dom/tests/mochitest/fetch/mochitest.ini": 0.81,
+ "dom/tests/mochitest/gamepad/mochitest.ini": 0.56,
+ "dom/tests/mochitest/general/mochitest.ini": 0.9,
+ "dom/tests/mochitest/geolocation/chrome.ini": 0.57,
+ "dom/tests/mochitest/pointerlock/mochitest.ini": 0.72,
+ "dom/tests/mochitest/sessionstorage/chrome.ini": 0.69,
+ "dom/tests/mochitest/webcomponents/mochitest.ini": 0.63,
+ "dom/tests/mochitest/whatwg/mochitest.ini": 0.7,
+ "dom/url/tests/browser.ini": 0.75,
+ "dom/webauthn/tests/mochitest.ini": 0.6,
+ "dom/webgpu/mochitest/mochitest.ini": 0.5,
+ "dom/websocket/tests/chrome.ini": 0.55,
+ "dom/websocket/tests/mochitest.ini": 0.65,
+ "dom/websocket/tests/websocket_hybi/mochitest.ini": 0.57,
+ "dom/workers/test/browser.ini": 0.51,
+ "dom/workers/test/mochitest.ini": 0.72,
+ "dom/worklet/tests/mochitest.ini": 0.53,
+ "dom/xhr/tests/mochitest.ini": 0.63,
+ "dom/xslt/tests/mochitest/mochitest.ini": 0.57,
+ "editor/libeditor/tests/chrome.ini": 0.57,
+ "editor/libeditor/tests/mochitest.ini": 0.76,
+ "editor/reftests/xul/reftest.list": 0.55,
+ "editor/spellchecker/tests/mochitest.ini": 0.62,
+ "extensions/permissions/test/unit/xpcshell.ini": 0.71,
+ "extensions/spellcheck/tests/chrome/chrome.ini": 0.57,
+ "extensions/spellcheck/tests/mochitest/mochitest.ini": 0.57,
+ "extensions/universalchardet/tests/chrome.ini": 0.57,
+ "gfx/layers/apz/test/mochitest/mochitest.ini": 0.65,
+ "gfx/tests/crashtests/crashtests.list": 0.65,
+ "image/test/mochitest/mochitest.ini": 0.89,
+ "image/test/unit/xpcshell.ini": 0.68,
+ "intl/uconv/tests/mochitest.ini": 0.51,
+ "js/xpconnect/tests/chrome/chrome.ini": 0.62,
+ "js/xpconnect/tests/unit/xpcshell.ini": 0.95,
+ "layout/base/tests/browser.ini": 0.54,
+ "layout/base/tests/mochitest.ini": 0.91,
+ "layout/forms/test/mochitest.ini": 0.81,
+ "layout/generic/test/mochitest.ini": 0.83,
+ "layout/inspector/tests/chrome/chrome.ini": 0.52,
+ "layout/inspector/tests/mochitest.ini": 0.63,
+ "layout/mathml/tests/mochitest.ini": 0.51,
+ "layout/reftests/async-scrolling/reftest.list": 0.62,
+ "layout/reftests/border-image/reftest.list": 0.71,
+ "layout/reftests/box-shadow/reftest.list": 0.59,
+ "layout/reftests/bugs/reftest.list": 0.97,
+ "layout/reftests/canvas/reftest.list": 0.69,
+ "layout/reftests/counters/reftest.list": 0.62,
+ "layout/reftests/css-animations/reftest.list": 0.59,
+ "layout/reftests/css-calc/reftest.list": 0.57,
+ "layout/reftests/css-default/submit-button/reftest.list": 0.67,
+ "layout/reftests/css-disabled/output/reftest.list": 0.55,
+ "layout/reftests/css-enabled/option/reftest.list": 0.55,
+ "layout/reftests/css-gradients/reftest.list": 0.54,
+ "layout/reftests/css-grid/reftest.list": 0.68,
+ "layout/reftests/css-invalid/fieldset/reftest.list": 0.67,
+ "layout/reftests/css-invalid/output/reftest.list": 0.55,
+ "layout/reftests/css-mediaqueries/reftest.list": 0.54,
+ "layout/reftests/css-optional/reftest.list": 0.63,
+ "layout/reftests/css-required/reftest.list": 0.63,
+ "layout/reftests/css-scroll-snap/reftest.list": 0.57,
+ "layout/reftests/css-scrollbars/reftest.list": 0.57,
+ "layout/reftests/css-selectors/reftest.list": 0.57,
+ "layout/reftests/css-submit-invalid/button-submit/reftest.list": 0.67,
+ "layout/reftests/css-submit-invalid/input-image/reftest.list": 0.67,
+ "layout/reftests/css-submit-invalid/input-submit/reftest.list": 0.67,
+ "layout/reftests/css-ui-valid/output/reftest.list": 0.55,
+ "layout/reftests/css-variables/reftest.list": 0.57,
+ "layout/reftests/display-list/reftest.list": 0.62,
+ "layout/reftests/first-letter/reftest.list": 0.58,
+ "layout/reftests/flexbox/pagination/reftest.list": 0.57,
+ "layout/reftests/floats/reftest.list": 0.67,
+ "layout/reftests/font-matching/reftest.list": 0.52,
+ "layout/reftests/forms/input/datetime/reftest.list": 0.78,
+ "layout/reftests/forms/input/number/reftest.list": 0.5,
+ "layout/reftests/forms/output/reftest.list": 0.66,
+ "layout/reftests/forms/reftest.list": 0.86,
+ "layout/reftests/high-contrast/reftest.list": 0.76,
+ "layout/reftests/image-element/reftest.list": 0.59,
+ "layout/reftests/image-region/reftest.list": 0.57,
+ "layout/reftests/image/reftest.list": 0.65,
+ "layout/reftests/invalidation/reftest.list": 0.58,
+ "layout/reftests/marquee/reftest.list": 0.56,
+ "layout/reftests/mathml/reftest.list": 0.61,
+ "layout/reftests/meta-viewport/reftest.list": 0.62,
+ "layout/reftests/outline/reftest.list": 0.63,
+ "layout/reftests/pixel-rounding/reftest.list": 0.62,
+ "layout/reftests/position-dynamic-changes/vertical/reftest_border_abspos.list": 0.6,
+ "layout/reftests/position-dynamic-changes/vertical/reftest_margin_parent.list": 0.81,
+ "layout/reftests/position-sticky/reftest.list": 0.56,
+ "layout/reftests/printing/reftest.list": 0.63,
+ "layout/reftests/reftest-sanity/reftest.list": 0.76,
+ "layout/reftests/reftest-sanity/urlprefixtests.list": 0.65,
+ "layout/reftests/svg/as-image/reftest.list": 0.5,
+ "layout/reftests/svg/reftest.list": 0.83,
+ "layout/reftests/svg/text/reftest.list": 0.63,
+ "layout/reftests/table-anonymous-boxes/reftest.list": 0.67,
+ "layout/reftests/table-background/reftest.list": 0.68,
+ "layout/reftests/table-html/reftest.list": 0.57,
+ "layout/reftests/transform-3d/reftest.list": 0.54,
+ "layout/reftests/transform/reftest.list": 0.55,
+ "layout/reftests/usercss/reftest.list": 0.57,
+ "layout/reftests/web-animations/reftest.list": 0.63,
+ "layout/reftests/writing-mode/reftest.list": 0.55,
+ "layout/style/crashtests/crashtests.list": 0.62,
+ "layout/style/test/mochitest.ini": 0.87,
+ "layout/svg/tests/mochitest.ini": 0.62,
+ "layout/xul/test/browser.ini": 0.51,
+ "layout/xul/test/chrome.ini": 0.5,
+ "mobile/android/components/extensions/test/mochitest/mochitest.ini": 0.57,
+ "modules/libpref/test/unit/xpcshell.ini": 0.52,
+ "netwerk/test/browser/browser.ini": 0.71,
+ "netwerk/test/httpserver/test/xpcshell.ini": 0.72,
+ "netwerk/test/mochitests/mochitest.ini": 0.52,
+ "netwerk/test/unit/xpcshell.ini": 0.92,
+ "netwerk/test/unit_ipc/xpcshell.ini": 0.65,
+ "parser/htmlparser/tests/mochitest/browser.ini": 0.57,
+ "parser/htmlparser/tests/mochitest/mochitest.ini": 0.71,
+ "remote/test/browser/page/browser.ini": 0.59,
+ "remote/test/browser/runtime/browser.ini": 0.53,
+ "security/manager/ssl/tests/mochitest/browser/browser.ini": 0.72,
+ "security/manager/ssl/tests/unit/xpcshell-smartcards.ini": 0.51,
+ "security/manager/ssl/tests/unit/xpcshell.ini": 0.64,
+ "services/common/tests/unit/xpcshell.ini": 0.9,
+ "services/fxaccounts/tests/xpcshell/xpcshell.ini": 0.6,
+ "services/settings/test/unit/xpcshell.ini": 0.86,
+ "startupcache/test/browser/browser.ini": 0.58,
+ "testing/crashtest/sanity/crashtests.list": 0.69,
+ "testing/mochitest/chrome/chrome.ini": 0.57,
+ "testing/mochitest/tests/Harness_sanity/mochitest.ini": 0.77,
+ "testing/mochitest/tests/browser/browser.ini": 0.67,
+ "toolkit/components/aboutprocesses/tests/browser/browser.ini": 0.93,
+ "toolkit/components/antitracking/test/browser/browser.ini": 0.99,
+ "toolkit/components/antitracking/test/xpcshell/xpcshell.ini": 0.51,
+ "toolkit/components/crashmonitor/test/unit/xpcshell.ini": 0.72,
+ "toolkit/components/downloads/test/unit/xpcshell.ini": 0.92,
+ "toolkit/components/enterprisepolicies/tests/xpcshell/xpcshell.ini": 0.56,
+ "toolkit/components/extensions/test/browser/browser-serviceworker.ini": 0.73,
+ "toolkit/components/extensions/test/browser/browser.ini": 0.98,
+ "toolkit/components/extensions/test/mochitest/chrome.ini": 0.59,
+ "toolkit/components/extensions/test/mochitest/mochitest-remote.ini": 0.79,
+ "toolkit/components/extensions/test/mochitest/mochitest.ini": 0.52,
+ "toolkit/components/extensions/test/xpcshell/native_messaging.ini": 0.74,
+ "toolkit/components/extensions/test/xpcshell/xpcshell.ini": 0.79,
+ "toolkit/components/extensions/test/xpcshell/xpcshell-legacy-ep.ini": 0.77,
+ "toolkit/components/extensions/test/xpcshell/xpcshell-remote.ini": 0.68,
+ "toolkit/components/httpsonlyerror/tests/browser/browser.ini": 0.78,
+ "toolkit/components/messaging-system/schemas/SpecialMessageActionSchemas/test/browser/browser.ini": 0.92,
+ "toolkit/components/messaging-system/schemas/TriggerActionSchemas/test/browser/browser.ini": 0.77,
+ "toolkit/components/messaging-system/test/unit/xpcshell.ini": 0.51,
+ "toolkit/components/normandy/test/browser/browser.ini": 0.75,
+ "toolkit/components/normandy/test/unit/xpcshell.ini": 0.5,
+ "toolkit/components/osfile/tests/xpcshell/xpcshell.ini": 0.66,
+ "toolkit/components/passwordmgr/test/browser/browser.ini": 0.99,
+ "toolkit/components/passwordmgr/test/mochitest/mochitest.ini": 0.99,
+ "toolkit/components/passwordmgr/test/unit/xpcshell.ini": 0.99,
+ "toolkit/components/pictureinpicture/tests/browser.ini": 0.92,
+ "toolkit/components/places/tests/browser/browser.ini": 0.92,
+ "toolkit/components/places/tests/unifiedcomplete/xpcshell.ini": 0.85,
+ "toolkit/components/printing/tests/browser.ini": 0.9,
+ "toolkit/components/prompts/test/chrome.ini": 0.97,
+ "toolkit/components/prompts/test/mochitest.ini": 0.5,
+ "toolkit/components/remotebrowserutils/tests/browser/browser.ini": 0.83,
+ "toolkit/components/satchel/test/mochitest.ini": 0.78,
+ "toolkit/components/search/tests/xpcshell/xpcshell.ini": 0.52,
+ "toolkit/components/telemetry/tests/browser/browser.ini": 0.65,
+ "toolkit/components/telemetry/tests/unit/xpcshell.ini": 0.6,
+ "toolkit/components/thumbnails/test/browser.ini": 0.78,
+ "toolkit/components/url-classifier/tests/mochitest/mochitest.ini": 0.74,
+ "toolkit/components/url-classifier/tests/unit/xpcshell.ini": 0.76,
+ "toolkit/components/viewsource/test/browser/browser.ini": 0.55,
+ "toolkit/components/windowwatcher/test/browser.ini": 0.6,
+ "toolkit/content/tests/browser/browser.ini": 0.93,
+ "toolkit/content/tests/chrome/chrome.ini": 0.96,
+ "toolkit/content/tests/mochitest/mochitest.ini": 0.51,
+ "toolkit/content/tests/reftests/reftest.list": 0.5,
+ "toolkit/content/tests/widgets/chrome.ini": 0.96,
+ "toolkit/content/tests/widgets/mochitest.ini": 0.98,
+ "toolkit/crashreporter/test/unit/xpcshell.ini": 0.5,
+ "toolkit/modules/tests/xpcshell/xpcshell.ini": 0.66,
+ "toolkit/mozapps/extensions/test/browser/browser.ini": 0.95,
+ "toolkit/mozapps/extensions/test/xpcshell/rs-blocklist/xpcshell.ini": 0.52,
+ "toolkit/mozapps/extensions/test/xpcshell/xpcshell-unpack.ini": 0.73,
+ "toolkit/mozapps/extensions/test/xpcshell/xpcshell.ini": 0.89,
+ "toolkit/mozapps/extensions/test/xpinstall/browser.ini": 0.71,
+ "toolkit/mozapps/update/tests/browser/browser.ini": 0.59,
+ "toolkit/mozapps/update/tests/browser/browser.legacy.ini": 0.64,
+ "toolkit/xre/test/xpcshell.ini": 0.55,
+ "tools/profiler/tests/browser/browser.ini": 0.74,
+ "tools/profiler/tests/xpcshell/xpcshell.ini": 0.94,
+ "uriloader/exthandler/tests/mochitest/browser.ini": 0.8,
+ "uriloader/exthandler/tests/mochitest/mochitest.ini": 0.65,
+ "uriloader/exthandler/tests/unit/xpcshell.ini": 0.91,
+ "widget/reftests/reftest.list": 0.56,
+ "widget/tests/chrome.ini": 0.93,
+ "widget/tests/mochitest.ini": 0.82,
+ "xpcom/tests/unit/xpcshell.ini": 0.63
+ },
+ "known_tasks": [
+ "test-linux1804-64/debug-mochitest-devtools-chrome-spi-nw-11",
+ "test-windows7-32/opt-gtest-1proc",
+ "toolchain-win64-dump-syms",
+ "test-linux1804-64/opt-web-platform-tests-2",
+ "test-linux1804-64-asan-qr/opt-reftest-3",
+ "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-11",
+ "test-macosx1014-64/debug-firefox-ui-functional-local",
+ "test-linux1804-64-qr/debug-web-platform-tests-4",
+ "test-macosx1014-64-ccov/opt-mochitest-webgl2-core-gli",
+ "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-reftest-1",
+ "test-windows11-64-2009-qr/debug-web-platform-tests-reftest-5",
+ "test-linux1804-64-asan/opt-mochitest-remote",
+ "test-linux1804-64-asan/opt-jsreftest-2",
+ "toolchain-linux64-nasm",
+ "test-macosx1014-64/debug-mochitest-webgl1-core-gli",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-ebay-kleinanzeigen",
+ "source-test-mozlint-mingw-cap",
+ "source-test-mozlint-codespell",
+ "test-linux1804-64-tsan/opt-xpcshell-3",
+ "test-windows11-64-2009/debug-reftest-3",
+ "valgrind-linux64-valgrind/opt",
+ "test-linux1804-64/debug-web-platform-tests-9",
+ "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-4",
+ "test-linux1804-64-qr/debug-xpcshell-3",
+ "test-windows7-32/opt-reftest-2",
+ "test-linux64-shippable-qr/opt-talos-g1-swr",
+ "test-windows11-64-2009-asan/opt-mochitest-devtools-chrome-3",
+ "test-linux1804-64/debug-mochitest-browser-chrome-3",
+ "test-macosx1014-64/opt-mochitest-browser-chrome-3",
+ "test-linux1804-64-asan/opt-reftest-7",
+ "test-linux1804-64/opt-mochitest-devtools-chrome-3",
+ "test-linux64-shippable/opt-raptor-wasm-misc-ion-firefox",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-office",
+ "test-windows11-64-2009/opt-web-platform-tests-reftest-2",
+ "source-test-python-mozterm-windows11-64-2009/opt-py3",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-facebook-redesign",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-twitch",
+ "test-android-em-7.0-x86_64-qr/opt-geckoview-reftest-1",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-twitter",
+ "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-7",
+ "test-windows11-64-2009-qr/opt-web-platform-tests-5",
+ "source-test-python-mozbuild-macosx1014-64/opt-py3",
+ "test-linux1804-64-asan/opt-mochitest-webgl2-ext-1",
+ "test-macosx1014-64-qr/debug-web-platform-tests-reftest-1",
+ "l10n-linux64-shippable/opt",
+ "test-windows11-64-2009/opt-mochitest-webgl1-ext",
+ "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-1",
+ "toolchain-win64-clang-tidy",
+ "test-windows11-64-2009/debug-web-platform-tests-1",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-google-search-restaurants",
+ "test-macosx1014-64-shippable/opt-raptor-webaudio-firefox",
+ "test-linux1804-64/debug-mochitest-webgpu-spi-nw",
+ "test-linux1804-64/debug-mochitest-webgl2-ext-2",
+ "test-linux64-shippable/opt-talos-other",
+ "build-android-aarch64/opt",
+ "test-linux1804-64-qr/opt-jsreftest-2",
+ "test-windows7-32/debug-reftest-3",
+ "test-windows7-32-shippable/opt-awsy-base",
+ "test-windows11-64-2009/opt-mochitest-plain-5",
+ "test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-1",
+ "test-linux1804-64-qr/debug-reftest-swr-6",
+ "test-windows11-64-2009/opt-mochitest-browser-chrome-4",
+ "test-linux1804-64/debug-mochitest-plain-1",
+ "test-linux64-shippable/opt-talos-perf-reftest-singletons",
+ "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-16",
+ "test-windows11-64-2009/debug-telemetry-tests-client",
+ "test-windows7-32/debug-mochitest-browser-chrome-4",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-youtube",
+ "test-windows11-64-2009-shippable-qr/opt-talos-tabswitch",
+ "test-windows11-64-2009-qr/debug-web-platform-tests-reftest-3",
+ "test-linux1804-64-asan/opt-mochitest-chrome-gpu",
+ "test-linux1804-64-tsan/opt-mochitest-plain-11",
+ "test-android-em-7.0-x86_64/opt-geckoview-xpcshell-3",
+ "test-windows11-64-2009-qr/opt-reftest-1",
+ "test-linux1804-64/debug-mochitest-devtools-chrome-8",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-yahoo-mail",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-instagram",
+ "test-windows7-32/debug-web-platform-tests-6",
+ "test-linux1804-64/opt-jsreftest-3",
+ "test-macosx1014-64/opt-web-platform-tests-wdspec-3",
+ "test-macosx1014-64/debug-web-platform-tests-6",
+ "test-linux64-shippable/opt-raptor-tp6-live-firefox-cold-cnn-ampstories",
+ "test-linux1804-64/opt-xpcshell-1",
+ "build-android-arm-gcp/debug",
+ "test-linux1804-64/debug-mochitest-devtools-chrome-spi-nw-12",
+ "test-macosx1014-64/opt-browser-screenshots",
+ "test-windows11-64-2009/debug-xpcshell-2",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-yahoo-mail",
+ "test-android-em-7.0-x86_64-qr/debug-geckoview-mochitest-plain-3",
+ "test-windows11-64-2009/debug-mochitest-plain-5",
+ "test-windows11-64-2009-qr/debug-mochitest-webgpu",
+ "test-linux1804-64/debug-reftest-7",
+ "test-windows11-64-2009-shippable-qr/opt-talos-dromaeojs",
+ "test-macosx1014-64/opt-reftest-8",
+ "test-linux1804-64-shippable-qr/opt-web-platform-tests-6",
+ "test-macosx1014-64-qr/debug-reftest-4",
+ "test-linux1804-64-qr/debug-reftest-8",
+ "test-windows11-64-2009/opt-mochitest-plain-2",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-twitter",
+ "test-linux1804-64-qr/debug-mochitest-webgl2-ext-2",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-reddit",
+ "test-macosx1014-64/debug-test-verify",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-google",
+ "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-15",
+ "test-macosx1014-64/debug-mochitest-webgl2-ext-1",
+ "test-linux1804-64-qr/opt-mochitest-webgl2-ext-1",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-yandex",
+ "test-linux64-shippable/opt-raptor-motionmark-animometer-firefox",
+ "test-macosx1014-64/debug-mochitest-browser-chrome-1",
+ "test-windows7-32/opt-mochitest-plain-3",
+ "test-linux1804-64-asan/opt-web-platform-tests-13",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-outlook",
+ "test-linux1804-64-qr/opt-crashtest",
+ "test-windows11-64-2009/debug-mochitest-webgpu",
+ "test-windows11-64-2009-qr/opt-web-platform-tests-4",
+ "test-macosx1014-64/opt-mochitest-media-gli-2",
+ "test-macosx1014-64/debug-jittest-1proc-1",
+ "test-linux1804-64-tsan/opt-mochitest-plain-1",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-paypal",
+ "test-macosx1014-64/debug-web-platform-tests-18",
+ "test-macosx1014-64/debug-mochitest-webgl1-core",
+ "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-5",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-espn",
+ "test-linux1804-64-qr/debug-mochitest-webgpu",
+ "test-windows7-32/opt-web-platform-tests-reftest-3",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-yandex",
+ "test-windows7-32/debug-jsreftest-1",
+ "test-windows11-64-2009/opt-firefox-ui-functional-local",
+ "test-windows11-64-2009/opt-mochitest-webgl2-core",
+ "test-windows11-64-2009/debug-mochitest-chrome-1proc-1",
+ "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-3",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-reddit",
+ "test-linux1804-64-qr/opt-reftest-1",
+ "toolchain-macosx64-geckodriver",
+ "test-linux1804-64-asan/opt-mochitest-media-spi-3",
+ "test-macosx1014-64/opt-jsreftest-2",
+ "test-windows7-32/opt-mochitest-webgpu",
+ "test-android-em-7.0-x86_64/debug-geckoview-mochitest-plain-4",
+ "build-android-aarch64-gcp/opt",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-amazon",
+ "test-linux1804-64/debug-mochitest-browser-chrome-4",
+ "test-linux1804-64-qr/opt-mochitest-media-2",
+ "test-macosx1014-64/opt-marionette",
+ "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-8",
+ "test-macosx1014-64/debug-web-platform-tests-17",
+ "test-linux1804-64-qr/opt-reftest-5",
+ "test-windows7-32/debug-web-platform-tests-3",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-docs",
+ "test-linux1804-64-shippable-qr/opt-web-platform-tests-10",
+ "test-linux1804-64/debug-mochitest-browser-chrome-15",
+ "test-windows7-32-shippable/opt-talos-g4",
+ "test-windows11-64-2009/opt-mochitest-webgpu",
+ "test-windows11-64-2009/opt-web-platform-tests-8",
+ "test-macosx1014-64/opt-mochitest-plain-2",
+ "test-macosx1014-64/debug-mochitest-media-spi-2",
+ "test-linux1804-64-qr/debug-web-platform-tests-7",
+ "test-linux1804-64-tsan/opt-mochitest-plain-8",
+ "test-linux1804-64-asan/opt-mochitest-browser-chrome-14",
+ "test-windows7-32-shippable/opt-talos-perf-reftest-singletons",
+ "build-signing-win64/opt",
+ "test-windows11-64-2009-qr/debug-mochitest-browser-chrome-6",
+ "test-linux1804-64-qr/debug-web-platform-tests-reftest-4",
+ "toolchain-win32-minidump-stackwalk",
+ "test-windows11-64-2009-asan/opt-mochitest-browser-chrome-6",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-paypal",
+ "source-test-python-raptor-windows11-64-2009/opt-py2",
+ "test-macosx1014-64-shippable/opt-raptor-speedometer-firefox",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-google-mail",
+ "test-linux1804-64/opt-mochitest-media-spi-2",
+ "test-linux1804-64-asan/opt-web-platform-tests-22",
+ "build-macosx64-fuzzing/debug",
+ "test-linux1804-64/debug-web-platform-tests-wdspec-1",
+ "test-macosx1014-64/debug-web-platform-tests-wdspec-2",
+ "test-windows11-64-2009-shippable/opt-awsy-base",
+ "test-windows7-32/opt-mochitest-chrome-1proc-2",
+ "source-test-node-newtab-unit-tests",
+ "test-linux1804-64/debug-mochitest-webgl2-ext-4",
+ "source-test-cram-tryselect",
+ "test-macosx1014-64-qr/opt-reftest-6",
+ "test-windows11-64-2009-asan/opt-mochitest-devtools-chrome-2",
+ "test-windows11-64-2009-shippable/opt-talos-perf-reftest-singletons",
+ "test-macosx1014-64/opt-mochitest-browser-chrome-7",
+ "test-windows11-64-2009/debug-mochitest-media",
+ "test-linux1804-64/debug-mochitest-webgl1-ext",
+ "test-linux1804-64-qr/opt-mochitest-plain-1",
+ "test-linux1804-64-qr/debug-web-platform-tests-reftest-1",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-google-maps",
+ "test-windows11-64-2009/debug-web-platform-tests-11",
+ "toolchain-wasi-sysroot-9",
+ "test-linux1804-64-qr/debug-mochitest-plain-13",
+ "toolchain-linux64-sccache",
+ "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-16",
+ "test-windows11-64-2009-asan/opt-reftest-1",
+ "source-test-mozlint-py-pylint",
+ "test-windows7-32/opt-mochitest-browser-chrome-5",
+ "test-windows11-64-2009/debug-mochitest-chrome-1proc-2",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-facebook",
+ "test-macosx1014-64/debug-reftest-3",
+ "test-windows7-32/debug-telemetry-tests-client",
+ "test-linux1804-64-qr/opt-web-platform-tests-3",
+ "test-android-em-7.0-x86_64-qr/opt-geckoview-mochitest-plain-1",
+ "test-macosx1014-64-shippable/opt-raptor-wasm-godot-firefox",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-jianshu",
+ "test-macosx1014-64/opt-mochitest-webgl2-ext-gli-2",
+ "toolchain-wasi-sysroot-11",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-facebook-redesign",
+ "test-windows11-64-2009-qr/opt-mochitest-plain-gpu",
+ "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftest-1",
+ "test-windows11-64-2009/opt-mochitest-plain-gpu",
+ "test-linux1804-64/debug-web-platform-tests-3",
+ "test-windows11-64-2009-shippable/opt-talos-chrome",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-bing",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-apple",
+ "test-linux1804-64/opt-telemetry-tests-client",
+ "test-windows11-64-2009/debug-web-platform-tests-7",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-facebook",
+ "test-windows11-64-2009-asan/opt-mochitest-webgl1-ext",
+ "test-linux1804-64-qr/debug-reftest-6",
+ "test-linux1804-64-asan/opt-web-platform-tests-21",
+ "test-linux1804-64-asan-qr/opt-reftest-8",
+ "test-linux1804-64-shippable/opt-awsy",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-twitter",
+ "test-linux1804-64-asan-qr/opt-reftest-5",
+ "test-linux1804-64/debug-xpcshell-spi-nw-1",
+ "build-win64-asan/debug",
+ "test-windows7-32/debug-mochitest-media-2",
+ "test-windows7-32/opt-reftest-1",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-wikipedia",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-instagram",
+ "test-linux1804-64-qr/opt-web-platform-tests-reftest-5",
+ "test-linux1804-64-shippable-qr/opt-web-platform-tests-3",
+ "test-linux1804-64/opt-web-platform-tests-10",
+ "test-linux1804-64-qr/opt-web-platform-tests-2",
+ "test-linux1804-64/opt-test-verify",
+ "test-macosx1014-64/opt-firefox-ui-functional-local",
+ "test-windows7-32-shippable/opt-talos-bcv",
+ "test-macosx1014-64/debug-mochitest-devtools-chrome-1",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-google-mail",
+ "test-macosx1014-64-shippable/opt-awsy-base",
+ "test-linux1804-64-asan/opt-mochitest-devtools-chrome-2",
+ "build-win64-aarch64/debug",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-imdb",
+ "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-10",
+ "test-windows7-32/debug-mochitest-chrome-gpu",
+ "toolchain-linux64-dump-syms",
+ "test-linux64-shippable-qr/opt-talos-tp5o",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-stylebench-firefox",
+ "source-test-shadow-scheduler-relevant_tests",
+ "test-windows7-32/debug-mochitest-plain-5",
+ "test-linux1804-64-asan/opt-reftest-3",
+ "test-linux64-shippable/opt-talos-tp5o",
+ "test-macosx1014-64/debug-mochitest-plain-3",
+ "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-4",
+ "test-windows11-64-2009/debug-mochitest-plain-4",
+ "test-linux1804-64/debug-mochitest-browser-chrome-6",
+ "test-macosx1014-64/debug-mochitest-media-spi-1",
+ "test-windows11-64-2009/debug-web-platform-tests-14",
+ "source-test-shadow-scheduler-bugbug_tasks_medium",
+ "build-linux64-asan/opt",
+ "test-linux1804-64/debug-web-platform-tests-16",
+ "test-macosx1014-64/debug-mochitest-browser-chrome-12",
+ "test-windows11-64-2009-shippable/opt-talos-webgl",
+ "test-macosx1014-64/debug-web-platform-tests-14",
+ "test-linux1804-64-asan/opt-web-platform-tests-reftest-6",
+ "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-7",
+ "spidermonkey-sm-arm64-sim-linux64/debug",
+ "test-windows7-32/debug-mochitest-plain-gpu",
+ "test-linux1804-64/debug-mochitest-devtools-chrome-4",
+ "test-android-em-7.0-x86_64/opt-geckoview-junit-multi",
+ "test-windows11-64-2009-asan/opt-mochitest-webgl2-core",
+ "test-macosx1014-64/opt-mochitest-media-spi-2",
+ "test-windows11-64-2009/debug-mochitest-devtools-chrome-5",
+ "source-test-python-mozbase-macosx1014-64/opt-py2",
+ "source-test-python-mozbuild-windows11-64-2009/opt-py3",
+ "test-windows11-64-2009/debug-jsreftest-3",
+ "test-macosx1014-64/opt-web-platform-tests-1",
+ "test-linux1804-64-qr/debug-mochitest-plain-1",
+ "test-windows11-64-2009-qr/debug-web-platform-tests-print-reftest",
+ "build-linux64-asan-fuzzing/opt",
+ "test-linux1804-64/debug-web-platform-tests-7",
+ "test-macosx1014-64/opt-web-platform-tests-wdspec-2",
+ "source-test-jsshell-bench-octane-sm",
+ "test-macosx1014-64/opt-web-platform-tests-reftest-3",
+ "test-linux1804-64-qr/opt-xpcshell-2",
+ "test-linux1804-64-qr/debug-xpcshell-2",
+ "test-linux1804-64/debug-reftest-6",
+ "test-windows11-64-2009-qr/debug-web-platform-tests-reftest-4",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-docs",
+ "test-linux1804-64-qr/debug-web-platform-tests-wdspec-2",
+ "test-linux1804-64-asan/opt-mochitest-devtools-chrome-5",
+ "test-windows11-64-2009/opt-mochitest-a11y-1proc",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-reddit",
+ "test-macosx1014-64/debug-mochitest-media-1",
+ "test-windows7-32/debug-web-platform-tests-wdspec-1",
+ "test-linux1804-64/debug-reftest-no-accel-3",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-docs",
+ "test-macosx1014-64/debug-mochitest-media-gli-2",
+ "test-linux64-shippable/opt-raptor-assorted-dom-firefox",
+ "test-windows11-64-2009-qr/debug-mochitest-browser-chrome-1",
+ "test-windows11-64-2009-qr/opt-web-platform-tests-wdspec-3",
+ "test-android-em-7.0-x86_64/debug-geckoview-xpcshell-3",
+ "test-linux1804-64/opt-web-platform-tests-reftest-1",
+ "test-linux1804-64/debug-mochitest-chrome-1proc-1",
+ "test-linux1804-64-qr/opt-reftest-4",
+ "test-linux64-shippable-qr/opt-talos-damp",
+ "test-macosx1014-64/opt-mochitest-webgl1-core",
+ "test-windows11-64-2009/debug-web-platform-tests-reftest-4",
+ "test-linux1804-64/debug-reftest-4",
+ "test-macosx1014-64-shippable/opt-talos-damp",
+ "test-windows7-32/opt-crashtest",
+ "test-linux64-shippable/opt-raptor-ares6-firefox",
+ "test-macosx1014-64/opt-xpcshell-1",
+ "build-win64-plain/debug",
+ "test-macosx1014-64/debug-web-platform-tests-5",
+ "test-macosx1014-64-shippable/opt-talos-perf-reftest-singletons",
+ "test-linux1804-64-qr/debug-web-platform-tests-8",
+ "build-win64-aarch64-eme/opt",
+ "build-macosx64/opt",
+ "test-linux1804-64/debug-web-platform-tests-4",
+ "test-windows11-64-2009-shippable/opt-raptor-stylebench-firefox",
+ "test-linux1804-64-qr/debug-mochitest-plain-2",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-google-mail",
+ "test-macosx1014-64/debug-mochitest-browser-chrome-5",
+ "test-windows11-64-2009-shippable-qr/opt-talos-realworld-webextensions",
+ "test-windows7-32/debug-reftest-no-accel-2",
+ "source-test-python-taskgraph-tests-py3",
+ "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftest-3",
+ "test-windows11-64-2009-qr/debug-web-platform-tests-reftest-1",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-ebay",
+ "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftest-2",
+ "test-windows11-64-2009/opt-mochitest-plain-1",
+ "test-windows11-64-2009/debug-cppunit-1proc",
+ "l10n-win64-shippable/opt",
+ "test-windows11-64-2009/opt-mochitest-media",
+ "source-test-python-telemetry-python-windows11-64-2009/opt-py2",
+ "test-macosx1014-64/debug-mochitest-browser-chrome-2",
+ "source-test-wpt-manifest-upload",
+ "test-windows7-32/opt-mochitest-browser-chrome-6",
+ "test-linux1804-64-asan/opt-mochitest-webgl2-ext-2",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-netflix",
+ "test-windows11-64-2009-qr/debug-crashtest",
+ "source-test-python-raptor-windows11-64-2009/opt-py3",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-imgur",
+ "test-windows11-64-2009/debug-web-platform-tests-reftest-5",
+ "test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-gli-2",
+ "test-linux1804-64-qr/debug-web-platform-tests-reftest-1",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-yandex",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-linkedin",
+ "test-linux64-shippable/opt-talos-g1",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-yahoo-mail",
+ "test-linux1804-64/opt-web-platform-tests-print-reftest",
+ "source-test-python-mozrelease-py3",
+ "test-macosx1014-64/debug-mochitest-chrome-gpu",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-yahoo-mail",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-microsoft",
+ "test-linux1804-64/debug-mochitest-chrome-1proc-3",
+ "test-linux1804-64/debug-gtest-1proc",
+ "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-3",
+ "test-macosx1014-64/debug-xpcshell-1",
+ "test-macosx1014-64/opt-reftest-5",
+ "test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-gli-4",
+ "test-linux1804-64-tsan/opt-mochitest-plain-9",
+ "test-linux1804-64/debug-reftest-no-accel-5",
+ "source-test-shadow-scheduler-bugbug_debug_disperse",
+ "build-android-x86-fuzzing/debug",
+ "test-linux1804-64/debug-crashtest",
+ "build-linux64-tsan-fuzzing/opt",
+ "toolchain-macosx64-cbindgen",
+ "test-linux1804-64-qr/opt-mochitest-plain-5",
+ "test-linux1804-64/opt-mochitest-media-1",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-slides",
+ "test-linux1804-64-qr/debug-mochitest-plain-10",
+ "test-macosx1014-64-shippable/opt-talos-webgl-profiling-gli",
+ "test-windows7-32/opt-web-platform-tests-5",
+ "build-win64-rusttests/debug",
+ "test-windows11-64-2009/debug-mochitest-chrome-1proc-3",
+ "test-macosx1014-64/opt-mochitest-browser-chrome-1",
+ "test-windows11-64-2009/debug-mochitest-devtools-chrome-4",
+ "test-linux1804-64-qr/debug-web-platform-tests-reftest-4",
+ "test-linux1804-64-asan/opt-mochitest-plain-9",
+ "test-linux1804-64/debug-web-platform-tests-wdspec-2",
+ "test-macosx1014-64/opt-web-platform-tests-10",
+ "test-macosx1014-64/debug-mochitest-browser-chrome-3",
+ "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-6",
+ "test-macosx1014-64/opt-mochitest-devtools-chrome-3",
+ "test-windows11-64-2009-qr/debug-mochitest-browser-chrome-7",
+ "test-macosx1014-64/opt-jittest-1proc",
+ "test-linux1804-64/opt-web-platform-tests-1",
+ "test-linux1804-64/debug-web-platform-tests-reftest-3",
+ "test-linux1804-64/opt-mochitest-a11y-1proc",
+ "test-windows11-64-2009-asan/opt-cppunit-1proc",
+ "test-windows7-32/opt-mochitest-chrome-1proc-1",
+ "test-linux1804-64-qr/opt-xpcshell-1",
+ "test-macosx1014-64-qr/opt-web-platform-tests-reftest-4",
+ "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-2",
+ "test-linux1804-64/debug-reftest-no-accel-8",
+ "test-linux1804-64-qr/opt-web-platform-tests-10",
+ "test-windows7-32/opt-reftest-no-accel-1",
+ "source-test-python-condprof-macosx1014-64/opt-py2",
+ "test-linux1804-64-tsan/opt-mochitest-plain-16",
+ "test-macosx1014-64/opt-mochitest-browser-chrome-4",
+ "test-windows11-64-2009-asan/opt-mochitest-browser-chrome-5",
+ "test-linux1804-64-asan/opt-mochitest-devtools-chrome-8",
+ "source-test-python-marionette-harness-linux1804-64/opt-py2",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-paypal",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-sheets",
+ "toolchain-linux64-geckodriver",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-fandom",
+ "test-linux1804-64-qr/debug-mochitest-plain-3",
+ "test-linux1804-64-asan/opt-mochitest-media-2",
+ "test-linux1804-64/opt-mochitest-browser-chrome-5",
+ "test-macosx1014-64/opt-web-platform-tests-wdspec-headless-1",
+ "test-linux1804-64-qr/debug-web-platform-tests-reftest-5",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-jianshu",
+ "build-android-x86_64-gcp/debug",
+ "test-windows7-32/opt-xpcshell-1",
+ "source-test-python-talos-py2",
+ "test-windows11-64-2009/debug-mochitest-browser-chrome-7",
+ "test-linux1804-64/opt-web-platform-tests-9",
+ "test-windows11-64-2009-asan/opt-marionette",
+ "build-linux64/debug",
+ "test-android-em-7.0-x86_64/debug-geckoview-junit",
+ "test-android-em-7.0-x86_64/opt-geckoview-reftest-1",
+ "test-linux64-shippable-qr/opt-talos-other-swr",
+ "test-macosx1014-64/opt-web-platform-tests-3",
+ "test-macosx1014-64/opt-mochitest-browser-chrome-5",
+ "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-wdspec-1",
+ "test-linux1804-64/opt-mochitest-browser-chrome-7",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-live-geckoview-cold-cnn-ampstories",
+ "test-windows11-64-2009/debug-marionette",
+ "test-windows7-32-shippable/opt-awsy-tp6",
+ "build-win64-aarch64/opt",
+ "test-linux1804-64/debug-mochitest-media-2",
+ "test-macosx1014-64/debug-jsreftest-2",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-netflix",
+ "test-windows11-64-2009/debug-web-platform-tests-8",
+ "test-linux1804-64-asan/opt-xpcshell-2",
+ "test-linux1804-64/debug-mochitest-plain-12",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-youtube",
+ "build-signing-win64-aarch64-shippable/opt",
+ "test-linux1804-64-qr/debug-reftest-swr-1",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-yahoo-news",
+ "source-test-python-taskgraph-tests-py2",
+ "test-windows11-64-2009-qr/opt-web-platform-tests-wdspec-2",
+ "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-11",
+ "source-test-python-mozbuild-linux1804-64/opt-py3",
+ "test-windows11-64-2009/debug-web-platform-tests-reftest-3",
+ "test-windows11-64-2009-qr/debug-mochitest-browser-chrome-3",
+ "build-linux64-tsan/opt",
+ "test-linux1804-64-qr/debug-web-platform-tests-6",
+ "test-linux1804-64-asan/opt-crashtest",
+ "test-linux1804-64-tsan/opt-mochitest-plain-14",
+ "test-linux1804-64-shippable-qr/opt-awsy-tp6",
+ "test-linux1804-64-asan/opt-mochitest-browser-chrome-11",
+ "test-linux1804-64-tsan/opt-mochitest-plain-5",
+ "test-macosx1014-64-shippable/opt-raptor-ares6-firefox",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-sheets",
+ "test-linux1804-64-shippable-qr/opt-web-platform-tests-crashtest",
+ "test-linux1804-64/debug-mochitest-devtools-chrome-2",
+ "test-windows11-64-2009-shippable-qr/opt-talos-g4",
+ "source-test-mozlint-android-lints",
+ "test-macosx1014-64-shippable/opt-talos-webgl-gli",
+ "test-macosx1014-64/debug-firefox-ui-functional-remote",
+ "test-windows11-64-2009-asan/opt-mochitest-plain-4",
+ "test-windows7-32/opt-mochitest-chrome-gpu",
+ "test-windows7-32/opt-web-platform-tests-7",
+ "test-linux1804-64-asan/opt-mochitest-browser-chrome-2",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-ebay",
+ "test-macosx1014-64/opt-mochitest-media-spi-1",
+ "test-linux1804-64-asan/opt-web-platform-tests-14",
+ "test-windows11-64-2009-shippable/opt-talos-dromaeojs",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-wikipedia",
+ "build-linux64-gcp/debug",
+ "test-windows11-64-2009-shippable/opt-talos-tabswitch",
+ "test-macosx1014-64/debug-mochitest-a11y-1proc",
+ "test-windows7-32/opt-web-platform-tests-9",
+ "test-macosx1014-64/opt-xpcshell-2",
+ "test-linux1804-64-qr/debug-jsreftest-1",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-google",
+ "test-windows7-32/opt-reftest-no-accel-4",
+ "test-macosx1014-64/debug-mochitest-media-2",
+ "test-linux1804-64/opt-mochitest-media-spi-3",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-imgur",
+ "test-linux1804-64-asan/opt-web-platform-tests-19",
+ "test-windows7-32/debug-xpcshell-2",
+ "test-linux1804-64/debug-test-verify",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-sunspider-firefox",
+ "build-signing-linux64/opt",
+ "test-linux1804-64-asan/opt-mochitest-plain-7",
+ "test-linux1804-64/opt-reftest-3",
+ "test-linux1804-64-shippable/opt-awsy-base",
+ "test-linux1804-64-shippable-qr/opt-awsy",
+ "build-win64-asan/opt",
+ "test-windows7-32/opt-web-platform-tests-2",
+ "test-android-em-7.0-x86_64/opt-geckoview-mochitest-plain-gpu",
+ "test-linux1804-64-qr/debug-xpcshell-4",
+ "test-android-em-7.0-x86_64-qr/opt-geckoview-mochitest-media-spi",
+ "test-windows11-64-2009-asan/opt-mochitest-browser-chrome-1",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-wikipedia",
+ "test-linux1804-64-qr/debug-mochitest-chrome-1proc-2",
+ "test-linux1804-64-asan/opt-reftest-no-accel-6",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-web-de",
+ "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftest-5",
+ "webrender-android-emulator-debug",
+ "test-linux1804-64/opt-mochitest-remote",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-imdb",
+ "test-linux1804-64/debug-mochitest-browser-chrome-9",
+ "test-linux1804-64/opt-mochitest-media-2",
+ "test-linux1804-64/debug-reftest-no-accel-2",
+ "test-windows7-32-shippable/opt-raptor-motionmark-animometer-firefox",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-stackoverflow",
+ "test-macosx1014-64-shippable/opt-mochitest-webgl1-core-gli",
+ "test-macosx1014-64/debug-mochitest-webgl2-ext-2",
+ "test-linux1804-64/opt-web-platform-tests-reftest-2",
+ "repackage-macosx64/opt",
+ "test-linux1804-64-qr/debug-mochitest-media-spi-3",
+ "test-windows11-64-2009/debug-mochitest-media-spi",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-ebay",
+ "test-windows7-32/debug-test-verify",
+ "test-windows11-64-2009-qr/debug-mochitest-webgl2-core",
+ "test-windows11-64-2009/debug-web-platform-tests-9",
+ "test-macosx1014-64/opt-web-platform-tests-crashtest",
+ "test-windows11-64-2009-asan/opt-reftest-3",
+ "test-windows7-32-shippable/opt-talos-perf-reftest",
+ "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-reftest-3",
+ "test-linux64-shippable/opt-talos-webgl",
+ "test-linux1804-64-asan/opt-mochitest-media-1",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-facebook-redesign",
+ "test-linux1804-64-qr/debug-mochitest-plain-1",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-stackoverflow",
+ "test-windows11-64-2009-qr/opt-web-platform-tests-crashtest",
+ "test-linux1804-64-asan/opt-reftest-no-accel-5",
+ "test-linux64-shippable-qr/opt-raptor-ares6-firefox",
+ "test-linux1804-64-asan/opt-web-platform-tests-reftest-5",
+ "test-linux1804-64/opt-xpcshell-3",
+ "spidermonkey-sm-arm-sim-linux32/debug",
+ "source-test-node-eslint-plugin-mozilla",
+ "test-windows11-64-2009/opt-firefox-ui-functional-remote",
+ "build-win64-aarch64-shippable/opt",
+ "source-test-shadow-scheduler-bugbug_tasks_high",
+ "test-linux1804-64-qr/debug-mochitest-webgl1-ext",
+ "test-windows11-64-2009/debug-mochitest-plain-gpu",
+ "test-linux1804-64/opt-web-platform-tests-7",
+ "test-linux1804-64-qr/debug-mochitest-plain-12",
+ "test-windows7-32/opt-jsreftest-2",
+ "source-test-python-mozbase-linux1804-64/opt-py3",
+ "test-linux1804-64-qr/debug-gtest-1proc",
+ "spidermonkey-sm-fuzzing-linux64/opt",
+ "test-android-em-7.0-x86_64/opt-geckoview-xpcshell-1",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-allrecipes",
+ "test-linux1804-64/debug-mochitest-webgl2-ext-1",
+ "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-12",
+ "test-linux1804-64-qr/debug-web-platform-tests-crashtest",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-linkedin",
+ "hazard-linux64-haz/debug",
+ "test-linux1804-64-qr/opt-mochitest-webgl1-ext",
+ "test-linux64-shippable/opt-raptor-motionmark-htmlsuite-firefox",
+ "test-windows7-32/opt-mochitest-media-spi-1",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-allrecipes",
+ "source-test-python-xpcom-linux1804-64/opt-py3",
+ "test-macosx1014-64-shippable/opt-talos-tp5o",
+ "test-linux1804-64-tsan/opt-xpcshell-2",
+ "test-windows11-64-2009/debug-web-platform-tests-print-reftest",
+ "test-windows11-64-2009-asan/opt-mochitest-chrome-1proc-3",
+ "test-linux1804-64/debug-jsreftest-4",
+ "build-macosx64/debug",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-facebook",
+ "test-windows11-64-2009/debug-jsreftest-2",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-twitch",
+ "l10n-macosx64-shippable/opt",
+ "test-linux1804-64-qr/debug-web-platform-tests-reftest-5",
+ "test-android-em-7.0-x86_64/debug-geckoview-mochitest-media-spi",
+ "test-linux1804-64-qr/opt-mochitest-webgl2-ext-3",
+ "test-linux1804-64-shippable/opt-awsy-tp6",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-microsoft-support",
+ "test-windows11-64-2009-qr/debug-mochitest-webgl1-core",
+ "test-windows11-64-2009-shippable-qr/opt-awsy-base",
+ "upload-generated-sources-win64-aarch64-shippable/opt",
+ "test-windows7-32/debug-mochitest-remote",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-netflix",
+ "test-linux1804-64-qr/opt-mochitest-plain-2",
+ "test-windows7-32/debug-reftest-4",
+ "source-test-python-raptor-linux1804-64/opt-py3",
+ "test-windows11-64-2009-asan/opt-mochitest-chrome-gpu",
+ "test-linux1804-64/opt-mochitest-browser-chrome-2",
+ "test-windows11-64-2009-asan/opt-jsreftest-3",
+ "test-linux1804-64-asan/opt-mochitest-media-3",
+ "test-linux1804-64/debug-mochitest-plain-16",
+ "test-windows11-64-2009-qr/opt-web-platform-tests-7",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-reddit",
+ "test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-3",
+ "test-linux1804-64/debug-xpcshell-spi-nw-5",
+ "test-linux1804-64-asan/opt-mochitest-plain-gpu",
+ "test-linux1804-64-qr/debug-mochitest-plain-14",
+ "test-macosx1014-64-shippable/opt-talos-chrome",
+ "toolchain-clang-dist-toolchain",
+ "test-linux1804-64-qr/debug-reftest-swr-2",
+ "test-windows7-32/opt-mochitest-browser-chrome-2",
+ "source-test-node-devtools-tests",
+ "test-linux1804-64-asan/opt-reftest-4",
+ "test-linux64-shippable/opt-talos-g4",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-amazon",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-yandex",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-yahoo-news",
+ "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-12",
+ "test-windows7-32/debug-mochitest-plain-4",
+ "test-linux64-shippable-qr/opt-raptor-wasm-misc-firefox",
+ "test-linux64-shippable-qr/opt-raptor-wasm-godot-baseline-firefox",
+ "test-linux1804-64-qr/debug-web-platform-tests-16",
+ "toolchain-linux64-minidump-stackwalk",
+ "test-linux1804-64/debug-mochitest-devtools-chrome-spi-nw-3",
+ "test-linux1804-64-asan/opt-web-platform-tests-crashtest",
+ "toolchain-win64-node-10",
+ "toolchain-win64-node-12",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-docs",
+ "test-linux64-shippable/opt-raptor-webaudio-firefox",
+ "source-test-python-mozperftest-macosx1014-64/opt",
+ "test-windows7-32/debug-mochitest-media-1",
+ "test-windows11-64-2009/opt-web-platform-tests-3",
+ "test-linux1804-64-qr/debug-mochitest-webgl2-ext-3",
+ "test-android-em-7.0-x86_64/opt-geckoview-crashtest",
+ "test-macosx1014-64/debug-mochitest-webgl2-ext-4",
+ "test-windows11-64-2009/opt-test-verify",
+ "test-linux1804-64-qr/debug-jsreftest-5",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-google-maps",
+ "test-linux1804-64/opt-mochitest-webgl2-core",
+ "test-linux1804-64/debug-xpcshell-1",
+ "test-linux1804-64-qr/debug-mochitest-plain-14",
+ "test-macosx1014-64-qr/debug-reftest-2",
+ "test-linux1804-64/debug-web-platform-tests-reftest-4",
+ "test-linux1804-64/debug-xpcshell-spi-nw-2",
+ "test-windows11-64-2009-qr/debug-mochitest-browser-chrome-4",
+ "source-test-mozlint-eslint",
+ "test-android-em-7.0-x86_64-qr/opt-geckoview-mochitest-media",
+ "source-test-shadow-scheduler-bugbug_disperse_reduced_medium",
+ "toolchain-linux64-gn",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-bing-search-restaurants",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-linkedin",
+ "test-linux1804-64-asan/opt-mochitest-devtools-chrome-6",
+ "test-linux64-shippable-qr/opt-talos-svgr-swr",
+ "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-2",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-office",
+ "test-macosx1014-64/debug-web-platform-tests-9",
+ "test-linux1804-64/debug-firefox-ui-functional-local",
+ "test-windows11-64-2009/debug-web-platform-tests-10",
+ "test-windows7-32/debug-mochitest-media-3",
+ "test-linux1804-64/debug-reftest-1",
+ "test-windows11-64-2009-qr/debug-web-platform-tests-reftest-2",
+ "test-windows7-32/debug-mochitest-plain-1",
+ "build-signing-win64-aarch64/opt",
+ "test-linux64-shippable-qr/opt-talos-g5",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-tumblr",
+ "test-linux1804-64/opt-gtest-1proc",
+ "test-linux1804-64-qr/debug-mochitest-plain-8",
+ "test-macosx1014-64/opt-mochitest-webgl2-core",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-espn",
+ "test-linux1804-64/debug-xpcshell-spi-nw-3",
+ "test-linux1804-64-qr/opt-mochitest-webgl2-ext-2",
+ "test-windows11-64-2009-shippable-qr/opt-awsy-tp6",
+ "source-test-python-mozversioncontrol-py3",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-imdb",
+ "test-linux1804-64/opt-reftest-2",
+ "test-macosx1014-64/opt-web-platform-tests-2",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-facebook",
+ "test-windows11-64-2009/debug-firefox-ui-functional-local",
+ "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftest-3",
+ "test-linux64-shippable-qr/opt-talos-g3",
+ "test-linux1804-64-asan/opt-reftest-6",
+ "test-linux1804-64/debug-jsreftest-2",
+ "test-macosx1014-64/opt-web-platform-tests-wdspec-headless-2",
+ "test-windows11-64-2009/opt-browser-screenshots",
+ "test-linux1804-64-qr/debug-reftest-4",
+ "test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-2",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-amazon",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-yahoo-news",
+ "test-macosx1014-64-qr/opt-reftest-1",
+ "test-windows11-64-2009/opt-web-platform-tests-wdspec-1",
+ "test-macosx1014-64/opt-mochitest-webgl2-ext-3",
+ "test-linux1804-64-qr/opt-mochitest-webgl2-ext-4",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-fandom",
+ "test-macosx1014-64/opt-web-platform-tests-reftest-2",
+ "test-linux1804-64-qr/debug-mochitest-chrome-gpu",
+ "test-windows7-32/debug-web-platform-tests-8",
+ "test-windows11-64-2009-qr/debug-mochitest-plain-gpu",
+ "test-android-em-7.0-x86_64/debug-geckoview-mochitest-media",
+ "test-linux1804-64-asan/opt-xpcshell-4",
+ "test-windows11-64-2009-qr/opt-web-platform-tests-1",
+ "test-windows7-32-shippable/opt-raptor-wasm-godot-firefox",
+ "test-macosx1014-64/opt-crashtest",
+ "test-windows11-64-2009-shippable-qr/opt-talos-chrome",
+ "source-test-shadow-scheduler-bugbug_reduced",
+ "test-windows11-64-2009/opt-marionette",
+ "test-linux1804-64/opt-mochitest-browser-chrome-3",
+ "webrender-wrench-android-release",
+ "test-macosx1014-64/debug-web-platform-tests-wdspec-1",
+ "source-test-python-featuregates-windows11-64-2009/opt-py2",
+ "source-test-python-mozrelease-py2",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-cnn",
+ "test-linux1804-64-qr/opt-web-platform-tests-reftest-2",
+ "test-windows11-64-2009/opt-reftest-2",
+ "source-test-shadow-scheduler-bugbug_disperse_medium_no_unseen",
+ "source-test-mozlint-file-whitespace",
+ "test-windows7-32/debug-reftest-gpu-1",
+ "test-linux1804-64/debug-mochitest-webgl2-core",
+ "test-windows7-32/opt-web-platform-tests-wdspec-headless-1",
+ "build-signing-android-geckoview-fat-aar-shippable/opt",
+ "test-linux1804-64-tsan/opt-mochitest-plain-12",
+ "test-windows11-64-2009-shippable/opt-talos-xperf",
+ "test-windows11-64-2009/debug-mochitest-webgl1-core",
+ "test-windows7-32/debug-reftest-no-accel-1",
+ "test-windows11-64-2009/debug-reftest-2",
+ "test-windows11-64-2009-shippable/opt-talos-svgr",
+ "test-linux1804-64-asan/opt-mochitest-chrome-1proc-1",
+ "test-windows11-64-2009/debug-web-platform-tests-5",
+ "toolchain-win64-cbindgen",
+ "test-windows11-64-2009/opt-web-platform-tests-wdspec-2",
+ "test-windows7-32-shippable/opt-raptor-ares6-firefox",
+ "test-linux1804-64/opt-mochitest-plain-5",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-amazon",
+ "toolchain-macosx64-minidump-stackwalk",
+ "webrender-linux-debug",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-fandom",
+ "test-windows7-32-shippable/opt-awsy",
+ "test-macosx1014-64/debug-web-platform-tests-2",
+ "test-windows7-32/debug-mochitest-browser-chrome-6",
+ "test-linux1804-64-asan/opt-mochitest-chrome-1proc-2",
+ "test-linux1804-64/opt-xpcshell-2",
+ "test-linux1804-64-asan/opt-marionette",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-facebook-cristiano",
+ "test-windows7-32/opt-web-platform-tests-4",
+ "test-macosx1014-64/opt-mochitest-webgpu",
+ "test-linux1804-64/opt-mochitest-devtools-chrome-2",
+ "test-macosx1014-64-shippable/opt-talos-other",
+ "test-linux1804-64-asan/opt-mochitest-browser-chrome-16",
+ "test-linux1804-64/opt-marionette",
+ "test-linux1804-64/opt-reftest-no-accel-3",
+ "test-macosx1014-64/opt-mochitest-devtools-chrome-4",
+ "test-windows7-32/debug-marionette",
+ "test-linux1804-64-qr/debug-mochitest-chrome-1proc-3",
+ "test-linux1804-64/opt-web-platform-tests-wdspec-3",
+ "test-windows11-64-2009/debug-mochitest-devtools-chrome-3",
+ "test-android-em-7.0-x86_64-qr/debug-geckoview-mochitest-media-spi",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-amazon",
+ "test-linux1804-64/opt-reftest-1",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-bbc",
+ "test-windows11-64-2009-asan/opt-mochitest-browser-chrome-2",
+ "test-linux1804-64/debug-mochitest-browser-chrome-1",
+ "test-windows11-64-2009/opt-mochitest-webgl2-ext-1",
+ "test-macosx1014-64/debug-web-platform-tests-16",
+ "build-linux64-plain/debug",
+ "test-macosx1014-64/opt-mochitest-a11y-1proc",
+ "test-macosx1014-64/debug-web-platform-tests-1",
+ "test-linux1804-64-qr/debug-mochitest-plain-15",
+ "test-windows11-64-2009/debug-mochitest-plain-3",
+ "test-macosx1014-64-shippable/opt-raptor-motionmark-htmlsuite-firefox",
+ "test-linux1804-64/debug-mochitest-browser-chrome-3",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-yahoo-mail",
+ "test-linux1804-64-asan/opt-reftest-5",
+ "test-windows11-64-2009-qr/debug-mochitest-media",
+ "build-signing-win32/opt",
+ "test-linux1804-64-qr/debug-mochitest-media-2",
+ "source-test-python-mochitest-harness-linux1804-64/debug",
+ "test-linux1804-64-qr/debug-web-platform-tests-print-reftest",
+ "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-13",
+ "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-reftest-2",
+ "test-macosx1014-64/debug-mochitest-plain-5",
+ "test-linux1804-64-asan/opt-mochitest-plain-10",
+ "build-signing-macosx64/opt",
+ "test-linux1804-64-qr/opt-web-platform-tests-9",
+ "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-1",
+ "build-linux64-asan/debug",
+ "test-linux1804-64-asan/opt-reftest-no-accel-8",
+ "test-linux1804-64-asan/opt-jsreftest-3",
+ "test-linux1804-64/debug-web-platform-tests-wdspec-3",
+ "test-windows11-64-2009-shippable-qr/opt-talos-other",
+ "test-macosx1014-64-shippable/opt-awsy-tp6",
+ "test-linux1804-64/debug-mochitest-browser-chrome-13",
+ "test-macosx1014-64/debug-mochitest-browser-chrome-14",
+ "test-windows11-64-2009-shippable-qr/opt-talos-tp5o",
+ "test-linux1804-64/opt-mochitest-plain-gpu",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-web-de",
+ "test-windows7-32/debug-jsreftest-3",
+ "test-windows11-64-2009/opt-xpcshell-2",
+ "test-macosx1014-64/debug-mochitest-browser-chrome-7",
+ "test-linux1804-64-qr/debug-xpcshell-5",
+ "test-windows7-32/opt-web-platform-tests-wdspec-headless-2",
+ "test-macosx1014-64/opt-mochitest-plain-4",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-live-geckoview-cold-cnn-ampstories",
+ "test-macosx1014-64-qr/debug-reftest-5",
+ "test-windows11-64-2009-qr/opt-mochitest-browser-chrome-5",
+ "test-linux1804-64/debug-mochitest-chrome-spi-nw-1proc-2",
+ "test-linux1804-64/debug-mochitest-plain-10",
+ "test-linux1804-64-qr/debug-mochitest-remote",
+ "test-linux1804-64-qr/debug-web-platform-tests-11",
+ "test-macosx1014-64/debug-jittest-1proc-3",
+ "test-linux1804-64/debug-mochitest-chrome-spi-nw-1proc-3",
+ "test-linux1804-64/debug-web-platform-tests-10",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-slides",
+ "source-test-python-featuregates-linux1804-64/opt-py3",
+ "source-test-python-marionette-harness-windows11-64-2009/opt-py2",
+ "source-test-python-telemetry-python-macosx1014-64/opt-py2",
+ "test-linux1804-64-qr/debug-mochitest-plain-6",
+ "test-linux1804-64/debug-mochitest-devtools-chrome-3",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-twitter",
+ "test-windows11-64-2009-shippable/opt-talos-g5",
+ "test-windows7-32/opt-web-platform-tests-crashtest",
+ "test-windows7-32-shippable/opt-raptor-motionmark-htmlsuite-firefox",
+ "test-linux1804-64/opt-web-platform-tests-4",
+ "test-linux1804-64/debug-jsreftest-5",
+ "test-linux1804-64-qr/opt-mochitest-chrome-1proc-3",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-raptor-speedometer-geckoview",
+ "source-test-python-mozperftest-windows11-64-2009/opt",
+ "test-windows11-64-2009/opt-web-platform-tests-crashtest",
+ "test-android-em-7.0-x86_64-shippable/opt-geckoview-junit-multi",
+ "webrender-wrench-android-debug",
+ "test-linux1804-64/debug-mochitest-browser-chrome-16",
+ "test-windows11-64-2009/opt-mochitest-browser-chrome-5",
+ "spidermonkey-sm-plain-win64/opt",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-cnn",
+ "test-windows7-32-shippable/opt-talos-realworld-webextensions",
+ "test-windows7-32/debug-mochitest-media-spi-2",
+ "test-linux1804-64-qr/debug-xpcshell-6",
+ "test-macosx1014-64/opt-web-platform-tests-9",
+ "test-linux1804-64-qr/debug-mochitest-chrome-1proc-1",
+ "test-windows7-32/opt-mochitest-remote",
+ "spidermonkey-sm-nojit-linux64/opt",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-cnn-ampstories",
+ "test-linux1804-64-qr/opt-xpcshell-4",
+ "test-macosx1014-64/debug-web-platform-tests-print-reftest",
+ "test-windows11-64-2009/debug-web-platform-tests-reftest-2",
+ "test-linux64-shippable/opt-raptor-wasm-misc-baseline-firefox",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-pinterest",
+ "test-macosx1014-64/opt-mochitest-webgl2-ext-1",
+ "test-linux64-shippable-qr/opt-talos-perf-reftest-singletons",
+ "build-win32/debug",
+ "test-linux64-shippable-qr/opt-raptor-sunspider-firefox",
+ "test-linux1804-64-asan/opt-web-platform-tests-18",
+ "test-android-em-7.0-x86_64/debug-geckoview-mochitest-plain-1",
+ "source-test-mozlint-py-compat",
+ "build-win32/opt",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-office",
+ "test-linux1804-64/debug-mochitest-browser-chrome-11",
+ "test-linux1804-64-qr/opt-web-platform-tests-reftest-1",
+ "test-windows11-64-2009/opt-gtest-1proc",
+ "test-windows11-64-2009/opt-mochitest-chrome-1proc-2",
+ "test-linux1804-64-asan-qr/opt-reftest-7",
+ "spidermonkey-sm-asan-linux64/opt",
+ "test-windows11-64-2009-qr/opt-mochitest-chrome-gpu",
+ "test-linux1804-64/opt-web-platform-tests-wdspec-2",
+ "test-linux1804-64-qr/debug-mochitest-plain-13",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-outlook",
+ "test-windows7-32/debug-mochitest-chrome-1proc-3",
+ "test-macosx1014-64/debug-web-platform-tests-reftest-1",
+ "test-windows7-32/debug-reftest-gpu-2",
+ "test-macosx1014-64-qr/debug-web-platform-tests-reftest-4",
+ "test-windows11-64-2009-asan/opt-mochitest-remote",
+ "build-android-arm/opt",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-youtube-watch",
+ "test-linux1804-64-asan/opt-mochitest-plain-3",
+ "test-macosx1014-64/debug-mochitest-browser-chrome-9",
+ "test-android-em-7.0-x86_64-qr/opt-geckoview-reftest-2",
+ "test-windows7-32-shippable/opt-talos-g1",
+ "test-linux1804-64-shippable-qr/opt-web-platform-tests-9",
+ "test-linux1804-64-asan/opt-firefox-ui-functional-remote",
+ "test-linux1804-64/debug-mochitest-webgl2-ext-3",
+ "test-linux1804-64-asan/opt-web-platform-tests-wdspec-2",
+ "spidermonkey-sm-rootanalysis-linux64/debug",
+ "toolchain-macosx64-clang-9",
+ "test-windows7-32/debug-mochitest-chrome-1proc-1",
+ "test-windows7-32/debug-mochitest-plain-2",
+ "source-test-mozlint-shellcheck",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-facebook-redesign",
+ "test-macosx1014-64-qr/debug-reftest-3",
+ "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftest-5",
+ "test-android-em-7.0-x86_64/debug-geckoview-test-verify",
+ "test-windows7-32/debug-web-platform-tests-print-reftest",
+ "test-linux1804-64/debug-mochitest-browser-chrome-2",
+ "test-windows11-64-2009-shippable-qr/opt-talos-g1",
+ "test-linux1804-64/debug-mochitest-plain-6",
+ "test-macosx1014-64/opt-mochitest-remote",
+ "test-linux1804-64/opt-mochitest-chrome-1proc-2",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-linkedin",
+ "test-windows11-64-2009/opt-web-platform-tests-reftest-3",
+ "test-macosx1014-64/opt-mochitest-browser-chrome-6",
+ "test-linux1804-64-shippable-qr/opt-web-platform-tests-2",
+ "test-windows7-32/debug-mochitest-browser-chrome-3",
+ "test-windows7-32/opt-web-platform-tests-print-reftest",
+ "test-android-em-7.0-x86_64-qr/debug-geckoview-mochitest-plain-1",
+ "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-15",
+ "test-windows11-64-2009/opt-mochitest-webgl2-ext-3",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-sheets",
+ "test-linux1804-64-asan/opt-xpcshell-5",
+ "source-test-python-mozharness",
+ "test-windows7-32/opt-web-platform-tests-8",
+ "test-macosx1014-64/opt-reftest-1",
+ "test-linux1804-64/debug-mochitest-browser-chrome-16",
+ "test-linux1804-64/debug-web-platform-tests-8",
+ "test-linux1804-64-shippable-qr/opt-web-platform-tests-8",
+ "test-linux1804-64-asan/opt-mochitest-plain-4",
+ "test-linux1804-64/debug-web-platform-tests-11",
+ "test-linux1804-64/debug-reftest-no-accel-4",
+ "build-macosx64-asan-fuzzing/opt",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-facebook-cristiano",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-apple",
+ "test-linux1804-64-asan/opt-web-platform-tests-reftest-4",
+ "test-linux1804-64-qr/debug-mochitest-a11y-1proc",
+ "spidermonkey-sm-package-linux64/opt",
+ "test-windows11-64-2009-qr/opt-web-platform-tests-10",
+ "test-linux1804-64/debug-mochitest-remote",
+ "test-windows11-64-2009/debug-web-platform-tests-4",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-wasm-godot-firefox",
+ "repackage-linux64/opt",
+ "test-windows11-64-2009/opt-mochitest-devtools-chrome-3",
+ "test-linux64-shippable-qr/opt-raptor-wasm-godot-ion-firefox",
+ "test-linux1804-64/debug-xpcshell-2",
+ "source-test-shadow-scheduler-bugbug_disperse_medium",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-instagram",
+ "source-test-doc-generate",
+ "test-linux1804-64/debug-jsreftest-1",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-sheets",
+ "test-windows7-32/opt-marionette",
+ "test-macosx1014-64/opt-mochitest-webgl1-ext",
+ "test-linux1804-64/debug-web-platform-tests-2",
+ "test-linux1804-64-asan/opt-web-platform-tests-reftest-1",
+ "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-14",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-cnn-ampstories",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-instagram",
+ "test-linux1804-64-asan-qr/opt-reftest-2",
+ "test-linux1804-64-qr/debug-jsreftest-4",
+ "test-linux1804-64-qr/opt-mochitest-media-spi-1",
+ "test-macosx1014-64/debug-jsreftest-1",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-google-mail",
+ "test-android-em-7.0-x86_64/debug-geckoview-crashtest",
+ "test-android-em-7.0-x86_64-qr/debug-geckoview-reftest-2",
+ "source-test-python-mozbase-windows11-64-2009/opt-py2",
+ "test-linux1804-64-qr/debug-mochitest-media-spi-1",
+ "test-linux1804-64/debug-mochitest-devtools-chrome-9",
+ "test-linux1804-64/debug-web-platform-tests-12",
+ "spidermonkey-sm-gdb-linux64/debug",
+ "source-test-mozlint-perfdocs-verify",
+ "test-android-em-7.0-x86_64/debug-geckoview-gtest-1proc",
+ "build-linux64-aarch64/opt",
+ "test-linux64-shippable-qr/opt-talos-svgr",
+ "test-linux64-shippable/opt-raptor-wasm-godot-baseline-firefox",
+ "test-macosx1014-64/opt-cppunit-1proc",
+ "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-crashtest",
+ "test-linux1804-64-asan/opt-mochitest-browser-chrome-9",
+ "test-macosx1014-64/opt-firefox-ui-functional-remote",
+ "test-linux1804-64-qr/debug-reftest-swr-5",
+ "test-linux1804-64-qr/opt-web-platform-tests-reftest-3",
+ "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftest-4",
+ "test-linux1804-64-qr/opt-mochitest-remote",
+ "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-2",
+ "test-linux1804-64-qr/opt-web-platform-tests-wdspec-2",
+ "test-linux1804-64/opt-mochitest-media-spi-1",
+ "test-linux1804-64-asan/opt-firefox-ui-functional-local",
+ "test-macosx1014-64-qr/opt-reftest-3",
+ "test-linux1804-64-qr/debug-web-platform-tests-wdspec-1",
+ "toolchain-macosx64-gn",
+ "test-linux1804-64/opt-mochitest-browser-chrome-1",
+ "test-windows11-64-2009-asan/opt-mochitest-browser-chrome-8",
+ "test-linux1804-64/debug-telemetry-tests-client",
+ "test-linux1804-64/opt-web-platform-tests-wdspec-1",
+ "test-linux64-shippable-qr/opt-raptor-motionmark-animometer-firefox",
+ "test-linux1804-64/debug-mochitest-browser-chrome-15",
+ "test-windows11-64-2009/opt-mochitest-plain-4",
+ "test-android-em-7.0-x86_64/opt-geckoview-test-verify",
+ "test-windows11-64-2009-asan/opt-jsreftest-2",
+ "test-linux1804-64-qr/debug-mochitest-webgl1-core",
+ "source-test-mozlint-wptlint-gecko",
+ "test-macosx1014-64-qr/opt-reftest-7",
+ "test-linux1804-64/opt-mochitest-devtools-chrome-1",
+ "test-android-em-7.0-x86_64/opt-geckoview-reftest-2",
+ "test-linux1804-64-qr/debug-mochitest-plain-5",
+ "test-windows11-64-2009-shippable/opt-raptor-wasm-godot-firefox",
+ "test-linux1804-64-qr/debug-mochitest-webgl2-core",
+ "test-windows11-64-2009-qr/opt-mochitest-plain-4",
+ "test-windows11-64-2009-qr/debug-mochitest-media-spi",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-google-mail",
+ "test-macosx1014-64-shippable/opt-talos-g5",
+ "test-windows11-64-2009-qr/opt-crashtest",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-microsoft-support",
+ "source-test-python-mozlint-linux1804-64/opt-py3",
+ "test-android-em-7.0-x86_64/debug-geckoview-xpcshell-2",
+ "test-windows11-64-2009-qr/opt-mochitest-webgl2-core",
+ "test-windows7-32/debug-crashtest",
+ "toolchain-win32-gn",
+ "test-linux1804-64-asan/opt-mochitest-browser-chrome-7",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-apple",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-live-firefox-cold-cnn-ampstories",
+ "test-linux1804-64/debug-mochitest-browser-chrome-1",
+ "test-windows7-32-shippable/opt-talos-webgl",
+ "toolchain-win64-clang-cl-11",
+ "source-test-python-raptor-linux1804-64/opt-py2",
+ "test-linux1804-64/opt-reftest-5",
+ "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-9",
+ "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftest-6",
+ "test-macosx1014-64/debug-mochitest-devtools-chrome-6",
+ "test-linux1804-64-asan/opt-mochitest-devtools-chrome-1",
+ "test-linux1804-64-asan/opt-reftest-8",
+ "test-windows7-32/debug-mochitest-browser-chrome-2",
+ "build-signing-win32/debug",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-facebook-redesign",
+ "toolchain-linux64-node-10",
+ "toolchain-linux64-node-12",
+ "test-windows11-64-2009/debug-mochitest-webgl2-core",
+ "test-linux1804-64/debug-xpcshell-4",
+ "test-windows11-64-2009/opt-web-platform-tests-1",
+ "test-linux1804-64-shippable-qr/opt-web-platform-tests-print-reftest",
+ "source-test-python-mozbuild-windows11-64-2009/opt-py2",
+ "toolchain-linux64-fix-stacks",
+ "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-10",
+ "toolchain-win64-clang-cl-9",
+ "test-linux1804-64/debug-reftest-8",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-google",
+ "test-linux1804-64/debug-mochitest-devtools-chrome-spi-nw-6",
+ "test-linux1804-64-asan/opt-mochitest-browser-chrome-8",
+ "test-linux1804-64-qr/debug-web-platform-tests-13",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-netflix",
+ "test-linux1804-64-qr/debug-mochitest-plain-9",
+ "test-macosx1014-64/debug-mochitest-plain-1",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-sheets",
+ "test-linux1804-64-asan/opt-mochitest-devtools-chrome-4",
+ "test-linux1804-64-qr/opt-mochitest-webgl1-core",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-outlook",
+ "test-linux1804-64/debug-mochitest-browser-chrome-10",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-microsoft",
+ "test-macosx1014-64/debug-mochitest-chrome-1proc-2",
+ "test-linux1804-64-asan/opt-mochitest-a11y-1proc",
+ "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-10",
+ "test-linux1804-64-tsan/opt-mochitest-plain-2",
+ "test-linux1804-64/debug-mochitest-plain-14",
+ "test-windows7-32/opt-reftest-gpu-1",
+ "test-linux1804-64-qr/debug-web-platform-tests-9",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-microsoft",
+ "source-test-mozlint-rejected-words",
+ "test-linux1804-64/debug-reftest-no-accel-1",
+ "test-windows11-64-2009-qr/opt-mochitest-browser-chrome-2",
+ "test-macosx1014-64/debug-mochitest-browser-chrome-11",
+ "test-linux1804-64/debug-mochitest-plain-15",
+ "test-linux1804-64-qr/debug-web-platform-tests-reftest-2",
+ "test-linux1804-64/opt-mochitest-plain-4",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-live-firefox-cold-cnn-ampstories",
+ "test-windows7-32/debug-web-platform-tests-reftest-1",
+ "test-linux1804-64/debug-mochitest-devtools-chrome-spi-nw-2",
+ "test-windows11-64-2009-shippable/opt-raptor-motionmark-animometer-firefox",
+ "test-linux1804-64/opt-web-platform-tests-3",
+ "test-windows11-64-2009-asan/opt-crashtest",
+ "source-test-python-firefox-ci-py3",
+ "test-linux1804-64/opt-firefox-ui-functional-local",
+ "test-linux1804-64-qr/opt-reftest-3",
+ "test-windows11-64-2009/debug-mochitest-devtools-chrome-1",
+ "test-android-em-7.0-x86_64-qr/debug-geckoview-mochitest-plain-2",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-ares6-firefox",
+ "test-macosx1014-64/opt-web-platform-tests-8",
+ "test-windows7-32/opt-web-platform-tests-11",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-netflix",
+ "test-linux1804-64-tsan/opt-xpcshell-4",
+ "test-macosx1014-64/debug-web-platform-tests-reftest-4",
+ "test-windows11-64-2009/debug-mochitest-a11y-1proc",
+ "test-windows7-32/opt-web-platform-tests-wdspec-3",
+ "source-test-python-telemetry-integration-tests-linux1804-64/opt",
+ "test-windows7-32/debug-reftest-no-accel-4",
+ "test-linux1804-64/debug-mochitest-browser-chrome-10",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-ebay",
+ "test-android-em-7.0-x86_64/opt-geckoview-mochitest-media",
+ "test-linux1804-64-tsan/opt-xpcshell-6",
+ "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-11",
+ "test-windows11-64-2009-shippable/opt-raptor-webaudio-firefox",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-reddit",
+ "test-windows11-64-2009/debug-web-platform-tests-wdspec-3",
+ "test-macosx1014-64/debug-web-platform-tests-reftest-3",
+ "test-windows11-64-2009/opt-mochitest-devtools-chrome-2",
+ "test-windows11-64-2009/debug-gtest-1proc",
+ "test-windows7-32-shippable/opt-talos-other",
+ "test-macosx1014-64/debug-mochitest-devtools-chrome-4",
+ "webrender-macos-release",
+ "test-linux1804-64-asan/opt-web-platform-tests-12",
+ "test-windows11-64-2009-shippable/opt-talos-damp",
+ "test-macosx1014-64/opt-mochitest-devtools-chrome-2",
+ "test-linux1804-64/opt-web-platform-tests-crashtest",
+ "test-linux1804-64-tsan/opt-mochitest-plain-10",
+ "test-linux1804-64-qr/debug-reftest-swr-7",
+ "test-linux1804-64/debug-xpcshell-spi-nw-4",
+ "test-linux1804-64-qr/debug-reftest-3",
+ "test-windows11-64-2009/debug-mochitest-webgl1-ext",
+ "test-macosx1014-64/debug-mochitest-browser-chrome-8",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-reddit",
+ "test-windows11-64-2009-shippable/opt-talos-bcv",
+ "test-windows7-32/opt-firefox-ui-functional-remote",
+ "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-crashtest",
+ "toolchain-linux64-cbindgen",
+ "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-wdspec-3",
+ "test-linux1804-64/debug-mochitest-devtools-chrome-spi-nw-7",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-docs",
+ "spidermonkey-sm-nonunified-linux64/debug",
+ "source-test-python-mozbuild-linux1804-64/opt-py2",
+ "source-test-mozlint-license",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-fandom",
+ "test-windows7-32/debug-web-platform-tests-reftest-3",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-twitch",
+ "test-macosx1014-64/opt-mochitest-devtools-chrome-1",
+ "test-linux1804-64/debug-web-platform-tests-print-reftest",
+ "test-macosx1014-64/opt-jsreftest-1",
+ "test-linux1804-64/debug-mochitest-browser-chrome-2",
+ "test-windows7-32/opt-mochitest-a11y-1proc",
+ "toolchain-linux32-geckodriver",
+ "source-test-mozlint-clang-format",
+ "test-linux1804-64/debug-mochitest-plain-11",
+ "test-windows11-64-2009-asan/opt-gtest-1proc",
+ "test-android-em-7.0-x86_64/opt-geckoview-xpcshell-2",
+ "test-linux1804-64-asan/opt-web-platform-tests-5",
+ "test-linux1804-64-qr/debug-web-platform-tests-10",
+ "test-linux1804-64/debug-firefox-ui-functional-remote",
+ "test-windows7-32/opt-reftest-gpu-2",
+ "test-linux64-shippable/opt-talos-tabswitch",
+ "test-macosx1014-64/debug-jsreftest-3",
+ "test-macosx1014-64/debug-telemetry-tests-client",
+ "test-windows11-64-2009/opt-mochitest-browser-chrome-3",
+ "test-windows11-64-2009-asan/opt-mochitest-devtools-chrome-1",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-instagram",
+ "test-macosx1014-64/opt-mochitest-media-2",
+ "test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-1",
+ "test-windows11-64-2009/opt-mochitest-devtools-chrome-1",
+ "test-linux1804-64-qr/debug-reftest-7",
+ "test-linux1804-64/debug-reftest-2",
+ "build-win64/debug",
+ "test-linux1804-64-qr/debug-mochitest-media-3",
+ "test-macosx1014-64-qr/opt-web-platform-tests-reftest-1",
+ "test-linux1804-64-tsan/opt-mochitest-plain-6",
+ "webrender-wrench-macos-build",
+ "test-windows11-64-2009-qr/opt-web-platform-tests-6",
+ "test-macosx1014-64/debug-jittest-1proc-2",
+ "test-windows11-64-2009/debug-web-platform-tests-2",
+ "test-windows7-32/opt-mochitest-plain-gpu",
+ "test-android-em-7.0-x86_64/opt-geckoview-mochitest-plain-2",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-linkedin",
+ "spidermonkey-sm-mozjs-sys-linux64/debug",
+ "test-windows11-64-2009/debug-web-platform-tests-3",
+ "test-linux1804-64-qr/debug-mochitest-plain-12",
+ "test-windows11-64-2009-asan/opt-mochitest-browser-chrome-9",
+ "test-linux1804-64-qr/debug-mochitest-webgl2-ext-4",
+ "test-linux1804-64-asan/opt-reftest-no-accel-3",
+ "test-linux1804-64-qr/debug-xpcshell-1",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-outlook",
+ "test-linux1804-64/debug-reftest-no-accel-7",
+ "test-windows11-64-2009-qr/opt-mochitest-plain-5",
+ "test-macosx1014-64/opt-mochitest-webgl1-ext-gli",
+ "test-linux64-shippable-qr/opt-raptor-stylebench-firefox",
+ "test-windows11-64-2009-qr/opt-mochitest-browser-chrome-4",
+ "test-linux1804-64/debug-web-platform-tests-crashtest",
+ "test-windows11-64-2009/opt-web-platform-tests-2",
+ "webrender-linux-release",
+ "test-windows11-64-2009-asan/opt-mochitest-devtools-chrome-5",
+ "test-linux1804-64/debug-web-platform-tests-1",
+ "test-macosx1014-64-shippable/opt-raptor-motionmark-animometer-firefox",
+ "test-windows11-64-2009/debug-web-platform-tests-6",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-bing",
+ "source-test-mozlint-py-flake8",
+ "test-windows11-64-2009/debug-mochitest-remote",
+ "test-macosx1014-64/opt-mochitest-browser-chrome-2",
+ "test-macosx1014-64-qr/debug-web-platform-tests-reftest-2",
+ "test-windows11-64-2009/opt-mochitest-remote",
+ "test-linux1804-64-qr/debug-mochitest-plain-4",
+ "test-linux1804-64-qr/opt-web-platform-tests-7",
+ "test-android-em-7.0-x86_64/opt-geckoview-mochitest-media-spi",
+ "test-linux1804-64-asan/opt-mochitest-webgl1-core",
+ "test-macosx1014-64/debug-marionette",
+ "test-linux1804-64-asan/opt-reftest-no-accel-2",
+ "webrender-cargotest-macos-build",
+ "test-windows11-64-2009/debug-mochitest-browser-chrome-1",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-twitter",
+ "build-linux64-base-toolchains/debug",
+ "test-windows7-32/opt-mochitest-media-2",
+ "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-reftest-4",
+ "test-macosx1014-64-shippable-qr/opt-talos-webgl-gli",
+ "test-macosx1014-64/debug-mochitest-webgl2-ext-gli-1",
+ "test-windows7-32/debug-web-platform-tests-7",
+ "test-linux1804-64-asan/opt-mochitest-plain-1",
+ "test-macosx1014-64/debug-mochitest-browser-chrome-13",
+ "test-linux1804-64/debug-mochitest-devtools-chrome-12",
+ "build-macosx64-gcp/debug",
+ "test-macosx1014-64/opt-reftest-2",
+ "test-linux1804-64-asan/opt-mochitest-webgl2-ext-4",
+ "test-linux1804-64/debug-web-platform-tests-5",
+ "test-windows7-32/opt-mochitest-plain-5",
+ "test-windows7-32/opt-web-platform-tests-12",
+ "test-linux1804-64-asan/opt-mochitest-browser-chrome-13",
+ "test-linux1804-64/opt-reftest-4",
+ "test-linux1804-64/debug-mochitest-devtools-chrome-spi-nw-8",
+ "test-macosx1014-64-qr/debug-reftest-6",
+ "build-win64/opt",
+ "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-13",
+ "test-linux1804-64/opt-web-platform-tests-wdspec-headless-1",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-amazon",
+ "source-test-mozlint-py-black",
+ "test-linux1804-64-qr/debug-mochitest-media-3",
+ "test-linux1804-64/debug-reftest-no-accel-6",
+ "test-macosx1014-64/debug-mochitest-plain-gpu",
+ "test-macosx1014-64/opt-mochitest-webgl2-ext-gli-4",
+ "test-windows7-32-shippable/opt-talos-tabswitch",
+ "test-linux1804-64-asan/opt-mochitest-chrome-1proc-3",
+ "test-linux1804-64/debug-mochitest-devtools-chrome-10",
+ "test-linux1804-64-qr/debug-jsreftest-2",
+ "test-linux1804-64-qr/debug-web-platform-tests-2",
+ "test-linux64-shippable-qr/opt-talos-webgl",
+ "test-linux1804-64/debug-mochitest-browser-chrome-8",
+ "test-android-em-7.0-x86_64/debug-geckoview-reftest-2",
+ "test-macosx1014-64/opt-mochitest-media-1",
+ "source-test-wpt-metadata-summary",
+ "test-windows11-64-2009-asan/opt-mochitest-plain-5",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-pinterest",
+ "test-linux1804-64/debug-mochitest-devtools-chrome-spi-nw-1",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-netflix",
+ "test-windows11-64-2009-qr/opt-web-platform-tests-9",
+ "test-linux64-shippable-qr/opt-talos-realworld-webextensions",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-yahoo-mail",
+ "toolchain-linux64-clang-tidy",
+ "test-windows11-64-2009-asan/opt-mochitest-plain-1",
+ "test-linux1804-64-qr/opt-mochitest-media-spi-2",
+ "source-test-python-mozharness-py3",
+ "source-test-mozlint-file-perm",
+ "test-macosx1014-64/debug-reftest-1",
+ "source-test-jsshell-bench-ares6-sm",
+ "test-linux1804-64-asan/opt-mochitest-webgl1-ext",
+ "test-windows7-32/debug-web-platform-tests-crashtest",
+ "test-windows7-32-shippable/opt-raptor-stylebench-firefox",
+ "test-windows11-64-2009-qr/debug-reftest-3",
+ "test-linux64-shippable-qr/opt-raptor-wasm-misc-ion-firefox",
+ "test-linux64-shippable-qr/opt-talos-perf-reftest",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-imgur",
+ "source-test-python-featuregates-linux1804-64/opt-py2",
+ "test-linux1804-64-asan-qr/opt-reftest-4",
+ "test-macosx1014-64/debug-web-platform-tests-8",
+ "test-linux64-shippable/opt-talos-svgr",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-fandom",
+ "test-linux1804-64/opt-firefox-ui-functional-remote",
+ "test-linux1804-64/debug-mochitest-plain-13",
+ "test-macosx1014-64/opt-telemetry-tests-client",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-apple",
+ "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-14",
+ "test-windows7-32/opt-web-platform-tests-6",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-fandom",
+ "build-android-x86_64-asan-fuzzing/opt",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-imdb",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-bing",
+ "test-windows11-64-2009/opt-mochitest-chrome-1proc-1",
+ "webrender-windows",
+ "test-linux1804-64-asan/opt-reftest-no-accel-4",
+ "test-windows7-32/opt-web-platform-tests-reftest-4",
+ "test-linux64-shippable-qr/opt-raptor-wasm-godot-firefox",
+ "test-linux1804-64/debug-mochitest-plain-4",
+ "test-macosx1014-64/debug-mochitest-webgl2-ext-3",
+ "source-test-jsshell-bench-web-tooling-sm",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-google-mail",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-ebay-kleinanzeigen-search",
+ "test-macosx1014-64-qr/opt-web-platform-tests-reftest-3",
+ "test-linux1804-64/debug-mochitest-devtools-chrome-spi-nw-4",
+ "test-linux1804-64-qr/debug-reftest-2",
+ "test-android-em-7.0-x86_64/opt-geckoview-junit",
+ "test-macosx1014-64/debug-mochitest-webgl2-ext-gli-2",
+ "test-macosx1014-64-shippable/opt-talos-webgl",
+ "test-macosx1014-64/debug-web-platform-tests-reftest-2",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-office",
+ "test-windows7-32-shippable/opt-raptor-webaudio-firefox",
+ "test-windows11-64-2009-shippable-qr/opt-talos-xperf",
+ "source-test-python-mochitest-harness-linux1804-64/opt",
+ "test-windows11-64-2009-qr/opt-web-platform-tests-reftest-2",
+ "test-linux1804-64-qr/opt-web-platform-tests-reftest-6",
+ "test-linux64-shippable/opt-raptor-speedometer-firefox",
+ "test-macosx1014-64/debug-web-platform-tests-10",
+ "test-macosx1014-64/debug-mochitest-browser-chrome-15",
+ "test-android-em-7.0-x86_64/debug-geckoview-cppunit-1proc",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-paypal",
+ "test-linux1804-64-asan/opt-xpcshell-3",
+ "test-windows11-64-2009-shippable/opt-talos-perf-reftest",
+ "test-macosx1014-64/opt-mochitest-chrome-1proc-2",
+ "test-linux64-shippable/opt-talos-g5",
+ "test-macosx1014-64-shippable/opt-mochitest-webgl2-core-gli",
+ "test-macosx1014-64-shippable/opt-awsy",
+ "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-6",
+ "test-windows11-64-2009/debug-reftest-1",
+ "test-windows11-64-2009/opt-web-platform-tests-4",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-bing",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-youtube",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-twitch",
+ "test-android-em-7.0-x86_64-qr/debug-geckoview-crashtest",
+ "test-macosx1014-64/debug-gtest-1proc",
+ "test-windows11-64-2009-shippable/opt-talos-g1",
+ "test-macosx1014-64-shippable/opt-mochitest-media-gli-1",
+ "toolchain-macosx64-node-10",
+ "toolchain-macosx64-node-12",
+ "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-8",
+ "test-windows11-64-2009/debug-xpcshell-1",
+ "test-android-em-7.0-x86_64/opt-geckoview-cppunit-1proc",
+ "toolchain-macosx64-grcov",
+ "test-windows7-32-shippable/opt-talos-g5",
+ "test-windows7-32/opt-web-platform-tests-10",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox",
+ "test-windows11-64-2009-qr/debug-mochitest-plain-1",
+ "test-macosx1014-64/opt-web-platform-tests-print-reftest",
+ "test-macosx1014-64/opt-web-platform-tests-5",
+ "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-14",
+ "test-linux1804-64-qr/debug-mochitest-webgl2-ext-1",
+ "test-linux1804-64-qr/opt-web-platform-tests-print-reftest",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-yandex",
+ "test-linux1804-64/opt-web-platform-tests-6",
+ "test-windows11-64-2009/opt-reftest-1",
+ "test-linux1804-64/opt-mochitest-devtools-chrome-4",
+ "source-test-python-mozlint-windows11-64-2009/opt-py3",
+ "test-linux1804-64-qr/debug-reftest-swr-8",
+ "test-linux1804-64/debug-mochitest-devtools-chrome-11",
+ "source-test-python-raptor-macosx1014-64/opt-py3",
+ "test-android-em-7.0-x86_64-qr/opt-geckoview-mochitest-plain-4",
+ "test-windows7-32-shippable/opt-talos-svgr",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-microsoft",
+ "test-android-em-7.0-x86_64/opt-geckoview-mochitest-plain-4",
+ "test-android-em-7.0-x86_64/debug-geckoview-mochitest-plain-2",
+ "test-linux1804-64-qr/debug-mochitest-plain-10",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-imgur",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-live-firefox-cold-cnn-ampstories",
+ "test-windows11-64-2009/opt-mochitest-media-spi",
+ "test-linux1804-64-asan/opt-web-platform-tests-4",
+ "build-android-x86_64/debug",
+ "test-linux1804-64-qr/debug-mochitest-plain-7",
+ "test-linux1804-64/debug-mochitest-browser-chrome-7",
+ "test-linux64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox",
+ "test-windows11-64-2009-qr/opt-mochitest-plain-1",
+ "test-macosx1014-64/debug-mochitest-webgl2-core",
+ "build-linux64/opt",
+ "test-linux1804-64-qr/opt-gtest-1proc",
+ "test-linux1804-64/debug-mochitest-chrome-gpu",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-office",
+ "test-macosx1014-64/debug-mochitest-browser-chrome-16",
+ "test-android-em-7.0-x86_64/debug-geckoview-mochitest-plain-gpu",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-instagram",
+ "test-linux1804-64/debug-mochitest-a11y-spi-nw-1proc",
+ "test-windows11-64-2009-qr/opt-mochitest-browser-chrome-3",
+ "test-windows11-64-2009/opt-web-platform-tests-7",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-docs",
+ "test-macosx1014-64/debug-reftest-4",
+ "test-windows11-64-2009/debug-web-platform-tests-13",
+ "test-windows11-64-2009-asan/opt-mochitest-devtools-chrome-6",
+ "test-linux1804-64/opt-mochitest-webgl2-ext-4",
+ "source-test-python-condprof-windows11-64-2009/opt-py2",
+ "test-linux1804-64-asan/opt-mochitest-browser-chrome-12",
+ "test-windows7-32/opt-mochitest-media-1",
+ "test-windows7-32/opt-mochitest-media-3",
+ "test-linux1804-64/opt-reftest-no-accel-4",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-yandex",
+ "test-linux1804-64/opt-mochitest-webgl2-ext-3",
+ "test-linux1804-64-qr/debug-mochitest-plain-6",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-bing",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-google",
+ "test-linux1804-64-asan/opt-cppunit-1proc",
+ "test-macosx1014-64/debug-web-platform-tests-4",
+ "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-13",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-amazon",
+ "toolchain-macosx64-dump-syms",
+ "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-wdspec-2",
+ "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftest-4",
+ "test-linux1804-64-tsan/opt-xpcshell-5",
+ "test-linux1804-64/opt-mochitest-webgl1-core",
+ "test-macosx1014-64/debug-mochitest-devtools-chrome-2",
+ "test-linux64-shippable-qr/opt-talos-tabswitch",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-amazon-search",
+ "test-windows7-32/opt-mochitest-media-spi-3",
+ "test-windows11-64-2009-asan/opt-mochitest-plain-gpu",
+ "test-linux1804-64/debug-mochitest-browser-chrome-8",
+ "test-linux1804-64-qr/debug-mochitest-plain-4",
+ "test-linux1804-64/opt-mochitest-webgl1-ext",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-pinterest",
+ "test-windows11-64-2009-qr/debug-mochitest-browser-chrome-5",
+ "test-windows11-64-2009-qr/debug-mochitest-plain-4",
+ "test-macosx1014-64-shippable/opt-talos-realworld-webextensions",
+ "test-windows11-64-2009-qr/opt-web-platform-tests-reftest-1",
+ "test-linux1804-64-qr/debug-reftest-2",
+ "test-linux1804-64-asan/opt-web-platform-tests-16",
+ "test-windows11-64-2009-shippable/opt-raptor-speedometer-firefox",
+ "test-linux1804-64-asan/opt-mochitest-browser-chrome-1",
+ "test-linux1804-64/debug-mochitest-devtools-chrome-7",
+ "test-windows11-64-2009-asan/opt-firefox-ui-functional-remote",
+ "test-linux1804-64/debug-web-platform-tests-reftest-2",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-twitter",
+ "test-linux64-shippable/opt-talos-dromaeojs",
+ "test-linux1804-64/debug-mochitest-media-spi-1",
+ "test-windows11-64-2009/debug-firefox-ui-functional-remote",
+ "test-linux1804-64/debug-mochitest-browser-chrome-9",
+ "source-test-mozlint-test-manifest",
+ "test-linux1804-64-qr/debug-reftest-1",
+ "build-win64-asan-fuzzing/opt",
+ "test-windows11-64-2009/debug-mochitest-webgl2-ext-3",
+ "test-windows11-64-2009/debug-mochitest-plain-2",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-wikipedia",
+ "spidermonkey-sm-compacting-win64/debug",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-google",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-office",
+ "test-linux1804-64/debug-web-platform-tests-15",
+ "test-linux1804-64/opt-web-platform-tests-reftest-3",
+ "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-7",
+ "test-linux1804-64-qr/opt-mochitest-chrome-gpu",
+ "test-linux64-shippable/opt-talos-bcv",
+ "test-linux1804-64/opt-marionette-headless",
+ "test-windows11-64-2009/opt-mochitest-devtools-chrome-5",
+ "test-linux1804-64-tsan/opt-mochitest-plain-18",
+ "source-test-python-mozbase-macosx1014-64/opt-py3",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-youtube",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-pinterest",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-slides",
+ "test-windows11-64-2009-shippable-qr/opt-talos-perf-reftest",
+ "test-windows11-64-2009-qr/opt-mochitest-media",
+ "test-windows11-64-2009/opt-mochitest-chrome-gpu",
+ "test-windows7-32/debug-cppunit-1proc",
+ "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-12",
+ "test-linux1804-64-qr/debug-mochitest-plain-7",
+ "test-windows11-64-2009-shippable/opt-talos-g4",
+ "test-macosx1014-64/opt-mochitest-webgl1-core-gli",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-microsoft",
+ "test-linux1804-64/opt-mochitest-media-3",
+ "test-linux1804-64/opt-mochitest-devtools-chrome-5",
+ "test-linux1804-64-tsan/opt-mochitest-plain-20",
+ "test-windows11-64-2009-qr/opt-web-platform-tests-3",
+ "test-windows11-64-2009/debug-mochitest-chrome-gpu",
+ "source-test-mozlint-rst",
+ "source-test-python-mach-macosx1014-64/opt-py2",
+ "test-windows11-64-2009/debug-test-verify",
+ "source-test-shadow-scheduler-bugbug_reduced_high",
+ "source-test-python-mozterm-linux1804-64/opt-py2",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-imdb",
+ "test-android-em-7.0-x86_64-qr/opt-geckoview-mochitest-plain-gpu",
+ "source-test-python-mozbase-linux1804-64/opt-py2",
+ "test-windows11-64-2009-asan/opt-mochitest-browser-chrome-7",
+ "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-5",
+ "test-linux1804-64-asan/opt-web-platform-tests-20",
+ "test-windows11-64-2009/debug-marionette",
+ "test-linux1804-64-asan/opt-web-platform-tests-9",
+ "test-linux64-shippable-qr/opt-talos-chrome",
+ "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-print-reftest",
+ "test-linux1804-64/debug-mochitest-browser-chrome-4",
+ "test-windows11-64-2009-asan/opt-mochitest-browser-chrome-3",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-outlook",
+ "test-linux1804-64-qr/debug-web-platform-tests-reftest-3",
+ "test-linux1804-64-qr/debug-jsreftest-3",
+ "test-windows7-32/opt-web-platform-tests-reftest-2",
+ "test-macosx1014-64/opt-mochitest-plain-5",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-bing",
+ "test-macosx1014-64/debug-mochitest-devtools-chrome-3",
+ "test-linux1804-64-shippable-qr/opt-web-platform-tests-7",
+ "test-linux1804-64/debug-xpcshell-5",
+ "toolchain-linux64-clang-9",
+ "test-windows11-64-2009-qr/opt-web-platform-tests-reftest-4",
+ "test-windows7-32/debug-mochitest-browser-chrome-5",
+ "test-linux64-shippable-qr/opt-talos-dromaeojs",
+ "test-linux1804-64-asan/opt-web-platform-tests-8",
+ "test-windows11-64-2009/opt-web-platform-tests-reftest-1",
+ "test-macosx1014-64/debug-mochitest-chrome-1proc-1",
+ "test-linux1804-64-qr/debug-mochitest-webgpu",
+ "test-linux1804-64-qr/debug-mochitest-plain-16",
+ "test-linux64-shippable/opt-talos-perf-reftest",
+ "test-macosx1014-64-shippable/opt-mochitest-media-gli-2",
+ "test-macosx1014-64/debug-mochitest-webgpu",
+ "test-linux1804-64-qr/opt-jsreftest-4",
+ "test-macosx1014-64-shippable/opt-mochitest-webgl1-ext-gli",
+ "test-linux1804-64-qr/debug-web-platform-tests-reftest-3",
+ "test-macosx1014-64/debug-crashtest",
+ "test-linux1804-64/opt-web-platform-tests-wdspec-headless-2",
+ "test-windows11-64-2009-qr/debug-mochitest-plain-2",
+ "test-macosx1014-64/debug-mochitest-devtools-chrome-8",
+ "test-macosx1014-64/debug-web-platform-tests-reftest-6",
+ "test-linux1804-64/debug-mochitest-plain-2",
+ "test-macosx1014-64-qr/opt-reftest-2",
+ "test-windows11-64-2009-asan/opt-mochitest-webgl2-ext-2",
+ "test-windows11-64-2009-shippable/opt-awsy-tp6",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-google",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-yahoo-news",
+ "spidermonkey-sm-plain-linux64/opt",
+ "test-macosx1014-64/opt-web-platform-tests-wdspec-1",
+ "test-windows11-64-2009-qr/opt-web-platform-tests-wdspec-1",
+ "build-android-x86/opt",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-amazon",
+ "test-android-em-7.0-x86_64-qr/opt-geckoview-crashtest",
+ "test-macosx1014-64/debug-mochitest-webgl1-ext",
+ "toolchain-macosx64-fix-stacks",
+ "test-linux1804-64/opt-reftest-no-accel-2",
+ "test-linux1804-64-tsan/opt-mochitest-plain-7",
+ "test-windows7-32/debug-web-platform-tests-13",
+ "test-windows7-32/debug-web-platform-tests-11",
+ "test-macosx1014-64-shippable/opt-talos-svgr",
+ "test-windows11-64-2009/opt-web-platform-tests-wdspec-3",
+ "test-windows7-32-shippable/opt-raptor-tp6-live-firefox-cold-cnn-ampstories",
+ "build-android-x86-gcp/opt",
+ "test-macosx1014-64/opt-test-verify",
+ "test-linux1804-64/debug-mochitest-browser-chrome-5",
+ "test-windows11-64-2009-shippable-qr/opt-talos-svgr",
+ "test-windows11-64-2009-qr/opt-mochitest-webgl1-core",
+ "test-windows11-64-2009-qr/opt-mochitest-plain-2",
+ "test-windows11-64-2009-shippable/opt-raptor-sunspider-firefox",
+ "test-windows11-64-2009/opt-web-platform-tests-10",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-google",
+ "test-windows11-64-2009-shippable-qr/opt-awsy",
+ "spidermonkey-sm-plain-win64/debug",
+ "test-linux64-shippable-qr/opt-raptor-tp6-live-firefox-cold-cnn-ampstories",
+ "test-linux1804-64-qr/debug-mochitest-media-spi-2",
+ "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-10",
+ "test-linux1804-64/opt-browser-screenshots",
+ "test-windows11-64-2009/debug-web-platform-tests-wdspec-2",
+ "test-linux1804-64-qr/debug-mochitest-plain-15",
+ "test-linux1804-64/opt-mochitest-webgl2-ext-2",
+ "test-linux1804-64/opt-mochitest-browser-chrome-4",
+ "test-linux1804-64-asan/opt-mochitest-plain-2",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-facebook-redesign",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-twitch",
+ "test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-4",
+ "test-macosx1014-64-shippable/opt-talos-perf-reftest",
+ "test-linux1804-64/debug-mochitest-plain-9",
+ "test-windows7-32/debug-jsreftest-2",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-webaudio-firefox",
+ "test-windows11-64-2009-asan/opt-mochitest-chrome-1proc-1",
+ "test-linux1804-64/debug-mochitest-plain-5",
+ "test-linux1804-64-asan/opt-web-platform-tests-reftest-2",
+ "test-linux1804-64/debug-xpcshell-spi-nw-6",
+ "test-windows7-32/debug-web-platform-tests-5",
+ "test-windows11-64-2009/opt-web-platform-tests-reftest-4",
+ "test-linux1804-64/opt-mochitest-plain-2",
+ "test-macosx1014-64/debug-mochitest-browser-chrome-6",
+ "source-test-python-reftest-harness-linux1804-64/opt",
+ "test-windows11-64-2009/debug-mochitest-browser-chrome-3",
+ "source-test-shadow-scheduler-bugbug_disperse_medium_only_one",
+ "test-macosx1014-64/debug-mochitest-webgl1-ext-gli",
+ "test-macosx1014-64/debug-web-platform-tests-12",
+ "source-test-python-mozlint-macosx1014-64/opt-py3",
+ "test-windows7-32/opt-mochitest-browser-chrome-7",
+ "test-linux1804-64/debug-mochitest-plain-3",
+ "test-linux1804-64/debug-mochitest-browser-chrome-13",
+ "test-windows11-64-2009/opt-web-platform-tests-5",
+ "test-linux1804-64-asan/opt-mochitest-devtools-chrome-3",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-booking",
+ "test-macosx1014-64/debug-mochitest-devtools-chrome-5",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-tumblr",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-youtube",
+ "test-linux1804-64-qr/debug-mochitest-plain-8",
+ "test-linux1804-64-qr/debug-web-platform-tests-3",
+ "source-test-python-mozbase-windows11-64-2009/opt-py3",
+ "test-windows7-32/opt-mochitest-plain-4",
+ "test-linux1804-64/debug-mochitest-plain-gpu-spi-nw",
+ "test-macosx1014-64/opt-web-platform-tests-reftest-1",
+ "test-macosx1014-64/opt-mochitest-webgl2-core-gli",
+ "test-windows11-64-2009/debug-mochitest-browser-chrome-2",
+ "test-macosx1014-64/opt-web-platform-tests-7",
+ "test-linux1804-64/debug-marionette",
+ "test-linux1804-64/debug-web-platform-tests-reftest-1",
+ "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftest-6",
+ "test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-gli-3",
+ "source-test-python-mozperftest-linux1804-64/opt",
+ "test-windows11-64-2009-asan/opt-mochitest-media",
+ "test-windows11-64-2009-shippable-qr/opt-talos-webgl",
+ "test-linux1804-64/debug-mochitest-media-spi-3",
+ "test-windows7-32/opt-cppunit-1proc",
+ "test-windows11-64-2009-shippable/opt-raptor-ares6-firefox",
+ "test-linux1804-64/debug-mochitest-devtools-chrome-spi-nw-10",
+ "test-windows11-64-2009/opt-web-platform-tests-print-reftest",
+ "spidermonkey-sm-tsan-linux64/opt",
+ "test-linux1804-64/opt-reftest-no-accel-1",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-imdb",
+ "test-android-em-7.0-x86_64/debug-geckoview-reftest-1",
+ "test-linux1804-64-asan/opt-mochitest-browser-chrome-6",
+ "test-linux1804-64-qr/debug-crashtest",
+ "test-linux64-shippable/opt-talos-damp",
+ "test-windows11-64-2009/debug-mochitest-browser-chrome-5",
+ "test-linux1804-64-qr/debug-mochitest-plain-16",
+ "test-linux1804-64-qr/debug-web-platform-tests-12",
+ "toolchain-win32-fix-stacks",
+ "test-macosx1014-64/opt-mochitest-chrome-gpu",
+ "test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-2",
+ "test-linux1804-64/debug-mochitest-media-1",
+ "source-test-python-mach-windows11-64-2009/opt-py3",
+ "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-4",
+ "test-macosx1014-64/opt-web-platform-tests-4",
+ "test-windows11-64-2009/opt-crashtest",
+ "test-windows11-64-2009/opt-telemetry-tests-client",
+ "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-15",
+ "test-linux1804-64-qr/debug-reftest-swr-4",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-outlook",
+ "test-windows7-32/debug-mochitest-media-spi-1",
+ "test-macosx1014-64/debug-web-platform-tests-wdspec-3",
+ "test-linux1804-64-qr/opt-web-platform-tests-wdspec-3",
+ "test-linux1804-64-shippable-qr/opt-web-platform-tests-4",
+ "test-linux1804-64-qr/debug-mochitest-plain-11",
+ "test-windows7-32/debug-mochitest-browser-chrome-7",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-youtube",
+ "test-macosx1014-64/debug-web-platform-tests-11",
+ "test-windows7-32/debug-web-platform-tests-12",
+ "test-linux1804-64/debug-mochitest-a11y-1proc",
+ "test-linux1804-64-tsan/opt-xpcshell-1",
+ "test-windows11-64-2009/opt-mochitest-devtools-chrome-4",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-facebook",
+ "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-6",
+ "test-linux1804-64-qr/debug-mochitest-plain-5",
+ "source-test-mozlint-clippy",
+ "test-windows7-32/debug-mochitest-plain-3",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-apple",
+ "test-windows11-64-2009-asan/opt-mochitest-a11y-1proc",
+ "test-linux1804-64-qr/opt-web-platform-tests-4",
+ "test-windows11-64-2009/debug-mochitest-plain-1",
+ "toolchain-rustc-dist-toolchain",
+ "test-linux64-qr/opt-talos-bcv-swr",
+ "test-windows7-32/opt-jsreftest-1",
+ "test-windows11-64-2009/debug-mochitest-webgl2-ext-1",
+ "test-windows7-32/opt-web-platform-tests-reftest-1",
+ "test-linux64-shippable-qr/opt-talos-other",
+ "test-macosx1014-64-qr/opt-reftest-4",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-instagram",
+ "test-windows11-64-2009/debug-jsreftest-1",
+ "test-linux64-shippable/opt-talos-realworld-webextensions",
+ "test-linux1804-64/debug-mochitest-browser-chrome-12",
+ "test-linux1804-64-asan/opt-web-platform-tests-wdspec-3",
+ "test-windows7-32-shippable/opt-raptor-speedometer-firefox",
+ "test-linux1804-64/debug-web-platform-tests-13",
+ "test-windows11-64-2009-qr/opt-reftest-2",
+ "test-windows11-64-2009-asan/opt-mochitest-devtools-chrome-7",
+ "test-linux1804-64/opt-jsreftest-1",
+ "source-test-python-featuregates-windows11-64-2009/opt-py3",
+ "test-macosx1014-64/debug-web-platform-tests-13",
+ "test-linux1804-64-asan/opt-web-platform-tests-7",
+ "webrender-macos-debug",
+ "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-16",
+ "toolchain-macosx64-clang-11",
+ "test-windows7-32/debug-mochitest-webgpu",
+ "test-windows7-32/debug-mochitest-chrome-1proc-2",
+ "test-linux1804-64-tsan/opt-mochitest-plain-19",
+ "test-linux1804-64-qr/debug-mochitest-media-1",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-apple",
+ "source-test-python-mach-linux1804-64/opt-py3",
+ "test-linux1804-64-asan/opt-mochitest-media-spi-2",
+ "test-android-em-7.0-x86_64/debug-geckoview-xpcshell-1",
+ "toolchain-win32-node-10",
+ "toolchain-win32-node-12",
+ "test-linux1804-64/debug-mochitest-plain-gpu",
+ "test-windows7-32/debug-reftest-gpu-3",
+ "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-crashtest",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-google-search-restaurants",
+ "test-windows11-64-2009/debug-web-platform-tests-crashtest",
+ "test-linux1804-64/debug-mochitest-webgl1-core",
+ "test-android-em-7.0-x86_64/opt-geckoview-mochitest-plain-3",
+ "test-windows7-32/debug-reftest-1",
+ "toolchain-win64-sccache",
+ "test-macosx1014-64/opt-mochitest-webgl2-ext-2",
+ "test-windows11-64-2009-asan/opt-mochitest-media-spi",
+ "test-macosx1014-64/opt-mochitest-chrome-1proc-1",
+ "test-macosx1014-64-shippable/opt-talos-g1",
+ "test-linux1804-64-qr/debug-crashtest",
+ "test-linux1804-64-qr/opt-mochitest-plain-gpu",
+ "test-windows11-64-2009-qr/opt-mochitest-plain-3",
+ "build-android-arm-debug",
+ "test-linux1804-64-qr/opt-web-platform-tests-8",
+ "test-linux1804-64-qr/debug-reftest-6",
+ "test-windows7-32/opt-mochitest-plain-1",
+ "test-linux1804-64-asan/opt-web-platform-tests-15",
+ "webrender-lint-tidy",
+ "test-windows11-64-2009/opt-web-platform-tests-9",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-pinterest",
+ "source-test-mozlint-localization",
+ "test-linux1804-64-asan-qr/opt-reftest-6",
+ "build-linux64-rusttests/debug",
+ "test-windows11-64-2009-asan/opt-reftest-2",
+ "test-windows7-32/opt-web-platform-tests-1",
+ "test-linux1804-64/debug-mochitest-media-3",
+ "test-windows11-64-2009-asan/opt-telemetry-tests-client",
+ "test-linux1804-64/debug-cppunit-1proc",
+ "test-linux1804-64-asan/opt-gtest-1proc",
+ "test-linux64-shippable/opt-raptor-wasm-misc-firefox",
+ "test-linux1804-64-asan/opt-reftest-2",
+ "test-macosx1014-64-shippable/opt-raptor-sunspider-firefox",
+ "test-linux1804-64/debug-mochitest-browser-chrome-14",
+ "test-vismet-android-hw-g5-7-0-arm7-arm-shippable/opt-browsertime-tp6m-geckoview-cold-booking",
+ "test-linux1804-64/debug-web-platform-tests-14",
+ "test-macosx1014-64-shippable/opt-raptor-stylebench-firefox",
+ "test-linux1804-64-qr/opt-web-platform-tests-wdspec-1",
+ "test-windows7-32/debug-reftest-2",
+ "test-windows7-32/debug-web-platform-tests-reftest-2",
+ "test-windows11-64-2009-qr/opt-mochitest-media-spi",
+ "test-macosx1014-64/debug-mochitest-plain-2",
+ "test-windows11-64-2009/debug-mochitest-browser-chrome-4",
+ "wgpu-linux64-debug",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-reddit",
+ "test-windows11-64-2009-qr/debug-mochitest-plain-5",
+ "test-windows11-64-2009/opt-mochitest-browser-chrome-2",
+ "test-windows11-64-2009-shippable-qr/opt-talos-perf-reftest-singletons",
+ "test-android-em-7.0-x86_64/debug-geckoview-junit-multi",
+ "test-windows11-64-2009-qr/debug-mochitest-plain-3",
+ "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftest-2",
+ "test-linux1804-64-asan/opt-web-platform-tests-1",
+ "test-linux1804-64-asan/opt-mochitest-webgpu",
+ "test-windows11-64-2009-qr/opt-web-platform-tests-print-reftest",
+ "test-linux1804-64-qr/debug-reftest-1",
+ "test-linux1804-64-asan/opt-mochitest-plain-6",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-imdb",
+ "test-windows11-64-2009/debug-mochitest-webgl2-ext-2",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-tumblr",
+ "test-linux1804-64-qr/debug-web-platform-tests-reftest-2",
+ "test-linux1804-64/opt-mochitest-webgl2-ext-1",
+ "test-windows7-32-shippable/opt-talos-xperf",
+ "test-windows11-64-2009-qr/debug-reftest-4",
+ "test-windows7-32/debug-web-platform-tests-reftest-4",
+ "test-windows7-32/debug-gtest-1proc",
+ "source-test-jsshell-bench-sixspeed-sm",
+ "test-linux1804-64/debug-mochitest-chrome-spi-nw-1proc-1",
+ "test-windows11-64-2009-qr/opt-mochitest-browser-chrome-7",
+ "test-linux1804-64/opt-mochitest-browser-chrome-6",
+ "test-macosx1014-64-qr/opt-crashtest",
+ "repackage-win64-aarch64-shippable/opt",
+ "test-windows7-32/opt-firefox-ui-functional-local",
+ "hazard-linux64-shell-haz/debug",
+ "test-windows7-32/debug-web-platform-tests-14",
+ "source-test-mozlint-rustfmt",
+ "test-macosx1014-64/opt-mochitest-webgl2-ext-4",
+ "build-win64-fuzzing/debug",
+ "test-linux1804-64/opt-crashtest",
+ "test-linux1804-64/debug-mochitest-browser-chrome-14",
+ "source-test-python-mach-macosx1014-64/opt-py3",
+ "test-linux1804-64-qr/debug-reftest-3",
+ "test-windows11-64-2009/opt-mochitest-webgl1-core",
+ "test-macosx1014-64-qr/debug-web-platform-tests-reftest-3",
+ "test-windows7-32/debug-xpcshell-1",
+ "test-linux1804-64/debug-mochitest-devtools-chrome-6",
+ "spidermonkey-sm-rust-bindings-linux64/debug",
+ "test-android-em-7.0-x86_64/debug-geckoview-xpcshell-4",
+ "source-test-python-reftest-harness-linux1804-64/debug",
+ "test-linux1804-64-asan-qr/opt-crashtest",
+ "test-windows11-64-2009-asan/opt-mochitest-chrome-1proc-2",
+ "build-android-aarch64-gcp/debug",
+ "test-windows7-32/debug-web-platform-tests-4",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-slides",
+ "test-linux1804-64-qr/opt-mochitest-chrome-1proc-2",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-twitch",
+ "source-test-python-raptor-macosx1014-64/opt-py2",
+ "test-windows11-64-2009/opt-mochitest-webgl2-ext-4",
+ "test-windows7-32-shippable/opt-talos-chrome",
+ "test-android-em-7.0-x86_64/opt-geckoview-xpcshell-4",
+ "test-windows7-32/debug-reftest-gpu-4",
+ "test-macosx1014-64/opt-reftest-7",
+ "test-windows11-64-2009/opt-mochitest-browser-chrome-7",
+ "build-fat-aar-android-geckoview-fat-aar-shippable/opt",
+ "test-android-em-7.0-x86_64-qr/opt-geckoview-mochitest-plain-2",
+ "test-windows7-32/opt-test-verify",
+ "test-linux1804-64/debug-marionette",
+ "test-linux1804-64-asan/opt-mochitest-media-spi-1",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-imgur",
+ "test-linux1804-64/debug-mochitest-plain-8",
+ "test-linux1804-64-qr/debug-web-platform-tests-reftest-6",
+ "test-macosx1014-64/opt-gtest-1proc",
+ "webrender-android-emulator-release",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-facebook",
+ "test-windows11-64-2009-shippable-qr/opt-talos-damp",
+ "test-macosx1014-64/opt-mochitest-media-gli-1",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-youtube",
+ "test-macosx1014-64/opt-mochitest-plain-3",
+ "source-test-python-tryselect-windows11-64-2009/opt-py3",
+ "test-linux1804-64/opt-cppunit-1proc",
+ "test-windows11-64-2009-asan/opt-mochitest-plain-2",
+ "source-test-shadow-scheduler-bugbug_disperse_low",
+ "test-windows7-32/opt-mochitest-plain-2",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-yahoo-news",
+ "test-linux1804-64/debug-mochitest-browser-chrome-12",
+ "test-linux64-shippable/opt-raptor-wasm-godot-firefox",
+ "test-windows11-64-2009-asan/opt-mochitest-webgl2-ext-4",
+ "source-test-python-telemetry-python-linux1804-64/opt-py2",
+ "test-windows7-32/opt-xpcshell-2",
+ "test-linux1804-64-qr/debug-reftest-swr-3",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-facebook",
+ "test-windows7-32/debug-mochitest-a11y-1proc",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-wikipedia",
+ "test-linux1804-64-qr/opt-jsreftest-1",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-ebay",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-linkedin",
+ "test-linux1804-64/debug-reftest-3",
+ "test-linux1804-64-shippable-qr/opt-web-platform-tests-1",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-facebook",
+ "test-windows11-64-2009-qr/debug-reftest-2",
+ "test-android-em-7.0-x86_64-qr/debug-geckoview-mochitest-media",
+ "test-windows11-64-2009-qr/opt-web-platform-tests-2",
+ "test-linux1804-64-asan-qr/opt-reftest-1",
+ "test-macosx1014-64/opt-mochitest-webgl2-ext-gli-1",
+ "test-windows11-64-2009-qr/opt-web-platform-tests-reftest-3",
+ "test-linux1804-64/opt-xpcshell-4",
+ "test-linux1804-64-qr/opt-web-platform-tests-crashtest",
+ "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-2",
+ "test-windows7-32/debug-web-platform-tests-wdspec-2",
+ "test-windows11-64-2009-qr/opt-mochitest-browser-chrome-1",
+ "source-test-mozlint-lintpref",
+ "build-android-arm-gcp/opt",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-google",
+ "test-linux1804-64-qr/debug-web-platform-tests-14",
+ "test-linux1804-64/debug-web-platform-tests-6",
+ "source-test-python-mozbuild-macosx1014-64/opt-py2",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-bing",
+ "test-windows11-64-2009/debug-web-platform-tests-12",
+ "repackage-win64/opt",
+ "toolchain-linux64-clang-11",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-instagram",
+ "test-macosx1014-64-qr/debug-crashtest",
+ "test-linux64-shippable/opt-talos-g3",
+ "test-linux1804-64/debug-mochitest-chrome-1proc-2",
+ "test-windows7-32-shippable/opt-talos-tp5o",
+ "test-linux64-shippable/opt-raptor-sunspider-firefox",
+ "test-linux1804-64/opt-mochitest-plain-3",
+ "toolchain-win64-geckodriver",
+ "test-android-em-7.0-x86_64/debug-geckoview-mochitest-plain-3",
+ "test-windows7-32/opt-browser-screenshots",
+ "test-linux1804-64/opt-web-platform-tests-5",
+ "test-linux1804-64-asan/opt-web-platform-tests-6",
+ "test-linux1804-64-qr/debug-mochitest-plain-2",
+ "test-windows11-64-2009/opt-jsreftest-1",
+ "test-linux1804-64-qr/opt-cppunit-1proc",
+ "test-macosx1014-64/opt-reftest-6",
+ "source-test-webidl-test",
+ "toolchain-win64-nasm",
+ "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftest-1",
+ "test-android-em-7.0-x86_64-qr/debug-geckoview-reftest-1",
+ "test-macosx1014-64/debug-mochitest-devtools-chrome-7",
+ "test-linux1804-64-asan/opt-mochitest-browser-chrome-3",
+ "test-linux1804-64-qr/debug-mochitest-media-2",
+ "test-windows11-64-2009-asan/opt-mochitest-webgpu",
+ "test-linux1804-64-asan/opt-web-platform-tests-wdspec-1",
+ "test-windows7-32/opt-mochitest-browser-chrome-4",
+ "test-linux1804-64-qr/opt-mochitest-media-1",
+ "source-test-jsshell-bench-sunspider-sm",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-tumblr",
+ "test-linux64-shippable-qr/opt-raptor-wasm-misc-baseline-firefox",
+ "test-linux1804-64-asan/opt-mochitest-webgl2-core",
+ "test-linux1804-64-qr/opt-mochitest-webgl2-core",
+ "test-windows11-64-2009-shippable/opt-talos-tp5o",
+ "test-linux1804-64/debug-reftest-5",
+ "test-linux1804-64-qr/opt-xpcshell-3",
+ "test-linux64-shippable-qr/opt-talos-g4-swr",
+ "test-linux1804-64-asan/opt-mochitest-devtools-chrome-7",
+ "test-linux1804-64/debug-mochitest-plain-7",
+ "test-windows11-64-2009-asan/opt-mochitest-webgl2-ext-1",
+ "test-windows11-64-2009/opt-web-platform-tests-wdspec-headless-2",
+ "source-test-python-mach-linux1804-64/opt-py2",
+ "test-windows11-64-2009-shippable/opt-raptor-motionmark-htmlsuite-firefox",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-microsoft",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-bing-search-restaurants",
+ "test-windows11-64-2009-qr/opt-mochitest-browser-chrome-6",
+ "test-windows7-32/debug-reftest-no-accel-3",
+ "test-linux1804-64-qr/debug-web-platform-tests-5",
+ "test-windows11-64-2009/opt-mochitest-browser-chrome-6",
+ "test-windows11-64-2009-asan/opt-mochitest-plain-3",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-imdb",
+ "repackage-win32/opt",
+ "test-linux1804-64/opt-mochitest-chrome-gpu",
+ "test-windows11-64-2009/opt-mochitest-plain-3",
+ "test-linux1804-64/debug-jsreftest-3",
+ "test-macosx1014-64-shippable/opt-talos-bcv",
+ "source-test-python-mozversioncontrol-py2",
+ "test-windows11-64-2009-asan/opt-mochitest-webgl2-ext-3",
+ "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-8",
+ "test-android-em-7.0-x86_64-qr/debug-geckoview-mochitest-plain-4",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-youtube",
+ "test-windows11-64-2009-shippable/opt-talos-realworld-webextensions",
+ "test-windows11-64-2009-shippable/opt-talos-other",
+ "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-4",
+ "test-windows7-32/opt-web-platform-tests-wdspec-2",
+ "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-6",
+ "test-windows11-64-2009/debug-web-platform-tests-wdspec-1",
+ "test-linux1804-64-tsan/opt-xpcshell-7",
+ "test-windows7-32/opt-mochitest-browser-chrome-1",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-wikipedia",
+ "test-linux1804-64/opt-jsreftest-2",
+ "test-linux1804-64-tsan/opt-xpcshell-8",
+ "test-android-em-7.0-x86_64-qr/debug-geckoview-mochitest-plain-gpu",
+ "test-macosx1014-64/opt-reftest-4",
+ "test-linux1804-64/opt-web-platform-tests-8",
+ "spidermonkey-sm-compacting-linux64/debug",
+ "test-windows7-32/debug-web-platform-tests-reftest-5",
+ "test-macosx1014-64-qr/debug-reftest-1",
+ "test-linux1804-64-qr/debug-mochitest-plain-9",
+ "test-macosx1014-64/opt-reftest-3",
+ "test-linux1804-64-tsan/opt-mochitest-plain-3",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-motionmark-animometer-firefox",
+ "test-windows11-64-2009-shippable/opt-raptor-tp6-firefox-cold-tumblr",
+ "test-macosx1014-64-ccov/opt-mochitest-webgl1-core-gli",
+ "test-linux1804-64-qr/opt-reftest-2",
+ "test-windows11-64-2009-qr/debug-mochitest-chrome-gpu",
+ "test-linux1804-64-qr/debug-reftest-7",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-slides",
+ "test-linux1804-64-qr/debug-reftest-8",
+ "test-linux1804-64/debug-mochitest-browser-chrome-7",
+ "test-linux1804-64-asan/opt-web-platform-tests-10",
+ "test-linux1804-64/debug-mochitest-browser-chrome-11",
+ "test-linux1804-64-asan/opt-web-platform-tests-2",
+ "test-linux1804-64-qr/opt-web-platform-tests-reftest-4",
+ "test-linux1804-64-shippable-qr/opt-awsy-base",
+ "test-android-em-7.0-x86_64/opt-geckoview-mochitest-plain-1",
+ "test-linux1804-64/debug-mochitest-devtools-chrome-spi-nw-9",
+ "test-windows7-32/opt-reftest-no-accel-3",
+ "test-linux1804-64-qr/opt-mochitest-plain-3",
+ "test-windows11-64-2009/debug-crashtest",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-reddit",
+ "test-macosx1014-64/debug-mochitest-webgl2-ext-gli-4",
+ "test-windows7-32/debug-firefox-ui-functional-remote",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-ebay",
+ "test-linux64-shippable-qr/opt-talos-g4",
+ "test-windows11-64-2009/debug-web-platform-tests-reftest-1",
+ "test-linux1804-64-qr/debug-mochitest-media-1",
+ "test-windows11-64-2009-asan/opt-mochitest-browser-chrome-4",
+ "build-linux64-fuzzing/debug",
+ "test-linux1804-64-qr/debug-reftest-5",
+ "test-macosx1014-64/opt-web-platform-tests-6",
+ "test-macosx1014-64/opt-mochitest-devtools-chrome-5",
+ "test-windows11-64-2009/debug-mochitest-browser-chrome-6",
+ "test-windows11-64-2009-asan/opt-firefox-ui-functional-local",
+ "test-macosx1014-64/debug-mochitest-plain-4",
+ "test-windows11-64-2009-asan/opt-mochitest-devtools-chrome-4",
+ "test-linux1804-64/debug-mochitest-media-spi-2",
+ "test-linux1804-64-qr/debug-mochitest-plain-3",
+ "test-macosx1014-64/debug-mochitest-media-gli-1",
+ "test-linux1804-64-asan/opt-mochitest-plain-8",
+ "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-5",
+ "test-macosx1014-64/debug-mochitest-browser-chrome-4",
+ "test-windows7-32/debug-web-platform-tests-10",
+ "test-linux1804-64-tsan/opt-mochitest-plain-13",
+ "test-windows11-64-2009-qr/debug-reftest-1",
+ "test-linux1804-64-asan/opt-web-platform-tests-11",
+ "source-test-shadow-scheduler-bugbug_disperse_high",
+ "test-linux1804-64-qr/debug-reftest-4",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-paypal",
+ "test-linux1804-64/debug-xpcshell-3",
+ "test-macosx1014-64/debug-mochitest-webgl2-core-gli",
+ "source-test-python-mozterm-linux1804-64/opt-py3",
+ "test-linux64-shippable/opt-raptor-stylebench-firefox",
+ "test-macosx1014-64-shippable/opt-talos-g4",
+ "source-test-python-mochitest-harness-linux1804-64-asan/opt",
+ "test-linux1804-64-qr/opt-web-platform-tests-5",
+ "test-linux1804-64/debug-mochitest-webgpu",
+ "test-macosx1014-64/debug-mochitest-browser-chrome-10",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-sheets",
+ "test-macosx1014-64-qr/opt-reftest-8",
+ "test-linux1804-64-asan/opt-web-platform-tests-17",
+ "test-macosx1014-64-shippable/opt-talos-dromaeojs",
+ "diff-artifact-win64-aarch64-eme-validation",
+ "test-windows7-32-shippable/opt-raptor-tp6-firefox-cold-slides",
+ "test-windows11-64-2009-asan/opt-jsreftest-1",
+ "test-linux1804-64-qr/opt-mochitest-a11y-1proc",
+ "test-windows7-32/debug-web-platform-tests-9",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-ebay-kleinanzeigen-search",
+ "test-windows11-64-2009-shippable-qr/opt-talos-g5",
+ "test-windows11-64-2009/debug-reftest-4",
+ "test-macosx1014-64/debug-web-platform-tests-7",
+ "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-9",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-tumblr",
+ "test-linux1804-64/debug-mochitest-devtools-chrome-5",
+ "test-linux1804-64-asan/opt-mochitest-plain-5",
+ "test-linux1804-64-qr/debug-reftest-5",
+ "test-linux64-shippable-qr/opt-raptor-assorted-dom-firefox",
+ "test-macosx1014-64-qr/opt-web-platform-tests-reftest-2",
+ "test-macosx1014-64/debug-web-platform-tests-3",
+ "test-linux1804-64-tsan/opt-mochitest-plain-4",
+ "source-test-python-tryselect-linux1804-64/opt-py3",
+ "test-macosx1014-64/debug-web-platform-tests-reftest-5",
+ "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-3",
+ "test-linux1804-64-asan/opt-web-platform-tests-3",
+ "test-linux1804-64-qr/opt-web-platform-tests-1",
+ "test-linux1804-64-qr/debug-web-platform-tests-15",
+ "test-linux64-shippable-qr/opt-raptor-webaudio-firefox",
+ "test-windows11-64-2009-shippable-qr/opt-web-platform-tests-1",
+ "test-windows11-64-2009-asan/opt-mochitest-devtools-chrome-8",
+ "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-9",
+ "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-7",
+ "toolchain-linux64-lucetc",
+ "test-linux64-shippable/opt-raptor-tp6-firefox-cold-pinterest",
+ "test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-3",
+ "test-windows11-64-2009/opt-web-platform-tests-6",
+ "test-linux64-shippable-qr/opt-talos-g1",
+ "build-signing-win64/debug",
+ "source-test-python-condprof-linux1804-64/opt-py2",
+ "test-linux1804-64-tsan/opt-mochitest-plain-17",
+ "spidermonkey-sm-plain-linux64/debug",
+ "test-linux1804-64-qr/debug-mochitest-plain-11",
+ "test-linux1804-64-asan/opt-mochitest-browser-chrome-15",
+ "test-windows7-32/opt-mochitest-browser-chrome-3",
+ "test-linux1804-64-asan/opt-reftest-no-accel-7",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-yahoo-news",
+ "test-linux1804-64-asan/opt-telemetry-tests-client",
+ "test-macosx1014-64/opt-mochitest-plain-1",
+ "webrender-android-hw-p2-debug",
+ "test-android-em-7.0-x86_64/opt-geckoview-gtest-1proc",
+ "test-linux1804-64/opt-mochitest-plain-1",
+ "test-windows11-64-2009/debug-mochitest-devtools-chrome-2",
+ "test-linux64-shippable/opt-raptor-wasm-godot-ion-firefox",
+ "test-macosx1014-64-shippable/opt-raptor-tp6-firefox-cold-bing",
+ "build-android-x86_64/opt",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-paypal",
+ "test-linux1804-64/opt-mochitest-webgpu",
+ "test-macosx1014-64/debug-web-platform-tests-15",
+ "test-windows7-32/opt-mochitest-media-spi-2",
+ "test-linux1804-64-asan/opt-web-platform-tests-reftest-3",
+ "source-test-python-mozterm-windows11-64-2009/opt-py2",
+ "test-macosx1014-64/debug-cppunit-1proc",
+ "test-windows7-32-shippable/opt-raptor-sunspider-firefox",
+ "source-test-mozlint-yaml",
+ "test-macosx1014-64/debug-mochitest-webgl2-ext-gli-3",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-youtube-watch",
+ "test-linux1804-64-asan/opt-jsreftest-1",
+ "test-windows11-64-2009/opt-xpcshell-1",
+ "test-windows7-32/debug-web-platform-tests-1",
+ "test-linux1804-64/debug-mochitest-devtools-chrome-1",
+ "test-linux64-shippable/opt-talos-chrome",
+ "test-linux1804-64-qr/debug-web-platform-tests-reftest-6",
+ "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-1",
+ "test-linux1804-64-qr/debug-web-platform-tests-print-reftest",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-amazon-search",
+ "test-windows7-32/debug-web-platform-tests-2",
+ "test-macosx1014-64-qr/opt-reftest-5",
+ "test-windows11-64-2009/opt-cppunit-1proc",
+ "test-linux1804-64/debug-mochitest-chrome-gpu-spi-nw",
+ "toolchain-linux64-nasm-2.14.02",
+ "toolchain-win32-geckodriver",
+ "test-linux64-shippable-qr/opt-raptor-speedometer-firefox",
+ "test-linux1804-64-shippable-qr/opt-web-platform-tests-5",
+ "test-android-em-7.0-x86_64-qr/opt-geckoview-mochitest-plain-3",
+ "webrender-android-hw-p2-opt",
+ "test-linux1804-64-tsan/opt-mochitest-plain-15",
+ "build-linux64-base-toolchains-clang/debug",
+ "repackage-signing-win64-aarch64-shippable/opt",
+ "test-linux64-shippable-qr/opt-raptor-tp6-firefox-cold-wikipedia",
+ "test-linux1804-64-qr/debug-web-platform-tests-1",
+ "test-linux1804-64-asan/opt-mochitest-browser-chrome-5",
+ "test-linux1804-64-qr/opt-mochitest-webgpu",
+ "test-linux1804-64-qr/debug-mochitest-plain-gpu",
+ "test-linux1804-64-asan/opt-reftest-no-accel-1",
+ "test-vismet-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-ebay-kleinanzeigen",
+ "test-windows11-64-2009-shippable/opt-awsy",
+ "test-windows7-32/debug-mochitest-browser-chrome-1",
+ "test-windows7-32/opt-reftest-no-accel-2",
+ "test-windows11-64-2009/opt-web-platform-tests-wdspec-headless-1",
+ "test-linux1804-64/debug-mochitest-browser-chrome-5",
+ "test-linux1804-64-asan/opt-reftest-1",
+ "test-windows11-64-2009-asan/opt-mochitest-webgl1-core",
+ "test-linux1804-64/opt-xpcshell-5",
+ "test-linux1804-64/debug-mochitest-devtools-chrome-spi-nw-5",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-speedometer-firefox",
+ "test-windows11-64-2009-qr/opt-web-platform-tests-8",
+ "test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-3",
+ "test-macosx1014-64/opt-mochitest-plain-gpu",
+ "test-windows11-64-2009/debug-mochitest-webgl2-ext-4",
+ "test-macosx1014-64/debug-web-platform-tests-crashtest",
+ "test-linux1804-64-asan/opt-xpcshell-1",
+ "test-linux1804-64-qr/debug-cppunit-1proc",
+ "source-test-python-reftest-harness-linux1804-64-asan/opt",
+ "test-linux1804-64/debug-mochitest-browser-chrome-6",
+ "test-linux1804-64-asan/opt-mochitest-browser-chrome-10",
+ "test-android-hw-g5-7-0-arm7-shippable/opt-browsertime-tp6m-geckoview-cold-bbc",
+ "build-android-x86_64-gcp/opt",
+ "test-windows7-32/debug-web-platform-tests-wdspec-3",
+ "toolchain-macosx64-clang-tidy",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-wikipedia",
+ "test-windows7-32/opt-web-platform-tests-3",
+ "test-linux1804-64/debug-mochitest-remote-spi-nw",
+ "toolchain-macosx64-sccache",
+ "test-windows7-32/debug-firefox-ui-functional-local",
+ "test-linux1804-64-asan/opt-web-platform-tests-print-reftest",
+ "test-linux1804-64-asan/opt-mochitest-browser-chrome-4",
+ "test-windows7-32/debug-mochitest-media-spi-3",
+ "test-linux1804-64-qr/debug-web-platform-tests-wdspec-3",
+ "test-macosx1014-64/debug-mochitest-remote",
+ "test-windows7-32/opt-web-platform-tests-wdspec-1",
+ "test-windows11-64-2009-shippable-qr/opt-raptor-tp6-firefox-cold-imgur",
+ "test-windows11-64-2009-qr/debug-mochitest-browser-chrome-2",
+ "l10n-win32-shippable/opt",
+ "test-linux1804-64/opt-mochitest-chrome-1proc-1",
+ "test-linux1804-64/debug-mochitest-browser-chrome-spi-nw-5",
+ "build-win64-aarch64-shippable-no-eme/opt",
+ "test-linux1804-64-qr/opt-mochitest-chrome-1proc-1",
+ "test-windows7-32/opt-telemetry-tests-client",
+ "test-linux64-shippable-qr/opt-talos-bcv-swr",
+ "test-linux1804-64-qr/opt-xpcshell-5",
+ "test-windows11-64-2009/opt-mochitest-webgl2-ext-2",
+ "test-linux1804-64/debug-xpcshell-6",
+ "test-linux1804-64-asan/opt-mochitest-webgl2-ext-3",
+ "test-windows11-64-2009/opt-jsreftest-2",
+ "test-linux1804-64-qr/opt-mochitest-plain-4",
+ "source-test-python-mach-windows11-64-2009/opt-py2",
+ "test-macosx1014-64/debug-reftest-2",
+ "test-windows7-32-shippable/opt-talos-dromaeojs",
+ "build-android-aarch64/debug",
+ "test-macosx1014-64/opt-mochitest-webgl2-ext-gli-3",
+ "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-9",
+ "test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-gli-1",
+ "test-linux1804-64-qr/opt-jsreftest-3",
+ "test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-8",
+ "test-linux1804-64-qr/opt-web-platform-tests-6",
+ "test-macosx1014-64/debug-xpcshell-2",
+ "test-windows11-64-2009/opt-mochitest-browser-chrome-1"
+ ],
+ "reduced_tasks": {
+ "build-linux64/opt": 0.86,
+ "build-win64/opt": 0.85,
+ "test-linux1804-64-qr/debug-reftest-swr-1": 0.83,
+ "test-linux1804-64-qr/debug-reftest-swr-8": 0.82,
+ "test-linux1804-64-qr/opt-xpcshell-2": 0.81,
+ "test-linux1804-64-qr/opt-xpcshell-3": 0.82,
+ "test-linux1804-64-tsan/opt-xpcshell-7": 0.81,
+ "test-linux1804-64/opt-xpcshell-3": 0.82,
+ "test-windows11-64-2009-asan/opt-mochitest-browser-chrome-9": 0.83,
+ "test-windows7-32/debug-reftest-no-accel-2": 0.8,
+ "test-windows7-32/debug-reftest-no-accel-4": 0.85
+ },
+ "reduced_tasks_higher": {},
+ "tasks": {
+ "build-android-aarch64/debug": 0.54,
+ "build-android-arm/debug": 0.6,
+ "build-android-x86-fuzzing/debug": 0.64,
+ "build-android-x86_64-asan-fuzzing/opt": 0.65,
+ "build-linux64-aarch64/opt": 0.66,
+ "build-linux64-asan-fuzzing/opt": 0.68,
+ "build-linux64-fuzzing/debug": 0.55,
+ "build-linux64-plain/debug": 0.55,
+ "build-linux64-rusttests/debug": 0.56,
+ "build-linux64-tsan/opt": 0.78,
+ "build-linux64/opt": 0.86,
+ "build-macosx64-asan-fuzzing/opt": 0.56,
+ "build-macosx64-fuzzing/debug": 0.52,
+ "build-macosx64/opt": 0.74,
+ "build-win32/opt": 0.66,
+ "build-win64-aarch64/opt": 0.67,
+ "build-win64-asan-fuzzing/opt": 0.64,
+ "build-win64-asan/opt": 0.61,
+ "build-win64/opt": 0.85,
+ "test-android-em-7.0-x86_64-qr/opt-geckoview-reftest-1": 0.51,
+ "test-android-em-7.0-x86_64/debug-geckoview-junit": 0.7,
+ "test-android-em-7.0-x86_64/debug-geckoview-junit-multi": 0.51,
+ "test-android-em-7.0-x86_64/debug-geckoview-reftest-1": 0.51,
+ "test-android-em-7.0-x86_64/debug-geckoview-xpcshell-3": 0.52,
+ "test-android-em-7.0-x86_64/opt-geckoview-junit-multi": 0.53,
+ "test-android-em-7.0-x86_64/opt-geckoview-xpcshell-1": 0.58,
+ "test-android-em-7.0-x86_64/opt-geckoview-xpcshell-3": 0.59,
+ "test-android-em-7.0-x86_64/opt-geckoview-xpcshell-4": 0.67,
+ "test-linux1804-64-asan-qr/opt-reftest-1": 0.67,
+ "test-linux1804-64-asan-qr/opt-reftest-2": 0.53,
+ "test-linux1804-64-asan-qr/opt-reftest-3": 0.68,
+ "test-linux1804-64-asan-qr/opt-reftest-5": 0.59,
+ "test-linux1804-64-asan-qr/opt-reftest-6": 0.61,
+ "test-linux1804-64-asan-qr/opt-reftest-7": 0.64,
+ "test-linux1804-64-asan/opt-marionette": 0.68,
+ "test-linux1804-64-asan/opt-mochitest-browser-chrome-10": 0.61,
+ "test-linux1804-64-asan/opt-mochitest-browser-chrome-16": 0.69,
+ "test-linux1804-64-asan/opt-mochitest-chrome-1proc-3": 0.71,
+ "test-linux1804-64-asan/opt-mochitest-devtools-chrome-1": 0.57,
+ "test-linux1804-64-asan/opt-mochitest-media-3": 0.52,
+ "test-linux1804-64-asan/opt-mochitest-plain-3": 0.5,
+ "test-linux1804-64-asan/opt-mochitest-plain-5": 0.55,
+ "test-linux1804-64-asan/opt-mochitest-plain-6": 0.5,
+ "test-linux1804-64-asan/opt-mochitest-plain-8": 0.6,
+ "test-linux1804-64-asan/opt-reftest-1": 0.67,
+ "test-linux1804-64-asan/opt-reftest-2": 0.67,
+ "test-linux1804-64-asan/opt-reftest-3": 0.68,
+ "test-linux1804-64-asan/opt-reftest-4": 0.61,
+ "test-linux1804-64-asan/opt-reftest-5": 0.66,
+ "test-linux1804-64-asan/opt-reftest-6": 0.64,
+ "test-linux1804-64-asan/opt-reftest-7": 0.64,
+ "test-linux1804-64-asan/opt-reftest-no-accel-1": 0.76,
+ "test-linux1804-64-asan/opt-reftest-no-accel-2": 0.76,
+ "test-linux1804-64-asan/opt-reftest-no-accel-3": 0.77,
+ "test-linux1804-64-asan/opt-reftest-no-accel-4": 0.7,
+ "test-linux1804-64-asan/opt-reftest-no-accel-5": 0.58,
+ "test-linux1804-64-asan/opt-reftest-no-accel-6": 0.76,
+ "test-linux1804-64-asan/opt-reftest-no-accel-7": 0.76,
+ "test-linux1804-64-asan/opt-reftest-no-accel-8": 0.54,
+ "test-linux1804-64-asan/opt-web-platform-tests-17": 0.55,
+ "test-linux1804-64-asan/opt-web-platform-tests-19": 0.58,
+ "test-linux1804-64-asan/opt-web-platform-tests-20": 0.51,
+ "test-linux1804-64-asan/opt-web-platform-tests-21": 0.54,
+ "test-linux1804-64-asan/opt-xpcshell-2": 0.61,
+ "test-linux1804-64-asan/opt-xpcshell-3": 0.58,
+ "test-linux1804-64-qr/debug-gtest-1proc": 0.55,
+ "test-linux1804-64-qr/debug-mochitest-media-3": 0.5,
+ "test-linux1804-64-qr/debug-mochitest-plain-11": 0.55,
+ "test-linux1804-64-qr/debug-mochitest-plain-13": 0.51,
+ "test-linux1804-64-qr/debug-mochitest-plain-15": 0.54,
+ "test-linux1804-64-qr/debug-mochitest-plain-16": 0.57,
+ "test-linux1804-64-qr/debug-mochitest-plain-15": 0.55,
+ "test-linux1804-64-qr/debug-reftest-1": 0.67,
+ "test-linux1804-64-qr/debug-reftest-2": 0.61,
+ "test-linux1804-64-qr/debug-reftest-5": 0.59,
+ "test-linux1804-64-qr/debug-reftest-6": 0.62,
+ "test-linux1804-64-qr/debug-reftest-7": 0.62,
+ "test-linux1804-64-qr/debug-reftest-8": 0.57,
+ "test-linux1804-64-qr/debug-reftest-7": 0.5,
+ "test-linux1804-64-qr/debug-reftest-swr-1": 0.83,
+ "test-linux1804-64-qr/debug-reftest-swr-2": 0.73,
+ "test-linux1804-64-qr/debug-reftest-swr-3": 0.73,
+ "test-linux1804-64-qr/debug-reftest-swr-4": 0.82,
+ "test-linux1804-64-qr/debug-reftest-swr-5": 0.79,
+ "test-linux1804-64-qr/debug-reftest-swr-6": 0.8,
+ "test-linux1804-64-qr/debug-reftest-swr-7": 0.82,
+ "test-linux1804-64-qr/debug-reftest-swr-8": 0.82,
+ "test-linux1804-64-qr/debug-web-platform-tests-3": 0.62,
+ "test-linux1804-64-qr/debug-web-platform-tests-reftest-4": 0.55,
+ "test-linux1804-64-qr/debug-web-platform-tests-reftest-5": 0.55,
+ "test-linux1804-64-qr/debug-web-platform-tests-reftest-6": 0.52,
+ "test-linux1804-64-qr/debug-web-platform-tests-wdspec-1": 0.54,
+ "test-linux1804-64-qr/debug-xpcshell-3": 0.6,
+ "test-linux1804-64-qr/debug-xpcshell-6": 0.64,
+ "test-linux1804-64-qr/opt-gtest-1proc": 0.63,
+ "test-linux1804-64-qr/opt-mochitest-chrome-1proc-1": 0.52,
+ "test-linux1804-64-qr/opt-mochitest-chrome-1proc-2": 0.56,
+ "test-linux1804-64-qr/opt-mochitest-chrome-1proc-3": 0.56,
+ "test-linux1804-64-qr/opt-reftest-4": 0.53,
+ "test-linux1804-64-qr/opt-xpcshell-1": 0.7,
+ "test-linux1804-64-qr/opt-xpcshell-2": 0.81,
+ "test-linux1804-64-qr/opt-xpcshell-3": 0.82,
+ "test-linux1804-64-tsan/opt-mochitest-plain-10": 0.54,
+ "test-linux1804-64-tsan/opt-mochitest-plain-13": 0.57,
+ "test-linux1804-64-tsan/opt-mochitest-plain-16": 0.5,
+ "test-linux1804-64-tsan/opt-mochitest-plain-17": 0.62,
+ "test-linux1804-64-tsan/opt-mochitest-plain-18": 0.6,
+ "test-linux1804-64-tsan/opt-mochitest-plain-19": 0.63,
+ "test-linux1804-64-tsan/opt-mochitest-plain-20": 0.68,
+ "test-linux1804-64-tsan/opt-mochitest-plain-4": 0.58,
+ "test-linux1804-64-tsan/opt-mochitest-plain-5": 0.57,
+ "test-linux1804-64-tsan/opt-mochitest-plain-6": 0.58,
+ "test-linux1804-64-tsan/opt-mochitest-plain-7": 0.65,
+ "test-linux1804-64-tsan/opt-mochitest-plain-9": 0.5,
+ "test-linux1804-64-tsan/opt-xpcshell-1": 0.5,
+ "test-linux1804-64-tsan/opt-xpcshell-2": 0.71,
+ "test-linux1804-64-tsan/opt-xpcshell-3": 0.73,
+ "test-linux1804-64-tsan/opt-xpcshell-4": 0.57,
+ "test-linux1804-64-tsan/opt-xpcshell-5": 0.73,
+ "test-linux1804-64-tsan/opt-xpcshell-6": 0.69,
+ "test-linux1804-64-tsan/opt-xpcshell-7": 0.81,
+ "test-linux1804-64-tsan/opt-xpcshell-8": 0.72,
+ "test-linux1804-64/debug-gtest-1proc": 0.55,
+ "test-linux1804-64/debug-marionette": 0.65,
+ "test-linux1804-64/debug-mochitest-browser-chrome-16": 0.63,
+ "test-linux1804-64/debug-mochitest-devtools-chrome-5": 0.54,
+ "test-linux1804-64/debug-mochitest-media-3": 0.56,
+ "test-linux1804-64/debug-mochitest-plain-12": 0.55,
+ "test-linux1804-64/debug-mochitest-plain-13": 0.53,
+ "test-linux1804-64/debug-mochitest-plain-14": 0.55,
+ "test-linux1804-64/debug-mochitest-plain-15": 0.55,
+ "test-linux1804-64/debug-mochitest-plain-16": 0.54,
+ "test-linux1804-64/debug-reftest-1": 0.61,
+ "test-linux1804-64/debug-reftest-2": 0.61,
+ "test-linux1804-64/debug-reftest-5": 0.6,
+ "test-linux1804-64/debug-reftest-6": 0.62,
+ "test-linux1804-64/debug-reftest-7": 0.64,
+ "test-linux1804-64/debug-reftest-no-accel-1": 0.68,
+ "test-linux1804-64/debug-reftest-no-accel-2": 0.57,
+ "test-linux1804-64/debug-reftest-no-accel-3": 0.52,
+ "test-linux1804-64/debug-reftest-no-accel-4": 0.65,
+ "test-linux1804-64/debug-reftest-no-accel-7": 0.54,
+ "test-linux1804-64/debug-xpcshell-3": 0.68,
+ "test-linux1804-64/debug-xpcshell-6": 0.67,
+ "test-linux1804-64/debug-xpcshell-spi-nw-3": 0.51,
+ "test-linux1804-64/debug-xpcshell-spi-nw-5": 0.59,
+ "test-linux1804-64/debug-xpcshell-spi-nw-6": 0.57,
+ "test-linux1804-64/opt-browser-screenshots": 0.65,
+ "test-linux1804-64/opt-gtest-1proc": 0.63,
+ "test-linux1804-64/opt-marionette": 0.67,
+ "test-linux1804-64/opt-marionette-headless": 0.68,
+ "test-linux1804-64/opt-mochitest-chrome-1proc-2": 0.6,
+ "test-linux1804-64/opt-mochitest-plain-5": 0.55,
+ "test-linux1804-64/opt-xpcshell-1": 0.66,
+ "test-linux1804-64/opt-xpcshell-2": 0.73,
+ "test-linux1804-64/opt-xpcshell-3": 0.82,
+ "test-macosx1014-64-qr/debug-crashtest": 0.55,
+ "test-macosx1014-64-qr/debug-reftest-2": 0.5,
+ "test-macosx1014-64-qr/debug-reftest-4": 0.52,
+ "test-macosx1014-64-qr/debug-reftest-5": 0.55,
+ "test-macosx1014-64-qr/opt-crashtest": 0.59,
+ "test-macosx1014-64-qr/opt-reftest-3": 0.58,
+ "test-macosx1014-64/debug-marionette": 0.72,
+ "test-macosx1014-64/debug-mochitest-browser-chrome-16": 0.62,
+ "test-macosx1014-64/debug-mochitest-remote": 0.5,
+ "test-macosx1014-64/debug-web-platform-tests-15": 0.52,
+ "test-macosx1014-64/opt-crashtest": 0.53,
+ "test-macosx1014-64/opt-marionette": 0.6,
+ "test-macosx1014-64/opt-mochitest-browser-chrome-7": 0.7,
+ "test-macosx1014-64/opt-mochitest-chrome-1proc-2": 0.51,
+ "test-macosx1014-64/opt-mochitest-devtools-chrome-2": 0.51,
+ "test-macosx1014-64/opt-mochitest-plain-4": 0.57,
+ "test-macosx1014-64/opt-reftest-2": 0.63,
+ "test-macosx1014-64/opt-web-platform-tests-5": 0.5,
+ "test-windows11-64-2009-asan/opt-marionette": 0.64,
+ "test-windows11-64-2009-asan/opt-mochitest-browser-chrome-9": 0.83,
+ "test-windows11-64-2009-asan/opt-mochitest-chrome-1proc-2": 0.59,
+ "test-windows11-64-2009-asan/opt-mochitest-chrome-1proc-3": 0.62,
+ "test-windows11-64-2009-asan/opt-mochitest-devtools-chrome-1": 0.54,
+ "test-windows11-64-2009-asan/opt-mochitest-devtools-chrome-2": 0.6,
+ "test-windows11-64-2009-asan/opt-mochitest-devtools-chrome-4": 0.57,
+ "test-windows11-64-2009-asan/opt-mochitest-devtools-chrome-7": 0.59,
+ "test-windows11-64-2009-asan/opt-reftest-1": 0.68,
+ "test-windows11-64-2009-asan/opt-reftest-2": 0.65,
+ "test-windows11-64-2009-asan/opt-reftest-3": 0.72,
+ "test-windows11-64-2009-qr/debug-crashtest": 0.5,
+ "test-windows11-64-2009-qr/debug-mochitest-media": 0.57,
+ "test-windows11-64-2009-qr/debug-mochitest-media-spi": 0.51,
+ "test-windows11-64-2009-qr/debug-mochitest-webgl1-core": 0.7,
+ "test-windows11-64-2009-qr/debug-reftest-1": 0.5,
+ "test-windows11-64-2009-qr/debug-reftest-2": 0.52,
+ "test-windows11-64-2009-qr/debug-reftest-3": 0.57,
+ "test-windows11-64-2009-qr/opt-crashtest": 0.62,
+ "test-windows11-64-2009-qr/opt-mochitest-browser-chrome-7": 0.7,
+ "test-windows11-64-2009/debug-gtest-1proc": 0.62,
+ "test-windows11-64-2009/debug-mochitest-a11y-1proc": 0.59,
+ "test-windows11-64-2009/debug-mochitest-media": 0.53,
+ "test-windows11-64-2009/debug-mochitest-webgl1-core": 0.67,
+ "test-windows11-64-2009/debug-reftest-2": 0.54,
+ "test-windows11-64-2009/debug-reftest-4": 0.67,
+ "test-windows11-64-2009/debug-web-platform-tests-11": 0.52,
+ "test-windows11-64-2009/debug-web-platform-tests-14": 0.53,
+ "test-windows11-64-2009/opt-browser-screenshots": 0.66,
+ "test-windows11-64-2009/opt-crashtest": 0.53,
+ "test-windows11-64-2009/opt-marionette": 0.75,
+ "test-windows11-64-2009/opt-mochitest-browser-chrome-7": 0.71,
+ "test-windows11-64-2009/opt-mochitest-chrome-1proc-2": 0.62,
+ "test-windows11-64-2009/opt-mochitest-devtools-chrome-2": 0.63,
+ "test-windows11-64-2009/opt-mochitest-devtools-chrome-4": 0.51,
+ "test-windows11-64-2009/opt-reftest-1": 0.53,
+ "test-windows11-64-2009/opt-reftest-2": 0.68,
+ "test-windows11-64-2009/opt-web-platform-tests-4": 0.59,
+ "test-windows11-64-2009/opt-web-platform-tests-9": 0.54,
+ "test-windows7-32/debug-marionette": 0.72,
+ "test-windows7-32/debug-mochitest-a11y-1proc": 0.58,
+ "test-windows7-32/debug-mochitest-media-1": 0.56,
+ "test-windows7-32/debug-mochitest-media-2": 0.5,
+ "test-windows7-32/debug-mochitest-media-3": 0.52,
+ "test-windows7-32/debug-mochitest-media-spi-1": 0.55,
+ "test-windows7-32/debug-mochitest-media-spi-2": 0.51,
+ "test-windows7-32/debug-mochitest-webgl1-core": 0.71,
+ "test-windows7-32/debug-reftest-2": 0.62,
+ "test-windows7-32/debug-reftest-3": 0.51,
+ "test-windows7-32/debug-reftest-4": 0.59,
+ "test-windows7-32/debug-reftest-gpu-2": 0.62,
+ "test-windows7-32/debug-reftest-gpu-4": 0.69,
+ "test-windows7-32/debug-reftest-no-accel-1": 0.76,
+ "test-windows7-32/debug-reftest-no-accel-2": 0.8,
+ "test-windows7-32/debug-reftest-no-accel-4": 0.85,
+ "test-windows7-32/debug-web-platform-tests-12": 0.58,
+ "test-windows7-32/debug-web-platform-tests-14": 0.55,
+ "test-windows7-32/debug-web-platform-tests-4": 0.54,
+ "test-windows7-32/opt-browser-screenshots": 0.66,
+ "test-windows7-32/opt-crashtest": 0.54,
+ "test-windows7-32/opt-gtest-1proc": 0.51,
+ "test-windows7-32/opt-marionette": 0.74,
+ "test-windows7-32/opt-mochitest-chrome-1proc-2": 0.52,
+ "test-windows7-32/opt-mochitest-devtools-chrome-4": 0.55,
+ "test-windows7-32/opt-reftest-1": 0.75,
+ "test-windows7-32/opt-reftest-gpu-1": 0.64,
+ "test-windows7-32/opt-reftest-no-accel-1": 0.74,
+ "test-windows7-32/opt-reftest-no-accel-3": 0.77,
+ "test-windows7-32/opt-web-platform-tests-10": 0.54,
+ "test-windows7-32/opt-web-platform-tests-9": 0.59
+ }
+}
diff --git a/taskcluster/test/data/pushes.json b/taskcluster/test/data/pushes.json
new file mode 100644
index 0000000000..093e8e0b5f
--- /dev/null
+++ b/taskcluster/test/data/pushes.json
@@ -0,0 +1 @@
+{ "1": { "date": 1593029535 } }
diff --git a/taskcluster/test/params/autoland-onpush.yml b/taskcluster/test/params/autoland-onpush.yml
new file mode 100644
index 0000000000..b11ba003dd
--- /dev/null
+++ b/taskcluster/test/params/autoland-onpush.yml
@@ -0,0 +1,44 @@
+---
+app_version: 87.0a1
+backstop: false
+base_repository: https://hg.mozilla.org/mozilla-unified
+build_date: 1612296233
+build_number: 1
+do_not_optimize: []
+existing_tasks: {}
+filters:
+ - target_tasks_method
+head_ref: cee95ac4c0a6dfe53a4a85ecfd854e449561b4a9
+head_repository: https://hg.mozilla.org/integration/autoland
+head_rev: cee95ac4c0a6dfe53a4a85ecfd854e449561b4a9
+hg_branch: default
+level: "3"
+message: ""
+moz_build_date: "20210202200353"
+next_version: null
+optimize_strategies: gecko_taskgraph.optimize:project.autoland
+optimize_target_tasks: true
+owner: cbrindusan@mozilla.com
+phabricator_diff: null
+project: autoland
+pushdate: 1612296233
+pushlog_id: "135570"
+release_enable_emefree: false
+release_enable_partner_attribution: false
+release_enable_partner_repack: false
+release_eta: ""
+release_history: {}
+release_partner_build_number: 1
+release_partner_config: {}
+release_partners: []
+release_product: null
+release_type: ""
+required_signoffs: []
+signoff_urls: {}
+target_tasks_method: autoland_tasks
+tasks_for: hg-push
+test_manifest_loader: bugbug
+try_mode: null
+try_options: null
+try_task_config: {}
+version: 87.0a1
diff --git a/taskcluster/test/params/mb-onpush.yml b/taskcluster/test/params/mb-onpush.yml
new file mode 100644
index 0000000000..74ab02bf39
--- /dev/null
+++ b/taskcluster/test/params/mb-onpush.yml
@@ -0,0 +1,43 @@
+---
+base_repository: https://hg.mozilla.org/mozilla-central
+build_date: 1509164545
+build_number: 1
+app_version: 60.0a1
+version: 60.0a1
+next_version: null
+filters:
+ - target_tasks_method
+head_ref: 196059cada7070ab1e35db83a22b60389bd0c794
+head_repository: https://hg.mozilla.org/releases/mozilla-beta
+head_rev: 196059cada7070ab1e35db83a22b60389bd0c794
+hg_branch: default
+level: "3"
+message: " "
+# morph_templates: {}
+moz_build_date: "20171028042225"
+optimize_target_tasks: false
+owner: xquan@mozilla.com
+project: mozilla-beta
+pushdate: 1509164545
+pushlog_id: "8069"
+release_eta: ""
+release_history: {}
+release_enable_partners: false
+release_partners: []
+release_partner_build_number: 1
+release_partner_config: null
+release_enable_emefree: false
+# target_task_labels: []
+target_tasks_method: mozilla_beta_tasks
+do_not_optimize: []
+try_mode: null
+try_task_config: {}
+existing_tasks: {}
+try_options:
+release_type: "beta"
+release_product: null
+required_signoffs: []
+signoff_urls: {}
+phabricator_diff:
+tasks_for: hg-push
+test_manifest_loader: default
diff --git a/taskcluster/test/params/mb-promote-devedition-partials.yml b/taskcluster/test/params/mb-promote-devedition-partials.yml
new file mode 100644
index 0000000000..1ece42a841
--- /dev/null
+++ b/taskcluster/test/params/mb-promote-devedition-partials.yml
@@ -0,0 +1,13210 @@
+---
+app_version: "77.0"
+base_repository: https://hg.mozilla.org/mozilla-unified
+build_date: 1588614376
+build_number: 2
+do_not_optimize: []
+existing_tasks:
+ build-android-aarch64-gcp/debug: JGmK3sGPQeeqMbV7ulQr2A
+ build-android-aarch64-gcp/opt: J0nPj6LGQey67GbeUcNYew
+ build-android-aarch64-nightly/opt: NF0yUmArSc-VloM4JJD5VQ
+ build-android-aarch64-nightly/opt-upload-symbols: DxWljeJ1QNqeZ1Mpo5JxQA
+ build-android-aarch64/debug: fwks2IoQSeu1JRdzn5P7fA
+ build-android-aarch64/opt: DKKwmNmdSUWtx52mOjw8Bw
+ build-android-aarch64/pgo: DkBSLjHsRSun1yW-8V7tEg
+ build-android-api-16-gcp/debug: VhIneri8Tg6wjiov2hW0gg
+ build-android-api-16-gcp/opt: LYIrHCQwTbqP72GDCs75wQ
+ build-android-api-16-nightly/opt: bZMyMvI4QeCAhLQaEgiObg
+ build-android-api-16-nightly/opt-upload-symbols: NZY8OPD8TaG6NdIKnKtq_w
+ build-android-api-16/debug: Q473B0U-TB6CzyzpC66AVg
+ build-android-api-16/opt: c8Z2uLohR2KTAQ6ARviZKQ
+ build-android-api-16/pgo: ftFtRNCvTBWixnNCgyAguA
+ build-android-x86-fuzzing/debug: SLLSsreRTUaDDD5oK6kDpA
+ build-android-x86-gcp/opt: Xx0bwox-RSqQntZPH7bOrA
+ build-android-x86-nightly/opt: Nkmvu55RQQ-9ZlHoMK1FdA
+ build-android-x86-nightly/opt-upload-symbols: InNo05VOSYiqzIPPGk6agw
+ build-android-x86/opt: bRR9HCF2RouxDkvf7DaTWw
+ build-android-x86_64-asan-fuzzing/opt: CBykgBn4SYqcdWAFWGs5dQ
+ build-android-x86_64-gcp/debug: F3FT-r7FQsiND7rO475g3A
+ build-android-x86_64-gcp/opt: cX8IsKm8RGCSnHTV-1C28Q
+ build-android-x86_64-nightly/opt: IqO8rApMRB-6KNQBkmlohQ
+ build-android-x86_64-nightly/opt-upload-symbols: MVTH5eoMQeWDWzo0TNxXYg
+ build-android-x86_64/debug: LdZ4L5MrQFCC_t0YjeZIKg
+ build-android-x86_64/opt: M5roPcRJTiipuzGohrBidg
+ build-docker-image-android-build: bjPrBHarQKmT_QTOWBZErQ
+ build-docker-image-condprof: dsntAtbxS6CXbHWLCR79uQ
+ build-docker-image-custom-v8: fFgrg8L8S8GyIAKxyFYYUQ
+ build-docker-image-deb10-toolchain-build: LmH6FyMfTaycxD017oDt-A
+ build-docker-image-deb9-toolchain-build: Jr4J9lqgRqOaKqOi-BC_EQ
+ build-docker-image-debian10-amd64-build: bszVYqQkTv-LNQhFM4eyNw
+ build-docker-image-debian10-arm64-build: RYkZf7j3SiaulBQKRR5uYw
+ build-docker-image-debian10-base: dGvRYbddQ0-GwRBd-3kWEA
+ build-docker-image-debian10-packages: UFg_TurJSam3ZWcXAhJ9rg
+ build-docker-image-debian10-raw: Pb408udCSPKZ7K4Xhuj1wQ
+ build-docker-image-debian10-test: NHvDhUpPSsO84cNjHLy4Fg
+ build-docker-image-debian10-test-iris: a-f3lPf7SxCRrw4QqC1cyg
+ build-docker-image-debian7-amd64-build: P2gjCJ3BQJSagsBHYq72sw
+ build-docker-image-debian7-amd64-build-base: NtAMeTIgTi6-4tyaJo5mpQ
+ build-docker-image-debian7-base: IuaCvSNeS-ixturPDdyQsA
+ build-docker-image-debian7-i386-build: BNussGJvR7m2VYnGv0TJyA
+ build-docker-image-debian7-i386-packages: M5weEEyeQE2fglBTUHxn-A
+ build-docker-image-debian7-i386-raw: HVKPmkvQS0aSpWjybrpoUg
+ build-docker-image-debian7-mozjs-rust-build: PltNICo9Tg-2XvhfSK1cxg
+ build-docker-image-debian7-packages: aY8COTJpQ4mLmPAydIMebQ
+ build-docker-image-debian7-raw: U6fYI-SoQ2SWL-wfKWF06A
+ build-docker-image-debian9-amd64-build: JvMjKNhsRlCnpq6eAq0HCw
+ build-docker-image-debian9-base: EF2pM2dhSfOZFpmsUoet8Q
+ build-docker-image-debian9-packages: eG3_hPSlSlq6nvwNrT7KoQ
+ build-docker-image-debian9-raw: fLZWsm3STASXGbdT1-fyDg
+ build-docker-image-desktop1604-test: DakwuH_ZTiOafYSu3lswOQ
+ build-docker-image-diffoscope: ZjO_5d6bSbChdULCfF5W6A
+ build-docker-image-fetch: EGzdZbECS5armfrvRknmfw
+ build-docker-image-firefox-flatpak: OWno4UszT4uFLTgE4t6oiA
+ build-docker-image-firefox-snap: J2VPc-BuT9iqetz4xbcDbg
+ build-docker-image-funsize-update-generator: dFBdzttWSOSNW0ZplGDpRg
+ build-docker-image-gdb-test: HQmDAuIgQR2DGFvTfejcFg
+ build-docker-image-github-sync: CMByuJGmS7KFEEYJUTBMsQ
+ build-docker-image-image_builder: PHMSfxS8Q0GAxl9UvpgQsw
+ build-docker-image-index-task: CTzHObgZQ9muC_DxmxIvKQ
+ build-docker-image-lint: PJxeCIC3QVqUFrCZXIVC2Q
+ build-docker-image-mingw32-build: RtN9zek1RQGrsQdLHpeTZg
+ build-docker-image-mozapkpublisher: TrPBtJk6Q2-A5V6drH8LMQ
+ build-docker-image-partner-repack: cXT0xyU6RbuBvIE-ZKGuPA
+ build-docker-image-periodic-updates: YGkhXyX-TCyfp-Z6GBmXZw
+ build-docker-image-python-dependency-update: cAahrUDURbmgJxUvA6wSWA
+ build-docker-image-static-analysis-build: HaSSrs7HTAmltcJTuVIDjw
+ build-docker-image-system-symbols-mac: LevDhEdcT4iahBTk8Kmykw
+ build-docker-image-system-symbols-win: Ikir9e_NT9ipoUDnI4knWA
+ build-docker-image-toolchain-arm64-build: Cd4ly_HrTuqccK1sn73Xgw
+ build-docker-image-toolchain-build: Bu_ApajJQ4GRA1_O7sXxVw
+ build-docker-image-ubuntu1804-test: fXde-uciR_Wmqd2vrpuuug
+ build-docker-image-update-verify: fhfvZFCqROO1PRE0Kl-Pdg
+ build-docker-image-valgrind-build: bQRcIBnRSFilSeHn72ojnQ
+ build-docker-image-visual-metrics: TjZFyoy_TBqb3-ak39cIpQ
+ build-docker-image-webrender: KMcWxflNSYGwctBOmjradg
+ build-docker-image-wgpu: LLESbwYEQ5iMk-86bjIx5A
+ build-fat-aar-android-geckoview-fat-aar-nightly/opt: KFK1iEX9TbGkaZB4EUZYwQ
+ build-fat-aar-android-geckoview-fat-aar/opt: JWT6gj5HQT-YwZVa7H-0tg
+ build-linux-devedition/opt: WYWYFef6Q0qz0335nUoU3g
+ build-linux-devedition/opt-upload-symbols: e9LRwnOLSTCyESVC0osBpQ
+ build-linux-gcp/debug: HuZ6MTQ4Sqm4Z7RNyZi-oA
+ build-linux-gcp/opt: PjC2SalYS1uAUa9ZTVWkbw
+ build-linux-shippable/opt: Eg5MQBbORH-TL9wXw5Zr8A
+ build-linux-shippable/opt-upload-symbols: Pk9PpmVLQCm2q64juTx1YQ
+ build-linux/debug: NUTDuCPwSGmoTx9oVTeRdA
+ build-linux64-add-on-devel/opt: QiYpfLWzTxqnhchvZW8Svg
+ build-linux64-asan-fuzzing/opt: c8ym7F3pSACpt7wgVcCTVA
+ build-linux64-asan/debug: eTQLh5TQSYipA9DCzo5Wew
+ build-linux64-asan/opt: IeQR16eoSueQw0sLwUaW0w
+ build-linux64-base-toolchains-clang/debug: NO8Nds2qShqIZ6ah0V8njg
+ build-linux64-base-toolchains-clang/opt: JYjSUuLSQvqsBPc3isCjiw
+ build-linux64-base-toolchains/debug: MHhKmUWIR6-L9fnr-BhS-A
+ build-linux64-base-toolchains/opt: ELD4oyB3RmygIj9InOIJgg
+ build-linux64-devedition/opt: BDvk6HENTdaQqWMTnjSU6w
+ build-linux64-devedition/opt-upload-symbols: ddJZp63VQba4pyc7oRdPLw
+ build-linux64-fuzzing/debug: XytYGM40S2iBmYDupX3c_g
+ build-linux64-gcp/debug: YRKR61XaSbquoV60nnyQpA
+ build-linux64-shippable/opt: DzeGajhDRGaTrG3DD1-l_w
+ build-linux64-shippable/opt-upload-symbols: ItbM5hxRQKKkXzPglKwYqg
+ build-linux64-tsan-fuzzing/opt: KWka2LBESd6zjaDqhX-GqA
+ build-linux64-tsan/opt: UDXGJpyWSz2ZoucGas2cTA
+ build-linux64/debug: YzWXbaKISXq3-9Meh5QcgA
+ build-macosx64-add-on-devel/opt: NIrDYMRdQjWcHfLPeZMIDg
+ build-macosx64-asan-fuzzing/opt: Rkh2HDXvSSa-wleLKi4LjA
+ build-macosx64-devedition/opt: HSAGV9-2TaOB-SdIOz6fEA
+ build-macosx64-devedition/opt-upload-symbols: JXZ5rBcoQyyd0ohWWcxNFw
+ build-macosx64-fuzzing/debug: L9Rr7j14TE6VnORna-uSlw
+ build-macosx64-gcp/debug: G0vAXHA1RKiLSLYANre7sA
+ build-macosx64-shippable/opt: VP79_dkHQpGe8X061qF6qg
+ build-macosx64-shippable/opt-upload-symbols: HQl5ZociRyK8Z6nS-GoY3w
+ build-macosx64/debug: Qq06SqHPRMWtl1KkoBoeBg
+ build-notarization-part-1-macosx64-devedition/opt: TN7cFjAaTd2G4IrJw-wGIQ
+ build-notarization-part-1-macosx64-shippable/opt: SwteXZHnQryxlMuS5HtF1A
+ build-notarization-poller-macosx64-devedition/opt: F78CUTAQTki25s258bzJRQ
+ build-notarization-poller-macosx64-shippable/opt: RQwDgYL9SWOjq8w1Gt_upA
+ build-signing-android-aarch64-nightly/opt: DE5E9iULQnCQS7oIFp8oNg
+ build-signing-android-api-16-nightly/opt: EXVbSRPZQZe4J5qGEDNeEg
+ build-signing-android-geckoview-fat-aar-nightly/opt: bejgNxLBSpGPm89UvGensA
+ build-signing-android-x86-nightly/opt: YwaCnOAIQwuOYAHR4q7Zmg
+ build-signing-android-x86_64-nightly/opt: MrkbJegVSiO6eZhr08ytZQ
+ build-signing-linux-devedition/opt: cA5MiADCQZiuHWSLVTVnTg
+ build-signing-linux-shippable/opt: KpjK2i4YQlmU0y1SPXbqFA
+ build-signing-linux64-devedition/opt: IZ8mhHWOQY-9ZKt_OU_UxA
+ build-signing-linux64-shippable/opt: a69AGdHDSba-dI003usseA
+ build-signing-macosx64-devedition/opt: LCoDGmURRYOHJ9ewGPOVLw
+ build-signing-macosx64-shippable/opt: GIyIBrnKTDi4EihDhlBGHw
+ build-signing-win32-devedition/opt: a9yK7B1qTLCf807q--ufLA
+ build-signing-win32-shippable/opt: InYlcfU-SlahResHt31R0w
+ build-signing-win32/debug: T1qreDKTR8GcCr-LDt2BTg
+ build-signing-win64-aarch64-devedition/opt: J8S0B2PeQGm993aSvQX9MA
+ build-signing-win64-aarch64-shippable/opt: EVyLYumxQVy-sJb2lQASow
+ build-signing-win64-devedition/opt: ULgn5dZGQBmemg5wZmhiNQ
+ build-signing-win64-shippable/opt: FxyKT1ALSUWiWvmALljfKA
+ build-signing-win64/debug: BeTLmspiQ5CYog9aaFzInQ
+ build-win32-add-on-devel/opt: Ae0Pvp3zQQCWpcNNijK5Dg
+ build-win32-devedition/opt: ZmVuSRttSdSyMb0lc8uNHA
+ build-win32-devedition/opt-upload-symbols: bzzr5RPwS0qKUYxcNNoD-w
+ build-win32-mingwclang/debug: NRWph8N7Q--N5xNpEF0Pfw
+ build-win32-mingwclang/opt: Bo9nfgMyRma6KX5NxKAOYw
+ build-win32-shippable/opt: XISABU5rT_uqOLYW9KKbow
+ build-win32-shippable/opt-upload-symbols: L9XC7YXqTuW6gaOi6TroxQ
+ build-win32/debug: BmqmolGSRZS8RHh25zdWrQ
+ build-win32/opt: ZqQpeuTDTLugSTNgdjSgog
+ build-win64-aarch64-devedition-no-eme/opt: YmWL3PkQRSCOT_Ldu5wjaw
+ build-win64-aarch64-devedition/opt: VCEKdj5iT2yDRMz72tRbyg
+ build-win64-aarch64-devedition/opt-upload-symbols: Q99TpwsKRMyeEo-E-_kMdQ
+ build-win64-aarch64-eme/opt: Y9IgwTkXRROXLJ6A6QsXRw
+ build-win64-aarch64-shippable-no-eme/opt: akQSFje0SCqlyUXofj8Rrw
+ build-win64-aarch64-shippable/opt: FyJz4w_NR3Scx4NunQ7vzw
+ build-win64-aarch64-shippable/opt-upload-symbols: YEXXiUjJSgKkKufsVIhd1A
+ build-win64-aarch64/opt: OeiZCWt8SRaoH2x1go4lww
+ build-win64-add-on-devel/opt: Q1z5hBa9SKevVqynVy3kcw
+ build-win64-asan-fuzzing/opt: K-w41kc3TUiAcOy8OstdBw
+ build-win64-asan/debug: CismlWLtRdazPhUDG01QDQ
+ build-win64-asan/opt: cDPZyktBRHGldQcIkoWY4g
+ build-win64-devedition/opt: T6LTxrGjSxy21RxdHaVBRw
+ build-win64-devedition/opt-upload-symbols: HdcOcqpITv-zld0__TEiFA
+ build-win64-mingwclang/debug: GNgLFbP1SliqD7STOmhsLQ
+ build-win64-mingwclang/opt: OttQ3N87Sy-XvM-r3tyJag
+ build-win64-shippable/opt: QFxAu-nPQFmnvKJJp_m5yQ
+ build-win64-shippable/opt-upload-symbols: WzTeUUkHTfy4fmq0eS3HFA
+ build-win64/debug: coHjW7AlStCaELKzIs3f1w
+ diff-artifact-win64-aarch64-eme-validation: dkWwXzxqQjujXba7YGfzvA
+ fetch-android-rs-glue: QDqK2WN6T3S9zaBbTuBSrg
+ fetch-assorted-dom: bs7xcCLKRpCAkzhYWX09Uw
+ fetch-binutils-2.27: Z_aI0t3GS--v9AGCTMQ4pg
+ fetch-binutils-2.31.1: csl9SYLzQtqwryLLvcjg6A
+ fetch-cbindgen-0.14.1: Pwf1lqORS-CoQix1VNrzEA
+ fetch-cctools-port: ISWQgxVuQ7iyeAf1_0kJgg
+ fetch-clang-10: D-mdaWLLQt6Em2fk32ccEw
+ fetch-clang-5.0: XE5D3FSZQ1qXFXC_aMd56g
+ fetch-clang-7: FIyzXqT8T_Cc7K7bzXo-Rg
+ fetch-clang-9: KecNw86-Rhycvmj-EC33ow
+ fetch-cmake: Q54yL52hRRChS456jbYkYg
+ fetch-dump-syms: Y0jNmM2ZQmqKOcV6L2bIZw
+ fetch-fix-stacks: ASm0FfIXTGuFlMrwsS06Rg
+ fetch-fxc2: BVfPNDKsS1uHn7oO_N8N7Q
+ fetch-gcc-6.4.0: Ll-pP3P8QAOd0Zp-bBiSIA
+ fetch-gcc-7.4.0: DiXdbtxrS2O2H_dEPB7FUw
+ fetch-gcc-9.1.0: JwRl_TsrSA6t2-vAAj0r7Q
+ fetch-gmp-5.1.3: GB3HbQB1TCqBDv4ePQgl8w
+ fetch-gmp-6.1.0: CbHqtVUSReS6sYURNnSq_w
+ fetch-hfsplus-tools: WmQwbjv-SB-tuaBW6yjjCQ
+ fetch-isl-0.15: PdslxKHUSU2ZenKLqNDl3Q
+ fetch-isl-0.16.1: dBj-OKqlQgOmK12DwDHWjA
+ fetch-libdmg-hfsplus: AgtUuDFXTfWNa_LsdohYAA
+ fetch-libtapi: QCJB4A-vQqGEKjO3azOK2w
+ fetch-libunwind: aoK2nHohQPSx9efMhF271g
+ fetch-llvm-for-dsymutil: IlhbKqbrRY67ZDJZu_rFaQ
+ fetch-llvm-mingw: C4o6F7i0Qbi2jgqS4ofOlg
+ fetch-lucetc-source: d0DO-3KlS0Kq6LaLZ9DVIw
+ fetch-mingw-w64: YDSHmLWHQdO1h9a7PjpOyA
+ fetch-mpc-0.8.2: VvGKxogcROivMpFoR1YGhw
+ fetch-mpc-1.0.3: F0RqN1beQnGPjOVdMYwH_Q
+ fetch-mpfr-3.1.4: KlpS7aHZTuCj2k0zoff7xw
+ fetch-mpfr-3.1.5: Ro_e5dEZTeyvgxbpxoRpMg
+ fetch-nasm-2.14.02: SM7IB47LSkq7OpZqL63FDA
+ fetch-ninja: OPRvE05zQ2evAfm96YSHNA
+ fetch-nsis-3.01: c9DO_KELRMqtBHZGTqAaTA
+ fetch-nsis-3.01-win: FNHUmwhaRkShCYQp1z-wDA
+ fetch-rust-size: K2s1tum5TPypQAmOgvCY6Q
+ fetch-sccache: C75zz0lqRoG-6Mc_KVCsNw
+ fetch-unity-webgl: NEZAMpBYQbikxpQzUFX_aw
+ fetch-upx-3.95-win: KcZhWdxOTHy6DAwqzBZHrQ
+ fetch-wasi-sdk: O9ko-8CRQ9iyyJykegEE1Q
+ fetch-wasm-misc: B2bqyOJmQbeI30UdYgvwSg
+ fetch-winchecksec: ZUf_xXvVRPCvO7o4bxodog
+ fetch-wine-5.0: FZFcvs_TQBO-ihBssyUoSA
+ fetch-wix-3.14.0: d0gE9qCHTvO3Hq9qXi4yFw
+ fetch-zlib-1.2.11: THaU-BQaTVCU7OxLJIn-bg
+ geckodriver-repack-linux-nightly/opt: WqF_vT_4T_aGNlQGKRcH3g
+ geckodriver-repack-linux64-nightly/opt: PyNOULsxTBKZOlLb2GFWZQ
+ geckodriver-repack-macosx64-nightly/opt: MtcWcW8aShWzXn_0_914vg
+ geckodriver-repack-win32-nightly/opt: XupyfvA9TQSCjleqC92xPQ
+ geckodriver-repack-win64-nightly/opt: QpCn8I-yTp2eEr7qFaZFkg
+ geckodriver-signing-linux-nightly/opt: CnL0ptMEQ3uQVIO7a5KGNg
+ geckodriver-signing-linux64-nightly/opt: aChVGnDkT8SFThQWvKk__g
+ geckodriver-signing-macosx64-nightly/opt: NSjfby7sSVyf1aL44S0N0w
+ geckodriver-signing-win32-nightly/opt: TThc0i7ZQPOE1YbFcorfGQ
+ geckodriver-signing-win64-nightly/opt: P7gcEBdDRMqvazonIVCMYQ
+ generate-profile-android-api-16/pgo: GIJDT8HFRZyM5Xqk8YcXiw
+ generate-profile-linux-shippable/opt: OtYBmSzvSo-6CvACHpJ-KA
+ generate-profile-linux64-shippable/opt: FRa7LDRbQDWDiJYRD6bdlQ
+ generate-profile-macosx64-shippable/opt: GJnIyPigT7OEYT4V_FjJ7Q
+ generate-profile-win32-shippable/opt: Zscaa0AhSf-p2JSipVOlXg
+ generate-profile-win64-shippable/opt: ShdKVEbSRbKp1Gta8ZnGpg
+ hazard-linux64-haz/debug: MnX6U0JTTs6Tl_D_gEQ1Mg
+ instrumented-build-android-api-16/pgo: LyQLXk40TUWCdoA3ENVQ0Q
+ instrumented-build-linux-shippable/opt: FFCk5hpEToWFS6z-M3wRgA
+ instrumented-build-linux64-shippable/opt: DPE3OZJlSmqrti11PbivlA
+ instrumented-build-macosx64-shippable/opt: OzR-gdsbS4SqZbJvrJ4whg
+ instrumented-build-win32-shippable/opt: To5Go8HBTsyOUKTosGptdQ
+ instrumented-build-win64-shippable/opt: RrksvHnuSL-l4nFaya2esA
+ packages-deb10-cmake: E054EnLvSHm4A6HXgut95w
+ packages-deb10-mercurial: d1chdaQDTVG1xJpR1nSFrw
+ packages-deb10-python-zstandard: VE6kyb2SQ4ihX9GMv7kXug
+ packages-deb7-32-atk: Xd03WAjAS2SIoTeMuk6zTQ
+ packages-deb7-32-gdk-pixbuf: Za2y73ObTiGgH7zyEi8kqA
+ packages-deb7-32-glib: f6iC09G_Q2SwqxZwnnoARg
+ packages-deb7-32-gtk3: EVvvZEQdTk6nzAMdYdRt4A
+ packages-deb7-32-harfbuzz: JcKlKnmKSZyhdpoiyRxlSA
+ packages-deb7-32-libxkbcommon: Zc80i7ywTrub05lVJf6GfA
+ packages-deb7-32-pango: P9TDSCZlTuSqJ60TiRuoZA
+ packages-deb7-32-pcre3: WkGeQQ_qSdmQQS3arP0FIQ
+ packages-deb7-32-wayland: XcRVqnthTaOyTOy6sIz1cw
+ packages-deb7-32-xkeyboard-config: VB2p8YgfTjOAnWY180ZjTw
+ packages-deb7-apt: O3Aq-8qzSKus1EC3uSFayg
+ packages-deb7-atk: LL7G_BMxR2-RfddtW1gQoQ
+ packages-deb7-automake-1.14: N5JNe15oT72YCB0s8vVkDA
+ packages-deb7-cmake: MfGa3Rb6SFu7AsDVJs7g4Q
+ packages-deb7-devscripts-2.14: LTlbqRqrRcCydQgzldnALQ
+ packages-deb7-dh-python: b0o-v4VTRJ6QT_I5waAdng
+ packages-deb7-dpkg-1.17: csa3caTaQLiYAqCJCMXFLg
+ packages-deb7-gdb: NfnmZOmNR3OK2XTTyDDRNg
+ packages-deb7-gdk-pixbuf: KD6Vkd-hQJeCHK48hU1iFQ
+ packages-deb7-git: YXJeB6WiQwOFLLh6acnyNw
+ packages-deb7-glib: JYLH__UzSwGgfzbfQ2rFWA
+ packages-deb7-gtk3: eoHBjBm7S723jnZT6-ysOw
+ packages-deb7-harfbuzz: YhMGwO2sQiaRae-5-ZOHEQ
+ packages-deb7-libxkbcommon: cp6GJ9_3Q2COclcgEwzI5w
+ packages-deb7-make: WOojiEnTRQys6du5iclp3g
+ packages-deb7-mercurial: WtPCPL58TgujMuYM1RHjsg
+ packages-deb7-ninja: OrF2JyfySr6mEVrwFNXjdQ
+ packages-deb7-pango: NFxf9BlTQeaV-wAJ1bIkJA
+ packages-deb7-pcre3: ZuvsP-zMQkG2uQZ-4Scsqw
+ packages-deb7-python: NMXx8LL7SZCCgWRn2HIC-Q
+ packages-deb7-python-defaults: eKhC-uyBR5yPGTbcS-eX-A
+ packages-deb7-python-zstandard: BZibtOZpTyqJm_RVhc45Bw
+ packages-deb7-python3-defaults: f0D2K_W4SACSf8EQEihOCA
+ packages-deb7-python3.5: ZFOmmbY3Tba1HimjKvnrzw
+ packages-deb7-sqlite3: cohtM5C6Tou_PrzF79Gbcw
+ packages-deb7-valgrind: P9DEQWk7RYa6cE9uCiGO0g
+ packages-deb7-wayland: A6Y2holPQdCMppFpEIEYsQ
+ packages-deb7-xz-utils: VhEF3pTHTeaIO7MJFhBsdQ
+ packages-deb9-mercurial: K7HzJt9sR7SSzp7oBd75Bg
+ packages-deb9-python-zstandard: Z6FJdAm-QpKYORcNMEorag
+ repackage-linux-devedition/opt: DXLbCtPvTVGJFVQ5OuDZDA
+ repackage-linux-shippable/opt: YiaajJdLROmRkgpeCsowjg
+ repackage-linux64-devedition/opt: NXM363_YT9GHcZPQakOH3A
+ repackage-linux64-shippable/opt: E3nQ40U8R6Oa4dmfAEkAhA
+ repackage-macosx64-devedition/opt: KyuGwzVgTOaOtoW0doDe9g
+ repackage-macosx64-shippable/opt: PCW8veBYSyGkhFATrmuawQ
+ repackage-msi-win32-devedition/opt: HDnAORw_RqakGm5z7xfnpg
+ repackage-msi-win32-shippable/opt: KaXh-amcT5m-RRMCZuP7fQ
+ repackage-msi-win64-devedition/opt: GstzPkZVQnKgtjTAzcNjsA
+ repackage-msi-win64-shippable/opt: Nhobdd2-SW62YajYf3yUTg
+ repackage-signing-msi-win32-devedition/opt: cKJ0gkaiT3SGhLxWfOS-5w
+ repackage-signing-msi-win32-shippable/opt: XsUqJKDGQA-FuNk5DTxIeA
+ repackage-signing-msi-win64-devedition/opt: JVPzwCWCRpersiFVbMCkAQ
+ repackage-signing-msi-win64-shippable/opt: DKwigz5XSQKhqWD1cqPs7A
+ repackage-signing-win32-devedition/opt: DPztxi5lQGCK8kyGS824BQ
+ repackage-signing-win32-shippable/opt: FniLztUtSDyXXsdq5bVweQ
+ repackage-signing-win64-aarch64-devedition/opt: RhPB-J6hTjOiHfDMhXjpNw
+ repackage-signing-win64-aarch64-shippable/opt: dv0JPljeTFG9fY4v9zvmmQ
+ repackage-signing-win64-devedition/opt: QWALt93QSxGyAbn_Ee4Ijg
+ repackage-signing-win64-shippable/opt: E8xBPzR8RUeLmBry6mspZQ
+ repackage-win32-devedition/opt: eQgz8n4QT8WQfz4Rw4T17A
+ repackage-win32-shippable/opt: AUZvk_xFRQef7iVXNsdzmQ
+ repackage-win64-aarch64-devedition/opt: RTfJ44O5ScquoLxabstB-A
+ repackage-win64-aarch64-shippable/opt: JgiQwQKjRSGlA6LqhNPfKg
+ repackage-win64-devedition/opt: FTCSlQ_PQ8yjRQNtdxZ8lA
+ repackage-win64-shippable/opt: V0eEVaDUSdiYriUP1mOx6g
+ source-test-file-metadata-bugzilla-components: elkfO6TuSzm0LeBqPrmLnA
+ source-test-mozlint-clang-format: B3p5yAV1QX-pRvlkWHVpRw
+ source-test-mozlint-codespell: ZCS4EJ-YRqGyFTlWTYLhSQ
+ source-test-mozlint-eslint: CyO_GkCrTZGE6s9516LeUQ
+ source-test-mozlint-file-perm: IZZs_nU-QBWacV1XtjHulw
+ source-test-mozlint-file-whitespace: RZSO9OqlTJOWRZGcvCc-kA
+ source-test-mozlint-license: LZEZw13yTEe4I-rFu8n3yw
+ source-test-mozlint-mingw-cap: XZYBIV6CRKqfXdZ7juejMQ
+ source-test-node-newtab-unit-tests: OX1crFM3SC6laySbqw3MNA
+ test-android-em-7.0-x86_64-qr/debug-geckoview-crashtest-e10s: IhEh6X4cSy-YsGTqVw5NBA
+ test-android-em-7.0-x86_64-qr/debug-geckoview-reftest-e10s-1: e3WPPH62QjOuRcEYb4Krrw
+ test-android-em-7.0-x86_64-qr/debug-geckoview-reftest-e10s-2: HySSVSoFStaSGosIO4VK4Q
+ test-android-em-7.0-x86_64-qr/opt-geckoview-crashtest-e10s: AM-SWlBMQe6YA1fFlPIOOw
+ test-android-em-7.0-x86_64-qr/opt-geckoview-reftest-e10s-1: G6gZnXwhT9GW6DCeLa9X7w
+ test-android-em-7.0-x86_64-qr/opt-geckoview-reftest-e10s-2: SRL99WVCTDegycqQYPQ9Ew
+ test-android-em-7.0-x86_64/debug-geckoview-cppunit-1proc: J7L9MSinRPe8DMCSD1JwNg
+ test-android-em-7.0-x86_64/debug-geckoview-crashtest-e10s: EUkmEx5CTpKEEutdex4PWg
+ test-android-em-7.0-x86_64/debug-geckoview-gtest-1proc: FjDmsvxPSCanR5w8J9ZNfg
+ test-android-em-7.0-x86_64/debug-geckoview-junit-e10s: Tvq2TdvmRXSrfwQFBVxXSA
+ test-android-em-7.0-x86_64/debug-geckoview-junit-e10s-multi-e10s: efQeK64iSiWsqxD4rKL-GA
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-media-e10s: Zv5o5lhxQ4iPfJ4gNqybSA
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-media-spi-e10s: RWPW-iDKRYajyfUgNpJ38Q
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-plain-e10s-1: GhIzeV0HTaexzhzYKaTEeg
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-plain-e10s-2: Nmfjvz5jS9CI-2C2aoKCBg
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-plain-e10s-3: Xr3Vce-JSDGy0Ciol99KRg
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-plain-e10s-4: SXCbKg6NSCysX2qPNvUbtA
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-plain-gpu-e10s: JIH0bh7mSs-Kyf2MLTfrEA
+ test-android-em-7.0-x86_64/debug-geckoview-reftest-e10s-1: YF7gxK9DT_2Za0ZQAKuNnQ
+ test-android-em-7.0-x86_64/debug-geckoview-reftest-e10s-2: ACaVe4hBTMKK0yip-WDbhQ
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-crashtest-e10s: Og40Y9z7RAKFlNjmXTpqkw
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-1: e7Tz7ES_Tfatymjzx4R5cw
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-10: Pm2zShqSQwSGW_lAisEASQ
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-11: bEQFZUYYTEeHXY2znKJlSw
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-12: IE88gKwhTMKQFCsdRPyh8Q
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-13: bTxJIePCSoSZUB6yO-SICA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-14: bHeyek5yRzS3b9TWvMqRWA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-15: Ws-LHSgPSwKUfTAEgmXChQ
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-16: Q5TH7TdXQ2Ow34MqIVBaLg
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-2: Y98kCPY9QkCb_MjeSDhf4g
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-3: buzCaEbLSFiSbVqbIVuPpw
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-4: WAS0tNQGROuGcHoYL-1osg
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-5: Cf1lrSOlReKbB3DWYmmESA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-6: c8-KuwfrT5Wv0a4x5fcdeA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-7: GBKNadN3RnKgLmQrPRRHrg
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-8: XduTVsuoTQG0ODyGWiieVw
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-9: MUtmS8OZToK6EtwEN9C2OA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftest-e10s-1: FHRluobCSEikp6t1yb2oVQ
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftest-e10s-2: B6b_mbaLRgu6tQqIG5uQnQ
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftest-e10s-3: YqYORy1GTymd87ERn_HNEA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftest-e10s-4: cfiUqfHlTOSPEk0pArXgVg
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftest-e10s-5: RmlgHUJbSYq21zHx82zOWg
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftest-e10s-6: bTbqzTQ5Ts2ylflUVds6Pg
+ test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-1: H3UcGAf7R3eS73PkBcT-yA
+ test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-2: V9VYOopAQdSOwwpfqnTTlg
+ test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-3: U61psHdWT9-90_dp0KaO4g
+ test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-4: En8rchmoROq4vSr65R3UCQ
+ test-android-em-7.0-x86_64/opt-geckoview-cppunit-1proc: cK8OtnfJQfKUUtXQvnBV-w
+ test-android-em-7.0-x86_64/opt-geckoview-crashtest-e10s: OWB4c6QlQESWbMC0CTn0wg
+ test-android-em-7.0-x86_64/opt-geckoview-gtest-1proc: QmlbtbHTRPaEpVwN1m-w2A
+ test-android-em-7.0-x86_64/opt-geckoview-junit-e10s: RRbnPB_PRNS2j2NvVjCGNQ
+ test-android-em-7.0-x86_64/opt-geckoview-junit-e10s-multi-e10s: A0jVk0e1SfeuyHS9YU8GDg
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-media-e10s: S_ZL8FztRtqaJ588VKafIQ
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-media-spi-e10s: e1y9jhVzRKCp-cSr6ObaSw
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-plain-e10s-1: fGhp6VKhSBi2LGpwpfFzXg
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-plain-e10s-2: QwDorAAiTAWjO7lUsTGgcw
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-plain-e10s-3: CGmLQkO5TaeqeXgDHU1HmQ
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-plain-e10s-4: Tf1ESYbJQ92C_i79U6a7bQ
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-plain-gpu-e10s: ePiyC_hhRIOQehjd2W-YYQ
+ test-android-em-7.0-x86_64/opt-geckoview-reftest-e10s-1: O6Qu0IQZQ1OcP0HUneg_DQ
+ test-android-em-7.0-x86_64/opt-geckoview-reftest-e10s-2: PDU_gvP5TpieD1byO0_Xbg
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-crashtest-e10s: DYx3rrF8RSOfTqNHwJGcVg
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-1: KmNSGsd6RNCDoqJUblhfNw
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-10: Dhlh9zfhSpWkVcXiKN0DPw
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-11: b3i9XCVxQEKQbORg7FfRRg
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-12: KW2KktlyTr6yINAd27BBkw
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-13: GDRg8zPsQ8i7luVfYgl1yQ
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-14: BWIrexWuQ_ulFVLSedNpNw
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-15: R1SGfxvIS8yZbde11yoWMQ
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-16: Lw7YB28WSCiPhKlHYrkCkg
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-2: ArDcMkgAT1-4baE-GBlI7A
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-3: DujNbKLiTSqWysneMLrZBw
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-4: d1oau3zgTfin-OJhmwkLjg
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-5: QT3d8BQ9QVGAD8Yt1dUzIA
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-6: HEPMPLhaTQaWL8KPZ0dIzQ
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-7: NCetaTNJRmSABApCM3UtJA
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-8: UFMC7Wg7SZW3S1uW0haRMw
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-9: DCjJ29T_SF-V3XaeOnxspA
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftest-e10s-1: S7a6YaHLR2ymcDw152CCbQ
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftest-e10s-2: Y0iaVihdS9-8BN5h38hK2w
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftest-e10s-3: AUm8ziBLScWMbnziLRKjbA
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftest-e10s-4: WuRTC6sDTKqg60Y8_j11Yg
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftest-e10s-5: TJerm7rxTxGa_4KvCHb-Ow
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftest-e10s-6: IGcidfZ6R-24YuagcgmbTw
+ test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-1: cQ4piG7rRGGkSYwujhW8gw
+ test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-2: Uzwd98TkSsqgSeCune1OYQ
+ test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-3: Ba3B5cy8Q3iq5yzxRQdppQ
+ test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-4: PzJsKJ4eTGexzIGZOYCgZA
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-1: Uw1X0wM8RVy9PPy5Q4eK4Q
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-10: K-0l06jARI2uT9uSJAHxyw
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-2: P-mgi6kLTC-wrHK06Mfcpw
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-3: aZRqMmeKQMOvBBjze4ReEQ
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-4: fJEiHblKR1SFLK0dQmGPbA
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-5: OCDMeL58QxiiyQvPefY5Jg
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-6: SjMTP1l1RCeSfOtFgO1j3w
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-7: Md7HZ3okSC-72zcxS7Vmmg
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-8: AQmJaV5sTkurEKh399mmfw
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-9: ONhMkKWgTL2xnaei-Hio8A
+ test-linux1804-64-asan-qr/opt-crashtest-e10s: CepaK7LyT8Cp9VLZMubZSg
+ test-linux1804-64-asan-qr/opt-reftest-e10s-1: FuYGup-lQ1-XchI2ruX0Kw
+ test-linux1804-64-asan-qr/opt-reftest-e10s-2: b7jXOLH7T0qURnCmM8ePzA
+ test-linux1804-64-asan-qr/opt-reftest-e10s-3: W8uTMegyTseIByeordI8-A
+ test-linux1804-64-asan-qr/opt-reftest-e10s-4: BoVr6_5HQf-cBBPJ6Xs8mA
+ test-linux1804-64-asan-qr/opt-reftest-e10s-5: RO3Y2Qv3SmO_-CeSbPgPkQ
+ test-linux1804-64-asan-qr/opt-reftest-e10s-6: YdcVrKU6SYmnuNyVqedu9Q
+ test-linux1804-64-asan-qr/opt-reftest-e10s-7: W3oOtQmOSv2AZvGsfAtmlg
+ test-linux1804-64-asan-qr/opt-reftest-e10s-8: SW8q6JzyTTOMiGv_rM1Mbg
+ test-linux1804-64-asan/opt-cppunit-1proc: L4-Ptq2MRxqz1JE1_oGv6w
+ test-linux1804-64-asan/opt-crashtest-e10s: HP8-T3PfSDOusgLSd6H5Dw
+ test-linux1804-64-asan/opt-firefox-ui-functional-local-e10s: A1HvavVPRaGlGO2C5krAmw
+ test-linux1804-64-asan/opt-firefox-ui-functional-remote-e10s: K6pRTbjCTju-ZFGOn1MpDg
+ test-linux1804-64-asan/opt-gtest-1proc: SLECsj_SR1yFMGJa6CgvCw
+ test-linux1804-64-asan/opt-marionette-e10s: aYotBGzGRjmX8RpdlNLc5Q
+ test-linux1804-64-asan/opt-mochitest-a11y-1proc: P8YIE2ABSr6ShjLORyZFVg
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-1: SKXZVi1bTSC66wGLyTRY8A
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-10: Yw8nMBd5R9qIZd6OmFeh8g
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-11: O43B-fYgSzKtE8qdnRZn-A
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-12: GVLZtXTlTGS-sxhTvWIhSg
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-13: dglSpe0AQ5Wlp-Hc5BJ7gg
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-14: PLfrwLDqR4KG8q8bOKx7eg
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-15: G6kXpzeuQjWom9HwgcT8og
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-16: BwD9eENoSWic_cZ_31iotg
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-2: QEWPH4I2TWG_BiGjAXTWOg
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-3: Ew3oWWcRRNiUadjKFjL3vw
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-4: ey_clBjPSU6tgxKg3icQBw
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-5: XXcGrmddQjmST5S1quH-gA
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-6: OpaqyCcEQnSnGZ1vKbf95Q
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-7: SpAfxliZRruuPGFFc1ItBw
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-8: EHyRcrUVS-GHlazUhx0wRA
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-9: c2rrSwK2TPSEfsGcJAlMjw
+ test-linux1804-64-asan/opt-mochitest-chrome-1proc-1: WUSKQ9GmR1m6djioyujghw
+ test-linux1804-64-asan/opt-mochitest-chrome-1proc-2: E5J09ovKQ-uhMtyU8PsTCw
+ test-linux1804-64-asan/opt-mochitest-chrome-1proc-3: eO3GOZdeTtev1c8XFfGVBQ
+ test-linux1804-64-asan/opt-mochitest-chrome-gpu-e10s: GVSwqlcIRhi4sxRI3SOMjQ
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-1: R7UZlLaiQ-GaFkJnTbhOpw
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-2: Wq1aEf-bQ3GMR2c-LLaFlg
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-3: FGaoxdsOSXuXRlalnto-tQ
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-4: d1OvztgETtC7f5D77eqvmg
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-5: aCk24HBgRCe-F3HaOwvO-Q
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-6: TiRtA-gaRpaEIZwxXfLCPQ
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-7: bElVdHjaRluQTxQwSUi5QQ
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-8: WEaPH1q-QNGlNq-GEDDatw
+ test-linux1804-64-asan/opt-mochitest-media-e10s-1: PAikJ6ppTGW26zJzxx_zUw
+ test-linux1804-64-asan/opt-mochitest-media-e10s-2: Muaj8sUuR0SXxOQGI6rfvw
+ test-linux1804-64-asan/opt-mochitest-media-e10s-3: H5gvzSacQ9CDlPCQqp_m_A
+ test-linux1804-64-asan/opt-mochitest-media-spi-e10s-1: LLzbebNcR3ebVuADfZFXYQ
+ test-linux1804-64-asan/opt-mochitest-media-spi-e10s-2: OGOIQOzSSge6q_u-H0J0bQ
+ test-linux1804-64-asan/opt-mochitest-media-spi-e10s-3: PFC7ZQlcT_CjnbQXLZQmUw
+ test-linux1804-64-asan/opt-mochitest-plain-e10s-1: fnJWLYUOTcmii3LN8c40kA
+ test-linux1804-64-asan/opt-mochitest-plain-e10s-10: NxclL7EUQd2gUV1RukehcA
+ test-linux1804-64-asan/opt-mochitest-plain-e10s-2: PSuDGPTuQIaDHgTxdqmatw
+ test-linux1804-64-asan/opt-mochitest-plain-e10s-3: Wy2Nu5E0Sme8gBQgtGCVNg
+ test-linux1804-64-asan/opt-mochitest-plain-e10s-4: Ltk7i2ylSZq5JRznkAiMsw
+ test-linux1804-64-asan/opt-mochitest-plain-e10s-5: YUaYOELqQhGrH24BFd2dBw
+ test-linux1804-64-asan/opt-mochitest-plain-e10s-6: LqjxqpF_TGCB6UlRoaoudg
+ test-linux1804-64-asan/opt-mochitest-plain-e10s-7: CpYOHwXqRSiRcr-e_-Ak5A
+ test-linux1804-64-asan/opt-mochitest-plain-e10s-8: e7oQJsBUQdS3NVUkb-CAWQ
+ test-linux1804-64-asan/opt-mochitest-plain-e10s-9: Y51Fu7g1Tuu5MgPqrEnPpQ
+ test-linux1804-64-asan/opt-mochitest-plain-gpu-e10s: beksiFclQ1awIE4MVxFPNg
+ test-linux1804-64-asan/opt-mochitest-webgl1-core-e10s: f3pKsFfMSD2Ez9gVG8IIGQ
+ test-linux1804-64-asan/opt-mochitest-webgl1-ext-e10s: Z47QW7xQT8mWtKgIU8jiQQ
+ test-linux1804-64-asan/opt-mochitest-webgl2-core-e10s: HsHN7MBGQli_h06IuVXr6g
+ test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-1: NtGWc5vuTMSs5l31F5x7Gw
+ test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-2: Dom6NXI2SEab54opOVGA0g
+ test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-3: G-mMwDcmQSipN5OOMzp44A
+ test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-4: HMbUu3nxSDG6pq15BHpbIw
+ test-linux1804-64-asan/opt-reftest-e10s-1: eJ3A_p5QSsOLWXvw5NGT-A
+ test-linux1804-64-asan/opt-reftest-e10s-2: ai0NQ_ObQ7SrCCZKeJL_-w
+ test-linux1804-64-asan/opt-reftest-e10s-3: NQYPuYGkT22x23VxZqbEIA
+ test-linux1804-64-asan/opt-reftest-e10s-4: Lwxvc4KxQVSa3bvMHCYaEw
+ test-linux1804-64-asan/opt-reftest-e10s-5: GDPbJfZCT8ma91muSnjH6Q
+ test-linux1804-64-asan/opt-reftest-e10s-6: WWef4QBETcCS_e2Gz2EVSA
+ test-linux1804-64-asan/opt-reftest-e10s-7: Gri23CzoR9GgXbZl6oLMSA
+ test-linux1804-64-asan/opt-reftest-e10s-8: SlAwZKK9RwyfVipaCwR4Ig
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-1: KcCDfT6jSSqi_Bd0SNpRAQ
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-2: DT1VATj1Tw69NMG7H8ilgA
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-3: VQ_TiiwsSoGuAGsO6e_1Ig
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-4: Y-9TrGXaQTObO2s_fY2ZIg
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-5: VKAr2bnIRG-0dXF2S91X0g
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-6: FKvyP-pxRn2QCwLxCX1VVQ
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-7: WZQ4kffLR0eiidgvoEqSPg
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-8: RnqYPyluT8WMU3u-RZfrWQ
+ test-linux1804-64-asan/opt-telemetry-tests-client-e10s: DK1DDHDBTneKho9ZKzi1ig
+ test-linux1804-64-asan/opt-web-platform-tests-crashtest-e10s: dKrvdAJLRAKkESxrNAcYJA
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-1: E45yQIlRRre3CTejANRzxA
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-10: WkYKtMywTHOuB85Bps8vbQ
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-11: ddAJL5cnTAyIx9yH5POw8Q
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-12: Ql-PDIo5T1mcDRn8r0J_hQ
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-13: QKm9JNowSvWUjYIXyJNGwQ
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-14: YaotuzL1TUSkQLNk0OolRQ
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-15: K1B6YAr-SDW_oJKMJQYY5w
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-16: BRwFoEXUTYCzHkHb1yP37A
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-17: OVsPiNYmTqWWjSEZ3Xh7rw
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-18: TxP-dIkDSQ-JMQJEwW9jPw
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-19: am8ghuCVR_2yFfLozqS5Xw
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-2: XnmoFcq3SbyZqiBzwGBQDQ
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-20: PG-6OOQdSe6YIeKzlhNo5A
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-21: RNJgn0caRbWRc7oM3l_HlA
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-22: EY2HwzDzSau-GwhZ-n93ZQ
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-3: dMx_RZI2S1qUJiiAjyuoEg
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-4: Ro1ZdbYmQAqUxgoJVfZJqw
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-5: deHtHvwjS_WsYnIFdITpWA
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-6: JOPNXg-wQr-6DrDYzC8oqQ
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-7: T4juEQOyQMu7qDjVVTAa9A
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-8: M20mFU3oTams2ymk232aZQ
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-9: Ck_uSEoqSqmT-K-kMvAefQ
+ test-linux1804-64-asan/opt-web-platform-tests-reftest-e10s-1: KvGsWawRT2-qo_oseCNwBw
+ test-linux1804-64-asan/opt-web-platform-tests-reftest-e10s-2: fDnQHdk7TKKmMAGlDH4X1Q
+ test-linux1804-64-asan/opt-web-platform-tests-reftest-e10s-3: R66wVYAhS6GR3adLlvI2ZA
+ test-linux1804-64-asan/opt-web-platform-tests-reftest-e10s-4: Db6Usf4ETlSpRTM6cz-S1w
+ test-linux1804-64-asan/opt-web-platform-tests-reftest-e10s-5: Hv2ekWwASl2aw1LFrGVitQ
+ test-linux1804-64-asan/opt-web-platform-tests-reftest-e10s-6: eszEo4U4RV2m0Ns3_I-7Jw
+ test-linux1804-64-asan/opt-web-platform-tests-wdspec-e10s-1: YjJp1E17QeicT9YnSoQYtQ
+ test-linux1804-64-asan/opt-web-platform-tests-wdspec-e10s-2: I_vtDOIfTCepZ7Z7cNe4iQ
+ test-linux1804-64-asan/opt-web-platform-tests-wdspec-e10s-3: FBJN66wWS5CQGjQqJiNG5w
+ test-linux1804-64-asan/opt-xpcshell-e10s-1: YkY4HVqXThKhyTiQmZsSvg
+ test-linux1804-64-asan/opt-xpcshell-e10s-2: I3rYykeEQP-V-Y8jaVntiw
+ test-linux1804-64-asan/opt-xpcshell-e10s-3: IukJ8ZG_QBGr0yRlljRuMA
+ test-linux1804-64-asan/opt-xpcshell-e10s-4: KPWE6k3TSUC7pIzkg0TmmA
+ test-linux1804-64-asan/opt-xpcshell-e10s-5: NqBAVGjUT8yzF9jhg9VRMw
+ test-linux1804-64-devedition/opt-cppunit-1proc: UCobsSolRgG7GZ6tbr24aQ
+ test-linux1804-64-devedition/opt-crashtest-e10s: WQhJD8qeRtG5DQ5cBx0Vbg
+ test-linux1804-64-devedition/opt-firefox-ui-functional-local-e10s: SoqOefuFR9-OUGiGObU1ig
+ test-linux1804-64-devedition/opt-firefox-ui-functional-remote-e10s: GJ7lhp5BRXuIv3ZZf53I_Q
+ test-linux1804-64-devedition/opt-marionette-e10s: WF-LguxNQ7ia7gGeD_eUJA
+ test-linux1804-64-devedition/opt-mochitest-a11y-1proc: QqFplW4yRpa3ncGg7HwPVQ
+ test-linux1804-64-devedition/opt-mochitest-browser-chrome-e10s-1: EXfXTwWtRX2akdERgn4CDw
+ test-linux1804-64-devedition/opt-mochitest-browser-chrome-e10s-2: RR37Brj-TKWDr81Oo7lIwQ
+ test-linux1804-64-devedition/opt-mochitest-browser-chrome-e10s-3: Lwo6i7_vTX-Fx7Evw814_g
+ test-linux1804-64-devedition/opt-mochitest-browser-chrome-e10s-4: QTLoDa57Sku3nckFjdbglg
+ test-linux1804-64-devedition/opt-mochitest-browser-chrome-e10s-5: ZIe8I148QC2I4hwYpofWSg
+ test-linux1804-64-devedition/opt-mochitest-browser-chrome-e10s-6: fKhVGeh_ReyIVst28hNK9Q
+ test-linux1804-64-devedition/opt-mochitest-browser-chrome-e10s-7: TgkFaih0R7ifRYp88tsr_g
+ test-linux1804-64-devedition/opt-mochitest-chrome-1proc-1: DNFMdQF8T66d4PGnHtS9tQ
+ test-linux1804-64-devedition/opt-mochitest-chrome-1proc-2: MKYudKddTGCVoRAtYMjeHQ
+ test-linux1804-64-devedition/opt-mochitest-chrome-gpu-e10s: ajt7vSlUQfCwymmSh3XYtA
+ test-linux1804-64-devedition/opt-mochitest-devtools-chrome-e10s-1: VGqYjoR1QfedGazYly__Qw
+ test-linux1804-64-devedition/opt-mochitest-devtools-chrome-e10s-2: KgwiVmaaTO6hzG-bgU_a0g
+ test-linux1804-64-devedition/opt-mochitest-devtools-chrome-e10s-3: J4ChY6hnQhGY_eZLZoKgUA
+ test-linux1804-64-devedition/opt-mochitest-devtools-chrome-e10s-4: CDR5EJl0R-W8u3cWgTr-0A
+ test-linux1804-64-devedition/opt-mochitest-devtools-chrome-e10s-5: W2bMF1dyTL2lSTjbqW0DPA
+ test-linux1804-64-devedition/opt-mochitest-media-e10s-1: GykMlpQiQP6weXO7v97ygQ
+ test-linux1804-64-devedition/opt-mochitest-media-e10s-2: WK14Q9OETiiE8Ab7x6Bunw
+ test-linux1804-64-devedition/opt-mochitest-media-spi-e10s-1: cD6IHzx_QimMG2r2MIGr0A
+ test-linux1804-64-devedition/opt-mochitest-media-spi-e10s-2: c4jShzYPQOaI5a07edMdbg
+ test-linux1804-64-devedition/opt-mochitest-plain-e10s-1: dDnxGlhhQlmSV4M3Kbcraw
+ test-linux1804-64-devedition/opt-mochitest-plain-e10s-2: SIXh-OrGQQqyqaXc76KWcg
+ test-linux1804-64-devedition/opt-mochitest-plain-e10s-3: eQGyjZHMQRKzZA0zKN2jlg
+ test-linux1804-64-devedition/opt-mochitest-plain-e10s-4: WIyfa4bLT8-hCNe3AJr-Ug
+ test-linux1804-64-devedition/opt-mochitest-plain-e10s-5: RCRsWd0XTeOkcuHG9aboqA
+ test-linux1804-64-devedition/opt-mochitest-plain-gpu-e10s: XgIQwLB8SpOfRnYaMsa1Og
+ test-linux1804-64-devedition/opt-mochitest-webgl1-core-e10s: CN9cxQNqT0qngJPVXQkQwQ
+ test-linux1804-64-devedition/opt-mochitest-webgl1-ext-e10s: R0jfmDp6SSuZbxWHedTv6g
+ test-linux1804-64-devedition/opt-mochitest-webgl2-core-e10s: UICvipJXSx66TOuLS2HhIQ
+ test-linux1804-64-devedition/opt-mochitest-webgl2-ext-e10s-1: GyBnP771R2KI18ijvCrvIw
+ test-linux1804-64-devedition/opt-mochitest-webgl2-ext-e10s-2: UYup0wmUQneCQvcdvU4iTw
+ test-linux1804-64-devedition/opt-mochitest-webgl2-ext-e10s-3: G41MO7j4QI2NA11jTvXDkw
+ test-linux1804-64-devedition/opt-mochitest-webgl2-ext-e10s-4: KuzS7KPCSRKED1xXiW6-lQ
+ test-linux1804-64-devedition/opt-reftest-e10s-1: M0zcKgoRT-CUUSTEb0yp8w
+ test-linux1804-64-devedition/opt-reftest-e10s-2: UTSpfQZlTkCDr-DNk4B62w
+ test-linux1804-64-devedition/opt-reftest-e10s-3: A0S7w6bzS5aVhhgC9ZTTWA
+ test-linux1804-64-devedition/opt-reftest-e10s-4: B_K-bxFtSu6SBO49xtsxSg
+ test-linux1804-64-devedition/opt-reftest-e10s-5: fs3gXROnSZOyWFe_lea4lg
+ test-linux1804-64-devedition/opt-reftest-no-accel-e10s-1: HVR_3_sAQpaFSaEAoGwntQ
+ test-linux1804-64-devedition/opt-reftest-no-accel-e10s-2: J2wAFomOSEudo4B3UTpTeQ
+ test-linux1804-64-devedition/opt-reftest-no-accel-e10s-3: LWB4hvO_RleCqdP8UNkQkw
+ test-linux1804-64-devedition/opt-reftest-no-accel-e10s-4: a64t1uWWTmWPacgriUFPww
+ test-linux1804-64-devedition/opt-telemetry-tests-client-e10s: MDR7KViuSkKyo3mIMD-66w
+ test-linux1804-64-devedition/opt-web-platform-tests-crashtest-e10s: HMLLkmyzT6-hKat-X9QP2w
+ test-linux1804-64-devedition/opt-web-platform-tests-e10s-1: EQsV041TRtiDgYBMGVNtgQ
+ test-linux1804-64-devedition/opt-web-platform-tests-e10s-10: BeFky33FRXKhcAXGk2FwdA
+ test-linux1804-64-devedition/opt-web-platform-tests-e10s-2: DqGL3U4jQKCWYDKJ9bCd2g
+ test-linux1804-64-devedition/opt-web-platform-tests-e10s-3: F9fXtE-ZRP-7aRt5hXtCqA
+ test-linux1804-64-devedition/opt-web-platform-tests-e10s-4: OPyYWjfDRLCl8zoH9ALATw
+ test-linux1804-64-devedition/opt-web-platform-tests-e10s-5: aGHaRnXETAGyrJmF6q_8IA
+ test-linux1804-64-devedition/opt-web-platform-tests-e10s-6: Klqn5c0QRja9kg28AdXpRg
+ test-linux1804-64-devedition/opt-web-platform-tests-e10s-7: dW8G5z5OSECEPEHBUqB6Hg
+ test-linux1804-64-devedition/opt-web-platform-tests-e10s-8: XrdVzSFdQTehH_AE-RyyCQ
+ test-linux1804-64-devedition/opt-web-platform-tests-e10s-9: R7cdNVEmQ9iTrsIPa3hClg
+ test-linux1804-64-devedition/opt-web-platform-tests-reftest-e10s-1: XSrW1cxmRJOuC-lK6NqBtw
+ test-linux1804-64-devedition/opt-web-platform-tests-reftest-e10s-2: NWnDl4MGQgmCosoN4xUWjw
+ test-linux1804-64-devedition/opt-web-platform-tests-reftest-e10s-3: Fbjx8VJ1SeyAP5k0G9L33w
+ test-linux1804-64-devedition/opt-web-platform-tests-wdspec-e10s-1: ANRw0MwER4eAueSVisL8sw
+ test-linux1804-64-devedition/opt-web-platform-tests-wdspec-e10s-2: I-zgY1_dQf6QOwcLcmQ1lQ
+ test-linux1804-64-devedition/opt-web-platform-tests-wdspec-e10s-3: YOVgfYENSNa1hOxwYCddqg
+ test-linux1804-64-devedition/opt-xpcshell-e10s-1: BG9h8uhFTb-DJ9amZK9R6Q
+ test-linux1804-64-devedition/opt-xpcshell-e10s-2: SY-q6q9fRFCOcAd2GKDFHg
+ test-linux1804-64-devedition/opt-xpcshell-e10s-3: dtYsn1PCSvCbvaxBCYlBwQ
+ test-linux1804-64-devedition/opt-xpcshell-e10s-4: KTHoKE-ARQaDA3c2jEFM6A
+ test-linux1804-64-devedition/opt-xpcshell-e10s-5: NxI2jm60Rveczv96cyIv8Q
+ test-linux1804-64-qr/debug-cppunit-1proc: VFdpUotdSXaAb_L9YsQepQ
+ test-linux1804-64-qr/debug-crashtest-e10s: ITTEK3NOR_26OZH722uMwg
+ test-linux1804-64-qr/debug-gtest-1proc: DDP7guKlSC2-kcWa3kUc9Q
+ test-linux1804-64-qr/debug-mochitest-a11y-1proc: ZRmkeBVJTXa-aMGEt6sH-g
+ test-linux1804-64-qr/debug-mochitest-chrome-1proc-1: DA0JHnMLSsi175GgO-Ykmw
+ test-linux1804-64-qr/debug-mochitest-chrome-1proc-2: R-pfpiHOT82bTBfyg9Y4Eg
+ test-linux1804-64-qr/debug-mochitest-chrome-1proc-3: E2fAe3uASmO9ULCsO9hRkg
+ test-linux1804-64-qr/debug-mochitest-chrome-gpu-e10s: F08rrw6gQuy51ZlQuPz-EQ
+ test-linux1804-64-qr/debug-mochitest-media-e10s-1: aiZnTUUMS1G_fMj-_wW8PQ
+ test-linux1804-64-qr/debug-mochitest-media-e10s-2: NWQSYFOaSK2Hc-v6HbE_wA
+ test-linux1804-64-qr/debug-mochitest-media-e10s-3: FQ3WqAUsQN2X4G1hkT2ovA
+ test-linux1804-64-qr/debug-mochitest-media-spi-e10s-1: K7tImIuXRSyuOqBDOmYKjw
+ test-linux1804-64-qr/debug-mochitest-media-spi-e10s-2: LRODBK1ORDiX_3BUxFC8TQ
+ test-linux1804-64-qr/debug-mochitest-media-spi-e10s-3: Mrs5eTe5R7CzDFy56q3bHg
+ test-linux1804-64-qr/debug-mochitest-plain-e10s-1: PBzthYSGQTqFreWDpGRVMg
+ test-linux1804-64-qr/debug-mochitest-plain-e10s-10: b7oSfFsvTkukkrx8NwTE9w
+ test-linux1804-64-qr/debug-mochitest-plain-e10s-11: WtFz_BtqQ9O3CkuRabj7Ow
+ test-linux1804-64-qr/debug-mochitest-plain-e10s-12: bD0LJb61ThKHmhfFDmo3bQ
+ test-linux1804-64-qr/debug-mochitest-plain-e10s-13: HsGwB-3KTruTLCEZqodxJg
+ test-linux1804-64-qr/debug-mochitest-plain-e10s-14: R7A_bmgZQGmDqxBMepa42A
+ test-linux1804-64-qr/debug-mochitest-plain-e10s-15: O2Pxypc8R9G0EmZqxpbCuQ
+ test-linux1804-64-qr/debug-mochitest-plain-e10s-16: fzUm6eAkQ_OJjRoo2Z9uEg
+ test-linux1804-64-qr/debug-mochitest-plain-e10s-2: TfKILRd6QeSjM_PiGC4Buw
+ test-linux1804-64-qr/debug-mochitest-plain-e10s-3: QRgLA-gtRG2UxNhqXaOm5A
+ test-linux1804-64-qr/debug-mochitest-plain-e10s-4: QszmxNOCS3GagO3FD6XwIQ
+ test-linux1804-64-qr/debug-mochitest-plain-e10s-5: cxq6LnOKRSSeBAdiZTf1GA
+ test-linux1804-64-qr/debug-mochitest-plain-e10s-6: E1-PhMMtQVCtt1D6VVaRYA
+ test-linux1804-64-qr/debug-mochitest-plain-e10s-7: JzIH9_U4QTClnvCmw-2DeA
+ test-linux1804-64-qr/debug-mochitest-plain-e10s-8: MmkN5qTNRYOtA0jbHhF1dQ
+ test-linux1804-64-qr/debug-mochitest-plain-e10s-9: AjjCT5dkTjqETDix7pqXVA
+ test-linux1804-64-qr/debug-mochitest-plain-gpu-e10s: WSDu4njTRV6bMONfs4YdXg
+ test-linux1804-64-qr/debug-mochitest-webgl1-core-e10s: W2dRtl6LSNyaXs7u_eo-PQ
+ test-linux1804-64-qr/debug-mochitest-webgl1-ext-e10s: NSrBN2y_T4WQTh8tYk8Vlw
+ test-linux1804-64-qr/debug-mochitest-webgl2-core-e10s: Ae3NyXFJQUuH8i-Szp_ZTg
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-1: A6CdRn6UQLiGBAV9Os2tlA
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-2: TcaEBmRmSKmUNICXE4dKhw
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-3: HdMRSwqNT6imJy-zQkRQ2A
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-4: NKi2XaawRXal0TsUTD7nng
+ test-linux1804-64-qr/debug-reftest-e10s-1: bBd6X1iCRPy_9EB8fh7Xig
+ test-linux1804-64-qr/debug-reftest-e10s-2: TwKLermJR5uWFMZ95KLhgA
+ test-linux1804-64-qr/debug-reftest-e10s-3: bv69WJuHSACeZDP_-90KFQ
+ test-linux1804-64-qr/debug-reftest-e10s-4: LTA2AJOATiqb1qToJVLIpA
+ test-linux1804-64-qr/debug-reftest-e10s-5: Rjp4dYqfTzu9kVdAHPd7kQ
+ test-linux1804-64-qr/debug-reftest-e10s-6: USffYzeEQI65VDASSaSQMA
+ test-linux1804-64-qr/debug-reftest-e10s-7: YxlrsDuCQHmZ7z7vN3iyYA
+ test-linux1804-64-qr/debug-reftest-e10s-8: W3wa56f3RTCwEeY_y1Ua3Q
+ test-linux1804-64-qr/debug-web-platform-tests-crashtest-e10s: fCI1yqWYQ1i9xKyTxh_Lfw
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-1: btQbkuUlR46TwIYrC4jSTw
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-10: bWpAPf-MQf6X85tT43bdSA
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-11: UUxlR2PdQv-Fs2NGAPfU-g
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-12: a4nuZgrYQO2XB7PpCzsm3A
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-13: TwRcAl5nSkiT4XLBXa8aVg
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-14: ECMKjuHjQ4qJU2PesOURKQ
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-15: GwjvRU2JSQ6m7-xaujwmug
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-16: VgK6-wCUS9qi70Mj-gp_nw
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-2: Mw_FRZ0rR-6D_4d_j6uKbg
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-3: dgpcsEhQRRuw-cvMFCNI4w
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-4: OUnPIKpST22cD9yZkuaaxQ
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-5: cuPenv0oTi-Z5q0KayqHew
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-6: J3I9mYZfRMeF4VFM2c8zGw
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-7: Y3e1Zq-yQU61Lu8SZQBo4w
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-8: W499qc0iQVSH6NrP1nNljw
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-9: P9RqAV0iS9iLU8xaGET-Mg
+ test-linux1804-64-qr/debug-web-platform-tests-reftest-e10s-1: HTogukLKTD6-44K27LCqxQ
+ test-linux1804-64-qr/debug-web-platform-tests-reftest-e10s-2: R3bDyKRkTBmPey8pAHJt6w
+ test-linux1804-64-qr/debug-web-platform-tests-reftest-e10s-3: Pk3UsUUGSxq5SBerw_xfDA
+ test-linux1804-64-qr/debug-web-platform-tests-reftest-e10s-4: dg0Kp1SXRy-IJefosuCKYA
+ test-linux1804-64-qr/debug-web-platform-tests-reftest-e10s-5: LJ_NPDYQTrC1z3mKA1NdcA
+ test-linux1804-64-qr/debug-web-platform-tests-reftest-e10s-6: efMyDznpRaOPG3bxINSYSQ
+ test-linux1804-64-qr/debug-web-platform-tests-wdspec-e10s-1: ecrcbs7QQI6Ed9gZz5STzQ
+ test-linux1804-64-qr/debug-web-platform-tests-wdspec-e10s-2: OgbHqkaHSMSpNHq5s2rRxA
+ test-linux1804-64-qr/debug-web-platform-tests-wdspec-e10s-3: RtvgDiHKTYST1uNIRG_ffw
+ test-linux1804-64-qr/debug-xpcshell-e10s-1: EMvo365QSjO3t17YsX_fug
+ test-linux1804-64-qr/debug-xpcshell-e10s-2: WkQv1dnqSOKWJNFZ6JNZ3g
+ test-linux1804-64-qr/debug-xpcshell-e10s-3: f4la2pVYQyCM1rZXWT-y4A
+ test-linux1804-64-qr/debug-xpcshell-e10s-4: O6Bb1VfIT66Ra6gLKEtBKA
+ test-linux1804-64-qr/debug-xpcshell-e10s-5: ZuIm3LMOTxORD3pXlv6LLQ
+ test-linux1804-64-qr/debug-xpcshell-e10s-6: ehkrdwUKTWO8kA1viKTlaQ
+ test-linux1804-64-shippable-qr/opt-awsy-base-e10s: ehYrz3oGT1GAlKSx2f0HoA
+ test-linux1804-64-shippable-qr/opt-awsy-e10s: evSQ7ewMT8SJyNz8D6a31Q
+ test-linux1804-64-shippable-qr/opt-awsy-tp6-e10s: E5b1WG48SIyQ3QCzBSIIMA
+ test-linux1804-64-shippable-qr/opt-cppunit-1proc: Ssn1TgryR_y8aKrrUciQfg
+ test-linux1804-64-shippable-qr/opt-crashtest-e10s: NoAP2iH7SYyVzNiPQkVaIA
+ test-linux1804-64-shippable-qr/opt-gtest-1proc: cOBdPeMwQwqK5WGbpRT_rQ
+ test-linux1804-64-shippable-qr/opt-mochitest-a11y-1proc: ap1HT4T6S2mdTkNLk4f19g
+ test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-1: J9WPzU0-S5q1Fj1PMsSrkA
+ test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-2: Hb6ZialuTh2tfbOUupGpcA
+ test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-3: FMV5ufE7RoOTVNUoh_dXNQ
+ test-linux1804-64-shippable-qr/opt-mochitest-chrome-gpu-e10s: ZUUVsrvhRpeoWw0sDs4VgA
+ test-linux1804-64-shippable-qr/opt-mochitest-media-e10s-1: a_6thDXKQo-RCh2wX3lMQA
+ test-linux1804-64-shippable-qr/opt-mochitest-media-e10s-2: Z4HWqBHYQiS-sPdNJNzcFA
+ test-linux1804-64-shippable-qr/opt-mochitest-media-spi-e10s-1: DC-Z9VINS2SZp4qzqmSzNw
+ test-linux1804-64-shippable-qr/opt-mochitest-media-spi-e10s-2: bheaeaOKRoCj2QRfB0gf9A
+ test-linux1804-64-shippable-qr/opt-mochitest-plain-e10s-1: RDlTKwRjSx6Ehd7zqa23fQ
+ test-linux1804-64-shippable-qr/opt-mochitest-plain-e10s-2: Sax2J5I4Szac1nWpn9-qrA
+ test-linux1804-64-shippable-qr/opt-mochitest-plain-e10s-3: ddE4lEEkRCKwWVPRCXUlAw
+ test-linux1804-64-shippable-qr/opt-mochitest-plain-e10s-4: aufGWJ4HS96iZ2xEyo5Pvg
+ test-linux1804-64-shippable-qr/opt-mochitest-plain-e10s-5: VdsJcKtuQVanJbjp4dqK4w
+ test-linux1804-64-shippable-qr/opt-mochitest-plain-gpu-e10s: bvGjcdXbT-SPdwaSPvAX6A
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl1-core-e10s: PqugxwDTQSybaqiY6yde4A
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl1-ext-e10s: aL5YB9tzReuSBefV8XrEew
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl2-core-e10s: buJdAOovTSmKIAMch5SUNA
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-1: OHhS_z5ZRx-Ubchdqzr96Q
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-2: SRL2FqRRRd65_UV8jYIijw
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-3: DKvecMssSW-Y1WcGl8jqGA
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-4: dJhGz7HDQmKOVRYS2wPIYg
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-1: LYHGEqALTwuISqTLWx6eUA
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-2: VWHMf1aSSTKtWUIQc1JSCQ
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-3: ajt9QLOZSrWkebpuMsa0Ug
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-4: CNbI3s5lSeqMAEXNTLuOyQ
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-5: AbwMwvBOTuSrJtDYAAKaWw
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-6: LlLshHxhQRyBupNW5btccA
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-7: DOZkQz46RIi1Q75UNVeGgw
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-8: Quc0hPFmSJqhPA7MzOEYow
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-crashtest-e10s: MhCUPQ3XTPGzB4mdYAmOPw
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-1: LDCaMDEETKaOEiCI3Hfz_w
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-10: VNYS1veCSZK5N-92ldNuaA
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-2: RW6J-WVzSayeiqcKUznwyg
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-3: OmKSb8YoRkCbh1ziZGCcKQ
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-4: FrUVzRFQTZe2a6j3eYN4BQ
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-5: V-oi8FW-Tvq7Kkez0KosAg
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-6: alLeC6KXRna8AzQ2P-sVGQ
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-7: fUlH5kyiSieZDXI6ud6alg
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-8: ewHY9doaRBqvV_aVI0gxQA
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-9: dobtzstDQ1a59tqZT5yDeg
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-e10s-1: d0O6vs86QUaMMEiuZo667A
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-e10s-2: Tm3qB2GYRIOQg4alJ7ex6A
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-e10s-3: M79oMdt2REWo3jAfX-ynJQ
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-e10s-4: EwlcPgogTGiyF5fHdpJsSw
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-1: V-XHxPnxTfmOKWsnO9vk6Q
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-2: QJ6JyHP6TU2LDefTSmpUZQ
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-3: TlCo5AqETcy23lwVF9IXyg
+ test-linux1804-64-shippable-qr/opt-xpcshell-e10s-1: K2wYDkTVSzOfzhPUF_4pEQ
+ test-linux1804-64-shippable-qr/opt-xpcshell-e10s-2: cPbdkwL5Rju6WddDvds7NA
+ test-linux1804-64-shippable-qr/opt-xpcshell-e10s-3: YuJL9HfUTOOg-yzivQC7kQ
+ test-linux1804-64-shippable-qr/opt-xpcshell-e10s-4: OkSzgHBpR9SoRd19OEA-zQ
+ test-linux1804-64-shippable-qr/opt-xpcshell-e10s-5: aqTNL-4nT3eA-JQZVSmcqA
+ test-linux1804-64-shippable/opt-awsy-base-e10s: Dq2zL2CqRz2CW9vdoQkjug
+ test-linux1804-64-shippable/opt-awsy-e10s: KzWnZ4hoQf6CTl5k3m3k-w
+ test-linux1804-64-shippable/opt-awsy-tp6-e10s: BzpSuW3bQ8K86uBRAAYU8A
+ test-linux1804-64-shippable/opt-cppunit-1proc: Q12Cug-KQiu9jOVTohB1uw
+ test-linux1804-64-shippable/opt-crashtest-e10s: OzczpyweRQqaMkKj2Y6RBQ
+ test-linux1804-64-shippable/opt-firefox-ui-functional-local-e10s: RUj5du81SxCVPSmc6y_ygQ
+ test-linux1804-64-shippable/opt-firefox-ui-functional-remote-e10s: SFyJfGsPSEq0ev2TQGGJbw
+ test-linux1804-64-shippable/opt-gtest-1proc: QYBq1hP5TcqdZH5X50VMWQ
+ test-linux1804-64-shippable/opt-marionette-e10s: EJ4GjRoWR_K-cnfBrMoGtQ
+ test-linux1804-64-shippable/opt-marionette-headless-e10s: cr6_DHlUQxOY0E3Q0Ps7ag
+ test-linux1804-64-shippable/opt-mochitest-a11y-1proc: bKuNkPYNRxO9GMW3rL6WdQ
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-1: W63_6pPXTu23vrzgZRWodw
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-2: D1TnH2EISt2zmVuMnPxduQ
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-3: O35MvXBJTEuXw78EdSHlWw
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-4: bJ7aSbxsSdqRqklq0jhPJA
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-5: E6X-OF6RREyWd6eH4LIvBg
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-6: VZwKTHNaRmq4CxZinfdTxQ
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-7: PJ_oLTM7TF6CtdfNciBkyA
+ test-linux1804-64-shippable/opt-mochitest-chrome-1proc-1: KbN52RxvRv2aYsZcLq_GyQ
+ test-linux1804-64-shippable/opt-mochitest-chrome-1proc-2: SRqGqynQTRWwAmMMSm277g
+ test-linux1804-64-shippable/opt-mochitest-chrome-gpu-e10s: bS4GePJqTCGomBvL0FI4qw
+ test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-1: XzVr8FvkTiWPl_rGjs_YkA
+ test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-2: dOQikzuDT0WzMEc_ACUltQ
+ test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-3: SxyrRyJiSkGLV-hfjf36ew
+ test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-4: C8O_xA4rT0eCre6USfEjBQ
+ test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-5: IuqW4NuqTqyyPHzoYlP9NA
+ test-linux1804-64-shippable/opt-mochitest-media-e10s-1: MiuUtEoySzee9QJk4-B-_g
+ test-linux1804-64-shippable/opt-mochitest-media-e10s-2: TIFOO_d_R7ijGjAvZiSsjQ
+ test-linux1804-64-shippable/opt-mochitest-media-spi-e10s-1: OpeZ8Lx7Ty6_00JXKgqMnQ
+ test-linux1804-64-shippable/opt-mochitest-media-spi-e10s-2: WRxXaKg7SA2VObd50qvGDg
+ test-linux1804-64-shippable/opt-mochitest-plain-e10s-1: NOczw-2ZSWyhVhNP0ni8bA
+ test-linux1804-64-shippable/opt-mochitest-plain-e10s-2: f2SyBiUkSM6pXGEDGhACeg
+ test-linux1804-64-shippable/opt-mochitest-plain-e10s-3: Es5gH8qISLqB7hTv2xkypg
+ test-linux1804-64-shippable/opt-mochitest-plain-e10s-4: ejOmgQILSV2i87HG-gglFA
+ test-linux1804-64-shippable/opt-mochitest-plain-e10s-5: Z_MWJg0aQ4aN-ZDg1TEEgg
+ test-linux1804-64-shippable/opt-mochitest-plain-gpu-e10s: EIzG55ZvQKuwI06IeuSVkA
+ test-linux1804-64-shippable/opt-mochitest-webgl1-core-e10s: LLQtpYq5SkiyBQi3BFlMQA
+ test-linux1804-64-shippable/opt-mochitest-webgl1-ext-e10s: dV6LpM_TQBSh1m00bw-dVQ
+ test-linux1804-64-shippable/opt-mochitest-webgl2-core-e10s: ODV8gO3iRCW6TWSRcuhzzQ
+ test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-1: dHDgFR48SaW7ZCgxAupaLw
+ test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-2: HFBiy1voQJujgVFT70-7Ig
+ test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-3: LOfVnsApThu5gtRpp_aOHg
+ test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-4: AaiGPlWpSam3EAWMTgE2Ag
+ test-linux1804-64-shippable/opt-reftest-e10s-1: WIODio0_QPmf-WJiYx7cHA
+ test-linux1804-64-shippable/opt-reftest-e10s-2: F0wyYUSNSZGfh8vpI5trgw
+ test-linux1804-64-shippable/opt-reftest-e10s-3: Hvui-X9RRx6kIMMGHYFDmg
+ test-linux1804-64-shippable/opt-reftest-e10s-4: IVH6cAQUTrG_LQSiWTpTtg
+ test-linux1804-64-shippable/opt-reftest-e10s-5: RD1IIxAkSqCZI8X4pI1Y6w
+ test-linux1804-64-shippable/opt-reftest-no-accel-e10s-1: NA2uvgZvRMKFIwuAhxaijw
+ test-linux1804-64-shippable/opt-reftest-no-accel-e10s-2: RSrDBYSpR-eW_QaCArICmA
+ test-linux1804-64-shippable/opt-reftest-no-accel-e10s-3: AKBCVgN-SKSar7YVupxwag
+ test-linux1804-64-shippable/opt-reftest-no-accel-e10s-4: fetQgcNBSm6ZzyjFOviTCw
+ test-linux1804-64-shippable/opt-telemetry-tests-client-e10s: NlBGozeCReizBqbqttK92A
+ test-linux1804-64-shippable/opt-web-platform-tests-crashtest-e10s: Y-PZGZ_BSHeFk9k0MbXSYg
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-1: Q9cWugvNT3KZ5-xOIGXPSA
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-10: Y0OwcgzxTSeHvZQxqOdGMw
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-2: OsdmjPrWQSmq88-3Gg1oIA
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-3: OP-HLfbSQoGslPw0oODEzA
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-4: SunxTJCETtKiaSPYUpRcIw
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-5: F0TsTndGTgi8-vreoHkirg
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-6: dIsqrPz6TYSoQ_iQA16izA
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-7: f9TNS_Z0QhK9o1XiEWAHvw
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-8: SyI3IR-MS8qze6h0xsOUFQ
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-9: NfC6VIEzQKa2AuXacxz67Q
+ test-linux1804-64-shippable/opt-web-platform-tests-reftest-e10s-1: HjSkLTnjQBOR5z3uj8qUyA
+ test-linux1804-64-shippable/opt-web-platform-tests-reftest-e10s-2: AAo6dndnSnutVlVz54XPhA
+ test-linux1804-64-shippable/opt-web-platform-tests-reftest-e10s-3: TvDNDvV-Tn2NmyTvNrWcXg
+ test-linux1804-64-shippable/opt-web-platform-tests-wdspec-e10s-1: DdJAmSMJTEqnBgFrN4YSew
+ test-linux1804-64-shippable/opt-web-platform-tests-wdspec-e10s-2: BBAY9mCKSOm9I2aNy1maJQ
+ test-linux1804-64-shippable/opt-web-platform-tests-wdspec-e10s-3: IcQGTu8URzKdrBI4HE6pfA
+ test-linux1804-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: JeTvQWWBQTuLYrFpgG4Lcw
+ test-linux1804-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: U3fZ3GHwQBa61YsxbIk1ow
+ test-linux1804-64-shippable/opt-xpcshell-e10s-1: SSnWZoWKSAizFm090wRlZg
+ test-linux1804-64-shippable/opt-xpcshell-e10s-2: Vnj7kYdWTgme-Zh81lGM6Q
+ test-linux1804-64-shippable/opt-xpcshell-e10s-3: IfURyvpYTXOxELH6dQfZ5g
+ test-linux1804-64-shippable/opt-xpcshell-e10s-4: Qx3QYzL3TsOAIj3BD1HW0Q
+ test-linux1804-64-shippable/opt-xpcshell-e10s-5: aXtYaOiISfiTAWgNgQeDgQ
+ test-linux1804-64-tsan/opt-mochitest-plain-e10s-1: eGBv6ezRREucrQ1LoMVFtQ
+ test-linux1804-64-tsan/opt-mochitest-plain-e10s-10: fZV9DJwjRVCcIXkAqWVWGw
+ test-linux1804-64-tsan/opt-mochitest-plain-e10s-11: WiNw_MrkRpSzAnRxEhxNYg
+ test-linux1804-64-tsan/opt-mochitest-plain-e10s-12: MHpdszKnRMaWA0k1e01LUA
+ test-linux1804-64-tsan/opt-mochitest-plain-e10s-13: AV-rnMMFTKurj6Fqt_gVbg
+ test-linux1804-64-tsan/opt-mochitest-plain-e10s-14: KyhFv5muRuyS22OEgURT0Q
+ test-linux1804-64-tsan/opt-mochitest-plain-e10s-15: D2TndPhTQIWde9JSq3s_5w
+ test-linux1804-64-tsan/opt-mochitest-plain-e10s-16: IWgEIYtGQXGxfhz_3AVu2g
+ test-linux1804-64-tsan/opt-mochitest-plain-e10s-17: cU5Z5XshRBWbzBVXNbLYkg
+ test-linux1804-64-tsan/opt-mochitest-plain-e10s-18: PNkbxM-eRbef1Iiiy4tPqA
+ test-linux1804-64-tsan/opt-mochitest-plain-e10s-19: C8vsmN3qSC6DZxSGgMAuDA
+ test-linux1804-64-tsan/opt-mochitest-plain-e10s-2: fmLe__hEQJKWQpLK1KQjDw
+ test-linux1804-64-tsan/opt-mochitest-plain-e10s-20: HXbaDpWMRKiURIx-baP3jg
+ test-linux1804-64-tsan/opt-mochitest-plain-e10s-3: LtCKflYiQjKC6-7Cv3Xp7Q
+ test-linux1804-64-tsan/opt-mochitest-plain-e10s-4: TH9dWE9jRjmwVFg7_3aG6Q
+ test-linux1804-64-tsan/opt-mochitest-plain-e10s-5: C9MjVP67R2Wro0QtxJTaRQ
+ test-linux1804-64-tsan/opt-mochitest-plain-e10s-6: HVQ4oTBEQJqypZeoQqUzTw
+ test-linux1804-64-tsan/opt-mochitest-plain-e10s-7: DmQ0qnlGT1yPzk9TnmZRSg
+ test-linux1804-64-tsan/opt-mochitest-plain-e10s-8: AdLSpZTYTpGMwVBoR_v0SA
+ test-linux1804-64-tsan/opt-mochitest-plain-e10s-9: FGXdFv5VQ5qfHXy_JhDGUw
+ test-linux1804-64-tsan/opt-xpcshell-e10s-1: V5MHHfZmScmPwUO-SSWecQ
+ test-linux1804-64-tsan/opt-xpcshell-e10s-2: LVLFQXOJSOmIEFf5wx3zAA
+ test-linux1804-64-tsan/opt-xpcshell-e10s-3: CdaHnF-nR6ic112XkjT6vw
+ test-linux1804-64-tsan/opt-xpcshell-e10s-4: YrfQ2cpGQqG2DePXlcBa-A
+ test-linux1804-64-tsan/opt-xpcshell-e10s-5: crLl-ZNkStOb96az7iSLMQ
+ test-linux1804-64-tsan/opt-xpcshell-e10s-6: KdBoYtPgTPicfp1mQeRXPw
+ test-linux1804-64-tsan/opt-xpcshell-e10s-7: aSUkmm51SxW1XyVKjq_MEw
+ test-linux1804-64-tsan/opt-xpcshell-e10s-8: DGbfYpDhQEa-i35nbMO-Xw
+ test-linux1804-64/debug-cppunit-1proc: AS5YIMt4RxKftMtNg3phRg
+ test-linux1804-64/debug-crashtest-e10s: WplFGsXeRp6H_3RmDIN3Gw
+ test-linux1804-64/debug-firefox-ui-functional-local-e10s: HP1OCvKQTRiusc8wsajBDg
+ test-linux1804-64/debug-firefox-ui-functional-remote-e10s: Iyrw4ntkTOC-1yUQ5u6Smw
+ test-linux1804-64/debug-gtest-1proc: RvGpM7wtSDCCKCVkrCmEpQ
+ test-linux1804-64/debug-marionette-e10s: R7ZIto0USBylitU1Z0G9og
+ test-linux1804-64/debug-mochitest-a11y-1proc: SPsfPqAcTEu6IglJ26dQEA
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-1: PTf8jjhNRxStrfCK0BxE3g
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-10: Tbs1vtSmRa6feW-xpRU-pA
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-11: SsogmtLXRgiBELl1T2xhlg
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-12: ZkZelZxNTM-dvk5IjeaCQA
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-13: EHhIva0rSgC0hoOOmr1RWg
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-14: D_OtdnjzSs2t48P2m2ivvw
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-15: UJV-9pDtSDirWb8AuIMRVQ
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-16: P1ehoW2fQX-wFGhrhgFkAQ
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-2: UqvY67ecRxGfjoziC959yQ
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-3: N0SYmTBBR1mrHGA6gU32Fg
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-4: Hz9xwS2OQBmqmBWpG0VcOw
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-5: A0GaHkYORS-NTQbcorzhYQ
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-6: AWm7Nos7ShSaYoAtANzbuw
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-7: TtALBM1hQ2qoUHROYSZl5w
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-8: AEq0CQiHSCGygPwWhaMbJw
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-9: WG7DLqDHQTSQBs_smvSonA
+ test-linux1804-64/debug-mochitest-chrome-1proc-1: Qc8UaLKqQfanVLbkrrJ5uQ
+ test-linux1804-64/debug-mochitest-chrome-1proc-2: SuUrKUuxQ2uaT4-uT0grYw
+ test-linux1804-64/debug-mochitest-chrome-1proc-3: ZdIiuPKWR62wuF5bGW9Wog
+ test-linux1804-64/debug-mochitest-chrome-gpu-e10s: SDaCuik9TOuQBUoi2m6BTQ
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-1: U-_fb6hcSfqBJmi9fLZTiA
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-10: X7ZoLwa7Sqa0mrpmYDC0bw
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-11: TlOrfUrYQjCHIQK_7-KhTg
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-12: NZswymabR0Gi4DiusJvFWA
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-2: OMTvfHpOQ52orHLHm8ZqJw
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-3: GXuiBODdRz-tElkjPueBkA
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-4: FIsoet0ARS2GsAMI6kowAw
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-5: Dz3zjYFcR3CAU46O4Em-iA
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-6: XNR6DILAS-mo3GvyyoIULg
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-7: G4-ALYBVTsy5jzgKebNKvA
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-8: L5FwS6wvREKEfqQ5-Md5gg
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-9: MJgVsbu6R_a42kr7_6ErAA
+ test-linux1804-64/debug-mochitest-media-e10s-1: VOV947P1QpelouHhskAzgA
+ test-linux1804-64/debug-mochitest-media-e10s-2: TrDRqEgzTE27rd3WXXOsvw
+ test-linux1804-64/debug-mochitest-media-e10s-3: QagSE8xKQFiC50p-NeGObg
+ test-linux1804-64/debug-mochitest-media-spi-e10s-1: FzjnwpTaRUiP0OQJVTNxMg
+ test-linux1804-64/debug-mochitest-media-spi-e10s-2: YYHuLZ0bSPGrosFBPcF2lQ
+ test-linux1804-64/debug-mochitest-media-spi-e10s-3: BLKbo7n_R6erXgFRxEZYDw
+ test-linux1804-64/debug-mochitest-plain-e10s-1: KZqRzzMSSNe0l7EZaHONvw
+ test-linux1804-64/debug-mochitest-plain-e10s-10: JlxOU1J_QZigAAR6rOzjPA
+ test-linux1804-64/debug-mochitest-plain-e10s-11: cqO9PWydQYKB0IqZPQG3aQ
+ test-linux1804-64/debug-mochitest-plain-e10s-12: aIM46IC3T9qkAqECeeN8jA
+ test-linux1804-64/debug-mochitest-plain-e10s-13: ENN3bEenSZqVpNStjPtUJg
+ test-linux1804-64/debug-mochitest-plain-e10s-14: STGePPajRPy2Tv0KY8Mk-g
+ test-linux1804-64/debug-mochitest-plain-e10s-15: dIuTzeDCRG-Rn2MEexNSRw
+ test-linux1804-64/debug-mochitest-plain-e10s-16: MNrkB9G6Q1KH842LpNrFzQ
+ test-linux1804-64/debug-mochitest-plain-e10s-2: NoHPMiW8TTO-Dd6oGZ998A
+ test-linux1804-64/debug-mochitest-plain-e10s-3: Fm_m2QpZRZmVVkT1jUJxIA
+ test-linux1804-64/debug-mochitest-plain-e10s-4: HcuGUDY2SeeM3pFuiQLzZw
+ test-linux1804-64/debug-mochitest-plain-e10s-5: fdCAJRBPQGeDRU9OKbIM9g
+ test-linux1804-64/debug-mochitest-plain-e10s-6: ESymq2m6ShOjsKf2MYcuEQ
+ test-linux1804-64/debug-mochitest-plain-e10s-7: dBPk1bNRQP-TFB0lKFjpEw
+ test-linux1804-64/debug-mochitest-plain-e10s-8: aotgcY2fQC22_HOR9X85Kw
+ test-linux1804-64/debug-mochitest-plain-e10s-9: C8fNQVVsRWi07PyRe3KLYQ
+ test-linux1804-64/debug-mochitest-plain-gpu-e10s: fjLGXUBcR32YDOK7E50a4g
+ test-linux1804-64/debug-mochitest-webgl1-core-e10s: JmqLf8z2RIed5oCpESz-Ow
+ test-linux1804-64/debug-mochitest-webgl1-ext-e10s: HEZjL4vSSN-hXu9dHjZsfg
+ test-linux1804-64/debug-mochitest-webgl2-core-e10s: OmFmx-JUQFKj6MH2d18LYQ
+ test-linux1804-64/debug-mochitest-webgl2-ext-e10s-1: ePKCa8RtT5K4KAjerpvBZw
+ test-linux1804-64/debug-mochitest-webgl2-ext-e10s-2: SH57-C0FSu2G0DcdvkfAdQ
+ test-linux1804-64/debug-mochitest-webgl2-ext-e10s-3: fSP5LG2YS-qaQi79CNHd9w
+ test-linux1804-64/debug-mochitest-webgl2-ext-e10s-4: AMHm94PLS6ShRMQ0f6ARXw
+ test-linux1804-64/debug-reftest-e10s-1: DVzodI8iRF6djzEjsuHgzQ
+ test-linux1804-64/debug-reftest-e10s-2: AnM3QFA_TFy8rZ6aXDE1EQ
+ test-linux1804-64/debug-reftest-e10s-3: T-VUdLOmTC-cG-ZJSsqlYA
+ test-linux1804-64/debug-reftest-e10s-4: ZE0UBimrRT2t1IcQP5ZPEQ
+ test-linux1804-64/debug-reftest-e10s-5: dPU09WN-TjeWO14bXwZTjw
+ test-linux1804-64/debug-reftest-e10s-6: a41seT8vQnSNuuVH8-qgAA
+ test-linux1804-64/debug-reftest-e10s-7: EN3N2PPdTVyz303W2TMEbw
+ test-linux1804-64/debug-reftest-e10s-8: Jb1VeGq2SweP1TgCppTNNw
+ test-linux1804-64/debug-reftest-no-accel-e10s-1: bPy9DwqcTJSoRI19AL2iWA
+ test-linux1804-64/debug-reftest-no-accel-e10s-2: W9QqjWEkRJaVv0tVXocvWw
+ test-linux1804-64/debug-reftest-no-accel-e10s-3: HLbJTBKMQoe4738bBpd_XA
+ test-linux1804-64/debug-reftest-no-accel-e10s-4: JV8kYcUcT9ul3BeEepmIZw
+ test-linux1804-64/debug-reftest-no-accel-e10s-5: IhN_2LrkQzmCu0IuKBSVZQ
+ test-linux1804-64/debug-reftest-no-accel-e10s-6: HaBEiDBmRyOx3zBCtAgnAQ
+ test-linux1804-64/debug-reftest-no-accel-e10s-7: fCA5jQMfQUOAPYN0yhcQHQ
+ test-linux1804-64/debug-reftest-no-accel-e10s-8: MkWy0uBgSOCHlvjZmycGWw
+ test-linux1804-64/debug-telemetry-tests-client-e10s: XGKez9_JR2WpRJAeNiCrzw
+ test-linux1804-64/debug-web-platform-tests-crashtest-e10s: Q3Rdpgy4QYm0ypYqkqbQLg
+ test-linux1804-64/debug-web-platform-tests-e10s-1: Ko8TBx1-TFSeXfyn7dv31g
+ test-linux1804-64/debug-web-platform-tests-e10s-10: XXz3Ztj5RnKhXPK9YG1eyw
+ test-linux1804-64/debug-web-platform-tests-e10s-11: KxwOrFSMQBSKKTrZKKzy_w
+ test-linux1804-64/debug-web-platform-tests-e10s-12: I9b07b7wSiqLAeQ4x5I5oQ
+ test-linux1804-64/debug-web-platform-tests-e10s-13: PUYehnMTSN6TKtsRGIb4aQ
+ test-linux1804-64/debug-web-platform-tests-e10s-14: X5e2wTEuQtefJD_Sm2a_Fw
+ test-linux1804-64/debug-web-platform-tests-e10s-15: aQF_19rdTumJLHspFwqzzQ
+ test-linux1804-64/debug-web-platform-tests-e10s-16: Krbw13zdSJy8dcHsKgZqwQ
+ test-linux1804-64/debug-web-platform-tests-e10s-2: Z6EWTmhwSoaJmb9-dRjxUQ
+ test-linux1804-64/debug-web-platform-tests-e10s-3: KlTMVL-rSk-FOKiliJIUMw
+ test-linux1804-64/debug-web-platform-tests-e10s-4: YMKG7OBRQqebY953GPK_wg
+ test-linux1804-64/debug-web-platform-tests-e10s-5: SvnW9IvDRlqeTvsOxlvV0A
+ test-linux1804-64/debug-web-platform-tests-e10s-6: VMpLPFL8TdSMgxzB3LBooQ
+ test-linux1804-64/debug-web-platform-tests-e10s-7: avGKBKOHQZKxIoaTQsGMaw
+ test-linux1804-64/debug-web-platform-tests-e10s-8: N4-FcsH8S9iNLE5EA1_whw
+ test-linux1804-64/debug-web-platform-tests-e10s-9: LAWerzD6Q_65ANDewumQeA
+ test-linux1804-64/debug-web-platform-tests-reftest-e10s-1: YFaJ6bfPQECiERbC4Tr1pA
+ test-linux1804-64/debug-web-platform-tests-reftest-e10s-2: ArJGu7uiRHOGcBxm5cULCg
+ test-linux1804-64/debug-web-platform-tests-reftest-e10s-3: AS9aZRaUS-WPTM8LS-iZkQ
+ test-linux1804-64/debug-web-platform-tests-reftest-e10s-4: BdvrV3xIR5OEGFRnHosTbw
+ test-linux1804-64/debug-web-platform-tests-wdspec-e10s-1: en1DjMFgThaz-YmsGouLbQ
+ test-linux1804-64/debug-web-platform-tests-wdspec-e10s-2: b6s3tNvrRdeWasKzPYBQSw
+ test-linux1804-64/debug-web-platform-tests-wdspec-e10s-3: PvSZt6yEQAOds3wD_ZsgVQ
+ test-linux1804-64/debug-xpcshell-e10s-1: RldSsOXrR2Ou830dqysiyw
+ test-linux1804-64/debug-xpcshell-e10s-2: DVeh-V14S7eF6zV3EEx_HA
+ test-linux1804-64/debug-xpcshell-e10s-3: bX4pD8nUSlKeDDZSxR89FA
+ test-linux1804-64/debug-xpcshell-e10s-4: AaEt3l_vRa23Jm8DAHTnuA
+ test-linux1804-64/debug-xpcshell-e10s-5: WtxmSpqeSTiQqE5_hw-SbQ
+ test-linux1804-64/debug-xpcshell-e10s-6: NlvEjDr3SD6e_TeYGd2Oug
+ test-linux64-shippable-qr/opt-raptor-ares6-firefox-e10s: HZl2pSPSSFCFufNJeScRJg
+ test-linux64-shippable-qr/opt-raptor-assorted-dom-firefox-e10s: dKWnayWtQLGBHqh3PLuy8Q
+ test-linux64-shippable-qr/opt-raptor-motionmark-animometer-firefox-e10s: YgZDwIsMQZ-TG0EsBzPzkg
+ test-linux64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: Mye4GXy1QbqOdcK4O-TUrQ
+ test-linux64-shippable-qr/opt-raptor-speedometer-firefox-e10s: HfYAOsFsRuu9yAajffXHlA
+ test-linux64-shippable-qr/opt-raptor-stylebench-firefox-e10s: CjOj4KNIRpKfwn8qIdnEHQ
+ test-linux64-shippable-qr/opt-raptor-sunspider-firefox-e10s: XTEVZOEeRNCu-MC4l8fZpQ
+ test-linux64-shippable-qr/opt-raptor-tp6-1-firefox-cold-e10s: UqYdm77hSummZYe7uBe1gw
+ test-linux64-shippable-qr/opt-raptor-tp6-10-firefox-cold-e10s: YOn9waP7Qm6TtvT7-TG6Nw
+ test-linux64-shippable-qr/opt-raptor-tp6-11-firefox-cold-e10s: alkH3JUeR7CwpvjLsViefQ
+ test-linux64-shippable-qr/opt-raptor-tp6-12-firefox-cold-e10s: KVbMrgBMQJqB2LMgSDwh-A
+ test-linux64-shippable-qr/opt-raptor-tp6-13-firefox-cold-e10s: bHlHDMIMRcWBc8DTmUKmnA
+ test-linux64-shippable-qr/opt-raptor-tp6-14-firefox-cold-e10s: JCrRMJnNQpqAZjK-ZnW3iw
+ test-linux64-shippable-qr/opt-raptor-tp6-15-firefox-cold-e10s: alIiYTaoQeiHCOCA_dpq_g
+ test-linux64-shippable-qr/opt-raptor-tp6-16-firefox-cold-e10s: bCqXJ28ZRKu2w1YJoZ2A5Q
+ test-linux64-shippable-qr/opt-raptor-tp6-17-firefox-cold-e10s: Wsxk9zIUSsWtv1rzcY4QDg
+ test-linux64-shippable-qr/opt-raptor-tp6-18-firefox-cold-e10s: XnOufAZbQPSl79v80fjgBg
+ test-linux64-shippable-qr/opt-raptor-tp6-19-firefox-cold-e10s: FUxjzB0IQVq_VfboLKhWKA
+ test-linux64-shippable-qr/opt-raptor-tp6-2-firefox-cold-e10s: D4fG1Xm3SJOqbAEwQJ7Pnw
+ test-linux64-shippable-qr/opt-raptor-tp6-20-firefox-cold-e10s: H-Tl4_imRmaKmN8wEvCzNw
+ test-linux64-shippable-qr/opt-raptor-tp6-21-firefox-cold-e10s: M6QHlnrqQOybnHFv3YG9EA
+ test-linux64-shippable-qr/opt-raptor-tp6-22-firefox-cold-e10s: bdkyRVi_QeOwWkrZi4DIIw
+ test-linux64-shippable-qr/opt-raptor-tp6-23-firefox-cold-e10s: Ls5xZYjwQBaPUSMB5KaqNA
+ test-linux64-shippable-qr/opt-raptor-tp6-24-firefox-cold-e10s: TkTap30NTg2bdHH5zS9DNQ
+ test-linux64-shippable-qr/opt-raptor-tp6-25-firefox-cold-e10s: dViCTFP-SNqezuhXIHTzWQ
+ test-linux64-shippable-qr/opt-raptor-tp6-26-firefox-cold-e10s: b8dfEVOLRcGrTl0V8ifx3A
+ test-linux64-shippable-qr/opt-raptor-tp6-27-firefox-cold-e10s: P9YUAKWYRv2u_BhNQJXuEg
+ test-linux64-shippable-qr/opt-raptor-tp6-28-firefox-cold-e10s: NbRtMiMzRNuXWt5EwpJUDA
+ test-linux64-shippable-qr/opt-raptor-tp6-29-firefox-cold-e10s: eWQJuKOgTl2sMnxLNxakmQ
+ test-linux64-shippable-qr/opt-raptor-tp6-3-firefox-cold-e10s: WvnJBUuUQXesybPI1bWu-Q
+ test-linux64-shippable-qr/opt-raptor-tp6-30-firefox-cold-e10s: eZ0eeF3hRuWyptrxbKWKLQ
+ test-linux64-shippable-qr/opt-raptor-tp6-31-firefox-cold-e10s: BaTkzmPVRs-Y6InyPsPELA
+ test-linux64-shippable-qr/opt-raptor-tp6-4-firefox-cold-e10s: HCnPFcozSrqLuV6n9FudYw
+ test-linux64-shippable-qr/opt-raptor-tp6-5-firefox-cold-e10s: Ro-KqcUkTvWIUTHlPhHUAg
+ test-linux64-shippable-qr/opt-raptor-tp6-6-firefox-cold-e10s: fgFy069oTiKZR1B3I5VGjg
+ test-linux64-shippable-qr/opt-raptor-tp6-7-firefox-cold-e10s: JC01zczfR_yh3OfUJxcHsw
+ test-linux64-shippable-qr/opt-raptor-tp6-8-firefox-cold-e10s: KEEPDWT7Qfe5dpwUyZ-mZw
+ test-linux64-shippable-qr/opt-raptor-tp6-9-firefox-cold-e10s: CmKj0WktSYCzcpqsCCHlbg
+ test-linux64-shippable-qr/opt-raptor-tp6-binast-1-firefox-e10s: BUOzv9IHTW-OiTMFWdpbeQ
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-baseline-firefox-e10s: aajNFMufQ9G71oYxJmVlzA
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-firefox-e10s: FgmhI9iQRKOZfI6GMsqsIA
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-ion-firefox-e10s: UOKF1vIpSdaw3Qch31Bebw
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-baseline-firefox-e10s: O0lOCYVDR463rAOZsiyjlw
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-firefox-e10s: DZZZJG0VQgOt7ftEalM-DA
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-ion-firefox-e10s: CWE7lE3HQGeIeLXtucWtAA
+ test-linux64-shippable-qr/opt-raptor-webaudio-firefox-e10s: Umf6031xTOeqYdsgrmyxBw
+ test-linux64-shippable-qr/opt-talos-chrome-e10s: T9-eDhzXR9u-KiuiJNHN7g
+ test-linux64-shippable-qr/opt-talos-damp-e10s: OdpCqGHESFe_kVW0XRYYzQ
+ test-linux64-shippable-qr/opt-talos-dromaeojs-e10s: ZQ31DjxOTYWuZurJtifaZw
+ test-linux64-shippable-qr/opt-talos-g1-e10s: An82xihnQ_KBVLL9K-6xCg
+ test-linux64-shippable-qr/opt-talos-g3-e10s: aa6RPT8uSE6sFQ-pgt5fLA
+ test-linux64-shippable-qr/opt-talos-g4-e10s: Yr2Ne-zJSvmSxfpUPnTRwg
+ test-linux64-shippable-qr/opt-talos-g5-e10s: Yc1OQavHROqIW3jYOVHA9Q
+ test-linux64-shippable-qr/opt-talos-other-e10s: f9v00kBYTL6d1cKgtGkmrQ
+ test-linux64-shippable-qr/opt-talos-perf-reftest-e10s: IgpOuiFSRdqMjEUWQEsgng
+ test-linux64-shippable-qr/opt-talos-perf-reftest-singletons-e10s: BMEM02h2QH6MRJWJtZFvLA
+ test-linux64-shippable-qr/opt-talos-realworld-webextensions-e10s: c5BimKfWR8y-U5fs3GBS3Q
+ test-linux64-shippable-qr/opt-talos-svgr-e10s: S9vT1-2LQlGWkw5q0jcESA
+ test-linux64-shippable-qr/opt-talos-tabswitch-e10s: eeTl8HYGRwe9cDoijqi2fA
+ test-linux64-shippable-qr/opt-talos-tp5o-e10s: cyCPNtlkT6GsSBEaX4kRAQ
+ test-linux64-shippable-qr/opt-talos-webgl-e10s: AVzxfdtKRuGsvaFQhGpopg
+ test-linux64-shippable/opt-raptor-ares6-firefox-e10s: dCqFHLP6RC2UMX5ofsQRoQ
+ test-linux64-shippable/opt-raptor-assorted-dom-firefox-e10s: L-kajEUET-6iGQ26zYM1Fg
+ test-linux64-shippable/opt-raptor-motionmark-animometer-firefox-e10s: Z-chHDSqTTGuNn-v8JknuA
+ test-linux64-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: DFaONozKSQ-zWNNSCI9gVQ
+ test-linux64-shippable/opt-raptor-speedometer-firefox-e10s: EqgN1kbzTO-o317X4eLUSQ
+ test-linux64-shippable/opt-raptor-stylebench-firefox-e10s: a11UDnIDTJOtgnpdICKbyw
+ test-linux64-shippable/opt-raptor-sunspider-firefox-e10s: Qj9yWfhITDmWR03gjNoFCQ
+ test-linux64-shippable/opt-raptor-tp6-1-firefox-cold-e10s: JQoApDUWRPacMIljMZu8oA
+ test-linux64-shippable/opt-raptor-tp6-10-firefox-cold-e10s: YJZZF2DgSruFgL4Qy6Q9lA
+ test-linux64-shippable/opt-raptor-tp6-11-firefox-cold-e10s: BaaM4466SVKVda7UQA_lOg
+ test-linux64-shippable/opt-raptor-tp6-12-firefox-cold-e10s: VxyR1nCtRuqS9QXjMHwdXw
+ test-linux64-shippable/opt-raptor-tp6-13-firefox-cold-e10s: cyqOQckhSVqvGS0k7hdsNg
+ test-linux64-shippable/opt-raptor-tp6-14-firefox-cold-e10s: IQ8ciaDbRdOrZoN6hfYEHQ
+ test-linux64-shippable/opt-raptor-tp6-15-firefox-cold-e10s: EfCf71Y9TIKDGdoqYNiO2A
+ test-linux64-shippable/opt-raptor-tp6-16-firefox-cold-e10s: WeDcY562SX-6v76exZuo1A
+ test-linux64-shippable/opt-raptor-tp6-17-firefox-cold-e10s: FDOo3-AdTWO6XtnfBQYzeA
+ test-linux64-shippable/opt-raptor-tp6-18-firefox-cold-e10s: NqenIivHSxKuYT-MKT2PTQ
+ test-linux64-shippable/opt-raptor-tp6-19-firefox-cold-e10s: Beby9MAOTlaFvfMXpWWruA
+ test-linux64-shippable/opt-raptor-tp6-2-firefox-cold-e10s: apW7S5RpSfKbl_ukgpX00w
+ test-linux64-shippable/opt-raptor-tp6-20-firefox-cold-e10s: cArb92d1SNm5jNTxBfzg7g
+ test-linux64-shippable/opt-raptor-tp6-21-firefox-cold-e10s: D_6r6OrwRTSbvA91wNEFZQ
+ test-linux64-shippable/opt-raptor-tp6-22-firefox-cold-e10s: A09z2aRrTEC7ukqVXFvziA
+ test-linux64-shippable/opt-raptor-tp6-23-firefox-cold-e10s: DysgmfykQRibhxhHwBtRFQ
+ test-linux64-shippable/opt-raptor-tp6-24-firefox-cold-e10s: S4QohIzaSH23-xrNehg1EA
+ test-linux64-shippable/opt-raptor-tp6-25-firefox-cold-e10s: XdGO2m37Qfa1XHVew_5ZiQ
+ test-linux64-shippable/opt-raptor-tp6-26-firefox-cold-e10s: Qtdmwjw5SZaw8GCrV_xi2w
+ test-linux64-shippable/opt-raptor-tp6-27-firefox-cold-e10s: d4IETGp9Ts-GXIlay6td2A
+ test-linux64-shippable/opt-raptor-tp6-28-firefox-cold-e10s: FyxuDvNkQZqwov74Nxw5Yw
+ test-linux64-shippable/opt-raptor-tp6-29-firefox-cold-e10s: Rn9Awi_NQCG5AN_IqhFHyw
+ test-linux64-shippable/opt-raptor-tp6-3-firefox-cold-e10s: fbr5g5_cQ-KKKd_374OwiA
+ test-linux64-shippable/opt-raptor-tp6-30-firefox-cold-e10s: SV_voFfLR7STG4SqrJ791g
+ test-linux64-shippable/opt-raptor-tp6-31-firefox-cold-e10s: X5agFYLSSWihKJxg3j3uVg
+ test-linux64-shippable/opt-raptor-tp6-4-firefox-cold-e10s: f_yTH8BHQf-gX5mAGjFRhA
+ test-linux64-shippable/opt-raptor-tp6-5-firefox-cold-e10s: faJXnuFUT9yBk_GOtRCqfw
+ test-linux64-shippable/opt-raptor-tp6-6-firefox-cold-e10s: Bec07thmRq6s3hIu1x3SzA
+ test-linux64-shippable/opt-raptor-tp6-7-firefox-cold-e10s: SDGlMi9hTIKL8KIsPNViIA
+ test-linux64-shippable/opt-raptor-tp6-8-firefox-cold-e10s: Nj2VBDQoR2i74vLO0e6OKA
+ test-linux64-shippable/opt-raptor-tp6-9-firefox-cold-e10s: cBG9h9JaSdikTfAJNd6PTw
+ test-linux64-shippable/opt-raptor-tp6-binast-1-firefox-e10s: IuydZbK7R7aOLfse8rRObw
+ test-linux64-shippable/opt-raptor-wasm-godot-baseline-firefox-e10s: KdIUU5yVQeixnoIQtGww8Q
+ test-linux64-shippable/opt-raptor-wasm-godot-firefox-e10s: UOdZKUxFSo-3IKQXXfDEug
+ test-linux64-shippable/opt-raptor-wasm-godot-ion-firefox-e10s: NZWJDYAnT1yWHE1ZlK6XCw
+ test-linux64-shippable/opt-raptor-wasm-misc-baseline-firefox-e10s: POp6oo5QSdCR8CHUK52vYQ
+ test-linux64-shippable/opt-raptor-wasm-misc-firefox-e10s: Ff8sl0FmQDWoJL4whbY8uw
+ test-linux64-shippable/opt-raptor-wasm-misc-ion-firefox-e10s: VwFgZxMmRMyfqPPQfnkicQ
+ test-linux64-shippable/opt-raptor-webaudio-firefox-e10s: L4IXSod8TXaDAQq1HRqpXw
+ test-linux64-shippable/opt-talos-bcv-e10s: fjzolmcsRPupbSa-_SI6Tw
+ test-linux64-shippable/opt-talos-chrome-e10s: VjYmS5v-S3CSO5VoyOdmNw
+ test-linux64-shippable/opt-talos-damp-e10s: EJ9knDnMRfSzr0R8YayfcQ
+ test-linux64-shippable/opt-talos-dromaeojs-e10s: H5cMvCHNRHixQqPoJ04pQg
+ test-linux64-shippable/opt-talos-g1-e10s: JPkZKF4kRyGAI-atFKdDPw
+ test-linux64-shippable/opt-talos-g3-e10s: Teq5oN0bTVCRfaoHJSig-Q
+ test-linux64-shippable/opt-talos-g4-e10s: d3X3sxlNS2-0ucAzULFlow
+ test-linux64-shippable/opt-talos-g5-e10s: VMsisnJfR-Kt74XB8bY8cQ
+ test-linux64-shippable/opt-talos-other-e10s: NbtizoqwThWQepHh79Xk7g
+ test-linux64-shippable/opt-talos-perf-reftest-e10s: JT0EfHSdTkC1a_7RrkxjUA
+ test-linux64-shippable/opt-talos-perf-reftest-singletons-e10s: dRwjyeOMTnulyYxUJGBREQ
+ test-linux64-shippable/opt-talos-realworld-webextensions-e10s: DY4p-l5bSbKpnrzDc5RlxQ
+ test-linux64-shippable/opt-talos-svgr-e10s: QpejQU4qQUq0h_skyo_7bg
+ test-linux64-shippable/opt-talos-tabswitch-e10s: YpVoEBnvQYWdmbXf1ONSRQ
+ test-linux64-shippable/opt-talos-tp5o-e10s: ei5nCp5kSvmnQ57Q9xN2nw
+ test-linux64-shippable/opt-talos-webgl-e10s: ExKenK8jRJuhcGIMw-4vpw
+ test-macosx1014-64-devedition/opt-cppunit-1proc: SugrbYUVTDKS9ckSlbOQKA
+ test-macosx1014-64-devedition/opt-crashtest-e10s: R05Fl1-NR9i1fsnZT_jbgA
+ test-macosx1014-64-devedition/opt-firefox-ui-functional-local-e10s: W3Fgzcb6SHOnrq5SHCBpvA
+ test-macosx1014-64-devedition/opt-firefox-ui-functional-remote-e10s: Uxcipga1SDygBqBL80ePOQ
+ test-macosx1014-64-devedition/opt-marionette-e10s: Jzm3-Tc0T-mPshKcixGFwg
+ test-macosx1014-64-devedition/opt-mochitest-a11y-1proc: ejBbBfHRR7aeUcz5OReuOg
+ test-macosx1014-64-devedition/opt-mochitest-browser-chrome-e10s-1: cpi0UXKvT9mzX72_ijQljA
+ test-macosx1014-64-devedition/opt-mochitest-browser-chrome-e10s-2: Eflz77vRRiOq6WNVVXnLPw
+ test-macosx1014-64-devedition/opt-mochitest-browser-chrome-e10s-3: ZgiT2gvWQ4KrJldkTsDZXw
+ test-macosx1014-64-devedition/opt-mochitest-browser-chrome-e10s-4: eoIg25orTLmywfWUSX0_jw
+ test-macosx1014-64-devedition/opt-mochitest-browser-chrome-e10s-5: Rk-xI-1ARlmYSukazPmk0g
+ test-macosx1014-64-devedition/opt-mochitest-browser-chrome-e10s-6: eMC2ii4ATD6n8tqNl2XmpQ
+ test-macosx1014-64-devedition/opt-mochitest-browser-chrome-e10s-7: RF27BD76RUOWaUoSWdF0cQ
+ test-macosx1014-64-devedition/opt-mochitest-chrome-1proc-1: IDZ7hojLSBOMZUPpn9uh5A
+ test-macosx1014-64-devedition/opt-mochitest-chrome-1proc-2: MlemRTm0SFGSDzeDQFrRVg
+ test-macosx1014-64-devedition/opt-mochitest-chrome-gpu-e10s: WBFpbRcoSvuyMV3w0aUXOA
+ test-macosx1014-64-devedition/opt-mochitest-devtools-chrome-e10s-1: A7AL6dQYRqqr8LDvYGwaKg
+ test-macosx1014-64-devedition/opt-mochitest-devtools-chrome-e10s-2: Af54nhLQQMeKmMFsV1dAzQ
+ test-macosx1014-64-devedition/opt-mochitest-devtools-chrome-e10s-3: Out8TdceTqGG39pyCjlD_g
+ test-macosx1014-64-devedition/opt-mochitest-devtools-chrome-e10s-4: bFYOlZxnS56afIQgtobNYw
+ test-macosx1014-64-devedition/opt-mochitest-devtools-chrome-e10s-5: RIloY8JES_-axIHa2MA02A
+ test-macosx1014-64-devedition/opt-mochitest-media-e10s-1: NOhsxcT5RZqnVP4xkggRdg
+ test-macosx1014-64-devedition/opt-mochitest-media-e10s-2: AcTSNT1NQBuqbTHyxv7Kug
+ test-macosx1014-64-devedition/opt-mochitest-media-spi-e10s-1: BNxlGPujRPGxhMqrNgbegQ
+ test-macosx1014-64-devedition/opt-mochitest-media-spi-e10s-2: OeYt8_gYS4qSH8Q3hOjocw
+ test-macosx1014-64-devedition/opt-mochitest-plain-e10s-1: bUNlZV8DQqyqEns9N2UT8w
+ test-macosx1014-64-devedition/opt-mochitest-plain-e10s-2: TRmDFYBLSL2YDpHoMIvRNA
+ test-macosx1014-64-devedition/opt-mochitest-plain-e10s-3: J1ba439jQbqHhstUVBlzDw
+ test-macosx1014-64-devedition/opt-mochitest-plain-e10s-4: cpmQPzXRR4GuBffU8pBVLg
+ test-macosx1014-64-devedition/opt-mochitest-plain-e10s-5: b1LFiu0sSWaoZIJbkPTZkw
+ test-macosx1014-64-devedition/opt-mochitest-plain-gpu-e10s: dxkQpEByROW36hgSQxUk_A
+ test-macosx1014-64-devedition/opt-mochitest-webgl1-core-e10s: edVHgpYoSP2gtgPzNM5hyw
+ test-macosx1014-64-devedition/opt-mochitest-webgl1-ext-e10s: YudNDab9Rz-ROs8cnsvZNw
+ test-macosx1014-64-devedition/opt-mochitest-webgl2-core-e10s: R4asCkXNTK6NPLVhtmBRlQ
+ test-macosx1014-64-devedition/opt-mochitest-webgl2-ext-e10s-1: etVeCMCBSgusgwXxFw7gHA
+ test-macosx1014-64-devedition/opt-mochitest-webgl2-ext-e10s-2: H0E5BrihRsW4hTM8lAT8zQ
+ test-macosx1014-64-devedition/opt-mochitest-webgl2-ext-e10s-3: a3jfkXnMT7-w7a69Pgcsiw
+ test-macosx1014-64-devedition/opt-mochitest-webgl2-ext-e10s-4: cg2Rqzw-RTWA1425UFpZ0w
+ test-macosx1014-64-devedition/opt-reftest-e10s-1: CX1WHXiBSLqa9pKVKWJTcA
+ test-macosx1014-64-devedition/opt-reftest-e10s-2: Clrzx7W6TwCdjmMMe0subA
+ test-macosx1014-64-devedition/opt-reftest-e10s-3: Ey97brhQRM-xKPiz4yBBvA
+ test-macosx1014-64-devedition/opt-reftest-e10s-4: FX51adaHQ06RbOZEQujNQQ
+ test-macosx1014-64-devedition/opt-reftest-e10s-5: Vfq5Rch8RiioE7KckvodVQ
+ test-macosx1014-64-devedition/opt-reftest-e10s-6: FH_pqUnkTfyI1SUbk3XA7w
+ test-macosx1014-64-devedition/opt-reftest-e10s-7: ML64SxgOQ2iWDJhO4HZoIw
+ test-macosx1014-64-devedition/opt-reftest-e10s-8: Igp9LXN3T3GaWXx3BLeuAg
+ test-macosx1014-64-devedition/opt-telemetry-tests-client-e10s: eBY8tuUMSMOiLHChwJbaTw
+ test-macosx1014-64-devedition/opt-web-platform-tests-crashtest-e10s: G1ERzv-1SfOqa1nXPk7FNg
+ test-macosx1014-64-devedition/opt-web-platform-tests-e10s-1: POaNzRjYRpS8sx3tlfVD5g
+ test-macosx1014-64-devedition/opt-web-platform-tests-e10s-10: KvQaX5TRSZ2HgtutcRBTgg
+ test-macosx1014-64-devedition/opt-web-platform-tests-e10s-2: YoomjbShSyaliJEuuqb3YA
+ test-macosx1014-64-devedition/opt-web-platform-tests-e10s-3: ditKyGP9QU2SWzlcOyGjoQ
+ test-macosx1014-64-devedition/opt-web-platform-tests-e10s-4: a-PLLRcQSO6ZhR8QM0CEkA
+ test-macosx1014-64-devedition/opt-web-platform-tests-e10s-5: eLcopn8xQNylAcO4MDIfNQ
+ test-macosx1014-64-devedition/opt-web-platform-tests-e10s-6: IwcqQqryT6WOUOvU7Zec-Q
+ test-macosx1014-64-devedition/opt-web-platform-tests-e10s-7: IDsn9dXtQBy5e54t2Pm_sg
+ test-macosx1014-64-devedition/opt-web-platform-tests-e10s-8: H-05u-dqR6OUAvTaKaCPbw
+ test-macosx1014-64-devedition/opt-web-platform-tests-e10s-9: RDuz8XU8SNqYazsfglk_QA
+ test-macosx1014-64-devedition/opt-web-platform-tests-reftest-e10s-1: Iw6mYZanTr2VAW4Bn08PdA
+ test-macosx1014-64-devedition/opt-web-platform-tests-reftest-e10s-2: fWTCA7-URpyKihakrT5gkA
+ test-macosx1014-64-devedition/opt-web-platform-tests-reftest-e10s-3: Px8cs0rVQtqhOe7EsYoz9A
+ test-macosx1014-64-devedition/opt-web-platform-tests-reftest-e10s-4: YaHrpI-wR_eqw1xJHSzIAw
+ test-macosx1014-64-devedition/opt-web-platform-tests-wdspec-e10s-1: STx_Fz4JSAGmSN93r4QqBQ
+ test-macosx1014-64-devedition/opt-web-platform-tests-wdspec-e10s-2: Hpx4HaB6QLOc3_5En9_4lQ
+ test-macosx1014-64-devedition/opt-web-platform-tests-wdspec-e10s-3: Ju0nTHKGQvmNr8CTEgxOZg
+ test-macosx1014-64-devedition/opt-xpcshell-e10s-1: JbMtCoYuQy-ke16ci3u9gw
+ test-macosx1014-64-devedition/opt-xpcshell-e10s-2: KN_5TlNvRIiDl7E76zu_GQ
+ test-macosx1014-64-qr/debug-crashtest-e10s: M7QGkfLgTEKNyB6HcJchXA
+ test-macosx1014-64-qr/debug-reftest-e10s-1: E9zELueYTzW0Y7FUSEdSLg
+ test-macosx1014-64-qr/debug-reftest-e10s-2: DjYYbbcGT5mNkIBrp1hjrQ
+ test-macosx1014-64-qr/debug-reftest-e10s-3: LUZ9LkYJTeOHoOguIPrB_w
+ test-macosx1014-64-qr/debug-reftest-e10s-4: HLsWYCQRRq-5FkRllZ17KA
+ test-macosx1014-64-qr/debug-reftest-e10s-5: Faeh_jM5R2aL9rC_fify-g
+ test-macosx1014-64-qr/debug-reftest-e10s-6: OfW0GE7BQiujEeDzBbpFBA
+ test-macosx1014-64-shippable-qr/opt-crashtest-e10s: MvA5twLSSv6wrAd3DxjOVQ
+ test-macosx1014-64-shippable-qr/opt-reftest-e10s-1: S9OJA-R2Qx6vbCt4ySOAhg
+ test-macosx1014-64-shippable-qr/opt-reftest-e10s-2: XqndRX7lQo2Wly5PihGitg
+ test-macosx1014-64-shippable-qr/opt-reftest-e10s-3: CSN7j2YJSh29RWku6HM8qg
+ test-macosx1014-64-shippable/opt-awsy-base-e10s: L5TldhlTT_SQRYswCodLwQ
+ test-macosx1014-64-shippable/opt-awsy-e10s: TuvHh_hjRgWLuKQy7k2nog
+ test-macosx1014-64-shippable/opt-awsy-tp6-e10s: MYJmMBXTTASndXqrJnjVaw
+ test-macosx1014-64-shippable/opt-cppunit-1proc: W08YoNLGSNa5SHO32Qi0ew
+ test-macosx1014-64-shippable/opt-crashtest-e10s: X7HvDpctRduBdJztU1g0Bg
+ test-macosx1014-64-shippable/opt-firefox-ui-functional-local-e10s: fuSAFjkkQXeFCzuM7nkI2A
+ test-macosx1014-64-shippable/opt-firefox-ui-functional-remote-e10s: Kf9ZcEV1T7Of6LjaMmc-6w
+ test-macosx1014-64-shippable/opt-gtest-1proc: FxH_0WzBTBif4dwWWyTrOw
+ test-macosx1014-64-shippable/opt-marionette-e10s: H2-OoeteRp-XGnOtUUrBOw
+ test-macosx1014-64-shippable/opt-mochitest-a11y-1proc: OqH23cPPTCGMccW0MAtVdw
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-1: Z4ctvTO8TSmHqBhrmP5k0Q
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-2: Id8Fw_-WS3yylo9X1CeKGA
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-3: RPwDlLM-TL2VnviZmJuR5w
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-4: Cdy5_Ly6QF28s2eJHLZeBQ
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-5: X_m0VxtYTf2sM_NPOeL9jg
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-6: Z9-rzAsjSxCtxVuFMj2H1w
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-7: akjtF6MJRW2HI9EpC9ELMA
+ test-macosx1014-64-shippable/opt-mochitest-chrome-1proc-1: QeMJUhJ4SrOExz7Xk1WtVQ
+ test-macosx1014-64-shippable/opt-mochitest-chrome-1proc-2: IqvO5H3ISPy8daDR-bHO8A
+ test-macosx1014-64-shippable/opt-mochitest-chrome-gpu-e10s: DKkG6p1MRj6lyjLerZnTbA
+ test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-1: XMAPyEnKRlm42muAgCCQKQ
+ test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-2: SRnx6lYsSSW7_OXgAo-hgA
+ test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-3: AMwDZZTxS7iUJkL8wa0I9Q
+ test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-4: BS_iewaVTnuGn7CeEj3wxg
+ test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-5: OE520x0kRpOO_J2pkOndGg
+ test-macosx1014-64-shippable/opt-mochitest-media-e10s-1: OvO0Y-85Scqr74r9UtYcKg
+ test-macosx1014-64-shippable/opt-mochitest-media-e10s-2: BQroejUCRd-isdRE7Zzxyw
+ test-macosx1014-64-shippable/opt-mochitest-media-spi-e10s-1: aUZClARDTouSJpfa1TDIUQ
+ test-macosx1014-64-shippable/opt-mochitest-media-spi-e10s-2: f-E7Lu15Qk6_bS_sL6HwFw
+ test-macosx1014-64-shippable/opt-mochitest-plain-e10s-1: F6JkbSrxS827ef8q7PvQWQ
+ test-macosx1014-64-shippable/opt-mochitest-plain-e10s-2: fwWlObXFT0y6LCih85daVA
+ test-macosx1014-64-shippable/opt-mochitest-plain-e10s-3: HKgcyzNkSf-73PxFYMJkag
+ test-macosx1014-64-shippable/opt-mochitest-plain-e10s-4: NBY1R95ZSR-7arJ6rGPlxw
+ test-macosx1014-64-shippable/opt-mochitest-plain-e10s-5: MJK6PWaWTbSZnbte6tPx5Q
+ test-macosx1014-64-shippable/opt-mochitest-plain-gpu-e10s: RAZBqJB1Sd2H9lXRPkfoCQ
+ test-macosx1014-64-shippable/opt-mochitest-webgl1-core-e10s: banWGCQkQyCUGnAYBFi_dA
+ test-macosx1014-64-shippable/opt-mochitest-webgl1-ext-e10s: R5bddKE2TfCfCbAOMPQ2rQ
+ test-macosx1014-64-shippable/opt-mochitest-webgl2-core-e10s: KDnwB83kTf61hMIgbA2f9g
+ test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-1: DY2WDUPmRoeDqP6PdXeeeg
+ test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-2: YirvbGwxTKmlIgGFIqUBBA
+ test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-3: aKLpNIUvSOOlxjbomCAGCQ
+ test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-4: GHimRWyuS7Cyi5NddrPbVA
+ test-macosx1014-64-shippable/opt-raptor-ares6-firefox-e10s: eKYDsfjpTLONBt9BcndQyA
+ test-macosx1014-64-shippable/opt-raptor-motionmark-animometer-firefox-e10s: a4j7gLePTSCbiea4t65fvA
+ test-macosx1014-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: OHuzHh6eSXGTn12WQGNcPQ
+ test-macosx1014-64-shippable/opt-raptor-speedometer-firefox-e10s: dtS7oDi8TbWdDcyr1TujXg
+ test-macosx1014-64-shippable/opt-raptor-stylebench-firefox-e10s: ZSaYwaCRSWWydRKxY_JSdg
+ test-macosx1014-64-shippable/opt-raptor-sunspider-firefox-e10s: H5jEgY40QgqmOzRxskCUhg
+ test-macosx1014-64-shippable/opt-raptor-tp6-1-firefox-cold-e10s: GZ32aoDHSXa6mrKAFP7O_w
+ test-macosx1014-64-shippable/opt-raptor-tp6-10-firefox-cold-e10s: EeCh3HtGQoeyQMYUBiidCg
+ test-macosx1014-64-shippable/opt-raptor-tp6-11-firefox-cold-e10s: fbVFHIv-TbiwPl3Znu1aMg
+ test-macosx1014-64-shippable/opt-raptor-tp6-12-firefox-cold-e10s: MpTT1-vJRh6eb766km09Cw
+ test-macosx1014-64-shippable/opt-raptor-tp6-13-firefox-cold-e10s: Vi_ilrO6Se2lnYMomCoOfg
+ test-macosx1014-64-shippable/opt-raptor-tp6-14-firefox-cold-e10s: SafmHubaSuOfgp2z6YI_SA
+ test-macosx1014-64-shippable/opt-raptor-tp6-15-firefox-cold-e10s: YLjN3hjyRQeojBo8OE3UEQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-16-firefox-cold-e10s: d9qcM3FsTOq0hmibgn2RNw
+ test-macosx1014-64-shippable/opt-raptor-tp6-17-firefox-cold-e10s: D3GCWc3YTu2yIo9sIqe-Hg
+ test-macosx1014-64-shippable/opt-raptor-tp6-18-firefox-cold-e10s: BKgkKq1ASEeqCDoGC803pA
+ test-macosx1014-64-shippable/opt-raptor-tp6-19-firefox-cold-e10s: fvDVEM9lTaqmqklwiQ3adg
+ test-macosx1014-64-shippable/opt-raptor-tp6-2-firefox-cold-e10s: eFTkMdAOR9yfMlaSyEFF8w
+ test-macosx1014-64-shippable/opt-raptor-tp6-20-firefox-cold-e10s: Ht4ilKpERuKVKa3yea9kfg
+ test-macosx1014-64-shippable/opt-raptor-tp6-21-firefox-cold-e10s: Wog42PolRmm2bhA25NvtjA
+ test-macosx1014-64-shippable/opt-raptor-tp6-22-firefox-cold-e10s: HkkPQwClRKC1hxts3jVnhQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-23-firefox-cold-e10s: Lwr3WzU5RZCJmc80pimYdg
+ test-macosx1014-64-shippable/opt-raptor-tp6-24-firefox-cold-e10s: XcOwMgiQRD-XOfYCZkI9Cg
+ test-macosx1014-64-shippable/opt-raptor-tp6-25-firefox-cold-e10s: f9rqdDEDTM6KGx4-wZD5bQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-26-firefox-cold-e10s: NBAylkjcTfevavtHW7o64A
+ test-macosx1014-64-shippable/opt-raptor-tp6-27-firefox-cold-e10s: DUFqDfuZS_yPPKD92HoUfA
+ test-macosx1014-64-shippable/opt-raptor-tp6-28-firefox-cold-e10s: HWNQ7nN8TYmWYLvQVXQnng
+ test-macosx1014-64-shippable/opt-raptor-tp6-29-firefox-cold-e10s: by9EK8E1Qq-PCJUgJL1PWw
+ test-macosx1014-64-shippable/opt-raptor-tp6-3-firefox-cold-e10s: GgUpkuheT4eCSePJ49Uj5Q
+ test-macosx1014-64-shippable/opt-raptor-tp6-30-firefox-cold-e10s: cY1zrQ-CTIm5B3N3KBN1HQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-31-firefox-cold-e10s: WCky7SofRU2A4FFzlEc_VQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-4-firefox-cold-e10s: cvebGjjpRp-1lGpY-b05qg
+ test-macosx1014-64-shippable/opt-raptor-tp6-5-firefox-cold-e10s: YMDNcmd3RW68DxrDjgzpZQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-6-firefox-cold-e10s: MDwzlffeTraTKGn9OUvDUA
+ test-macosx1014-64-shippable/opt-raptor-tp6-7-firefox-cold-e10s: Mu_Eca2YSGK_4j73TNc_Hg
+ test-macosx1014-64-shippable/opt-raptor-tp6-8-firefox-cold-e10s: JTB00hj7TTW9S7wCo84j5A
+ test-macosx1014-64-shippable/opt-raptor-tp6-9-firefox-cold-e10s: Sxb5Oj_nTSixqzpUh319fg
+ test-macosx1014-64-shippable/opt-raptor-tp6-binast-1-firefox-e10s: H1w5GVhiQZenVun7wZRFzQ
+ test-macosx1014-64-shippable/opt-raptor-wasm-godot-firefox-e10s: D43miVPEQQWEcupTSWA8ag
+ test-macosx1014-64-shippable/opt-raptor-webaudio-firefox-e10s: LdCpyzRxS8-7dJTYQlPw2g
+ test-macosx1014-64-shippable/opt-reftest-e10s-1: L8erdb0TQbWMQxcrOtwmTQ
+ test-macosx1014-64-shippable/opt-reftest-e10s-2: FG_iiJByTBG5t8t8PLvBMQ
+ test-macosx1014-64-shippable/opt-reftest-e10s-3: SPDqwR7ETA-JeYBWkoSowQ
+ test-macosx1014-64-shippable/opt-talos-bcv-e10s: dt4WNlclTRaG4XHMU9YMZQ
+ test-macosx1014-64-shippable/opt-talos-chrome-e10s: dv_ZqfnZRGuBUnzKz33XWw
+ test-macosx1014-64-shippable/opt-talos-damp-e10s: Zg1jru0wQ7ev3zefyfIJaw
+ test-macosx1014-64-shippable/opt-talos-dromaeojs-e10s: ZixVcsFzRRWY5LJLlddPQQ
+ test-macosx1014-64-shippable/opt-talos-g1-e10s: HgrvOlu9T3OXDxqTP-yKDw
+ test-macosx1014-64-shippable/opt-talos-g4-e10s: UqQpZz8mRQeohGZFl9GpCg
+ test-macosx1014-64-shippable/opt-talos-g5-e10s: f8UvINg6R1m50rx-om5wqg
+ test-macosx1014-64-shippable/opt-talos-other-e10s: AEwBnVM4SCmTtkXlbQz3KA
+ test-macosx1014-64-shippable/opt-talos-perf-reftest-e10s: ZLxB5qi3RZSH6xX6EHq_vA
+ test-macosx1014-64-shippable/opt-talos-perf-reftest-singletons-e10s: G6BF18DOSfKYwTiOMfGC3A
+ test-macosx1014-64-shippable/opt-talos-realworld-webextensions-e10s: fB7JfHuiTluVQ3egpabkOA
+ test-macosx1014-64-shippable/opt-talos-svgr-e10s: TCedeIdBTNSfPGanNIDqrg
+ test-macosx1014-64-shippable/opt-talos-tp5o-e10s: SVi3fRuySMG9o_NoEaV0JA
+ test-macosx1014-64-shippable/opt-talos-webgl-e10s: fS5UiIt3TX29V2MWIhU8lg
+ test-macosx1014-64-shippable/opt-telemetry-tests-client-e10s: dlp4aRRzRaWS7Zt8aFL61g
+ test-macosx1014-64-shippable/opt-web-platform-tests-crashtest-e10s: ck-mkgZDTRaLamdW6O0tGg
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-1: fMcswqWxRn6IjfFuJ6urJA
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-10: croJ2GQkQNOaNfWieUclKg
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-2: ZXPQ5TxsQf-_5hPk8cw4FA
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-3: AllUddYMRay4mrv01MUX6A
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-4: e1zF97A1RJu10l7TxBCN4w
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-5: HNAv1gCfQzOrCRCZx7-DaA
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-6: QRxcrWqHRMSEcIaq8Z0Kdg
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-7: AUYp4SMBQyK9nDsboCNPoQ
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-8: GSVxgqwsTe229PSX2aGHYw
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-9: UHzxZ6hmRqWKN8JVOinyvw
+ test-macosx1014-64-shippable/opt-web-platform-tests-reftest-e10s-1: QhEu7rVpREeBCH-t8QWmrA
+ test-macosx1014-64-shippable/opt-web-platform-tests-reftest-e10s-2: ebIT3YXCSdmdizyb9mTguw
+ test-macosx1014-64-shippable/opt-web-platform-tests-reftest-e10s-3: TxCNB11lQ_SjnEvPEVqMMg
+ test-macosx1014-64-shippable/opt-web-platform-tests-reftest-e10s-4: cxr_QC4IQw-uNXpwFYdvrg
+ test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-e10s-1: TxMezlxsRTiyk67ygX_MvA
+ test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-e10s-2: MV6_IohpQyGHQSRz0zdpGw
+ test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-e10s-3: d1qP8vBaTpyiCJZxcxcWHA
+ test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: KpUJgosRQfGbNRmJ0Twr_g
+ test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: aKgH78KTS4CZE0btiRgJNQ
+ test-macosx1014-64-shippable/opt-xpcshell-e10s-1: D35ER4oCTVei1M3xN-EDcQ
+ test-macosx1014-64-shippable/opt-xpcshell-e10s-2: JgbiIKcHQUO4X-zAAwRakA
+ test-macosx1014-64/debug-cppunit-1proc: bPM7ceOGRSmUs5ufYGn6dw
+ test-macosx1014-64/debug-crashtest-e10s: aTqKokNVQ8eqg4zUVEGk2Q
+ test-macosx1014-64/debug-firefox-ui-functional-local-e10s: ScDWfKtpQ3uSx63y61vFMg
+ test-macosx1014-64/debug-firefox-ui-functional-remote-e10s: P9cgCM8bTfKAdiyoPlyG5Q
+ test-macosx1014-64/debug-gtest-1proc: K-yEz0Q8RFCRwo8FT50gMg
+ test-macosx1014-64/debug-marionette-e10s: RSgjKVEWR2afmT1X6Ii8vQ
+ test-macosx1014-64/debug-mochitest-a11y-1proc: ZW9rulztQvKBG8TGoALVJQ
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-1: ZI_2wQOETfSydwzK550hQg
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-10: GMhPnCQKShG9tYfOxfgPWw
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-11: OMksdfb9QBKVZqXaWYKG9w
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-12: SwQcbIj0R6CycrhKdwYByQ
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-13: E3pAezSNTHiaKrWG5nv34Q
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-14: R53Zh7P5QHqiv3IgByYcbg
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-15: dsFQXaV_RKu84Z3yBeKmjA
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-16: dN8cQqy8T32HpPsQxm3nkw
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-2: OvHOrGuBSxCT3eRm-2JrWg
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-3: NB6iXD2wToexlJsOpJZfRw
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-4: MakUwz8WS9ib1ug8Q19QYg
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-5: Bu8FFcZ9QQ6fU1xF7JedjQ
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-6: ZoJhrQkcQpqPTRh-4PpvKQ
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-7: b1i4EqX6QA-UYt5qbDaeRw
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-8: SFOOPkrySKSw10e7EfTgHQ
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-9: LjR6kpBSQu-zaqLdbmZxaw
+ test-macosx1014-64/debug-mochitest-chrome-1proc-1: KbF8n1DVSsON5tx2SFM5aw
+ test-macosx1014-64/debug-mochitest-chrome-1proc-2: E99vC4dcSPGUVwvNok7-dA
+ test-macosx1014-64/debug-mochitest-chrome-gpu-e10s: Yc8K7hOXS-esX8ju0szYWg
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-1: VeDKkTsyS-aL-hOTG2E7_A
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-2: SfE1L9HrSa2plCVD8uva4w
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-3: evGIjRYRQd28iEE1-bOAjw
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-4: ZJ-t1W1cRGmu-LkuOuyppg
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-5: EIJK1lojT1iMYzlOhm-KAw
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-6: dOWnWh7VTCa6OoFi__JnKw
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-7: L6JdsNzfQ3Oqhi5M_m-Elg
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-8: I1Kmf6OtQcWeeaejCvJbng
+ test-macosx1014-64/debug-mochitest-media-e10s-1: Ug-wKkZ_RhO_CuLSMeNJ5g
+ test-macosx1014-64/debug-mochitest-media-e10s-2: KwSBmrakQ9SFRS85v_XHzg
+ test-macosx1014-64/debug-mochitest-media-spi-e10s-1: NRoAID1CSC2vjUtNnY905w
+ test-macosx1014-64/debug-mochitest-media-spi-e10s-2: X9PUetGBRGaU2tRNz-GxwQ
+ test-macosx1014-64/debug-mochitest-plain-e10s-1: Rh2jzYQ-Rm-ieCIORUeuFQ
+ test-macosx1014-64/debug-mochitest-plain-e10s-2: GfToepmwQ5a1PLqrKbI9pw
+ test-macosx1014-64/debug-mochitest-plain-e10s-3: Vf2oFuDWQROfJXIUpMr6Ew
+ test-macosx1014-64/debug-mochitest-plain-e10s-4: FHDVKESXSqCLMLaT2AuyFQ
+ test-macosx1014-64/debug-mochitest-plain-e10s-5: Ggi9NZ4yQ_e_6JtaeSh0Sg
+ test-macosx1014-64/debug-mochitest-plain-gpu-e10s: UHQ8SfmuSlOh-xwJUg6Vnw
+ test-macosx1014-64/debug-mochitest-webgl1-core-e10s: IgKxaWWISDapCJreUqAuhQ
+ test-macosx1014-64/debug-mochitest-webgl1-ext-e10s: R7WYrNkES1aXlQymZgOeXw
+ test-macosx1014-64/debug-mochitest-webgl2-core-e10s: eOoy7hSvRx2GeTSMjzgljA
+ test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-1: DBd3fPrCSKmUHIo2epOPhQ
+ test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-2: RikMK6AkT66by5Wfls37kw
+ test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-3: TgyA2962Qd6c3RWpd2O0VQ
+ test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-4: K4-N4v1dRGaKrfEFNzKC3w
+ test-macosx1014-64/debug-reftest-e10s-1: GmM1g20ETQSxISiOcmOthw
+ test-macosx1014-64/debug-reftest-e10s-2: MdWUTDwVR06-JQIZitX5pQ
+ test-macosx1014-64/debug-reftest-e10s-3: R5r4o9YRSbWS4dwTjM0G2Q
+ test-macosx1014-64/debug-reftest-e10s-4: CmUbdwjHTmCjo2RVWA7rwA
+ test-macosx1014-64/debug-telemetry-tests-client-e10s: UlVDzmFpRHiwl3DX2U2uNw
+ test-macosx1014-64/debug-web-platform-tests-crashtest-e10s: NMnsEyrNSZ6AeXdehyOlmg
+ test-macosx1014-64/debug-web-platform-tests-e10s-1: b2ZS219xQGm_UpPtHvrjdQ
+ test-macosx1014-64/debug-web-platform-tests-e10s-10: PYDpiL41QuiPuT7oiPCohA
+ test-macosx1014-64/debug-web-platform-tests-e10s-11: aOordnAsT4mLzkXVzBanUA
+ test-macosx1014-64/debug-web-platform-tests-e10s-12: YF63IDgzQ9mZIMPB9XPotA
+ test-macosx1014-64/debug-web-platform-tests-e10s-13: bYC6c94NR3--f5Qd1cIiSQ
+ test-macosx1014-64/debug-web-platform-tests-e10s-14: BFQoAQDJRdmDxrKF3vEiWw
+ test-macosx1014-64/debug-web-platform-tests-e10s-15: B7CgB63tT1aPkU_a9hwzSg
+ test-macosx1014-64/debug-web-platform-tests-e10s-16: Ka2-4BXiTcWHsk0wQJos7Q
+ test-macosx1014-64/debug-web-platform-tests-e10s-17: QnkG-79mRPm-zNxusjpFOQ
+ test-macosx1014-64/debug-web-platform-tests-e10s-18: Ao2P_dZuRxa-sXf273vetg
+ test-macosx1014-64/debug-web-platform-tests-e10s-2: PU9sHGdiRPyEbxjhHfO_CA
+ test-macosx1014-64/debug-web-platform-tests-e10s-3: Od6E-t-kTMWl-hKA315cqg
+ test-macosx1014-64/debug-web-platform-tests-e10s-4: XV5k8OpUQmWvE23KlK08FQ
+ test-macosx1014-64/debug-web-platform-tests-e10s-5: ZCSRJu1LQTqHG4wDeMmkEg
+ test-macosx1014-64/debug-web-platform-tests-e10s-6: Prj5cytKQ8iiYt9HBAJLFg
+ test-macosx1014-64/debug-web-platform-tests-e10s-7: Om0cH8NwTei8RGMmH7Vabg
+ test-macosx1014-64/debug-web-platform-tests-e10s-8: CYv35agOTbGcXcOMJB1ZCQ
+ test-macosx1014-64/debug-web-platform-tests-e10s-9: OJTUzxNIRcesRvzkbIckLA
+ test-macosx1014-64/debug-web-platform-tests-reftest-e10s-1: CLsXITqKSNKD4Y0n1LTa1A
+ test-macosx1014-64/debug-web-platform-tests-reftest-e10s-2: f1P0JfL2TWaTQekNGhpSkA
+ test-macosx1014-64/debug-web-platform-tests-reftest-e10s-3: VOKeMQkBQLqeiij0gMJVCw
+ test-macosx1014-64/debug-web-platform-tests-reftest-e10s-4: G0q0HXGCR_2lzBogxq33-g
+ test-macosx1014-64/debug-web-platform-tests-reftest-e10s-5: DxhHqTyhTSeBQOEa7zhEiQ
+ test-macosx1014-64/debug-web-platform-tests-reftest-e10s-6: AvxjhmgtTpey6IooEwRIgA
+ test-macosx1014-64/debug-web-platform-tests-wdspec-e10s-1: ABVcQA5DRM2fweXqSfAneg
+ test-macosx1014-64/debug-web-platform-tests-wdspec-e10s-2: Mjmh22miQ0q8w2PvGYQPgw
+ test-macosx1014-64/debug-web-platform-tests-wdspec-e10s-3: TkS9dy4CQQC07qJL50ZFrg
+ test-macosx1014-64/debug-xpcshell-e10s-1: Il9tsYHIT8ugleMhT3JmqA
+ test-macosx1014-64/debug-xpcshell-e10s-2: ag_52efcTIqDs2gCQMxIVQ
+ test-windows10-64-asan/opt-cppunit-1proc: Nxm9FrkrSzyuQfJqwLn1ew
+ test-windows10-64-asan/opt-crashtest-e10s: JSJ1m4_tR4KOy0nOjJ2c3g
+ test-windows10-64-asan/opt-firefox-ui-functional-local-e10s: KhZt4cPlRKiyKQhbMRk71A
+ test-windows10-64-asan/opt-firefox-ui-functional-remote-e10s: evNF-43oQUm7zygQk1wT3Q
+ test-windows10-64-asan/opt-gtest-1proc: Cb4UL83gRRuqTspwLi2ZjQ
+ test-windows10-64-asan/opt-marionette-e10s: KGd2ZvU-QgmWPav3wadrHg
+ test-windows10-64-asan/opt-mochitest-a11y-1proc: dmwliiLBSjykIpDBzSL1Yw
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-1: D9D3k0EyRxS6vcenZIa-RQ
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-2: YO6cDQV0SHSGfcRPX4mUcw
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-3: dCUJkcb0T2W03KY85f0F6A
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-4: LQ4gZD6aT3mxc6AnUNSp9w
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-5: AO5h6gqbS3CGmNyiGTj_NQ
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-6: NmrxS_qlQguTBDic53cmpA
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-7: fSn2iLN-QAm-3hxPhIUxhw
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-8: F0Z7AYg0QdimiWGerevi_g
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-9: VqmJ3eePSu-AeX0-JHAkBw
+ test-windows10-64-asan/opt-mochitest-chrome-1proc-1: er53t4_iR1ybpLSomygebA
+ test-windows10-64-asan/opt-mochitest-chrome-1proc-2: EYcpuA9zTgyH6ouacvsc_w
+ test-windows10-64-asan/opt-mochitest-chrome-1proc-3: HR7m_7-8RHOeQMa2OaxpWA
+ test-windows10-64-asan/opt-mochitest-chrome-gpu-e10s: WqcweWVfSyOvmWpGUCNtGA
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-1: WXefBh53QpycZ6553nXAWA
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-2: eKR56KmsRwKOUu0Cpn2NNg
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-3: QaZ3_RjaR6GT2rfXuD5G8Q
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-4: YAuXq1g0QhSW25CAwIWS4g
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-5: DPeMmqsUQFaoKzbxu1XPng
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-6: GoHb-xmBTwqYAdfHay1ZFg
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-7: Bm-rOEXjRXKbWSIuvgUAMA
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-8: ciUNgnD8Q_-TtLCJbizTHg
+ test-windows10-64-asan/opt-mochitest-media-e10s: RrUYfOE2Rpi-dTnD97lMWw
+ test-windows10-64-asan/opt-mochitest-media-spi-e10s: TRVHypC7RwCqnr6700o_jg
+ test-windows10-64-asan/opt-mochitest-plain-e10s-1: YC1wuknYQIep1WhC6fl65g
+ test-windows10-64-asan/opt-mochitest-plain-e10s-2: RSmYzxwSQNG1OcF47S0aOA
+ test-windows10-64-asan/opt-mochitest-plain-e10s-3: QoxzFrJ2Q0GLRrgcGm0u2Q
+ test-windows10-64-asan/opt-mochitest-plain-e10s-4: GL_ZykXSTOKBB40AztIrSw
+ test-windows10-64-asan/opt-mochitest-plain-e10s-5: cFUE-YSCTGGlwkMYDW4V9w
+ test-windows10-64-asan/opt-mochitest-plain-gpu-e10s: QA7-2Jk2QRiwgvhqVT7NvA
+ test-windows10-64-asan/opt-mochitest-webgl1-core-e10s: VymuOdihSx-nnE5JiBJrAA
+ test-windows10-64-asan/opt-mochitest-webgl1-ext-e10s: E-JAYUysSP2BfOCePfmxvA
+ test-windows10-64-asan/opt-mochitest-webgl2-core-e10s: VafSlTfESiWDAFGFjkv71Q
+ test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-1: bEPMZULtRAWhyXz420AFCw
+ test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-2: HuNjnS7yRSu9JzJwPA6slA
+ test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-3: EfqEbqFFQoyB1G2XYRWRjw
+ test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-4: Q7gCeSjRSuKYyiDTtjAj4g
+ test-windows10-64-asan/opt-reftest-e10s-1: DssGxMgiRiexQPdV6xktnw
+ test-windows10-64-asan/opt-reftest-e10s-2: WpbYk4g4QRibZ1EdpfVZWg
+ test-windows10-64-asan/opt-reftest-e10s-3: NiTCB6aLQe6WW_vdi4sfow
+ test-windows10-64-asan/opt-telemetry-tests-client-e10s: PRYX62qYR3a-4a2c9yjMEQ
+ test-windows10-64-devedition/opt-cppunit-1proc: af8f64fFTKCv3Fvwks7qEA
+ test-windows10-64-devedition/opt-crashtest-e10s: I-c39WODQ0CfRHypOcAmzg
+ test-windows10-64-devedition/opt-firefox-ui-functional-local-e10s: OkHP6SxASZSingCCJyIHlA
+ test-windows10-64-devedition/opt-firefox-ui-functional-remote-e10s: PDO3mzgsSkKpOpvd2TPfEA
+ test-windows10-64-devedition/opt-marionette-e10s: XSI-MLMHQoaDYn6TtB6zQQ
+ test-windows10-64-devedition/opt-marionette-gpu-e10s: NPNnrYCiQ1-gdB_Uqph7MQ
+ test-windows10-64-devedition/opt-mochitest-a11y-1proc: W0z6uvrHSn2zeFTuOdyklw
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-1: UPYfrY0fTbOZfca7VTvEdA
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-2: OVbnmgHVTqSQ376skiDCgQ
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-3: BrRzWWuaS4GWnClTCDyH_A
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-4: SjYXZYRKSD-fCBv-U379bw
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-5: DXSTKNyCQSqa-FuFanwE8g
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-6: JZCtnX-aQ82uLugmldrTxQ
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-7: OUgBtlHGSNe3fdjWVImsuw
+ test-windows10-64-devedition/opt-mochitest-chrome-1proc-1: e0y4XoIhRSm_9aDwk3JB-g
+ test-windows10-64-devedition/opt-mochitest-chrome-1proc-2: KnueTQDcQf-PnoKjqTz2SA
+ test-windows10-64-devedition/opt-mochitest-chrome-gpu-e10s: YrRH93duToyRLaB4kG2sCg
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-1: VsTqUn58QFW3zSKrQJAn3g
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-2: FtQSxUn3SYu3DHFb_BvRYg
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-3: AzciUnmMQm2ol9GCEzJI2A
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-4: ebGELhHARcGr800CwiZ70w
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-5: V8NOShKMQVaKStjrHdHqlg
+ test-windows10-64-devedition/opt-mochitest-media-e10s: P7jKnefOT12acvMXDVGkyA
+ test-windows10-64-devedition/opt-mochitest-media-spi-e10s: KkhRkHqBSsCfi1lnmnObqQ
+ test-windows10-64-devedition/opt-mochitest-plain-e10s-1: M6NbnPjOSYWi1irYR7dmnA
+ test-windows10-64-devedition/opt-mochitest-plain-e10s-2: QO8V5tQPRd6S-5YpKqhrug
+ test-windows10-64-devedition/opt-mochitest-plain-e10s-3: HsbGuG5TSz2R1TZX2clzMg
+ test-windows10-64-devedition/opt-mochitest-plain-e10s-4: BNxcei8yRcGXudhxoJtFJA
+ test-windows10-64-devedition/opt-mochitest-plain-e10s-5: RQmvrz-xR_OkeAzOWF5vvA
+ test-windows10-64-devedition/opt-mochitest-plain-gpu-e10s: V-ODwyeuTy-xzt5kyxUzGQ
+ test-windows10-64-devedition/opt-mochitest-webgl1-core-e10s: cnBnDXHhQ4Wh-OoVSmwgPA
+ test-windows10-64-devedition/opt-mochitest-webgl1-ext-e10s: FOMsF49uQbO_R1N-yM3nFA
+ test-windows10-64-devedition/opt-mochitest-webgl2-core-e10s: cjvnoDOcRKmw_1WBddQMdA
+ test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-1: VHjB8nukQUCMZuK0L76ZbA
+ test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-2: e0Z_xNtZR5abli_wtcFNpg
+ test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-3: fNEtc5UETRGeD1bJZdPPLg
+ test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-4: UNv69CP_RVa1smKtL6-sdw
+ test-windows10-64-devedition/opt-reftest-e10s-1: Yi7Lmp6TR4e8QnYFxTzeSQ
+ test-windows10-64-devedition/opt-reftest-e10s-2: M9UzlUNKRHGeJKxeV5Ykmg
+ test-windows10-64-devedition/opt-telemetry-tests-client-e10s: BqLH--shRcarcWQbvdQlMA
+ test-windows10-64-devedition/opt-web-platform-tests-crashtest-e10s: WYpZD4jXQVuvUKUvx0s8kQ
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-1: HdHON-2KRA22G8dDVzbt0g
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-10: Ki0cK7E0R5Cnq06syPfSLg
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-2: VfHZlbRIRQOGL0MpUVOjWA
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-3: MowfZQU5Sp6aRtSi0osrxQ
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-4: NW0EvgKAS0e9Iri71neaEA
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-5: MqTK9M7-SA25ydM1ajNwDw
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-6: CixnwqngQqePch1PxAwXxA
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-7: IZO559CISVGfsuY79BPUow
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-8: JtAC9ntXSaey47B0V79lQQ
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-9: cKHwnxVHQJSx9j2LgyBULA
+ test-windows10-64-devedition/opt-web-platform-tests-reftest-e10s-1: FwqUSwo-Sbe9aTIKT8QqEw
+ test-windows10-64-devedition/opt-web-platform-tests-reftest-e10s-2: Mwm2Ow5_QfWJyH7icWItJg
+ test-windows10-64-devedition/opt-web-platform-tests-reftest-e10s-3: cRhHZW1MQF-QU1RRHEmhgQ
+ test-windows10-64-devedition/opt-web-platform-tests-reftest-e10s-4: HkCTaVAlTJOlMXRhchBJeA
+ test-windows10-64-devedition/opt-web-platform-tests-wdspec-e10s-1: E7Zy0TMKS2GPUn-fgUa6Mg
+ test-windows10-64-devedition/opt-web-platform-tests-wdspec-e10s-2: Qudng102TmKVy-owZosUtQ
+ test-windows10-64-devedition/opt-web-platform-tests-wdspec-e10s-3: bHUEjOKGT_awJHt9k8gnUQ
+ test-windows10-64-devedition/opt-xpcshell-e10s-1: AvH6jNi8SJejV601rRkL0Q
+ test-windows10-64-devedition/opt-xpcshell-e10s-2: Lxdy7jbCQwSD7g3RpOUm4A
+ test-windows10-64-mingwclang/debug-cppunit-1proc: Bc5w5uFFTMKtKHkIe-PjNg
+ test-windows10-64-mingwclang/debug-firefox-ui-functional-local-e10s: YL-8CAGlTuCE2mIAMYP_SQ
+ test-windows10-64-mingwclang/debug-firefox-ui-functional-remote-e10s: SyPTEwOgTSyCCzSWWAxu5w
+ test-windows10-64-mingwclang/debug-mochitest-a11y-1proc: GcrT6LkNSISgxBqVU6bFdg
+ test-windows10-64-mingwclang/debug-mochitest-chrome-gpu-e10s: SWwHUVVZSdyltd0hQZAxGw
+ test-windows10-64-mingwclang/debug-mochitest-plain-gpu-e10s: KDDVD3SBRqOc8989sEvFww
+ test-windows10-64-mingwclang/debug-mochitest-webgl1-core-e10s: P7un1kuTR7aj6r8M1znxYA
+ test-windows10-64-mingwclang/debug-mochitest-webgl1-ext-e10s: EONxuVdZT1St_ABaiF--Ug
+ test-windows10-64-mingwclang/debug-mochitest-webgl2-core-e10s: VoPzuU-0S-SAPeAX8-uX3w
+ test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-1: c2QdUN-bRnCK1Jh78XS3Sg
+ test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-2: GxDmhYncTx2VO9lQeRr2Xw
+ test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-3: KLzFa1VHTIGnYKWdXfL9RA
+ test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-4: EiHm_3gRS82VMR3__PomKw
+ test-windows10-64-mingwclang/debug-reftest-e10s-1: JYWWAQvSSFejRcttyihaIQ
+ test-windows10-64-mingwclang/debug-reftest-e10s-2: SNdxYN8kSwmzxllA230-Yw
+ test-windows10-64-mingwclang/debug-reftest-e10s-3: XbjhZd_OT5m_53_ni5je4A
+ test-windows10-64-mingwclang/debug-reftest-e10s-4: MH8uNMBIQfG81KpwR-Swow
+ test-windows10-64-mingwclang/debug-telemetry-tests-client-e10s: XDvBmAzmSP2O3IUArlgmww
+ test-windows10-64-mingwclang/opt-cppunit-1proc: OkI8Ct44Sb-exinzCQh3RA
+ test-windows10-64-mingwclang/opt-mochitest-chrome-gpu-e10s: duoDYnADRnGuZxNly1QSXA
+ test-windows10-64-mingwclang/opt-mochitest-plain-gpu-e10s: CFnmHHtcTpK7_0O6UU9ztQ
+ test-windows10-64-qr/debug-crashtest-e10s: TFKa4x08RQm0gGAOQGyIpQ
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-1: U2s5SvKZS-a5A59v-doT-g
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-2: SK1GzWmARlGmitYMYohs-Q
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-3: F2l_VBvNQYeZ9l5McnHPrQ
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-4: FwUltM3nTb-Sooy-fTLpLQ
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-5: AmZk_tD9ThS14gqyVgfdjw
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-6: Txv1RNX6Rh-4dM4tTluw4w
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-7: fLJ-XSEgSoeArotMk_tGAA
+ test-windows10-64-qr/debug-mochitest-chrome-gpu-e10s: D5_SiluFQFyH537bgT8Qyg
+ test-windows10-64-qr/debug-mochitest-media-e10s: R89_8XmMQOC1HmX6WRPLJA
+ test-windows10-64-qr/debug-mochitest-media-spi-e10s: ORagls3-TCe1yNgTj16tRQ
+ test-windows10-64-qr/debug-mochitest-plain-e10s-1: XNf70aO1SWy2JjgioNhzBw
+ test-windows10-64-qr/debug-mochitest-plain-e10s-2: L4U7o4DSSqipxrDT8jgT2A
+ test-windows10-64-qr/debug-mochitest-plain-e10s-3: Hrxg0mOVRJa2BrD5pYP9_A
+ test-windows10-64-qr/debug-mochitest-plain-e10s-4: TqVZvP3RTsS3Z1oJeJYEew
+ test-windows10-64-qr/debug-mochitest-plain-e10s-5: eziiUPcIR1qp_awM6bIH0g
+ test-windows10-64-qr/debug-mochitest-plain-gpu-e10s: Eh0pi24aT0q4StIsiqLrlw
+ test-windows10-64-qr/debug-mochitest-webgl1-core-e10s: CbTgFUV1RWazAFjS8jpuQg
+ test-windows10-64-qr/debug-mochitest-webgl2-core-e10s: O2aWByNGT4-WMPR4KqBJpA
+ test-windows10-64-qr/debug-reftest-e10s-1: eW9czyw_TQip5Sn9kscv2w
+ test-windows10-64-qr/debug-reftest-e10s-2: cyPiySDZR8-O5I66uzz4ew
+ test-windows10-64-qr/debug-reftest-e10s-3: ZU3rr7gKSLS_EiOAiq4WqA
+ test-windows10-64-qr/debug-reftest-e10s-4: ZAUotvhaTNmFeb35l--xKQ
+ test-windows10-64-qr/debug-web-platform-tests-crashtest-e10s: UHVdyNbVTTK-TKMil1THPw
+ test-windows10-64-qr/debug-web-platform-tests-e10s-1: DFmn_mDKSd-XizbEQkBWwQ
+ test-windows10-64-qr/debug-web-platform-tests-e10s-10: TtWgS6ZrTr6LuNiK8b6NIA
+ test-windows10-64-qr/debug-web-platform-tests-e10s-11: JsuoH4yzRWyvLV2CafUvtA
+ test-windows10-64-qr/debug-web-platform-tests-e10s-12: W2vKwOpaSC6v4ZBw85jk2w
+ test-windows10-64-qr/debug-web-platform-tests-e10s-13: FiejTUIdTqiRWLMIehtGAw
+ test-windows10-64-qr/debug-web-platform-tests-e10s-14: RfNFOKRVQnqiqrF2XRPIrw
+ test-windows10-64-qr/debug-web-platform-tests-e10s-2: Kv-jszrmRjiJrV79us2deg
+ test-windows10-64-qr/debug-web-platform-tests-e10s-3: QQdQUQO4RB--Y_v6EfJopg
+ test-windows10-64-qr/debug-web-platform-tests-e10s-4: FykVnRRZRZaaX8RwflZJYQ
+ test-windows10-64-qr/debug-web-platform-tests-e10s-5: Ba5EVoojSbW8UL-s1IDzoA
+ test-windows10-64-qr/debug-web-platform-tests-e10s-6: QDp_nXAjRQ2BxuRNJwe8ZA
+ test-windows10-64-qr/debug-web-platform-tests-e10s-7: OD6Z6vxBRmCpYsULS7XDXg
+ test-windows10-64-qr/debug-web-platform-tests-e10s-8: O4_eRBTMQqCAmW3jXZD1OA
+ test-windows10-64-qr/debug-web-platform-tests-e10s-9: Yj7LEbuJTvqfROSWeZx-Mg
+ test-windows10-64-qr/debug-web-platform-tests-reftest-e10s-1: W6xIitVZSAuaVESwSt9S8Q
+ test-windows10-64-qr/debug-web-platform-tests-reftest-e10s-2: QRfc-mJBT1iOkbcuRFsxnQ
+ test-windows10-64-qr/debug-web-platform-tests-reftest-e10s-3: b75To_G-T3GcrffFWVQ86w
+ test-windows10-64-qr/debug-web-platform-tests-reftest-e10s-4: fYjAoNxIQW-yzwfcItOj1g
+ test-windows10-64-qr/debug-web-platform-tests-reftest-e10s-5: ZvfGGxOQRvuJ4pXkekkOBQ
+ test-windows10-64-qr/debug-web-platform-tests-wdspec-e10s-1: ICNfYGEFTDy42_kViBcCtA
+ test-windows10-64-qr/debug-web-platform-tests-wdspec-e10s-2: cxeKoYXTSfKzlxWGyI03LQ
+ test-windows10-64-qr/debug-web-platform-tests-wdspec-e10s-3: JcO_gtblRkupl_yxNPHj3w
+ test-windows10-64-shippable-qr/opt-awsy-base-e10s: DKAdCUHNS4GJ2PCzuiDENg
+ test-windows10-64-shippable-qr/opt-awsy-e10s: KKzEY4Y1RweAsfC5Zfc6RQ
+ test-windows10-64-shippable-qr/opt-awsy-tp6-e10s: IXZLQ8GMRMePUHtZ1c7S6A
+ test-windows10-64-shippable-qr/opt-crashtest-e10s: VVufFjzFTjywAETE_wmGrQ
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-1: XcIQs9-wQAuw-9UYOy3m4A
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-2: Mih54YSrRvWN9qTl2BcAbA
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-3: Gs_Tn4LbTNSZy8fLee5urw
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-4: dLKFYz3GSoq-aduuNye0UQ
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-5: dPHfKNnqSWy5ZYQWsWgyxQ
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-6: HhdtNMpGQOeN8JALgSbrrQ
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-7: WcVWw6X0QYCI_Tn6lyB8xw
+ test-windows10-64-shippable-qr/opt-mochitest-chrome-gpu-e10s: cnW6DeR6T_KwAIU3pPF-Gg
+ test-windows10-64-shippable-qr/opt-mochitest-media-e10s: CsK8yLHpSbu_4KLuNeRDqw
+ test-windows10-64-shippable-qr/opt-mochitest-media-spi-e10s: Gb7GGha4T6usidslofjKlQ
+ test-windows10-64-shippable-qr/opt-mochitest-plain-e10s-1: et7QaTE-Q_WRxoLyE85P_A
+ test-windows10-64-shippable-qr/opt-mochitest-plain-e10s-2: RWWOHwphQbGebh2zq2PNRg
+ test-windows10-64-shippable-qr/opt-mochitest-plain-e10s-3: JLDAqAizR_aVOTSpeqRLBw
+ test-windows10-64-shippable-qr/opt-mochitest-plain-e10s-4: SXywcnXYQZ-dm6Q5iiUAEA
+ test-windows10-64-shippable-qr/opt-mochitest-plain-e10s-5: IBITtoiXQDuNP_nnIWwNsw
+ test-windows10-64-shippable-qr/opt-mochitest-plain-gpu-e10s: T9levs0CRy6henXSxYKEWQ
+ test-windows10-64-shippable-qr/opt-mochitest-webgl1-core-e10s: PmH71jrwRP6TOVjE_toqqA
+ test-windows10-64-shippable-qr/opt-mochitest-webgl2-core-e10s: QL44CfhJRPOfy_hBcRIl1g
+ test-windows10-64-shippable-qr/opt-raptor-ares6-firefox-e10s: Kj1IfmbrRCq6obcKXzgLtw
+ test-windows10-64-shippable-qr/opt-raptor-motionmark-animometer-firefox-e10s: G94KSi52RLyWUE9UKbWb5w
+ test-windows10-64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: FGWsxw4UT8KPu_Q3m9hZsg
+ test-windows10-64-shippable-qr/opt-raptor-speedometer-firefox-e10s: LS9T0iewQn2EoXxVpdN66w
+ test-windows10-64-shippable-qr/opt-raptor-stylebench-firefox-e10s: YiLZee8QSF2jQVQojntL5g
+ test-windows10-64-shippable-qr/opt-raptor-sunspider-firefox-e10s: X69G-AVGSomiBFn1KtgdWw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-1-firefox-cold-e10s: UD8_9nFVRouaUngp77w24w
+ test-windows10-64-shippable-qr/opt-raptor-tp6-10-firefox-cold-e10s: JB7rZH5-TJaMCV9EBuZZGQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-11-firefox-cold-e10s: dAOZa5_-QfWTIco4WMFOZA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-12-firefox-cold-e10s: XMLfoZcIRTK5O857YIqDTQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-13-firefox-cold-e10s: Hkg-t8w-S5mUiyhUlHfwtw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-14-firefox-cold-e10s: T36JNjB9QxO-6bM02z0d1w
+ test-windows10-64-shippable-qr/opt-raptor-tp6-15-firefox-cold-e10s: D20qQ4Q3RkqfIxu2RNMDQA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-16-firefox-cold-e10s: Vfgh2oQDRVSWGuCR63saug
+ test-windows10-64-shippable-qr/opt-raptor-tp6-17-firefox-cold-e10s: VCjHhYFYRm6B7DxguEHSNA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-18-firefox-cold-e10s: dahsFHIYRoyPNBd0JA_rPA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-19-firefox-cold-e10s: Cns5YflmQVu5oS11GiSgeg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-2-firefox-cold-e10s: KrzNzOAWSAOYKM4Qs_7UGw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-20-firefox-cold-e10s: EeiB7LVJSjqlnPvagWr5PA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-21-firefox-cold-e10s: SJU7ZuXKTiSqYpT9ad1ZHA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-22-firefox-cold-e10s: MOHINw_KQF6VroZq0J2Gkw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-23-firefox-cold-e10s: VIOwVu_GQqOdI-AH5fMXxQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-24-firefox-cold-e10s: few-p6OMS2KLa8FsqYKXQA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-25-firefox-cold-e10s: e0sgOpleRYqkpxpUsujZ2Q
+ test-windows10-64-shippable-qr/opt-raptor-tp6-26-firefox-cold-e10s: aAth3XztRhemzGp6evT6rg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-27-firefox-cold-e10s: dqURwyjsSqGr8lasJoftHA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-28-firefox-cold-e10s: dyeUBK2MSOaXci9qc-ebtQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-29-firefox-cold-e10s: WFDzwsZNTjm7UnH5D5eQyA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-3-firefox-cold-e10s: IsBho0hTRdCSziHCmaIKqw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-30-firefox-cold-e10s: ISJFfW1kSZSrDzWtjNxpBg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-31-firefox-cold-e10s: IqhexAE4QFi-8U3BqA-qrA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-4-firefox-cold-e10s: GhTtG6HuRI6xVpp6s_rlrA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-5-firefox-cold-e10s: Mju0RfuET1OmUtQzJNuWqg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-6-firefox-cold-e10s: XIWfquQ7R3SQQUnAtAmi-Q
+ test-windows10-64-shippable-qr/opt-raptor-tp6-7-firefox-cold-e10s: Wy-vnGYESGCTZFlYrsP6Fw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-8-firefox-cold-e10s: bP1fxj3kQvSP_Qb9iR1eVA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-9-firefox-cold-e10s: WEn3s5iwQQmhW0yPSMbv_w
+ test-windows10-64-shippable-qr/opt-raptor-tp6-binast-1-firefox-e10s: JNwC43jERaO5d-G9Q4lTgA
+ test-windows10-64-shippable-qr/opt-raptor-wasm-godot-firefox-e10s: agoPn2XsSCax6uNOA1uuIw
+ test-windows10-64-shippable-qr/opt-raptor-webaudio-firefox-e10s: DL2LyC1FTimXTk7rssGfFA
+ test-windows10-64-shippable-qr/opt-reftest-e10s-1: S_9GSEF3RaKGeAZdVO2rjw
+ test-windows10-64-shippable-qr/opt-reftest-e10s-2: BdbrxjMmQZiFlC-7LXEd2Q
+ test-windows10-64-shippable-qr/opt-talos-chrome-e10s: XEhx8onUQ0qtOgRLWUe1Ug
+ test-windows10-64-shippable-qr/opt-talos-damp-e10s: Byd5MMwFS06_zm8fHVMT9Q
+ test-windows10-64-shippable-qr/opt-talos-dromaeojs-e10s: FM8VfrwGTC2gAVVpFkDdYA
+ test-windows10-64-shippable-qr/opt-talos-g1-e10s: dB0bWwspTs2M-KtV4Q1YCg
+ test-windows10-64-shippable-qr/opt-talos-g4-e10s: aURcdB5hT8aaxvJqYGwdeQ
+ test-windows10-64-shippable-qr/opt-talos-g5-e10s: H4o0-WinSbGQCS4iSdId9w
+ test-windows10-64-shippable-qr/opt-talos-other-e10s: BL1EYp0PQkCg3u5pQIOXNQ
+ test-windows10-64-shippable-qr/opt-talos-perf-reftest-e10s: MZXsS1xrSAWoNmn-UMBBDA
+ test-windows10-64-shippable-qr/opt-talos-perf-reftest-singletons-e10s: OqWFWN6NTtm07JAvGGZTpQ
+ test-windows10-64-shippable-qr/opt-talos-realworld-webextensions-e10s: DG75SfDuTeKXr5sva5jlFA
+ test-windows10-64-shippable-qr/opt-talos-svgr-e10s: cF1sobp3Q8KWSIPZetxGKA
+ test-windows10-64-shippable-qr/opt-talos-tabswitch-e10s: YNfBX_nUQ9OIBD-uI1zXzw
+ test-windows10-64-shippable-qr/opt-talos-tp5o-e10s: Ae2aDXsDQfSK6e8YdfVnug
+ test-windows10-64-shippable-qr/opt-talos-webgl-e10s: eKeMNuDNRJy7zcjQTOwBTQ
+ test-windows10-64-shippable-qr/opt-talos-xperf-e10s: UIlClBIFR0WLGfqEjWWxwQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-crashtest-e10s: eO8igetfSbOoeicGcdT5sw
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-1: IlBtjziVTGa06tqDWwyp0Q
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-10: QXlo32OeRTKhqDNNDLIqhg
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-2: YNBDltrtTFmrYdXMXmLOEA
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-3: X5XDVPneSPeC66VR39-pyw
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-4: Jy74kM9_SEiVnsAfqJVkVA
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-5: cPZg_590R7mCV6MEAN8zTg
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-6: TI703tpaStyY_hZE9FKVXQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-7: aDugb8bwQ8-lAlK1eGBmNQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-8: CoSmIxq9TDi41sxxIFPGPw
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-9: Ln6fIBkpRgCmtAwopHgwwg
+ test-windows10-64-shippable-qr/opt-web-platform-tests-reftest-e10s-1: Fh2Hg3fJTLa8rPGHW1vJvQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-reftest-e10s-2: N97xSUQXTPeLUxWpdb-JSQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-reftest-e10s-3: VEV0NNHjToOD5qIATr7DSg
+ test-windows10-64-shippable-qr/opt-web-platform-tests-reftest-e10s-4: IvwRt3CNRSixXl48QpB8QA
+ test-windows10-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-1: Zgj1NMPOTsmQjoUOVNN1sA
+ test-windows10-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-2: BFMDPpuLQKyNfsipaJGzbg
+ test-windows10-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-3: HFb0WD4_TnCtTIl46bTkww
+ test-windows10-64-shippable/opt-awsy-base-e10s: Sndfv5xgSGSE-BKcVpZgLQ
+ test-windows10-64-shippable/opt-awsy-e10s: EB3NR7iQRaOoNSE4Y8bUZA
+ test-windows10-64-shippable/opt-awsy-tp6-e10s: SEWlskT5RVCjHEBbhQVw7w
+ test-windows10-64-shippable/opt-cppunit-1proc: SaDO7knxR86RVHuRirbY7Q
+ test-windows10-64-shippable/opt-crashtest-e10s: OXCNwnI0QBOpWbKvLrplxg
+ test-windows10-64-shippable/opt-firefox-ui-functional-local-e10s: NfcVR0yfQj6otQH562XPtw
+ test-windows10-64-shippable/opt-firefox-ui-functional-remote-e10s: dlXYAaQ-TViYsao_3TFi2w
+ test-windows10-64-shippable/opt-marionette-e10s: SFtwXOSRSl6HEuf_2d99oA
+ test-windows10-64-shippable/opt-marionette-gpu-e10s: Qr9r7LK9QEm5baZTn5Ie3g
+ test-windows10-64-shippable/opt-mochitest-a11y-1proc: E6Qbk0NjQLeqrXwv8tRuUA
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-1: XeNuCApqR5uSc62GJD5c5w
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-2: XmriDxRgQ7uvqDMjbhH3dA
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-3: EDTS0HskQkOJCGZQBm3FlQ
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-4: LVLNfgv2Smy_AYhT8MXuaw
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-5: ZLdZ4ZnESg6hiWJItL8hHA
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-6: Bdmq0DFHRg2NDAYPhWQ_Vw
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-7: Y8ziM33HS9q5WdcQCI706g
+ test-windows10-64-shippable/opt-mochitest-chrome-1proc-1: FWhl3_2QSfOtaUJZLmG3GA
+ test-windows10-64-shippable/opt-mochitest-chrome-1proc-2: eORKlt8IQ7y1COwvTrElZg
+ test-windows10-64-shippable/opt-mochitest-chrome-gpu-e10s: DGFUQyhpQo6Dy7Vomf9f3A
+ test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-1: Dq4_Sd58TuG4UHtxQTvVmw
+ test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-2: MeuDLw1wQB28wlzMAv3sjQ
+ test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-3: Sc-SObw-SO6gi_jDMO1QVA
+ test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-4: YgZBNxTmTLKNoeOJn7zStw
+ test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-5: AdIqydAHQPCX5t7Z_NOjHA
+ test-windows10-64-shippable/opt-mochitest-media-e10s: axc3v2h7SRK5DM9rQESRVA
+ test-windows10-64-shippable/opt-mochitest-media-spi-e10s: DsmRHJdISHOUGmUVJ941Fg
+ test-windows10-64-shippable/opt-mochitest-plain-e10s-1: RyPUgvaxRDWY9RuJrcsYOA
+ test-windows10-64-shippable/opt-mochitest-plain-e10s-2: Kqb72CeCSaKsyMmCkJGLMg
+ test-windows10-64-shippable/opt-mochitest-plain-e10s-3: S37wzaO2T_KbGqW1ujQsnQ
+ test-windows10-64-shippable/opt-mochitest-plain-e10s-4: AjruxelXSfaWpQ41WSXxnA
+ test-windows10-64-shippable/opt-mochitest-plain-e10s-5: fRMD2S21RwuLBsxMg8b0Aw
+ test-windows10-64-shippable/opt-mochitest-plain-gpu-e10s: XLZrG6O0RS6_lXjA0XMkZA
+ test-windows10-64-shippable/opt-mochitest-webgl1-core-e10s: ZRSw1OlmThO-xJmSerYGrA
+ test-windows10-64-shippable/opt-mochitest-webgl1-ext-e10s: NpylWvLGTJiYsPITxG0bHw
+ test-windows10-64-shippable/opt-mochitest-webgl2-core-e10s: AlHpRV2FTEOpZOL9B6qwSw
+ test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-1: S4-PletIQAOZJ0YHhYw_Ug
+ test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-2: UblV5zE6R1mvbfPazqj-UA
+ test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-3: QnzmDSHeStep1H0_vCkJxw
+ test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-4: TDrIE5ZSRVmF9jEnutb1GA
+ test-windows10-64-shippable/opt-raptor-ares6-firefox-e10s: Ypvp3pmuTrC9qrosKIXgPw
+ test-windows10-64-shippable/opt-raptor-motionmark-animometer-firefox-e10s: SAlnye6XTmiWAcXkglhCkw
+ test-windows10-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: NUw3ra9hR8iQk5Imi9Q7WA
+ test-windows10-64-shippable/opt-raptor-speedometer-firefox-e10s: VALKB1TOQhatc8UEbzh7_w
+ test-windows10-64-shippable/opt-raptor-stylebench-firefox-e10s: Y6HbzLEkSrqXMFqEe_KqCg
+ test-windows10-64-shippable/opt-raptor-sunspider-firefox-e10s: HHo5aB0hR8ajmlqGTcavFA
+ test-windows10-64-shippable/opt-raptor-tp6-1-firefox-cold-e10s: E_bjUO2ySOmdUw6B2SK7kg
+ test-windows10-64-shippable/opt-raptor-tp6-10-firefox-cold-e10s: A7L0NKQXTdubBe5uVitm7w
+ test-windows10-64-shippable/opt-raptor-tp6-11-firefox-cold-e10s: IVus63RAQICNZ2rZLuFxAQ
+ test-windows10-64-shippable/opt-raptor-tp6-12-firefox-cold-e10s: eaFS2MPORZa1LdVtDStsFw
+ test-windows10-64-shippable/opt-raptor-tp6-13-firefox-cold-e10s: dPFYRy3qTAO9VM4kLgZcAQ
+ test-windows10-64-shippable/opt-raptor-tp6-14-firefox-cold-e10s: ECCfsLY-Q4-I739VZIFzYw
+ test-windows10-64-shippable/opt-raptor-tp6-15-firefox-cold-e10s: IRZB6jwsTaSW1C8tnJd5XA
+ test-windows10-64-shippable/opt-raptor-tp6-16-firefox-cold-e10s: VJX_DmC9R3WzqcNSfvlt3w
+ test-windows10-64-shippable/opt-raptor-tp6-17-firefox-cold-e10s: Ag5sgkzpScWZWAB6kX7kCw
+ test-windows10-64-shippable/opt-raptor-tp6-18-firefox-cold-e10s: MklsU9-jRNKCAQKAxz-sFQ
+ test-windows10-64-shippable/opt-raptor-tp6-19-firefox-cold-e10s: AuGDj-wzQCW3TSxqpuE3wg
+ test-windows10-64-shippable/opt-raptor-tp6-2-firefox-cold-e10s: D93bpAS3Qb-P_iI5lOSNEQ
+ test-windows10-64-shippable/opt-raptor-tp6-20-firefox-cold-e10s: e3G5nsfdQgGpXF2yxmxARQ
+ test-windows10-64-shippable/opt-raptor-tp6-21-firefox-cold-e10s: Ckjhb3f-T-6hXumlsWuZ-w
+ test-windows10-64-shippable/opt-raptor-tp6-22-firefox-cold-e10s: ZlPhgwRoTO63HMUk3k83uw
+ test-windows10-64-shippable/opt-raptor-tp6-23-firefox-cold-e10s: ObU3WoAGT9Gporg2-SBkvQ
+ test-windows10-64-shippable/opt-raptor-tp6-24-firefox-cold-e10s: EMo5uOFOSTea90xJ_c28-g
+ test-windows10-64-shippable/opt-raptor-tp6-25-firefox-cold-e10s: Xuf4XJR9QdOwlJhCyLzwoQ
+ test-windows10-64-shippable/opt-raptor-tp6-26-firefox-cold-e10s: TaRzqOZxRAmjcQPTroqKDg
+ test-windows10-64-shippable/opt-raptor-tp6-27-firefox-cold-e10s: bfuc7EuDSPmAyKk1OiZm4A
+ test-windows10-64-shippable/opt-raptor-tp6-28-firefox-cold-e10s: KqULAiWVS2KcNJToP3taog
+ test-windows10-64-shippable/opt-raptor-tp6-29-firefox-cold-e10s: VapQvsc3TD-f5wmNnhBYZQ
+ test-windows10-64-shippable/opt-raptor-tp6-3-firefox-cold-e10s: Nh7hqkaLRV2V4W6YnUYyug
+ test-windows10-64-shippable/opt-raptor-tp6-30-firefox-cold-e10s: DMkGLFbGQeuEQ0Q093Clfw
+ test-windows10-64-shippable/opt-raptor-tp6-31-firefox-cold-e10s: M-QtAevQR9y9KsBPmqWTMw
+ test-windows10-64-shippable/opt-raptor-tp6-4-firefox-cold-e10s: cidsVfoQRJSd_YjO_UkNbA
+ test-windows10-64-shippable/opt-raptor-tp6-5-firefox-cold-e10s: U4g-V93GS3WtveUMtg2oHg
+ test-windows10-64-shippable/opt-raptor-tp6-6-firefox-cold-e10s: f496w8-hSEykwrgMqRQulg
+ test-windows10-64-shippable/opt-raptor-tp6-7-firefox-cold-e10s: Wic14INASwun_RlfttZUYA
+ test-windows10-64-shippable/opt-raptor-tp6-8-firefox-cold-e10s: KufRzZt4RRienthAZrymkQ
+ test-windows10-64-shippable/opt-raptor-tp6-9-firefox-cold-e10s: CDsqz8p0SgKR0aFIL9tbfA
+ test-windows10-64-shippable/opt-raptor-tp6-binast-1-firefox-e10s: cGm_c845Sh6AD--EiRf4Wg
+ test-windows10-64-shippable/opt-raptor-wasm-godot-firefox-e10s: ebWoYeFLR_2DTL_2BoqT7A
+ test-windows10-64-shippable/opt-raptor-webaudio-firefox-e10s: bDx8OzEOQ2-7qf-lVmQAAw
+ test-windows10-64-shippable/opt-reftest-e10s-1: RxSpCKlcQJ-oXAVC85HGtA
+ test-windows10-64-shippable/opt-reftest-e10s-2: HjAP0z4rTbKa1II68Xu0jA
+ test-windows10-64-shippable/opt-talos-bcv-e10s: TSLEoYVoTAiv_FyTi704Xw
+ test-windows10-64-shippable/opt-talos-chrome-e10s: aYowQsbvS8ideXnUoCqAxA
+ test-windows10-64-shippable/opt-talos-damp-e10s: ZH-8KjqWRq2GsnlaCFlMxA
+ test-windows10-64-shippable/opt-talos-dromaeojs-e10s: Z7u3NGdOTOW6mNI1WoBikg
+ test-windows10-64-shippable/opt-talos-g1-e10s: VHdffzSuT-imdaWDuwSJfg
+ test-windows10-64-shippable/opt-talos-g4-e10s: a4_iaLtISN2exy_Et56nEQ
+ test-windows10-64-shippable/opt-talos-g5-e10s: TtzmsZ9UQAmhaSj84RGe5g
+ test-windows10-64-shippable/opt-talos-other-e10s: cOgc6lIcT4SIgFsjwkOHmw
+ test-windows10-64-shippable/opt-talos-perf-reftest-e10s: Y-shJAXwSeKhsf3w0hI1SA
+ test-windows10-64-shippable/opt-talos-perf-reftest-singletons-e10s: YzK5XKFWRpqBRX8i250Mqw
+ test-windows10-64-shippable/opt-talos-realworld-webextensions-e10s: JwqnAOxZSYOqEA5HGBRJUA
+ test-windows10-64-shippable/opt-talos-svgr-e10s: TdJ_OF-MQjyqjBHnC9D8XA
+ test-windows10-64-shippable/opt-talos-tabswitch-e10s: QiDCpAK8QZKD8B3S3Gpf9A
+ test-windows10-64-shippable/opt-talos-tp5o-e10s: WbPsLxZmR6ymIApjGPqmZQ
+ test-windows10-64-shippable/opt-talos-webgl-e10s: Pm9smCa0RaOWW6OICLKgEw
+ test-windows10-64-shippable/opt-talos-xperf-e10s: HbDhCAkQTceYQVW5ghEBfA
+ test-windows10-64-shippable/opt-telemetry-tests-client-e10s: LhR8UYNARIO_B5KF2eSnTQ
+ test-windows10-64-shippable/opt-web-platform-tests-crashtest-e10s: PGzXXmv9RUus4fY4xJi4eQ
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-1: dNEJQY0hQRK0KcIUTOY38w
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-10: VzSspFb7QRG70nXq3aCGkA
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-2: IpULg4nmS_6RhjZNc5fxsg
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-3: C3aeyA9vT2qNNsb2DEPsZA
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-4: JjSZr-kwS8mEXQ1uMBLaeQ
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-5: L-4OiTooSmWvd4yCcsvnQg
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-6: MrdPsmwAQKOEhI1p69krOw
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-7: DotTXLsMTR-TonZ2mcl7jA
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-8: WrssrAXwTcWcJx0MAHFoCw
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-9: cAv-LjSFT5CMxBDG28jKNw
+ test-windows10-64-shippable/opt-web-platform-tests-reftest-e10s-1: ZRyUXR7sS_WboLgX28Bd5A
+ test-windows10-64-shippable/opt-web-platform-tests-reftest-e10s-2: KupFds0pQueuUNbzOkmcQw
+ test-windows10-64-shippable/opt-web-platform-tests-reftest-e10s-3: Vr3pghhzRSa1PTU-9nEK9Q
+ test-windows10-64-shippable/opt-web-platform-tests-reftest-e10s-4: PIrDfiRTS-eUUYO8my-4Qg
+ test-windows10-64-shippable/opt-web-platform-tests-wdspec-e10s-1: B9Y1VAkeQsadeSxY_uq0pw
+ test-windows10-64-shippable/opt-web-platform-tests-wdspec-e10s-2: e8L5sm2ETFO9I3D6L9n9ZA
+ test-windows10-64-shippable/opt-web-platform-tests-wdspec-e10s-3: MYkuwQ2jQHeJuBW596BRVA
+ test-windows10-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: f2dLB0RIQpGK0NLSwgL6rw
+ test-windows10-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: CrV0u18oTZayHJDjpG05gQ
+ test-windows10-64-shippable/opt-xpcshell-e10s-1: L9r-GZi4SMittJHM2mx5ww
+ test-windows10-64-shippable/opt-xpcshell-e10s-2: eEoJutxGSuG-sCtQWM_YbQ
+ test-windows10-64/debug-cppunit-1proc: ZFU0k4hIQvCtGVaeZGTe-A
+ test-windows10-64/debug-crashtest-e10s: Zsv1AgALRwWYv2MYbhaegA
+ test-windows10-64/debug-firefox-ui-functional-local-e10s: MjN8X1EGSdeHNyhBoTwStQ
+ test-windows10-64/debug-firefox-ui-functional-remote-e10s: c5Pzfd2nSqKn2YGtzVAaoA
+ test-windows10-64/debug-gtest-1proc: KixrUZOJQoa73BDrkwKkQw
+ test-windows10-64/debug-marionette-e10s: XAzJ_sCTRSOfxHr30hnYKQ
+ test-windows10-64/debug-marionette-gpu-e10s: Ux1S1LqFQX6ZiTR6tD6-4A
+ test-windows10-64/debug-mochitest-a11y-1proc: Pme_mqALT2a_LONPJCSVsA
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-1: Mwb1W3CrRZmjZZ4GylWlmw
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-2: MReoeaSQTwCjDHE_1CTHzQ
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-3: MTxo_DAHTReejStlmB_mBg
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-4: OqGxGnJcSiuz_bGEp05Wnw
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-5: GyqvJyPMQPC92sxYbY_T6A
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-6: GHjvbeFXQJKQCoVqcI8Slw
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-7: LOyfdC4gR0atVTbd-AGDXg
+ test-windows10-64/debug-mochitest-chrome-1proc-1: eTiPQHPSR_G5jRJz5iG5mA
+ test-windows10-64/debug-mochitest-chrome-1proc-2: XbkEoyFdQ2SiKkJahNBSUA
+ test-windows10-64/debug-mochitest-chrome-1proc-3: T7J2BnusTi64tmzPqnXWjQ
+ test-windows10-64/debug-mochitest-chrome-gpu-e10s: IGbnNE8mRvypYWpvVpXxMw
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-1: TI9wZ60tQ0WCb546l1oBxQ
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-2: KPml1tOORzi5fvYOxaArHA
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-3: ddS8nlE4SJSNnS-WrPz-mw
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-4: GLmdnFQAToiZvbYdNGIpuw
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-5: b48mC9-ySQqNgssyz1682g
+ test-windows10-64/debug-mochitest-media-e10s: OaC2HNJaTJSc-Qzs1oCEPA
+ test-windows10-64/debug-mochitest-media-spi-e10s: Di8wr1hdTjWbAzPCni43JQ
+ test-windows10-64/debug-mochitest-plain-e10s-1: fKIGgZd2QRSyA0iAipi6dw
+ test-windows10-64/debug-mochitest-plain-e10s-2: CGfFJ6X4TBiskfXkWiJDWg
+ test-windows10-64/debug-mochitest-plain-e10s-3: UJcLxDlZT3OfN75N_Kf9HQ
+ test-windows10-64/debug-mochitest-plain-e10s-4: RLgqxXL9R8eSSXoHcMiXqQ
+ test-windows10-64/debug-mochitest-plain-e10s-5: L5pVIpgwRQ2cDtc37Q29rg
+ test-windows10-64/debug-mochitest-plain-gpu-e10s: GmpJ1copSguDsBn2T-C-dw
+ test-windows10-64/debug-mochitest-webgl1-core-e10s: LbLtJVGYSVyD2VBVAwg29A
+ test-windows10-64/debug-mochitest-webgl1-ext-e10s: ZWrT1DBKRtaZbmH7VeHRpA
+ test-windows10-64/debug-mochitest-webgl2-core-e10s: dl_rG8G0RryVOvkb9szYXw
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-1: dJ2Mm0mFTq-TcGpmDHMrRQ
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-2: ZieEvAoMQ3ixQ8T0H0KxBQ
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-3: exjV5n1eRt6caP0NRviCTA
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-4: BaeRYI6hQTOmx37HRtBWSg
+ test-windows10-64/debug-reftest-e10s-1: aQ1KwtMcSW2X1-5akLb8wA
+ test-windows10-64/debug-reftest-e10s-2: QLjuuNGrSXqIeOr8ar9y3A
+ test-windows10-64/debug-reftest-e10s-3: fwUghV7qQRi55Rr_K86Pxw
+ test-windows10-64/debug-reftest-e10s-4: E7PdChtXRgmH3I9bfjNuzg
+ test-windows10-64/debug-telemetry-tests-client-e10s: Lre1x9jtReyO1c-KqAeJyg
+ test-windows10-64/debug-web-platform-tests-crashtest-e10s: aKts4uikSMmXN_m7EDmYMw
+ test-windows10-64/debug-web-platform-tests-e10s-1: VQiYXfx9Q3KrtG-8lyOalQ
+ test-windows10-64/debug-web-platform-tests-e10s-10: At0H0hTuRDOnsF6FW-lG-A
+ test-windows10-64/debug-web-platform-tests-e10s-11: V-h4LlrUQXyonz7S17Aemw
+ test-windows10-64/debug-web-platform-tests-e10s-12: F9Uu-4orTBeTFK6pcNXJ0w
+ test-windows10-64/debug-web-platform-tests-e10s-13: eeQUrbzCRb2aFYfD5PlZhw
+ test-windows10-64/debug-web-platform-tests-e10s-14: SWHD0HsoQ02gwsofQQtLJQ
+ test-windows10-64/debug-web-platform-tests-e10s-2: aR0OhFxOQu2bggCmJo0lKw
+ test-windows10-64/debug-web-platform-tests-e10s-3: HtxwMWYbR-uD9yokFSYwzQ
+ test-windows10-64/debug-web-platform-tests-e10s-4: G66tGRSXTASYILHIOSsXmQ
+ test-windows10-64/debug-web-platform-tests-e10s-5: KC6cjG8jRGCJMeSda9TRiQ
+ test-windows10-64/debug-web-platform-tests-e10s-6: d5pDghWES_aEUj61VL_o7Q
+ test-windows10-64/debug-web-platform-tests-e10s-7: SBDqsDZCQxKD5ahzITbdqQ
+ test-windows10-64/debug-web-platform-tests-e10s-8: A_bMjplOQMqkhXBT4FkOjw
+ test-windows10-64/debug-web-platform-tests-e10s-9: TdSpV8V3RmCdRomJnihySQ
+ test-windows10-64/debug-web-platform-tests-reftest-e10s-1: aXoJgoSNSau5BoX6nYgGKQ
+ test-windows10-64/debug-web-platform-tests-reftest-e10s-2: YBIl-JrDQy2mCNZQkC0UEQ
+ test-windows10-64/debug-web-platform-tests-reftest-e10s-3: eCK-oBSRTVC4UTlH3GakFQ
+ test-windows10-64/debug-web-platform-tests-reftest-e10s-4: Bz7IUifIQ7mD9ySWAiWj7Q
+ test-windows10-64/debug-web-platform-tests-reftest-e10s-5: Zr5yTBOFRnO5NlJ2j7gcZQ
+ test-windows10-64/debug-web-platform-tests-wdspec-e10s-1: dFNCl-8VSq6mIPdaqFGrfQ
+ test-windows10-64/debug-web-platform-tests-wdspec-e10s-2: A4L7KEuFTWikrwSaFmaTLw
+ test-windows10-64/debug-web-platform-tests-wdspec-e10s-3: Taofh42QT4KJzqApkR_d-A
+ test-windows10-64/debug-xpcshell-e10s-1: Iuo98Mc_SsmnoQgFtBuHjQ
+ test-windows10-64/debug-xpcshell-e10s-2: WFqyplWCS36q0tRe0OhKzA
+ test-windows10-aarch64/opt-crashtest-e10s: BreHkxZKS1CXXOMgu2yWgg
+ test-windows10-aarch64/opt-mochitest-media-e10s: L64_LU7EQQWXBSpXy64dmA
+ test-windows10-aarch64/opt-mochitest-media-spi-e10s: dWRls29iSfe9DgVd1ecT7Q
+ test-windows10-aarch64/opt-reftest-e10s-1: cRBZs3ksTm6sDrudBR17OQ
+ test-windows10-aarch64/opt-reftest-e10s-2: ZMen6TkKRTK_rhlvDg5zFw
+ test-windows7-32-devedition/opt-cppunit-1proc: WzdxaH6URVyfFcDApCYAPQ
+ test-windows7-32-devedition/opt-crashtest-e10s: LnWLcYacSeib-Ct_6i8f7Q
+ test-windows7-32-devedition/opt-firefox-ui-functional-local-e10s: QJ1iytKvQeaSc99wdQVBzQ
+ test-windows7-32-devedition/opt-firefox-ui-functional-remote-e10s: WuNT1nj-QmGhcn9bxtBLRg
+ test-windows7-32-devedition/opt-marionette-e10s: P45d-_j0Ttu8832xS0mM5g
+ test-windows7-32-devedition/opt-mochitest-a11y-1proc: bsnqmMnVQ5q7SgYyZiwuWQ
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-1: auw1CMpdTjCAkVW__9o8CQ
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-2: LVwfGCqaSH25CCXdPbYtBw
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-3: Fx4XO_B_QlO7_4YdiJbmLg
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-4: ceHUZGDQSRi8JCXvY33sGA
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-5: DjqTxi8aQsuBZThpBUStOg
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-6: bzplY_tlRi23VpQX_Fm_Pw
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-7: HZoZBJesRW-FFLem7EWIqg
+ test-windows7-32-devedition/opt-mochitest-chrome-1proc-1: VmNuY9ZUSpSfa5ytDN0-Mg
+ test-windows7-32-devedition/opt-mochitest-chrome-1proc-2: KG7wYXtvT6i042g-72p8IA
+ test-windows7-32-devedition/opt-mochitest-chrome-gpu-e10s: DLztPR0XRquJEjEQmNGzaA
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-1: LMHNBvDsTPi2jpehJqC_-g
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-2: JQQt2d-QTKGMMMH5t296eg
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-3: M-ZlYhvwRfSpcz8KRT5qDg
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-4: U0wD3fiyRpqVyx_M-J_JNg
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-5: Wlp5wFvaT6aA4zWzKDq3KA
+ test-windows7-32-devedition/opt-mochitest-media-e10s-1: U-Df86QISHKEUIhLQUatIg
+ test-windows7-32-devedition/opt-mochitest-media-e10s-2: WxTLsBIESqW7xAO8pLqbjA
+ test-windows7-32-devedition/opt-mochitest-media-e10s-3: VqbJqZS4S8OE1yTQnBaAPQ
+ test-windows7-32-devedition/opt-mochitest-media-spi-e10s-1: d2LiIjyHQjK30X8gSEQ-NA
+ test-windows7-32-devedition/opt-mochitest-media-spi-e10s-2: cxiCRWajQQ2nV7TL8F8KAg
+ test-windows7-32-devedition/opt-mochitest-media-spi-e10s-3: IR-d736-SYOa75fQBet1aw
+ test-windows7-32-devedition/opt-mochitest-plain-e10s-1: Y79U0lUlT-Cp3ruQ5QT-lQ
+ test-windows7-32-devedition/opt-mochitest-plain-e10s-2: ENsCg6WhTr2vZAGxB538Fw
+ test-windows7-32-devedition/opt-mochitest-plain-e10s-3: QYRvy3PTR-SYer6lPxOBJQ
+ test-windows7-32-devedition/opt-mochitest-plain-e10s-4: bxihiYItRCqcIn3dHyPsAg
+ test-windows7-32-devedition/opt-mochitest-plain-e10s-5: WPRP0QfqRsWHbFijzKRJNw
+ test-windows7-32-devedition/opt-mochitest-plain-gpu-e10s: Q1OqiOPYRe2CQ0P4e6rDIA
+ test-windows7-32-devedition/opt-mochitest-webgl1-core-e10s: K93FzJfUQ_mkTx93aW6SZQ
+ test-windows7-32-devedition/opt-mochitest-webgl1-ext-e10s: BbKUudmQROqpIhcq6pjo8Q
+ test-windows7-32-devedition/opt-mochitest-webgl2-core-e10s: CQWXw0w8S_-I1pBAsca1wQ
+ test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-1: CYZD9znVTyGUZLZ3k50prA
+ test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-2: K9EuKzlDSa-JSw1LZAZ2ng
+ test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-3: BAiRgI1lSvWCddq0gZUk0Q
+ test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-4: AB2LALzsTSSDpItTdLpQkg
+ test-windows7-32-devedition/opt-reftest-e10s-1: KsNFthcySm6VhSGigRRj_w
+ test-windows7-32-devedition/opt-reftest-e10s-2: OFpUuPCtTBSHianAEzvHDQ
+ test-windows7-32-devedition/opt-reftest-gpu-e10s-1: KFyHLIvsTFKPmF3z2OdSJQ
+ test-windows7-32-devedition/opt-reftest-gpu-e10s-2: WgFeWja1RDm_EOabpO_TDg
+ test-windows7-32-devedition/opt-reftest-no-accel-e10s-1: II96LR0NQuCTMN37Izk0cA
+ test-windows7-32-devedition/opt-reftest-no-accel-e10s-2: f3BDnVpdRTyHxLuja-Re5A
+ test-windows7-32-devedition/opt-reftest-no-accel-e10s-3: EkpI-OIRRD26t6GZBaiT0w
+ test-windows7-32-devedition/opt-reftest-no-accel-e10s-4: WlItS-V-Rgij_h31Hf04GQ
+ test-windows7-32-devedition/opt-telemetry-tests-client-e10s: H7IFtmDJRf2O-DQuj9cKtQ
+ test-windows7-32-devedition/opt-web-platform-tests-crashtest-e10s: aLe5F9M6SnOBR6Lea0dFcA
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-1: I773kIYVRxmlq93_zuAMiw
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-10: UJQdMv9NS8W4AIuFRmXArQ
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-11: HqUJiW3hQTaXtoSHW6k7AA
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-12: F7vf-j5aSRq-pv-v1KQ5Rg
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-2: BecyFqgrRL-wkSZ4p6-56w
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-3: RcQafNQxTjWbGR5U52fDFA
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-4: b7cBTtUzQtevhcSV3jOotA
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-5: CiGXtygeRTGVbr1SYVRdPw
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-6: drBcN2-8QD65Nen-Jee1QQ
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-7: RqyqaW1_T0WE049RMCdtjQ
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-8: YNdeirnyTxCyXcmhTe1dlw
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-9: aCyoc2r6SKCjj6YkJkzAzw
+ test-windows7-32-devedition/opt-web-platform-tests-reftest-e10s-1: fbcs9IgaSRuUkqAE9jYsqg
+ test-windows7-32-devedition/opt-web-platform-tests-reftest-e10s-2: OoWcr7HVS-GT4dD7kZ9KGQ
+ test-windows7-32-devedition/opt-web-platform-tests-reftest-e10s-3: Tp9lHXVPQd-DcMfkgotDzg
+ test-windows7-32-devedition/opt-web-platform-tests-reftest-e10s-4: WYEin87GR76x_bOvyRds7A
+ test-windows7-32-devedition/opt-web-platform-tests-wdspec-e10s-1: VpS496_tT0Wu26FgO4Prdg
+ test-windows7-32-devedition/opt-web-platform-tests-wdspec-e10s-2: cvx2mDe4QKKgl5AJWntjdA
+ test-windows7-32-devedition/opt-web-platform-tests-wdspec-e10s-3: FoaxzdFjT6yHEJuK0QFQuQ
+ test-windows7-32-devedition/opt-xpcshell-e10s-1: Am5JOp_oQDSvZ-bNaHx4ew
+ test-windows7-32-devedition/opt-xpcshell-e10s-2: WcsPpdJES9WDB4wYx1EdGA
+ test-windows7-32-mingwclang/debug-cppunit-1proc: PLwVeevJRlyYsnTc69oaDA
+ test-windows7-32-mingwclang/debug-firefox-ui-functional-local-e10s: BW4dog9sQySqMnptEegOjg
+ test-windows7-32-mingwclang/debug-firefox-ui-functional-remote-e10s: LJdQnykbSMqBA-RbdDapgg
+ test-windows7-32-mingwclang/debug-mochitest-a11y-1proc: IvTwxni7QYepQJzb-mrCuA
+ test-windows7-32-mingwclang/debug-mochitest-chrome-gpu-e10s: D6HIFsJRQjK-sAaCfWrmrQ
+ test-windows7-32-mingwclang/debug-mochitest-plain-gpu-e10s: IK9C31YnSu6fhg227XUtxg
+ test-windows7-32-mingwclang/debug-mochitest-webgl1-core-e10s: VCrAXgvgRpafKrml66Zsjw
+ test-windows7-32-mingwclang/debug-mochitest-webgl1-ext-e10s: azeBR06uRpixXgPSMYECxw
+ test-windows7-32-mingwclang/debug-mochitest-webgl2-core-e10s: NgLmje5SSkup1FO4ojb1tw
+ test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-1: abDBsgnMSOuRwUTeOvgMFw
+ test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-2: TJBeBMqTTIKKr0lm81uV7Q
+ test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-3: YEm64Y4yT4G-0tVenT7lIw
+ test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-4: fLjKa-upTn-9WIHqSQGbnw
+ test-windows7-32-mingwclang/debug-reftest-e10s-1: KVngIkQyTLeA_WVhX9cfMQ
+ test-windows7-32-mingwclang/debug-reftest-e10s-2: X-mak9jdQ2WLwN6hxa3N_A
+ test-windows7-32-mingwclang/debug-reftest-e10s-3: L7DHH2SsShmw-hYS2c0OjA
+ test-windows7-32-mingwclang/debug-reftest-e10s-4: eS9KMIwtTgiEadrWCCv1mA
+ test-windows7-32-mingwclang/debug-telemetry-tests-client-e10s: EDL-VxDpRr-kPvqKtBhLGg
+ test-windows7-32-mingwclang/opt-cppunit-1proc: UjJvAb0JRGu9OMBr5zycrQ
+ test-windows7-32-mingwclang/opt-mochitest-chrome-gpu-e10s: HpaphwCWSf-CAQEGhQAhrQ
+ test-windows7-32-mingwclang/opt-mochitest-plain-gpu-e10s: fDbQGwpJQk6oEomnyBXSIg
+ test-windows7-32-shippable/opt-awsy-base-e10s: Xiis4PAaTw2AZr2v5U0-Iw
+ test-windows7-32-shippable/opt-awsy-e10s: fXYbGAaCRC-UyUGLkmW4KA
+ test-windows7-32-shippable/opt-awsy-tp6-e10s: SvanE1EKRIm_MkfJHD_8SQ
+ test-windows7-32-shippable/opt-cppunit-1proc: HTlC4Z-2Q7SlZ_wthW7Zhw
+ test-windows7-32-shippable/opt-crashtest-e10s: e0PyN3HDQOKUPRktB0rDvA
+ test-windows7-32-shippable/opt-firefox-ui-functional-local-e10s: Uzb2dLaVTPGc18SpN4YdLg
+ test-windows7-32-shippable/opt-firefox-ui-functional-remote-e10s: Z_Ft1HfBSdi9UjTvwpDU3g
+ test-windows7-32-shippable/opt-marionette-e10s: IXDPQeaCT7iCfLPi-ilbEQ
+ test-windows7-32-shippable/opt-mochitest-a11y-1proc: PUyjaNWmRGyIDtm-BszQUA
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-1: VEZjsxivQpKJ1662_8YyXw
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-2: W_Li23PlRfG9WyrXMwEe7w
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-3: e6yZmMn5SIyGDZImCZRF6A
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-4: EsoPcLaYSQ-RXDUdHgA5kw
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-5: acc1bIECTAquJ_BqWmn7yQ
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-6: N_LoCHuFQ3WyU3o8EtqA1w
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-7: ff-cL7qvT9yQ0uCh2bmwlw
+ test-windows7-32-shippable/opt-mochitest-chrome-1proc-1: ZcpkI7DOT2281UfD8IKH0w
+ test-windows7-32-shippable/opt-mochitest-chrome-1proc-2: ecD_rQ59Sv-4EfUwIod4kg
+ test-windows7-32-shippable/opt-mochitest-chrome-gpu-e10s: bIR9T7fYQBqepHJIqhhdLA
+ test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-1: WQ6WU30UQ2WMKT3LNWMHZg
+ test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-2: Ws25QitoSbyPYJYMbRrSTg
+ test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-3: Gm7fsTPVRgSUZ_QShjQGDA
+ test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-4: aGVEC5WIS2amZEWNvO7Nfg
+ test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-5: K1zBb-UITmOeb-HmOHhHRg
+ test-windows7-32-shippable/opt-mochitest-media-e10s-1: ZDnZA1slSQmiHzKohJHaOg
+ test-windows7-32-shippable/opt-mochitest-media-e10s-2: TNhBlT0kT6-zg0ViHX-wSQ
+ test-windows7-32-shippable/opt-mochitest-media-spi-e10s-1: J-bozeN1RGaBhn_TtleFHA
+ test-windows7-32-shippable/opt-mochitest-media-spi-e10s-2: YxD62qrfRNyU7fkLdWRkyg
+ test-windows7-32-shippable/opt-mochitest-plain-e10s-1: CkNWJj8uS7iKQ8z_xf6_vw
+ test-windows7-32-shippable/opt-mochitest-plain-e10s-2: DoWrXV2sR4yA_xFXx2EkfA
+ test-windows7-32-shippable/opt-mochitest-plain-e10s-3: SbYrDu-wQqikIRBuK2FyFQ
+ test-windows7-32-shippable/opt-mochitest-plain-e10s-4: SgpEopNGROyO50349RmLzw
+ test-windows7-32-shippable/opt-mochitest-plain-e10s-5: ansO0Cm5ROi-qcP98MOixw
+ test-windows7-32-shippable/opt-mochitest-plain-gpu-e10s: dnkMTAzCSPaahlDwesSV7g
+ test-windows7-32-shippable/opt-mochitest-webgl1-core-e10s: WzNIyFlWSee2HpBAr3Va9A
+ test-windows7-32-shippable/opt-mochitest-webgl1-ext-e10s: Fjc05ovDRTWmjrDg9780WQ
+ test-windows7-32-shippable/opt-mochitest-webgl2-core-e10s: OwP-daRQS-itSONekj-Wvg
+ test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-1: O57K2itjSeyvsVYr-n7Mgg
+ test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-2: Ypd8_b35R1yx_qVLFBLUUw
+ test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-3: PvqoyF3rRUeN5TDaLUYjog
+ test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-4: buV-jqsjSTykoFiu9r51EA
+ test-windows7-32-shippable/opt-raptor-ares6-firefox-e10s: EBFf3YfNTSe26c5VbeiHmA
+ test-windows7-32-shippable/opt-raptor-motionmark-animometer-firefox-e10s: L1ywfQmzSbysAyOIsbuOWQ
+ test-windows7-32-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: LXrL_G24QmKBgtEcWVmqsA
+ test-windows7-32-shippable/opt-raptor-speedometer-firefox-e10s: ZuDH5pMrRMWG3zjsLx4QsQ
+ test-windows7-32-shippable/opt-raptor-stylebench-firefox-e10s: NIcZMKG5Qfm918M9-QiHmQ
+ test-windows7-32-shippable/opt-raptor-sunspider-firefox-e10s: ZlBYe4o4QiO9xvjQyYV4hw
+ test-windows7-32-shippable/opt-raptor-tp6-1-firefox-cold-e10s: dP47glhgRL6FlK7rdGIhig
+ test-windows7-32-shippable/opt-raptor-tp6-10-firefox-cold-e10s: H9039fErQOamwR2PmIZ7mA
+ test-windows7-32-shippable/opt-raptor-tp6-11-firefox-cold-e10s: bC2ybxelRwGB8EXi00fRnA
+ test-windows7-32-shippable/opt-raptor-tp6-12-firefox-cold-e10s: WIVGkbB5TW2rAsL414BKXg
+ test-windows7-32-shippable/opt-raptor-tp6-13-firefox-cold-e10s: bx9H5SBQSairStMYjyroSQ
+ test-windows7-32-shippable/opt-raptor-tp6-14-firefox-cold-e10s: bFR77EM6R26OIby958qbwA
+ test-windows7-32-shippable/opt-raptor-tp6-15-firefox-cold-e10s: RLG6X-vdRmGWdsBWysL5xQ
+ test-windows7-32-shippable/opt-raptor-tp6-16-firefox-cold-e10s: IY2JDzKHSqS_Eh9G7r28bA
+ test-windows7-32-shippable/opt-raptor-tp6-17-firefox-cold-e10s: HleHrKjyRjS3rqqWFCHYWA
+ test-windows7-32-shippable/opt-raptor-tp6-18-firefox-cold-e10s: a_xa10sxSuuvm047pXHd2g
+ test-windows7-32-shippable/opt-raptor-tp6-19-firefox-cold-e10s: XAxyyh3iRPKRJ7pflNgDXw
+ test-windows7-32-shippable/opt-raptor-tp6-2-firefox-cold-e10s: SZ_mO03ASyWC5qq5YQtDsw
+ test-windows7-32-shippable/opt-raptor-tp6-20-firefox-cold-e10s: RPfGTbi9Qb-qmrDPibSXZw
+ test-windows7-32-shippable/opt-raptor-tp6-21-firefox-cold-e10s: Q1ZZsi4jQ8ew2d0Xq87T_A
+ test-windows7-32-shippable/opt-raptor-tp6-22-firefox-cold-e10s: QQl5XpKHRaGSDn4Mn_Vkng
+ test-windows7-32-shippable/opt-raptor-tp6-23-firefox-cold-e10s: Vh2_RLmxRyGonbYP-NBd9Q
+ test-windows7-32-shippable/opt-raptor-tp6-24-firefox-cold-e10s: Q91GqYYUTfyIuTCQe9geOQ
+ test-windows7-32-shippable/opt-raptor-tp6-25-firefox-cold-e10s: R3YB1RaPRBK3LcCpAkyUaw
+ test-windows7-32-shippable/opt-raptor-tp6-26-firefox-cold-e10s: exXqO8B4QS-TNteQS7TSTg
+ test-windows7-32-shippable/opt-raptor-tp6-27-firefox-cold-e10s: PIyoZunNSt6Bi63AW1iZ-g
+ test-windows7-32-shippable/opt-raptor-tp6-28-firefox-cold-e10s: RxTBr_L2Tr6SshBBz9dZ_Q
+ test-windows7-32-shippable/opt-raptor-tp6-29-firefox-cold-e10s: bK44ABsVTzO1qGHEXptigA
+ test-windows7-32-shippable/opt-raptor-tp6-3-firefox-cold-e10s: KzyyNkacROSqd3FNywcmlw
+ test-windows7-32-shippable/opt-raptor-tp6-30-firefox-cold-e10s: bDvi8K2iSp-uvcd8-FnOxg
+ test-windows7-32-shippable/opt-raptor-tp6-31-firefox-cold-e10s: WXpo4Bz8QkeIoiuKC0DXaA
+ test-windows7-32-shippable/opt-raptor-tp6-4-firefox-cold-e10s: JJuCr98lTGK4BMCJMcT6iA
+ test-windows7-32-shippable/opt-raptor-tp6-5-firefox-cold-e10s: DCeXMr32QlWOpRa2uoHzvg
+ test-windows7-32-shippable/opt-raptor-tp6-6-firefox-cold-e10s: LhICxmbGRJGxPVtuzFmh8Q
+ test-windows7-32-shippable/opt-raptor-tp6-7-firefox-cold-e10s: SFuzXgPITBSIxbjJ5xSzfg
+ test-windows7-32-shippable/opt-raptor-tp6-8-firefox-cold-e10s: ITd9B6_YQEiTZfydOQqk_A
+ test-windows7-32-shippable/opt-raptor-tp6-9-firefox-cold-e10s: Vrk6_WhnRBOid3NBefjb9g
+ test-windows7-32-shippable/opt-raptor-tp6-binast-1-firefox-e10s: elsXEyQsRb6z8ynEWac-zA
+ test-windows7-32-shippable/opt-raptor-wasm-godot-firefox-e10s: MOrpeQb3QZuHwlCWrVE-wA
+ test-windows7-32-shippable/opt-raptor-webaudio-firefox-e10s: FzqSNiD0QveLb0wzSIk3Cg
+ test-windows7-32-shippable/opt-reftest-e10s-1: fuxznwI5S32W93AWThNmAg
+ test-windows7-32-shippable/opt-reftest-e10s-2: Uj4emlBcQL6SEwNWXg2oGg
+ test-windows7-32-shippable/opt-reftest-gpu-e10s-1: Gy6cN9GUSzGt5rKRr-V97Q
+ test-windows7-32-shippable/opt-reftest-gpu-e10s-2: ZytoBH3jT0yEOjcKvnIOEA
+ test-windows7-32-shippable/opt-reftest-no-accel-e10s-1: HaeYjdBTT1SvPwDcaCJxJA
+ test-windows7-32-shippable/opt-reftest-no-accel-e10s-2: excmNnCtQmONRgNcqjyRqQ
+ test-windows7-32-shippable/opt-reftest-no-accel-e10s-3: XQf1EXZfTCaMxjZOoJbg6Q
+ test-windows7-32-shippable/opt-reftest-no-accel-e10s-4: fVQ5CVkQQ1eDTBN0HZvDtA
+ test-windows7-32-shippable/opt-talos-bcv-e10s: Hyc9Pbm8SQSw-aH9HFgIOA
+ test-windows7-32-shippable/opt-talos-chrome-e10s: IfduGmLITPm5GJ2UCm5jsA
+ test-windows7-32-shippable/opt-talos-dromaeojs-e10s: NhT1AfidTJ-84pncFdlUDw
+ test-windows7-32-shippable/opt-talos-g1-e10s: GCW3wPHrRQ6B4v26k-CAmQ
+ test-windows7-32-shippable/opt-talos-g4-e10s: OajNAqEPQ_aXiIfYzjTN-A
+ test-windows7-32-shippable/opt-talos-g5-e10s: Bug1FpXSSBu5kX1fgVPYNQ
+ test-windows7-32-shippable/opt-talos-other-e10s: AT80uBcaSdy8aiD3KlN69A
+ test-windows7-32-shippable/opt-talos-perf-reftest-e10s: CexDsXacSrygffHtc4esVw
+ test-windows7-32-shippable/opt-talos-perf-reftest-singletons-e10s: MKosNQEXSAGDHeyGol80TA
+ test-windows7-32-shippable/opt-talos-realworld-webextensions-e10s: N5rvY_fJQEW1S1sDxBSCDg
+ test-windows7-32-shippable/opt-talos-svgr-e10s: b66HGXv0TOOPsEorEXcBHA
+ test-windows7-32-shippable/opt-talos-tabswitch-e10s: Gs2waHS5SqWZXaqyVYNjnA
+ test-windows7-32-shippable/opt-talos-tp5o-e10s: AfrcSNrZThuHkG08rVDL_g
+ test-windows7-32-shippable/opt-talos-webgl-e10s: Ae64ATIZSfmFGPXPaeWHVQ
+ test-windows7-32-shippable/opt-talos-xperf-e10s: JJpjyjweSKCm0-cagvDCOA
+ test-windows7-32-shippable/opt-telemetry-tests-client-e10s: aLpml-2LRMaPbCPxkvY-hw
+ test-windows7-32-shippable/opt-web-platform-tests-crashtest-e10s: ZIk5yGESSxyV6P7Uq6C-9w
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-1: WTk53OyJT8SZtc9KywjHvg
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-10: eLkZUWBGTpGQC6V6wOX4sQ
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-11: UVtFLc5dTNmBaKgjLtA5-A
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-12: cgiY7rGiQuCI-QAL9v2q-g
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-2: SjmjHl_sS-iaTlPz8IQcxw
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-3: Gnna6lDqSIy6C0R4a1XUAA
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-4: Ao8uPLVoTP6-AbEi6kaFeg
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-5: NepIyYVSSUe_EA6fgr-dCg
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-6: ee1jIvBMSim6YyyChOVdRQ
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-7: UK5Ie7TCQtC_WtSfY4d5EQ
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-8: DhqfjblVQeCSl3_C0ovCTQ
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-9: a27FYbDpTXa_eJ3H4KkcBQ
+ test-windows7-32-shippable/opt-web-platform-tests-reftest-e10s-1: O4RKWU5gQUm8nrO6KurSAg
+ test-windows7-32-shippable/opt-web-platform-tests-reftest-e10s-2: EOrKTdQHTE-TGf-GoTyGfg
+ test-windows7-32-shippable/opt-web-platform-tests-reftest-e10s-3: WN3SOExgQUOBhd_h7bOz0A
+ test-windows7-32-shippable/opt-web-platform-tests-reftest-e10s-4: b9pVzxXESq-V-gxP2Rq4fg
+ test-windows7-32-shippable/opt-web-platform-tests-wdspec-e10s-1: ZQ8CQRshT5iNfSnQMQ7BBg
+ test-windows7-32-shippable/opt-web-platform-tests-wdspec-e10s-2: bQIQJOhoSiSDhzF-pHsQRg
+ test-windows7-32-shippable/opt-web-platform-tests-wdspec-e10s-3: RTgb4k-LQDOeFJO1l-tWXA
+ test-windows7-32-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: fOL77J7nTkGueWoeZt3Mqw
+ test-windows7-32-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: OZQpwmBUSTWFlB_rUZuyUQ
+ test-windows7-32-shippable/opt-xpcshell-e10s-1: cO_cxXJPRoSLfGUlu6xGCA
+ test-windows7-32-shippable/opt-xpcshell-e10s-2: DSdL2HIJRk-kaVFT0iVmgg
+ test-windows7-32/debug-cppunit-1proc: E5QnMJ3PRjC43blKVYtqdQ
+ test-windows7-32/debug-crashtest-e10s: VOWniXbQQrq6v7oXwqp05w
+ test-windows7-32/debug-firefox-ui-functional-local-e10s: XG4winfXQeWqu5g35F2zHw
+ test-windows7-32/debug-firefox-ui-functional-remote-e10s: DOe87PAARbWz9vkyNRyAcQ
+ test-windows7-32/debug-gtest-1proc: ITr5uXlSTuO5h4Zh0EaHqA
+ test-windows7-32/debug-marionette-e10s: AFFZ4tFBTgivLivO2ITKLg
+ test-windows7-32/debug-mochitest-a11y-1proc: OWAsLiWrRjapqAPH5hm26A
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-1: AOeVMZHGQzSRcVys3KZ0FQ
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-2: blFqx8TfS9inUdKRptzRsg
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-3: efTqoEqhT3qlAtxeqebYgg
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-4: e0rnQ0ePRta1G8ahjNt2Kg
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-5: YjutLB02TFOwwYhZb3byYA
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-6: OQvIWSeeSbK2dkjV0ZOS-Q
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-7: P14TObT5SC-0niZ8xfLuQw
+ test-windows7-32/debug-mochitest-chrome-1proc-1: LokcG5P7Q1Wd4Yh6GkErTg
+ test-windows7-32/debug-mochitest-chrome-1proc-2: cYur3yVqT2-ED7bflXl6WA
+ test-windows7-32/debug-mochitest-chrome-1proc-3: Jbz6A-wAQEGfNzn3SwmOvA
+ test-windows7-32/debug-mochitest-chrome-gpu-e10s: UX7Td8F1QLS4RicQuEDlXA
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-1: Unjrl-psQXGgjtQ2JqxHSA
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-2: bvO4yrCtSvKHTCnPpRalMQ
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-3: ePTvdbOpRE65bViZrnBiYQ
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-4: LjWMOGK8QRK0ShcAKl0CEA
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-5: d3G8Tl1RRcq7lEnVtVLUNw
+ test-windows7-32/debug-mochitest-media-e10s-1: ZkMgn9DcTDmfByrp5hl2Sw
+ test-windows7-32/debug-mochitest-media-e10s-2: S9ndv4XoSu2w3ZQl2ZW7Cw
+ test-windows7-32/debug-mochitest-media-e10s-3: EbQUJKnaTROKxvo1yFz-_g
+ test-windows7-32/debug-mochitest-media-spi-e10s-1: XJvh9QFMSweOaNnm70ib2A
+ test-windows7-32/debug-mochitest-media-spi-e10s-2: VWHhGIFFTMCXdtChYnw0bA
+ test-windows7-32/debug-mochitest-media-spi-e10s-3: BDcHuuDQQ-6yz-jju8n9Uw
+ test-windows7-32/debug-mochitest-plain-e10s-1: CsL0jMzFQb-FgDBqYg4fMw
+ test-windows7-32/debug-mochitest-plain-e10s-2: NoWg6fsOTayY6PUlbZytsQ
+ test-windows7-32/debug-mochitest-plain-e10s-3: QzcR9tZiRWOV8LigMOPqLA
+ test-windows7-32/debug-mochitest-plain-e10s-4: FuqpfgznSH6wFFR3VSoznA
+ test-windows7-32/debug-mochitest-plain-e10s-5: aUtbZD2aRMyFS5DgRbjYVA
+ test-windows7-32/debug-mochitest-plain-gpu-e10s: Wn_OgzFZQFm0VyJ7P2JR5g
+ test-windows7-32/debug-mochitest-webgl1-core-e10s: bsJEx-bJTAmUoTCttGccJA
+ test-windows7-32/debug-mochitest-webgl1-ext-e10s: TP8_8WLsSKWpx3iLzD7BJQ
+ test-windows7-32/debug-mochitest-webgl2-core-e10s: QV5matHARSSXFdq4MJ4yGA
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-1: RkfqbTDzQi29hjN0X4HpPg
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-2: Z5r4MxsIQNOLezuX37_sEw
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-3: E2rQuFMdT-ymi8ouaCsQbw
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-4: LGMkW2TNTQ2XKtiz4cj1bg
+ test-windows7-32/debug-reftest-e10s-1: KAF2NhTNQ4eQN-CMxhTXWQ
+ test-windows7-32/debug-reftest-e10s-2: MxryLWHqTEuIlyx05JU9ag
+ test-windows7-32/debug-reftest-e10s-3: djGgx9b8QQms618zjGRcwQ
+ test-windows7-32/debug-reftest-e10s-4: AI-wJvBUSl-LkMZV5-e-BQ
+ test-windows7-32/debug-reftest-gpu-e10s-1: N3UOv8ZvS2W1ggr_RL7OMw
+ test-windows7-32/debug-reftest-gpu-e10s-2: XLh-MV62Th6LELeGRBbaDg
+ test-windows7-32/debug-reftest-gpu-e10s-3: IQD8Ydb1TO6ROBVmpkPn_Q
+ test-windows7-32/debug-reftest-gpu-e10s-4: ZLvKM1xlSdWxxHfCLrw9-w
+ test-windows7-32/debug-reftest-no-accel-e10s-1: X85totgXRn-LNztQQSQD3A
+ test-windows7-32/debug-reftest-no-accel-e10s-2: JopEHFSfS2yL65hpL0BiVQ
+ test-windows7-32/debug-reftest-no-accel-e10s-3: Sju3UVkvQiC1LJ7S3dd-ow
+ test-windows7-32/debug-reftest-no-accel-e10s-4: DTbnr-aPTCi9QxelWIB2mg
+ test-windows7-32/debug-telemetry-tests-client-e10s: EYlusSiERO6oZnbOXBUTVg
+ test-windows7-32/debug-web-platform-tests-crashtest-e10s: NK9YQK-FRbOrGduMemIhRw
+ test-windows7-32/debug-web-platform-tests-e10s-1: baCXjDsFQJatwT3W2uD_uA
+ test-windows7-32/debug-web-platform-tests-e10s-10: OfHFWBw-QRyOj2WV-xYrXg
+ test-windows7-32/debug-web-platform-tests-e10s-11: HbPtRSgCTY-q46Os1HEjGA
+ test-windows7-32/debug-web-platform-tests-e10s-12: cUA_13iRRziaLQdG8gTBiA
+ test-windows7-32/debug-web-platform-tests-e10s-13: fWLDF1ukTs2PP-QQ9frlpg
+ test-windows7-32/debug-web-platform-tests-e10s-14: b3N1p27mRVed7X0jXp1Ihw
+ test-windows7-32/debug-web-platform-tests-e10s-2: JaZt-HGNRACgJM9XD7t6XQ
+ test-windows7-32/debug-web-platform-tests-e10s-3: V5U4jTfKTjW7mF9Z1q0zxQ
+ test-windows7-32/debug-web-platform-tests-e10s-4: ZV4SqDKdQr6urMGpYy3-pg
+ test-windows7-32/debug-web-platform-tests-e10s-5: NTkjcIXZRj-670RPKNWUvg
+ test-windows7-32/debug-web-platform-tests-e10s-6: eEnqca0yRLOv_WZoIDGXnw
+ test-windows7-32/debug-web-platform-tests-e10s-7: CFdpozu1SIa1XwwKAf4GUA
+ test-windows7-32/debug-web-platform-tests-e10s-8: DhaYo-r6RNiimSA45VcHkA
+ test-windows7-32/debug-web-platform-tests-e10s-9: TfKO6_wXS2yxgvN-tkEq0A
+ test-windows7-32/debug-web-platform-tests-reftest-e10s-1: SQrKz6Q4QveD1HgoxMAXmA
+ test-windows7-32/debug-web-platform-tests-reftest-e10s-2: A0n3sUFERDO78UfA2SmOIQ
+ test-windows7-32/debug-web-platform-tests-reftest-e10s-3: axdkwef8QEqashf8xKpncQ
+ test-windows7-32/debug-web-platform-tests-reftest-e10s-4: ULh5hbt4S2aqlSjTKo_vwQ
+ test-windows7-32/debug-web-platform-tests-reftest-e10s-5: cQOzf2DcT-iinJg2TpHpCQ
+ test-windows7-32/debug-web-platform-tests-wdspec-e10s-1: QReEuEP2S0mFS913AblG4w
+ test-windows7-32/debug-web-platform-tests-wdspec-e10s-2: Og7Ncbk9TwSV3kE9ylj4TQ
+ test-windows7-32/debug-web-platform-tests-wdspec-e10s-3: GfrF4sa9S12AFrRGqBaLPg
+ test-windows7-32/debug-xpcshell-e10s-1: Sw1zu1yWTSCRAXw2bhZSWA
+ test-windows7-32/debug-xpcshell-e10s-2: DEOdGiZpR6yDJGX77kUb8A
+ toolchain-linux32-geckodriver: O5aa4Vo-Qgm7grMWX9xCGg
+ toolchain-linux64-android-gradle-dependencies: Sjcz1fh9RBKqXAMmeFc17Q
+ toolchain-linux64-android-ndk-linux-repack: RgemDKGMSiy_lxQOHA65Gg
+ toolchain-linux64-android-sdk-linux-repack: PnOQ44ZhTpS96RW8g5G0vg
+ toolchain-linux64-binutils: C9jhFZNhTYe7-OdPRuPV2w
+ toolchain-linux64-cbindgen: J4LHXqS3RMG4PZewQ18p_w
+ toolchain-linux64-cctools-port: HBUtFKgSSPSSv_Uo5R9k3g
+ toolchain-linux64-clang-5.0: LsFuBgELTw-0p49CyA5uJg
+ toolchain-linux64-clang-7: CdvgKHfcTtO3cv6UPHlP2g
+ toolchain-linux64-clang-9: UFEQ0Xc8R2Gw-Trm4o9r-Q
+ toolchain-linux64-clang-9-aarch64-cross: avmhLG3STbqKqY53m_UyhA
+ toolchain-linux64-clang-9-android-cross: GVpLUbXhSHK1Pe9m-D0uCw
+ toolchain-linux64-clang-9-macosx-cross: O9yf1sO5TDGFL6GDK4UV6w
+ toolchain-linux64-clang-9-mingw-x64: bHwj_FpERxKZrXU7lkJLOw
+ toolchain-linux64-clang-9-mingw-x86: BJD-oHuyRiaYBkpA6iYyXA
+ toolchain-linux64-clang-9-win-cross: Ivg3escjSpiaRrT8PmiAgg
+ toolchain-linux64-clang-tidy: Tn51Rf3WSj2Lwc5JWR0w1g
+ toolchain-linux64-dump-syms: CjHKJQ71TUmsq9meHj1WHA
+ toolchain-linux64-fix-stacks: VkhAJZTSRSmvH2JJtF1SFQ
+ toolchain-linux64-gcc-7: Us6Or8A8QJWsh_Pe6MRZ6A
+ toolchain-linux64-gcc-9: Wg_-b_DiSkOKyrDfqlaquw
+ toolchain-linux64-gcc-sixgill: emCtGyOrTd-b23udwFTJzg
+ toolchain-linux64-hfsplus: f-prnfa0TW6w1Z_UbsQ5Iw
+ toolchain-linux64-libdmg: bZUASW5dQTS0tHK0scMc3g
+ toolchain-linux64-liblowercase: PbowiRmvT8uBEO7LAsx8zg
+ toolchain-linux64-llvm-dsymutil: JnfVvP8aTyu-lrlY_-KOcw
+ toolchain-linux64-lucetc: fUI9ydruQsSjEaMf1FxJOA
+ toolchain-linux64-mar-tools: V8a-933KQPWJHzd-Da4mAA
+ toolchain-linux64-mingw-fxc2-x86: QbDBvQHYRwCGL_Pfo_75HQ
+ toolchain-linux64-mingw32-gcc: PKrD1YfXTKSTURj62OREew
+ toolchain-linux64-mingw32-nsis: SR688ICqQsK12J4XEWGxSQ
+ toolchain-linux64-minidump-stackwalk: IyrN9jDaQQ26lIKrSzI6gg
+ toolchain-linux64-nasm: KrkFJqn1T2OjVnRtm2qM6w
+ toolchain-linux64-nasm-2.14.02: JhZoysJ9TumgtoW9eL0YcA
+ toolchain-linux64-node-10: BQitXXixTISLA6w1SktTkA
+ toolchain-linux64-rust-1.41: Gt43yxx-T_C1R-dEsyDqDg
+ toolchain-linux64-rust-android-1.41: SzvPmPt2Sd6K736CMqHpxA
+ toolchain-linux64-rust-cross-1.41: TIDe7BAMTdauHN7ElH7joQ
+ toolchain-linux64-rust-macos-1.41: D_k7nEyXS-yOt3Jdut03Qw
+ toolchain-linux64-rust-nightly: WAj_HUdQQI-uiR-q9Yb9-A
+ toolchain-linux64-rust-size: Eev8gPWvQjypkyVNC7Wk-A
+ toolchain-linux64-rust-windows-1.41: Cw8w3FBoStKKu7HsovS_uw
+ toolchain-linux64-sccache: KFHNf8okTgaqJEHhVYWMUw
+ toolchain-linux64-upx: FgQzZqEhRvKrj_6j2WHfsw
+ toolchain-linux64-wine: C06xm1OKQhyVoPYG7u_57Q
+ toolchain-macosx64-clang: Kb8VMnWoQM2AE-D3bMVCVA
+ toolchain-macosx64-fix-stacks: cU4ViKzuQxmpwYNkUJ4nxA
+ toolchain-macosx64-minidump-stackwalk: T5sxC_QhQCK9F2s_RKw2tA
+ toolchain-macosx64-node-10: EsieUrzPSpem7aY04w1YGg
+ toolchain-mingw32-rust-1.41: SW2RZ7ddRy6VK_ynpHD4wQ
+ toolchain-wasi-sysroot: YlBrXsswSe-nhsefa-xaLA
+ toolchain-wgpu-deps: XlHpylppQOKK_O-_30efQA
+ toolchain-win32-fix-stacks: EPiKX1t4TCesIxUq2haysQ
+ toolchain-win32-minidump-stackwalk: OCO_kt0lS2OMcDwzN0T4uQ
+ toolchain-win32-node-10: E616WCYcSwinDuMXEbSaXg
+ toolchain-win64-cbindgen: Lyaxqyq_SdadgLCoNBNXrQ
+ toolchain-win64-clang-cl: EkrlmVmIRJqGhOQqQJkJGQ
+ toolchain-win64-clang-cl-2stage: PHAqGCNUTACHygnrM4jHSA
+ toolchain-win64-dump-syms: McEtXy2DQqGdYNz2Px19ug
+ toolchain-win64-nasm: VdJeb9ejTTWKjUS2GoWpow
+ toolchain-win64-node-10: O0WjKpw4TcWpXoC94V-AKw
+ toolchain-win64-pdbstr: bJq4BIxzSlOlLhofIXnQzQ
+ toolchain-win64-rust-1.41: NznWFC7_T1GzHOPQjxy25w
+ toolchain-win64-rust-size: B6mEOKFUTxaRwmiLH2ucjg
+ toolchain-win64-sccache: VI0B_T81S0CbvywgjFtWXw
+ toolchain-win64-winchecksec: OJ_CDfrSQ_6sSNCotXnXNQ
+ toolchain-wrench-deps: MbUjBn4gQLS58w-KTJUrjA
+ upload-generated-sources-android-aarch64-nightly/opt: BaXv-MniR7eQ55fBYILmww
+ upload-generated-sources-android-api-16-nightly/opt: UWY0PUskQ1O7rbC5cDJSnw
+ upload-generated-sources-android-x86-nightly/opt: V1KemMKIRJG3pWgbt4dvig
+ upload-generated-sources-android-x86_64-nightly/opt: DNsbssTSTl-Ig59Q68AEsg
+ upload-generated-sources-linux-devedition/opt: FapKLleFRGiwgSO5VOht0Q
+ upload-generated-sources-linux-shippable/opt: XlxLYEeJThWTtf0J3XTVyg
+ upload-generated-sources-linux64-devedition/opt: TQr82wapTx6rM_6GWujyOA
+ upload-generated-sources-linux64-shippable/opt: NutkeslVQiSIsdviitgvDw
+ upload-generated-sources-macosx64-devedition/opt: Bc1hwMEFQMi7KSYLbibkzQ
+ upload-generated-sources-macosx64-shippable/opt: RxcoJXL7SYGu3chLAXRNig
+ upload-generated-sources-win32-devedition/opt: StynD6uxRlaFlNSdMcvWRg
+ upload-generated-sources-win32-shippable/opt: LqwW9XDpTgi9ZbsnY3Ttlw
+ upload-generated-sources-win64-aarch64-devedition/opt: cPKqaK-7QwKeA6THbPoIlg
+ upload-generated-sources-win64-aarch64-shippable/opt: VmHS7tOKSTmOTkzJY1dYig
+ upload-generated-sources-win64-devedition/opt: UugsVmLZSXqmH5WYkGwyJg
+ upload-generated-sources-win64-shippable/opt: Mg_Sbzg-QuCMiROVx7e5JQ
+filters:
+ - target_tasks_method
+head_ref: eae58b7bc5654f7cac80985dd647c7558bb88895
+head_repository: https://hg.mozilla.org/releases/mozilla-beta
+head_rev: eae58b7bc5654f7cac80985dd647c7558bb88895
+hg_branch: default
+level: "3"
+message: ""
+moz_build_date: "20200504174616"
+next_version: 77.0b2
+optimize_target_tasks: true
+owner: ryanvm@gmail.com
+phabricator_diff: null
+project: mozilla-beta
+pushdate: 1588614376
+pushlog_id: "13075"
+release_enable_emefree: false
+release_enable_partners: false
+release_eta: null
+release_history:
+ Darwin_x86_64-gcc3-u-i386-x86_64:
+ ach:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ach/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ach/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ach/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ af:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/af/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/af/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/af/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ an:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/an/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/an/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/an/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ar:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ar/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ar/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ar/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ast:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ast/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ast/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ast/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ az:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/az/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/az/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/az/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ be:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/be/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/be/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/be/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ bg:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/bg/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/bg/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/bg/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ bn:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/bn/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/bn/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/bn/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ br:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/br/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/br/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/br/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ bs:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/bs/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/bs/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/bs/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ca:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ca/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ca/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ca/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ca-valencia:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ca-valencia/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ca-valencia/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ca-valencia/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ cak:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/cak/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/cak/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/cak/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ cs:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/cs/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/cs/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/cs/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ cy:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/cy/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/cy/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/cy/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ da:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/da/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/da/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/da/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ de:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/de/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/de/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/de/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ dsb:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/dsb/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/dsb/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/dsb/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ el:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/el/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/el/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/el/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ en-CA:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/en-CA/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/en-CA/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/en-CA/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ en-GB:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/en-GB/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/en-GB/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/en-GB/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ en-US:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/en-US/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/en-US/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/en-US/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ eo:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/eo/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/eo/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/eo/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ es-AR:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/es-AR/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/es-AR/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/es-AR/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ es-CL:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/es-CL/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/es-CL/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/es-CL/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ es-ES:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/es-ES/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/es-ES/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/es-ES/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ es-MX:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/es-MX/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/es-MX/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/es-MX/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ et:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/et/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/et/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/et/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ eu:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/eu/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/eu/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/eu/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ fa:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/fa/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/fa/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/fa/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ff:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ff/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ff/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ff/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ fi:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/fi/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/fi/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/fi/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ fr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/fr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/fr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/fr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ fy-NL:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/fy-NL/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/fy-NL/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/fy-NL/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ga-IE:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ga-IE/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ga-IE/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ga-IE/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ gd:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/gd/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/gd/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/gd/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ gl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/gl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/gl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/gl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ gn:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/gn/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/gn/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/gn/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ gu-IN:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/gu-IN/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/gu-IN/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/gu-IN/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ he:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/he/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/he/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/he/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hi-IN:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/hi-IN/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/hi-IN/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/hi-IN/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/hr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/hr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/hr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hsb:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/hsb/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/hsb/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/hsb/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hu:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/hu/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/hu/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/hu/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hy-AM:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/hy-AM/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/hy-AM/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/hy-AM/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ia:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ia/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ia/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ia/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ id:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/id/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/id/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/id/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ is:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/is/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/is/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/is/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ it:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/it/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/it/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/it/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ja-JP-mac:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ja-JP-mac/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ja-JP-mac/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ja-JP-mac/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ka:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ka/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ka/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ka/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ kab:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/kab/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/kab/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/kab/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ kk:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/kk/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/kk/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/kk/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ km:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/km/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/km/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/km/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ kn:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/kn/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/kn/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/kn/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ko:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ko/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ko/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ko/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ lij:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/lij/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/lij/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/lij/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ lt:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/lt/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/lt/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/lt/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ lv:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/lv/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/lv/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/lv/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ mk:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/mk/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/mk/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/mk/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ mr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/mr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/mr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/mr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ms:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ms/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ms/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ms/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ my:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/my/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/my/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/my/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ nb-NO:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/nb-NO/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/nb-NO/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/nb-NO/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ne-NP:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ne-NP/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ne-NP/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ne-NP/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ nl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/nl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/nl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/nl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ nn-NO:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/nn-NO/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/nn-NO/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/nn-NO/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ oc:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/oc/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/oc/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/oc/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ pa-IN:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/pa-IN/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/pa-IN/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/pa-IN/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ pl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/pl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/pl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/pl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ pt-BR:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/pt-BR/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/pt-BR/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/pt-BR/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ pt-PT:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/pt-PT/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/pt-PT/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/pt-PT/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ rm:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/rm/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/rm/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/rm/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ro:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ro/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ro/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ro/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ru:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ru/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ru/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ru/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ si:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/si/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/si/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/si/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sk:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/sk/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/sk/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/sk/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/sl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/sl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/sl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ son:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/son/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/son/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/son/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sq:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/sq/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/sq/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/sq/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/sr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/sr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/sr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sv-SE:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/sv-SE/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/sv-SE/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/sv-SE/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ta:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ta/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ta/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ta/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ te:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/te/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/te/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/te/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ th:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/th/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/th/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/th/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ tl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/tl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/tl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/tl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ tr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/tr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/tr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/tr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ trs:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/trs/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/trs/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/trs/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ uk:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/uk/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/uk/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/uk/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ur:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/ur/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/ur/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/ur/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ uz:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/uz/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/uz/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/uz/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ vi:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/vi/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/vi/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/vi/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ xh:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/xh/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/xh/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/xh/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ zh-CN:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/zh-CN/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/zh-CN/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/zh-CN/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ zh-TW:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/mac/zh-TW/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/mac/zh-TW/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/mac/zh-TW/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ Linux_x86-gcc3:
+ ach:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ach/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ach/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ach/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ af:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/af/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/af/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/af/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ an:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/an/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/an/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/an/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ar:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ar/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ar/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ar/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ast:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ast/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ast/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ast/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ az:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/az/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/az/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/az/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ be:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/be/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/be/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/be/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ bg:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/bg/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/bg/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/bg/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ bn:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/bn/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/bn/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/bn/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ br:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/br/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/br/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/br/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ bs:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/bs/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/bs/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/bs/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ca:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ca/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ca/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ca/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ca-valencia:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ca-valencia/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ca-valencia/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ca-valencia/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ cak:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/cak/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/cak/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/cak/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ cs:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/cs/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/cs/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/cs/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ cy:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/cy/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/cy/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/cy/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ da:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/da/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/da/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/da/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ de:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/de/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/de/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/de/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ dsb:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/dsb/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/dsb/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/dsb/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ el:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/el/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/el/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/el/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ en-CA:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/en-CA/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/en-CA/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/en-CA/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ en-GB:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/en-GB/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/en-GB/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/en-GB/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ en-US:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/en-US/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/en-US/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/en-US/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ eo:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/eo/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/eo/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/eo/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ es-AR:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/es-AR/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/es-AR/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/es-AR/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ es-CL:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/es-CL/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/es-CL/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/es-CL/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ es-ES:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/es-ES/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/es-ES/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/es-ES/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ es-MX:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/es-MX/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/es-MX/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/es-MX/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ et:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/et/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/et/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/et/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ eu:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/eu/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/eu/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/eu/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ fa:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/fa/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/fa/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/fa/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ff:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ff/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ff/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ff/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ fi:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/fi/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/fi/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/fi/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ fr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/fr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/fr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/fr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ fy-NL:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/fy-NL/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/fy-NL/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/fy-NL/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ga-IE:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ga-IE/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ga-IE/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ga-IE/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ gd:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/gd/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/gd/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/gd/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ gl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/gl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/gl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/gl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ gn:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/gn/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/gn/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/gn/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ gu-IN:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/gu-IN/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/gu-IN/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/gu-IN/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ he:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/he/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/he/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/he/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hi-IN:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/hi-IN/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/hi-IN/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/hi-IN/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/hr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/hr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/hr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hsb:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/hsb/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/hsb/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/hsb/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hu:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/hu/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/hu/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/hu/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hy-AM:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/hy-AM/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/hy-AM/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/hy-AM/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ia:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ia/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ia/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ia/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ id:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/id/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/id/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/id/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ is:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/is/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/is/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/is/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ it:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/it/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/it/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/it/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ja:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ja/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ja/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ja/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ka:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ka/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ka/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ka/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ kab:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/kab/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/kab/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/kab/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ kk:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/kk/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/kk/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/kk/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ km:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/km/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/km/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/km/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ kn:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/kn/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/kn/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/kn/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ko:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ko/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ko/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ko/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ lij:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/lij/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/lij/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/lij/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ lt:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/lt/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/lt/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/lt/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ lv:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/lv/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/lv/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/lv/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ mk:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/mk/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/mk/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/mk/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ mr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/mr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/mr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/mr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ms:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ms/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ms/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ms/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ my:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/my/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/my/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/my/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ nb-NO:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/nb-NO/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/nb-NO/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/nb-NO/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ne-NP:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ne-NP/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ne-NP/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ne-NP/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ nl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/nl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/nl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/nl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ nn-NO:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/nn-NO/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/nn-NO/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/nn-NO/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ oc:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/oc/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/oc/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/oc/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ pa-IN:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/pa-IN/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/pa-IN/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/pa-IN/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ pl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/pl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/pl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/pl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ pt-BR:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/pt-BR/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/pt-BR/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/pt-BR/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ pt-PT:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/pt-PT/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/pt-PT/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/pt-PT/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ rm:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/rm/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/rm/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/rm/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ro:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ro/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ro/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ro/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ru:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ru/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ru/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ru/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ si:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/si/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/si/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/si/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sk:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/sk/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/sk/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/sk/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/sl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/sl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/sl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ son:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/son/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/son/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/son/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sq:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/sq/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/sq/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/sq/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/sr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/sr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/sr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sv-SE:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/sv-SE/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/sv-SE/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/sv-SE/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ta:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ta/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ta/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ta/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ te:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/te/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/te/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/te/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ th:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/th/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/th/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/th/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ tl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/tl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/tl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/tl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ tr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/tr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/tr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/tr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ trs:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/trs/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/trs/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/trs/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ uk:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/uk/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/uk/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/uk/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ur:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/ur/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/ur/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/ur/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ uz:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/uz/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/uz/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/uz/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ vi:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/vi/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/vi/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/vi/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ xh:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/xh/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/xh/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/xh/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ zh-CN:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/zh-CN/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/zh-CN/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/zh-CN/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ zh-TW:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-i686/zh-TW/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-i686/zh-TW/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-i686/zh-TW/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ Linux_x86_64-gcc3:
+ ach:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ach/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ach/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ach/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ af:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/af/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/af/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/af/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ an:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/an/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/an/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/an/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ar:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ar/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ar/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ar/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ast:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ast/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ast/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ast/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ az:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/az/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/az/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/az/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ be:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/be/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/be/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/be/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ bg:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/bg/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/bg/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/bg/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ bn:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/bn/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/bn/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/bn/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ br:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/br/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/br/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/br/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ bs:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/bs/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/bs/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/bs/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ca:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ca/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ca/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ca/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ca-valencia:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ca-valencia/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ca-valencia/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ca-valencia/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ cak:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/cak/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/cak/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/cak/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ cs:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/cs/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/cs/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/cs/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ cy:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/cy/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/cy/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/cy/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ da:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/da/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/da/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/da/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ de:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/de/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/de/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/de/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ dsb:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/dsb/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/dsb/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/dsb/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ el:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/el/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/el/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/el/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ en-CA:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/en-CA/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/en-CA/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/en-CA/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ en-GB:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/en-GB/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/en-GB/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/en-GB/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ en-US:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/en-US/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/en-US/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/en-US/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ eo:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/eo/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/eo/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/eo/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ es-AR:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/es-AR/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/es-AR/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/es-AR/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ es-CL:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/es-CL/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/es-CL/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/es-CL/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ es-ES:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/es-ES/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/es-ES/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/es-ES/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ es-MX:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/es-MX/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/es-MX/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/es-MX/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ et:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/et/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/et/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/et/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ eu:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/eu/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/eu/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/eu/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ fa:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/fa/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/fa/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/fa/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ff:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ff/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ff/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ff/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ fi:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/fi/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/fi/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/fi/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ fr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/fr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/fr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/fr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ fy-NL:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/fy-NL/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/fy-NL/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/fy-NL/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ga-IE:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ga-IE/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ga-IE/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ga-IE/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ gd:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/gd/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/gd/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/gd/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ gl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/gl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/gl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/gl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ gn:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/gn/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/gn/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/gn/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ gu-IN:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/gu-IN/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/gu-IN/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/gu-IN/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ he:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/he/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/he/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/he/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hi-IN:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/hi-IN/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/hi-IN/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/hi-IN/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/hr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/hr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/hr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hsb:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/hsb/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/hsb/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/hsb/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hu:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/hu/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/hu/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/hu/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hy-AM:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/hy-AM/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/hy-AM/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/hy-AM/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ia:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ia/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ia/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ia/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ id:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/id/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/id/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/id/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ is:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/is/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/is/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/is/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ it:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/it/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/it/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/it/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ja:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ja/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ja/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ja/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ka:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ka/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ka/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ka/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ kab:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/kab/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/kab/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/kab/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ kk:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/kk/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/kk/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/kk/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ km:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/km/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/km/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/km/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ kn:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/kn/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/kn/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/kn/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ko:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ko/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ko/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ko/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ lij:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/lij/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/lij/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/lij/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ lt:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/lt/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/lt/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/lt/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ lv:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/lv/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/lv/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/lv/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ mk:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/mk/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/mk/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/mk/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ mr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/mr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/mr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/mr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ms:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ms/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ms/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ms/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ my:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/my/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/my/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/my/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ nb-NO:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/nb-NO/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/nb-NO/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/nb-NO/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ne-NP:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ne-NP/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ne-NP/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ne-NP/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ nl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/nl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/nl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/nl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ nn-NO:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/nn-NO/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/nn-NO/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/nn-NO/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ oc:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/oc/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/oc/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/oc/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ pa-IN:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/pa-IN/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/pa-IN/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/pa-IN/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ pl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/pl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/pl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/pl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ pt-BR:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/pt-BR/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/pt-BR/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/pt-BR/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ pt-PT:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/pt-PT/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/pt-PT/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/pt-PT/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ rm:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/rm/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/rm/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/rm/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ro:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ro/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ro/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ro/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ru:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ru/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ru/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ru/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ si:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/si/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/si/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/si/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sk:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/sk/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/sk/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/sk/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/sl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/sl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/sl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ son:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/son/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/son/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/son/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sq:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/sq/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/sq/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/sq/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/sr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/sr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/sr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sv-SE:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/sv-SE/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/sv-SE/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/sv-SE/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ta:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ta/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ta/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ta/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ te:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/te/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/te/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/te/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ th:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/th/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/th/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/th/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ tl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/tl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/tl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/tl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ tr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/tr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/tr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/tr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ trs:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/trs/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/trs/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/trs/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ uk:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/uk/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/uk/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/uk/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ur:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/ur/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/ur/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/ur/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ uz:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/uz/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/uz/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/uz/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ vi:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/vi/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/vi/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/vi/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ xh:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/xh/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/xh/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/xh/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ zh-CN:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/zh-CN/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/zh-CN/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/zh-CN/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ zh-TW:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/linux-x86_64/zh-TW/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/linux-x86_64/zh-TW/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/linux-x86_64/zh-TW/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ WINNT_aarch64-msvc-aarch64:
+ ach:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ach/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ach/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ach/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ af:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/af/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/af/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/af/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ an:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/an/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/an/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/an/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ar:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ar/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ar/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ar/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ast:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ast/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ast/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ast/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ az:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/az/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/az/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/az/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ be:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/be/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/be/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/be/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ bg:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/bg/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/bg/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/bg/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ bn:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/bn/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/bn/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/bn/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ br:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/br/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/br/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/br/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ bs:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/bs/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/bs/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/bs/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ca:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ca/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ca/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ca/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ca-valencia:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ca-valencia/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ca-valencia/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ca-valencia/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ cak:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/cak/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/cak/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/cak/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ cs:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/cs/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/cs/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/cs/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ cy:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/cy/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/cy/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/cy/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ da:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/da/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/da/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/da/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ de:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/de/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/de/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/de/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ dsb:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/dsb/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/dsb/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/dsb/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ el:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/el/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/el/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/el/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ en-CA:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/en-CA/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/en-CA/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/en-CA/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ en-GB:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/en-GB/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/en-GB/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/en-GB/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ en-US:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/en-US/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/en-US/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/en-US/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ eo:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/eo/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/eo/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/eo/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ es-AR:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/es-AR/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/es-AR/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/es-AR/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ es-CL:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/es-CL/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/es-CL/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/es-CL/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ es-ES:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/es-ES/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/es-ES/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/es-ES/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ es-MX:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/es-MX/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/es-MX/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/es-MX/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ et:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/et/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/et/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/et/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ eu:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/eu/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/eu/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/eu/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ fa:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/fa/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/fa/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/fa/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ff:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ff/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ff/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ff/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ fi:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/fi/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/fi/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/fi/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ fr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/fr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/fr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/fr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ fy-NL:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/fy-NL/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/fy-NL/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/fy-NL/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ga-IE:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ga-IE/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ga-IE/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ga-IE/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ gd:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/gd/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/gd/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/gd/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ gl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/gl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/gl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/gl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ gn:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/gn/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/gn/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/gn/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ gu-IN:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/gu-IN/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/gu-IN/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/gu-IN/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ he:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/he/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/he/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/he/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hi-IN:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/hi-IN/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/hi-IN/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/hi-IN/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/hr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/hr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/hr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hsb:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/hsb/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/hsb/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/hsb/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hu:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/hu/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/hu/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/hu/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hy-AM:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/hy-AM/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/hy-AM/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/hy-AM/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ia:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ia/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ia/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ia/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ id:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/id/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/id/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/id/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ is:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/is/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/is/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/is/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ it:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/it/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/it/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/it/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ja:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ja/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ja/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ja/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ka:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ka/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ka/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ka/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ kab:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/kab/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/kab/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/kab/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ kk:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/kk/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/kk/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/kk/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ km:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/km/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/km/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/km/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ kn:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/kn/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/kn/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/kn/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ko:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ko/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ko/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ko/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ lij:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/lij/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/lij/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/lij/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ lt:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/lt/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/lt/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/lt/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ lv:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/lv/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/lv/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/lv/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ mk:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/mk/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/mk/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/mk/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ mr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/mr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/mr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/mr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ms:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ms/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ms/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ms/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ my:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/my/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/my/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/my/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ nb-NO:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/nb-NO/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/nb-NO/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/nb-NO/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ne-NP:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ne-NP/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ne-NP/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ne-NP/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ nl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/nl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/nl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/nl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ nn-NO:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/nn-NO/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/nn-NO/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/nn-NO/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ oc:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/oc/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/oc/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/oc/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ pa-IN:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/pa-IN/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/pa-IN/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/pa-IN/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ pl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/pl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/pl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/pl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ pt-BR:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/pt-BR/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/pt-BR/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/pt-BR/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ pt-PT:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/pt-PT/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/pt-PT/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/pt-PT/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ rm:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/rm/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/rm/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/rm/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ro:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ro/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ro/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ro/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ru:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ru/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ru/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ru/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ si:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/si/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/si/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/si/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sk:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/sk/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/sk/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/sk/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/sl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/sl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/sl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ son:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/son/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/son/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/son/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sq:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/sq/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/sq/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/sq/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/sr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/sr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/sr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sv-SE:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/sv-SE/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/sv-SE/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/sv-SE/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ta:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ta/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ta/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ta/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ te:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/te/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/te/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/te/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ th:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/th/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/th/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/th/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ tl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/tl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/tl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/tl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ tr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/tr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/tr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/tr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ trs:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/trs/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/trs/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/trs/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ uk:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/uk/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/uk/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/uk/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ur:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/ur/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/ur/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/ur/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ uz:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/uz/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/uz/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/uz/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ vi:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/vi/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/vi/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/vi/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ xh:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/xh/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/xh/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/xh/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ zh-CN:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/zh-CN/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/zh-CN/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/zh-CN/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ zh-TW:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64-aarch64/zh-TW/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64-aarch64/zh-TW/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64-aarch64/zh-TW/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ WINNT_x86-msvc:
+ ach:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ach/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ach/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ach/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ af:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/af/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/af/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/af/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ an:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/an/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/an/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/an/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ar:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ar/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ar/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ar/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ast:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ast/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ast/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ast/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ az:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/az/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/az/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/az/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ be:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/be/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/be/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/be/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ bg:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/bg/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/bg/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/bg/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ bn:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/bn/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/bn/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/bn/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ br:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/br/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/br/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/br/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ bs:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/bs/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/bs/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/bs/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ca:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ca/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ca/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ca/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ca-valencia:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ca-valencia/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ca-valencia/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ca-valencia/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ cak:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/cak/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/cak/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/cak/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ cs:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/cs/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/cs/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/cs/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ cy:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/cy/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/cy/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/cy/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ da:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/da/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/da/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/da/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ de:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/de/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/de/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/de/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ dsb:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/dsb/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/dsb/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/dsb/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ el:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/el/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/el/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/el/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ en-CA:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/en-CA/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/en-CA/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/en-CA/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ en-GB:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/en-GB/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/en-GB/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/en-GB/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ en-US:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/en-US/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/en-US/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/en-US/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ eo:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/eo/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/eo/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/eo/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ es-AR:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/es-AR/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/es-AR/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/es-AR/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ es-CL:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/es-CL/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/es-CL/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/es-CL/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ es-ES:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/es-ES/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/es-ES/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/es-ES/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ es-MX:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/es-MX/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/es-MX/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/es-MX/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ et:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/et/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/et/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/et/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ eu:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/eu/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/eu/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/eu/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ fa:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/fa/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/fa/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/fa/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ff:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ff/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ff/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ff/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ fi:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/fi/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/fi/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/fi/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ fr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/fr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/fr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/fr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ fy-NL:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/fy-NL/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/fy-NL/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/fy-NL/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ga-IE:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ga-IE/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ga-IE/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ga-IE/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ gd:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/gd/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/gd/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/gd/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ gl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/gl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/gl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/gl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ gn:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/gn/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/gn/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/gn/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ gu-IN:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/gu-IN/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/gu-IN/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/gu-IN/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ he:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/he/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/he/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/he/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hi-IN:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/hi-IN/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/hi-IN/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/hi-IN/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/hr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/hr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/hr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hsb:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/hsb/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/hsb/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/hsb/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hu:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/hu/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/hu/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/hu/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hy-AM:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/hy-AM/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/hy-AM/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/hy-AM/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ia:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ia/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ia/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ia/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ id:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/id/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/id/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/id/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ is:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/is/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/is/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/is/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ it:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/it/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/it/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/it/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ja:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ja/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ja/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ja/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ka:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ka/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ka/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ka/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ kab:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/kab/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/kab/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/kab/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ kk:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/kk/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/kk/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/kk/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ km:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/km/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/km/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/km/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ kn:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/kn/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/kn/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/kn/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ko:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ko/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ko/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ko/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ lij:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/lij/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/lij/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/lij/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ lt:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/lt/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/lt/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/lt/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ lv:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/lv/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/lv/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/lv/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ mk:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/mk/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/mk/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/mk/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ mr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/mr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/mr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/mr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ms:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ms/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ms/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ms/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ my:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/my/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/my/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/my/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ nb-NO:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/nb-NO/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/nb-NO/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/nb-NO/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ne-NP:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ne-NP/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ne-NP/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ne-NP/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ nl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/nl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/nl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/nl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ nn-NO:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/nn-NO/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/nn-NO/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/nn-NO/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ oc:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/oc/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/oc/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/oc/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ pa-IN:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/pa-IN/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/pa-IN/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/pa-IN/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ pl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/pl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/pl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/pl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ pt-BR:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/pt-BR/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/pt-BR/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/pt-BR/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ pt-PT:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/pt-PT/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/pt-PT/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/pt-PT/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ rm:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/rm/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/rm/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/rm/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ro:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ro/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ro/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ro/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ru:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ru/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ru/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ru/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ si:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/si/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/si/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/si/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sk:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/sk/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/sk/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/sk/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/sl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/sl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/sl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ son:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/son/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/son/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/son/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sq:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/sq/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/sq/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/sq/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/sr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/sr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/sr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sv-SE:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/sv-SE/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/sv-SE/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/sv-SE/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ta:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ta/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ta/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ta/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ te:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/te/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/te/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/te/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ th:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/th/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/th/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/th/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ tl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/tl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/tl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/tl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ tr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/tr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/tr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/tr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ trs:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/trs/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/trs/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/trs/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ uk:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/uk/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/uk/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/uk/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ur:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/ur/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/ur/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/ur/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ uz:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/uz/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/uz/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/uz/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ vi:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/vi/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/vi/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/vi/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ xh:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/xh/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/xh/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/xh/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ zh-CN:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/zh-CN/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/zh-CN/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/zh-CN/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ zh-TW:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win32/zh-TW/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win32/zh-TW/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win32/zh-TW/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ WINNT_x86_64-msvc:
+ ach:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ach/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ach/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ach/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ af:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/af/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/af/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/af/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ an:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/an/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/an/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/an/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ar:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ar/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ar/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ar/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ast:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ast/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ast/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ast/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ az:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/az/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/az/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/az/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ be:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/be/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/be/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/be/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ bg:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/bg/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/bg/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/bg/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ bn:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/bn/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/bn/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/bn/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ br:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/br/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/br/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/br/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ bs:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/bs/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/bs/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/bs/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ca:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ca/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ca/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ca/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ca-valencia:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ca-valencia/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ca-valencia/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ca-valencia/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ cak:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/cak/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/cak/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/cak/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ cs:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/cs/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/cs/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/cs/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ cy:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/cy/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/cy/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/cy/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ da:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/da/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/da/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/da/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ de:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/de/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/de/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/de/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ dsb:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/dsb/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/dsb/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/dsb/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ el:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/el/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/el/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/el/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ en-CA:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/en-CA/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/en-CA/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/en-CA/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ en-GB:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/en-GB/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/en-GB/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/en-GB/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ en-US:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/en-US/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/en-US/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/en-US/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ eo:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/eo/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/eo/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/eo/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ es-AR:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/es-AR/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/es-AR/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/es-AR/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ es-CL:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/es-CL/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/es-CL/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/es-CL/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ es-ES:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/es-ES/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/es-ES/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/es-ES/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ es-MX:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/es-MX/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/es-MX/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/es-MX/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ et:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/et/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/et/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/et/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ eu:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/eu/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/eu/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/eu/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ fa:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/fa/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/fa/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/fa/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ff:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ff/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ff/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ff/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ fi:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/fi/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/fi/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/fi/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ fr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/fr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/fr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/fr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ fy-NL:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/fy-NL/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/fy-NL/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/fy-NL/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ga-IE:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ga-IE/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ga-IE/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ga-IE/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ gd:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/gd/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/gd/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/gd/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ gl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/gl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/gl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/gl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ gn:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/gn/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/gn/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/gn/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ gu-IN:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/gu-IN/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/gu-IN/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/gu-IN/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ he:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/he/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/he/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/he/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hi-IN:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/hi-IN/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/hi-IN/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/hi-IN/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/hr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/hr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/hr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hsb:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/hsb/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/hsb/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/hsb/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hu:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/hu/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/hu/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/hu/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ hy-AM:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/hy-AM/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/hy-AM/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/hy-AM/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ia:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ia/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ia/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ia/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ id:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/id/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/id/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/id/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ is:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/is/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/is/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/is/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ it:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/it/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/it/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/it/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ja:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ja/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ja/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ja/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ka:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ka/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ka/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ka/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ kab:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/kab/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/kab/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/kab/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ kk:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/kk/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/kk/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/kk/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ km:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/km/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/km/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/km/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ kn:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/kn/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/kn/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/kn/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ko:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ko/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ko/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ko/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ lij:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/lij/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/lij/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/lij/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ lt:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/lt/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/lt/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/lt/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ lv:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/lv/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/lv/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/lv/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ mk:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/mk/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/mk/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/mk/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ mr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/mr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/mr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/mr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ms:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ms/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ms/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ms/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ my:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/my/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/my/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/my/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ nb-NO:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/nb-NO/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/nb-NO/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/nb-NO/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ne-NP:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ne-NP/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ne-NP/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ne-NP/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ nl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/nl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/nl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/nl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ nn-NO:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/nn-NO/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/nn-NO/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/nn-NO/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ oc:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/oc/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/oc/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/oc/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ pa-IN:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/pa-IN/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/pa-IN/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/pa-IN/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ pl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/pl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/pl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/pl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ pt-BR:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/pt-BR/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/pt-BR/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/pt-BR/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ pt-PT:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/pt-PT/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/pt-PT/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/pt-PT/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ rm:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/rm/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/rm/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/rm/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ro:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ro/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ro/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ro/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ru:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ru/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ru/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ru/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ si:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/si/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/si/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/si/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sk:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/sk/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/sk/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/sk/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/sl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/sl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/sl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ son:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/son/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/son/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/son/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sq:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/sq/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/sq/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/sq/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/sr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/sr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/sr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ sv-SE:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/sv-SE/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/sv-SE/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/sv-SE/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ta:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ta/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ta/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ta/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ te:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/te/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/te/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/te/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ th:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/th/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/th/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/th/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ tl:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/tl/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/tl/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/tl/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ tr:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/tr/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/tr/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/tr/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ trs:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/trs/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/trs/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/trs/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ uk:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/uk/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/uk/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/uk/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ ur:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/ur/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/ur/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/ur/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ uz:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/uz/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/uz/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/uz/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ vi:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/vi/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/vi/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/vi/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ xh:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/xh/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/xh/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/xh/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ zh-CN:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/zh-CN/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/zh-CN/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/zh-CN/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+ zh-TW:
+ target-76.0b6.partial.mar:
+ buildid: "20200420031429"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b6-candidates/build2/update/win64/zh-TW/firefox-76.0b6.complete.mar
+ previousBuildNumber: 2
+ previousVersion: 76.0b6
+ product: Devedition
+ target-76.0b7.partial.mar:
+ buildid: "20200421231527"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b7-candidates/build1/update/win64/zh-TW/firefox-76.0b7.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b7
+ product: Devedition
+ target-76.0b8.partial.mar:
+ buildid: "20200424000239"
+ mar_url: http://archive.mozilla.org/pub/devedition/candidates/76.0b8-candidates/build1/update/win64/zh-TW/firefox-76.0b8.complete.mar
+ previousBuildNumber: 1
+ previousVersion: 76.0b8
+ product: Devedition
+release_partner_build_number: 1
+release_partner_config: {}
+release_partners: null
+release_product: devedition
+release_type: beta
+required_signoffs: []
+signoff_urls: {}
+target_tasks_method: promote_desktop
+tasks_for: action
+try_mode: null
+try_options: null
+try_task_config: {}
+version: 77.0b1
diff --git a/taskcluster/test/params/mb-promote-devedition.yml b/taskcluster/test/params/mb-promote-devedition.yml
new file mode 100644
index 0000000000..5bba5b4a85
--- /dev/null
+++ b/taskcluster/test/params/mb-promote-devedition.yml
@@ -0,0 +1,42 @@
+---
+base_repository: https://hg.mozilla.org/mozilla-central
+build_date: 1509164545
+build_number: 1
+app_version: 60.0b1
+version: 60.0b1
+next_version: null
+filters:
+ - target_tasks_method
+head_ref: 196059cada7070ab1e35db83a22b60389bd0c794
+head_repository: https://hg.mozilla.org/releases/mozilla-beta
+head_rev: 196059cada7070ab1e35db83a22b60389bd0c794
+hg_branch: default
+level: "3"
+message: " "
+# morph_templates: {}
+moz_build_date: "20171028042225"
+optimize_target_tasks: true
+owner: xquan@mozilla.com
+project: mozilla-beta
+pushdate: 1509164545
+pushlog_id: "8069"
+release_eta: "2018-01-31T00:30:00+00:00"
+release_history: {}
+release_enable_partners: false
+release_partners: []
+release_partner_build_number: 1
+release_partner_config: null
+release_enable_emefree: false
+# target_task_labels: []
+target_tasks_method: promote_desktop
+do_not_optimize: []
+try_mode: null
+try_task_config: {}
+existing_tasks: {}
+try_options:
+release_type: "beta"
+release_product: devedition
+required_signoffs: []
+signoff_urls: {}
+phabricator_diff:
+tasks_for: action
diff --git a/taskcluster/test/params/mb-promote-firefox-partials.yml b/taskcluster/test/params/mb-promote-firefox-partials.yml
new file mode 100644
index 0000000000..e375c4355e
--- /dev/null
+++ b/taskcluster/test/params/mb-promote-firefox-partials.yml
@@ -0,0 +1,12103 @@
+---
+app_version: "63.0"
+base_repository: https://hg.mozilla.org/mozilla-unified
+build_date: 1539288078
+build_number: 1
+do_not_optimize: []
+existing_tasks:
+ build-android-aarch64/opt: fogDjYSnQFyi9I7OrEUfsg
+ build-android-api-16/debug: QMypHF7cShukITJE_1x2aQ
+ build-android-api-16/opt: A_rSgxP7R_qUBjAjt_O4Og
+ build-android-x86-fuzzing/debug: S6B8vrssRoCvnxIKv87nuw
+ build-android-x86/opt: WiY6-CCWRPC0nHwAFK-SYA
+ build-docker-image-android-build: C1xKlL7LR8qUyXuv9FURaQ
+ build-docker-image-debian7-amd64-build: BktGV7LETO2actnAf9J1eA
+ build-docker-image-debian7-base: SL3YzcJLSUmyDUFjQcyTgA
+ build-docker-image-debian7-i386-build: LN3dF9UySoqv1WLAOSipwg
+ build-docker-image-debian7-mozjs-rust-build: LFSZvO4VRIC2mNkzl15ldg
+ build-docker-image-debian9-base: ZP7UvTh0TuaFVi17NbD3dQ
+ build-docker-image-desktop1604-test: CM-YiLLeSK-51h4UAhOY1g
+ build-docker-image-diffoscope: YWcFmqj6SdaerKpnBRYFPQ
+ build-docker-image-fetch: JB9tPBcBRvSWJkNfnuZatQ
+ build-docker-image-firefox-snap: T5wJ7hxrSRKLKnMEyv40nQ
+ build-docker-image-funsize-update-generator: OOEibPI8T_qjq0g1IcqleA
+ build-docker-image-google-play-strings: RPfWLNmRRaGCJOq132wv8w
+ build-docker-image-image_builder: GGZQxjGMQ76boJd4C8E6cw
+ build-docker-image-index-task: DoElvaMqRIO2TpjbV8QBJg
+ build-docker-image-infer-build: B_uWwDCESQWnHDDHjZA_lg
+ build-docker-image-lint: XGNAECEES72AEPxwbO4jKw
+ build-docker-image-mingw32-build: B6SGsr0uQ_OqF3SesxF2Cg
+ build-docker-image-partner-repack: RPU00aTdQaiLOjmw7izftQ
+ build-docker-image-periodic-updates: WkRRBVweTKuQNkWcjeMLJw
+ build-docker-image-pipfile-updates: KoFd2TnRTbafh1AeJAwHZQ
+ build-docker-image-toolchain-build: UVI9gB2fTSOAbySPwvdr-Q
+ build-docker-image-update-verify: CMbXFR28R8SSwDl0GY6NTw
+ build-docker-image-valgrind-build: VU8KwwjGTQGXGMD4ze6j5Q
+ build-linux-devedition-nightly/opt: Yq1JphpyReeSM9EL68GAMw
+ build-linux-devedition-nightly/opt-upload-symbols: cvaWoW0TQO2g17E0CrwWNQ
+ build-linux-nightly/opt: RDIH_DoRR0SI19OHpYpr9w
+ build-linux-nightly/opt-upload-symbols: fXt-jQ1FQ6qerPOValkclQ
+ build-linux/debug: LhIiq80ZSRyJh5nWgkakaA
+ build-linux/opt: MlJof0yJSViJc5WPOQ_Kzw
+ build-linux64-add-on-devel/opt: cNj-u2qSScydVqQcHxpkbw
+ build-linux64-asan-fuzzing/opt: Yiddv4h-RfelllhIyBVACw
+ build-linux64-asan/debug: DuIstl95SDmXI1hpS4PEFA
+ build-linux64-asan/opt: dDp65nmkTZeZ_JVz6br4OA
+ build-linux64-base-toolchains/debug: Y-OBQKLeR0iy4nRrpUd86w
+ build-linux64-base-toolchains/opt: dabFHxrxQDWPxbRmsibZYw
+ build-linux64-devedition-nightly/opt: Ch7R28xCTtiVD2bNb_Uqhg
+ build-linux64-devedition-nightly/opt-upload-symbols: MrbGhgatTI2ixDQGv_Sk8w
+ build-linux64-fuzzing/debug: B3GBuCV7RWOEzQBGBrb4Jw
+ build-linux64-lto/debug: TyFCAH4TS26bxWgwKQAppg
+ build-linux64-lto/opt: Bn1PTtX9T2KgnjjQCCXtOw
+ build-linux64-nightly/opt: bnKwzqskQqm6ZZCXBdwhkg
+ build-linux64-nightly/opt-upload-symbols: QQs2rb5hQFO-kWTa0Qck4w
+ build-linux64-tup/opt: X7itdf16RZaaYJri6Vi3GA
+ build-linux64/debug: CkbmJ_AaT9-N4npxhcDxEQ
+ build-linux64/opt: LfSB5XZwTAyQ0xlOEpanjw
+ build-macosx64-add-on-devel/opt: XVzjO6u2T7CNZfkv7McHTA
+ build-macosx64-asan-fuzzing/opt: N13R5e0rTUuK26Bv-Y0_WA
+ build-macosx64-devedition-nightly/opt: TmSYLLDqSgmDmWwJz0Q32A
+ build-macosx64-devedition-nightly/opt-upload-symbols: b8xft-h9Tl-9BstKJfLHtQ
+ build-macosx64-nightly/opt: H3lphBDASBu7DfUL7q6nIA
+ build-macosx64-nightly/opt-upload-symbols: d_g9WcFnQV-U_QkNgcjCWA
+ build-macosx64/debug: CibCdzr9QLODly5buEeBvw
+ build-macosx64/opt: QdnI0m8OT0O6RYCr5pQzQg
+ build-signing-linux-devedition-nightly/opt: IDXgzz1YQjqIOUi58fSAXA
+ build-signing-linux-nightly/opt: d6zCQKqYQuGc-NPUfv07cw
+ build-signing-linux/opt: ItpjcNpNSd6bixDEx9C7iw
+ build-signing-linux64-devedition-nightly/opt: YLD4T7GPQ9CSXYpgIZNMdg
+ build-signing-linux64-nightly/opt: XsgCutIJT-m7pInRRvjEng
+ build-signing-linux64/opt: MkUAHEf2TvC9sAQCc85qOQ
+ build-signing-macosx64-devedition-nightly/opt: c48Z1W6SSWej6GKi9y1ulg
+ build-signing-macosx64-nightly/opt: B5ih0IxHQSmNxYFtmRsdZA
+ build-signing-macosx64/opt: KTXMo0baSTajy2uH5I4jeA
+ build-signing-win32-devedition-nightly/opt: YnNsokAcR_-mO9EmSogPAw
+ build-signing-win32-nightly/opt: ZmNlSNCZRCK4USJrdgafYA
+ build-signing-win32/debug: JTB77Z-bTtOFV61D1lj04w
+ build-signing-win32/opt: YeFIGUFzT6qSNHG-MYvcTA
+ build-signing-win64-devedition-nightly/opt: AvJjBhCdSTSpsAhWkZ87OA
+ build-signing-win64-nightly/opt: TM5IXIYEQu67IkiPxjT6rQ
+ build-signing-win64/debug: BQjcIVaUQZWRy4JtxmGa8Q
+ build-signing-win64/opt: fT2vRUXgQoqi0to7OhnyCA
+ build-win32-add-on-devel/opt: BncaAWYtQB6Uv8EUuRIiig
+ build-win32-devedition-nightly/opt: fdpUyZNPSeORyYbagJzruw
+ build-win32-devedition-nightly/opt-upload-symbols: MsKyU4K_T7mrBAhVyH2gqQ
+ build-win32-msvc/opt: YTA1D7lQSC-dyJkOvFcUgQ
+ build-win32-nightly/opt: TsJE0biiSeesrZPT9XfxKA
+ build-win32-nightly/opt-upload-symbols: fWhpZoSrQJ6THcT6AgUziw
+ build-win32/debug: a6WMW7xXRyqSvD_q0OStEQ
+ build-win32/opt: YKC_SzyIQy2y83trQ49WQg
+ build-win64-add-on-devel/opt: QGBVLG4XR52vzov-ijV1Dw
+ build-win64-devedition-nightly/opt: RMjxYqpXSsycGMXaTiAu5g
+ build-win64-devedition-nightly/opt-upload-symbols: EkOTxZ8UTyWX7IZJOFGHpA
+ build-win64-msvc/opt: dEwfuZ3LQCeLFxDm8Urtzg
+ build-win64-nightly/opt: Pq8op_xeQGeJjVEc7fgniA
+ build-win64-nightly/opt-upload-symbols: ZRlLB6KhQRmDqR9skFqatQ
+ build-win64/debug: EDHK4shfRKyhAv5cIZihew
+ build-win64/opt: ZVu7UgN0TD65Ds61R0Fcdw
+ fetch-binutils-2.25.1: biYr6jzaS0qLYEdV04VsgQ
+ fetch-binutils-2.28.1: Rr4bme6jR367-RJOtXvnwA
+ fetch-binutils-2.31.1: ZZw7z81LQxa3h3WSQGszdQ
+ fetch-cloog-0.18.1: RBIu79TYS_6XZmBdXjBy5Q
+ fetch-gcc-4.9.4: ONRYKCQyQ0OChAuC0dn7Og
+ fetch-gcc-6.4.0: diW7DE6wRqi4T7_gofMf4Q
+ fetch-gmp-5.1.3: Amvm8R65Spue_kEeE66Qtg
+ fetch-isl-0.12.2: FA01rHTTQdmclndY1p9SWQ
+ fetch-isl-0.15: VeBaKhmaT_ypNgF0ea30WQ
+ fetch-mpc-0.8.2: WoamR_8-SByGgpmQlksP3g
+ fetch-mpfr-3.1.5: ZctJp1yBR5OH6TgTcoHZ9Q
+ hazard-linux64-haz/debug: ZtrJ5vnUQt6yWo5Upy5i9A
+ packages-deb7-automake-1.14: Jcd0sip9SwyED9OT2lF9vA
+ packages-deb7-cmake: GPEoycKQSlyE1LPUmUqnBA
+ packages-deb7-devscripts-2.14: fm8rcOdZQQ6495GsAXaBjg
+ packages-deb7-dh-python: AdGzX_RoSyGAWv095qCYiQ
+ packages-deb7-dpkg-1.17: NbyaKA-8Q26dE_-ItC7iGA
+ packages-deb7-gdb: He0hh3vgSbCq4yS9umIwuQ
+ packages-deb7-git: AYTUNwpBTq6ergMbTQV2pg
+ packages-deb7-make: YVNkvIqIRyyLaa0xHlxFZw
+ packages-deb7-mercurial: cAD-wzUIQRS3MI99JitNHw
+ packages-deb7-ninja: QCiS8QwVRL6Kv1X9KejV2A
+ packages-deb7-python: JfPMDBk8Q6u6HY0oO-ujJA
+ packages-deb7-python-zstandard: MTUOYeGhSACGyJuehw9ezw
+ packages-deb7-python3-defaults: TLO8SLVJRtCIs-PzEW82eg
+ packages-deb7-python3.5: JDvyzYnXR7yrKJIjPEz1CQ
+ packages-deb7-valgrind: eLzgZ3QXQDenrWk2WrKW7w
+ packages-deb7-xz-utils: aY6_78zuS8iTeOH_jsFQqg
+ packages-deb9-mercurial: PJXYDmeAS5q_08Cu_iCkjQ
+ packages-deb9-python-zstandard: ImhF1BThRTKV1Hm93oFNGg
+ repackage-linux-devedition-nightly/opt: Arj7FKKCQW69e48VzE_vmw
+ repackage-linux-nightly/opt: CyKdoPy8TsaMVctX6_fhgw
+ repackage-linux64-devedition-nightly/opt: JID74w9CRiOs9Jk3NWNjlg
+ repackage-linux64-nightly/opt: MnMQ3XqRTxCc7hbVLDKM0A
+ repackage-macosx64-devedition-nightly/opt: UU0aFcX7RFeeaOpr5XCtnw
+ repackage-macosx64-nightly/opt: G_aqbUCETm21mqoo7ytJVg
+ repackage-macosx64/opt: ZCv5yl_xRpinnb5yYHG6pQ
+ repackage-signing-linux-devedition-nightly/opt: R7N3rhWzTcqbdTtKgy-mFA
+ repackage-signing-linux-nightly/opt: ci0SN3DxSamIIh_R5KYV9w
+ repackage-signing-linux64-devedition-nightly/opt: LBphglW6TwC7ENtcXp8I7g
+ repackage-signing-linux64-nightly/opt: ZnhonCZFSfqLQVyZCdjcYg
+ repackage-signing-macosx64-devedition-nightly/opt: FclGIgG7Rb6-hR8HaMHnDA
+ repackage-signing-macosx64-nightly/opt: d5yH2HdKTz2s541waxG3Vg
+ repackage-signing-win32-devedition-nightly/opt: OiFfGlUHSXik2oq48wkbrQ
+ repackage-signing-win32-nightly/opt: BxL3Isq9RaOPswxyDBOEeQ
+ repackage-signing-win32/opt: Omn1p9kTQC-pt8jOExFqbg
+ repackage-signing-win64-devedition-nightly/opt: U3UdZ-uiTzCykY94pE9Sqw
+ repackage-signing-win64-nightly/opt: FkKt_e88T4OGUugZg5JRng
+ repackage-signing-win64/opt: bKapAXdoT0CiP0NpVJQqYQ
+ repackage-win32-devedition-nightly/opt: ZFH9-EwHTyafs5HsRmPbWQ
+ repackage-win32-nightly/opt: HGGANUKtTEi93_cw--xKew
+ repackage-win32/opt: VU5F21bERVmzXOAWnvJlzA
+ repackage-win64-devedition-nightly/opt: P2Gv1UxKTkmzTOgVwRKfqA
+ repackage-win64-nightly/opt: LIFN33kmSr2MKiKWQz1PNg
+ repackage-win64/opt: b5NUT0nWT-m4wtns4IVr8g
+ source-test-file-metadata-bugzilla-components: bv-o3Az2SZa_69Hyq2GrkA
+ source-test-mozlint-codespell: B-_BUSD_S0qQ_U5iQFX0PA
+ source-test-mozlint-eslint: dgVfSnaqT0mn9S2ZvNNE8A
+ static-analysis-autotest-linux64-st-autotest/debug: GrdSsjQIS4KTTrDLaFbZAQ
+ static-analysis-autotest-win64-st-autotest/debug: OyJJ-zqOQJ6H9XWpedL1PQ
+ static-analysis-win32-st-an/debug: BE8-Owp5Q9a5ztb7jbl4aQ
+ static-analysis-win32-st-an/opt: cZI86Mt6SF2sKF6g1uNfZg
+ static-analysis-win64-st-an/debug: Yzwx8zOhRZ6mrmeAdcX19g
+ static-analysis-win64-st-an/opt: YS3DYOIJQ02YDHRXmhvV1A
+ test-android-em-4.2-x86/opt-geckoview: bt7JC81XSYGsRHo1VjtL2A
+ test-android-em-4.2-x86/opt-mochitest-chrome-1: TyMRg9yMT7iO32zC62tPqQ
+ test-android-em-4.2-x86/opt-mochitest-chrome-2: Yi4plPNHSTaVj9wZvJNG5A
+ test-android-em-4.2-x86/opt-mochitest-chrome-3: IO5Bld_QRmCBiSCU_CKMyA
+ test-android-em-4.2-x86/opt-mochitest-chrome-4: OjpaYRolRtCloJwhcGiNVA
+ test-android-em-4.2-x86/opt-xpcshell-1: GyIozDUXS5S5q6Cqd6WKiA
+ test-android-em-4.2-x86/opt-xpcshell-2: R-xFzvAvQDC5CZivb4_gog
+ test-android-em-4.2-x86/opt-xpcshell-3: RyoI0Y5XRDKFKyrIIt3R4A
+ test-android-em-4.2-x86/opt-xpcshell-4: DAcjXDKPTyqzmKE3yHiZGg
+ test-android-em-4.2-x86/opt-xpcshell-5: EuhaCnYZR4CT5rY49LPX2w
+ test-android-em-4.2-x86/opt-xpcshell-6: M2SXOD0CSsapIc7CwCeqrQ
+ test-android-em-4.3-arm7-api-16/debug-cppunit: fPljoG9RSEqUl6FQbMZKZA
+ test-android-em-4.3-arm7-api-16/debug-crashtest-1: XmCQGs_SQfyPPHhn7L4zaQ
+ test-android-em-4.3-arm7-api-16/debug-crashtest-10: Yn8ZgOoEQw6hHPqmXruFVw
+ test-android-em-4.3-arm7-api-16/debug-crashtest-2: O1kiabW2SMCG4qYkzCmToQ
+ test-android-em-4.3-arm7-api-16/debug-crashtest-3: flsQgOvrQFGJjuH57OMv-w
+ test-android-em-4.3-arm7-api-16/debug-crashtest-4: Xfiiq_bNT9uYAjqQLq7f_A
+ test-android-em-4.3-arm7-api-16/debug-crashtest-5: Naj59Fr_QMqL9kgmrQG0Cg
+ test-android-em-4.3-arm7-api-16/debug-crashtest-6: BhJmz1VgTDagUUIS0NgXOA
+ test-android-em-4.3-arm7-api-16/debug-crashtest-7: Ozbxu4QITzGmIsDvQvdsvA
+ test-android-em-4.3-arm7-api-16/debug-crashtest-8: N-DxXThsTmGo8SoHK7xA1g
+ test-android-em-4.3-arm7-api-16/debug-crashtest-9: My8M8kteT2at6tb3NhfRow
+ test-android-em-4.3-arm7-api-16/debug-geckoview: CwHm24B0T3q8-dw5jBoUcA
+ test-android-em-4.3-arm7-api-16/debug-geckoview-junit-1: FCxWzTpaQleI6hwRlq9ZOQ
+ test-android-em-4.3-arm7-api-16/debug-geckoview-junit-2: HjVfNpFySXOeRWPKeCg3kg
+ test-android-em-4.3-arm7-api-16/debug-geckoview-junit-3: JcP4jXVqT4-osnZCjhWwXg
+ test-android-em-4.3-arm7-api-16/debug-geckoview-junit-4: B49Fq__jR9q19utb9ZJasQ
+ test-android-em-4.3-arm7-api-16/debug-marionette-1: IMpxNh5oQNq-Faw9hHSV_Q
+ test-android-em-4.3-arm7-api-16/debug-marionette-10: drX95LHsR36xcRmPv1cluQ
+ test-android-em-4.3-arm7-api-16/debug-marionette-2: MpffmvghQ3-KSCz3FR00-w
+ test-android-em-4.3-arm7-api-16/debug-marionette-3: ecDJoA3nTFOsQX5sN7KAGQ
+ test-android-em-4.3-arm7-api-16/debug-marionette-4: f0rCbaU1TESZ_9ZrNGGK6w
+ test-android-em-4.3-arm7-api-16/debug-marionette-5: EZgmOl-eS7mapCj0Ii8JcA
+ test-android-em-4.3-arm7-api-16/debug-marionette-6: VslW3oF_QKePC8_y9vkDqA
+ test-android-em-4.3-arm7-api-16/debug-marionette-7: NtTbeg6XQsSRjGqPOlHb9Q
+ test-android-em-4.3-arm7-api-16/debug-marionette-8: Db0TxraSSgy9F218wyYepA
+ test-android-em-4.3-arm7-api-16/debug-marionette-9: EhTOjUv6S-KoF297RIIoSw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-1: eTIzwY7rTSS6TF6mVH3kXA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-10: Ozy_Mr4_TZ2ap-jgl7tMiA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-11: CUEMFO9QTd6v35_IEZ0NzA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-12: CR71wuubRjG1udqvVZGTig
+ test-android-em-4.3-arm7-api-16/debug-mochitest-13: WsPOLhbwR5Ke4RwFQW3Dfw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-14: YXI_eF6sTaaT8LgM61SIcw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-15: edK5725EQpiwkh1HLYciBA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-16: PHkUjfYDRXmmkXtBAr3cwQ
+ test-android-em-4.3-arm7-api-16/debug-mochitest-17: NKdptCiDRPKf9Mx0G6hI6g
+ test-android-em-4.3-arm7-api-16/debug-mochitest-18: VMGlKlYrRpKMlF-sCGC_Zg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-19: EA_xrjItQWyuJL89VMw1Xw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-2: Vh-Bnh6JQsShU1uX5d7utA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-20: H9No-bgHS_26pqt0Gp8aLA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-21: JYvWeMD-Rwa4knhYrikmOQ
+ test-android-em-4.3-arm7-api-16/debug-mochitest-22: InSTyW6ERJW_qXN5Qbk9Sw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-23: Sjr_v7j3TVakRovyjmx7rw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-24: Re2siL9EQbyap6EcQoDBow
+ test-android-em-4.3-arm7-api-16/debug-mochitest-25: fAjMkBehR2-FiDMQtHt1HA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-26: c5mVh02fQLm-kvD076pQaw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-27: J8Am6BM-Q5iP-GX3vyA63w
+ test-android-em-4.3-arm7-api-16/debug-mochitest-28: bvHnB01FRDO5fqWjnDgsHg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-29: TwMi3gmSTS6SwMWEb5poig
+ test-android-em-4.3-arm7-api-16/debug-mochitest-3: ZOiufvETRXa-b6Jf5_23Iw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-30: Kmn1h0G6SuilPkXq8W8_FA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-31: aA4BeIv3S5GmDHqMlhVWSg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-32: TNlXovSJSsy7tyvC-EzBzA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-33: MT4zffOPQcqcl8rqI9rhwg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-34: XXbpX-0QS-ufziBOIYeGgA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-35: Oxr9AEsTSTeBTOSSm0lW0Q
+ test-android-em-4.3-arm7-api-16/debug-mochitest-36: Jomc7qsUTkeoa0tWD1y4MA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-37: EPe49qw5RvCCewx5VVaFrg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-38: ePnqty90STOWYhyqiRaeiw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-39: LaDm2LKUQqqq8DoTwcQ3mA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-4: AHq4R7XwRD29eiIEcRwOLQ
+ test-android-em-4.3-arm7-api-16/debug-mochitest-40: ISpHNq-nSZe0K4M5YtrUDw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-41: CqtPOANTScS7ffznpftdkg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-42: QehInfQmSJiY6UDKH2mKVg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-43: N4hskPKxRee4TvxvpjAJUQ
+ test-android-em-4.3-arm7-api-16/debug-mochitest-44: S91YjgibSpCM__RdZLqU5g
+ test-android-em-4.3-arm7-api-16/debug-mochitest-45: Ms97MsFnT3-1q5FO7-bq3g
+ test-android-em-4.3-arm7-api-16/debug-mochitest-46: XudPe-jVTT6H_dT2UBfUsg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-47: blJVIqnqTlW0gwacCVFt2A
+ test-android-em-4.3-arm7-api-16/debug-mochitest-48: Chb9yDptQYm19uqz0754ew
+ test-android-em-4.3-arm7-api-16/debug-mochitest-5: Zc5EZyUgQ8Gq4OmGwwF1yw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-6: PvNoLqmGSmmYYKM_Nl4oCQ
+ test-android-em-4.3-arm7-api-16/debug-mochitest-7: YcP3D3eATZ64tCcxApMJRg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-8: Cuc7ZVV8QH2R4COyZYTWZg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-9: ZtrqFq-STqeyHmvn6ar9Zg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-1: eKOGklhqSWmwhercUOreuw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-2: aKPxsCZhTVKn-wF7yY2EWQ
+ test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-3: D1-WEQVoRuGfVHqvdlJFaw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-4: BMrP4x89SK608JAHLHePSA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-5: Ecw2WeH3Rm-ROesrS0pdtg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-6: WOGk5kzKRuilIwtP4SRHtw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-7: GUFeXonER-SV1kIXbQNDnw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-8: ZtYgTEDWRoSSed4jbjmQbg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-clipboard: ElKsDuw1SJm12zQgGFwp1A
+ test-android-em-4.3-arm7-api-16/debug-mochitest-gpu: W5z3CDOpQ9KFs1VRU95hHg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-media-1: H4N9KtiQS0yiw8BlH26GMg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-media-2: XT9M72d0T-Go-l3J0tOOhA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-media-3: U1AUcaddQWm3ymf5hxDqaQ
+ test-android-em-4.3-arm7-api-16/debug-reftest-1: TL7Z7kqTRraM43fVhrMQRw
+ test-android-em-4.3-arm7-api-16/debug-reftest-10: F9Nk080ESoWcRVkuQ5tzSg
+ test-android-em-4.3-arm7-api-16/debug-reftest-11: HrbvBkt2T82ZlSUVti6epw
+ test-android-em-4.3-arm7-api-16/debug-reftest-12: KmJfYL6pSe61Dcx0XWNrdg
+ test-android-em-4.3-arm7-api-16/debug-reftest-13: fFhIbnGFTU-OyXCLbqLqDg
+ test-android-em-4.3-arm7-api-16/debug-reftest-14: Ml4DFHuKQ_OUXgI-CBihRA
+ test-android-em-4.3-arm7-api-16/debug-reftest-15: Vyy5kLKDSwSmHMgVRHGSFg
+ test-android-em-4.3-arm7-api-16/debug-reftest-16: Dje-xF6YSvStKuqtNfXwJg
+ test-android-em-4.3-arm7-api-16/debug-reftest-17: D-zqNKf3QWGxg9Fz7LzPlA
+ test-android-em-4.3-arm7-api-16/debug-reftest-18: Ats3FH0rTuez3UN-tJV9aQ
+ test-android-em-4.3-arm7-api-16/debug-reftest-19: H1q0FFTXS3q0mKpMmn18qA
+ test-android-em-4.3-arm7-api-16/debug-reftest-2: RqfJs17lQ0ee0sc7jzKwag
+ test-android-em-4.3-arm7-api-16/debug-reftest-20: JwB9TcviRPC6IoH7fPnzWg
+ test-android-em-4.3-arm7-api-16/debug-reftest-21: XwRY-9mXT0SvFJXVApYipg
+ test-android-em-4.3-arm7-api-16/debug-reftest-22: WjkJ8dYRQO-ai0BKW5Y9Tg
+ test-android-em-4.3-arm7-api-16/debug-reftest-23: Zoo3wfzaQj2AE2HYifhI3Q
+ test-android-em-4.3-arm7-api-16/debug-reftest-24: ENYZSkWWTJidm1SSstXVIg
+ test-android-em-4.3-arm7-api-16/debug-reftest-25: fm2jc-eyRoWgMXxWNw6Krw
+ test-android-em-4.3-arm7-api-16/debug-reftest-26: R-J6TEqeQ82V6EF-sF0zUw
+ test-android-em-4.3-arm7-api-16/debug-reftest-27: HH7FrlgyRqSuJYW5JNS81Q
+ test-android-em-4.3-arm7-api-16/debug-reftest-28: Nkcav-gTQU-TgSl2_kDZBA
+ test-android-em-4.3-arm7-api-16/debug-reftest-29: GWXQPzN1T223iei3okF23Q
+ test-android-em-4.3-arm7-api-16/debug-reftest-3: dsknR4yBQn6pUBAO_RgQMg
+ test-android-em-4.3-arm7-api-16/debug-reftest-30: D-I-1Kl-QQGOWJOJdwDffQ
+ test-android-em-4.3-arm7-api-16/debug-reftest-31: CU4wh5dZR6qbDDj4tNxh_A
+ test-android-em-4.3-arm7-api-16/debug-reftest-32: UzxcdY7aQxOUf0GVe4q-Cw
+ test-android-em-4.3-arm7-api-16/debug-reftest-33: UycdLX4pR9WJGxreNITkPg
+ test-android-em-4.3-arm7-api-16/debug-reftest-34: ds38ad_7S1ylinW7vhiX9g
+ test-android-em-4.3-arm7-api-16/debug-reftest-35: RVCqBIUVRrK4MJXA5SYCFA
+ test-android-em-4.3-arm7-api-16/debug-reftest-36: aFSvcM4XQ3OPVesMEn0xMg
+ test-android-em-4.3-arm7-api-16/debug-reftest-37: Ls7Ev7i8Rc-bG1elpaqneA
+ test-android-em-4.3-arm7-api-16/debug-reftest-38: HsEgLHLvQtOfIkfby1LTkw
+ test-android-em-4.3-arm7-api-16/debug-reftest-39: NPaXzBO7S5iXemcu_cjBEg
+ test-android-em-4.3-arm7-api-16/debug-reftest-4: HzEJ-fNaRYejzcl3r7RF_w
+ test-android-em-4.3-arm7-api-16/debug-reftest-40: EJ5ZvL1JSaOs7TNDaGT44Q
+ test-android-em-4.3-arm7-api-16/debug-reftest-41: IfrZHhxcRhukExXnuCHTiA
+ test-android-em-4.3-arm7-api-16/debug-reftest-42: es6S1vtmTiOzVoSzJZtdhw
+ test-android-em-4.3-arm7-api-16/debug-reftest-43: YbUI5rKCSJe-JHKmps2hfA
+ test-android-em-4.3-arm7-api-16/debug-reftest-44: d4GCugbXRxqAaogzjrWmOA
+ test-android-em-4.3-arm7-api-16/debug-reftest-45: UFpnw7YGQGyEsStxcnPU6A
+ test-android-em-4.3-arm7-api-16/debug-reftest-46: QKzZ5mXaQei6eckdcpxcCw
+ test-android-em-4.3-arm7-api-16/debug-reftest-47: YeQHqXf3QgqILZRw3xI-qA
+ test-android-em-4.3-arm7-api-16/debug-reftest-48: U2mk0aAuRDawxk3Y8RgH8g
+ test-android-em-4.3-arm7-api-16/debug-reftest-49: eGvipfJ3SZyjiLKEKgxdmQ
+ test-android-em-4.3-arm7-api-16/debug-reftest-5: UXXetLg7SVqTeNwM-dIETQ
+ test-android-em-4.3-arm7-api-16/debug-reftest-50: PcIhOcxQT0Cf7x1Sco2KSg
+ test-android-em-4.3-arm7-api-16/debug-reftest-51: INNF1jzCQCGKQJycHZztUw
+ test-android-em-4.3-arm7-api-16/debug-reftest-52: UBMyK8PESVCbjKIBVcp1zw
+ test-android-em-4.3-arm7-api-16/debug-reftest-53: OCWG-iuITQeaBRmZy6BSkA
+ test-android-em-4.3-arm7-api-16/debug-reftest-54: DCKJw4yLSG-5tIpY7LQ1hg
+ test-android-em-4.3-arm7-api-16/debug-reftest-55: We6OpU7qTFWODN44iUMWTg
+ test-android-em-4.3-arm7-api-16/debug-reftest-56: Ld6Exp95R_yUDFe7rrz6Lg
+ test-android-em-4.3-arm7-api-16/debug-reftest-6: K6_K8OVnRJCfBJz8H84CMQ
+ test-android-em-4.3-arm7-api-16/debug-reftest-7: GP337AenRaybM5Gs5Qy-Gw
+ test-android-em-4.3-arm7-api-16/debug-reftest-8: ARPchXwqTTeY04A9DhSwsw
+ test-android-em-4.3-arm7-api-16/debug-reftest-9: dlEYmSuNTRKZV0tD9YxaMg
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-1: Sq4z7qpqSQyOBi47EiX9Bw
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-10: DjUP74vRQBCX5cYTRS-tCw
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-11: NftUUSXoQWWp6NaG-0nUpw
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-12: XRcryb3TSCmqb0YthvCYgA
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-2: LymZ9-SHRgO7ZRhabW8q4w
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-3: Ed9W13zPTla-ndOAOWvLBA
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-4: EOhl2JeARuGjHjSUGZunOA
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-5: TlBTec55RUmI_XV6xkoZgA
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-6: U-X4ALKzTLKXpkycymWZEQ
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-7: B4qHes0OTxy7nXtp4sItZg
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-8: agQ9NWOlRCCoLhUWGKJ9lA
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-9: HAnwMgw_RJOv60E5M-tAcQ
+ test-android-em-4.3-arm7-api-16/opt-cppunit: RoaedTd8Rs-F72pWQal1MA
+ test-android-em-4.3-arm7-api-16/opt-crashtest-1: eKr52-t3T7ypxSKTKMDSPQ
+ test-android-em-4.3-arm7-api-16/opt-crashtest-2: TXHXx37dRBWA7GbYyRip9A
+ test-android-em-4.3-arm7-api-16/opt-crashtest-3: EeuyjYEjRt6kbjpQk-699A
+ test-android-em-4.3-arm7-api-16/opt-crashtest-4: aAggyqZESk6Q6fEbO4GM0g
+ test-android-em-4.3-arm7-api-16/opt-geckoview: cv51sWxAQeyDEHb1hi0c8Q
+ test-android-em-4.3-arm7-api-16/opt-geckoview-junit-1: NYgKGM2YR2aIAHl8qpgdog
+ test-android-em-4.3-arm7-api-16/opt-geckoview-junit-2: MIkBrEJpTq2K8MkB6siuBg
+ test-android-em-4.3-arm7-api-16/opt-marionette-1: XRivG9WmS1O1mffCUqZKNg
+ test-android-em-4.3-arm7-api-16/opt-marionette-10: O7itLGRRRpWPYqLY7ltzOQ
+ test-android-em-4.3-arm7-api-16/opt-marionette-2: SA8bosxvS_2P1bBVlpBpaQ
+ test-android-em-4.3-arm7-api-16/opt-marionette-3: GExci6RUTKuxxD32A6u7dw
+ test-android-em-4.3-arm7-api-16/opt-marionette-4: YEF0rReuTv2yDl0XafRRfg
+ test-android-em-4.3-arm7-api-16/opt-marionette-5: VIsimfQKS32iZAutSfz2ew
+ test-android-em-4.3-arm7-api-16/opt-marionette-6: NKIerQ_TRkms-bgW88OoAg
+ test-android-em-4.3-arm7-api-16/opt-marionette-7: HlyG2a5sQB25YBnX5kUDrA
+ test-android-em-4.3-arm7-api-16/opt-marionette-8: KRTiFTe5QZeuJRbO5e8bLw
+ test-android-em-4.3-arm7-api-16/opt-marionette-9: bEJkSm1WTGedlOQLEt2yeg
+ test-android-em-4.3-arm7-api-16/opt-mochitest-1: MK6CcKF6QXyQ7DiuWh3QAg
+ test-android-em-4.3-arm7-api-16/opt-mochitest-10: L-PRM1J7QFiX6p7XW_4tug
+ test-android-em-4.3-arm7-api-16/opt-mochitest-11: O07LRmB6RSiSyHqFJOyP0Q
+ test-android-em-4.3-arm7-api-16/opt-mochitest-12: ZF-cUYutS1SqTMz47Q6pOQ
+ test-android-em-4.3-arm7-api-16/opt-mochitest-13: SsL-zEs_QqOnd2UwbNiRnQ
+ test-android-em-4.3-arm7-api-16/opt-mochitest-14: ZMXmu-CzTVO16cRrZRDo4Q
+ test-android-em-4.3-arm7-api-16/opt-mochitest-15: ETCY0rCwS8eMeYfzDGpF1Q
+ test-android-em-4.3-arm7-api-16/opt-mochitest-16: I1oN_pRYThGbYFQ9wHewQw
+ test-android-em-4.3-arm7-api-16/opt-mochitest-17: OUqmNaBOR02ASqvHKh-AlA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-18: CfgLwtF4Rg2r1ZJJLQaAVA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-19: VAeY2pcZSyqL8foVIq-VCw
+ test-android-em-4.3-arm7-api-16/opt-mochitest-2: PeYelk8bQQy1IYnPuujNHg
+ test-android-em-4.3-arm7-api-16/opt-mochitest-20: fyv-SrK1ScyDwBKm73uXfA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-21: bnSWS6WKQz-Rl4_kpx9m-w
+ test-android-em-4.3-arm7-api-16/opt-mochitest-22: bfs91FhpTA6qhsPVpr4tmw
+ test-android-em-4.3-arm7-api-16/opt-mochitest-23: XDqzM7xKSBC5MSl2482dTw
+ test-android-em-4.3-arm7-api-16/opt-mochitest-24: OwVcUDsWSYChHGwMrVtfnA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-3: MsUx--g3QE6fHzv5UjruCQ
+ test-android-em-4.3-arm7-api-16/opt-mochitest-4: Bi9oURDqT5uMrf667qGoHg
+ test-android-em-4.3-arm7-api-16/opt-mochitest-5: UbRPa3UMTXWMo-fi_kHyYA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-6: OwqmQjxfS9OfgheUJwqu-g
+ test-android-em-4.3-arm7-api-16/opt-mochitest-7: Szn1QoUoQdSU3Yzbt5kJiA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-8: SNXKXw7tQ5moMhrujAtUPQ
+ test-android-em-4.3-arm7-api-16/opt-mochitest-9: a7PSLMMVSuGS4D6LIr_IoQ
+ test-android-em-4.3-arm7-api-16/opt-mochitest-chrome-1: dHXi61bET0Cm9Wtdsg1cCg
+ test-android-em-4.3-arm7-api-16/opt-mochitest-chrome-2: fjhMrrthSLK6Khw-4o99nQ
+ test-android-em-4.3-arm7-api-16/opt-mochitest-chrome-3: GPpYZKN0TZyWNDUn0lEKpw
+ test-android-em-4.3-arm7-api-16/opt-mochitest-chrome-4: CCyensv-TTGZF5-NKlYygw
+ test-android-em-4.3-arm7-api-16/opt-mochitest-clipboard: Zia-vDn2RW6POB4HKXCK3w
+ test-android-em-4.3-arm7-api-16/opt-mochitest-gpu: Xs87BsxGQZioCgEdA3ParA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-media-1: eaP2BYdHQSyZydkKk9n9JA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-media-2: GZdDdVSJTVuigIyL9mHrnA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-media-3: XXjs7SBPSRKE6h7MArRh5g
+ test-android-em-4.3-arm7-api-16/opt-reftest-1: d60W_yUHRdimXnMYhLtFnA
+ test-android-em-4.3-arm7-api-16/opt-reftest-10: Ft01z0NWSFmpH8-fG0ZBBg
+ test-android-em-4.3-arm7-api-16/opt-reftest-11: Qw3NpFfYTei3rBzeqBPRMg
+ test-android-em-4.3-arm7-api-16/opt-reftest-12: JI2tP-dlQim6vfNHA0DLdA
+ test-android-em-4.3-arm7-api-16/opt-reftest-13: IQxy_hYLTKOzRGiok3Cbrg
+ test-android-em-4.3-arm7-api-16/opt-reftest-14: f5QjOcDzR1q0harn6haKig
+ test-android-em-4.3-arm7-api-16/opt-reftest-15: TqjYzrXeTKmGYsKeSIoUGQ
+ test-android-em-4.3-arm7-api-16/opt-reftest-16: H4vNXfwAT36z1HWJY6td7A
+ test-android-em-4.3-arm7-api-16/opt-reftest-17: Uixl2ydiQr2T5IrxXJh0NQ
+ test-android-em-4.3-arm7-api-16/opt-reftest-18: GMq38vgsQPWGQe54TC8FoA
+ test-android-em-4.3-arm7-api-16/opt-reftest-19: avSYj3YNQjWLKzEL5cWrIA
+ test-android-em-4.3-arm7-api-16/opt-reftest-2: EOJeDBcAT9OAOY1bIjG-cg
+ test-android-em-4.3-arm7-api-16/opt-reftest-20: EpIGjMXiRhqpCDlo6e9Jow
+ test-android-em-4.3-arm7-api-16/opt-reftest-21: F3stEWLjSm-VneOK2usOww
+ test-android-em-4.3-arm7-api-16/opt-reftest-22: H21rHqnUR9Gp1B6XFXA0WA
+ test-android-em-4.3-arm7-api-16/opt-reftest-23: aOCIWVtXSP6OlerklxNLjQ
+ test-android-em-4.3-arm7-api-16/opt-reftest-24: NsREmwVsQWKz396-Hfm8ug
+ test-android-em-4.3-arm7-api-16/opt-reftest-25: VZixEWAwS1q8eWkWechJRQ
+ test-android-em-4.3-arm7-api-16/opt-reftest-26: Es2ZPhiGQ5asQyBWNXa0Iw
+ test-android-em-4.3-arm7-api-16/opt-reftest-27: HEvtNjsHREOOfO5n2d4Smw
+ test-android-em-4.3-arm7-api-16/opt-reftest-28: IOBnM00tQHuiN-EagQG5mg
+ test-android-em-4.3-arm7-api-16/opt-reftest-3: T41cIz9ISy2i86EvbZoFhg
+ test-android-em-4.3-arm7-api-16/opt-reftest-4: fCOC9aoHQ0WlFfZCc0BA7A
+ test-android-em-4.3-arm7-api-16/opt-reftest-5: EJDGoofrRDCOdabocQhuEw
+ test-android-em-4.3-arm7-api-16/opt-reftest-6: Y2CsIUdqRbO_eFCrUQPJJA
+ test-android-em-4.3-arm7-api-16/opt-reftest-7: ID7B7fFVRdyYeuAlY0eEhQ
+ test-android-em-4.3-arm7-api-16/opt-reftest-8: A1IJriQMTOC_TLYu19o4lA
+ test-android-em-4.3-arm7-api-16/opt-reftest-9: J9u846cETsuceFw7cUZa8g
+ test-android-em-4.3-arm7-api-16/opt-robocop-1: Jb6qN24dSsONT7EqQhBrWw
+ test-android-em-4.3-arm7-api-16/opt-robocop-2: IcKGa_vhTXWOX-uWmBo2KQ
+ test-android-em-4.3-arm7-api-16/opt-robocop-3: X2hEhlT5SdGca-uiWUK6Jg
+ test-android-em-4.3-arm7-api-16/opt-robocop-4: HZQ-Z5PkSZ-n80SuQhUvfg
+ test-android-em-4.3-arm7-api-16/opt-xpcshell-1: S4j8uGwbRZaLP96gzsIl5g
+ test-android-em-4.3-arm7-api-16/opt-xpcshell-2: JD4ta2dnSQyy-NhcpXjf1Q
+ test-android-em-4.3-arm7-api-16/opt-xpcshell-3: CEzp0c8IQRyrXpVG9m9Mqw
+ test-android-em-4.3-arm7-api-16/opt-xpcshell-4: ECZ06_-MTkqhUI1S615i6Q
+ test-android-em-4.3-arm7-api-16/opt-xpcshell-5: b3pJkN-RRyS8usVO3hsa6A
+ test-android-em-4.3-arm7-api-16/opt-xpcshell-6: GsOZXKxtRjK85yNh12Nk4A
+ test-android-em-4.3-arm7-api-16/opt-xpcshell-7: SQJ8DI0EQoqHmPU-Drl83A
+ test-android-em-4.3-arm7-api-16/opt-xpcshell-8: cMsEdnX4R1eKkU9laXzeNQ
+ test-linux32-devedition/opt-cppunit: MCkyRWeRTrGIBt2X8TghHQ
+ test-linux32-devedition/opt-crashtest-e10s: HHJAJsUQSVOICH3YLwNhDQ
+ test-linux32-devedition/opt-firefox-ui-functional-local-e10s: fLR7IfykT9qbqZew4WxpqQ
+ test-linux32-devedition/opt-firefox-ui-functional-remote-e10s: YarXRjIzQUeE1oqs8XPnlg
+ test-linux32-devedition/opt-marionette-e10s: bzJUadZSSrimjR9T1moqeA
+ test-linux32-devedition/opt-mochitest-a11y: EH2dAnMAQxKr3oHk_32F0g
+ test-linux32-devedition/opt-mochitest-browser-chrome-e10s-1: N-Pn_aIsTEqKSx8kiIyN-w
+ test-linux32-devedition/opt-mochitest-browser-chrome-e10s-2: Ru4KwoHtTZmfUccQ3b9ObA
+ test-linux32-devedition/opt-mochitest-browser-chrome-e10s-3: f7TyhSscQceXRfjZSx0jwQ
+ test-linux32-devedition/opt-mochitest-browser-chrome-e10s-4: HrNVx0MQRNKxY6VNYypJSg
+ test-linux32-devedition/opt-mochitest-browser-chrome-e10s-5: Nvs-q-ogQGO3sQi_AbPTxQ
+ test-linux32-devedition/opt-mochitest-browser-chrome-e10s-6: YA2CUK_2TqudjbTGpQRGGQ
+ test-linux32-devedition/opt-mochitest-browser-chrome-e10s-7: X_wTGuJoRx23UmLI_xQyDw
+ test-linux32-devedition/opt-mochitest-chrome-1: En53pYeMTfyo-d5DXP9a2w
+ test-linux32-devedition/opt-mochitest-chrome-2: NPjKws8QRjuP5D0i8OZIZQ
+ test-linux32-devedition/opt-mochitest-chrome-3: CopeEq-lQQezek-xHjscJQ
+ test-linux32-devedition/opt-mochitest-clipboard-e10s: XkGS8U0jSuulv8mtoIL4AA
+ test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-1: ND9OweoWQPmw_69E9wt-yg
+ test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-2: MeqnASaMSPm_k5qqZTa1yw
+ test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-3: EVYJqIX-T3SC_PWf8-S9sg
+ test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-4: KeaSPWa6SWakV732dXRPKw
+ test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-5: JssGHWFdRL2sdoQjYZ1e4A
+ test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-6: JJeyHIyJQZiz5kQ9tJ75fw
+ test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-7: aPDwKQE-TKi1SmayoxPAHg
+ test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-8: I7Y-0jrxR4a7VW2XwSBfCw
+ test-linux32-devedition/opt-mochitest-e10s-1: OrtwabIMSGabsoSkClJFXQ
+ test-linux32-devedition/opt-mochitest-e10s-2: Ku5m4NfyQVuenkWCB5cTnA
+ test-linux32-devedition/opt-mochitest-e10s-3: d3ZG4RmXRNem0ARFn6zo6Q
+ test-linux32-devedition/opt-mochitest-e10s-4: HR_tZqshQ82_sYYsRmCZHw
+ test-linux32-devedition/opt-mochitest-e10s-5: AGahZrthSL-Zba-KE-O9Ww
+ test-linux32-devedition/opt-mochitest-gpu-e10s: IMPHoAncR_iJdnKZgpBxzA
+ test-linux32-devedition/opt-mochitest-media-e10s-1: KNEHmb4fSR28Hpvff9ZnYw
+ test-linux32-devedition/opt-mochitest-media-e10s-2: K3Qb0M6ETgiDnP4QRX3qAw
+ test-linux32-devedition/opt-mochitest-media-e10s-3: bac5kNsiRKWXP-nxkH-htQ
+ test-linux32-devedition/opt-mochitest-webgl1-core-e10s: cBtHr3ngRV2k6D8JIyM61Q
+ test-linux32-devedition/opt-reftest-e10s-1: NGDpOr_7SVeCFbKuPc3nVg
+ test-linux32-devedition/opt-reftest-e10s-2: U2dPWC7GQgqwXCCtvwYrAQ
+ test-linux32-devedition/opt-reftest-e10s-3: chZ1l6xNR3O6UK-pX1g0_Q
+ test-linux32-devedition/opt-reftest-e10s-4: KStk_1daQNuXmLZLU048qA
+ test-linux32-devedition/opt-reftest-e10s-5: WLNon20OSIaLN7qes9-oBQ
+ test-linux32-devedition/opt-reftest-e10s-6: QQNQIJhqTRCRY87ZHy5ujA
+ test-linux32-devedition/opt-reftest-e10s-7: IVzMWdCwRDy51MPRmSb2Gw
+ test-linux32-devedition/opt-reftest-e10s-8: O0zvL0tPSX6fHx7BkzbwoQ
+ test-linux32-devedition/opt-reftest-no-accel-e10s-1: Yn8zBM-rTJ2tlEN1dzVg6A
+ test-linux32-devedition/opt-reftest-no-accel-e10s-2: BVjna_OMQuWnRKrdl-pRjw
+ test-linux32-devedition/opt-reftest-no-accel-e10s-3: brOSR-SBTD2cbUvt9CNesA
+ test-linux32-devedition/opt-reftest-no-accel-e10s-4: S1wHVnxxQs6_AkxZiwMZMQ
+ test-linux32-devedition/opt-reftest-no-accel-e10s-5: bIhEs-v9Sk6Fb9k_yReXbg
+ test-linux32-devedition/opt-reftest-no-accel-e10s-6: W4-rWeb1TYibMJs91pOUhA
+ test-linux32-devedition/opt-reftest-no-accel-e10s-7: E7fZUv6IT7qFdgFLvLh72g
+ test-linux32-devedition/opt-reftest-no-accel-e10s-8: L7YVjWpSSUONMFNJOhCswg
+ test-linux32-devedition/opt-web-platform-tests-e10s-1: QD4qxY7JT3OHTu1CzC7eig
+ test-linux32-devedition/opt-web-platform-tests-e10s-10: caFiKNizT8eZNeRdDvj9HA
+ test-linux32-devedition/opt-web-platform-tests-e10s-11: P9ESdajVRHmOkJjHbEyvPg
+ test-linux32-devedition/opt-web-platform-tests-e10s-12: WjrGNcJ7SuWx7ziX32yxjQ
+ test-linux32-devedition/opt-web-platform-tests-e10s-2: H3UIbDi9Q_-L0ykO82rMVw
+ test-linux32-devedition/opt-web-platform-tests-e10s-3: W-RLq7coQF-myUW2ziHM-w
+ test-linux32-devedition/opt-web-platform-tests-e10s-4: DpRg4auwSnWR05SCdnni3Q
+ test-linux32-devedition/opt-web-platform-tests-e10s-5: Kii5FpMfRriKUqm-kalQhQ
+ test-linux32-devedition/opt-web-platform-tests-e10s-6: Ie_yzwNfT8SXIiSnf8zTgg
+ test-linux32-devedition/opt-web-platform-tests-e10s-7: bOAmOOelQ5i1LAZid-HIPQ
+ test-linux32-devedition/opt-web-platform-tests-e10s-8: W1lcMObGRlyIPQCt-irsiQ
+ test-linux32-devedition/opt-web-platform-tests-e10s-9: Kqd0ztT8QQiSl-RvBc3hSw
+ test-linux32-devedition/opt-web-platform-tests-reftests-e10s-1: B_iK45U1R4edEthj6XTPsw
+ test-linux32-devedition/opt-web-platform-tests-reftests-e10s-2: SLv4Ji90QUCgoTvqlgdKWw
+ test-linux32-devedition/opt-web-platform-tests-reftests-e10s-3: StDTmQiISgGx_J4zRv83uA
+ test-linux32-devedition/opt-web-platform-tests-reftests-e10s-4: e0UA4lCoS_WQv-9B0WySWg
+ test-linux32-devedition/opt-web-platform-tests-reftests-e10s-5: Cr1I57xxQ9W6UhP7G3XM1w
+ test-linux32-devedition/opt-web-platform-tests-reftests-e10s-6: XqBrHaQjSnOX-c7WFNJJJg
+ test-linux32-devedition/opt-web-platform-tests-wdspec-e10s: L8s_LXdOR_a9nN4jeOp_PQ
+ test-linux32-devedition/opt-xpcshell-1: HxBDANLlQ5iyOFUJ73d2gA
+ test-linux32-devedition/opt-xpcshell-2: LLq3ozdvS_apCRZs96iuZg
+ test-linux32-devedition/opt-xpcshell-3: VyKtls4tTzKUgdx5cQT2Gw
+ test-linux32-devedition/opt-xpcshell-4: ZH1ztj77RyCwTyF-vKud6w
+ test-linux32-devedition/opt-xpcshell-5: T0q4pdKCR-iHFc5FKrrSmg
+ test-linux32-devedition/opt-xpcshell-6: U6oeD8oiQ4GbcFvyt7mvHg
+ test-linux32-devedition/opt-xpcshell-7: MIhfaGbCTS2EtoDDcxTiYg
+ test-linux32-devedition/opt-xpcshell-8: Tr0d73CYSLaBYkEpEBpFIQ
+ test-linux32-nightly/opt-cppunit: PPYEQP_GTjqdGFAdjlKj5Q
+ test-linux32-nightly/opt-crashtest-e10s: Om_Y7m8RSZWUCc9Si2p_Ow
+ test-linux32-nightly/opt-firefox-ui-functional-local-e10s: TX-lr7MnRAi10Jg9KlMV1A
+ test-linux32-nightly/opt-firefox-ui-functional-remote-e10s: LXrvwiIwSU-LZKae0Lb8tw
+ test-linux32-nightly/opt-gtest: JukTBPnoSrSJNFqWUOvagw
+ test-linux32-nightly/opt-marionette-e10s: HGb4Y4uzRGC3-3TRI9xMMw
+ test-linux32-nightly/opt-mochitest-a11y: DzjXwxHLSCyjSZW1k_Ji-A
+ test-linux32-nightly/opt-mochitest-browser-chrome-e10s-1: Vn4MAt4GQTC9ksQtx-l6VA
+ test-linux32-nightly/opt-mochitest-browser-chrome-e10s-2: P8xjtpHbTNaS-dcpya1WXA
+ test-linux32-nightly/opt-mochitest-browser-chrome-e10s-3: W5JYHUgyQ7G9hYIH8y_r8Q
+ test-linux32-nightly/opt-mochitest-browser-chrome-e10s-4: fed-G_IoTeGfb0aK5PKHSw
+ test-linux32-nightly/opt-mochitest-browser-chrome-e10s-5: TPeYJWLQSnyYNF-Ar4mrpg
+ test-linux32-nightly/opt-mochitest-browser-chrome-e10s-6: I-6-fkX0TqypKwR7ZF72sw
+ test-linux32-nightly/opt-mochitest-browser-chrome-e10s-7: ETNum2VcQlmbxuzEdqoXdg
+ test-linux32-nightly/opt-mochitest-chrome-1: RI5Qc5deTAyfhXB34kFovQ
+ test-linux32-nightly/opt-mochitest-chrome-2: DObIRcEkR-SQOv_0IuegsQ
+ test-linux32-nightly/opt-mochitest-chrome-3: E08Q0JVHREOWLrb3PIRaBQ
+ test-linux32-nightly/opt-mochitest-clipboard-e10s: LVqarKFsSdOsqTWPDIdgrA
+ test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-1: M4sg_0ePQxy3r3LIKG-twg
+ test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-2: IBvvodG5SYCD_JABS3C7TA
+ test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-3: Mma-zNoYSO2Rj1IPaDhZFQ
+ test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-4: MGHKUkjWT_-TrDhpUv82wQ
+ test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-5: CnspVVyTT6CUSBWX7xNkJw
+ test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-6: PfIKFcpaTXaTFc8K9YQlwQ
+ test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-7: BEHqqb4BSZutqvSeHs_18g
+ test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-8: P0M4cIehS7C4o1P-pC6SIA
+ test-linux32-nightly/opt-mochitest-e10s-1: SNEWfW3qQb2P77Um1CCCAQ
+ test-linux32-nightly/opt-mochitest-e10s-2: Dk6kSwqyQrqKLkZZcQDnNw
+ test-linux32-nightly/opt-mochitest-e10s-3: df63Sxm3Rna7cYGgigcWkA
+ test-linux32-nightly/opt-mochitest-e10s-4: crFp7gOATo-UxtQGTs-urg
+ test-linux32-nightly/opt-mochitest-e10s-5: Jz_kLW_wSoyFgOyVDArzcw
+ test-linux32-nightly/opt-mochitest-gpu-e10s: apppS9fNTVKeOcu1y8JOBw
+ test-linux32-nightly/opt-mochitest-media-e10s-1: Db6LilkZTNqq89gsA0bRpA
+ test-linux32-nightly/opt-mochitest-media-e10s-2: XpCkuk3FTxqNebLWQxTftQ
+ test-linux32-nightly/opt-mochitest-media-e10s-3: OV0OnxnUQ12_cM1VJyQlKQ
+ test-linux32-nightly/opt-mochitest-webgl1-core-e10s: O4tPc1rBRFSOPmi5x3Hm8Q
+ test-linux32-nightly/opt-reftest-e10s-1: Ts5wkkfoQnm4v-z5kYBy3g
+ test-linux32-nightly/opt-reftest-e10s-2: LTrolNj2RO264GNe3I97oQ
+ test-linux32-nightly/opt-reftest-e10s-3: KIJdfqqHROemmCkdPxrBJw
+ test-linux32-nightly/opt-reftest-e10s-4: HEF6L0beRu6Rdj-_7LRGMw
+ test-linux32-nightly/opt-reftest-e10s-5: dP3sPG5sRcyO5koXpbo_4A
+ test-linux32-nightly/opt-reftest-e10s-6: Lcp8qmZaSi-ziCtBMD4zyQ
+ test-linux32-nightly/opt-reftest-e10s-7: LEH7D21TTImzaKcdq5kYCA
+ test-linux32-nightly/opt-reftest-e10s-8: GGDrh3u8QrmMPbwfv04KgA
+ test-linux32-nightly/opt-reftest-no-accel-e10s-1: DAhqB4SCQ2y0PmYGuM8A4w
+ test-linux32-nightly/opt-reftest-no-accel-e10s-2: abpHeo36TRmMougGwEJLdw
+ test-linux32-nightly/opt-reftest-no-accel-e10s-3: LbcCpNATRkmT_A18ysjwbg
+ test-linux32-nightly/opt-reftest-no-accel-e10s-4: Zf3uxBgkRzuKUajodsdFWw
+ test-linux32-nightly/opt-reftest-no-accel-e10s-5: eUwg4ySyQHy9xmD-u63hNw
+ test-linux32-nightly/opt-reftest-no-accel-e10s-6: AmX3tHgKSIGEU9bR3kJQ2w
+ test-linux32-nightly/opt-reftest-no-accel-e10s-7: T6wNztvYS5WfHjdswmf__Q
+ test-linux32-nightly/opt-reftest-no-accel-e10s-8: MUayms7FRh6CjSVcp3FW-A
+ test-linux32-nightly/opt-web-platform-tests-e10s-1: eRC9J1oNSQSGa0jTIB0nLQ
+ test-linux32-nightly/opt-web-platform-tests-e10s-10: WQxQIasbT7OmhK-9JHgBFA
+ test-linux32-nightly/opt-web-platform-tests-e10s-11: P4WJkiBZSHyji2aK9kKE3A
+ test-linux32-nightly/opt-web-platform-tests-e10s-12: VKDR4nUFSeCuNJ_SburCbg
+ test-linux32-nightly/opt-web-platform-tests-e10s-2: RQXxOfRPTOaUMxh2At9O5Q
+ test-linux32-nightly/opt-web-platform-tests-e10s-3: XXN8UGf1RSCs2SmTpke7jQ
+ test-linux32-nightly/opt-web-platform-tests-e10s-4: MijSfbGNSjygPlyNvDQ7jQ
+ test-linux32-nightly/opt-web-platform-tests-e10s-5: bRQhBEcASKKlLc5ktOxjIw
+ test-linux32-nightly/opt-web-platform-tests-e10s-6: H2LKl26xQBGk22u2nJmZyA
+ test-linux32-nightly/opt-web-platform-tests-e10s-7: D2AtE-7BRM6nkozpUpBmGQ
+ test-linux32-nightly/opt-web-platform-tests-e10s-8: aIXXkjNoQEGqluBOfVfHDg
+ test-linux32-nightly/opt-web-platform-tests-e10s-9: RLjdhK-qSVi8JhLOgBcI6Q
+ test-linux32-nightly/opt-web-platform-tests-reftests-e10s-1: cDTB_RPIQH2BI-1A1LtrDA
+ test-linux32-nightly/opt-web-platform-tests-reftests-e10s-2: KI9FS1rZRwSW_jix4oIk2w
+ test-linux32-nightly/opt-web-platform-tests-reftests-e10s-3: FnsPx5WCSxKWrdqAn6P_Og
+ test-linux32-nightly/opt-web-platform-tests-reftests-e10s-4: U04lHLLtR3aO1wM1kpEQVg
+ test-linux32-nightly/opt-web-platform-tests-reftests-e10s-5: KrnFTvukQcSSjUVdP4MTWw
+ test-linux32-nightly/opt-web-platform-tests-reftests-e10s-6: LkrzioEkSGe0ZlkkN7EYmA
+ test-linux32-nightly/opt-web-platform-tests-wdspec-e10s: Z6et_4CzRq-ZUO5AKqPoXQ
+ test-linux32-nightly/opt-xpcshell-1: SmV8Z0RYS6OJDyjTc87qhA
+ test-linux32-nightly/opt-xpcshell-2: UGIucizpRoq34qrR_7lDhg
+ test-linux32-nightly/opt-xpcshell-3: DYjlV-iETi2BqmDrzGyYgQ
+ test-linux32-nightly/opt-xpcshell-4: e69SjRl_T7e0Opm-dRnUyw
+ test-linux32-nightly/opt-xpcshell-5: EuzXV2-xS8eOz8H8J60nTw
+ test-linux32-nightly/opt-xpcshell-6: TpSS4GOjStmEYAchmYhGzA
+ test-linux32-nightly/opt-xpcshell-7: XEPWUpuLRtm_PD0nuharhQ
+ test-linux32-nightly/opt-xpcshell-8: UduDPE6LQoSxJPrFbh34Bg
+ test-linux32/debug-cppunit: OLHk3GAUTC2h5-racGOOJw
+ test-linux32/debug-crashtest: Dn6ldoWGTEyG4UBG2BqGig
+ test-linux32/debug-crashtest-e10s: fnhPQ7gxT-WfY3Aq3m_5jA
+ test-linux32/debug-firefox-ui-functional-local-e10s: YclvI4EpQMu4dpYV1Zjo2A
+ test-linux32/debug-firefox-ui-functional-remote-e10s: RZFTRYG_Qvi9mUbUo44G6Q
+ test-linux32/debug-gtest: CCyyLcQxRZisBuhh_iXRYQ
+ test-linux32/debug-marionette-e10s: IrgjKlyNRgGhrgRJh9a_-Q
+ test-linux32/debug-mochitest-1: KhIaxmxxSIihCWQOz37rPQ
+ test-linux32/debug-mochitest-10: EslHuVBdR8qIQ06Ju96agg
+ test-linux32/debug-mochitest-11: BeF-2svjSGKg0X-H1bGteg
+ test-linux32/debug-mochitest-12: ZCuxOeYFRiqV-n-6n35f4g
+ test-linux32/debug-mochitest-13: S53REvSDQlusx5eTKGwwdw
+ test-linux32/debug-mochitest-14: BlgZhRhGTC2u5rIKifCdnQ
+ test-linux32/debug-mochitest-15: EGm08UUoTMumMCPOInk0_A
+ test-linux32/debug-mochitest-16: EKfcPabSRNOH34V1CpCO3g
+ test-linux32/debug-mochitest-2: ObQUr1TWTiCUO_X_ONXKEg
+ test-linux32/debug-mochitest-3: JDBKvrYCTLOmYfCGflqbdA
+ test-linux32/debug-mochitest-4: VL6AK40ERse_QmQYGZ9bQQ
+ test-linux32/debug-mochitest-5: Y8e5uZ9QRsiqwI5KrqQ1aQ
+ test-linux32/debug-mochitest-6: FYQuk0IZR1S_FnWOv0ZY9A
+ test-linux32/debug-mochitest-7: ddBn-QJiQV2rlBwB2Y7wug
+ test-linux32/debug-mochitest-8: Xbp_gABmTv6pM3sT8Hf5rw
+ test-linux32/debug-mochitest-9: Td7nyZUkRlad9EwHHsYaVw
+ test-linux32/debug-mochitest-a11y: YDB6nybdQjOt2ZcofSrl7A
+ test-linux32/debug-mochitest-browser-chrome-e10s-1: VCkMNtDVTXm46ThwZDv4uA
+ test-linux32/debug-mochitest-browser-chrome-e10s-10: Ht8KOsWrQ9ixqMF8q1ueQQ
+ test-linux32/debug-mochitest-browser-chrome-e10s-11: I_gd95f1Q6m2oU3WxzbkCw
+ test-linux32/debug-mochitest-browser-chrome-e10s-12: bEz7sUBfS9qWQBpDDg-Wcw
+ test-linux32/debug-mochitest-browser-chrome-e10s-13: bNDh7t-VSIqvf8pLPzItWw
+ test-linux32/debug-mochitest-browser-chrome-e10s-14: WkJ0AK7qQReULMAqoFlmKQ
+ test-linux32/debug-mochitest-browser-chrome-e10s-15: AiXY3mI3T_6edRtxZIu71w
+ test-linux32/debug-mochitest-browser-chrome-e10s-16: Z2kvdN-KSfKkKRmzY0r_gg
+ test-linux32/debug-mochitest-browser-chrome-e10s-2: SukZJ2rnQ0W5vdqLK3a08g
+ test-linux32/debug-mochitest-browser-chrome-e10s-3: EGNm3AiQTP6df7rXOQhbdg
+ test-linux32/debug-mochitest-browser-chrome-e10s-4: YRqegZyeTfudcpzBEiGypA
+ test-linux32/debug-mochitest-browser-chrome-e10s-5: Y0oxOn9AQpqSwopHuocc7A
+ test-linux32/debug-mochitest-browser-chrome-e10s-6: Pr-VOROcRL6uO_uslc0t_w
+ test-linux32/debug-mochitest-browser-chrome-e10s-7: DwzJhDoRSve2PAH5qWsmHA
+ test-linux32/debug-mochitest-browser-chrome-e10s-8: cy3ufCR0TZep6Dzf7UdKVg
+ test-linux32/debug-mochitest-browser-chrome-e10s-9: T68yzrGtSy-uq5eXmbj5zg
+ test-linux32/debug-mochitest-chrome-1: d76Y5GF8SlGFPUICmiMNlQ
+ test-linux32/debug-mochitest-chrome-2: Q96WpnV2QyKwkQ0j_19dNA
+ test-linux32/debug-mochitest-chrome-3: VpQcUCZfQRuKK8bK2X0fbA
+ test-linux32/debug-mochitest-clipboard: dcI-4o95RJGw5wJhp1Zn6g
+ test-linux32/debug-mochitest-clipboard-e10s: BmRrkczrSia24-gdMu76fg
+ test-linux32/debug-mochitest-e10s-1: HjMXe2hlTeupGIiC0cJjQw
+ test-linux32/debug-mochitest-e10s-10: KLMG5vJjQ5eS3UEUH_R_Jg
+ test-linux32/debug-mochitest-e10s-11: Xdb2OCmaSlGKuRp1KhJ2Bw
+ test-linux32/debug-mochitest-e10s-12: YZ0uaQoiRi6rKUXw1grWuw
+ test-linux32/debug-mochitest-e10s-13: dm46hAU_R92n7X_v1FaBvA
+ test-linux32/debug-mochitest-e10s-14: UPwStxKeQbWhAG64X5Mg0A
+ test-linux32/debug-mochitest-e10s-15: eQYrwtTmRw29xxremSP_uQ
+ test-linux32/debug-mochitest-e10s-16: DqgL-wI9RUS0qccAFeCe1g
+ test-linux32/debug-mochitest-e10s-2: OTLUVRlLQ3qm56la1LXB5A
+ test-linux32/debug-mochitest-e10s-3: L_YOr8M6TvW-DZwUBTp2-Q
+ test-linux32/debug-mochitest-e10s-4: eF18rMLcRsGWfJfsNLcyJg
+ test-linux32/debug-mochitest-e10s-5: dliHVW9NSPaRDcvFZIJjjA
+ test-linux32/debug-mochitest-e10s-6: UYWaHz22RNCJbR8swesMJg
+ test-linux32/debug-mochitest-e10s-7: PzOxi8X4R2aEKFWMI9m9-g
+ test-linux32/debug-mochitest-e10s-8: cvcyN2lkSYOY7qpGylplGw
+ test-linux32/debug-mochitest-e10s-9: D3cZrYsKRuKkteZchkgwsg
+ test-linux32/debug-mochitest-gpu: R1xuGApaTmONarvsERGn5g
+ test-linux32/debug-mochitest-gpu-e10s: NPpva8CuSKKufLw3yB7pmg
+ test-linux32/debug-mochitest-media-e10s-1: Gj6OVTzBR2-54bsVtPBKbA
+ test-linux32/debug-mochitest-media-e10s-2: APXKeP8CSYyg7FeEYHsqGg
+ test-linux32/debug-mochitest-media-e10s-3: YNO1DkogSf2e1sWYB1oFAQ
+ test-linux32/debug-mochitest-webgl1-core: aULT36fYShCGxlfgdoFGAA
+ test-linux32/debug-mochitest-webgl1-core-e10s: RdxSzRabRlWmEWlPRr_icg
+ test-linux32/debug-reftest-1: e6Qr16ApSvWzOZn58tzJnQ
+ test-linux32/debug-reftest-2: eTeDlJKZQtqq2xSwlXcVlQ
+ test-linux32/debug-reftest-3: Osrs6Xa4T8aXi5vrYXS4yA
+ test-linux32/debug-reftest-4: ZRLCQf0cQmuJM5BtbVbT9A
+ test-linux32/debug-reftest-5: aCcmdsctRiGKuRkFhrkq3w
+ test-linux32/debug-reftest-6: XIggZ48aSTS4pmd_2ZUAGg
+ test-linux32/debug-reftest-7: OP2D9VrkR_ONTLrvkjlkCQ
+ test-linux32/debug-reftest-8: G40VWcsmSgy_KqaF3vuwCA
+ test-linux32/debug-reftest-e10s-1: KD9VDLPATpS1zCY1twJ3Ag
+ test-linux32/debug-reftest-e10s-2: FeZ_rmZSRmiwj3BLFqxArQ
+ test-linux32/debug-reftest-e10s-3: fp62BNSLR3-JqBYe2c21nA
+ test-linux32/debug-reftest-e10s-4: GZNYplqlQRO5Am9s_fM6YQ
+ test-linux32/debug-reftest-e10s-5: dCTk9lxtTyaceO1f3VbQgQ
+ test-linux32/debug-reftest-e10s-6: C6xd7S6HRGCp-8fw352U4Q
+ test-linux32/debug-reftest-e10s-7: b3g926OLSdKOS65erDpfXg
+ test-linux32/debug-reftest-e10s-8: L4Sg8dinSmev3VEl1j6ZqA
+ test-linux32/debug-reftest-no-accel-e10s-1: VjFF6TVYSFeGcoIN8fNWkw
+ test-linux32/debug-reftest-no-accel-e10s-2: ak9fVlpxTxS-3PvrOIGznA
+ test-linux32/debug-reftest-no-accel-e10s-3: YXK1i7H6Qd2jfq0jc-k-Rw
+ test-linux32/debug-reftest-no-accel-e10s-4: F59NX2p-Q-aJKE-zOa7j7g
+ test-linux32/debug-reftest-no-accel-e10s-5: aQoCO4k3TDCnCF-Nu92eAg
+ test-linux32/debug-reftest-no-accel-e10s-6: eo-sEirXTbqpgiJEzr3x3w
+ test-linux32/debug-reftest-no-accel-e10s-7: f657XHw9SJKtMbiVIjg0RA
+ test-linux32/debug-reftest-no-accel-e10s-8: IpNjp3waTzmjXF4Zw3oT5w
+ test-linux32/debug-web-platform-tests-1: eGilAUheSBeiKBa3XkMXqw
+ test-linux32/debug-web-platform-tests-10: eX-y6-K_Sh-dHy5lfxeaLQ
+ test-linux32/debug-web-platform-tests-11: OvuxHl-gQ5mJiu-WSl8Maw
+ test-linux32/debug-web-platform-tests-12: Vnk2Liw6SleQ_u9TiVfpRw
+ test-linux32/debug-web-platform-tests-13: Px1cebmKRki9c8j1kYPp2Q
+ test-linux32/debug-web-platform-tests-14: Q5iFFv6VT3mrTmQI--1tEg
+ test-linux32/debug-web-platform-tests-15: OTFAjys5TDuG6u-LmaXk1A
+ test-linux32/debug-web-platform-tests-16: WwgOq0qyTbGUIH5Vh6RNbQ
+ test-linux32/debug-web-platform-tests-17: GGSjYSBBQHGNemdMMM0qag
+ test-linux32/debug-web-platform-tests-18: FuQTRGSdT4uSd8rVKDKuWg
+ test-linux32/debug-web-platform-tests-2: T0WvG37oTzO_MsWDQIGakg
+ test-linux32/debug-web-platform-tests-3: Z72CFXpoRnqFmZ3eOrKqRQ
+ test-linux32/debug-web-platform-tests-4: TB5sEQ_iRnWPbOy28aR18Q
+ test-linux32/debug-web-platform-tests-5: TxVoIUzsRjCR8v1wMTGP-g
+ test-linux32/debug-web-platform-tests-6: KAedvH8lT9OF0NU26z8DLA
+ test-linux32/debug-web-platform-tests-7: GsKIIlJuQYqAkER2iz2RtQ
+ test-linux32/debug-web-platform-tests-8: Iv4hnMqHQuqoehQZguyssg
+ test-linux32/debug-web-platform-tests-9: RCJjL4C3T-GgC_Qx6nmUyw
+ test-linux32/debug-web-platform-tests-e10s-1: DDmY5SZDQMq75XENjoQu4Q
+ test-linux32/debug-web-platform-tests-e10s-10: IszBPSNgRw6TEcz6_RbgBA
+ test-linux32/debug-web-platform-tests-e10s-11: D15a8fAcRJ6_qGa4JCnKtg
+ test-linux32/debug-web-platform-tests-e10s-12: TQvyx-YaSme6VEnLse-VQw
+ test-linux32/debug-web-platform-tests-e10s-13: IriGxjSXTISzVtVJR6cQ3A
+ test-linux32/debug-web-platform-tests-e10s-14: WCJLM1QIQS6-9c_yi5PaRg
+ test-linux32/debug-web-platform-tests-e10s-15: CBkKwkBcTQita5Wvj12Aog
+ test-linux32/debug-web-platform-tests-e10s-16: Ilmd94l8QPuH1thfId94mw
+ test-linux32/debug-web-platform-tests-e10s-17: AHwBwBvoTmyMHAaRvC21SQ
+ test-linux32/debug-web-platform-tests-e10s-18: KxYD1UdhRCKEISsnVD-aaA
+ test-linux32/debug-web-platform-tests-e10s-2: Q-Ogz37KQWKtSavBrNgjUw
+ test-linux32/debug-web-platform-tests-e10s-3: e-1Hxx9eS12NBBAJ9f5OeA
+ test-linux32/debug-web-platform-tests-e10s-4: QjDGCJ_HSwq0cIyxeqiRuQ
+ test-linux32/debug-web-platform-tests-e10s-5: J9r2oJHNSlSS_qTFkYBrZw
+ test-linux32/debug-web-platform-tests-e10s-6: IUxO6-4uTOic0iyaz2jlrw
+ test-linux32/debug-web-platform-tests-e10s-7: AZviKb77RFu1s-ieP5tbWw
+ test-linux32/debug-web-platform-tests-e10s-8: TsECj-DNQTurMXs6CNfViA
+ test-linux32/debug-web-platform-tests-e10s-9: DQnQ_pdqSZmU7tS-4MAQog
+ test-linux32/debug-web-platform-tests-reftests-1: I0jyrWg9RzCqPldc_-ClQA
+ test-linux32/debug-web-platform-tests-reftests-2: QUiepn5uSoy2wms3IHmBTA
+ test-linux32/debug-web-platform-tests-reftests-3: dghY6AL3Rxy8UrRN7_pBbw
+ test-linux32/debug-web-platform-tests-reftests-4: aPlXWXcWQL6K3MLoPyyR4w
+ test-linux32/debug-web-platform-tests-reftests-5: SEXuBd1pStuaHp1uw5RK0w
+ test-linux32/debug-web-platform-tests-reftests-6: WB9e6EXlTOKQXBrXlW5BoQ
+ test-linux32/debug-web-platform-tests-reftests-e10s-1: ZOcale_1R7a_x2K23g31Vw
+ test-linux32/debug-web-platform-tests-reftests-e10s-2: Yk2pggQjSyiswWBMaHxPiQ
+ test-linux32/debug-web-platform-tests-reftests-e10s-3: K3YNrVxaTjWlKVgRaRCfLQ
+ test-linux32/debug-web-platform-tests-reftests-e10s-4: M8AnSaY0ToyJvVClYvyTPA
+ test-linux32/debug-web-platform-tests-reftests-e10s-5: YDMMfixBQCKFVp4xAxsQ9A
+ test-linux32/debug-web-platform-tests-reftests-e10s-6: ZXydNs6tTIuUFSJ8NSuRiw
+ test-linux32/debug-web-platform-tests-wdspec-e10s: KeoGsDXXRI2MlbEUrk0HKw
+ test-linux32/debug-xpcshell-1: DropJjywROKl1EnwUKpvZw
+ test-linux32/debug-xpcshell-10: OWit4m86Rieeun_9J_Z6_A
+ test-linux32/debug-xpcshell-11: K6sbcpORSTWJLMFvhkLG-w
+ test-linux32/debug-xpcshell-12: SuTPv7CfTbOhPHxSdiFD7g
+ test-linux32/debug-xpcshell-2: PIq_9SB3SUarLEjX7Nju7Q
+ test-linux32/debug-xpcshell-3: KVZ6kE-FQMSaSyeRKeHgXg
+ test-linux32/debug-xpcshell-4: Qun9hsT1TYyUTJydO9XuDg
+ test-linux32/debug-xpcshell-5: e5ICZEaKQZySLNbunjb2lA
+ test-linux32/debug-xpcshell-6: KTKPjq3nTiasQti_3Hi7ag
+ test-linux32/debug-xpcshell-7: YFuJr9UQQ9ae_FvoZtbEPA
+ test-linux32/debug-xpcshell-8: LYBkafx-THWcT-O7zmjDRA
+ test-linux32/debug-xpcshell-9: Fre3PYxIQjqRiwhfWHXx2Q
+ test-linux64-asan/opt-cppunit: aAcpV4iZTtuYwWdcOesW9w
+ test-linux64-asan/opt-crashtest-e10s: dD7tMnRJQg27zpT2y2nwEQ
+ test-linux64-asan/opt-firefox-ui-functional-local-e10s: DMkDPcMpRhiDx7FddbNKrg
+ test-linux64-asan/opt-firefox-ui-functional-remote-e10s: djGcA7ZXQ72Oolbtivik7Q
+ test-linux64-asan/opt-gtest: Om4JwJm8RpiycwIWUItMoA
+ test-linux64-asan/opt-marionette-e10s: DL1pKx-BTs6lmX1w7Z3OOg
+ test-linux64-asan/opt-marionette-headless-e10s: XeTRPbSQQ-eu1mfFAAOXqw
+ test-linux64-asan/opt-mochitest-a11y: TH3iGsCFQS-S_heQ4eZVoA
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-1: V8J4TK0ZQaqGfZ-00AtVTg
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-10: dNwgG-jPQHuo1fgCnCx9Nw
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-11: F1NHPCQaQqGP_f4bHscMYQ
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-12: PKgy6vibQeidPDp97MdtkA
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-13: LsM9ZDngSye22udXSurIpA
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-14: TLRf5VmARvaWT7k4NndAqQ
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-15: SiEr9B_eRSuFx3PA6edCwg
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-16: OuOe9_ACTJWesEAlknUOaA
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-2: b6KcipG4TQ-fdXasthcpoQ
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-3: SedD8Mv3Tt6b_LP8EmDa_A
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-4: AIY8xqU7TuaPXnXndUzgCQ
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-5: GPLu8tdxSbi_mCaLTJfCTQ
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-6: FmxiU2EnQ-aLP0NCgQ5_8Q
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-7: ew-B5wQOTnSGglykyOWYfw
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-8: YSsf3dWUQliAzGH_IaQZsw
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-9: HBT68uolR0-pOywpNVbeGQ
+ test-linux64-asan/opt-mochitest-chrome-1: LfuIWnQDSKGanb--MFa-jA
+ test-linux64-asan/opt-mochitest-chrome-2: QDqUVT5zRj6NaE4DdBIogw
+ test-linux64-asan/opt-mochitest-chrome-3: FPCMVLIjQ1K3q7xEjrNzlw
+ test-linux64-asan/opt-mochitest-clipboard-e10s: ecyh-iVpS42O8NYcC9QUSg
+ test-linux64-asan/opt-mochitest-devtools-chrome-e10s-1: KdkAMvfgSr-EW_uUfpomUQ
+ test-linux64-asan/opt-mochitest-devtools-chrome-e10s-2: JnWFVVQaRZSO17HfB96jXQ
+ test-linux64-asan/opt-mochitest-devtools-chrome-e10s-3: YOhxF82lTWiEX-Fi9SIX8w
+ test-linux64-asan/opt-mochitest-devtools-chrome-e10s-4: YSw-rDY4Q0KM5KGXTh_MFA
+ test-linux64-asan/opt-mochitest-devtools-chrome-e10s-5: PZpHhMfKQYyM-V5IggtwDg
+ test-linux64-asan/opt-mochitest-devtools-chrome-e10s-6: PxvW_b9DRlKdkBeDZ6mH7g
+ test-linux64-asan/opt-mochitest-devtools-chrome-e10s-7: b_AqXTDsTY2ppYzmDoHgbw
+ test-linux64-asan/opt-mochitest-devtools-chrome-e10s-8: H0gIxPD9RI6k_G2yL1TsMw
+ test-linux64-asan/opt-mochitest-e10s-1: cLKNkGfOQ4iebczTcUNVeQ
+ test-linux64-asan/opt-mochitest-e10s-10: My1C2HZYRXOwH3LtajnMZQ
+ test-linux64-asan/opt-mochitest-e10s-2: d_vxROhlT6WaY-4kuQ8GNA
+ test-linux64-asan/opt-mochitest-e10s-3: axIvuFstQ6ytPSRbRmS4fQ
+ test-linux64-asan/opt-mochitest-e10s-4: FgMtJP5FR5KyNVaZCF_HFA
+ test-linux64-asan/opt-mochitest-e10s-5: DyGGbdN-Qh2BTch0mMAf-g
+ test-linux64-asan/opt-mochitest-e10s-6: QBwyAwGVRNidmQAu22TA4g
+ test-linux64-asan/opt-mochitest-e10s-7: BEPa_302RmK5vvS62VOLrw
+ test-linux64-asan/opt-mochitest-e10s-8: G29NpvqoQQGSbHSkjs3HYw
+ test-linux64-asan/opt-mochitest-e10s-9: DHsDPpv6SN6Mwp9jZ6pBBw
+ test-linux64-asan/opt-mochitest-gpu-e10s: CU0CsfaxT7arvzzXTqBa9w
+ test-linux64-asan/opt-mochitest-media-e10s-1: e5JJlV-VSXSERLviLF70hA
+ test-linux64-asan/opt-mochitest-media-e10s-2: QYs1ivl_QWGesGO_TyBZyg
+ test-linux64-asan/opt-mochitest-media-e10s-3: UtdNnYOlTDaWR_NYIsQVZQ
+ test-linux64-asan/opt-mochitest-webgl1-core-e10s: HkPrHO2HQ9GAP6XRkpkAPQ
+ test-linux64-asan/opt-mochitest-webgl1-ext-e10s: IOBAOF4GSnmsklVIhAT_VQ
+ test-linux64-asan/opt-reftest-e10s-1: Ih7_O2f5Rze7WzxhAU7yIw
+ test-linux64-asan/opt-reftest-e10s-2: LhIrSa1ZSWuMqoaHSj06IA
+ test-linux64-asan/opt-reftest-e10s-3: TYT1vtRmQKiatixvnouNCg
+ test-linux64-asan/opt-reftest-e10s-4: XjL03xMQR1Gz9Svs4750-w
+ test-linux64-asan/opt-reftest-e10s-5: MQRFNMk5Rtau_6c2zEKcJg
+ test-linux64-asan/opt-reftest-e10s-6: Jw7c7mAuQSWnFklPEP5MhQ
+ test-linux64-asan/opt-reftest-e10s-7: SMBrUtaSQ66tc7rzXgjuFw
+ test-linux64-asan/opt-reftest-e10s-8: fn7sxlCiQ4aJuTaqM0gEAQ
+ test-linux64-asan/opt-reftest-no-accel-e10s-1: bbPUTmO-QT2-7mYoFyAcOg
+ test-linux64-asan/opt-reftest-no-accel-e10s-2: LGVe1WM6SsO0xmpFNHAEnA
+ test-linux64-asan/opt-reftest-no-accel-e10s-3: bPPwnCK0Q5O583QNIgOOsQ
+ test-linux64-asan/opt-reftest-no-accel-e10s-4: XdXlnGpzTDulEFmObD8oCg
+ test-linux64-asan/opt-reftest-no-accel-e10s-5: aK6g4etMTqeZXwvMK3vgOA
+ test-linux64-asan/opt-reftest-no-accel-e10s-6: c1CUF8G0Sx-NIBot_fcr-g
+ test-linux64-asan/opt-reftest-no-accel-e10s-7: AC9MWe3CSmiIywLyhv-2Cw
+ test-linux64-asan/opt-reftest-no-accel-e10s-8: YjCEqabIRK2MxRwYrAi9IQ
+ test-linux64-asan/opt-telemetry-tests-client-e10s: AleNPXuETn-CG8HBE09nxw
+ test-linux64-asan/opt-web-platform-tests-e10s-1: ImyA-70MSJyL6caHkRQkkw
+ test-linux64-asan/opt-web-platform-tests-e10s-10: Gl_L4ZaiTUW5a7oBq-Nlzg
+ test-linux64-asan/opt-web-platform-tests-e10s-11: QETh5-t0T7Oxsk99xsVtXw
+ test-linux64-asan/opt-web-platform-tests-e10s-12: fn6E9rFrSv-T8qz3uNrIMw
+ test-linux64-asan/opt-web-platform-tests-e10s-2: ZzHbZfo6SPqskJx7eA0n1A
+ test-linux64-asan/opt-web-platform-tests-e10s-3: LZUqKFBoR6WK3Od_0z924A
+ test-linux64-asan/opt-web-platform-tests-e10s-4: YMhQyd51SpWMzlH-wCAGfQ
+ test-linux64-asan/opt-web-platform-tests-e10s-5: DuLygXDNT_WT-S2sh7Qijg
+ test-linux64-asan/opt-web-platform-tests-e10s-6: Wyoin6VxQLGKngtIkl_Shg
+ test-linux64-asan/opt-web-platform-tests-e10s-7: dkmcbEnMQ6yjs_pVuqlsjw
+ test-linux64-asan/opt-web-platform-tests-e10s-8: cRnQPSv5T4SD4iFL4WeBqg
+ test-linux64-asan/opt-web-platform-tests-e10s-9: Ebc-X-5zRWGm49ZuXgjXYw
+ test-linux64-asan/opt-web-platform-tests-reftests-e10s-1: EkpA7sb_SnOCGtFovSRYAA
+ test-linux64-asan/opt-web-platform-tests-reftests-e10s-2: THKMsmAmQ0K06Of_-9kqxw
+ test-linux64-asan/opt-web-platform-tests-reftests-e10s-3: I_CoyKApTfGbQWHymcRcow
+ test-linux64-asan/opt-web-platform-tests-reftests-e10s-4: XCcxaOivS8i30XFV_R6iKQ
+ test-linux64-asan/opt-web-platform-tests-reftests-e10s-5: UxSwRLdtTiOTzbR5wua70g
+ test-linux64-asan/opt-web-platform-tests-reftests-e10s-6: NZXTomp7TH6CoAJFyBwTQA
+ test-linux64-asan/opt-web-platform-tests-wdspec-e10s: ClXgzy9MTZCdEucG2oUhlA
+ test-linux64-asan/opt-xpcshell-1: YTsOlqYnRpyNxC5I0LiIIw
+ test-linux64-asan/opt-xpcshell-2: UIqGH5zOSsOeX-nhymXazg
+ test-linux64-asan/opt-xpcshell-3: Y_salFF1QnGPDOsmkVbsxg
+ test-linux64-asan/opt-xpcshell-4: X1h0v5RAQyeKiSHg2LfbYQ
+ test-linux64-asan/opt-xpcshell-5: btl6bJOfRsOqS-Vwac8DVw
+ test-linux64-asan/opt-xpcshell-6: IfaHB_haTPqoMACQdGqF-A
+ test-linux64-asan/opt-xpcshell-7: Z6zEBor1RQ6L0OQkGd1DoQ
+ test-linux64-asan/opt-xpcshell-8: Lt7IyA1lQqClWRGI0iDGsg
+ test-linux64-devedition/opt-cppunit: NWf3sxBxQRasRZImqM2kkw
+ test-linux64-devedition/opt-crashtest-e10s: feLvaH10Rlu5huP9o5Xbjw
+ test-linux64-devedition/opt-firefox-ui-functional-local-e10s: Y3eHI7T6Qz2i7yEGTrXTIQ
+ test-linux64-devedition/opt-firefox-ui-functional-remote-e10s: NUU7BgJUQPOdlixTCVkjTQ
+ test-linux64-devedition/opt-marionette-e10s: Ao-N-Fw4Tt2USc7TRGnbhA
+ test-linux64-devedition/opt-marionette-headless-e10s: RzZ48exOQmasYdcvY6-MQA
+ test-linux64-devedition/opt-mochitest-a11y: YEC3d0B-TqWfp6MNwAmvJQ
+ test-linux64-devedition/opt-mochitest-browser-chrome-e10s-1: AjwMDvg0RGGw59T_6M6zpw
+ test-linux64-devedition/opt-mochitest-browser-chrome-e10s-2: Hg3YmSJXRSmqFG1UiAU_1w
+ test-linux64-devedition/opt-mochitest-browser-chrome-e10s-3: I16zdVUlQ-uN8ET_QRv-Zg
+ test-linux64-devedition/opt-mochitest-browser-chrome-e10s-4: fqcbkK7FTz2kAkt35UlTrQ
+ test-linux64-devedition/opt-mochitest-browser-chrome-e10s-5: LWKFT-1CR5yp21ZH69z6lA
+ test-linux64-devedition/opt-mochitest-browser-chrome-e10s-6: Ai00MlbcQwilnldlxUugDg
+ test-linux64-devedition/opt-mochitest-browser-chrome-e10s-7: SKFEAsO8QjaBTJgoXxp51g
+ test-linux64-devedition/opt-mochitest-chrome-1: WxGJUsrJQi6ZTsAIRlMZeA
+ test-linux64-devedition/opt-mochitest-chrome-2: G1A-bavGTAGK0etUo9aJZg
+ test-linux64-devedition/opt-mochitest-chrome-3: KXo5YpILS6eOWzEgL4S8DA
+ test-linux64-devedition/opt-mochitest-clipboard-e10s: A1K3RNw3S7irHLttZzJPeA
+ test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-1: FrU9eb9bRgeqFpgJJJGmdg
+ test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-2: ZWTurwk-R6qqjDY8dCYXSg
+ test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-3: LXoxvXULTXaE4w1cw_zPuw
+ test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-4: JVkhzKuwQSKRLEUmDYm-OQ
+ test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-5: JWu3CooGRA6dJbibMTl-_g
+ test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-6: FVw1GO_ST0q-LLjEaGYydQ
+ test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-7: Uc4G436kTKa6wX5NtegAOA
+ test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-8: LAiP0yylTOi1W-JRzsVjuQ
+ test-linux64-devedition/opt-mochitest-e10s-1: MWDhWVwVTjeV_31_NvmTEw
+ test-linux64-devedition/opt-mochitest-e10s-2: K6pnD7fkSwCIJUt-1v-e4A
+ test-linux64-devedition/opt-mochitest-e10s-3: SJbPGY93Q0O8c0kvMSpMEg
+ test-linux64-devedition/opt-mochitest-e10s-4: NESFg-OaRhewQtC9rsJwag
+ test-linux64-devedition/opt-mochitest-e10s-5: Z7DUAKL5RwWFl2B3EEkXrw
+ test-linux64-devedition/opt-mochitest-gpu-e10s: buQ_ig4lRqC6JaSPvozDlw
+ test-linux64-devedition/opt-mochitest-media-e10s-1: SXENcF9aRFGEU8WWa2gfSQ
+ test-linux64-devedition/opt-mochitest-media-e10s-2: QX7tZgVFRRWdbPi4UNvg_Q
+ test-linux64-devedition/opt-mochitest-media-e10s-3: Ies5_U7eRPOF1osla7RcVg
+ test-linux64-devedition/opt-mochitest-webgl1-core-e10s: TTl5QntNSEGsbNRTrhJOsA
+ test-linux64-devedition/opt-mochitest-webgl1-ext-e10s: Lo8Qb0j7Qzu8fgzvMlD3-g
+ test-linux64-devedition/opt-reftest-e10s-1: IzYLiGq1TJKpWTYVyDMViw
+ test-linux64-devedition/opt-reftest-e10s-2: Cvz8OnO3TOelJPmA5kFjvA
+ test-linux64-devedition/opt-reftest-e10s-3: Cf49y0pNQiirLz0a2ZfZ-g
+ test-linux64-devedition/opt-reftest-e10s-4: NzJhA7bXQpmFB0tB7REZLg
+ test-linux64-devedition/opt-reftest-e10s-5: G7tlvFI8R9W65Qk1JLq2mw
+ test-linux64-devedition/opt-reftest-e10s-6: I_CSfAbTRdy06PV2g6ECqA
+ test-linux64-devedition/opt-reftest-e10s-7: YyZi7i0eSWCy1SKW569D6w
+ test-linux64-devedition/opt-reftest-e10s-8: V9r9q6GsSV-DkfWvdO4taw
+ test-linux64-devedition/opt-reftest-no-accel-e10s-1: LpHF--9RShuLnOm3bpU_DA
+ test-linux64-devedition/opt-reftest-no-accel-e10s-2: R86YKKVFTPCpJ6r0PVReuw
+ test-linux64-devedition/opt-reftest-no-accel-e10s-3: ZLBpzOHYTqi129RnpFgUTQ
+ test-linux64-devedition/opt-reftest-no-accel-e10s-4: Iux_at0bS76kJH1LMuupYQ
+ test-linux64-devedition/opt-reftest-no-accel-e10s-5: IvqZqGD1QDmY0WSqvItYJQ
+ test-linux64-devedition/opt-reftest-no-accel-e10s-6: BwHJlF4oQ6e9oNQYKu7aeA
+ test-linux64-devedition/opt-reftest-no-accel-e10s-7: DE-ckDCHQfGqd9P0a1-Chg
+ test-linux64-devedition/opt-reftest-no-accel-e10s-8: L7QBVkUcTfmn4C7o4wTJvg
+ test-linux64-devedition/opt-telemetry-tests-client-e10s: StXCVCCeTOmAw7_j4uK0_A
+ test-linux64-devedition/opt-web-platform-tests-e10s-1: QGEz0YMrQlyVdWl3k5Jr7A
+ test-linux64-devedition/opt-web-platform-tests-e10s-10: H2DfLTDzSvqiHE2m-3Pqgg
+ test-linux64-devedition/opt-web-platform-tests-e10s-11: bYGh21ImRUif6_Xzfcuhyw
+ test-linux64-devedition/opt-web-platform-tests-e10s-12: T9UsGttBSPqQ7JuEn2m49w
+ test-linux64-devedition/opt-web-platform-tests-e10s-2: aSdkxmnORZamTkPYxC3E8g
+ test-linux64-devedition/opt-web-platform-tests-e10s-3: TWDxDzWPSu-IIhQcN0MDBQ
+ test-linux64-devedition/opt-web-platform-tests-e10s-4: TGIztwZ4SDqEnqwsLHXLBA
+ test-linux64-devedition/opt-web-platform-tests-e10s-5: Ztt1hEGeTnm43iNOrK3q2A
+ test-linux64-devedition/opt-web-platform-tests-e10s-6: XQ3Q44Z5RueZfNXVaEL9dA
+ test-linux64-devedition/opt-web-platform-tests-e10s-7: I8pMSDNKTYW33m4k3UtVyw
+ test-linux64-devedition/opt-web-platform-tests-e10s-8: cLbOaHkoSUKlp2bExeNrcA
+ test-linux64-devedition/opt-web-platform-tests-e10s-9: XFLTitlIQRiyaCVYujh19Q
+ test-linux64-devedition/opt-web-platform-tests-reftests-e10s-1: ZlT-pJjSTIS-BXU8lqXPPg
+ test-linux64-devedition/opt-web-platform-tests-reftests-e10s-2: bArVlGXZQGqYOg6M4fcokQ
+ test-linux64-devedition/opt-web-platform-tests-reftests-e10s-3: BbwP26qMQS6U7S-GN8Ocgw
+ test-linux64-devedition/opt-web-platform-tests-reftests-e10s-4: ZgApl3mmS1CACds1cZyxxg
+ test-linux64-devedition/opt-web-platform-tests-reftests-e10s-5: IhfhWLV7Rj6SsnuKVYe4eA
+ test-linux64-devedition/opt-web-platform-tests-reftests-e10s-6: bZbgEtxJT228Odwbk3WDmA
+ test-linux64-devedition/opt-web-platform-tests-wdspec-e10s: E_0p5e5dRgGfBlJcYZfv4A
+ test-linux64-devedition/opt-xpcshell-1: Ej0nQ0g0QCCaUPv71VJk9w
+ test-linux64-devedition/opt-xpcshell-2: I0jhNN46S4mVrK1msK3WAw
+ test-linux64-devedition/opt-xpcshell-3: GGN5Ot0BQ2Wzf5hrcyGACA
+ test-linux64-devedition/opt-xpcshell-4: Ru7ZELnaQsCdSsbLNGkFjg
+ test-linux64-devedition/opt-xpcshell-5: FiCNmmX-SL-YE3GUX5hwtA
+ test-linux64-devedition/opt-xpcshell-6: H2Vuk4uyTU6blNzh4es80Q
+ test-linux64-devedition/opt-xpcshell-7: KpylruJPQlWbFWnWsui63w
+ test-linux64-devedition/opt-xpcshell-8: Pzu5kmodTCWPfvrvFHJ94Q
+ test-linux64-nightly/opt-awsy-base-e10s: X2lyIjSNTWCJpVXnog94LA
+ test-linux64-nightly/opt-awsy-e10s: JusiIc6dSBe3GNiq3MjaXw
+ test-linux64-nightly/opt-cppunit: BqfL3Z3ZSdGaaVKZ2w13Tg
+ test-linux64-nightly/opt-crashtest-e10s: HBadm75jQXCSSI4plw3iug
+ test-linux64-nightly/opt-firefox-ui-functional-local-e10s: baXnArzCTlK8uuVqeIxQ4g
+ test-linux64-nightly/opt-firefox-ui-functional-remote-e10s: OEbTUmS9RcubiXFRAodIvw
+ test-linux64-nightly/opt-gtest: A9NXDwIBSQm2PlpHUjrIPg
+ test-linux64-nightly/opt-marionette-e10s: OpZcYkJNRi28CY4YoKUe6w
+ test-linux64-nightly/opt-marionette-headless-e10s: JLxEWdFJTYSqne1T5Q6VXw
+ test-linux64-nightly/opt-mochitest-a11y: P3px5dvVQFmRHRVeyKnarg
+ test-linux64-nightly/opt-mochitest-browser-chrome-e10s-1: KPQgJCfmRVW-7QAxupi2Xg
+ test-linux64-nightly/opt-mochitest-browser-chrome-e10s-2: H4CkuwR1RfmURmf8YbHfLg
+ test-linux64-nightly/opt-mochitest-browser-chrome-e10s-3: P9NEkwQSSWmun_ifToYT0g
+ test-linux64-nightly/opt-mochitest-browser-chrome-e10s-4: E3xfg5BqS-GHPZoIBLkP5Q
+ test-linux64-nightly/opt-mochitest-browser-chrome-e10s-5: AEeLCp7YTp-jso9NNWb2GQ
+ test-linux64-nightly/opt-mochitest-browser-chrome-e10s-6: XWYs0oy5S5e-9NLCaY06AQ
+ test-linux64-nightly/opt-mochitest-browser-chrome-e10s-7: dw28TRLqT4W55pXvF0XTDg
+ test-linux64-nightly/opt-mochitest-chrome-1: KIh3NAp0RL6599-aG_zLEg
+ test-linux64-nightly/opt-mochitest-chrome-2: XOsXyCJ4Q7i0R_N1eUX8WA
+ test-linux64-nightly/opt-mochitest-chrome-3: aOuYrPLUSzCcaCp6APtjzQ
+ test-linux64-nightly/opt-mochitest-clipboard-e10s: Y_Q3pvuMR9qV4lGyHzorTg
+ test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-1: XeeU4q5aSMm5dxXYY116UQ
+ test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-2: JOyw4y4FTHKJWhluAW3nLA
+ test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-3: PgQjG6sxQcap-vzNgq1ZuQ
+ test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-4: bAk1SzNYS6SLW_gsJZYy4g
+ test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-5: ZJ0J5RpITY2GFv6L_lyKew
+ test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-6: aeLuc5a8RsWeppFv2GX-Xg
+ test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-7: b5MNRVadQvCsHGglBN336Q
+ test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-8: CEGyVgTgRROi6XlFCr5elg
+ test-linux64-nightly/opt-mochitest-e10s-1: QWtnM5A-Stmv0LnRjjfDFA
+ test-linux64-nightly/opt-mochitest-e10s-2: bLz5lCBBQ9-LRkmPA0d4KQ
+ test-linux64-nightly/opt-mochitest-e10s-3: fH5-GRtRSZq3i-fMsj48aw
+ test-linux64-nightly/opt-mochitest-e10s-4: BHsAWq2vTOeBVhHSb_9VCg
+ test-linux64-nightly/opt-mochitest-e10s-5: SrCN4p3HTTawxuqRwJ_W6w
+ test-linux64-nightly/opt-mochitest-gpu-e10s: Z3zMjT_DTguhyzbczyh_kw
+ test-linux64-nightly/opt-mochitest-media-e10s-1: DrF46eTrRguMQQlB86TZ3w
+ test-linux64-nightly/opt-mochitest-media-e10s-2: LCC1DHJ9RYOqRuoDlo7Pkg
+ test-linux64-nightly/opt-mochitest-media-e10s-3: dOks1GgjTaCpvt1tYYMD-Q
+ test-linux64-nightly/opt-mochitest-webgl1-core-e10s: KpHEzVtCR6OEWVKBgVsvNA
+ test-linux64-nightly/opt-mochitest-webgl1-ext-e10s: KmTSDArZS-qADjBS8ufQRw
+ test-linux64-nightly/opt-reftest-e10s-1: Kq1hkf3pSHudVyshKaLCqQ
+ test-linux64-nightly/opt-reftest-e10s-2: YyWDtH0rTC6B4eMJTlyG1Q
+ test-linux64-nightly/opt-reftest-e10s-3: CkZw8Sa0QiGo7G1cKA2GAg
+ test-linux64-nightly/opt-reftest-e10s-4: VoJ0PSoOR7-elfrZxva3xQ
+ test-linux64-nightly/opt-reftest-e10s-5: Aodb4N5zRUKadMz74bxiVA
+ test-linux64-nightly/opt-reftest-e10s-6: LQzt9T3hQHu2z3qfYAHGyw
+ test-linux64-nightly/opt-reftest-e10s-7: aslttJezRW-C_HENido8SA
+ test-linux64-nightly/opt-reftest-e10s-8: ImgnRYO5QNeAp4Zfp8aKOQ
+ test-linux64-nightly/opt-reftest-no-accel-e10s-1: RoQu0VO0Q2qElIvHSXfYpw
+ test-linux64-nightly/opt-reftest-no-accel-e10s-2: M4ZemfhhTKW8NSsnl9wywQ
+ test-linux64-nightly/opt-reftest-no-accel-e10s-3: KSmj5VuvQrWQvLk-E5lr-Q
+ test-linux64-nightly/opt-reftest-no-accel-e10s-4: Ch0MiX4LTEuBJb4Yv9SQVA
+ test-linux64-nightly/opt-reftest-no-accel-e10s-5: aXmKbkSwSUOceTIK3tHNeQ
+ test-linux64-nightly/opt-reftest-no-accel-e10s-6: EhCoGQERQMOXE_QgnqhBNQ
+ test-linux64-nightly/opt-reftest-no-accel-e10s-7: OAh0RkQwQHizxIMLaHl3hw
+ test-linux64-nightly/opt-reftest-no-accel-e10s-8: dFU4Kp0RRbmwC6--7mgfFA
+ test-linux64-nightly/opt-telemetry-tests-client-e10s: b-3UrY2JTDGOB3qkNVmfhQ
+ test-linux64-nightly/opt-web-platform-tests-e10s-1: G7wN36a_TOWZgx8eVKww1A
+ test-linux64-nightly/opt-web-platform-tests-e10s-10: S7fTzE9rR1WgLeZnlRWZXw
+ test-linux64-nightly/opt-web-platform-tests-e10s-11: HgOAWw0dThuwKZvQr9rfHQ
+ test-linux64-nightly/opt-web-platform-tests-e10s-12: Kg7grIx-R_GQRL8dnnO_zg
+ test-linux64-nightly/opt-web-platform-tests-e10s-2: H1Z1eZUQR6eoqB1olPIFSw
+ test-linux64-nightly/opt-web-platform-tests-e10s-3: TNHjbNzvRpmh8_V_Iud7yg
+ test-linux64-nightly/opt-web-platform-tests-e10s-4: YudF7VrORFOW0vwkv6Efmg
+ test-linux64-nightly/opt-web-platform-tests-e10s-5: IOMWnSM3QUq_MgAPDHKThQ
+ test-linux64-nightly/opt-web-platform-tests-e10s-6: Wrk6q0FFSXO720oN_u1SyQ
+ test-linux64-nightly/opt-web-platform-tests-e10s-7: Bqp7MkMKRqmAxm30bVvcHQ
+ test-linux64-nightly/opt-web-platform-tests-e10s-8: EuEjeG--QyOUVa6NSQ8ZPg
+ test-linux64-nightly/opt-web-platform-tests-e10s-9: SuGV_CbMTgOuvMY62Ctykg
+ test-linux64-nightly/opt-web-platform-tests-reftests-e10s-1: ERbDEc-ySRWpX4Sf5iKBHQ
+ test-linux64-nightly/opt-web-platform-tests-reftests-e10s-2: Tbdx2D_ySwSXWjKd9JmFqQ
+ test-linux64-nightly/opt-web-platform-tests-reftests-e10s-3: cW4fTd5mTN-IgTaQz7Ae6Q
+ test-linux64-nightly/opt-web-platform-tests-reftests-e10s-4: YZXto297T4uGMsAsh3ISpQ
+ test-linux64-nightly/opt-web-platform-tests-reftests-e10s-5: TkTcxoXXQHWOL3hL_PoLBw
+ test-linux64-nightly/opt-web-platform-tests-reftests-e10s-6: SdUub9ZSQrOgK9RDhZbVCA
+ test-linux64-nightly/opt-web-platform-tests-wdspec-e10s: eWsZ4LblS9aVUxhfC31o-A
+ test-linux64-nightly/opt-xpcshell-1: QgfTSkbnRpSOxKdxM0phAQ
+ test-linux64-nightly/opt-xpcshell-2: G8LkYr4vSNK6UJ7ld5mb7w
+ test-linux64-nightly/opt-xpcshell-3: U6Rwyi2gQeutdXre12ZElw
+ test-linux64-nightly/opt-xpcshell-4: V2VAwcC5RZuyxiddKprTTg
+ test-linux64-nightly/opt-xpcshell-5: R7Gpq792SNq7hDuEsCLdkg
+ test-linux64-nightly/opt-xpcshell-6: XM9B1hNKRqOMl6mwWm92BQ
+ test-linux64-nightly/opt-xpcshell-7: d7JdOBlDR7K7-11mNGMGLw
+ test-linux64-nightly/opt-xpcshell-8: I2D7xySKTBCIQb5_NpJkFA
+ test-linux64-qr/debug-cppunit: YZYZrC1KS2ag6h5CpBKa5A
+ test-linux64-qr/debug-crashtest-e10s: XTpnKCy8RA6WEdc8uDebTg
+ test-linux64-qr/debug-gtest: fAGExFoyRJuBSe2qS3Oj5w
+ test-linux64-qr/debug-mochitest-a11y: Ez--vwjVQAqo9fCnYLwdhw
+ test-linux64-qr/debug-mochitest-e10s-1: c4lLb4bjScKyhKMkeLkrxw
+ test-linux64-qr/debug-mochitest-e10s-10: fn4m02xtQwKSzB422KzrQw
+ test-linux64-qr/debug-mochitest-e10s-11: dPM6Qm0ySBeDwQDY5ZeEWQ
+ test-linux64-qr/debug-mochitest-e10s-12: G0QdtSn0T16PBv23dHMc9Q
+ test-linux64-qr/debug-mochitest-e10s-13: eb0TXR-WQu67-QXIwsGQ9w
+ test-linux64-qr/debug-mochitest-e10s-14: MCrTXwOWSN-dfQ8FlDY7Vg
+ test-linux64-qr/debug-mochitest-e10s-15: Qy-5WCEaSUu1Rgkctsj5bA
+ test-linux64-qr/debug-mochitest-e10s-16: dhqt8ZCXTrCSZWe9qZ8rHQ
+ test-linux64-qr/debug-mochitest-e10s-2: d7OOzBfsQ2CYxaac6PaAHg
+ test-linux64-qr/debug-mochitest-e10s-3: cl044nfoQFmTRrndQHE4AQ
+ test-linux64-qr/debug-mochitest-e10s-4: cFnrT8MuRS-tK94Ib6KnOQ
+ test-linux64-qr/debug-mochitest-e10s-5: NxpWvceWS4KI3D3Bt237iA
+ test-linux64-qr/debug-mochitest-e10s-6: JrbyuAuQRaq4_Vkw-g7tmQ
+ test-linux64-qr/debug-mochitest-e10s-7: U5YYV2jJQvCu8tI2mHC4tw
+ test-linux64-qr/debug-mochitest-e10s-8: DKgCTpNgTHqJ2BafheFn3w
+ test-linux64-qr/debug-mochitest-e10s-9: CHlf63qIQ1GWjHL45kBwxA
+ test-linux64-qr/debug-mochitest-gpu-e10s: HJeahdnlS3OvCQfSVwi7Bg
+ test-linux64-qr/debug-mochitest-media-e10s-1: X9KZ-iAGTImMzZIG6PChYw
+ test-linux64-qr/debug-mochitest-media-e10s-2: KzFjSZF_SRyblwAfKr1vgw
+ test-linux64-qr/debug-mochitest-media-e10s-3: HUw9xn3SR8ib3G0d3zFMAQ
+ test-linux64-qr/debug-mochitest-webgl1-core-e10s: GvF9L16CTTmiUXtaozVYKw
+ test-linux64-qr/debug-reftest-e10s-1: fmnRLnUySQ6Wkf6NcqNh5w
+ test-linux64-qr/debug-reftest-e10s-2: Y9GqJhcISoeQmKwuKXPI1g
+ test-linux64-qr/debug-reftest-e10s-3: J2aL8gMSTWWdt5h_7dSxEg
+ test-linux64-qr/debug-reftest-e10s-4: A-UG5fRlROWq3wEes4p9IA
+ test-linux64-qr/debug-reftest-e10s-5: HJOn7jYxS32IL8L9TdO8WA
+ test-linux64-qr/debug-reftest-e10s-6: RTNQw456QxmFeMyG_ElQrA
+ test-linux64-qr/debug-reftest-e10s-7: LbCQTffnTra-gbZHOCkDgA
+ test-linux64-qr/debug-reftest-e10s-8: dZU-y2xHQO2QAANtrtN3ng
+ test-linux64-qr/debug-web-platform-tests-e10s-1: fX-UQuB2SCiWSNR_59BTvw
+ test-linux64-qr/debug-web-platform-tests-e10s-10: Ah8wxCEFTAG1queOeKG8eg
+ test-linux64-qr/debug-web-platform-tests-e10s-11: Qos9C9TARTCYEos0uerqSw
+ test-linux64-qr/debug-web-platform-tests-e10s-12: VMop8XwmQ52jldeERSI2ow
+ test-linux64-qr/debug-web-platform-tests-e10s-13: Ul8FQ-N5Q4O1iTgXiOHJIQ
+ test-linux64-qr/debug-web-platform-tests-e10s-14: IMR0ykw_RR-OEQPqq8GH0A
+ test-linux64-qr/debug-web-platform-tests-e10s-15: VQEFk-jPRw6dFFsRK7DyIg
+ test-linux64-qr/debug-web-platform-tests-e10s-16: DDdHWmmlTqK3VVsl2IXykw
+ test-linux64-qr/debug-web-platform-tests-e10s-17: NsuWJAo8ROKZCr7prkvc2Q
+ test-linux64-qr/debug-web-platform-tests-e10s-18: QoWdFiA-TH-bp8d6wicvKw
+ test-linux64-qr/debug-web-platform-tests-e10s-2: XI9yAxKPQ_WJljSiBGcyrA
+ test-linux64-qr/debug-web-platform-tests-e10s-3: LTxGSzbAQwGKTL5D4LFdjw
+ test-linux64-qr/debug-web-platform-tests-e10s-4: Qb7V9FlUQaeRVEfK77VdLQ
+ test-linux64-qr/debug-web-platform-tests-e10s-5: f5hGQdWfS7yOhpQm3wuzsw
+ test-linux64-qr/debug-web-platform-tests-e10s-6: Kx4sbvNuR5uAcQMomUrVGw
+ test-linux64-qr/debug-web-platform-tests-e10s-7: RBUTkVC3TLKuV8O4YWI16Q
+ test-linux64-qr/debug-web-platform-tests-e10s-8: Mp75pz5hRu6IsuMx2t3ylQ
+ test-linux64-qr/debug-web-platform-tests-e10s-9: B_KaezjpSySXRYF3xmkfmA
+ test-linux64-qr/debug-web-platform-tests-reftests-e10s-1: eVel8RwbQ8GRA0ki7WD2UQ
+ test-linux64-qr/debug-web-platform-tests-reftests-e10s-2: ahUKodQlRr-039iDEoz1Aw
+ test-linux64-qr/debug-web-platform-tests-reftests-e10s-3: IC7Jr-G2QOC1ZJbUXTE9xA
+ test-linux64-qr/debug-web-platform-tests-reftests-e10s-4: fprCNKD-TQiiasK9JIo7NA
+ test-linux64-qr/debug-web-platform-tests-reftests-e10s-5: cNXp8VUdT0uYsKtgqavMnQ
+ test-linux64-qr/debug-web-platform-tests-reftests-e10s-6: BC75lKytRRCinrpOx9XC6w
+ test-linux64-qr/debug-web-platform-tests-wdspec-e10s: GTpAlnF2TZGZOt_8WU5I1g
+ test-linux64-qr/debug-xpcshell-1: HQBaVQvyRJWafny32sgQvw
+ test-linux64-qr/debug-xpcshell-2: Su6aXhPMSWasMLkqZYpSjg
+ test-linux64-qr/debug-xpcshell-3: Ylql6wOyShek-m9KkPQ4sA
+ test-linux64-qr/debug-xpcshell-4: BXQ1lWhzSDKpMO-R_wxl2A
+ test-linux64-qr/debug-xpcshell-5: EJkaMufWRY6QJY2M-rSbAQ
+ test-linux64-qr/debug-xpcshell-6: D9MmZCZvQpW-89XOAc7nBA
+ test-linux64-qr/debug-xpcshell-7: WlveA1tbR1mpeydWKbCFrA
+ test-linux64-qr/debug-xpcshell-8: BGQCSurHS7SdQeSQ4DIJ3w
+ test-linux64-qr/opt-talos-chrome-e10s: Fur_SgEeQb2QiiAmKDTlUA
+ test-linux64-qr/opt-talos-damp-e10s: Ldr0T87VTTGOarOBBLplwA
+ test-linux64-qr/opt-talos-dromaeojs-e10s: JKaMqMOLSIG92xaJ5E54Pg
+ test-linux64-qr/opt-talos-g1-e10s: ISYeOgRaRoWf7xs7JhLp3g
+ test-linux64-qr/opt-talos-g3-e10s: NjKsY1zSSaC-iXXsiQRMog
+ test-linux64-qr/opt-talos-g4-e10s: NnOmj7RjSnyqyQzfc0YRew
+ test-linux64-qr/opt-talos-g5-e10s: HPGiOGBjSt22PTckSl1Vfg
+ test-linux64-qr/opt-talos-other-e10s: f6IUO3sRT--dvu3RCRKqEw
+ test-linux64-qr/opt-talos-speedometer-e10s: BtFjOIxySkmQQ9o-AnAk5w
+ test-linux64-qr/opt-talos-svgr-e10s: WkrHblrRTiOaYhU3dSZ34g
+ test-linux64-qr/opt-talos-tp5o-e10s: R7VFIdtwQai7-6vB4_J-ug
+ test-linux64-qr/opt-talos-tp6-e10s: C3Riq7liSaGbZ9IIourcQw
+ test-linux64-qr/opt-talos-tp6-stylo-threads-e10s: CIGvgNXkS9WHVnn8rMYd3w
+ test-linux64-qr/opt-talos-tps-e10s: eLNQ_PscQlqVyQA1O5rXBQ
+ test-linux64/debug-cppunit: B-WfpMvbTbSDOJNvf8Pj6w
+ test-linux64/debug-crashtest-e10s: DO5ucnbrSCaQ_0ua0e-CKA
+ test-linux64/debug-firefox-ui-functional-local-e10s: XonpKjuKQam943XB14FfqQ
+ test-linux64/debug-firefox-ui-functional-remote-e10s: GMaBJpSBRX-c4eVBME_hoQ
+ test-linux64/debug-gtest: BWg31UwMSNiNrKJqN5sK7Q
+ test-linux64/debug-marionette-e10s: OpmjiqfQTfSVSwTsGNuB8Q
+ test-linux64/debug-marionette-headless-e10s: AL9tNhMoSjm7jgmlNYZexA
+ test-linux64/debug-mochitest-a11y: MmHswxfaQoCXgWmTToiarQ
+ test-linux64/debug-mochitest-browser-chrome-e10s-1: BdpYysqvQa6JGmMAEzBAHw
+ test-linux64/debug-mochitest-browser-chrome-e10s-10: Bb20wc6nSMGi2KLQSg75fg
+ test-linux64/debug-mochitest-browser-chrome-e10s-11: UjAue-eMSvKPdmK9Ie243w
+ test-linux64/debug-mochitest-browser-chrome-e10s-12: EbV-CU06StSsLO5DTM5zAQ
+ test-linux64/debug-mochitest-browser-chrome-e10s-13: dpGiRGUwSeiPmpsvThVXmg
+ test-linux64/debug-mochitest-browser-chrome-e10s-14: Av3_nPUURfu5kahMbt-Pgw
+ test-linux64/debug-mochitest-browser-chrome-e10s-15: RnwUH3ZHRT6D_9vDK0CitQ
+ test-linux64/debug-mochitest-browser-chrome-e10s-16: NQX-_UQuQCCSW4EbrMdiqw
+ test-linux64/debug-mochitest-browser-chrome-e10s-2: UBIt2_EwStGjwMm-Yu3IKA
+ test-linux64/debug-mochitest-browser-chrome-e10s-3: e1r9C_DrS-6fDC1fHFpNyw
+ test-linux64/debug-mochitest-browser-chrome-e10s-4: AR9WjIOWSGC1Z0uH4iaL2Q
+ test-linux64/debug-mochitest-browser-chrome-e10s-5: JWxYpGYVS3aHCnf29pkRCA
+ test-linux64/debug-mochitest-browser-chrome-e10s-6: Pzmlwfx5R1yWMYM1G9tjpw
+ test-linux64/debug-mochitest-browser-chrome-e10s-7: eZTCUavMQieQGGkZLUfBJA
+ test-linux64/debug-mochitest-browser-chrome-e10s-8: MBN1uxm6T8-arWFT1jsz8g
+ test-linux64/debug-mochitest-browser-chrome-e10s-9: Id7lK26RQ6e0yijED32M0Q
+ test-linux64/debug-mochitest-chrome-1: BCExwmyYSBGs4Hk_rF3KRA
+ test-linux64/debug-mochitest-chrome-2: YZ-zU7TdTEOSORBA-4hgng
+ test-linux64/debug-mochitest-chrome-3: Y_l4OCRcR4yFWiC7iSmJmA
+ test-linux64/debug-mochitest-clipboard-e10s: Cepx4EW1SR2RtMM5CmvlbQ
+ test-linux64/debug-mochitest-devtools-chrome-e10s-1: ZdnQxHk_T_S120PvWDrvhg
+ test-linux64/debug-mochitest-devtools-chrome-e10s-2: TarA1cOFT5aUCQb9F3lrPQ
+ test-linux64/debug-mochitest-devtools-chrome-e10s-3: GQ6lmI9AS7aBTuT801zbpg
+ test-linux64/debug-mochitest-devtools-chrome-e10s-4: K7F6YOmHRpyUG4gDfzFHaQ
+ test-linux64/debug-mochitest-devtools-chrome-e10s-5: XEsuVhQ_SluJVDYVK_bDTw
+ test-linux64/debug-mochitest-devtools-chrome-e10s-6: SDb0zk4eTau0Oqh1hyMyDQ
+ test-linux64/debug-mochitest-devtools-chrome-e10s-7: RO6guGjMRMqTD7D7mQPuMQ
+ test-linux64/debug-mochitest-devtools-chrome-e10s-8: O-15Fqf0R46yq1shz6BcUQ
+ test-linux64/debug-mochitest-e10s-1: V4V2_oKqTGGpkk5mMQZEIg
+ test-linux64/debug-mochitest-e10s-10: LPbOIOhxQUGhglUkdAHngw
+ test-linux64/debug-mochitest-e10s-11: fuxufVp9TleUjiuJVp-4Tg
+ test-linux64/debug-mochitest-e10s-12: Uw1U5DclRNWjuvIDGCfNzw
+ test-linux64/debug-mochitest-e10s-13: Er0DrAdOTCKq6Cx0wZg-9g
+ test-linux64/debug-mochitest-e10s-14: czlLZyGcQ4izI1HsYgLCMg
+ test-linux64/debug-mochitest-e10s-15: Vnr8CrUfT225eq7qr21B4g
+ test-linux64/debug-mochitest-e10s-16: ck7v41ZWQTWFmPkUelVgUQ
+ test-linux64/debug-mochitest-e10s-2: PgF5GNSwQkGYbshSvx4xNA
+ test-linux64/debug-mochitest-e10s-3: TMrGijFeSSuXxeSzp8xthg
+ test-linux64/debug-mochitest-e10s-4: MV8XIgrsQXupj9t7_lNpZg
+ test-linux64/debug-mochitest-e10s-5: B1mWNcaETaC-H7V2b12DOg
+ test-linux64/debug-mochitest-e10s-6: TuAcRogDTQClOx3MCwLHUQ
+ test-linux64/debug-mochitest-e10s-7: G78XKZQvRnu6a1Aw_SWJSg
+ test-linux64/debug-mochitest-e10s-8: btYJfmqORUSx8_C_RhmIYQ
+ test-linux64/debug-mochitest-e10s-9: QM2yY5GyTgWRdJbcjYnvzw
+ test-linux64/debug-mochitest-gpu-e10s: SxjGhyYMTb-K3sOFA_b2Jw
+ test-linux64/debug-mochitest-media-e10s-1: akZAfk5ZS7C-OPDWQzM04g
+ test-linux64/debug-mochitest-media-e10s-2: RPOSpq5ERm2tANwP13rIiA
+ test-linux64/debug-mochitest-media-e10s-3: dsCfjIBET4KN4jliga2dZg
+ test-linux64/debug-mochitest-plain-headless-e10s-1: BOO32BmxR2mTE5Hr0I-FhA
+ test-linux64/debug-mochitest-plain-headless-e10s-10: B2VHVGIPRLWEkm-RBCslyg
+ test-linux64/debug-mochitest-plain-headless-e10s-11: WLVgSMGTQP62Nnha56NAJA
+ test-linux64/debug-mochitest-plain-headless-e10s-12: H4jnb0kRTEy-0WSsoYkk3Q
+ test-linux64/debug-mochitest-plain-headless-e10s-13: RL0hzklPSVmN23aa-GB_nQ
+ test-linux64/debug-mochitest-plain-headless-e10s-14: QnnRBzJmRnapBp32TwgQXw
+ test-linux64/debug-mochitest-plain-headless-e10s-15: DoWIhvdUSt2w0i1kmZX4XA
+ test-linux64/debug-mochitest-plain-headless-e10s-16: G6tJp7ccTAmoUhIpIC5IcA
+ test-linux64/debug-mochitest-plain-headless-e10s-2: ZU1ye4QwQH2RhK_UPBKqmQ
+ test-linux64/debug-mochitest-plain-headless-e10s-3: WyE5i3iTQEWw86folUGl1Q
+ test-linux64/debug-mochitest-plain-headless-e10s-4: L-qPP1pwTRiYjlhk8xQ33w
+ test-linux64/debug-mochitest-plain-headless-e10s-5: V61e-QgCRCSLH99kWHQuug
+ test-linux64/debug-mochitest-plain-headless-e10s-6: VU-VmnaeRTucNW71QoTDfw
+ test-linux64/debug-mochitest-plain-headless-e10s-7: WZWCQq7iSW2NeUTcTWrZvQ
+ test-linux64/debug-mochitest-plain-headless-e10s-8: ZZ2v4-EXTI-bv9LXsytvRQ
+ test-linux64/debug-mochitest-plain-headless-e10s-9: fCPnXH5-Qga2Mpl0I1AhLg
+ test-linux64/debug-mochitest-webgl1-core-e10s: MSJq1bLXSdyNyPAwYlDTBw
+ test-linux64/debug-mochitest-webgl1-ext-e10s: GgwWlpw6T_Sv6yfGYhMvRg
+ test-linux64/debug-reftest-e10s-1: C2uIAIY2Qj2RYzyTqQ1foQ
+ test-linux64/debug-reftest-e10s-2: E9adm1zBT1eyu7ai4N8S8w
+ test-linux64/debug-reftest-e10s-3: K4VFA6pHRxmdqEOkgYo6_g
+ test-linux64/debug-reftest-e10s-4: DspLRh0fR-ihihSLMSy7Sg
+ test-linux64/debug-reftest-e10s-5: F5K-j4HYQ_yG6rwu3B-xOQ
+ test-linux64/debug-reftest-e10s-6: bnWeTLZ-T-SUT6Bq2-16YA
+ test-linux64/debug-reftest-e10s-7: aJrwyAXHRiiE6zUUAvUiig
+ test-linux64/debug-reftest-e10s-8: N1zbNcwOQn6nC0PFOVz-kQ
+ test-linux64/debug-reftest-no-accel-e10s-1: e59DYKmQRdGUXYTy3PekKg
+ test-linux64/debug-reftest-no-accel-e10s-2: D8dPvPfISZ65fLMd1xosLw
+ test-linux64/debug-reftest-no-accel-e10s-3: DnzIVMnhRW2ZipL_fHxGIg
+ test-linux64/debug-reftest-no-accel-e10s-4: bpP-5B0wRGSzmY5C98pu7A
+ test-linux64/debug-reftest-no-accel-e10s-5: a1mUu2ZiToukXOXKWW5YmQ
+ test-linux64/debug-reftest-no-accel-e10s-6: N02OkpFVQCisdCCQzvo12A
+ test-linux64/debug-reftest-no-accel-e10s-7: DOH0x2dHQEucpsHTLIuHjg
+ test-linux64/debug-reftest-no-accel-e10s-8: Jz5lWnHdTjmPQbbIgMvujg
+ test-linux64/debug-telemetry-tests-client-e10s: budM4XXJTJuhBvclzA83qA
+ test-linux64/debug-web-platform-tests-e10s-1: Qr-urUZpSpKmR0WT_wSaSw
+ test-linux64/debug-web-platform-tests-e10s-10: UohYkNZNSt2FnH2QzHII-g
+ test-linux64/debug-web-platform-tests-e10s-11: EUTla8GTQne-K51AV_A11Q
+ test-linux64/debug-web-platform-tests-e10s-12: FE4SLyv8ShGJD566EYFm5A
+ test-linux64/debug-web-platform-tests-e10s-13: PSDhOVXVTvCil_x1GbWPPg
+ test-linux64/debug-web-platform-tests-e10s-14: LjyKpRg4Td-koqdKtv8twQ
+ test-linux64/debug-web-platform-tests-e10s-15: J7c-RWPISiq2ElvCV-32Og
+ test-linux64/debug-web-platform-tests-e10s-16: amyRmVlvT82WhTnN4ga0Zg
+ test-linux64/debug-web-platform-tests-e10s-17: Chz6Eid5RAa1qmZsPtXmwA
+ test-linux64/debug-web-platform-tests-e10s-18: Ah8S1AxwR6e0Ggt3T1W8aA
+ test-linux64/debug-web-platform-tests-e10s-2: GifBUk6ySbuGKITge7Tz0w
+ test-linux64/debug-web-platform-tests-e10s-3: fObR9hfdSOeuEAHNVI04RA
+ test-linux64/debug-web-platform-tests-e10s-4: LhpA1H_3Sk6Tha-NuoHHAw
+ test-linux64/debug-web-platform-tests-e10s-5: IatDrfpMSFenH1eAIPxv0w
+ test-linux64/debug-web-platform-tests-e10s-6: KJ1x-RJYTueLreNsoWgqXQ
+ test-linux64/debug-web-platform-tests-e10s-7: el5b-0eYSXWVCkTbtHRpWw
+ test-linux64/debug-web-platform-tests-e10s-8: eR8ixQdASJ2q8VVq8Lg6ow
+ test-linux64/debug-web-platform-tests-e10s-9: NETwJXVOTVyAM7h0tkpSPQ
+ test-linux64/debug-web-platform-tests-reftests-e10s-1: fpn7K00hRW-9ybGa970_oA
+ test-linux64/debug-web-platform-tests-reftests-e10s-2: UISHPhcBR3SJY_BK8TcoIw
+ test-linux64/debug-web-platform-tests-reftests-e10s-3: ReipojbjQCyXtWE0n-kSUQ
+ test-linux64/debug-web-platform-tests-reftests-e10s-4: Zux91BksQGawSAG7OKp3tQ
+ test-linux64/debug-web-platform-tests-reftests-e10s-5: dUv6teyCSX-0qsgTMytMRw
+ test-linux64/debug-web-platform-tests-reftests-e10s-6: b_YmMFInTLuG6bWIJLDc-g
+ test-linux64/debug-web-platform-tests-wdspec-e10s: GqnKAFisR7OE-USyuJCDAg
+ test-linux64/debug-xpcshell-1: ZYhBSORgQ5W_6NXi38nQQw
+ test-linux64/debug-xpcshell-10: T_QO6H0mRh6i2wJ0E1nl3A
+ test-linux64/debug-xpcshell-2: VCDk0yYASuKd8hHPsTj5Uw
+ test-linux64/debug-xpcshell-3: JgpfV-k2Td6Wu5S1ivvwuA
+ test-linux64/debug-xpcshell-4: dpmjr6bbTIWlw-76PDMTgQ
+ test-linux64/debug-xpcshell-5: ACE8EB6XS1aNzHJxw-1hlQ
+ test-linux64/debug-xpcshell-6: fYmXolLKRLSzVFyKR4HhzQ
+ test-linux64/debug-xpcshell-7: RRpudI8vS2u2GGJZwhh03A
+ test-linux64/debug-xpcshell-8: GsdwexBhQu2peAJT2skJvQ
+ test-linux64/debug-xpcshell-9: NJfPYcjgRCmPnuUdbigr3g
+ test-linux64/opt-talos-bcv-e10s: PH-BSe3rTiOqTOWV0KYnxA
+ test-linux64/opt-talos-chrome-e10s: TgdEV2bAT9KH6N2ihf8vZQ
+ test-linux64/opt-talos-damp-e10s: RPiK1dHTSY696JGtkWGHog
+ test-linux64/opt-talos-dromaeojs-e10s: aek-6X8PTgWY0_JHJpFv0Q
+ test-linux64/opt-talos-g1-e10s: Pugr_6q2R9WYedGPtfdRtQ
+ test-linux64/opt-talos-g3-e10s: HnZb--FpTx2IBPrlcw7pfg
+ test-linux64/opt-talos-g4-e10s: YCT6EoUES-OIN9Ht-0JD8Q
+ test-linux64/opt-talos-g5-e10s: AZkWoSwQQ8qQD1kqYwwPdw
+ test-linux64/opt-talos-other-e10s: SIRKklygS-uGl3r826eeSA
+ test-linux64/opt-talos-speedometer-e10s: dSwbZOgqQ3-CIv2cUEidYQ
+ test-linux64/opt-talos-svgr-e10s: DMNsJPhAQOy6fEVfmByxHw
+ test-linux64/opt-talos-tp5o-e10s: TOmnqoy6QcOrS2x9i4z2Yg
+ test-linux64/opt-talos-tp6-e10s: Bp6QgNTDRW-9HUctOge6YA
+ test-linux64/opt-talos-tp6-stylo-threads-e10s: Z4-YNtHPQRGj3tT6o-BTZw
+ test-linux64/opt-talos-tps-e10s: KzPayftaR5-Q81BLVmXvLQ
+ test-macosx64-devedition/opt-cppunit: UAZB1TytQsCN7l3MleyIfQ
+ test-macosx64-devedition/opt-crashtest-e10s: F4e1Z-3IRYSxtRa_g2aF6Q
+ test-macosx64-devedition/opt-firefox-ui-functional-local-e10s: Oky5zxonRVKP14QcdUDoIw
+ test-macosx64-devedition/opt-firefox-ui-functional-remote-e10s: BEnDvpogTeuwK2EFqgO_NQ
+ test-macosx64-devedition/opt-marionette-e10s: HCGzF8iDSOK_RL1TaXHt2w
+ test-macosx64-devedition/opt-marionette-headless-e10s: bAYKLQHES-Ww31Xi2kzDQg
+ test-macosx64-devedition/opt-mochitest-a11y: HB1PgQGzSd-x4B5fEQpHLA
+ test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-1: NgEOyv3lSqWY9piETTN_ig
+ test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-2: VSgIBd2nS5CeIYgPrvuV-w
+ test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-3: QgXCXgliQwqCSbpEqkHSVw
+ test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-4: GCJSeCkyRleSDu7tfQa9fw
+ test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-5: RC124PQnS227hpbBa3K23w
+ test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-6: ZVXiSwXvSmCYLKaBIx2rJg
+ test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-7: cAuJ4U1pQR6ucKCCKEb4gw
+ test-macosx64-devedition/opt-mochitest-chrome-1: Pa97ai7eQiuWINK4_6DMSA
+ test-macosx64-devedition/opt-mochitest-chrome-2: W9ZZt5c_SQm2wgD82QM4cw
+ test-macosx64-devedition/opt-mochitest-chrome-3: TGsIRcG9QbGea8JyYn0uUQ
+ test-macosx64-devedition/opt-mochitest-clipboard-e10s: c19vI6LOTQ6Qdxrsx-qCLA
+ test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-1: BSMiEdSHR4eREMb3hgi5sQ
+ test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-2: CdS4t8fjSeCSWQeP9UWPPA
+ test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-3: cGmVwHR0TnyAUHaMRIHrgA
+ test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-4: C5pfJBqbS8CvNLkSsv5yzw
+ test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-5: EyK0HZnhTaqjlxj48qXccA
+ test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-6: L3HlEsQOQ7Kto9rLdC4rbw
+ test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-7: JxE5i8GjRiWgaMSJJsx9kw
+ test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-8: ITv_MZnARUa7eLkCnjK9-w
+ test-macosx64-devedition/opt-mochitest-e10s-1: fGZPMm0cQP2sZG4rzBL40g
+ test-macosx64-devedition/opt-mochitest-e10s-2: cH5kPLi9Sd6ggFfnunCMew
+ test-macosx64-devedition/opt-mochitest-e10s-3: fU9mi153TxySDFBaUU_FnA
+ test-macosx64-devedition/opt-mochitest-e10s-4: StmZ4TVhTRiUDsDeSyZ5_Q
+ test-macosx64-devedition/opt-mochitest-e10s-5: aNuRQZkwQeyVSME39CDLNQ
+ test-macosx64-devedition/opt-mochitest-gpu-e10s: LieLKIpZR6uuY315fnDayA
+ test-macosx64-devedition/opt-mochitest-media-e10s: WcmPVNkaTPydv6VUt3AHQg
+ test-macosx64-devedition/opt-mochitest-webgl1-core-e10s: WKxNOuaqQGWMuFXKEYr4ug
+ test-macosx64-devedition/opt-mochitest-webgl1-ext-e10s: GKBdGNX2R5OHwZN0l17mBA
+ test-macosx64-devedition/opt-mochitest-webgl2-core-e10s: Ty7U3-WaTmS3Jjgg_jaHTg
+ test-macosx64-devedition/opt-reftest-e10s-1: YNA5V7VtRfucyCv0mgiRzQ
+ test-macosx64-devedition/opt-reftest-e10s-2: RIe4j3EpSO2i9wobHw8MzA
+ test-macosx64-devedition/opt-web-platform-tests-e10s-1: I8K4JuJ3SiSFfpMGE3xvpQ
+ test-macosx64-devedition/opt-web-platform-tests-e10s-10: EAxXfmRCRvy6filtsNXLkg
+ test-macosx64-devedition/opt-web-platform-tests-e10s-11: Pn2zVdw7R4qSEnF2KjLmyg
+ test-macosx64-devedition/opt-web-platform-tests-e10s-12: Pa5C6neSQDKnVZoEGB21-w
+ test-macosx64-devedition/opt-web-platform-tests-e10s-2: VaHHBxiTSbWrlW-jA9t_lA
+ test-macosx64-devedition/opt-web-platform-tests-e10s-3: c7zqXjQXRtqa0CxldUPLFA
+ test-macosx64-devedition/opt-web-platform-tests-e10s-4: EoK_Gkk8QaW7GSpX44zESA
+ test-macosx64-devedition/opt-web-platform-tests-e10s-5: WYVDAYoSTy6UM30aAAuH7Q
+ test-macosx64-devedition/opt-web-platform-tests-e10s-6: WTivgXckSsWMJMOkmGxHMQ
+ test-macosx64-devedition/opt-web-platform-tests-e10s-7: a9-_p3AbTiWkA0OA_ktKdQ
+ test-macosx64-devedition/opt-web-platform-tests-e10s-8: W_qEvTwrQ2yHb_IQ1WTLIA
+ test-macosx64-devedition/opt-web-platform-tests-e10s-9: FQ_81g7WRyiJUi1ZKSwDvQ
+ test-macosx64-devedition/opt-web-platform-tests-reftests-e10s: MmOWzfPPQXWABZ0Cb1-C9g
+ test-macosx64-devedition/opt-xpcshell: diUK-RMoS0STOdotcIcDnA
+ test-macosx64-nightly/opt-awsy-base-e10s: QwZ3KGvbTneJ48mYpAENFQ
+ test-macosx64-nightly/opt-awsy-e10s: M6ptPfUiS9ezlD5_b7wGmw
+ test-macosx64-nightly/opt-cppunit: P_RKRMWGRYCeOwIKpzBSgw
+ test-macosx64-nightly/opt-crashtest-e10s: Y2eNwyhkQpeD00Mg8jAC9A
+ test-macosx64-nightly/opt-firefox-ui-functional-local-e10s: DNfGVhDSQtGAbLINxeoUfQ
+ test-macosx64-nightly/opt-firefox-ui-functional-remote-e10s: BtFXSZuES3-fj3LTiJucpA
+ test-macosx64-nightly/opt-gtest: W6FchIQIT8eBO3SHSJAXyw
+ test-macosx64-nightly/opt-marionette-e10s: UQNVIugLThqD1W7rashuEw
+ test-macosx64-nightly/opt-marionette-headless-e10s: S9g8ZAaeTRSVKA9he0kRlQ
+ test-macosx64-nightly/opt-mochitest-a11y: DyqtEQZcQ2qJK6De9z8zqg
+ test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-1: XGrc0bllRZGuI_A1MCD2jw
+ test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-2: Qg64Fz6qRMG-BpYOJFeaYg
+ test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-3: enRPjfIySlKQNysor5WnkQ
+ test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-4: MwHhZQ6pQlu1LlW4BDDdlg
+ test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-5: Gz4W_SnLRqiP8HwtDDLWCg
+ test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-6: eGxOBUXZQkCd3a0wKt60cw
+ test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-7: GiHmQ2ZDQX2a1Zvs_d739w
+ test-macosx64-nightly/opt-mochitest-chrome-1: UMv1rx3ITou_RTHbAFfqVA
+ test-macosx64-nightly/opt-mochitest-chrome-2: Ks_kqKzQQY6Oge4DPAo_XQ
+ test-macosx64-nightly/opt-mochitest-chrome-3: BRdKLeqOSwuiMXFYUSr7Sw
+ test-macosx64-nightly/opt-mochitest-clipboard-e10s: cfJ0cd5xRZ--O0LBj0bV7Q
+ test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-1: b_StsMbFTgqoqIi69D4BRw
+ test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-2: JyQPZqFnQn62G6oibH94Sw
+ test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-3: StK0c9FtR5Gqf35WrMbZcg
+ test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-4: ILcR371aQNe11A-HicfUKA
+ test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-5: FVz-ikw8RGeyX_Hs8AqE8w
+ test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-6: JgQO5DqWRW--bYtZORy1vw
+ test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-7: SsSAUDncQ1yIt_3vpHColQ
+ test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-8: cH5YF3PETXajKwrzjBsHlg
+ test-macosx64-nightly/opt-mochitest-e10s-1: EHJlhYfiSY-07c_5VR3_Bw
+ test-macosx64-nightly/opt-mochitest-e10s-2: N7gDVoRzSYmdB5S36t_ktA
+ test-macosx64-nightly/opt-mochitest-e10s-3: C7TmZGwJTGi8RSOJId7vCA
+ test-macosx64-nightly/opt-mochitest-e10s-4: ZzFFCVLrQzWKWFMss-gG7Q
+ test-macosx64-nightly/opt-mochitest-e10s-5: H973rxToRryWwTCT6Yw54Q
+ test-macosx64-nightly/opt-mochitest-gpu-e10s: MucVF97XQGGcx9tF2eM9yg
+ test-macosx64-nightly/opt-mochitest-media-e10s: MqLQGSwvQBybKS01rtDlUA
+ test-macosx64-nightly/opt-mochitest-webgl1-core-e10s: RyUpcLyWRFO_6oz0D0Nf6A
+ test-macosx64-nightly/opt-mochitest-webgl1-ext-e10s: AYlCnP3yTnqbsXKq26pCzg
+ test-macosx64-nightly/opt-mochitest-webgl2-core-e10s: OsqMM9bmS7Oc6JhvGAI15A
+ test-macosx64-nightly/opt-reftest-e10s-1: UHtsE2xsS8WyLLoLk_4KjQ
+ test-macosx64-nightly/opt-reftest-e10s-2: TB8KE7qWQRejBbta_lR-0Q
+ test-macosx64-nightly/opt-web-platform-tests-e10s-1: ddENma46R02XVcvsHGnr9w
+ test-macosx64-nightly/opt-web-platform-tests-e10s-10: GkHwqnowS7y1IM537_o-uw
+ test-macosx64-nightly/opt-web-platform-tests-e10s-11: aRjElPCGTGuEyGFSQEw7NA
+ test-macosx64-nightly/opt-web-platform-tests-e10s-12: J4JeNAszQqa1S_O8a5sYvw
+ test-macosx64-nightly/opt-web-platform-tests-e10s-2: ai3vpiTZRNKg1M9GYuCXcQ
+ test-macosx64-nightly/opt-web-platform-tests-e10s-3: PKo_v7egSfimbWbKQv5iSQ
+ test-macosx64-nightly/opt-web-platform-tests-e10s-4: Q5Z2t_EfTZGaPsZqspEjHQ
+ test-macosx64-nightly/opt-web-platform-tests-e10s-5: MUCwhZw1RGS9GCwcjJPY_w
+ test-macosx64-nightly/opt-web-platform-tests-e10s-6: dwD82CepTL2oU-Enic-Y1w
+ test-macosx64-nightly/opt-web-platform-tests-e10s-7: NcHGf4tNQNSrc0JyaRTBUQ
+ test-macosx64-nightly/opt-web-platform-tests-e10s-8: KHtvc5bqR_-rAFJXCExQiQ
+ test-macosx64-nightly/opt-web-platform-tests-e10s-9: M2uH8xLlToWmhCvMbHTPcg
+ test-macosx64-nightly/opt-web-platform-tests-reftests-e10s: Yxk6e_WfSnadRM7983XAyw
+ test-macosx64-nightly/opt-xpcshell: KxLaSBLpSsywGZdEiJqdbQ
+ test-macosx64-qr/debug-crashtest-e10s: Qy4aeSVyTTyf4_jLLdG7yQ
+ test-macosx64-qr/debug-reftest-e10s-1: OcAWWpr2Rd21keJh7-EX5w
+ test-macosx64-qr/debug-reftest-e10s-2: Op5dTDfgS5mc2RAgkGC4Eg
+ test-macosx64-qr/debug-reftest-e10s-3: Ph2dJaqIRAWJGU6NXzyUZA
+ test-macosx64/debug-cppunit: SeEk0x7KS0OPkzhs6cgbmA
+ test-macosx64/debug-crashtest-e10s: HXfUuyE1RpCQR_2gx_GPgQ
+ test-macosx64/debug-firefox-ui-functional-local-e10s: dEUBhGhSQOqeDDC-gYCysg
+ test-macosx64/debug-firefox-ui-functional-remote-e10s: EgpNt9JnRFG0ksAFqthAZA
+ test-macosx64/debug-gtest: J21esFQuRR6EXMuBfZ1qkA
+ test-macosx64/debug-marionette-e10s: ADqcSC_hRiWgoqvdvM8pUA
+ test-macosx64/debug-marionette-headless-e10s: ARduI3SISSWGFrvgX0z0iQ
+ test-macosx64/debug-mochitest-a11y: ELtfMX2KR0uYOPJpPRNssQ
+ test-macosx64/debug-mochitest-browser-chrome-e10s-1: P_fNEVpfRXyC2_NEJCPOzA
+ test-macosx64/debug-mochitest-browser-chrome-e10s-2: LXn2LM9cTiWo3T-YPZsmFQ
+ test-macosx64/debug-mochitest-browser-chrome-e10s-3: AYBF7S1pS6C4AfzV8v1ExA
+ test-macosx64/debug-mochitest-browser-chrome-e10s-4: L94oX3a3SyOhevx_cXmkmw
+ test-macosx64/debug-mochitest-browser-chrome-e10s-5: Nxtaf7iMSButtuC238LoVg
+ test-macosx64/debug-mochitest-browser-chrome-e10s-6: AOQKJ-LiRAipVsxCAkTDrw
+ test-macosx64/debug-mochitest-browser-chrome-e10s-7: VggVU2EKRDGIdrljF72JDA
+ test-macosx64/debug-mochitest-chrome-1: SxRSJLJzTku1ns0nCaUMvw
+ test-macosx64/debug-mochitest-chrome-2: SJOeMpP1TomsHNTjzZarYA
+ test-macosx64/debug-mochitest-chrome-3: VJy6ghvxRqOsyY-BdAlR7A
+ test-macosx64/debug-mochitest-clipboard-e10s: ALDTIfhFT5q495EjxlCZLg
+ test-macosx64/debug-mochitest-devtools-chrome-e10s-1: TBZTECRLTc6SpULVUQtDzA
+ test-macosx64/debug-mochitest-devtools-chrome-e10s-2: egmx1RWzQimSexz2y-nYJg
+ test-macosx64/debug-mochitest-devtools-chrome-e10s-3: IcH_3NWySPeAHfGeFoKkuA
+ test-macosx64/debug-mochitest-devtools-chrome-e10s-4: Q954dJaVSQq2ZvMoHVB89w
+ test-macosx64/debug-mochitest-devtools-chrome-e10s-5: Z-amE-bVQ2K_CoLbz7hQMw
+ test-macosx64/debug-mochitest-devtools-chrome-e10s-6: CzUvreS-S_KM5ZurYvESkA
+ test-macosx64/debug-mochitest-devtools-chrome-e10s-7: O6EhO_DORFiz9r-lqZt2HA
+ test-macosx64/debug-mochitest-devtools-chrome-e10s-8: X2FAzch9SV-0tWfw7OJaFA
+ test-macosx64/debug-mochitest-e10s-1: ChybOSmZTSOgONnUk0U0CA
+ test-macosx64/debug-mochitest-e10s-2: fV0PrFBZSmK9kkO9MhwCJQ
+ test-macosx64/debug-mochitest-e10s-3: E4J4WbORQLycHyVo-fxfXA
+ test-macosx64/debug-mochitest-e10s-4: aGGZEpc6SZWIWJkOBeVdCw
+ test-macosx64/debug-mochitest-e10s-5: bhM-ZOizSIyLv6C3ixu_iw
+ test-macosx64/debug-mochitest-gpu-e10s: Dm7ZFK3ETX6IAP8dLmdWPg
+ test-macosx64/debug-mochitest-media-e10s: JKQFbqXET0iGLeixzeNJgQ
+ test-macosx64/debug-mochitest-webgl1-core-e10s: UnGhUwKxQJu6LWImLS1bHQ
+ test-macosx64/debug-mochitest-webgl1-ext-e10s: PR_efO1WQHW_4HfZnrmjZA
+ test-macosx64/debug-mochitest-webgl2-core-e10s: TBjTBy5PSAyP7_Kj8U4TRA
+ test-macosx64/debug-reftest-e10s-1: LpogbWbQS_SBeFkcjJYUNQ
+ test-macosx64/debug-reftest-e10s-2: DIl5dU7-Ra-mbYvnKPZaIA
+ test-macosx64/debug-reftest-e10s-3: ZbvHp7krT5iqYBxtN-GvTg
+ test-macosx64/debug-web-platform-tests-e10s-1: DnfOULj_QoqjUT2i7CZ6dg
+ test-macosx64/debug-web-platform-tests-e10s-10: Egvi2BCLSG-67M-MVF5M8w
+ test-macosx64/debug-web-platform-tests-e10s-2: eAH5t3zuR2mQRLgV5WYbMA
+ test-macosx64/debug-web-platform-tests-e10s-3: ferHdFWnTdW_JOCOKLcLmg
+ test-macosx64/debug-web-platform-tests-e10s-4: GAR3cjCXRuqf-mDwojCyrw
+ test-macosx64/debug-web-platform-tests-e10s-5: UclJk4u3RKe_y6u3aPSFRw
+ test-macosx64/debug-web-platform-tests-e10s-6: PjDS5BZATk2Puf1TlYHkfQ
+ test-macosx64/debug-web-platform-tests-e10s-7: Ct0PortLRzaJEzkN-rhH_g
+ test-macosx64/debug-web-platform-tests-e10s-8: IkLzQyOVTGySCs_ul5FFcw
+ test-macosx64/debug-web-platform-tests-e10s-9: cQVPT2_WRkaisPphm-1pyA
+ test-macosx64/debug-web-platform-tests-reftests-e10s: Rulmk2fMTZmbaB34Ez9ItA
+ test-macosx64/debug-xpcshell: aw_dKWSmRUe7ah3ZLm5Sgw
+ test-macosx64/opt-talos-bcv-e10s: Mkc2sBuRSmCk7M9QArPxXg
+ test-macosx64/opt-talos-chrome-e10s: FDDLvU8HSqCBqMxkZ-khYg
+ test-macosx64/opt-talos-damp-e10s: TVrKS9SNTtiruaRhAn6q-Q
+ test-macosx64/opt-talos-dromaeojs-e10s: XAVKLdwSRMGeqbmMfaj1Mg
+ test-macosx64/opt-talos-g1-e10s: GTiQ6dxJTvy7js3M_VOD6Q
+ test-macosx64/opt-talos-g4-e10s: Dnc_1zEzTkG8ILqJEJXK9A
+ test-macosx64/opt-talos-g5-e10s: RX5cKf4NRh6Bkqe74iHrsw
+ test-macosx64/opt-talos-other-e10s: ATrjShNkR9aeuqOtcDih9Q
+ test-macosx64/opt-talos-speedometer-e10s: ZelTPDpTR0erCsWK5NB5Hw
+ test-macosx64/opt-talos-svgr-e10s: P8kbt8M5RPqS7vS8zIrJzg
+ test-macosx64/opt-talos-tp5o-e10s: HiDm8Bg7Qc6_GFk0X9Sh9A
+ test-macosx64/opt-talos-tp6-e10s: ZeW57LJjT5O-D0BTVaqsLA
+ test-macosx64/opt-talos-tp6-stylo-threads-e10s: CBfRgTb7QtOvdGtMzcau5Q
+ test-windows10-64-devedition/opt-cppunit: KoN5Sgo1QX6-2bxEx1nLxg
+ test-windows10-64-devedition/opt-crashtest-e10s: ABsSnyVHTfOvB0qWI8v6sA
+ test-windows10-64-devedition/opt-firefox-ui-functional-local-e10s: Ui7sfJgNR2O0RWXCt0R2Og
+ test-windows10-64-devedition/opt-firefox-ui-functional-remote-e10s: fgym_uEfRp27Z1LUTwr4Bg
+ test-windows10-64-devedition/opt-marionette-e10s: XUTlvhCeTOOf2i3uDgCijQ
+ test-windows10-64-devedition/opt-marionette-headless-e10s: UdVntFU1SuqPrzIt8NB2kw
+ test-windows10-64-devedition/opt-mochitest-a11y: OKYNS3gWTmiwFq-GnvWQKA
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-1: PxTasAPIS9OQ2PylO1DqQg
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-2: Wj0vK-7UT_qQHmEF8VQ24g
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-3: V47SF-ZBRCaivsCcYZMvVA
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-4: b7J833_LRfWv37-E7l-TtQ
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-5: bwmzYMdtSyysvypGHtkcOQ
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-6: P8JPPQmjRHGZ3Vm70tfOzQ
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-7: MIAPTRd7Q5uviDDSUgyjGg
+ test-windows10-64-devedition/opt-mochitest-chrome-1: NlwxQg51RqWmklo5fkrowg
+ test-windows10-64-devedition/opt-mochitest-chrome-2: MY6xkHuRQIODy2T9BO0WkA
+ test-windows10-64-devedition/opt-mochitest-chrome-3: Fjk9RKFZQQ6rfQH_BV0H-Q
+ test-windows10-64-devedition/opt-mochitest-clipboard-e10s: Z3gwR6x2TvWRJ2bjoX0yVA
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-1: aZUGqnFCTOW99sfRcmvBZg
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-2: NCqv49uTTEeMOt4LRCQEyw
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-3: S62K0NDaSkiLW-Wh9RvBWA
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-4: Fts2h0gwRlSq969c7THpRA
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-5: ZFcX8mS9RJG17t74ZR6Otg
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-6: UEHkvnVlSEOcKmTizyXULA
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-7: HHJbfSd1QYmO5QmxhPqu6g
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-8: I5rTqfEFSl26I2oPptCaAA
+ test-windows10-64-devedition/opt-mochitest-e10s-1: bsXDjdnlSne_Q54A_uVUhg
+ test-windows10-64-devedition/opt-mochitest-e10s-2: JLfVynSvS4qwBpN3hrjUDQ
+ test-windows10-64-devedition/opt-mochitest-e10s-3: JuDucs7JT4KE2NvrqkFdmw
+ test-windows10-64-devedition/opt-mochitest-e10s-4: agPJLGAHSSSBkV85JE3nxA
+ test-windows10-64-devedition/opt-mochitest-e10s-5: IXvtVUL5SSefJOk23wGJ-Q
+ test-windows10-64-devedition/opt-mochitest-gpu-e10s: AVVOo1RPQKyduhimjGTLeg
+ test-windows10-64-devedition/opt-mochitest-media-e10s: BHMKRmpFQ06xrWQhHuKc6w
+ test-windows10-64-devedition/opt-mochitest-webgl1-core-e10s: V0q_RuSvQpWC6jSSHpy1uA
+ test-windows10-64-devedition/opt-mochitest-webgl1-ext-e10s: Vul6uDYJQDekoSYNX-bgRQ
+ test-windows10-64-devedition/opt-mochitest-webgl2-core-e10s: QiX9JrZ0SWeQUoZsXbrtHQ
+ test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-1: ILki9ThyTs6Vl6C4hVHLWA
+ test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-2: UaWz_lRKQb6swZ9xbuDpJQ
+ test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-3: QSnxPccYRFqBfoVlu9tA2g
+ test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-4: fpO79lxdQZyjdIT271JW7w
+ test-windows10-64-devedition/opt-reftest-e10s-1: RGDEkNghRZ-JDH8ofbEF3A
+ test-windows10-64-devedition/opt-reftest-e10s-2: DiK9v4cBRzK6705pigLsbA
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-1: Ro7r858uQEyfsij5dwXVZg
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-10: e4FX7g_uSuaepwtjI4_6jQ
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-11: RTvy_I4BQiSaEc1B6T8EUg
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-12: aleo0UawQY-iDVpg5Eeicg
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-2: J9S_oAwxTx27Afwh6SwKbA
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-3: OO87OHsLRbqeZqCq5qUMTQ
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-4: OWi1kXIQQLi9bxfXglJW5Q
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-5: BQNRdy6hTJKaBmygr_RkTw
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-6: VhJcLNziQrOxe-8gmKWlEg
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-7: ECqsC4amRC68rk0j9NPXjw
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-8: dkaDASkLQZ2FfXro8fjIeA
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-9: AR5HA0-lSF-1RfQYUwxcWg
+ test-windows10-64-devedition/opt-web-platform-tests-reftests-e10s: drMiq3VVS7CNWWSdjvfqJg
+ test-windows10-64-devedition/opt-xpcshell: TNGSOpHWSD-_jEmp2K4BEQ
+ test-windows10-64-msvc/opt-talos-bcv-e10s: ad5yeuj0S8e8FMSRe1XlBg
+ test-windows10-64-msvc/opt-talos-chrome-e10s: MODrd_oAQP-L3JNXgCaoHg
+ test-windows10-64-msvc/opt-talos-damp-e10s: EfWI3_qNRFCB9DosqzRm3w
+ test-windows10-64-msvc/opt-talos-dromaeojs-e10s: e0haqzCCTVebqq9V-2LHAw
+ test-windows10-64-msvc/opt-talos-g1-e10s: aT00QIMVRF6SvcUrnzPfVA
+ test-windows10-64-msvc/opt-talos-g4-e10s: QYEDxUAdSWmtP1qcbrni1w
+ test-windows10-64-msvc/opt-talos-g5-e10s: JZV3KDeQQD-9c-70Q1Fdzw
+ test-windows10-64-msvc/opt-talos-other-e10s: Pg36ZRxPQfiwfLkYNNpL0Q
+ test-windows10-64-msvc/opt-talos-speedometer-e10s: QUECAQBeQl2WjjEfejRleA
+ test-windows10-64-msvc/opt-talos-svgr-e10s: cdActXyvRkuWd0RIUEuMgQ
+ test-windows10-64-msvc/opt-talos-tp5o-e10s: NCaa6iLGSH6qzxjq9SAKJg
+ test-windows10-64-msvc/opt-talos-tp6-e10s: IWDuEuK0TAG19qVQ5U8bZQ
+ test-windows10-64-msvc/opt-talos-tps-e10s: ea7JfHj-Sqyk9CiJAG5gqg
+ test-windows10-64-nightly/opt-awsy-base-e10s: N2NEswF2TJqxgdRpi9-9_g
+ test-windows10-64-nightly/opt-awsy-e10s: FBEN7oYWSAe7WLfvdl880g
+ test-windows10-64-nightly/opt-cppunit: X67MdELCSgWJfxYQ0Cel6w
+ test-windows10-64-nightly/opt-crashtest-e10s: aYuX9hcbRRqa5SupW1FoKw
+ test-windows10-64-nightly/opt-firefox-ui-functional-local-e10s: Ea3uCnPoR2ixx8QuUf1pkw
+ test-windows10-64-nightly/opt-firefox-ui-functional-remote-e10s: LeEv91MQT9u0F6Go5X9w4g
+ test-windows10-64-nightly/opt-marionette-e10s: YOtOwiaGTFORjUMfmnK6Uw
+ test-windows10-64-nightly/opt-marionette-headless-e10s: W9u-yr7FSKuyV6qwhkyxrw
+ test-windows10-64-nightly/opt-mochitest-a11y: QBxMfAimR1yDmyEId5NkJA
+ test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-1: E_dB7MRRReq1DV8I2kwKPg
+ test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-2: QOTAlmPMStWg2rtQiKSz6Q
+ test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-3: N9c-cBdeQq6LrelZMlFZiQ
+ test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-4: WpNbVdNjSl6UjbynfbXr9A
+ test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-5: ZPJP1bnrTsm3psZMu4SLfQ
+ test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-6: EXlYJ2MnRTyjLYvOGmMcQA
+ test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-7: Mus-xpCcRkK9Qjhmpk46Vg
+ test-windows10-64-nightly/opt-mochitest-chrome-1: D3Sq3LIJSiuO3nFCsR8vxQ
+ test-windows10-64-nightly/opt-mochitest-chrome-2: QyRpMoTUSrS9c-p-Y4ut6A
+ test-windows10-64-nightly/opt-mochitest-chrome-3: CD9WbzOFTkGPc32vblTirg
+ test-windows10-64-nightly/opt-mochitest-clipboard-e10s: MiFWNxgKSYOnVONTOnE2zw
+ test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-1: HamAS6CzTnGnajX73mygpg
+ test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-2: DCsir_d6QmS1yZryGpfBeg
+ test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-3: JOyfWqpORHmDyG39NKNCNg
+ test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-4: diQh_YGERqKBLPfUarh5uQ
+ test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-5: M8OZYHoBTWKIfjOujDHehQ
+ test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-6: RhKKhch6RjKlde6qC3L2WQ
+ test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-7: ULbtH7-LS5CT7Vx9Ojq7nA
+ test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-8: Wwok1dqLSKeVDpCLtcgihQ
+ test-windows10-64-nightly/opt-mochitest-e10s-1: RAupkoz9TZ2ObM5LYRO1tw
+ test-windows10-64-nightly/opt-mochitest-e10s-2: IsrGJe11T_Kv0kG15lEwWw
+ test-windows10-64-nightly/opt-mochitest-e10s-3: V349QccLQc2qX4Eq8Fgymw
+ test-windows10-64-nightly/opt-mochitest-e10s-4: MWE8eEW6TFqc5ZZagJek_g
+ test-windows10-64-nightly/opt-mochitest-e10s-5: E3_sMJ1WTFi3c6H17WcthQ
+ test-windows10-64-nightly/opt-mochitest-gpu-e10s: Cpaj0FD9QCiiEk060YfhlA
+ test-windows10-64-nightly/opt-mochitest-media-e10s: MwcXiAGORIKP67zT8FecRw
+ test-windows10-64-nightly/opt-mochitest-webgl1-core-e10s: NmP_SjDfRym6Hczr2dPmGw
+ test-windows10-64-nightly/opt-mochitest-webgl1-ext-e10s: H7oeSiX2R8ib7w4dXSF9Ww
+ test-windows10-64-nightly/opt-mochitest-webgl2-core-e10s: a7tbELbcSp2HtNqRirQYwQ
+ test-windows10-64-nightly/opt-mochitest-webgl2-ext-e10s-1: ToNakT3PSBu859X7ZC7kUg
+ test-windows10-64-nightly/opt-mochitest-webgl2-ext-e10s-2: Ju4ddogMR7GjKQznevFb6A
+ test-windows10-64-nightly/opt-mochitest-webgl2-ext-e10s-3: CEsuOtMfRLaClGjy62QaxA
+ test-windows10-64-nightly/opt-mochitest-webgl2-ext-e10s-4: Osebfof-TJ-O3qjAAFId9w
+ test-windows10-64-nightly/opt-reftest-e10s-1: TSl71yHIQDWhcwIEQ1ds5A
+ test-windows10-64-nightly/opt-reftest-e10s-2: WW3TpvWGQdyW2n43MATydA
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-1: B8R0PXYcR8SZst13mBiyLQ
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-10: OuXXLPTVRpa_freaxG5rXQ
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-11: dOyi0VWeT-qhsuhbor0hjg
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-12: IW_kcn2PQ3C_s6LuEedPcg
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-2: R__1PgCIT5aDsDf9ZA5nPg
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-3: boTbD4w5QG2Upg_97rb1jQ
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-4: Z60d-OJyR1W_J3pgwbRgdA
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-5: VVVX7J7GRfm7_VpPA0E6Pg
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-6: TbLXS4ebTVeklyK-drFjUQ
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-7: QoRUtD1dS9aid5fhdmEAOw
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-8: Huywop4CRi2OdfjHBY00Hw
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-9: BI-KyJYhTsSIQxTSaEJ2EQ
+ test-windows10-64-nightly/opt-web-platform-tests-reftests-e10s: V_PZ_XO3T6-UUcnedbDjYA
+ test-windows10-64-nightly/opt-xpcshell: c-yw9DRRRZu9oJREmsMTWA
+ test-windows10-64-qr/debug-crashtest-e10s: Vq_oHsqRTNy7fTgFV5PEoA
+ test-windows10-64-qr/debug-mochitest-gpu-e10s: aq2-nw0iQi2yKz8GUAW27A
+ test-windows10-64-qr/debug-mochitest-media-e10s: ZfjQoOxpQji0IiETrbF7pw
+ test-windows10-64-qr/debug-mochitest-webgl1-core-e10s: OJZ3FvXnSEOk5EqHo62j8w
+ test-windows10-64-qr/debug-reftest-e10s-1: HFAIn8fxR0mQwrU3FwoNjA
+ test-windows10-64-qr/debug-reftest-e10s-2: ZjzzaHS0TiOs_m3x7SGZyA
+ test-windows10-64-qr/debug-reftest-e10s-3: HPFIXndNSwCbk1oC2hG-hA
+ test-windows10-64-qr/debug-reftest-e10s-4: ZhTMWsN8Rfq7fSAlLhM-KQ
+ test-windows10-64-qr/opt-talos-chrome-e10s: A2nrfY89SuuEalMvU2RmXw
+ test-windows10-64-qr/opt-talos-damp-e10s: eqL95epzTp-S5o_8UoJmDQ
+ test-windows10-64-qr/opt-talos-dromaeojs-e10s: UIMfQqS9QU2R_QO_L2b1pQ
+ test-windows10-64-qr/opt-talos-g1-e10s: Z8rOrQo0Qcit1ahsVW9x9Q
+ test-windows10-64-qr/opt-talos-g4-e10s: OlDE94AETwClIlR-4IlMuA
+ test-windows10-64-qr/opt-talos-g5-e10s: XQvHIEM6QterHUC4vTmulw
+ test-windows10-64-qr/opt-talos-other-e10s: RpEZ4GIuTOWW_jto8sOsfA
+ test-windows10-64-qr/opt-talos-speedometer-e10s: IScwK1UESMWO1K7ihRnXLw
+ test-windows10-64-qr/opt-talos-svgr-e10s: JFUW2EulRxm099DzpEmyjg
+ test-windows10-64-qr/opt-talos-tp5o-e10s: EB76dkJcR-idm3M72yDDDg
+ test-windows10-64-qr/opt-talos-tp6-e10s: aY3NrorwSxqZX1yLSMMSXg
+ test-windows10-64-qr/opt-talos-tps-e10s: Xd39snH6Te6_GBvCfUnxog
+ test-windows10-64/debug-cppunit: dcXoU9H2QU-jsC84EuJOvQ
+ test-windows10-64/debug-crashtest-e10s: DcnPKr76SyWlNWziBra3_A
+ test-windows10-64/debug-firefox-ui-functional-local-e10s: DaADnxFESuyaJLYgwsQEpg
+ test-windows10-64/debug-firefox-ui-functional-remote-e10s: ar3sMMCZQWmWA_mfSpdpng
+ test-windows10-64/debug-gtest: c2hf2S5nSdeDvI6PIhjqyA
+ test-windows10-64/debug-marionette-e10s: Wg8tOqH5SRemRlOygb2PjA
+ test-windows10-64/debug-marionette-headless-e10s: BD_5RSidTVOAh8oQiGDvZw
+ test-windows10-64/debug-mochitest-a11y: FDyz2xdlQuCLJ4MdjVJ1WA
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-1: beugRyqWQTy-iISJZ5vqXA
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-2: SrUDHK7FQXCNrrRfCHNGww
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-3: N6ZUJIdRSj6gj1KzIFyMcA
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-4: D56zLDIJSq-q-sFNlhrZmw
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-5: acDOLY_WQNmTrYIesclVCw
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-6: BqaZ5dEsR--ohxAMkhr4yA
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-7: LFbal7JDS0mr1TmhqdsJZw
+ test-windows10-64/debug-mochitest-chrome-1: LoXcpZy5Sze01qVmnxKdlg
+ test-windows10-64/debug-mochitest-chrome-2: Sh_ArCdRQ_yvaiqDc2sPVw
+ test-windows10-64/debug-mochitest-chrome-3: ZBFxySS0RcO0nG5sqXvtpg
+ test-windows10-64/debug-mochitest-clipboard-e10s: T4gJx7lFTBC6BFhdjNEmeA
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-1: WCAOfm-STzy6KLR3hgs-vA
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-2: BGeN1Pi9QoC1pS9KAC3HNQ
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-3: LgF_PaKkTs2cBKUaEFyoJg
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-4: WfoBJJLXSS2jAWrZ64yWog
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-5: NcNcVPVrQDS5KuIeADlIIw
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-6: cswGzBTsTcG_LSKet40qZQ
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-7: Ua7zSn_IQ_uRHmULcNlTwg
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-8: NkbkCELNRnGbj9yuYpBEtw
+ test-windows10-64/debug-mochitest-e10s-1: VfwqjoClRLaLKsqRBcH9Qw
+ test-windows10-64/debug-mochitest-e10s-2: f_rWd0TxQPC89r8V0zi9EA
+ test-windows10-64/debug-mochitest-e10s-3: YFxsgIerRtaFBGnGdZsGPA
+ test-windows10-64/debug-mochitest-e10s-4: RTPqH8RwSU-L6AYIDZ4ljw
+ test-windows10-64/debug-mochitest-e10s-5: P8sh1YjZRk6hakvjSYNvpg
+ test-windows10-64/debug-mochitest-gpu-e10s: HNNHAq-7S7CThzcSzdd7xQ
+ test-windows10-64/debug-mochitest-media-e10s: KyTjdkP2RU2WsgUK1C6wXw
+ test-windows10-64/debug-mochitest-plain-headless-e10s-1: N3t3_DwYSDmBeAE6V0n8Jg
+ test-windows10-64/debug-mochitest-plain-headless-e10s-2: ZzWyJzYtQNyA3TXQGxmP3w
+ test-windows10-64/debug-mochitest-plain-headless-e10s-3: b8m69rP7RueSo9Lc913hkA
+ test-windows10-64/debug-mochitest-plain-headless-e10s-4: Vw2pFe0XTtW6Io1qjsEadQ
+ test-windows10-64/debug-mochitest-plain-headless-e10s-5: J7lhTlrFTz-bd2oQ6DeesA
+ test-windows10-64/debug-mochitest-webgl1-core-e10s: LBpbxbB_RmWdZZ0brqPWzQ
+ test-windows10-64/debug-mochitest-webgl1-ext-e10s: Aw4ij6yASf-OD9OWN2SmDA
+ test-windows10-64/debug-mochitest-webgl2-core-e10s: QlY4yiUeTpKSeSwUPWL2lw
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-1: CXkeRK43SaerG8BE-dmM8g
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-2: RYAPe2UsSvaEIC-oX7ARAQ
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-3: LbkwInuYSJOFQ-TLbDdvqQ
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-4: YBxH4uvJSp28WlwGPKlV7Q
+ test-windows10-64/debug-reftest-e10s-1: SrKOQKOHSl-aa_GpdtvL9Q
+ test-windows10-64/debug-reftest-e10s-2: ce4BBh2SRK6oUVyz-iiaiw
+ test-windows10-64/debug-reftest-e10s-3: VOFP6k1WQSexUCmUEzUSRQ
+ test-windows10-64/debug-reftest-e10s-4: JnE2kQcvRKaU-4LMw1MFxg
+ test-windows10-64/debug-web-platform-tests-e10s-1: WBgSZbwQRPC9E_U_yu_rTQ
+ test-windows10-64/debug-web-platform-tests-e10s-10: TXpnxrpURjOXOlGY61zJmQ
+ test-windows10-64/debug-web-platform-tests-e10s-11: T8FM5pwQSIGqa5ybja5WSA
+ test-windows10-64/debug-web-platform-tests-e10s-12: UvLE3lXpRd6rJQw2fhsDcA
+ test-windows10-64/debug-web-platform-tests-e10s-2: boJN9UUQSgu9yF4HNbrzEg
+ test-windows10-64/debug-web-platform-tests-e10s-3: S5ogR_9JRz6apzh2E4IHoQ
+ test-windows10-64/debug-web-platform-tests-e10s-4: QV862XybROGYYXA2AapRIw
+ test-windows10-64/debug-web-platform-tests-e10s-5: YbsWw4H6TwmooIxH3wCuvA
+ test-windows10-64/debug-web-platform-tests-e10s-6: RH5xayQ3QiyZJ43XpPvX1w
+ test-windows10-64/debug-web-platform-tests-e10s-7: bYsGQx76Q4ise3k1SSo3CA
+ test-windows10-64/debug-web-platform-tests-e10s-8: C_jhpsyxRPCbsQd_hWKqvA
+ test-windows10-64/debug-web-platform-tests-e10s-9: YoC97kwWTMmBwqr2r2FOlw
+ test-windows10-64/debug-web-platform-tests-reftests-e10s: OsmTL-dHQWmigOV4f6vwFQ
+ test-windows10-64/debug-xpcshell: dzLDl5VrSzW5bqiuSbN0DA
+ test-windows10-64/opt-talos-bcv-e10s: Z-Z-iOD5SfSkuI-JSvOLgQ
+ test-windows10-64/opt-talos-chrome-e10s: P4rK_IUQS-yWeNdGYo8C7A
+ test-windows10-64/opt-talos-damp-e10s: Z0ORgjuPQ42ainod0hMfRw
+ test-windows10-64/opt-talos-dromaeojs-e10s: YRyaigWbRqmCbWs1tUcrTQ
+ test-windows10-64/opt-talos-g1-e10s: VYn1Gi4xSzGBxkw_GCygSQ
+ test-windows10-64/opt-talos-g4-e10s: Rducpu0UQ72-8o7-MgERcA
+ test-windows10-64/opt-talos-g5-e10s: LrOOz3ePRXmZy9KWfq0ISw
+ test-windows10-64/opt-talos-other-e10s: Q987z-ehS3ystkvpK5QQIQ
+ test-windows10-64/opt-talos-speedometer-e10s: BV3qoZhyRqWPt3T4TGRcbA
+ test-windows10-64/opt-talos-svgr-e10s: PjDfftwvQZSioAXltSCXng
+ test-windows10-64/opt-talos-tp5o-e10s: K6jnpaWiSg2POTNqpfHpRg
+ test-windows10-64/opt-talos-tp6-e10s: C1JOkLYZS8KutTXi4otrKg
+ test-windows10-64/opt-talos-tps-e10s: bYPJgPY2Rvu8YGyZAfsKBw
+ test-windows7-32-devedition/opt-cppunit: KwKfAp-tQXuKQ8YUjDPqiw
+ test-windows7-32-devedition/opt-crashtest-e10s: SVZF7QOmRqygcYMXbyl24g
+ test-windows7-32-devedition/opt-firefox-ui-functional-local-e10s: XW__mIhpQv6Zy8Am6ELaRA
+ test-windows7-32-devedition/opt-firefox-ui-functional-remote-e10s: Urh4kf_qQaa0LbVtuZE9xg
+ test-windows7-32-devedition/opt-marionette-e10s: PR1978RgQQukTCJi73wkJA
+ test-windows7-32-devedition/opt-marionette-headless-e10s: FbH6mEqyQHOisyz_gPw_Ew
+ test-windows7-32-devedition/opt-mochitest-a11y: C5TTmuUkQpqJHLkhdO6umA
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-1: OFbY20j2Ri2xRdNqF5WyBw
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-2: T4j4fQFNSq6aONzt82U1XQ
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-3: BSNxYR_VRi-uFf2SFhmHLg
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-4: Y_zFEam9Rxy5zBoUyqoAbA
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-5: L_BVSdwnRG23TniLhEkCtA
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-6: KGfpQbuETJaoKWnWF83r7Q
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-7: LuOhp-RaR0OnACOzU4queA
+ test-windows7-32-devedition/opt-mochitest-chrome-1: Iage7zvFR96X7tS4PQ5qRQ
+ test-windows7-32-devedition/opt-mochitest-chrome-2: X-r4-xotRUiReP5bs-lBpQ
+ test-windows7-32-devedition/opt-mochitest-chrome-3: MMICfr2tQcq8vrgWpWvwVQ
+ test-windows7-32-devedition/opt-mochitest-clipboard-e10s: LYQ-sWo5T3OCULkPE1wxbw
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-1: a0d02VNXRraEbNH466Y6Xg
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-2: bm7uuxraT6mzkWSDNZiJjA
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-3: DZapZ6OJQluY4yooIhoJVw
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-4: CUrzMX1RTR61AYA6b5s6TQ
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-5: GbDC3tqFT7KhNBl5_D8lxA
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-6: UjEeSAbfQju2QwD6ZrLM_w
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-7: W2tqAzxwRqi6iQIAfU9lyw
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-8: LEPlS8Z-Q6iNV8sZpSHBng
+ test-windows7-32-devedition/opt-mochitest-e10s-1: bnJe_8Y_RbmWKEMK9fAR4Q
+ test-windows7-32-devedition/opt-mochitest-e10s-2: IqL5nmasQtSvTu5G0BuIfA
+ test-windows7-32-devedition/opt-mochitest-e10s-3: NAWAF-UlR1y4_elSmKVCpw
+ test-windows7-32-devedition/opt-mochitest-e10s-4: LxFJd340S-mZfhVHl60yyQ
+ test-windows7-32-devedition/opt-mochitest-e10s-5: Xhw5d-zxRS-bKtI_4CBU1g
+ test-windows7-32-devedition/opt-mochitest-gpu-e10s: b0V4zfOhTCe-_LLaBvdnlw
+ test-windows7-32-devedition/opt-mochitest-media-e10s-1: Qp4EYYsWQlmaZbGm6AKLag
+ test-windows7-32-devedition/opt-mochitest-media-e10s-2: NUJWLSQoRWyBwqDlY_B4Qw
+ test-windows7-32-devedition/opt-mochitest-media-e10s-3: DRGAFUdCR_W7RygTSl9kEQ
+ test-windows7-32-devedition/opt-mochitest-webgl1-core-e10s: A8nYb6LzT6mkYcZEM72e9w
+ test-windows7-32-devedition/opt-mochitest-webgl1-ext-e10s: bhAt77UmStWRqiZaqDQzXQ
+ test-windows7-32-devedition/opt-mochitest-webgl2-core-e10s: fpFmIMBRSNCegDkGE-79OA
+ test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-1: Mgh5pTNDT0eASjJoZ_M19w
+ test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-2: LyFiwww6SgWUOw62QfFGcQ
+ test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-3: P77AwXuFS4ylnXMw2UE6ng
+ test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-4: euhPD3bhT1up15btNKCd8w
+ test-windows7-32-devedition/opt-reftest-e10s-1: FMoqrUUTQlOQMIftXCw5uQ
+ test-windows7-32-devedition/opt-reftest-e10s-2: JN8KPcHBQAicKB3BQ3goCg
+ test-windows7-32-devedition/opt-reftest-gpu-e10s-1: W03lwO8vTp2w7dhYotoBcQ
+ test-windows7-32-devedition/opt-reftest-gpu-e10s-2: YU8ls94gQX6tyIYOZLKJzQ
+ test-windows7-32-devedition/opt-reftest-no-accel-e10s-1: Cg0YpbjdSSKix2eCpPHfPQ
+ test-windows7-32-devedition/opt-reftest-no-accel-e10s-2: Y4SlCq63Rfeisueq1XlNlg
+ test-windows7-32-devedition/opt-reftest-no-accel-e10s-3: Bvy32h0cR-GGmloqHqSKbA
+ test-windows7-32-devedition/opt-reftest-no-accel-e10s-4: KKQf0UqbQ4KswjbxGsxN9w
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-1: OlR0_7e-R_-cFZuVLhxIKw
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-10: Hiw9RBcaQcmK3KRz0u4Gpw
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-11: dmLw_Vi7TEORJlmS2iM8UA
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-12: efgxrbg6RHiDKmOPnQKZuQ
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-2: EyKpqtFtSmWo3FNz5lSRYA
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-3: QfuQDqtyR-u_Qhyh3JwxIA
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-4: JJys2iYdSFe3ePEW760dpw
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-5: WW_mw761RW-FKtK7TZZPMA
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-6: Xc7MIQdoRjSuheWLIiwU0A
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-7: JkopvXjlT7qmbC6kTf_hdQ
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-8: f_wj0bDcTtO1FKVPtUgeRA
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-9: RFrAiWCSQ--9tZ1PrtfI2Q
+ test-windows7-32-devedition/opt-web-platform-tests-reftests-e10s: DVfM5hOzTWCCaAuniAjC9g
+ test-windows7-32-devedition/opt-xpcshell: StrGf1lTQq2DX3J26AgYHA
+ test-windows7-32-msvc/opt-talos-bcv-e10s: DgncjKDWSHKj_G6cAGfpjQ
+ test-windows7-32-msvc/opt-talos-chrome-e10s: fBVeJGajQ9WTrnmJONQQ6A
+ test-windows7-32-msvc/opt-talos-damp-e10s: DKiSq5mwTmCkHaqSKJtskA
+ test-windows7-32-msvc/opt-talos-dromaeojs-e10s: YcdgW-QoSJODZH81cfe1VQ
+ test-windows7-32-msvc/opt-talos-g1-e10s: Oa25OrYTSO2w6zR9yaUMYw
+ test-windows7-32-msvc/opt-talos-g4-e10s: Up3JjZChQw6CJRpHbgmU6w
+ test-windows7-32-msvc/opt-talos-g5-e10s: NckMuodzSBaZ2hYppHMNyw
+ test-windows7-32-msvc/opt-talos-other-e10s: TwyMOIBqSN6l53k-93bgAg
+ test-windows7-32-msvc/opt-talos-speedometer-e10s: A8z7BGelTrKfXo9bmr6S3A
+ test-windows7-32-msvc/opt-talos-svgr-e10s: Rpebbr5NSmO5z4opM-nJtA
+ test-windows7-32-msvc/opt-talos-tp5o-e10s: SBW1s9vFSZyliRTjzDeWPw
+ test-windows7-32-msvc/opt-talos-tp6-e10s: TOxkOPSRTm6Rj9vufZep-A
+ test-windows7-32-msvc/opt-talos-tps-e10s: V_qKt-9GTJq8KVTOUepcNQ
+ test-windows7-32-msvc/opt-talos-xperf-e10s: VgFJUOHbSfOxBnhhSQa97Q
+ test-windows7-32-nightly/opt-awsy-base-e10s: HV7jfPRXTdmtL9qbHG9NAg
+ test-windows7-32-nightly/opt-awsy-e10s: TUg7cuVbSwuD80AOHvPV-Q
+ test-windows7-32-nightly/opt-cppunit: BO722ioQQ5irIYDAR2FXVA
+ test-windows7-32-nightly/opt-crashtest-e10s: LoVUJYHqSD2-GsTdLywbFw
+ test-windows7-32-nightly/opt-firefox-ui-functional-local-e10s: PonrDDt1TF-oDSS2XuW9Gg
+ test-windows7-32-nightly/opt-firefox-ui-functional-remote-e10s: OejDfksBQaGNtBJ816zLAA
+ test-windows7-32-nightly/opt-marionette-e10s: Nb1JQhw3QXyRp_eg20iLqg
+ test-windows7-32-nightly/opt-marionette-headless-e10s: RK5d3vVFTza2o1DVTi2txA
+ test-windows7-32-nightly/opt-mochitest-a11y: fo2u5FpxRdKnzTWyxiLm2w
+ test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-1: fBlfTpEQSJu53YrJQsQC1w
+ test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-2: fIe2hSXPTB-268Dc8t5ZUA
+ test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-3: QgAPu9dUQReO949vie_ArQ
+ test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-4: ZEg9TfpSSESW-FgaDfSpjA
+ test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-5: VljfU8kMTgiTm3bbVvb6CQ
+ test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-6: LyjycC6_SBSb7Ua81H32jw
+ test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-7: fMOwIA_QTOS8ZiKRlAGgCQ
+ test-windows7-32-nightly/opt-mochitest-chrome-1: Tnuiw55nSVeAEH6wPUmYIw
+ test-windows7-32-nightly/opt-mochitest-chrome-2: IPbxje_MRtyUIiZ6zkfJ9Q
+ test-windows7-32-nightly/opt-mochitest-chrome-3: IK2mdnxzREqTtJLvmY4jlA
+ test-windows7-32-nightly/opt-mochitest-clipboard-e10s: Q67ndtymQ_SP9DmD3wF-mg
+ test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-1: VtPh6Yk8TP6k1U6UZSFlBw
+ test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-2: aQhM26S1QXigkJE4bKcsuw
+ test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-3: DHHVSKHETLSsFnZdaNmA6A
+ test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-4: Y7gdCvQFS5mMB_Lw2r4uyQ
+ test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-5: W6Zs8tDGT4G6_ZbRVd6kZA
+ test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-6: LGLvFNBiSqCC-KVUXWeEUA
+ test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-7: Bv-WR9jTTvKBd22kshXw9g
+ test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-8: SAIXkoJhTOWEdK9UIwfKTQ
+ test-windows7-32-nightly/opt-mochitest-e10s-1: Pfwlbo2ORG6TycIXnnEghA
+ test-windows7-32-nightly/opt-mochitest-e10s-2: BLs5W1QeTS24Ar65zFMBUw
+ test-windows7-32-nightly/opt-mochitest-e10s-3: aM9iVakkQfiaMioDlpckew
+ test-windows7-32-nightly/opt-mochitest-e10s-4: csiLPz2SQUiVcHh4d_qtJQ
+ test-windows7-32-nightly/opt-mochitest-e10s-5: HqIXSw8KS62QM5jO5-7o6w
+ test-windows7-32-nightly/opt-mochitest-gpu-e10s: CcFWYlL7S1y4EwvxsoMzWw
+ test-windows7-32-nightly/opt-mochitest-media-e10s-1: ExxKdQyTSeWnzzdPC49s7Q
+ test-windows7-32-nightly/opt-mochitest-media-e10s-2: St-RTAZVQ9ev12d3qAxOiA
+ test-windows7-32-nightly/opt-mochitest-media-e10s-3: bhod472FT62wdlHPcjtT9g
+ test-windows7-32-nightly/opt-mochitest-webgl1-core-e10s: aB99GpcSQ5usbLG6NE50wg
+ test-windows7-32-nightly/opt-mochitest-webgl1-ext-e10s: MBuloNosTZC2F-WgV6CXdQ
+ test-windows7-32-nightly/opt-mochitest-webgl2-core-e10s: Vv5HU1cvRgWKMnnsuzuRlg
+ test-windows7-32-nightly/opt-mochitest-webgl2-ext-e10s-1: LRS_uuddQOy3o41ERcIk9g
+ test-windows7-32-nightly/opt-mochitest-webgl2-ext-e10s-2: VYZaAXCIQviaOnh5cPk3ag
+ test-windows7-32-nightly/opt-mochitest-webgl2-ext-e10s-3: QpHNnu6OR9qdSI2PxOQUsg
+ test-windows7-32-nightly/opt-mochitest-webgl2-ext-e10s-4: AuE6-fopQ3GYBcze9ELbOQ
+ test-windows7-32-nightly/opt-reftest-e10s-1: NLenXZ7TTRecdNAXjWgnDg
+ test-windows7-32-nightly/opt-reftest-e10s-2: CpNKGntmS0ekRM8EDyWUYg
+ test-windows7-32-nightly/opt-reftest-gpu-e10s-1: YlM95Vf3RMSb-W_nIOFuNg
+ test-windows7-32-nightly/opt-reftest-gpu-e10s-2: QxcwyDwbRluI4d9MHWWoyg
+ test-windows7-32-nightly/opt-reftest-no-accel-e10s-1: cel2S3r6QteR14vBomSgwg
+ test-windows7-32-nightly/opt-reftest-no-accel-e10s-2: RVpOchBXR4Gm4hQvauGwCQ
+ test-windows7-32-nightly/opt-reftest-no-accel-e10s-3: dPmPo6l8RVuxoNL_9wkBGQ
+ test-windows7-32-nightly/opt-reftest-no-accel-e10s-4: DG_PgXxvQnG7t7YspSngkA
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-1: dT3LAUXSRtqVLIEXvgfmYg
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-10: cgwfYiVLSLKLbpRDpvVdhQ
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-11: KjimZRU1TDirC-YZB8IDQQ
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-12: fKrbqba1TKKkfW2t9XaMyQ
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-2: UjJVMojAT2yRTNdSIKMQwA
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-3: VEuCvZdTTt-ekBRNXSMHpQ
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-4: av6AkvQtTQKRiCL2A3GoxQ
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-5: feoa_LC9Sm6w1WIMselx_g
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-6: TYShh8PVSOK9CM-15oscXg
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-7: IRPODajnTI2bG6uwRaLt2g
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-8: O-kXnzwlQnepj7_JAvoGjQ
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-9: DU8ni1K1QqOj-_35L5SeCg
+ test-windows7-32-nightly/opt-web-platform-tests-reftests-e10s: En6vKJMCSQGboXlA3P7Dsg
+ test-windows7-32-nightly/opt-xpcshell: HV8t9V5JRNWLzPfPvioYnw
+ test-windows7-32/debug-cppunit: JJSwTf7sTGap6bV7myAMYw
+ test-windows7-32/debug-crashtest-e10s: bteeRuEdSfGcV9gqpfzXoA
+ test-windows7-32/debug-firefox-ui-functional-local-e10s: OiPUvXC8SSGji_R26javuQ
+ test-windows7-32/debug-firefox-ui-functional-remote-e10s: MQ_uwHC8RHS8SUsKAYjHIQ
+ test-windows7-32/debug-gtest: YkVzkQ4KSKy-C4bbb0teUA
+ test-windows7-32/debug-marionette-e10s: abZVJwHjRYSXd4VfO4zyOQ
+ test-windows7-32/debug-marionette-headless-e10s: Nboz_JrxRDevotY1KjQcoA
+ test-windows7-32/debug-mochitest-a11y: ObPWHiT4QQ6jMBdd9TagEA
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-1: BNHRc0r1R76bPwbj2D0SNQ
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-2: aMCqLB37Q9Csw6q-PRLlvg
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-3: CuyMAz2HTMmy3mK3DQxWSg
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-4: LP_eKeLiT66a8Ass1gDFjA
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-5: PxhRUrEpSIqbuCWLOCGuaw
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-6: UtY3eSGbT06RwfDeyNu7_Q
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-7: XsImJ0e-RP2AqUkb3MlruA
+ test-windows7-32/debug-mochitest-chrome-1: Cekuf5xkQey3wpapZnFVqA
+ test-windows7-32/debug-mochitest-chrome-2: PQkcbXcPQ36W-slIHTVV6Q
+ test-windows7-32/debug-mochitest-chrome-3: E9F9noBhTAaXf0Xw-fjRTQ
+ test-windows7-32/debug-mochitest-clipboard-e10s: CesIGLpXR-qMcOppbEaYIA
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-1: PcAJiRB4RXOCjf65x_siwg
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-2: f3PSM7cgR0S64j6UlCrdMw
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-3: QSdBKmxORoe1Zk6nm6dxWA
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-4: XRYhMCd1SDiv8Rr2x2F-DA
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-5: WcBbW7R8S7WIFXvaNF4PbQ
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-6: f9TyGBVBQmSQj7J85QWHvA
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-7: VAocR7p0RVSZMUaWcGQBXw
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-8: VtqKh-9ARCGM-Hyic7CTbA
+ test-windows7-32/debug-mochitest-e10s-1: d3ijBs9BSVmPQuwXluWa7Q
+ test-windows7-32/debug-mochitest-e10s-2: blEOU6B1QSeN8nKPsTjHVw
+ test-windows7-32/debug-mochitest-e10s-3: MhqkHExqTKW94bbWkN0FMw
+ test-windows7-32/debug-mochitest-e10s-4: Xt8QVoOMSXmOrUf14YgMbg
+ test-windows7-32/debug-mochitest-e10s-5: HNgbbIJoTB65KVShFzcnEQ
+ test-windows7-32/debug-mochitest-gpu-e10s: XclNYD1iTvO7cRpeiy7HhA
+ test-windows7-32/debug-mochitest-media-e10s-1: BLOhAaeUQaWOatACJflQ2Q
+ test-windows7-32/debug-mochitest-media-e10s-2: HcDpkzplRa-jgE91xtmtfw
+ test-windows7-32/debug-mochitest-media-e10s-3: XfrNjIL3TpO7BeP9FdJuSg
+ test-windows7-32/debug-mochitest-webgl1-core-e10s: EPXjeZr_RaSoqImyg6nxhQ
+ test-windows7-32/debug-mochitest-webgl1-ext-e10s: A-bEKONCRPyJ84stIeVKdg
+ test-windows7-32/debug-mochitest-webgl2-core-e10s: Me93X-W6Rr2l8k9e9EX1dA
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-1: bYO9b5noSXGd4FQyetEviA
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-2: cJzSz2LBRa2eEVT9RZ5KxA
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-3: TFWp2Lp4RCWtMsYn_zhHzQ
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-4: Yaxq7y3rRc2PYikdQNlzwQ
+ test-windows7-32/debug-reftest-e10s-1: A-z5Mjq8Qw-xyPyhMjr3qA
+ test-windows7-32/debug-reftest-e10s-2: dlBPWLtBT868DrvIrE5gOg
+ test-windows7-32/debug-reftest-e10s-3: VkbOhr6bQv2Zrbkir-Tc7w
+ test-windows7-32/debug-reftest-e10s-4: JnSEpzdvQ0CelidfMpcCOQ
+ test-windows7-32/debug-reftest-gpu-e10s-1: Hkx6LOv0Txanm3P8Addv2g
+ test-windows7-32/debug-reftest-gpu-e10s-2: e8BrPWFcS0Cd5PMOIS2-Yg
+ test-windows7-32/debug-reftest-gpu-e10s-3: YtTeu9WURTqlLOLjdA7JKA
+ test-windows7-32/debug-reftest-gpu-e10s-4: WqG2S7LvRf24eklvBw-v8w
+ test-windows7-32/debug-reftest-no-accel-e10s-1: OqjWmqC4SXWgWuDF4vCwLw
+ test-windows7-32/debug-reftest-no-accel-e10s-2: T6RpBHMmTI2TVnl05IOV4w
+ test-windows7-32/debug-reftest-no-accel-e10s-3: fz4LEI-AToe_PfVN28uTsg
+ test-windows7-32/debug-reftest-no-accel-e10s-4: azLHq_7ITnuRR9NsMXVpvw
+ test-windows7-32/debug-web-platform-tests-e10s-1: dFsmr-MNRHCk3qkTu7xo4g
+ test-windows7-32/debug-web-platform-tests-e10s-10: ccGSV9IETIO2U9N7dF428w
+ test-windows7-32/debug-web-platform-tests-e10s-11: UoqOHKU1SRSVp4F_eGb0Dw
+ test-windows7-32/debug-web-platform-tests-e10s-12: YtIYhaLCTsuBuQdpA8k3cQ
+ test-windows7-32/debug-web-platform-tests-e10s-2: KE1XSuhcR-SB0R4VhGM67Q
+ test-windows7-32/debug-web-platform-tests-e10s-3: BDsOi4nMRo6H7YIgV1DN_w
+ test-windows7-32/debug-web-platform-tests-e10s-4: bnsymjp_SQieaem_xOw9oQ
+ test-windows7-32/debug-web-platform-tests-e10s-5: TBmZAeCvRLuI90XZqsMq6A
+ test-windows7-32/debug-web-platform-tests-e10s-6: FqW949QyTjKpK0KRmSmG7w
+ test-windows7-32/debug-web-platform-tests-e10s-7: UaXLZjTERiyX6XhWdkkydg
+ test-windows7-32/debug-web-platform-tests-e10s-8: AvLjU0EtT_CLYv-3F6soUQ
+ test-windows7-32/debug-web-platform-tests-e10s-9: JQIP6skOQ9-PsBNEYOmJ9Q
+ test-windows7-32/debug-web-platform-tests-reftests-e10s: f7s8_unhQjG3oJLKPq06rg
+ test-windows7-32/debug-xpcshell: SmSPIZytRte65OUrqPSU6g
+ test-windows7-32/opt-talos-bcv-e10s: TCz2dSRLTemtcbFwOYtbWQ
+ test-windows7-32/opt-talos-chrome-e10s: bVw1FtZKSnqzyId1s0VOWg
+ test-windows7-32/opt-talos-damp-e10s: RdeUvE9OQaamWbwQU_koIQ
+ test-windows7-32/opt-talos-dromaeojs-e10s: X5LuD6UpTWW3Ld9YiBDspg
+ test-windows7-32/opt-talos-g1-e10s: BHD70D2fS3y5fg6mGt1IFg
+ test-windows7-32/opt-talos-g4-e10s: ScddyTXyQa6omsTaMpGOZw
+ test-windows7-32/opt-talos-g5-e10s: frf1vBhtRT-hS19o9yE0Ig
+ test-windows7-32/opt-talos-other-e10s: HlF_IG5_TRKknj0Yc-6qhQ
+ test-windows7-32/opt-talos-speedometer-e10s: RHL5POymR4aJ2-OB5oFL8Q
+ test-windows7-32/opt-talos-svgr-e10s: Xs7562SMSQ-bKOquIbG9Wg
+ test-windows7-32/opt-talos-tp5o-e10s: XPAmoCr3RMKvg5eGJEm9Jg
+ test-windows7-32/opt-talos-tp6-e10s: L5x1L5OOQv6tCI-CdCFO0w
+ test-windows7-32/opt-talos-tps-e10s: BDZpu3BCTiKjUH-c7m1MXg
+ test-windows7-32/opt-talos-xperf-e10s: MvExFTIETRSlN7y1K318Og
+ toolchain-linux64-android-gradle-dependencies: Ejx3j_TFQF6ue4ICBAm50w
+ toolchain-linux64-android-ndk-linux-repack: TbJ7aQCASTW7_ZOcFDITGw
+ toolchain-linux64-android-sdk-linux-repack: ZZardaJfRta2f6XTzAoNRA
+ toolchain-linux64-binutils: bQz0dpauTvSwvo_blA8iwQ
+ toolchain-linux64-cbindgen: WV9xRXQMToKhsF6cxDqCBA
+ toolchain-linux64-cctools-port: L9nDqulJQxKjvsTsURbDlw
+ toolchain-linux64-clang-3.9: R8-r8ookSiCfYbJYejpNWA
+ toolchain-linux64-clang-6: E-pAZ4gVQVCkX4gzYF3WfA
+ toolchain-linux64-clang-6-macosx-cross: fhVH_vwjRe-WRCEPcXiw2Q
+ toolchain-linux64-clang-tidy: a6v0ws6ARROjJ0WFqziX-w
+ toolchain-linux64-gcc-4.9: EdeVA6VwQqe3xzBjj1JVYw
+ toolchain-linux64-gcc-6: A7qVVBdbQoOSxVR7sshafw
+ toolchain-linux64-gcc-sixgill: JKEtKWFxRSGE2oGWpn-jSA
+ toolchain-linux64-hfsplus: e5QX1QaxQqidqKMqekvFOQ
+ toolchain-linux64-infer: OGiz92M7T1Kdysxtokyu3w
+ toolchain-linux64-libdmg: EO8XTk2rTuOB5Ku4JrPrFg
+ toolchain-linux64-llvm-dsymutil: VfDslyQ8TASVZ9LWmStnkQ
+ toolchain-linux64-node: Wi27Y0kZTHyy6JSuiSGz0w
+ toolchain-linux64-rust-1.28: et3673o9QUiFyQk-hccQBw
+ toolchain-linux64-rust-android-1.28: O7oG2edzRwuU8vRUUdMRqQ
+ toolchain-linux64-rust-macos-1.28: ORDZULTuQOCAL8uIraFbHw
+ toolchain-linux64-rust-nightly: NsBOpFzpT82sfq9Sxa6MdQ
+ toolchain-linux64-rust-size: e0_TP74QTFGV3Gwp0oZm7w
+ toolchain-linux64-sccache: fYJWAj-YTCm1qZGbGKvFFA
+ toolchain-linux64-tup: B8bIAVl9Q6u4Sq1kDg9sjQ
+ toolchain-win32-clang-cl-st-an: YJ8sBjtBSSa2r-GNuXwjTA
+ toolchain-win32-rust-1.28: USW_A4OqS2a9ADJ1UQfhCw
+ toolchain-win64-cbindgen: Dh47x4tbQ3eTfT9E9-BFIA
+ toolchain-win64-clang-cl: TRcMRJbxREiO6DfXvmf4SA
+ toolchain-win64-clang-cl-st-an: U5LpO6b3RXGge1eSMvErjg
+ toolchain-win64-clang-tidy: ElrbzUy2ThWDIVGxps9Ewg
+ toolchain-win64-node: YiZyuAI_TvySNF523_VdNQ
+ toolchain-win64-rust-1.28: LtSP0Uo0QTaN9ka4PppP7A
+ toolchain-win64-rust-size: bhXklMe_SB2E-lnqKKoHFA
+ toolchain-win64-sccache: f8ETToxiSpSYEJSozHdcFg
+ upload-generated-sources-linux-devedition-nightly/opt: bFzUdYJAQRe0G5t8u8KTOg
+ upload-generated-sources-linux-nightly/opt: PTjMFha-RiyRGlMJA9nbMg
+ upload-generated-sources-linux64-devedition-nightly/opt: RJ7giipQStyxI9vPNMBfZA
+ upload-generated-sources-linux64-nightly/opt: Eo7DTN7kTDqhvZjFnw5JBA
+ upload-generated-sources-macosx64-devedition-nightly/opt: PzaXu4jPQ4it9LtH8qYjzA
+ upload-generated-sources-macosx64-nightly/opt: Hriy5o4aRA294yak12FPhg
+ upload-generated-sources-win32-devedition-nightly/opt: Lpq7FF3DTHmJ2TqS-cV_cQ
+ upload-generated-sources-win32-nightly/opt: cSmblNMQQKyyfsLL8RcwrA
+ upload-generated-sources-win64-devedition-nightly/opt: ckp7YSkvTmue_snYs_plhA
+ upload-generated-sources-win64-nightly/opt: eaLzYIJvSfmZNfX5ZfGA7w
+ valgrind-linux64-valgrind/opt: Fbla0BDxQ0y77eyPwOSLbg
+filters:
+ - target_tasks_method
+head_ref: 91955baf362bcd432efd89fd8a247bb93e197e91
+head_repository: https://hg.mozilla.org/releases/mozilla-beta
+head_rev: 91955baf362bcd432efd89fd8a247bb93e197e91
+hg_branch: default
+level: "3"
+message: " "
+moz_build_date: "20181011200118"
+next_version: 63.0b15
+optimize_target_tasks: true
+owner: ryanvm@gmail.com
+project: mozilla-beta
+pushdate: 1539288078
+pushlog_id: "9972"
+release_enable_emefree: true
+release_enable_partners: true
+release_eta: null
+release_history:
+ Darwin_x86_64-gcc3-u-i386-x86_64:
+ ach:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ach/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ach/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ach/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ af:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/af/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/af/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/af/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ an:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/an/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/an/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/an/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ar:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ar/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ar/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ar/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ as:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/as/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/as/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/as/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ast:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ast/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ast/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ast/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ az:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/az/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/az/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/az/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ be:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/be/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/be/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/be/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bg:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/bg/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/bg/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/bg/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-BD:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/bn-BD/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/bn-BD/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/bn-BD/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/bn-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/bn-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/bn-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ br:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/br/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/br/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/br/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/bs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/bs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/bs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ca:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ca/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ca/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ca/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cak:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/cak/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/cak/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/cak/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/cs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/cs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/cs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cy:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/cy/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/cy/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/cy/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ da:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/da/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/da/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/da/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ de:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/de/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/de/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/de/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ dsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/dsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/dsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/dsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ el:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/el/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/el/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/el/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-CA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/en-CA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/en-CA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/en-CA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-GB:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/en-GB/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/en-GB/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/en-GB/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-US:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/en-US/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/en-US/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/en-US/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-ZA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/en-ZA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/en-ZA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/en-ZA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eo:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/eo/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/eo/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/eo/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-AR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/es-AR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/es-AR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/es-AR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-CL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/es-CL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/es-CL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/es-CL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-ES:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/es-ES/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/es-ES/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/es-ES/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-MX:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/es-MX/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/es-MX/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/es-MX/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ et:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/et/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/et/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/et/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/eu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/eu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/eu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fa:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/fa/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/fa/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/fa/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ff:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ff/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ff/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ff/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/fi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/fi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/fi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/fr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/fr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/fr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fy-NL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/fy-NL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/fy-NL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/fy-NL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ga-IE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ga-IE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ga-IE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ga-IE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gd:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/gd/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/gd/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/gd/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/gl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/gl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/gl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/gn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/gn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/gn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gu-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/gu-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/gu-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/gu-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ he:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/he/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/he/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/he/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hi-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hi-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hi-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hi-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hy-AM:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hy-AM/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hy-AM/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hy-AM/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ia:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ia/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ia/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ia/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ id:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/id/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/id/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/id/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ is:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/is/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/is/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/is/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ it:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/it/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/it/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/it/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ja-JP-mac:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ja-JP-mac/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ja-JP-mac/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ja-JP-mac/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ka:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ka/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ka/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ka/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kab:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/kab/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/kab/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/kab/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/kk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/kk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/kk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ km:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/km/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/km/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/km/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/kn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/kn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/kn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ko:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ko/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ko/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ko/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lij:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/lij/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/lij/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/lij/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lt:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/lt/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/lt/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/lt/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lv:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/lv/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/lv/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/lv/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mai:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/mai/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/mai/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/mai/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/mk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/mk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/mk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ml:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ml/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ml/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ml/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/mr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/mr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/mr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ms:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ms/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ms/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ms/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ my:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/my/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/my/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/my/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nb-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/nb-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/nb-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/nb-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ne-NP:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ne-NP/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ne-NP/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ne-NP/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/nl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/nl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/nl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nn-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/nn-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/nn-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/nn-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ oc:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/oc/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/oc/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/oc/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ or:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/or/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/or/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/or/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pa-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/pa-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/pa-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/pa-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/pl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/pl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/pl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-BR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/pt-BR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/pt-BR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/pt-BR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-PT:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/pt-PT/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/pt-PT/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/pt-PT/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ rm:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/rm/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/rm/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/rm/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ro:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ro/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ro/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ro/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ru:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ru/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ru/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ru/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ si:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/si/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/si/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/si/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ son:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/son/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/son/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/son/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sq:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sq/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sq/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sq/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sv-SE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sv-SE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sv-SE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sv-SE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ta:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ta/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ta/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ta/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ te:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/te/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/te/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/te/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ th:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/th/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/th/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/th/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ tr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/tr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/tr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/tr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/uk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/uk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/uk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ur:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ur/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ur/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ur/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uz:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/uz/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/uz/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/uz/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ vi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/vi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/vi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/vi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ xh:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/xh/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/xh/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/xh/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-CN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/zh-CN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/zh-CN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/zh-CN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-TW:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/zh-TW/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/zh-TW/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/zh-TW/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ Linux_x86-gcc3:
+ ach:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ach/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ach/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ach/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ af:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/af/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/af/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/af/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ an:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/an/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/an/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/an/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ar:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ar/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ar/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ar/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ as:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/as/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/as/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/as/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ast:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ast/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ast/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ast/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ az:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/az/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/az/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/az/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ be:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/be/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/be/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/be/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bg:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/bg/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/bg/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/bg/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-BD:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/bn-BD/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/bn-BD/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/bn-BD/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/bn-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/bn-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/bn-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ br:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/br/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/br/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/br/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/bs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/bs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/bs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ca:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ca/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ca/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ca/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cak:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/cak/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/cak/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/cak/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/cs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/cs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/cs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cy:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/cy/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/cy/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/cy/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ da:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/da/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/da/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/da/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ de:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/de/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/de/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/de/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ dsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/dsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/dsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/dsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ el:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/el/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/el/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/el/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-CA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/en-CA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/en-CA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/en-CA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-GB:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/en-GB/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/en-GB/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/en-GB/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-US:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/en-US/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/en-US/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/en-US/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-ZA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/en-ZA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/en-ZA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/en-ZA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eo:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/eo/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/eo/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/eo/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-AR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/es-AR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/es-AR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/es-AR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-CL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/es-CL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/es-CL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/es-CL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-ES:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/es-ES/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/es-ES/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/es-ES/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-MX:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/es-MX/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/es-MX/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/es-MX/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ et:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/et/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/et/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/et/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/eu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/eu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/eu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fa:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/fa/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/fa/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/fa/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ff:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ff/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ff/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ff/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/fi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/fi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/fi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/fr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/fr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/fr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fy-NL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/fy-NL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/fy-NL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/fy-NL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ga-IE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ga-IE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ga-IE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ga-IE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gd:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/gd/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/gd/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/gd/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/gl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/gl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/gl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/gn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/gn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/gn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gu-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/gu-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/gu-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/gu-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ he:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/he/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/he/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/he/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hi-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hi-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hi-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hi-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hy-AM:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hy-AM/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hy-AM/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hy-AM/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ia:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ia/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ia/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ia/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ id:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/id/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/id/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/id/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ is:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/is/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/is/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/is/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ it:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/it/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/it/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/it/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ja:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ja/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ja/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ja/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ka:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ka/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ka/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ka/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kab:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/kab/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/kab/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/kab/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/kk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/kk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/kk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ km:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/km/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/km/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/km/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/kn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/kn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/kn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ko:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ko/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ko/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ko/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lij:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/lij/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/lij/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/lij/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lt:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/lt/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/lt/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/lt/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lv:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/lv/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/lv/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/lv/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mai:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/mai/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/mai/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/mai/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/mk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/mk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/mk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ml:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ml/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ml/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ml/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/mr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/mr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/mr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ms:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ms/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ms/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ms/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ my:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/my/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/my/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/my/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nb-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/nb-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/nb-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/nb-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ne-NP:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ne-NP/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ne-NP/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ne-NP/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/nl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/nl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/nl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nn-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/nn-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/nn-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/nn-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ oc:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/oc/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/oc/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/oc/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ or:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/or/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/or/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/or/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pa-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/pa-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/pa-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/pa-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/pl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/pl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/pl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-BR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/pt-BR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/pt-BR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/pt-BR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-PT:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/pt-PT/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/pt-PT/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/pt-PT/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ rm:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/rm/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/rm/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/rm/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ro:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ro/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ro/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ro/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ru:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ru/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ru/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ru/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ si:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/si/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/si/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/si/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ son:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/son/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/son/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/son/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sq:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sq/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sq/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sq/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sv-SE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sv-SE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sv-SE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sv-SE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ta:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ta/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ta/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ta/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ te:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/te/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/te/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/te/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ th:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/th/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/th/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/th/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ tr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/tr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/tr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/tr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/uk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/uk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/uk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ur:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ur/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ur/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ur/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uz:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/uz/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/uz/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/uz/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ vi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/vi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/vi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/vi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ xh:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/xh/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/xh/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/xh/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-CN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/zh-CN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/zh-CN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/zh-CN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-TW:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/zh-TW/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/zh-TW/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/zh-TW/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ Linux_x86_64-gcc3:
+ ach:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ach/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ach/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ach/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ af:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/af/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/af/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/af/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ an:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/an/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/an/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/an/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ar:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ar/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ar/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ar/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ as:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/as/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/as/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/as/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ast:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ast/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ast/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ast/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ az:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/az/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/az/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/az/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ be:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/be/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/be/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/be/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bg:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/bg/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/bg/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/bg/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-BD:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/bn-BD/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/bn-BD/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/bn-BD/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/bn-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/bn-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/bn-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ br:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/br/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/br/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/br/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/bs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/bs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/bs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ca:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ca/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ca/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ca/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cak:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/cak/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/cak/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/cak/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/cs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/cs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/cs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cy:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/cy/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/cy/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/cy/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ da:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/da/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/da/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/da/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ de:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/de/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/de/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/de/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ dsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/dsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/dsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/dsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ el:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/el/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/el/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/el/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-CA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/en-CA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/en-CA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/en-CA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-GB:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/en-GB/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/en-GB/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/en-GB/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-US:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/en-US/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/en-US/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/en-US/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-ZA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/en-ZA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/en-ZA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/en-ZA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eo:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/eo/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/eo/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/eo/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-AR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/es-AR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/es-AR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/es-AR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-CL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/es-CL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/es-CL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/es-CL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-ES:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/es-ES/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/es-ES/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/es-ES/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-MX:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/es-MX/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/es-MX/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/es-MX/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ et:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/et/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/et/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/et/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/eu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/eu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/eu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fa:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/fa/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/fa/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/fa/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ff:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ff/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ff/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ff/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/fi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/fi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/fi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/fr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/fr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/fr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fy-NL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/fy-NL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/fy-NL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/fy-NL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ga-IE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ga-IE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ga-IE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ga-IE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gd:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/gd/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/gd/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/gd/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/gl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/gl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/gl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/gn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/gn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/gn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gu-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/gu-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/gu-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/gu-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ he:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/he/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/he/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/he/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hi-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hi-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hi-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hi-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hy-AM:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hy-AM/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hy-AM/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hy-AM/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ia:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ia/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ia/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ia/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ id:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/id/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/id/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/id/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ is:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/is/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/is/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/is/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ it:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/it/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/it/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/it/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ja:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ja/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ja/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ja/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ka:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ka/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ka/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ka/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kab:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/kab/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/kab/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/kab/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/kk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/kk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/kk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ km:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/km/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/km/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/km/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/kn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/kn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/kn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ko:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ko/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ko/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ko/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lij:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/lij/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/lij/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/lij/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lt:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/lt/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/lt/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/lt/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lv:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/lv/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/lv/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/lv/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mai:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/mai/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/mai/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/mai/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/mk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/mk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/mk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ml:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ml/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ml/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ml/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/mr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/mr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/mr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ms:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ms/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ms/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ms/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ my:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/my/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/my/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/my/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nb-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/nb-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/nb-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/nb-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ne-NP:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ne-NP/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ne-NP/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ne-NP/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/nl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/nl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/nl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nn-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/nn-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/nn-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/nn-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ oc:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/oc/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/oc/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/oc/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ or:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/or/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/or/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/or/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pa-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/pa-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/pa-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/pa-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/pl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/pl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/pl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-BR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/pt-BR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/pt-BR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/pt-BR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-PT:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/pt-PT/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/pt-PT/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/pt-PT/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ rm:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/rm/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/rm/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/rm/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ro:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ro/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ro/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ro/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ru:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ru/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ru/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ru/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ si:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/si/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/si/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/si/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ son:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/son/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/son/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/son/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sq:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sq/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sq/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sq/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sv-SE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sv-SE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sv-SE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sv-SE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ta:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ta/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ta/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ta/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ te:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/te/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/te/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/te/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ th:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/th/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/th/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/th/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ tr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/tr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/tr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/tr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/uk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/uk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/uk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ur:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ur/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ur/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ur/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uz:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/uz/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/uz/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/uz/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ vi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/vi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/vi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/vi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ xh:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/xh/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/xh/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/xh/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-CN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/zh-CN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/zh-CN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/zh-CN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-TW:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/zh-TW/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/zh-TW/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/zh-TW/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ WINNT_x86-msvc:
+ ach:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ach/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ach/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ach/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ af:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/af/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/af/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/af/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ an:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/an/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/an/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/an/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ar:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ar/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ar/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ar/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ as:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/as/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/as/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/as/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ast:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ast/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ast/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ast/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ az:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/az/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/az/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/az/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ be:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/be/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/be/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/be/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bg:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/bg/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/bg/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/bg/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-BD:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/bn-BD/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/bn-BD/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/bn-BD/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/bn-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/bn-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/bn-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ br:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/br/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/br/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/br/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/bs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/bs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/bs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ca:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ca/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ca/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ca/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cak:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/cak/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/cak/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/cak/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/cs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/cs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/cs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cy:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/cy/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/cy/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/cy/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ da:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/da/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/da/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/da/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ de:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/de/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/de/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/de/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ dsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/dsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/dsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/dsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ el:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/el/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/el/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/el/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-CA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/en-CA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/en-CA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/en-CA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-GB:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/en-GB/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/en-GB/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/en-GB/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-US:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/en-US/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/en-US/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/en-US/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-ZA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/en-ZA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/en-ZA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/en-ZA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eo:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/eo/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/eo/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/eo/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-AR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/es-AR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/es-AR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/es-AR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-CL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/es-CL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/es-CL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/es-CL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-ES:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/es-ES/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/es-ES/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/es-ES/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-MX:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/es-MX/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/es-MX/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/es-MX/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ et:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/et/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/et/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/et/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/eu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/eu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/eu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fa:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/fa/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/fa/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/fa/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ff:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ff/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ff/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ff/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/fi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/fi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/fi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/fr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/fr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/fr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fy-NL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/fy-NL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/fy-NL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/fy-NL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ga-IE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ga-IE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ga-IE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ga-IE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gd:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/gd/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/gd/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/gd/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/gl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/gl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/gl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/gn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/gn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/gn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gu-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/gu-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/gu-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/gu-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ he:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/he/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/he/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/he/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hi-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hi-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hi-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hi-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hy-AM:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hy-AM/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hy-AM/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hy-AM/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ia:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ia/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ia/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ia/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ id:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/id/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/id/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/id/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ is:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/is/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/is/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/is/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ it:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/it/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/it/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/it/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ja:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ja/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ja/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ja/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ka:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ka/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ka/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ka/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kab:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/kab/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/kab/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/kab/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/kk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/kk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/kk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ km:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/km/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/km/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/km/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/kn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/kn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/kn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ko:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ko/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ko/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ko/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lij:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/lij/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/lij/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/lij/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lt:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/lt/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/lt/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/lt/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lv:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/lv/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/lv/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/lv/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mai:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/mai/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/mai/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/mai/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/mk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/mk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/mk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ml:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ml/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ml/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ml/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/mr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/mr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/mr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ms:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ms/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ms/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ms/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ my:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/my/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/my/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/my/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nb-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/nb-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/nb-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/nb-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ne-NP:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ne-NP/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ne-NP/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ne-NP/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/nl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/nl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/nl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nn-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/nn-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/nn-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/nn-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ oc:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/oc/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/oc/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/oc/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ or:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/or/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/or/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/or/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pa-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/pa-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/pa-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/pa-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/pl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/pl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/pl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-BR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/pt-BR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/pt-BR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/pt-BR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-PT:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/pt-PT/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/pt-PT/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/pt-PT/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ rm:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/rm/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/rm/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/rm/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ro:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ro/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ro/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ro/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ru:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ru/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ru/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ru/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ si:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/si/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/si/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/si/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ son:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/son/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/son/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/son/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sq:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sq/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sq/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sq/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sv-SE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sv-SE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sv-SE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sv-SE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ta:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ta/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ta/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ta/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ te:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/te/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/te/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/te/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ th:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/th/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/th/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/th/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ tr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/tr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/tr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/tr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/uk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/uk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/uk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ur:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ur/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ur/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ur/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uz:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/uz/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/uz/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/uz/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ vi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/vi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/vi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/vi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ xh:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/xh/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/xh/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/xh/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-CN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/zh-CN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/zh-CN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/zh-CN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-TW:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/zh-TW/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/zh-TW/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/zh-TW/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ WINNT_x86_64-msvc:
+ ach:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ach/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ach/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ach/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ af:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/af/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/af/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/af/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ an:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/an/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/an/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/an/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ar:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ar/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ar/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ar/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ as:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/as/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/as/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/as/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ast:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ast/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ast/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ast/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ az:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/az/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/az/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/az/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ be:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/be/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/be/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/be/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bg:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/bg/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/bg/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/bg/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-BD:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/bn-BD/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/bn-BD/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/bn-BD/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/bn-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/bn-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/bn-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ br:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/br/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/br/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/br/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/bs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/bs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/bs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ca:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ca/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ca/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ca/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cak:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/cak/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/cak/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/cak/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/cs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/cs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/cs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cy:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/cy/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/cy/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/cy/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ da:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/da/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/da/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/da/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ de:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/de/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/de/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/de/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ dsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/dsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/dsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/dsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ el:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/el/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/el/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/el/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-CA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/en-CA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/en-CA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/en-CA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-GB:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/en-GB/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/en-GB/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/en-GB/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-US:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/en-US/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/en-US/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/en-US/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-ZA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/en-ZA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/en-ZA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/en-ZA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eo:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/eo/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/eo/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/eo/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-AR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/es-AR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/es-AR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/es-AR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-CL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/es-CL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/es-CL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/es-CL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-ES:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/es-ES/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/es-ES/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/es-ES/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-MX:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/es-MX/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/es-MX/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/es-MX/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ et:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/et/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/et/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/et/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/eu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/eu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/eu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fa:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/fa/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/fa/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/fa/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ff:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ff/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ff/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ff/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/fi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/fi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/fi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/fr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/fr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/fr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fy-NL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/fy-NL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/fy-NL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/fy-NL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ga-IE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ga-IE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ga-IE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ga-IE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gd:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/gd/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/gd/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/gd/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/gl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/gl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/gl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/gn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/gn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/gn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gu-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/gu-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/gu-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/gu-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ he:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/he/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/he/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/he/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hi-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hi-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hi-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hi-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hy-AM:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hy-AM/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hy-AM/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hy-AM/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ia:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ia/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ia/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ia/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ id:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/id/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/id/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/id/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ is:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/is/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/is/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/is/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ it:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/it/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/it/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/it/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ja:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ja/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ja/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ja/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ka:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ka/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ka/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ka/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kab:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/kab/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/kab/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/kab/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/kk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/kk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/kk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ km:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/km/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/km/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/km/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/kn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/kn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/kn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ko:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ko/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ko/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ko/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lij:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/lij/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/lij/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/lij/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lt:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/lt/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/lt/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/lt/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lv:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/lv/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/lv/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/lv/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mai:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/mai/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/mai/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/mai/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/mk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/mk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/mk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ml:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ml/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ml/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ml/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/mr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/mr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/mr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ms:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ms/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ms/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ms/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ my:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/my/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/my/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/my/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nb-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/nb-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/nb-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/nb-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ne-NP:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ne-NP/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ne-NP/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ne-NP/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/nl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/nl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/nl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nn-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/nn-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/nn-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/nn-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ oc:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/oc/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/oc/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/oc/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ or:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/or/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/or/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/or/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pa-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/pa-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/pa-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/pa-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/pl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/pl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/pl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-BR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/pt-BR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/pt-BR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/pt-BR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-PT:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/pt-PT/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/pt-PT/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/pt-PT/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ rm:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/rm/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/rm/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/rm/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ro:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ro/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ro/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ro/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ru:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ru/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ru/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ru/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ si:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/si/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/si/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/si/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ son:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/son/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/son/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/son/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sq:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sq/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sq/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sq/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sv-SE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sv-SE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sv-SE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sv-SE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ta:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ta/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ta/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ta/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ te:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/te/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/te/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/te/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ th:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/th/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/th/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/th/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ tr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/tr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/tr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/tr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/uk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/uk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/uk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ur:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ur/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ur/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ur/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uz:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/uz/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/uz/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/uz/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ vi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/vi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/vi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/vi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ xh:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/xh/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/xh/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/xh/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-CN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/zh-CN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/zh-CN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/zh-CN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-TW:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/zh-TW/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/zh-TW/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/zh-TW/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+release_partner_build_number: 1
+release_partner_config:
+ release-eme-free-repack:
+ mozilla-EME-free:
+ mozilla-EME-free:
+ locales:
+ - ach
+ - af
+ - an
+ - ar
+ - as
+ - ast
+ - az
+ - be
+ - bg
+ - bn-BD
+ - bn-IN
+ - br
+ - bs
+ - ca
+ - cak
+ - cs
+ - cy
+ - da
+ - de
+ - dsb
+ - el
+ - en-GB
+ - en-US
+ - en-ZA
+ - eo
+ - es-AR
+ - es-CL
+ - es-ES
+ - es-MX
+ - et
+ - eu
+ - fa
+ - ff
+ - fi
+ - fr
+ - fy-NL
+ - ga-IE
+ - gd
+ - gl
+ - gn
+ - gu-IN
+ - he
+ - hi-IN
+ - hr
+ - hsb
+ - hu
+ - hy-AM
+ - id
+ - is
+ - it
+ - ja
+ - ja-JP-mac
+ - ka
+ - kab
+ - kk
+ - km
+ - kn
+ - ko
+ - lij
+ - lt
+ - lv
+ - mai
+ - mk
+ - ml
+ - mr
+ - ms
+ - my
+ - nb-NO
+ - nl
+ - nn-NO
+ - or
+ - pa-IN
+ - pl
+ - pt-BR
+ - pt-PT
+ - rm
+ - ro
+ - ru
+ - si
+ - sk
+ - sl
+ - son
+ - sq
+ - sr
+ - sv-SE
+ - ta
+ - te
+ - th
+ - tr
+ - uk
+ - ur
+ - uz
+ - vi
+ - xh
+ - zh-CN
+ - zh-TW
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ release-partner-repack:
+ acer:
+ acer-002:
+ locales:
+ - en-US
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ aol:
+ aol:
+ locales:
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ aol_de:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ aol_desktop:
+ locales:
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ aol_huffington:
+ locales:
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ aol_uk:
+ locales:
+ - en-GB
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ chipde:
+ chipde:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ cliqz:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ cliqz-003:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ cliqz-004:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ cliqz-005:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ cliqz-006:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ cliqz-007:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ cliqz-008:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ cliqz-control:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ firefox:
+ firefox-election-edition:
+ locales:
+ - en-US
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ funnelcake:
+ funnelcake134:
+ locales:
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ funnelcake137:
+ locales:
+ - en-US
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ ironsource:
+ ironsource-google:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - es-ES
+ - fr
+ - id
+ - it
+ - ja
+ - ko
+ - pa-IN
+ - pl
+ - pt-BR
+ - ru
+ - tr
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ ironsource-google-aura:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - es-ES
+ - fr
+ - id
+ - it
+ - ja
+ - ko
+ - pa-IN
+ - pl
+ - pt-BR
+ - ru
+ - tr
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ ironsource-yahoo:
+ locales:
+ - en-US
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ ironsource-yahoo-aura:
+ locales:
+ - en-US
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ ironsource-yandex:
+ locales:
+ - en-US
+ - tr
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ mailru:
+ mailru:
+ locales:
+ - ru
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ okru:
+ locales:
+ - az
+ - en-US
+ - hy-AM
+ - kk
+ - ro
+ - ru
+ - tr
+ - uk
+ - uz
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ mozillaonline:
+ baidu:
+ locales:
+ - zh-CN
+ platforms:
+ - win32-shippable
+ upload_to_candidates: "true"
+ kingsoft:
+ locales:
+ - zh-CN
+ platforms:
+ - win32-shippable
+ upload_to_candidates: "true"
+ mainOther:
+ locales:
+ - en-US
+ - zh-CN
+ platforms:
+ - linux-shippable
+ - linux64-shippable
+ - macosx64-shippable
+ upload_to_candidates: "true"
+ mainWinFull:
+ locales:
+ - en-US
+ - zh-CN
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ mainWinStubFallback:
+ locales:
+ - zh-CN
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ others:
+ locales:
+ - zh-CN
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ qihoo:
+ locales:
+ - zh-CN
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ tencent:
+ locales:
+ - zh-CN
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ xbsafe:
+ locales:
+ - zh-CN
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ zol:
+ locales:
+ - zh-CN
+ platforms:
+ - win32-shippable
+ upload_to_candidates: "true"
+ ntt:
+ ntt:
+ locales:
+ - en-US
+ - ja
+ - ja-JP-mac
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ playanext:
+ playanext-wt:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - es-ES
+ - fr
+ - it
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ playanext-wt-us:
+ locales:
+ - en-US
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ qwant:
+ qwant-001:
+ locales:
+ - ca
+ - cy
+ - de
+ - en-GB
+ - en-US
+ - es-ES
+ - fr
+ - gd
+ - it
+ platforms:
+ - linux-shippable
+ - linux64-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ qwant-002:
+ locales:
+ - ca
+ - cy
+ - de
+ - en-GB
+ - en-US
+ - es-ES
+ - fr
+ - gd
+ - it
+ platforms:
+ - linux-shippable
+ - linux64-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ seznam:
+ seznam:
+ locales:
+ - cs
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ softonic:
+ softonic:
+ locales:
+ - de
+ - en-US
+ - es-ES
+ - fr
+ - it
+ - pl
+ - pt-BR
+ - ru
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ sweetlabs:
+ sweetlabs-b-oem1:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-b-oem2:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-b-oem3:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-b-r-oem1:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-b-r-oem2:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-b-r-oem3:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-oem1:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-oem2:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-r-oem1:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-r-oem2:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ toshiba:
+ toshiba-001-MX:
+ locales:
+ - es-MX
+ platforms:
+ - win32-shippable
+ toshiba-001-US:
+ locales:
+ - en-US
+ platforms:
+ - win32-shippable
+ toshiba-b2b-JP:
+ locales:
+ - en-US
+ platforms:
+ - win32-shippable
+ toshiba-download-B-US:
+ locales:
+ - en-US
+ platforms:
+ - win32-shippable
+ toshiba-download-MX:
+ locales:
+ - es-MX
+ platforms:
+ - win32-shippable
+ toshiba-download-US:
+ locales:
+ - en-US
+ platforms:
+ - win32-shippable
+ unitedinternet:
+ 1und1:
+ locales:
+ - de
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ 1und1_notb:
+ locales:
+ - de
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ gmx:
+ locales:
+ - de
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ gmx_notb:
+ locales:
+ - de
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ mail.com:
+ locales:
+ - de
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ mail.com_notb:
+ locales:
+ - de
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ web.de:
+ locales:
+ - de
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ web.de_notb:
+ locales:
+ - de
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ wildtangent:
+ wildtangent:
+ locales:
+ - en-US
+ platforms:
+ - win32-shippable
+ upload_to_candidates: "true"
+ yandex:
+ yandex-drp:
+ locales:
+ - ru
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ yandex-planB:
+ locales:
+ - ru
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ yandex-portals:
+ locales:
+ - ru
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ yandex-ru:
+ locales:
+ - ru
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ yandex-ru-mz:
+ locales:
+ - ru
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ yandex-tr:
+ locales:
+ - tr
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ yandex-tr-gezginler:
+ locales:
+ - tr
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ yandex-tr-tamindir:
+ locales:
+ - tr
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ yandex-ua:
+ locales:
+ - ru
+ - uk
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+release_partners: null
+release_product: firefox
+release_type: "beta"
+target_tasks_method: promote_desktop
+try_mode: null
+try_options: null
+try_task_config: {}
+version: 63.0b14
+required_signoffs: []
+signoff_urls: {}
+phabricator_diff:
+tasks_for: action
diff --git a/taskcluster/test/params/mb-promote-firefox.yml b/taskcluster/test/params/mb-promote-firefox.yml
new file mode 100644
index 0000000000..e74c42eeec
--- /dev/null
+++ b/taskcluster/test/params/mb-promote-firefox.yml
@@ -0,0 +1,109 @@
+---
+base_repository: https://hg.mozilla.org/mozilla-central
+build_date: 1509164545
+build_number: 1
+app_version: 60.0b1
+version: 60.0b1
+next_version: null
+filters:
+ - target_tasks_method
+head_ref: 196059cada7070ab1e35db83a22b60389bd0c794
+head_repository: https://hg.mozilla.org/releases/mozilla-beta
+head_rev: 196059cada7070ab1e35db83a22b60389bd0c794
+hg_branch: default
+level: "3"
+message: " "
+# morph_templates: {}
+moz_build_date: "20171028042225"
+optimize_target_tasks: true
+owner: xquan@mozilla.com
+project: mozilla-beta
+pushdate: 1509164545
+pushlog_id: "8069"
+release_eta: "2018-01-31T00:30:00+00:00"
+release_history: {}
+release_enable_partners: true
+release_partners: null
+release_partner_build_number: 1
+release_partner_config:
+ {
+ "release-eme-free-repack":
+ {
+ "mozilla-EME-free":
+ {
+ "mozilla-EME-free":
+ {
+ "s3cfg": "/builds/release-s3cfg",
+ "dist_version": "1.0",
+ "bucket": "net-mozaws-prod-delivery-firefox",
+ "platforms":
+ [
+ "macosx64-shippable",
+ "win32-shippable",
+ "win64-shippable",
+ ],
+ "aus": "mozilla-EMEfree",
+ "output_dir": "%(platform)s-EME-free/%(locale)s",
+ "upload_to_candidates": "true",
+ "locales": ["de", "en-US"],
+ "dist_id": "mozilla-EMEfree",
+ },
+ },
+ },
+ "release-partner-repack":
+ {
+ "partner2":
+ {
+ "partner2":
+ {
+ "dist_version": "1.0",
+ "bucket": "net-mozaws-prod-delivery-firefox",
+ "platforms":
+ [
+ "macosx64-shippable",
+ "win32-shippable",
+ "win64-shippable",
+ ],
+ "aus": "partner2",
+ "output_dir": "%(platform)s-EME-free/%(locale)s",
+ "locales": ["en-US"],
+ "dist_id": "partner2",
+ },
+ },
+ "partner1":
+ {
+ "partner1":
+ {
+ "dist_version": "1.0",
+ "bucket": "net-mozaws-prod-delivery-firefox",
+ "platforms":
+ [
+ "linux-shippable",
+ "linux64-shippable",
+ "macosx64-shippable",
+ "win32-shippable",
+ "win64-shippable",
+ ],
+ "aus": "partner1",
+ "output_dir": "%(platform)s-EME-free/%(locale)s",
+ "upload_to_candidates": "true",
+ "locales": ["de", "en-US"],
+ "dist_id": "partner1",
+ },
+ },
+ },
+ }
+release_enable_emefree: true
+# target_task_labels: []
+target_tasks_method: promote_desktop
+do_not_optimize: []
+try_mode: null
+try_task_config: {}
+existing_tasks: {}
+try_options:
+release_type: "beta"
+release_product: firefox
+required_signoffs: []
+signoff_urls: {}
+phabricator_diff:
+tasks_for: action
diff --git a/taskcluster/test/params/mb-push-devedition.yml b/taskcluster/test/params/mb-push-devedition.yml
new file mode 100644
index 0000000000..66a663db8d
--- /dev/null
+++ b/taskcluster/test/params/mb-push-devedition.yml
@@ -0,0 +1,43 @@
+---
+base_repository: https://hg.mozilla.org/mozilla-central
+build_date: 1509164545
+build_number: 1
+app_version: 60.0b1
+version: 60.0b1
+next_version: 60.0b2
+filters:
+ - target_tasks_method
+head_ref: 196059cada7070ab1e35db83a22b60389bd0c794
+head_repository: https://hg.mozilla.org/releases/mozilla-beta
+head_rev: 196059cada7070ab1e35db83a22b60389bd0c794
+hg_branch: default
+level: "3"
+message: " "
+# morph_templates: {}
+moz_build_date: "20171028042225"
+optimize_target_tasks: true
+owner: xquan@mozilla.com
+project: mozilla-beta
+pushdate: 1509164545
+pushlog_id: "8069"
+release_eta: "2018-01-31T00:30:00+00:00"
+release_history: {}
+release_enable_partners: false
+release_partners: []
+release_partner_build_number: 1
+release_partner_config: null
+release_enable_emefree: false
+# target_task_labels: []
+target_tasks_method: push_desktop
+do_not_optimize: []
+try_mode: null
+try_task_config: {}
+existing_tasks: {}
+try_options:
+release_type: "beta"
+release_product: devedition
+required_signoffs: []
+signoff_urls: {}
+phabricator_diff:
+tasks_for: action
+test_manifest_loader: default
diff --git a/taskcluster/test/params/mb-push-firefox-partials.yml b/taskcluster/test/params/mb-push-firefox-partials.yml
new file mode 100644
index 0000000000..d37d8b8d95
--- /dev/null
+++ b/taskcluster/test/params/mb-push-firefox-partials.yml
@@ -0,0 +1,19467 @@
+---
+app_version: "63.0"
+base_repository: https://hg.mozilla.org/mozilla-unified
+build_date: 1539288078
+build_number: 1
+do_not_optimize: []
+existing_tasks:
+ balrog-ach-linux-nightly/opt: LNu8vTKaTkKUatSKqg53NA
+ balrog-ach-linux64-nightly/opt: H83upk1ETAyGy8uE9ayNvw
+ balrog-ach-macosx64-nightly/opt: EqWdtWjrQ3WLtXaRdCcK0Q
+ balrog-ach-win32-nightly/opt: J_4r79LoQ6e3Zi3jhHxDtw
+ balrog-ach-win64-nightly/opt: Paz-PNUPRe-yyUVHIAMaXA
+ balrog-af-linux-nightly/opt: AKSL7IXKSSCsC2wN0jkLmA
+ balrog-af-linux64-nightly/opt: FSxFwou4RQeY9gr8jdp_3w
+ balrog-af-macosx64-nightly/opt: Vyf1IDm1RomRG1w5kM5hgQ
+ balrog-af-win32-nightly/opt: XDT728xmSQ64Eesq22G4pA
+ balrog-af-win64-nightly/opt: Q-z62n9CSSOsKR8sE9Iz1w
+ balrog-an-linux-nightly/opt: f0VD7y1XRQGuj9PcZPVZPw
+ balrog-an-linux64-nightly/opt: EWancfiiRTGLLDVE9oKA6g
+ balrog-an-macosx64-nightly/opt: TpTprr9dTkeGfsq2b5hAbQ
+ balrog-an-win32-nightly/opt: ALxjom0AS4uvyPkw8UiS4g
+ balrog-an-win64-nightly/opt: IFDW7L3rSUK3Zfb8s0nU3g
+ balrog-ar-linux-nightly/opt: VkAkpaMpQ1GQtlv5n1r9Xg
+ balrog-ar-linux64-nightly/opt: CquH6b-EQF-xVOBC_Gqt5A
+ balrog-ar-macosx64-nightly/opt: SiMe9VVESC65Ucqq-MwExQ
+ balrog-ar-win32-nightly/opt: MeLiWiReRQuKjp5jF3rGAg
+ balrog-ar-win64-nightly/opt: YzmxtIzXS4qxsATVDaxAtA
+ balrog-as-linux-nightly/opt: IGEIPjCJTLOr_THPNR2Vvw
+ balrog-as-linux64-nightly/opt: DdxNngoyQ0OSG3h-f-mk1Q
+ balrog-as-macosx64-nightly/opt: RSDIkXkhQIuLCdbKBIfFDA
+ balrog-as-win32-nightly/opt: cmK5-_iFT7uw2Bnb-pwVFQ
+ balrog-as-win64-nightly/opt: Mh7pso2FRTCLhrc5cVS8EA
+ balrog-ast-linux-nightly/opt: VPbd1rVGS0Cr817TSB2Acw
+ balrog-ast-linux64-nightly/opt: F_vbFztATk6NuYvthS9K9A
+ balrog-ast-macosx64-nightly/opt: flHMUHuLQ5uWSgkI7k3K6g
+ balrog-ast-win32-nightly/opt: fbJBTQtsQBSaJbDfQRlG3A
+ balrog-ast-win64-nightly/opt: XweFIjNoTjCtyfXTDYxYkA
+ balrog-az-linux-nightly/opt: ObVS45xdQTyxyKEknUUDhA
+ balrog-az-linux64-nightly/opt: DG7FdjiyRMe4cAmeKuLmAA
+ balrog-az-macosx64-nightly/opt: KJuebq7PSICEWKHVue0H6Q
+ balrog-az-win32-nightly/opt: FM3iGtxURLimBnIiz7omfA
+ balrog-az-win64-nightly/opt: YPByA5A6S-SQ3TPmILT46g
+ balrog-be-linux-nightly/opt: YUe8sQFITAyiN3F4BJW6RQ
+ balrog-be-linux64-nightly/opt: ZZ6Am6JGQdG03V-EB85-Lw
+ balrog-be-macosx64-nightly/opt: dQ2P6Z03SleRSBV8rcBftQ
+ balrog-be-win32-nightly/opt: MsMQavymTX-i_9YMohoYag
+ balrog-be-win64-nightly/opt: P3OQ2WFGTBWtJLTKczYoCA
+ balrog-bg-linux-nightly/opt: YL9BKVHySkaa7SvXlYw_Lw
+ balrog-bg-linux64-nightly/opt: Bem4Y-8_S3qUXLRwNu9Ccw
+ balrog-bg-macosx64-nightly/opt: eSTZG7ojQpib4GJvCMCavA
+ balrog-bg-win32-nightly/opt: A1dr5Wb_R-e2LS0djhbyzQ
+ balrog-bg-win64-nightly/opt: BBzti7rVTdKbbaXpRWdzjw
+ balrog-bn-BD-linux-nightly/opt: KnBPYSVoQK2EwMNjb9sqeQ
+ balrog-bn-BD-linux64-nightly/opt: LXQuY8qtSZm6lBhPiCFcuw
+ balrog-bn-BD-macosx64-nightly/opt: R9fLrVpWQQK17HZ5NKZ9sg
+ balrog-bn-BD-win32-nightly/opt: bVHZylUUSkWzAnUHjbe1FA
+ balrog-bn-BD-win64-nightly/opt: JsgRNaPFRPy40Eupo-2_pQ
+ balrog-bn-IN-linux-nightly/opt: cohWquwSQw20CdTgYKmayA
+ balrog-bn-IN-linux64-nightly/opt: LwMy_AYtTEmtnr4MBHcqnA
+ balrog-bn-IN-macosx64-nightly/opt: ZEHDtLoNSR2RUaMgdqM-Iw
+ balrog-bn-IN-win32-nightly/opt: XlqZ5qJESqmAXSAP5ndFzg
+ balrog-bn-IN-win64-nightly/opt: EIqkzRycQnmJVPAlqPjKfg
+ balrog-br-linux-nightly/opt: EACM_yd7Tvy2UgZ33Bhkmw
+ balrog-br-linux64-nightly/opt: PEGdJRfeQ3SG-I5--Ci7kA
+ balrog-br-macosx64-nightly/opt: CDokRQg5QW20_IaDncQt4w
+ balrog-br-win32-nightly/opt: VTecy8LPSOKkj8SZPeX6Uw
+ balrog-br-win64-nightly/opt: aT2uXgFpR2GMq-L6A_ID2w
+ balrog-bs-linux-nightly/opt: ca0zOLgvQgyRxE906ipgPw
+ balrog-bs-linux64-nightly/opt: WfH9fnOUQ2SQZerXtrmXtg
+ balrog-bs-macosx64-nightly/opt: Ge2QCJcSSQ29HvsOsPWM6w
+ balrog-bs-win32-nightly/opt: Gad56wRWRkyhcQHmXpgA6A
+ balrog-bs-win64-nightly/opt: X1EslU07Ra-nqayV6MARIg
+ balrog-ca-linux-nightly/opt: QuSV13-5TW6dPtdgBDblZQ
+ balrog-ca-linux64-nightly/opt: I5T_wzfUQsaJh7qT8O9nLg
+ balrog-ca-macosx64-nightly/opt: L24Qfi_KQk2U9GLh7ZPZXQ
+ balrog-ca-win32-nightly/opt: Ie3kChlxS02kkzqNKRl_5A
+ balrog-ca-win64-nightly/opt: SaM70u6ZRISa5zgrxOZo6A
+ balrog-cak-linux-nightly/opt: ETkl62U1Thq7wymrNDvC9g
+ balrog-cak-linux64-nightly/opt: cH_wjyyzTbyIpD72qWidqw
+ balrog-cak-macosx64-nightly/opt: CXXAbGNqQVa5sbxwweIy0Q
+ balrog-cak-win32-nightly/opt: eOMC4uR8RyyP3Qgjlxr6yA
+ balrog-cak-win64-nightly/opt: EaBvqI--Sq6UD5OGEWgvRA
+ balrog-cs-linux-nightly/opt: GgCpw1LWRiSHKB_DJLkhPA
+ balrog-cs-linux64-nightly/opt: RvMZTkPASqqvppFEZJkzVg
+ balrog-cs-macosx64-nightly/opt: FixtzW-FSXiE0Tk5gJ-Zyg
+ balrog-cs-win32-nightly/opt: BrwLoSEyRWq-rqEGSJkp2g
+ balrog-cs-win64-nightly/opt: RfPXY-eZTjSm9AhxcgZqlw
+ balrog-cy-linux-nightly/opt: aUP97k8aTIi9-_uLeyyY2g
+ balrog-cy-linux64-nightly/opt: DqTNzWbOSROhUbTeaxI2Sg
+ balrog-cy-macosx64-nightly/opt: Kd4bsYbAS9yLQShsxazOzA
+ balrog-cy-win32-nightly/opt: CDVmpXGzQSugetx3bfXR8w
+ balrog-cy-win64-nightly/opt: HMsQi4gXQe2pbEHYi4pIQg
+ balrog-da-linux-nightly/opt: R54GtA5ATum4jPwHajt7Wg
+ balrog-da-linux64-nightly/opt: AxWVb6etQDC1FrIbiER_9A
+ balrog-da-macosx64-nightly/opt: VFEctmKZTS2UPdbPcA__Ew
+ balrog-da-win32-nightly/opt: MhZvnQQOTvePrBarcWhWFQ
+ balrog-da-win64-nightly/opt: GOMIlCmJTnajjrbpSpcZPA
+ balrog-de-linux-nightly/opt: C0Y1ar60QCiuRwcbGlHHnw
+ balrog-de-linux64-nightly/opt: HZfJSWPoRuKFt36bZkjAAQ
+ balrog-de-macosx64-nightly/opt: J0WDms3lTuWjDqFnldqAmg
+ balrog-de-win32-nightly/opt: Kj6QgdLpSUGwIzBDtJl8Zw
+ balrog-de-win64-nightly/opt: CCae-gd5RuG74Oj9fBk-Uw
+ balrog-dsb-linux-nightly/opt: B0wRzBfrQLajgojlwqxEtg
+ balrog-dsb-linux64-nightly/opt: V_pSajCqTxipeKYgyIxtZw
+ balrog-dsb-macosx64-nightly/opt: e3HnIbstR5GuaPYJN3HsYA
+ balrog-dsb-win32-nightly/opt: VDYz1P3-TwCJ5FbmZGGSmQ
+ balrog-dsb-win64-nightly/opt: evTxKmQmQ3m_10PrwCNvvg
+ balrog-el-linux-nightly/opt: fQN4Rw7yQsqA7zp2ywjNJw
+ balrog-el-linux64-nightly/opt: ZyScFNVzSsqlqVI-2wGgOw
+ balrog-el-macosx64-nightly/opt: IhVX9pc7Q8S7fx2oQzfZ5g
+ balrog-el-win32-nightly/opt: XM9cVhanRFiLq4GpnqRSYQ
+ balrog-el-win64-nightly/opt: BajV0YAqTL2olkt3T0bOBg
+ balrog-en-CA-linux-nightly/opt: FZMvRYHwQFebWNiBkndh2A
+ balrog-en-CA-linux64-nightly/opt: IAKEd6a8RPaDp8bxidMkdQ
+ balrog-en-CA-macosx64-nightly/opt: IvnQeCNmSZm7fJacBliPLg
+ balrog-en-CA-win32-nightly/opt: QF5raq-BQd6GGMrwY2IETA
+ balrog-en-CA-win64-nightly/opt: UyhND3nXQryoxqtKHI9ocg
+ balrog-en-GB-linux-nightly/opt: WRf-D5d1QXWk6Bu1C1u1Vg
+ balrog-en-GB-linux64-nightly/opt: RZVoMOVxTgaS3XUME3rlcw
+ balrog-en-GB-macosx64-nightly/opt: cGjVSJK4RC224sTO1PwL_g
+ balrog-en-GB-win32-nightly/opt: D38Setq0QmuqvoDv07bNEg
+ balrog-en-GB-win64-nightly/opt: MKqShCLtSrSaax_djziJBA
+ balrog-en-ZA-linux-nightly/opt: eEjgBWukQTCRp0zATpfZQg
+ balrog-en-ZA-linux64-nightly/opt: Ac5DSI5URxeiPPDSH1LQ_Q
+ balrog-en-ZA-macosx64-nightly/opt: COJXme0NTICngxAXu5cktA
+ balrog-en-ZA-win32-nightly/opt: LEKve5JnQHCevcIWKZvLCw
+ balrog-en-ZA-win64-nightly/opt: N9QcgCiCSK-C2_NuieuBLA
+ balrog-eo-linux-nightly/opt: YG0sGdp4TL-Sb_QvqHhN1w
+ balrog-eo-linux64-nightly/opt: WCHg0D4IRXeaqGbVYJGhhQ
+ balrog-eo-macosx64-nightly/opt: AJ7Cv5vtT0itcmh6M-lpNA
+ balrog-eo-win32-nightly/opt: Gg3aJ5VtSZyQdHeeMh9lDw
+ balrog-eo-win64-nightly/opt: BQzA-kueQ6uxoRSIWMgsSw
+ balrog-es-AR-linux-nightly/opt: DmB0MaynQ2i3PpEnr3ra-g
+ balrog-es-AR-linux64-nightly/opt: XZcsg0wLQnOtH0Ji1ePecQ
+ balrog-es-AR-macosx64-nightly/opt: TAkHOCy6Qayo7dbmts5_8A
+ balrog-es-AR-win32-nightly/opt: MghAacD_RzGU6QhlOEZlkg
+ balrog-es-AR-win64-nightly/opt: HmB-XrGZQm-UzagIwjWKCA
+ balrog-es-CL-linux-nightly/opt: SUnea6TnSH2sPSWuOG9xyA
+ balrog-es-CL-linux64-nightly/opt: WdBM7GOERy2cuCd8mVEYwg
+ balrog-es-CL-macosx64-nightly/opt: QUOwx1kQSNqwaP9MnDXSYw
+ balrog-es-CL-win32-nightly/opt: VFP_l4KBQ1etaRa8jCbRew
+ balrog-es-CL-win64-nightly/opt: Ap7jtdA6ScmzRe7z8yFpQw
+ balrog-es-ES-linux-nightly/opt: PW5Ig7r9ScW9o7NKsRO15A
+ balrog-es-ES-linux64-nightly/opt: GeqeAlM8SvyxkcqVCEBARg
+ balrog-es-ES-macosx64-nightly/opt: Onz1Hs84RMC48pRuYj9u2w
+ balrog-es-ES-win32-nightly/opt: Tiji7cExTz28_xmJseh4zw
+ balrog-es-ES-win64-nightly/opt: B4bXyftST7quXiqBa1h1-Q
+ balrog-es-MX-linux-nightly/opt: UjPDUIrUSxGfYeOxuOZ5cg
+ balrog-es-MX-linux64-nightly/opt: E5wcwfqlQ0GpxW1gzB9r7w
+ balrog-es-MX-macosx64-nightly/opt: bThYGEcnSrCfWOCjXoMCNA
+ balrog-es-MX-win32-nightly/opt: ZD6h9Qf8TtaiQ7ZqgZrd2w
+ balrog-es-MX-win64-nightly/opt: cmsYsgvIRsCzDtgdU4y5Dg
+ balrog-et-linux-nightly/opt: GiBqDlohSnuy6vbY4DwJ5A
+ balrog-et-linux64-nightly/opt: VVNXqBWvRgS8J5NcNfUhrQ
+ balrog-et-macosx64-nightly/opt: Lh-BJgZ0Q5iKOb0t3VtTHA
+ balrog-et-win32-nightly/opt: JDZ1DFwkQzW_Tr9ETbrPUg
+ balrog-et-win64-nightly/opt: cY07Rbh2RIibOrQuKnFwhg
+ balrog-eu-linux-nightly/opt: asIAvkZIRqiXwceEQiTYKg
+ balrog-eu-linux64-nightly/opt: cTJw1iD-SMiSv-dWD3vShQ
+ balrog-eu-macosx64-nightly/opt: BJDdvsUMToKkBpjuzrhBYQ
+ balrog-eu-win32-nightly/opt: aVTtsJwfQLqSz-p9HjMu-g
+ balrog-eu-win64-nightly/opt: NjRzHWQ6SPaABcPV0DXpUg
+ balrog-fa-linux-nightly/opt: RF3DpgiwTiOsA8Rg3OVRUw
+ balrog-fa-linux64-nightly/opt: aWQhSTDzS2OjPb3mMWGTGw
+ balrog-fa-macosx64-nightly/opt: DbDj6S-lTe-xjb8URM6odA
+ balrog-fa-win32-nightly/opt: FqmkVZMYTM2xC162PLx5Qw
+ balrog-fa-win64-nightly/opt: HH1Aki6VQWuOkF6xXgmavQ
+ balrog-ff-linux-nightly/opt: Gjv6dKOXREay6g4LqVTxUw
+ balrog-ff-linux64-nightly/opt: D-DZF90JQti2H-bCq6LNog
+ balrog-ff-macosx64-nightly/opt: ZUMYn_kERtiU4Q7v0ycmOA
+ balrog-ff-win32-nightly/opt: c0qhfQsdR0eroFir2VUdLQ
+ balrog-ff-win64-nightly/opt: JYS-UWkWSeqWps-XvDBK-A
+ balrog-fi-linux-nightly/opt: De4wh-d9ShylGSFDl7jabQ
+ balrog-fi-linux64-nightly/opt: UAxfptrKTRiJSJFKnECUnw
+ balrog-fi-macosx64-nightly/opt: NFQt7gsPTUGHOeFjki6zow
+ balrog-fi-win32-nightly/opt: RBl8SSJUTv-XxVwe_jXOiA
+ balrog-fi-win64-nightly/opt: N7V6EZ34TJeNP7LnO8FthA
+ balrog-fr-linux-nightly/opt: GkqdEEwgRfuxfZsjQOAMxA
+ balrog-fr-linux64-nightly/opt: Rcs4CQ6AQ4qZsElkbugfDg
+ balrog-fr-macosx64-nightly/opt: fPSCu0rmTxm-UyqZBeMelA
+ balrog-fr-win32-nightly/opt: KAkKkgYwTp2x3YlTC-D6nA
+ balrog-fr-win64-nightly/opt: NklDIW2BSnKOhCaMUq86Ww
+ balrog-fy-NL-linux-nightly/opt: CPxDa7ZDShe1_QXFUyy8pw
+ balrog-fy-NL-linux64-nightly/opt: B5ObfqGgQk6FG33KrmW-pA
+ balrog-fy-NL-macosx64-nightly/opt: ISaigasVRZmsfy9T2UOAHw
+ balrog-fy-NL-win32-nightly/opt: UYLXRFg4RgmvgcLLjHUy8w
+ balrog-fy-NL-win64-nightly/opt: frqOilM3SOK5d3JxBvQ2NQ
+ balrog-ga-IE-linux-nightly/opt: QIkcfnFCRCGEyocToe4DxA
+ balrog-ga-IE-linux64-nightly/opt: Ow-J3HdWTBWsJz_HsPi6eQ
+ balrog-ga-IE-macosx64-nightly/opt: IyiOcyUWRgunk0lbRZPuKg
+ balrog-ga-IE-win32-nightly/opt: RwbMzT_nQk26spNhR31ZHQ
+ balrog-ga-IE-win64-nightly/opt: ZzIODxRsS9Otj5_VQHdF4w
+ balrog-gd-linux-nightly/opt: KNge0B5nQeKJKmLDBZiQqg
+ balrog-gd-linux64-nightly/opt: Vk0TF3qwSfm9OcyqKEpMIg
+ balrog-gd-macosx64-nightly/opt: BtBAOrOJT-yx9a7ORzQeXw
+ balrog-gd-win32-nightly/opt: Sv9POXLcSGSmYQrjYLciVw
+ balrog-gd-win64-nightly/opt: c84wOr5fSp6NNZ_kyxnMeg
+ balrog-gl-linux-nightly/opt: b0swLaoBTVabLW5cjt5MzA
+ balrog-gl-linux64-nightly/opt: e0K9tiKERc-6HVF5TjOurg
+ balrog-gl-macosx64-nightly/opt: Az4bqSkCQJWjXk5D_ZBY3g
+ balrog-gl-win32-nightly/opt: U8f-p2jQQdCkvkmd_8XJ0w
+ balrog-gl-win64-nightly/opt: NVKHRVQCQAC3uXWx5KeCaA
+ balrog-gn-linux-nightly/opt: J2BqPR40R2-Re_WZvnEffA
+ balrog-gn-linux64-nightly/opt: ZqdcKPn4QOa6tdr6vbmYPA
+ balrog-gn-macosx64-nightly/opt: RQEoALq7T9OBsBEwuilnXw
+ balrog-gn-win32-nightly/opt: KCXCgOh2Rg23AT1c3rS5oA
+ balrog-gn-win64-nightly/opt: CdayaYyARE2wzSPoUb0FsQ
+ balrog-gu-IN-linux-nightly/opt: BeNmlUPvSRaRNhaK2C3kwQ
+ balrog-gu-IN-linux64-nightly/opt: OIDrOtJlRCe6GiyhVk3-ZQ
+ balrog-gu-IN-macosx64-nightly/opt: DNZuiDw6Stu2XtyIfx5H5A
+ balrog-gu-IN-win32-nightly/opt: Rz7IRp-2RR-jq3LAnJbCIw
+ balrog-gu-IN-win64-nightly/opt: DBzqsYEnTReTInyBlrJi4Q
+ balrog-he-linux-nightly/opt: N1dunI4kRQ-3giVlqNR4nw
+ balrog-he-linux64-nightly/opt: OuT4p4NmSw62FRxk3tsm5g
+ balrog-he-macosx64-nightly/opt: eQupL_WmT6OZcQ1IULqAvg
+ balrog-he-win32-nightly/opt: aJQt5kWdQC6Kc9-giUWpxQ
+ balrog-he-win64-nightly/opt: UFyWo1RITImQ_lLyFg8OMg
+ balrog-hi-IN-linux-nightly/opt: YzVty1J-SK6v0UAD3hH6Cw
+ balrog-hi-IN-linux64-nightly/opt: TT0JMIm9QYeBNWQgHP70xA
+ balrog-hi-IN-macosx64-nightly/opt: Kc8_9xuMQoCEcGVLNGiR4g
+ balrog-hi-IN-win32-nightly/opt: fdtUXfONRnK1xbvEa3aZoQ
+ balrog-hi-IN-win64-nightly/opt: PXgkdoYJQ6KgMTc62BPrZw
+ balrog-hr-linux-nightly/opt: Oq-BK2wOTHq8fJnQIRde_Q
+ balrog-hr-linux64-nightly/opt: NpDY6lIgQqaBBFp9hUosKg
+ balrog-hr-macosx64-nightly/opt: Ubj_rLxOTTuKFkn0tq6RkQ
+ balrog-hr-win32-nightly/opt: TjQpP_ORTI2t1-_CsZHF0Q
+ balrog-hr-win64-nightly/opt: MtGCGicqRcmQRpenIOaUow
+ balrog-hsb-linux-nightly/opt: JBoKxM7qTpmEliqXhjQl_A
+ balrog-hsb-linux64-nightly/opt: YJIi4S1nRcCH2DXdv54vMg
+ balrog-hsb-macosx64-nightly/opt: EXEOULv6RWemVnTOhZBu0w
+ balrog-hsb-win32-nightly/opt: CxNuqN1gT8KGxOIINyQ4RQ
+ balrog-hsb-win64-nightly/opt: BA6EJQnrQfuZOsF4IX_r1g
+ balrog-hu-linux-nightly/opt: GEYFOcFlSiipgLgcI6e_9w
+ balrog-hu-linux64-nightly/opt: X3LSUfqxSBKALAokIPwz_w
+ balrog-hu-macosx64-nightly/opt: QdZ0p1KISNKv_jE-IqEqZg
+ balrog-hu-win32-nightly/opt: WQJhsaZQTU-zI43-kDkinA
+ balrog-hu-win64-nightly/opt: EZIP0vFsTs-YVG2_PIfm7w
+ balrog-hy-AM-linux-nightly/opt: HItXaxfzTyiyr2tfg3uGPQ
+ balrog-hy-AM-linux64-nightly/opt: NkygKTfER8qSPA0nSefknA
+ balrog-hy-AM-macosx64-nightly/opt: c3Qi1PFEQLuyCPtR2UOfdg
+ balrog-hy-AM-win32-nightly/opt: K_jYlugwQ_uC_E09u8YFBQ
+ balrog-hy-AM-win64-nightly/opt: bYtD2x_0TomGvDaKe0Mrmw
+ balrog-ia-linux-nightly/opt: fe_frGwKSrm1Hc8WrMnfUQ
+ balrog-ia-linux64-nightly/opt: eCnoshQdRBSNseG2sGPkCQ
+ balrog-ia-macosx64-nightly/opt: AkGi2sIXR6y0LNkdKszjGw
+ balrog-ia-win32-nightly/opt: a-8FTNniQxCEFToRTDGzcg
+ balrog-ia-win64-nightly/opt: MncyyVJmTtqqLtPSPCablg
+ balrog-id-linux-nightly/opt: Sjr8ZZEATk6UKK9UYH_7ew
+ balrog-id-linux64-nightly/opt: JZ2K9gQ1TMe5jin2zyKr0g
+ balrog-id-macosx64-nightly/opt: X-dCLpigSkCY8S2wtmd7Kg
+ balrog-id-win32-nightly/opt: a6KrTDMJQg2-MntEL_NBFw
+ balrog-id-win64-nightly/opt: VpCJJxaCS3-3mWwSKBFWYw
+ balrog-is-linux-nightly/opt: aaLY4HnwTZaWO_DLwmOXMg
+ balrog-is-linux64-nightly/opt: MMOxvk69RtSlWz4XxvdmTQ
+ balrog-is-macosx64-nightly/opt: RT_gH966TGupSCK_Vv0YsA
+ balrog-is-win32-nightly/opt: XSSN6HHuSsiUxY6lnBellw
+ balrog-is-win64-nightly/opt: DCmPWBkXQriolP6NCUftnQ
+ balrog-it-linux-nightly/opt: O4znVj5xR920jovBZ9wL1A
+ balrog-it-linux64-nightly/opt: eUkNd9i4Ql2gQgM2U1nV3A
+ balrog-it-macosx64-nightly/opt: AhlO8ePHRkC50Rs4k9Fj7A
+ balrog-it-win32-nightly/opt: XGRfcDyITkGpO7mF3ewvKA
+ balrog-it-win64-nightly/opt: deerkNVjQp2tnmM9N25Ghg
+ balrog-ja-JP-mac-macosx64-nightly/opt: dWB6HzFfRs6cMempzZX9AQ
+ balrog-ja-linux-nightly/opt: XEbsI4QKQ_GhjP5_Xkx5ew
+ balrog-ja-linux64-nightly/opt: UvaLW53jS2OCpWnE2zfcqQ
+ balrog-ja-win32-nightly/opt: VIJJXTayQty8ZEna8ovBNw
+ balrog-ja-win64-nightly/opt: Kg50j4_PRzqk3P-nSdW59g
+ balrog-ka-linux-nightly/opt: ZcCN01QaR0muKW54W9izTw
+ balrog-ka-linux64-nightly/opt: TMUUZ_MASB6VSjPME6O1rA
+ balrog-ka-macosx64-nightly/opt: Ck2BGdtaRRuzGBh-cmcnqg
+ balrog-ka-win32-nightly/opt: GNZb24KDR_m4xMae0Bip7w
+ balrog-ka-win64-nightly/opt: DuDYSn2vQ0eJVcB7Bsfhhg
+ balrog-kab-linux-nightly/opt: CFSR5aiaTbqFCG5Yo2-waA
+ balrog-kab-linux64-nightly/opt: FehZS7G2Qjm5QyUZE1UPxQ
+ balrog-kab-macosx64-nightly/opt: fXXJGoVVSFWpwoEJHzAG3A
+ balrog-kab-win32-nightly/opt: ADIAa2bOQ-qJl1NH1m408g
+ balrog-kab-win64-nightly/opt: cKGLyEwCQiqOmnmLyunJDw
+ balrog-kk-linux-nightly/opt: Yb85sYu4SwGoJ4KUd6YwbQ
+ balrog-kk-linux64-nightly/opt: EU9V0GRYQwS4SLxg7mewNg
+ balrog-kk-macosx64-nightly/opt: NXF_GaIbQ3qDVm87vLGOZQ
+ balrog-kk-win32-nightly/opt: b9JwmBEBSruDv6PC2bitfQ
+ balrog-kk-win64-nightly/opt: aGPZndJ5QlisO2kVEPpAnw
+ balrog-km-linux-nightly/opt: cBW_p5DrSUGTbPv0lQ0JvQ
+ balrog-km-linux64-nightly/opt: EkElRlnkQj2LZXwxi8oGvQ
+ balrog-km-macosx64-nightly/opt: B_qE5wKjSpW5oEywKmrn2A
+ balrog-km-win32-nightly/opt: TRuqUDeJQS2-kL0cXvNu2A
+ balrog-km-win64-nightly/opt: F7hyOErTR42Js9uMF1vYwA
+ balrog-kn-linux-nightly/opt: UlVAm9s5R7uqbzuQHYaxSw
+ balrog-kn-linux64-nightly/opt: cDcO-DovST22BmCFd8LUTw
+ balrog-kn-macosx64-nightly/opt: DKe7AR13R6C2Q54m_G7-hg
+ balrog-kn-win32-nightly/opt: G0s1XzBZRmeVd4KEN9lYFg
+ balrog-kn-win64-nightly/opt: RSnbnXhqQMisHbsLtSFdHA
+ balrog-ko-linux-nightly/opt: LAPKLGDxTG62gLRsP3iUSg
+ balrog-ko-linux64-nightly/opt: W1PpJkNdT-e5O2rw_SU1eA
+ balrog-ko-macosx64-nightly/opt: DRwmnyjdT4qHPZUdKsfquA
+ balrog-ko-win32-nightly/opt: OOl9RHViQP2QtceyDP_P8w
+ balrog-ko-win64-nightly/opt: Mk1n6ck2RSCeTY4el5a9FA
+ balrog-lij-linux-nightly/opt: MdE9C56aQqaSmQ37AKeIow
+ balrog-lij-linux64-nightly/opt: Bii84tpVSdG_8u5nQr5MSQ
+ balrog-lij-macosx64-nightly/opt: BWsAOK6dT22n6reG0QVmqw
+ balrog-lij-win32-nightly/opt: dJwWH8bXSxWCNEHdItPlJQ
+ balrog-lij-win64-nightly/opt: MHvj25UaSvmI8AVYkd9Isg
+ balrog-linux-nightly/opt: ekJMhrTOSFmX6YN6Mn2QvA
+ balrog-linux64-nightly/opt: CMZ7-v5IRNmr5LaemE0pEg
+ balrog-lt-linux-nightly/opt: DXMiFxCuSHawkAOq9RFH5w
+ balrog-lt-linux64-nightly/opt: efHE3thYR4unpV5-eP4Ytg
+ balrog-lt-macosx64-nightly/opt: PTfSgjsxRDWDjjYy_ur7gg
+ balrog-lt-win32-nightly/opt: G50N-KBRRH-N2Hp9VQU3nQ
+ balrog-lt-win64-nightly/opt: UGPJO2cdRVCkQUPBPZN8aw
+ balrog-lv-linux-nightly/opt: UVSiri0LRgyO0FQyZwLtng
+ balrog-lv-linux64-nightly/opt: c-cMqOAYRySx4i3c6iEhbg
+ balrog-lv-macosx64-nightly/opt: X9MQa3wiQ-G-bt6YRafkHg
+ balrog-lv-win32-nightly/opt: bGpJWUzsSny9gw4B6UNm7Q
+ balrog-lv-win64-nightly/opt: QcHSzAguSzunClTujUTJAg
+ balrog-macosx64-nightly/opt: KlkVOKDRRmyWotmvlxZdDA
+ balrog-mai-linux-nightly/opt: bLHhHvFESe2akVZEqApiHw
+ balrog-mai-linux64-nightly/opt: GZxuK9pbRxucfZLvq4lHMQ
+ balrog-mai-macosx64-nightly/opt: d3cN9eojT0Kt9DXRHeZYOg
+ balrog-mai-win32-nightly/opt: dCs26597RpiwLvASHzdDBw
+ balrog-mai-win64-nightly/opt: b5c4BZ8FSB6ebJ_DzOZBzA
+ balrog-mk-linux-nightly/opt: Ok_6_DqeRhSd7dJkhx3CIg
+ balrog-mk-linux64-nightly/opt: NoqSdqQ8RfS2QdBMnFAJrw
+ balrog-mk-macosx64-nightly/opt: X2th-6daR0u7lhKOrwJLLg
+ balrog-mk-win32-nightly/opt: Or1wDZbATY2jV1ta1GiAaQ
+ balrog-mk-win64-nightly/opt: SNX98XyfRO6bKfeIbGfAYg
+ balrog-ml-linux-nightly/opt: Zg2yy09NQf-SgWXwwBbBhQ
+ balrog-ml-linux64-nightly/opt: NtIjWgU4RyyuEnLUW6gccw
+ balrog-ml-macosx64-nightly/opt: AlkeoLiuQBKnchgZQeHnpw
+ balrog-ml-win32-nightly/opt: HdDWaHXeR7Slu9eiBWJepw
+ balrog-ml-win64-nightly/opt: NAf9qvylR4ahRLsFTF_8Fg
+ balrog-mr-linux-nightly/opt: WqNbg4SPRzOLt_-IoGDYrA
+ balrog-mr-linux64-nightly/opt: aeCfu6CMT9O6JBrJwY7_FA
+ balrog-mr-macosx64-nightly/opt: J7W_f1cvQDyWS97PbzKkCw
+ balrog-mr-win32-nightly/opt: U6wsLveESKGOOQOB9VdthA
+ balrog-mr-win64-nightly/opt: awF2b-b9TxekOPsrfaIZpQ
+ balrog-ms-linux-nightly/opt: PYXICZ7UTGWVzYmfk67r_w
+ balrog-ms-linux64-nightly/opt: CDuq21JARd2a0xEoxvznog
+ balrog-ms-macosx64-nightly/opt: WPXzWN8kRx6STb49ksnJqQ
+ balrog-ms-win32-nightly/opt: XxotqxMkTwq4PQXsQz-3NQ
+ balrog-ms-win64-nightly/opt: U8F1h9NQSuiN8uPnFqkBYg
+ balrog-my-linux-nightly/opt: H6saTKAgTLyQztqxJOUb3Q
+ balrog-my-linux64-nightly/opt: Tp4aFWdnRsu9b1ZSYggt1g
+ balrog-my-macosx64-nightly/opt: BFE6X54tRkuARy3GHyvw2A
+ balrog-my-win32-nightly/opt: KYXQB8VWSwWr9ia939m8kw
+ balrog-my-win64-nightly/opt: GGflOQw6S9SYtk7k8LB9iA
+ balrog-nb-NO-linux-nightly/opt: YxCzeXZLSWSCj6pOT1IqHw
+ balrog-nb-NO-linux64-nightly/opt: Nw9zHzikScO0ypkdfdCCoQ
+ balrog-nb-NO-macosx64-nightly/opt: WYAdKM0ST7y5wYf71acd1g
+ balrog-nb-NO-win32-nightly/opt: f10oG1qIRpGLm5uuCHsMMg
+ balrog-nb-NO-win64-nightly/opt: bWJmXZEbRlun5yWwOPoXig
+ balrog-ne-NP-linux-nightly/opt: P_Vb58pJRWKL3vjG0lrQdQ
+ balrog-ne-NP-linux64-nightly/opt: F_cFXNvQQXiMRKXOiFSKgQ
+ balrog-ne-NP-macosx64-nightly/opt: RPhoUjfRRxCG4FtJ7of3Ng
+ balrog-ne-NP-win32-nightly/opt: InSCvI2hTWuCPL0Ok76vKg
+ balrog-ne-NP-win64-nightly/opt: JLTndBMdSOyQb3jVa07zSg
+ balrog-nl-linux-nightly/opt: ACVJZ8hxSE6QBZLqhlxHnQ
+ balrog-nl-linux64-nightly/opt: eIzexzIlQumJBaPOaIgkZg
+ balrog-nl-macosx64-nightly/opt: Ccp-kyKFQzasGtChnv5sgA
+ balrog-nl-win32-nightly/opt: Jv6GNwlpQwyFZTFulfyNEQ
+ balrog-nl-win64-nightly/opt: Mq_ElD-lSwSCo1QvpKnhSQ
+ balrog-nn-NO-linux-nightly/opt: DKvg91LCTL2yLUzRXtR5mg
+ balrog-nn-NO-linux64-nightly/opt: CVUYiU3gSpuDlhgS384Ahw
+ balrog-nn-NO-macosx64-nightly/opt: NWFLTukcTSmpopm7SCGv4g
+ balrog-nn-NO-win32-nightly/opt: D-Cnozf6Q7ugdITQhDKrcA
+ balrog-nn-NO-win64-nightly/opt: LrRTNf4oS16r0ZEP_z97IQ
+ balrog-oc-linux-nightly/opt: KJ-Nur8JRyOO7OzOqHM3Qw
+ balrog-oc-linux64-nightly/opt: Pguw6navS3SCoUQJsZnQ7w
+ balrog-oc-macosx64-nightly/opt: MBZJRarrSwmyHxheywr5rg
+ balrog-oc-win32-nightly/opt: W5eLcQ7YQJG1e-PViQ2nOg
+ balrog-oc-win64-nightly/opt: BWj7X42SQaafAzmMd4W3Kg
+ balrog-or-linux-nightly/opt: WJYiK8muQFS0Nye767bQbg
+ balrog-or-linux64-nightly/opt: E90kkjMsRwK75_87LHlRFg
+ balrog-or-macosx64-nightly/opt: WDwOpQgHTdylL1Hknz3_WA
+ balrog-or-win32-nightly/opt: Kf6QNA5aTq-2ZDn56XWXMw
+ balrog-or-win64-nightly/opt: YgVQwvbJS8a0QXCHBsTmlw
+ balrog-pa-IN-linux-nightly/opt: CHg-cEZVTYqe6S9cu3X8eA
+ balrog-pa-IN-linux64-nightly/opt: MuEcWiN3SyypQWeRPteKUg
+ balrog-pa-IN-macosx64-nightly/opt: OoNdw9ikQiWBSeXf6YUkfg
+ balrog-pa-IN-win32-nightly/opt: F2H_siTdT6mddR8Lh2dEOw
+ balrog-pa-IN-win64-nightly/opt: do2_GMiaRC26EXyysNRCUw
+ balrog-pl-linux-nightly/opt: e4gszrZSROuS4F98EhoswA
+ balrog-pl-linux64-nightly/opt: A8dwNOqAQwmkuxsJn1qYdA
+ balrog-pl-macosx64-nightly/opt: MIM481ukQlq4r2fTfIy4Fg
+ balrog-pl-win32-nightly/opt: KgFtivHCQ_WIvna7CTdGdg
+ balrog-pl-win64-nightly/opt: R3p5M73FSdC7BlxYrCJvnw
+ balrog-pt-BR-linux-nightly/opt: OEAyq4tQSFKNKn-GYaH4GQ
+ balrog-pt-BR-linux64-nightly/opt: JTuOo598Rt2ViGlKO33fOQ
+ balrog-pt-BR-macosx64-nightly/opt: BXiTQOYHR7yliUCB3B_rwg
+ balrog-pt-BR-win32-nightly/opt: dVAAOKEQT1WeaItVAHJhbA
+ balrog-pt-BR-win64-nightly/opt: VYsr8HYNQueTAuzhFYPqdw
+ balrog-pt-PT-linux-nightly/opt: e9rATKmXRIyGNEB1eFn0gg
+ balrog-pt-PT-linux64-nightly/opt: AHIkHgmhQy2W4P5Fp_ifKQ
+ balrog-pt-PT-macosx64-nightly/opt: ImZeQ-QaQziQN-WNFY1KiA
+ balrog-pt-PT-win32-nightly/opt: F_GswQh9QxOMZCruIsTXOg
+ balrog-pt-PT-win64-nightly/opt: LCuDACU_RPe-99MTATT4Ew
+ balrog-rm-linux-nightly/opt: VU9c3QhsQWyNvuhtFT2NGg
+ balrog-rm-linux64-nightly/opt: Nwq0bb_hS1WBQqstzXIHwg
+ balrog-rm-macosx64-nightly/opt: TA8lYeGySBCFRsQ3XF8I5Q
+ balrog-rm-win32-nightly/opt: QK3o93rMTkaFTIIoxaHKqA
+ balrog-rm-win64-nightly/opt: AnsIfJWZSryW3cQt1sjE8Q
+ balrog-ro-linux-nightly/opt: TJARjkz9TR-CvkhRvFDUQA
+ balrog-ro-linux64-nightly/opt: DpKjAmBNQ7uwAUsBmGHiAA
+ balrog-ro-macosx64-nightly/opt: F-GoOgIgQBmtTiSANF9MbQ
+ balrog-ro-win32-nightly/opt: H3U18uOVQaGRz7DbnN8JnQ
+ balrog-ro-win64-nightly/opt: HJNhsJkxRNOJhvtm_KXUDg
+ balrog-ru-linux-nightly/opt: aC-pm8lGQdODftkNeY-QNQ
+ balrog-ru-linux64-nightly/opt: ct8Rip9EQoiyhGDFJ_4z1g
+ balrog-ru-macosx64-nightly/opt: DaMom17iT9-oBTKaMsE5Zw
+ balrog-ru-win32-nightly/opt: U8-kh1cQSfqBUqUo8thaFQ
+ balrog-ru-win64-nightly/opt: DdPGAC7qRLSGGE6njzissg
+ balrog-si-linux-nightly/opt: anexiubEQk-ODvWf39L-zw
+ balrog-si-linux64-nightly/opt: WeRZXk4BSXiypE_yjfSogQ
+ balrog-si-macosx64-nightly/opt: O_orFFu7T9erZjjjKMTsDQ
+ balrog-si-win32-nightly/opt: QsRbwTurToS3fXaEWfAhOw
+ balrog-si-win64-nightly/opt: YZR4qyjUTXyhSmWKBdpaZQ
+ balrog-sk-linux-nightly/opt: OFzREkPFT6qwXGam8ZigTQ
+ balrog-sk-linux64-nightly/opt: PE60PAv3TeyhZaLAr3D4OA
+ balrog-sk-macosx64-nightly/opt: UT7WU0v0S_CDqCaLALj8GQ
+ balrog-sk-win32-nightly/opt: HTD-6kxNQX-YN_KcaYfdLQ
+ balrog-sk-win64-nightly/opt: WEoV-Sa0QPWUmiWqTtc7Kw
+ balrog-sl-linux-nightly/opt: CbFzDyuVRre0ZrXouip9UA
+ balrog-sl-linux64-nightly/opt: exCUCPAjTzyBjO2O0_0pzA
+ balrog-sl-macosx64-nightly/opt: YI8FFWlzRxOdJR_-FO4eAg
+ balrog-sl-win32-nightly/opt: GiqhTaLXQh2Bpzd271qCjw
+ balrog-sl-win64-nightly/opt: A5GTLUiGT42cOdyivUtDuw
+ balrog-son-linux-nightly/opt: NhvIhV1tTrySeTVpzgtEyA
+ balrog-son-linux64-nightly/opt: bduSzICCQLu6WvHiMaxdzg
+ balrog-son-macosx64-nightly/opt: EJJHjzkDThiwDuAeAh5VNg
+ balrog-son-win32-nightly/opt: ZNbK3a5sTSSbiOECgLNsag
+ balrog-son-win64-nightly/opt: T0oiVwdCTlefGOZVihuwrA
+ balrog-sq-linux-nightly/opt: DoYxWv6QQiGNaCHDNXAthg
+ balrog-sq-linux64-nightly/opt: P0YdE6xwTRiz0UR4uvlW5w
+ balrog-sq-macosx64-nightly/opt: Pkw1ppUyQ-yz5_jTsCenpA
+ balrog-sq-win32-nightly/opt: VBheud2aSnmNL63IUMRCoA
+ balrog-sq-win64-nightly/opt: O2cbWiNuT2SquJ78LQGyCA
+ balrog-sr-linux-nightly/opt: LTKkqyy2RYikeBLCLO5CCQ
+ balrog-sr-linux64-nightly/opt: GZOmoFaeRcKHA254J0zteQ
+ balrog-sr-macosx64-nightly/opt: IXfrYq81Q-OlksTHB-ezew
+ balrog-sr-win32-nightly/opt: Dm5ymAflQPmek-2h3wiijQ
+ balrog-sr-win64-nightly/opt: WxXrmEfMR-qigrDsT7wY9A
+ balrog-sv-SE-linux-nightly/opt: GtXUw4T4TxSD25JOud3DkQ
+ balrog-sv-SE-linux64-nightly/opt: WZG8gd56Q4KM2JudfaUfpQ
+ balrog-sv-SE-macosx64-nightly/opt: XQInyRcFR8y1q37EMxldhw
+ balrog-sv-SE-win32-nightly/opt: X4Uk9hxdQ9GAu0v-lV2R8g
+ balrog-sv-SE-win64-nightly/opt: TkIcSo7-SX2uuNNoathAdg
+ balrog-ta-linux-nightly/opt: FAjXOxsZQXmQ93dLXXjOXA
+ balrog-ta-linux64-nightly/opt: J0__eZNMRC-PH0NM59lyFQ
+ balrog-ta-macosx64-nightly/opt: IHJ451xSQmSZKa_GXDATOQ
+ balrog-ta-win32-nightly/opt: GX4f1vlFRaOz_cvFJWywMw
+ balrog-ta-win64-nightly/opt: GZw1C4GzQh2Y1kNzWkJF-w
+ balrog-te-linux-nightly/opt: JyWAxz81T1aVuTCTPraTTQ
+ balrog-te-linux64-nightly/opt: Aqnb5gDPSuKCBnLs9GmsAA
+ balrog-te-macosx64-nightly/opt: eSQHKhqYSj2JZWUB5UlYiA
+ balrog-te-win32-nightly/opt: GCEyKTkATlKzMJFMUsTtsg
+ balrog-te-win64-nightly/opt: VUnJzuysTlmBghOUoBfdDg
+ balrog-th-linux-nightly/opt: LNCaGGgcR62D27NUFhpBaA
+ balrog-th-linux64-nightly/opt: W1463aBOS_WTNnQB4jghww
+ balrog-th-macosx64-nightly/opt: HY-y8hBzSYGuC2ItQf4eSg
+ balrog-th-win32-nightly/opt: IG_H5nl1Sf64KmhYSu8C8g
+ balrog-th-win64-nightly/opt: YiaKcNTITg2sGu5t4l7-mw
+ balrog-tr-linux-nightly/opt: Z-8L5ROiSJieeQE5G-C7Kw
+ balrog-tr-linux64-nightly/opt: KqmVNY16RLCnPKH1SmCeyQ
+ balrog-tr-macosx64-nightly/opt: GJtwPGGvS1qW60rk_GjCSA
+ balrog-tr-win32-nightly/opt: GFH1dz1xThy5eIVXDM_KZw
+ balrog-tr-win64-nightly/opt: NsRoFsdHSkWt6J_Jx_Co9w
+ balrog-uk-linux-nightly/opt: PVyiC-LLRCOXAaPNaGn5SQ
+ balrog-uk-linux64-nightly/opt: WH8KxoR_TmGjymDYTrX3eg
+ balrog-uk-macosx64-nightly/opt: E-hccrgUQHKEuh1TKVSB3g
+ balrog-uk-win32-nightly/opt: MkKd5DJrRdyiHgBcXb-9kw
+ balrog-uk-win64-nightly/opt: RMRXqKHCSvyk1RHgqaBRkg
+ balrog-ur-linux-nightly/opt: bw7BR_2NQUC3nlqVGXKpYA
+ balrog-ur-linux64-nightly/opt: GeSV-OR6QR6lGarVoxLFqQ
+ balrog-ur-macosx64-nightly/opt: TTXju9kVQvmuDTuiek9gCA
+ balrog-ur-win32-nightly/opt: AAg7nufwTSWtfgw7YQFE3g
+ balrog-ur-win64-nightly/opt: Fnmf4iRzTUu4J7USj_Y5TA
+ balrog-uz-linux-nightly/opt: NBp0rjZMS0CSQJVVJzV8VA
+ balrog-uz-linux64-nightly/opt: Q4lhcQn2T_-qs_ywhmuh-w
+ balrog-uz-macosx64-nightly/opt: N1Pqi9TGQU6PsQtQzof2FA
+ balrog-uz-win32-nightly/opt: JweAJDkeRg6wZm5IRVTN6w
+ balrog-uz-win64-nightly/opt: X9iG8SpxThutsg2EeffXAA
+ balrog-vi-linux-nightly/opt: D8g_QbiWTxy5xtiSL5d-Ow
+ balrog-vi-linux64-nightly/opt: XVmMaUfMQOq-OmgXzVPj3w
+ balrog-vi-macosx64-nightly/opt: b8aKXuFOSP2NDCLn3v_woQ
+ balrog-vi-win32-nightly/opt: PEO78e-ZQmGc2bAyvK1uxA
+ balrog-vi-win64-nightly/opt: ZinD5shzQKetCc0YaZexrQ
+ balrog-win32-nightly/opt: QfNtoSw9Q3CdhbLg4q2-rA
+ balrog-win64-nightly/opt: Mn220ZDRTvWqh866Y9KUoA
+ balrog-xh-linux-nightly/opt: HHOKDOlZS0u9fAcyHF3skA
+ balrog-xh-linux64-nightly/opt: O8eFrG61TQS5JPolPW1Jeg
+ balrog-xh-macosx64-nightly/opt: AfCJ7rbbT9eQS195BdLEfw
+ balrog-xh-win32-nightly/opt: RY6gI8H3R7iRhZTvhB_mMw
+ balrog-xh-win64-nightly/opt: enayoJcnRmqCzPZi325Vew
+ balrog-zh-CN-linux-nightly/opt: fDKXIeHhTP-DRXkrXn2fxQ
+ balrog-zh-CN-linux64-nightly/opt: HFxVAcyISeCGv0bBGpCDxg
+ balrog-zh-CN-macosx64-nightly/opt: PVkmmfRnSaSs9dW36DpKBw
+ balrog-zh-CN-win32-nightly/opt: RE6erpBkRyuVu-1HcymHfQ
+ balrog-zh-CN-win64-nightly/opt: If36cKEUQTSixHdvbW1mHw
+ balrog-zh-TW-linux-nightly/opt: C_U96UTuS1GJZPJs-375Lg
+ balrog-zh-TW-linux64-nightly/opt: Zz78FXZCS8KL6I1fV6qsBw
+ balrog-zh-TW-macosx64-nightly/opt: KkrfoCfpRkm9TxY6swSUgA
+ balrog-zh-TW-win32-nightly/opt: Qu7-dbj-Sey4GagGqYPDiQ
+ balrog-zh-TW-win64-nightly/opt: bb-JQkJtSFOnSKd8rSGavA
+ beetmover-checksums-ach-linux-nightly/opt: Nm77rmLDRtKdJ1DK7nUViw
+ beetmover-checksums-ach-linux64-nightly/opt: Ewvg93KWTde_mINvQYEVxg
+ beetmover-checksums-ach-macosx64-nightly/opt: BrASrufAQoCGrVceWOp2ww
+ beetmover-checksums-ach-win32-nightly/opt: VFIbxagjQ8-fxIiG6gk7SA
+ beetmover-checksums-ach-win64-nightly/opt: Hqa0AToLTbqsoPCwjnB8Gg
+ beetmover-checksums-af-linux-nightly/opt: dBQKDFOURk-zkLUGzv1fzw
+ beetmover-checksums-af-linux64-nightly/opt: EM557doETCGVO5SI19q5xQ
+ beetmover-checksums-af-macosx64-nightly/opt: dCoFnXreSSGnR7C-R6EeVQ
+ beetmover-checksums-af-win32-nightly/opt: FOkd8j87Sa6LpIwLpw6-aw
+ beetmover-checksums-af-win64-nightly/opt: UWdNdNIlQ9emKSiXYnNW7A
+ beetmover-checksums-an-linux-nightly/opt: dMbVvcIAROuIFabxkQw87A
+ beetmover-checksums-an-linux64-nightly/opt: Mn2wYcr2QZyap4FIpkxQ3A
+ beetmover-checksums-an-macosx64-nightly/opt: bubZe4CRSHSlT7CCiE3EIg
+ beetmover-checksums-an-win32-nightly/opt: eJpnZMHdTyeSHAFUCfryJw
+ beetmover-checksums-an-win64-nightly/opt: WxnW8WnGSaal_ClOcRsb7A
+ beetmover-checksums-ar-linux-nightly/opt: M_hdbIIUQUO1pD5ThpNJYA
+ beetmover-checksums-ar-linux64-nightly/opt: S2kNm9viS8Gk0cJ__0NVYQ
+ beetmover-checksums-ar-macosx64-nightly/opt: X72-BB9mQr2bfT89SKBV-w
+ beetmover-checksums-ar-win32-nightly/opt: DoJyePIQTci03-uA2lnR5w
+ beetmover-checksums-ar-win64-nightly/opt: UjYvy2c8TPayNO8KUzwd7Q
+ beetmover-checksums-as-linux-nightly/opt: FUlJZHbCRGOd0hJiVdf79w
+ beetmover-checksums-as-linux64-nightly/opt: QPQ9PAcFRiSFlkJdq8CHwA
+ beetmover-checksums-as-macosx64-nightly/opt: NZck94GQQAG-tJ_T70PO4g
+ beetmover-checksums-as-win32-nightly/opt: e9zDJV97Rcyai-c7h8OqnA
+ beetmover-checksums-as-win64-nightly/opt: azTM5UFQQH2ZagUvGmMT_Q
+ beetmover-checksums-ast-linux-nightly/opt: Qv5nrScaRpSpEe-StlmreQ
+ beetmover-checksums-ast-linux64-nightly/opt: SC-TRDRYRki8tgoVK5IBgg
+ beetmover-checksums-ast-macosx64-nightly/opt: Ysby0MfuTEqcribSYUdJqA
+ beetmover-checksums-ast-win32-nightly/opt: fHYSestFTHiaoVvh9Txw0Q
+ beetmover-checksums-ast-win64-nightly/opt: VhvIBnu0R1W84EpD88n5-w
+ beetmover-checksums-az-linux-nightly/opt: Piw8kRTUQQ-BGPWUNClj7Q
+ beetmover-checksums-az-linux64-nightly/opt: NIG3NecCQVem_N_zNKobLQ
+ beetmover-checksums-az-macosx64-nightly/opt: K5jy73BqTW2MqpNeuIb9EA
+ beetmover-checksums-az-win32-nightly/opt: cqQtCEMQTjGB81T0Yj3yFQ
+ beetmover-checksums-az-win64-nightly/opt: eb_iWnJ7ReKDSKtlv0PdrQ
+ beetmover-checksums-be-linux-nightly/opt: KfV89hg8RHOzZFieuD1CMA
+ beetmover-checksums-be-linux64-nightly/opt: adNuYfN9SyeWy130IVa7ag
+ beetmover-checksums-be-macosx64-nightly/opt: IdjkMmtyTE2BN6YCW3tqDg
+ beetmover-checksums-be-win32-nightly/opt: ZQrM5f1HQWa8u1JRr8v_Cw
+ beetmover-checksums-be-win64-nightly/opt: CAAP0uGgSQCtcUi_K2nhQA
+ beetmover-checksums-bg-linux-nightly/opt: V6Vprr22Rga-y7JbwGfYyw
+ beetmover-checksums-bg-linux64-nightly/opt: eLr9jTfXQlOJwwwzMCW0-w
+ beetmover-checksums-bg-macosx64-nightly/opt: cJpzfQeYSJ6KNx6M8LkJVg
+ beetmover-checksums-bg-win32-nightly/opt: HhFhVmscRISeG5uEz5MsbA
+ beetmover-checksums-bg-win64-nightly/opt: CB8WHIb8QqOncRc7Sk7C3g
+ beetmover-checksums-bn-BD-linux-nightly/opt: RVSDsC5oQU-LNl9puGt9PA
+ beetmover-checksums-bn-BD-linux64-nightly/opt: TF5xEcncQQ6CprQ8DimG7g
+ beetmover-checksums-bn-BD-macosx64-nightly/opt: MV0bw7APSAKMWQuBPPtsVg
+ beetmover-checksums-bn-BD-win32-nightly/opt: eGhCubkWT62hRMH9Z_5W8g
+ beetmover-checksums-bn-BD-win64-nightly/opt: HIcP8OHdQgOVu3e85j8lMg
+ beetmover-checksums-bn-IN-linux-nightly/opt: Pclq36-MS5qxtGAbx9DsaQ
+ beetmover-checksums-bn-IN-linux64-nightly/opt: BeC2_UQyQGqYsn8brBTiig
+ beetmover-checksums-bn-IN-macosx64-nightly/opt: dTSirGwDQxG-nvQIS0s0ZQ
+ beetmover-checksums-bn-IN-win32-nightly/opt: bBV65gB9QEaQrh_woxSFmg
+ beetmover-checksums-bn-IN-win64-nightly/opt: cmFqMMwLTsKG4QdP_VH4qA
+ beetmover-checksums-br-linux-nightly/opt: FUufxAT_T6Cy9iPdNOlb7Q
+ beetmover-checksums-br-linux64-nightly/opt: EcuiwfP6Te2qSoTdK4pGVA
+ beetmover-checksums-br-macosx64-nightly/opt: aomoy8wFSUqDBuBPpTjmdQ
+ beetmover-checksums-br-win32-nightly/opt: FDKQgMO1RnCsrEczXc10EQ
+ beetmover-checksums-br-win64-nightly/opt: caZ8J9FNQ5qz8d0RKf0gxA
+ beetmover-checksums-bs-linux-nightly/opt: axgAa6R_SiSJ0bN71F26Qg
+ beetmover-checksums-bs-linux64-nightly/opt: Z6dozKJLTV6BeQK9DRNVlw
+ beetmover-checksums-bs-macosx64-nightly/opt: egafsI2XQUKqQtMQxGEpVg
+ beetmover-checksums-bs-win32-nightly/opt: ZQMoSL4-T7Wk0y9cZaaHAQ
+ beetmover-checksums-bs-win64-nightly/opt: JVEcuwhMTpicCVp-yy4Mcw
+ beetmover-checksums-ca-linux-nightly/opt: GGuCB7CGT0OyuSGBVYB7Pg
+ beetmover-checksums-ca-linux64-nightly/opt: b7mTJV4FSAyRsyRqaf-xhg
+ beetmover-checksums-ca-macosx64-nightly/opt: czVRc1t2QEG_aJPrjsmicw
+ beetmover-checksums-ca-win32-nightly/opt: d0DtFAVCRqe24Nc7fT5Wfw
+ beetmover-checksums-ca-win64-nightly/opt: ebWkzgYZTB2F473XTVrm-A
+ beetmover-checksums-cak-linux-nightly/opt: UtdW8lTHRAi3qDM7QABriA
+ beetmover-checksums-cak-linux64-nightly/opt: TcyTYs72TjuXWTomFhuwAA
+ beetmover-checksums-cak-macosx64-nightly/opt: dKoeHGwFSUWepI1_KIA9Ow
+ beetmover-checksums-cak-win32-nightly/opt: BtUiXrQuQo6Qpj92h8rXhA
+ beetmover-checksums-cak-win64-nightly/opt: Ahj6tcIRReSgCgUs4UBE8A
+ beetmover-checksums-cs-linux-nightly/opt: KMgZiSI4S_-JjmRiLLoXQA
+ beetmover-checksums-cs-linux64-nightly/opt: DnMF7gDLT0GKPoMpxYMT4g
+ beetmover-checksums-cs-macosx64-nightly/opt: MSuc0dbtR4u7rcHgv5AFCg
+ beetmover-checksums-cs-win32-nightly/opt: Sqx5cpbzRe68prg3cWiUnw
+ beetmover-checksums-cs-win64-nightly/opt: BXfraByPSZG_Wu2-YN6LvA
+ beetmover-checksums-cy-linux-nightly/opt: dGXDKQJcRlegjfwU80X2nw
+ beetmover-checksums-cy-linux64-nightly/opt: ZFe9EnZOQhyFnwrbHCP_fw
+ beetmover-checksums-cy-macosx64-nightly/opt: IN_KS6b3QY-lIOwjjoHWgg
+ beetmover-checksums-cy-win32-nightly/opt: WLA3m7LFSH-keWUFGnFdcA
+ beetmover-checksums-cy-win64-nightly/opt: Czu9cYg_T7-i4k6iqNCpRQ
+ beetmover-checksums-da-linux-nightly/opt: SOnlCCQ2Qd-mhH48tpHHxQ
+ beetmover-checksums-da-linux64-nightly/opt: S14qPsReSHaoZlTriz8xOw
+ beetmover-checksums-da-macosx64-nightly/opt: UkAG7VzdRUOywv5lzPhq-g
+ beetmover-checksums-da-win32-nightly/opt: M8r-01E5RSaYUrPx9mq_Bw
+ beetmover-checksums-da-win64-nightly/opt: Ad4tLGFoRLiuk-ljvxXngw
+ beetmover-checksums-de-linux-nightly/opt: TyLF1xfYRIy1viFXUyLMYg
+ beetmover-checksums-de-linux64-nightly/opt: LabrhGhsRzOF7zk_Zbg4DA
+ beetmover-checksums-de-macosx64-nightly/opt: TrGHw3mRSfO3ERL5p20_Pg
+ beetmover-checksums-de-win32-nightly/opt: anCv6HObS6iopiMPAT1ffg
+ beetmover-checksums-de-win64-nightly/opt: GS0-Xue5T6SibQfgVVZeuw
+ beetmover-checksums-dsb-linux-nightly/opt: IxAlW_OFSuOjvmftjcJoEg
+ beetmover-checksums-dsb-linux64-nightly/opt: aIz3KOIpRbuoTfUGSoUBwQ
+ beetmover-checksums-dsb-macosx64-nightly/opt: To8aqz9aSYus1z5veSKozA
+ beetmover-checksums-dsb-win32-nightly/opt: A482lLazQk698rF3CNIcLw
+ beetmover-checksums-dsb-win64-nightly/opt: HPC7_pxJTre73mZj1ePRwQ
+ beetmover-checksums-el-linux-nightly/opt: Xctf0DGJQJakgCSgxIOd7g
+ beetmover-checksums-el-linux64-nightly/opt: KD9WI3MZReWseDE9goxzVg
+ beetmover-checksums-el-macosx64-nightly/opt: GnMMcu_8SR2FyKUpkuCW7g
+ beetmover-checksums-el-win32-nightly/opt: e2WQfzHmSdicHmnMjsAang
+ beetmover-checksums-el-win64-nightly/opt: GAnsNPTwQ3WnYGVbB9bMlA
+ beetmover-checksums-en-CA-linux-nightly/opt: O0_V5kW2S765-gJPE4gtXw
+ beetmover-checksums-en-CA-linux64-nightly/opt: XphQJtyMTYmlzdtuHru04Q
+ beetmover-checksums-en-CA-macosx64-nightly/opt: FGfCetXRRbO-I1Uqh2THtQ
+ beetmover-checksums-en-CA-win32-nightly/opt: YO7ehwrNSmCEf_FJYjMXeg
+ beetmover-checksums-en-CA-win64-nightly/opt: HTSb1GJLROCRTVZY1-nKbw
+ beetmover-checksums-en-GB-linux-nightly/opt: YAeqw2-TSOCGKuwaQJRp-g
+ beetmover-checksums-en-GB-linux64-nightly/opt: DKps9psqS4qIBszhhT2ulw
+ beetmover-checksums-en-GB-macosx64-nightly/opt: PVsgLnZ1RPmDQt5PXq9taA
+ beetmover-checksums-en-GB-win32-nightly/opt: b6YFSmueRoGVK9n9Zh6pGw
+ beetmover-checksums-en-GB-win64-nightly/opt: Lb9nwud4QGGBg9tCcFlHlA
+ beetmover-checksums-en-ZA-linux-nightly/opt: GB8GdFdFQ0yv2yK5aJOj_g
+ beetmover-checksums-en-ZA-linux64-nightly/opt: VfQC7y1xQu-aT2-JQYo0vg
+ beetmover-checksums-en-ZA-macosx64-nightly/opt: KQ-gEpF3RxSaiT3OUkOW3A
+ beetmover-checksums-en-ZA-win32-nightly/opt: Dp6lw_HhQzq4_LmboyIaeg
+ beetmover-checksums-en-ZA-win64-nightly/opt: HGWHMPqnR1S7s0Awn2nVZQ
+ beetmover-checksums-eo-linux-nightly/opt: bfXI_I27RWGB3SRIJIBLog
+ beetmover-checksums-eo-linux64-nightly/opt: FTljcZryR9ST8IshCDW3hA
+ beetmover-checksums-eo-macosx64-nightly/opt: H5O4Co0PR9CKxRcJkyQnzA
+ beetmover-checksums-eo-win32-nightly/opt: RrayaUjDSrq9arSjXsgBqQ
+ beetmover-checksums-eo-win64-nightly/opt: Kxc15D3-TOingp1QE_H6-A
+ beetmover-checksums-es-AR-linux-nightly/opt: dD62g8ldQESJ8vGXODN9hQ
+ beetmover-checksums-es-AR-linux64-nightly/opt: QnVtkz3HSzuX8MA9rFRNLQ
+ beetmover-checksums-es-AR-macosx64-nightly/opt: KLoO0EeeRZ-Q8LtpMXgcAw
+ beetmover-checksums-es-AR-win32-nightly/opt: Z7PizvEnRj-Cmu34vaGLZw
+ beetmover-checksums-es-AR-win64-nightly/opt: TLBuXY8HTHioaigITtU4GQ
+ beetmover-checksums-es-CL-linux-nightly/opt: Q_a59wkKST-r-RqqzjdVpQ
+ beetmover-checksums-es-CL-linux64-nightly/opt: H7_qpWp6RAq-reqzrmEJRQ
+ beetmover-checksums-es-CL-macosx64-nightly/opt: dQs2yYnHRii8gXIte5L9qA
+ beetmover-checksums-es-CL-win32-nightly/opt: HIX1rHyqTs6A87JYswB6aQ
+ beetmover-checksums-es-CL-win64-nightly/opt: RNlCY5jbRA-jZ0PYdUPHuw
+ beetmover-checksums-es-ES-linux-nightly/opt: eoYR5olxQTWya9ZAB-0imw
+ beetmover-checksums-es-ES-linux64-nightly/opt: Ba1QxagaQtiUszGA_Gsvjw
+ beetmover-checksums-es-ES-macosx64-nightly/opt: Eav7RX_MRHGml-1RzvJB6A
+ beetmover-checksums-es-ES-win32-nightly/opt: FSuk2fMGQHO8xXslSZoTDg
+ beetmover-checksums-es-ES-win64-nightly/opt: JfuhdAEGTneMstmVanAkbg
+ beetmover-checksums-es-MX-linux-nightly/opt: LFjDTFQcST6zT7iWLBkisQ
+ beetmover-checksums-es-MX-linux64-nightly/opt: fk1DtpX1SG2FA5ifaN0G0Q
+ beetmover-checksums-es-MX-macosx64-nightly/opt: UhPsEfkGT2SpEfJK7vz-3w
+ beetmover-checksums-es-MX-win32-nightly/opt: KLvxsF9HQ3KFKIVBpKunSg
+ beetmover-checksums-es-MX-win64-nightly/opt: EMzGQFNcQ8KF2BkmITSwTA
+ beetmover-checksums-et-linux-nightly/opt: E9KbQUChTwOFPfjYGe6LqA
+ beetmover-checksums-et-linux64-nightly/opt: dwT2D3LxQfqpp3FxycQbOA
+ beetmover-checksums-et-macosx64-nightly/opt: EULErNoJShW6vOuqWWIC_g
+ beetmover-checksums-et-win32-nightly/opt: GUjDf_vBSOWQKW8uHwzfbg
+ beetmover-checksums-et-win64-nightly/opt: JssKqMtwTxW35Cv3KlOgWg
+ beetmover-checksums-eu-linux-nightly/opt: T69OKNYERP2ScTb2XdEqVg
+ beetmover-checksums-eu-linux64-nightly/opt: EbPazO7wToGBYNZF2hJV0g
+ beetmover-checksums-eu-macosx64-nightly/opt: UhEnHR4_TNyNCjnT_A7hWg
+ beetmover-checksums-eu-win32-nightly/opt: AfY_TBHCTe-sF0z2HWcYPQ
+ beetmover-checksums-eu-win64-nightly/opt: foZcxPnDTU-BGqyvqR1hpA
+ beetmover-checksums-fa-linux-nightly/opt: SxDnBQJ8TS2gzAP61pVNvQ
+ beetmover-checksums-fa-linux64-nightly/opt: K4nn95fwR0KC5D2vXGDiLQ
+ beetmover-checksums-fa-macosx64-nightly/opt: G5oN9p0GTCmW5Hw0jDmv1w
+ beetmover-checksums-fa-win32-nightly/opt: Otav9wlWQpu7V-8rEP4sMw
+ beetmover-checksums-fa-win64-nightly/opt: YNPl_BOlQNGgUZvQhVUerA
+ beetmover-checksums-ff-linux-nightly/opt: JBplRl6STRa1NPDB45eo3g
+ beetmover-checksums-ff-linux64-nightly/opt: Po_e5diWRAKUPP-ZUjhshQ
+ beetmover-checksums-ff-macosx64-nightly/opt: QbW3IJETRduW8BrRKBNIVA
+ beetmover-checksums-ff-win32-nightly/opt: S_gNEp32TD6ctP0Cs2Vvqw
+ beetmover-checksums-ff-win64-nightly/opt: ZgZ_xEWHQieqnIn67oviRg
+ beetmover-checksums-fi-linux-nightly/opt: Ch_AgOPtTueF5u-YUVEOvw
+ beetmover-checksums-fi-linux64-nightly/opt: YLlcoXARQX2Pqq7h4ikPEg
+ beetmover-checksums-fi-macosx64-nightly/opt: cWTtTVYHQEGPnONEkqPLCw
+ beetmover-checksums-fi-win32-nightly/opt: cfmrujGCSPmFi744h6VF1g
+ beetmover-checksums-fi-win64-nightly/opt: d1xnluF2QS6vgBFYCeOr-g
+ beetmover-checksums-fr-linux-nightly/opt: QP08dXwsRTqr8YbD3gNBBg
+ beetmover-checksums-fr-linux64-nightly/opt: cn6PErvwSp607gwy_cdSdQ
+ beetmover-checksums-fr-macosx64-nightly/opt: dof-HPqaRUe3fI6KWy8RoA
+ beetmover-checksums-fr-win32-nightly/opt: Veuha6J8Rmmedmv69rOBdw
+ beetmover-checksums-fr-win64-nightly/opt: fAT1BQ3gTSGTnn_oD48ABQ
+ beetmover-checksums-fy-NL-linux-nightly/opt: Xcs70OaIQz-4uGFSMoUNNA
+ beetmover-checksums-fy-NL-linux64-nightly/opt: KtWqVk7yTGWrak9v2Klqzg
+ beetmover-checksums-fy-NL-macosx64-nightly/opt: GB43wtxeR1u3YT1lKx75ZA
+ beetmover-checksums-fy-NL-win32-nightly/opt: PfDDhNDTSUWmbKXW_VBweA
+ beetmover-checksums-fy-NL-win64-nightly/opt: LbxGYtsdTmuU1QEuzfDx7Q
+ beetmover-checksums-ga-IE-linux-nightly/opt: Ens_bKhXR0WS3GL4ih2rRA
+ beetmover-checksums-ga-IE-linux64-nightly/opt: IcBq4LQ2TLqKb98vMpupwQ
+ beetmover-checksums-ga-IE-macosx64-nightly/opt: DMG-1b62SEavx8aRbwnGjQ
+ beetmover-checksums-ga-IE-win32-nightly/opt: Pkd2V2X9QHCoIEV3xgfLTQ
+ beetmover-checksums-ga-IE-win64-nightly/opt: L6qPpg4OQH-AhwxqorD5lw
+ beetmover-checksums-gd-linux-nightly/opt: P-RH_2QmRD6EeD0ULDpB5Q
+ beetmover-checksums-gd-linux64-nightly/opt: LRo3UVt0RjOjuKuDaLitRg
+ beetmover-checksums-gd-macosx64-nightly/opt: UKsfemS2TdqR86JQYahxcg
+ beetmover-checksums-gd-win32-nightly/opt: Wde6eQfdSeyaFHowdnY9jw
+ beetmover-checksums-gd-win64-nightly/opt: Aa3dz32zQnebN_7ChjTUyg
+ beetmover-checksums-gl-linux-nightly/opt: eIGXfsiOSo-98xfYN7JsDA
+ beetmover-checksums-gl-linux64-nightly/opt: bBgAcvzaTHWoOr5Y33T4Vw
+ beetmover-checksums-gl-macosx64-nightly/opt: FYnAh5PzTM6ZHdBRxLlFYQ
+ beetmover-checksums-gl-win32-nightly/opt: KfCGyXXbQRqWVXHWv8xW-g
+ beetmover-checksums-gl-win64-nightly/opt: Nn2KSAsNT3aBwYAVuZFbmg
+ beetmover-checksums-gn-linux-nightly/opt: WMTGheiPTsKUf4but2H8Uw
+ beetmover-checksums-gn-linux64-nightly/opt: MjB_ibNYQmGKUfKfsRGezA
+ beetmover-checksums-gn-macosx64-nightly/opt: PZ4WPdq9QxeiQNh37GNK7Q
+ beetmover-checksums-gn-win32-nightly/opt: fJ_vt-oURm6aS7keqPD4tg
+ beetmover-checksums-gn-win64-nightly/opt: ZCHVdjEfT9S1H1wssBSXbg
+ beetmover-checksums-gu-IN-linux-nightly/opt: LDPCYKo_Q_6SVU0pNQCWUA
+ beetmover-checksums-gu-IN-linux64-nightly/opt: QaSWJ0nbS_a-CBlzWAP-KQ
+ beetmover-checksums-gu-IN-macosx64-nightly/opt: EnU25H80S_2pFv0abXUmyQ
+ beetmover-checksums-gu-IN-win32-nightly/opt: c0wBz2qpTqCkDNZIxNfapA
+ beetmover-checksums-gu-IN-win64-nightly/opt: HuQ4lyUSSTOEB3lIjfEaSg
+ beetmover-checksums-he-linux-nightly/opt: MSiprEk_Quq8mNXihdP9Zg
+ beetmover-checksums-he-linux64-nightly/opt: DJTQqojgTNarZ1Id-UoM8Q
+ beetmover-checksums-he-macosx64-nightly/opt: dHMTQZJNRqi43gm56YaM6g
+ beetmover-checksums-he-win32-nightly/opt: KSgUA9-MSIqdjhtihsjPPg
+ beetmover-checksums-he-win64-nightly/opt: Zcr19iEuTFSu57KgLant3Q
+ beetmover-checksums-hi-IN-linux-nightly/opt: IKXkqv__S26xXT-TRd4xhA
+ beetmover-checksums-hi-IN-linux64-nightly/opt: ANDVLYxYQ0mmIySDSsazow
+ beetmover-checksums-hi-IN-macosx64-nightly/opt: f301R4HeRReM54bONFAxhg
+ beetmover-checksums-hi-IN-win32-nightly/opt: ZQPNI3mJRmamJhjx7fxE_w
+ beetmover-checksums-hi-IN-win64-nightly/opt: cWT3RkDfQbGRnA-MCNB0aA
+ beetmover-checksums-hr-linux-nightly/opt: atQj5TemT42EONHc37AUug
+ beetmover-checksums-hr-linux64-nightly/opt: D9k4jq0ZQsSE84BdserxTg
+ beetmover-checksums-hr-macosx64-nightly/opt: OYQQbOVIQJ-NcnuN4F0AKg
+ beetmover-checksums-hr-win32-nightly/opt: QI6qKgnGQNeA3SeceIowzg
+ beetmover-checksums-hr-win64-nightly/opt: Yq51Xx7iS-Cswg3aluf_Iw
+ beetmover-checksums-hsb-linux-nightly/opt: ew_fUB1cT8O2xLB5Y0HI6A
+ beetmover-checksums-hsb-linux64-nightly/opt: J_ixcONuQumY32726MpFqA
+ beetmover-checksums-hsb-macosx64-nightly/opt: PXwc__ERR9uN2coM7PgOeg
+ beetmover-checksums-hsb-win32-nightly/opt: S_-K4FzYQo6fnmrqYC-rnQ
+ beetmover-checksums-hsb-win64-nightly/opt: XoBSMLDTScqmB3EkQw5pOw
+ beetmover-checksums-hu-linux-nightly/opt: QrCrviqnSte1eSupJXD_5Q
+ beetmover-checksums-hu-linux64-nightly/opt: Qo9tRXMNQXK-eyl22RhNHA
+ beetmover-checksums-hu-macosx64-nightly/opt: J0Bud1DTS6q43I3KIw2Dgg
+ beetmover-checksums-hu-win32-nightly/opt: eef34q_PRpG1nXsaV9Jb7g
+ beetmover-checksums-hu-win64-nightly/opt: ADSujkS2R12gFVA4TRWT6w
+ beetmover-checksums-hy-AM-linux-nightly/opt: ZMitjcBrQ2SoBooaOGc0DA
+ beetmover-checksums-hy-AM-linux64-nightly/opt: GI2gMoM7SZy6IZzeorFRAg
+ beetmover-checksums-hy-AM-macosx64-nightly/opt: Vj9ZsK_ZRoWCFJgUVEpy3w
+ beetmover-checksums-hy-AM-win32-nightly/opt: AD5VkOAsQC-AcGt33PHjMQ
+ beetmover-checksums-hy-AM-win64-nightly/opt: Ecr5zOi6T5i3CaUu3qrc1A
+ beetmover-checksums-ia-linux-nightly/opt: fFhNnkAXS3eUurg1CnXcMA
+ beetmover-checksums-ia-linux64-nightly/opt: ZfscRLTrQl2LqzqrfEKF_Q
+ beetmover-checksums-ia-macosx64-nightly/opt: AO2Rw4cRTCGN6I1zwiGfiA
+ beetmover-checksums-ia-win32-nightly/opt: YUcXPDCuQQ6xKOW3wqFEBw
+ beetmover-checksums-ia-win64-nightly/opt: DYT0Oav_RsCZVe2ShGmzKw
+ beetmover-checksums-id-linux-nightly/opt: J0zM9_CaSBuoO1Ly54E13Q
+ beetmover-checksums-id-linux64-nightly/opt: FL_3VwtLRcSRNzptPDowtA
+ beetmover-checksums-id-macosx64-nightly/opt: S55c9Fo6T6qqAmMWQKz6cw
+ beetmover-checksums-id-win32-nightly/opt: fEgFOQg8R4mwNIxvgzTHdg
+ beetmover-checksums-id-win64-nightly/opt: NEKR1q2jRqmRcvzPvDtKUA
+ beetmover-checksums-is-linux-nightly/opt: LAnwBVUFSw2Nm88pGtxfBw
+ beetmover-checksums-is-linux64-nightly/opt: bvIwlitwTZuHq5Swas-1Yw
+ beetmover-checksums-is-macosx64-nightly/opt: WH2QA3SyRQyc5W9ru7hSmw
+ beetmover-checksums-is-win32-nightly/opt: ESvuEizXQBOGaMy-oh8VxA
+ beetmover-checksums-is-win64-nightly/opt: WWhRWIdTSlWbVDl4dm111A
+ beetmover-checksums-it-linux-nightly/opt: Xzc1mk5GS_2kOB7FqRdUmw
+ beetmover-checksums-it-linux64-nightly/opt: OaUkA9qWTNOOIVj3k_5NxA
+ beetmover-checksums-it-macosx64-nightly/opt: EQtXkYjnTuilID94IDqSSw
+ beetmover-checksums-it-win32-nightly/opt: eFu5lXoSRT6b4rJwUGo90Q
+ beetmover-checksums-it-win64-nightly/opt: aAxxxMSDSlaTnyrrpHp_DQ
+ beetmover-checksums-ja-JP-mac-macosx64-nightly/opt: aPpSDgJPS8-Ok5lpHBMkdQ
+ beetmover-checksums-ja-linux-nightly/opt: f_3u2HkbSJqIUSL_KrNIvg
+ beetmover-checksums-ja-linux64-nightly/opt: EYVvTuoJTpuSeiYAMi6Mzg
+ beetmover-checksums-ja-win32-nightly/opt: LffLFKZCQOOtFOW33zmPTA
+ beetmover-checksums-ja-win64-nightly/opt: L-KKZzvrTv-ZpqzUNdz90Q
+ beetmover-checksums-ka-linux-nightly/opt: PhZzwBO1Qeq0zVU9mh6SgA
+ beetmover-checksums-ka-linux64-nightly/opt: OxgxgU3IQeq1wwUi-71g6w
+ beetmover-checksums-ka-macosx64-nightly/opt: El1LiBVbTzCAuJm2aqk7Rw
+ beetmover-checksums-ka-win32-nightly/opt: TNevl5qNQpSInb7nyR9cyw
+ beetmover-checksums-ka-win64-nightly/opt: NFOOrvj7Q6CAoeUjfbZCXQ
+ beetmover-checksums-kab-linux-nightly/opt: VqB6ABwbQtCVxiyU_qyipA
+ beetmover-checksums-kab-linux64-nightly/opt: cIE2mOs1SVuQp61UJLfgdA
+ beetmover-checksums-kab-macosx64-nightly/opt: VJK8DlicTfWbA8pCXSX8mQ
+ beetmover-checksums-kab-win32-nightly/opt: Ky1bhHu1TfuBbyKPdddVew
+ beetmover-checksums-kab-win64-nightly/opt: LIFWFoWpR_qcZH7o8Z3O2A
+ beetmover-checksums-kk-linux-nightly/opt: cgj2dPMfRCGV3B6xfrIQtQ
+ beetmover-checksums-kk-linux64-nightly/opt: Y4w23QNDQxyzCzlczSlpuA
+ beetmover-checksums-kk-macosx64-nightly/opt: LIb-bTMPRDuAzdPpnQ9wgg
+ beetmover-checksums-kk-win32-nightly/opt: MbeDxhK1SW6Fbdz5PryDOg
+ beetmover-checksums-kk-win64-nightly/opt: L-hFoancRGqJQI3IvKJXbA
+ beetmover-checksums-km-linux-nightly/opt: YdXakrj5TGaS8GOeqVVb6A
+ beetmover-checksums-km-linux64-nightly/opt: a2wBMftDRUy7RlHIlWmNRw
+ beetmover-checksums-km-macosx64-nightly/opt: bBvgbPQDREKgGaHru8PCzA
+ beetmover-checksums-km-win32-nightly/opt: NXl1hecrTte5dpobtgR-Bw
+ beetmover-checksums-km-win64-nightly/opt: R9RaUwV9TOqboWIQZIOvkg
+ beetmover-checksums-kn-linux-nightly/opt: YuutwsHTQs-HDu7ni7eoqA
+ beetmover-checksums-kn-linux64-nightly/opt: A6305Sn0S2iI60t1436oqQ
+ beetmover-checksums-kn-macosx64-nightly/opt: GFDDI_yVSvyFN8Zhnz-_RQ
+ beetmover-checksums-kn-win32-nightly/opt: JIBZ9IpQTyGjf2fjm1kt4g
+ beetmover-checksums-kn-win64-nightly/opt: JopKMw75QKOuwGg68c50QA
+ beetmover-checksums-ko-linux-nightly/opt: ZZLCpWhMQ-OyHDz3zJOxsg
+ beetmover-checksums-ko-linux64-nightly/opt: AdWwweuoTZat97HNsmshQg
+ beetmover-checksums-ko-macosx64-nightly/opt: HBWu21ygQjCD7SJEFMTXHA
+ beetmover-checksums-ko-win32-nightly/opt: NTxgSD5KTpK14fmx6rQdQw
+ beetmover-checksums-ko-win64-nightly/opt: DpRbkPBiR0K8MTHu0iqoQA
+ beetmover-checksums-lij-linux-nightly/opt: PBoNb8VBT_mS7Xbkcs0lVg
+ beetmover-checksums-lij-linux64-nightly/opt: avLo4niqS9aPDjdT1VBMIQ
+ beetmover-checksums-lij-macosx64-nightly/opt: Gw8h7VZDTQWlquuhQOd1pA
+ beetmover-checksums-lij-win32-nightly/opt: fg36wu-BQKureYwMHbbLgw
+ beetmover-checksums-lij-win64-nightly/opt: aLneMYsMT6S28RoQ0B3kCQ
+ beetmover-checksums-linux-nightly/opt: RalqpuKoQaag_waj26qobA
+ beetmover-checksums-linux64-nightly/opt: NzVF7Rd7TyK2W7KW8-kQPw
+ beetmover-checksums-lt-linux-nightly/opt: NW3n0F33SUSJBRvElbBGmg
+ beetmover-checksums-lt-linux64-nightly/opt: YpOnNaQ7Tni1hSnMDAD_yQ
+ beetmover-checksums-lt-macosx64-nightly/opt: GPlDN60ZR9KRxRs4dtrQvA
+ beetmover-checksums-lt-win32-nightly/opt: bFvWSy_vTRiZQxQMCnGQYw
+ beetmover-checksums-lt-win64-nightly/opt: SyaijOw-SzKetWRTwHjA_g
+ beetmover-checksums-lv-linux-nightly/opt: Mt0z14esTrqEkbCk_2cNlw
+ beetmover-checksums-lv-linux64-nightly/opt: Ozri4Qb4TsqpqQIgHxikLg
+ beetmover-checksums-lv-macosx64-nightly/opt: T3ymHX50SWSICIy97Y7xaQ
+ beetmover-checksums-lv-win32-nightly/opt: NPD0KN-5TgauFqreOWShlQ
+ beetmover-checksums-lv-win64-nightly/opt: Ps1RtpP_SBSq7p9Jinq05Q
+ beetmover-checksums-macosx64-nightly/opt: alxxs9UWSxW6q5ahE-z3-A
+ beetmover-checksums-mai-linux-nightly/opt: UGjyl7vrTU2Xhc6lCFCEog
+ beetmover-checksums-mai-linux64-nightly/opt: cZMSlN2TT-O8thUURE9IRQ
+ beetmover-checksums-mai-macosx64-nightly/opt: WL8-eXOyS3iVT8r6GUMnAA
+ beetmover-checksums-mai-win32-nightly/opt: NpRjmcbqSYGciAN5BEdrog
+ beetmover-checksums-mai-win64-nightly/opt: ECQs2zHLQreOdXKFl3cRJw
+ beetmover-checksums-mk-linux-nightly/opt: c3PT1wNiRNWBVG4pA4XKtg
+ beetmover-checksums-mk-linux64-nightly/opt: NErtGCv6QTe3Cc1TJuimnw
+ beetmover-checksums-mk-macosx64-nightly/opt: HwtXtKoaTMenwkl6t1Jl_A
+ beetmover-checksums-mk-win32-nightly/opt: HyH2UMN6Sx2RpHUCw-_ryg
+ beetmover-checksums-mk-win64-nightly/opt: K5KJrqrGQ_a5FSr1qc3MyA
+ beetmover-checksums-ml-linux-nightly/opt: QrEsc4wsSvC5JrU71N_puw
+ beetmover-checksums-ml-linux64-nightly/opt: J9JcESfFSgO5-sMvL42JxQ
+ beetmover-checksums-ml-macosx64-nightly/opt: ab1YTx1UQ62pyA8-487Gkg
+ beetmover-checksums-ml-win32-nightly/opt: N3PiZyPzQa-uC3OPoVzg5g
+ beetmover-checksums-ml-win64-nightly/opt: flZgJp_vR_6J3BlKU_cMWQ
+ beetmover-checksums-mr-linux-nightly/opt: GpA3VC_mQAOy3mi0hlbdkQ
+ beetmover-checksums-mr-linux64-nightly/opt: JR6VkotdQ4WisoWd1iijRA
+ beetmover-checksums-mr-macosx64-nightly/opt: JdvTuwYGRJ-mpdoAqgxS8g
+ beetmover-checksums-mr-win32-nightly/opt: NIJzHfxgTqGZY0UO3NZ2DA
+ beetmover-checksums-mr-win64-nightly/opt: OAs5gJ_RQxK7uz4ojB5JEg
+ beetmover-checksums-ms-linux-nightly/opt: e75cs5p6TaCFPtm3-WFUQw
+ beetmover-checksums-ms-linux64-nightly/opt: RVRT648ATdW5PzL9hokfbA
+ beetmover-checksums-ms-macosx64-nightly/opt: Qb6kZ9a8TE-kj2VAQPnDfw
+ beetmover-checksums-ms-win32-nightly/opt: M8-K01oPToa2lMrZ0C29cg
+ beetmover-checksums-ms-win64-nightly/opt: XhwqDPPgTkK_2OjoXqKBQA
+ beetmover-checksums-my-linux-nightly/opt: QDVx5TX-SiGSNy3p7v_PWQ
+ beetmover-checksums-my-linux64-nightly/opt: WIUZFJYqSsu4GvtULLhKUQ
+ beetmover-checksums-my-macosx64-nightly/opt: ImueiT5aQzK5Wrg7Pl-nrw
+ beetmover-checksums-my-win32-nightly/opt: Z8YoKXCqSGCmjG0JcS6s1Q
+ beetmover-checksums-my-win64-nightly/opt: a_n7kem7RhyVHpdYeQLWNA
+ beetmover-checksums-nb-NO-linux-nightly/opt: We_KijuDQMWdYU7bzCrYvQ
+ beetmover-checksums-nb-NO-linux64-nightly/opt: bsgzIdtMSa2vJe0gQYuXmA
+ beetmover-checksums-nb-NO-macosx64-nightly/opt: ab3h2zrETQyCRUyAIa734A
+ beetmover-checksums-nb-NO-win32-nightly/opt: dXxOX8WgSBim0BULz1HM_w
+ beetmover-checksums-nb-NO-win64-nightly/opt: FBSYlXoQQnawTM5_C5OzPg
+ beetmover-checksums-ne-NP-linux-nightly/opt: S-_AVBieRs-GnzCEYwUJig
+ beetmover-checksums-ne-NP-linux64-nightly/opt: M7Vh5iyrSWCq37RioGfYgw
+ beetmover-checksums-ne-NP-macosx64-nightly/opt: NLuC7B6IRwq2WuaZ4hoZ7A
+ beetmover-checksums-ne-NP-win32-nightly/opt: F39VgsRURSeDqvbKWBVsAw
+ beetmover-checksums-ne-NP-win64-nightly/opt: flu-EUASQiKlgydWQegl4w
+ beetmover-checksums-nl-linux-nightly/opt: J-wWyn3UQQqy48zrf2MfVA
+ beetmover-checksums-nl-linux64-nightly/opt: OMooz00yTTKtW5IUjdxzHQ
+ beetmover-checksums-nl-macosx64-nightly/opt: Gm8rluB0QF2ly7aasfCBAQ
+ beetmover-checksums-nl-win32-nightly/opt: UGUmq3n3QpCDKs6y55bwnQ
+ beetmover-checksums-nl-win64-nightly/opt: asieBCuQTlmll6skT9DRAg
+ beetmover-checksums-nn-NO-linux-nightly/opt: QcMT-rCkSuSCBVIaF4fuxw
+ beetmover-checksums-nn-NO-linux64-nightly/opt: BlsUnDkMRHyEI4O50nZeTQ
+ beetmover-checksums-nn-NO-macosx64-nightly/opt: X382m5qURWegjeFyZJDh9A
+ beetmover-checksums-nn-NO-win32-nightly/opt: TAkkKyZBSg6FLMHIailLLA
+ beetmover-checksums-nn-NO-win64-nightly/opt: fi8EQaa3S8yddp0UTrbnnA
+ beetmover-checksums-oc-linux-nightly/opt: BWDg146RSZeKf_eY0UTwIA
+ beetmover-checksums-oc-linux64-nightly/opt: ayn27RK4SiSmplTl8ybC0Q
+ beetmover-checksums-oc-macosx64-nightly/opt: U6r6txoGSBSK8KZpbZDFRg
+ beetmover-checksums-oc-win32-nightly/opt: dggQe6jsQIezPvRWV2LowQ
+ beetmover-checksums-oc-win64-nightly/opt: Ir6vcTtiRUiiGMMx4vU1zw
+ beetmover-checksums-or-linux-nightly/opt: Udrp7McEQr-LFqn8IH4vBA
+ beetmover-checksums-or-linux64-nightly/opt: JMQuW5sXQhqsQ5oSnmvECg
+ beetmover-checksums-or-macosx64-nightly/opt: U70NqjA4S4qo8hhCc1--DA
+ beetmover-checksums-or-win32-nightly/opt: G3IKaFYqRhCMX8O4D50-JA
+ beetmover-checksums-or-win64-nightly/opt: c1lxOaNGT-K0bUmzTjb_7g
+ beetmover-checksums-pa-IN-linux-nightly/opt: WLDXv4ofTWm1z9pbuisjvQ
+ beetmover-checksums-pa-IN-linux64-nightly/opt: X1LMWI0DT_ie8JOat79YWg
+ beetmover-checksums-pa-IN-macosx64-nightly/opt: JdGeT1_BSY-i8OFHZXAHig
+ beetmover-checksums-pa-IN-win32-nightly/opt: Mr-JyAkZSm2adEI16y8wxw
+ beetmover-checksums-pa-IN-win64-nightly/opt: ICdXd_KATMueH846Dli1Cg
+ beetmover-checksums-pl-linux-nightly/opt: QzfNbwZgQ2-4fy44NzbJPQ
+ beetmover-checksums-pl-linux64-nightly/opt: Xki9V98nSwGtJXc7pgm9og
+ beetmover-checksums-pl-macosx64-nightly/opt: btw5e5e4RZi8oCIFOmHhNQ
+ beetmover-checksums-pl-win32-nightly/opt: PWrE9YtRTvmUhJxRf71SSA
+ beetmover-checksums-pl-win64-nightly/opt: TIpJuDT_QP6A6K-9AhKQnA
+ beetmover-checksums-pt-BR-linux-nightly/opt: JobU6RvyRvWd06OAxOCKKA
+ beetmover-checksums-pt-BR-linux64-nightly/opt: SzzgC2clRF-AN5GQF1oMhg
+ beetmover-checksums-pt-BR-macosx64-nightly/opt: RJ4WQokpT7K_8UzlfFaAjA
+ beetmover-checksums-pt-BR-win32-nightly/opt: JnFsjCeXQKG9GNhfYsyhPQ
+ beetmover-checksums-pt-BR-win64-nightly/opt: U5sgUsl7RdWKOR0i4d7Hig
+ beetmover-checksums-pt-PT-linux-nightly/opt: VHzTQo1hRlut1AL3LT0cJQ
+ beetmover-checksums-pt-PT-linux64-nightly/opt: W5sYMVC6QBijmuUd5gELKQ
+ beetmover-checksums-pt-PT-macosx64-nightly/opt: bqJdEOFiS1-KnEJT0E7Fkg
+ beetmover-checksums-pt-PT-win32-nightly/opt: LnCzhRTISr-E94NQnL38hQ
+ beetmover-checksums-pt-PT-win64-nightly/opt: GXeLufuKQem-nRgZMSIqLQ
+ beetmover-checksums-rm-linux-nightly/opt: dnXfRJJbQYinzS4IVFQa6w
+ beetmover-checksums-rm-linux64-nightly/opt: AUqpqHUARs-ww4aHntd7mg
+ beetmover-checksums-rm-macosx64-nightly/opt: XpJoxRgHT_Wof_FZsyxkjw
+ beetmover-checksums-rm-win32-nightly/opt: XIGmok7HTaeaX7jyJlZw8A
+ beetmover-checksums-rm-win64-nightly/opt: ekaNiGvyRxm8EroGgzQYWA
+ beetmover-checksums-ro-linux-nightly/opt: PiDd5SKMQCiH8Bw5Wwlbpw
+ beetmover-checksums-ro-linux64-nightly/opt: SpwqPu6xQvWHj_YEOj5iZw
+ beetmover-checksums-ro-macosx64-nightly/opt: SpuuEVRARWyB0cA9vHIM5A
+ beetmover-checksums-ro-win32-nightly/opt: c2kymHrqTq2Bo4WvKZvzGg
+ beetmover-checksums-ro-win64-nightly/opt: TGIAMuNLRLa9KeS6b7KY1w
+ beetmover-checksums-ru-linux-nightly/opt: F580ngfQRDyzVElHtPMaZg
+ beetmover-checksums-ru-linux64-nightly/opt: BSGQ9OXPT16Sf-8oCPsMVQ
+ beetmover-checksums-ru-macosx64-nightly/opt: EXxus861STe77mtdoSXIyA
+ beetmover-checksums-ru-win32-nightly/opt: D7Eg4kbsRS2GCHiIC2ipNw
+ beetmover-checksums-ru-win64-nightly/opt: b6E0mXbCSDKSBtCMXDakQw
+ beetmover-checksums-si-linux-nightly/opt: VRhmfcaITRalTHPHVxFrtA
+ beetmover-checksums-si-linux64-nightly/opt: HgGMtD7pRPWxPyOgGQAMxQ
+ beetmover-checksums-si-macosx64-nightly/opt: Ih4xJWITQsSXhqraNZG7Xw
+ beetmover-checksums-si-win32-nightly/opt: fBf5nJtnTM2pk3W2Dd665A
+ beetmover-checksums-si-win64-nightly/opt: H5fmbPvVQ9-F0-Ewqhwn2g
+ beetmover-checksums-sk-linux-nightly/opt: SlIiJnIgQGKkvDRrGarKOg
+ beetmover-checksums-sk-linux64-nightly/opt: HX_zSzbSTYWglsINdLmaoQ
+ beetmover-checksums-sk-macosx64-nightly/opt: TlZk49IfQ7CM5LM8K0TPzw
+ beetmover-checksums-sk-win32-nightly/opt: Xkhys5J4QwKuyoW0JShYsQ
+ beetmover-checksums-sk-win64-nightly/opt: X0ATm1G9QfKUX_jZbcDcUQ
+ beetmover-checksums-sl-linux-nightly/opt: W90N6V_hSAObL1HLcEsO0g
+ beetmover-checksums-sl-linux64-nightly/opt: I86kBbw_StC5-rtBf9kpow
+ beetmover-checksums-sl-macosx64-nightly/opt: Xo0PHWuGTA2TmqxL_uCYgA
+ beetmover-checksums-sl-win32-nightly/opt: ckyoUa7MTbCsmVtgLBzDEQ
+ beetmover-checksums-sl-win64-nightly/opt: PgepVp75SpSfrLZiLCTkYA
+ beetmover-checksums-son-linux-nightly/opt: Xu3RZrlASpKfAZbNyA5nXg
+ beetmover-checksums-son-linux64-nightly/opt: eC_jKJr8QRSFOs-OE6Xnug
+ beetmover-checksums-son-macosx64-nightly/opt: Ez8xfGuMSd-pKmUKSKLOCw
+ beetmover-checksums-son-win32-nightly/opt: DgakwJ6cS-OvcKD5PuSDnQ
+ beetmover-checksums-son-win64-nightly/opt: cyucWTfYRlGVHJaarLHTig
+ beetmover-checksums-sq-linux-nightly/opt: OAcCtRW2RbuXXJ_aZr_Jcw
+ beetmover-checksums-sq-linux64-nightly/opt: BQrohtsDS0ylvgYEg1cJQg
+ beetmover-checksums-sq-macosx64-nightly/opt: NStEIH7LQzOEYuJLOy2GMw
+ beetmover-checksums-sq-win32-nightly/opt: EU_L-tBhQtGi8kfPA90nmg
+ beetmover-checksums-sq-win64-nightly/opt: IhWzeRx-Sx6poyRDUoiAgA
+ beetmover-checksums-sr-linux-nightly/opt: YC6bSkjoQu2LgK5N5_mzaA
+ beetmover-checksums-sr-linux64-nightly/opt: Rz4qN5bFRpOxbmVYFwer3A
+ beetmover-checksums-sr-macosx64-nightly/opt: aDYBTl1uS5iBwEor1reCtg
+ beetmover-checksums-sr-win32-nightly/opt: IfrzG_Y8TRufFdVJI46NEg
+ beetmover-checksums-sr-win64-nightly/opt: MMnqcyicTbKWPHJ1d35pag
+ beetmover-checksums-sv-SE-linux-nightly/opt: CjhU50sFTJGo3ijxotALRA
+ beetmover-checksums-sv-SE-linux64-nightly/opt: GNN_AcmkQ2mQlKipVoNe3A
+ beetmover-checksums-sv-SE-macosx64-nightly/opt: CP3LwYY-TjKPm--_KGUQ2g
+ beetmover-checksums-sv-SE-win32-nightly/opt: TmpACjulQ4KyJsOWgzB7Yg
+ beetmover-checksums-sv-SE-win64-nightly/opt: CJKYk_dwSeKSVl082XHrRg
+ beetmover-checksums-ta-linux-nightly/opt: aATIxaO6Qd6uk9PqNub5Ig
+ beetmover-checksums-ta-linux64-nightly/opt: N8IMAik8SMmbWCAHac2nfw
+ beetmover-checksums-ta-macosx64-nightly/opt: IvxRSwvdSfuUXIVDCPTdfA
+ beetmover-checksums-ta-win32-nightly/opt: F9gsD2gEQ4SFNmHilqkhzA
+ beetmover-checksums-ta-win64-nightly/opt: S0W5hxc8S_2OHun1T7tuPg
+ beetmover-checksums-te-linux-nightly/opt: BIH5MAZwQhatXXCoX1kqgA
+ beetmover-checksums-te-linux64-nightly/opt: WpNg7fdyRaG8a8Nrtrbh4Q
+ beetmover-checksums-te-macosx64-nightly/opt: akaJVM2sSMi2OMn9T-fIZg
+ beetmover-checksums-te-win32-nightly/opt: D7MmLxLESjiwhw8rNl-tNw
+ beetmover-checksums-te-win64-nightly/opt: Iuc3v5qJTx-SOPRUxs5sTA
+ beetmover-checksums-th-linux-nightly/opt: HESyv6KnQc-lD1viq-Dnqg
+ beetmover-checksums-th-linux64-nightly/opt: WKPgyZRIQoiNkob7_ShzoA
+ beetmover-checksums-th-macosx64-nightly/opt: APisBl97Q_m3hGXCVrXLZA
+ beetmover-checksums-th-win32-nightly/opt: EOBT_yNbS1-GCsFqJumsrw
+ beetmover-checksums-th-win64-nightly/opt: Gxfkk6IwTVyZVDFR-Iu0LA
+ beetmover-checksums-tr-linux-nightly/opt: RjmBvEygR46UWg5LK7HOww
+ beetmover-checksums-tr-linux64-nightly/opt: PHF2N4ufSEeJS_DK1nB58A
+ beetmover-checksums-tr-macosx64-nightly/opt: UmnnaBvrT8Cfx8tUf9gFAQ
+ beetmover-checksums-tr-win32-nightly/opt: JlWE0TJZSROHq0hRb9kONQ
+ beetmover-checksums-tr-win64-nightly/opt: S-8_FKW5Th2ZnxHll8LQcQ
+ beetmover-checksums-uk-linux-nightly/opt: DbQ_SpIyTdOmfjxdJpBTqw
+ beetmover-checksums-uk-linux64-nightly/opt: OY_tSyxBSB2xXit8WB-HMA
+ beetmover-checksums-uk-macosx64-nightly/opt: R9XPW2J4R6yZ3lD7-i0B6Q
+ beetmover-checksums-uk-win32-nightly/opt: B-antu3qRqS3IYwcK606_g
+ beetmover-checksums-uk-win64-nightly/opt: VSwhFEQNTkW5t2Ldao_CHg
+ beetmover-checksums-ur-linux-nightly/opt: Utahe7OzSri-13cCZa6T9w
+ beetmover-checksums-ur-linux64-nightly/opt: YLjDWVOnSKWlziob_3JSbA
+ beetmover-checksums-ur-macosx64-nightly/opt: L9sUSNTnRiq3uAJUr-Nr_w
+ beetmover-checksums-ur-win32-nightly/opt: f2BfnoDYTDWK4RWDzLL1iQ
+ beetmover-checksums-ur-win64-nightly/opt: BSgNScmPTOu-CqQY8e_zQQ
+ beetmover-checksums-uz-linux-nightly/opt: U00j2dk5QY-O8KjohcWAFA
+ beetmover-checksums-uz-linux64-nightly/opt: Dl3xWcuIQ8CMUk2xI9l4tQ
+ beetmover-checksums-uz-macosx64-nightly/opt: IIAf9pAtRfeLLA9CQlHGXw
+ beetmover-checksums-uz-win32-nightly/opt: br0MIF0PRrWjogLp7hGiZg
+ beetmover-checksums-uz-win64-nightly/opt: avf1lZJPRKa2O1MfmGW9xQ
+ beetmover-checksums-vi-linux-nightly/opt: C-vuSxDlTQGKqexrJV3STA
+ beetmover-checksums-vi-linux64-nightly/opt: MBFC21k9QnSttXrulB4spQ
+ beetmover-checksums-vi-macosx64-nightly/opt: AGFnjA1OTWyotsaRuxrQFw
+ beetmover-checksums-vi-win32-nightly/opt: FO-9bu6BQRqu5yBPlbBpWA
+ beetmover-checksums-vi-win64-nightly/opt: VVFixA13RzSbPO409ppGhQ
+ beetmover-checksums-win32-nightly/opt: N3roPN9GRoOW4ZCVaXteoA
+ beetmover-checksums-win64-nightly/opt: Je0T0VBFRC6_lPDOl2OmYw
+ beetmover-checksums-xh-linux-nightly/opt: EJSiHJLGT72dksMJ6KY7tw
+ beetmover-checksums-xh-linux64-nightly/opt: ZfPHMutYQmiwQYqjniB0IQ
+ beetmover-checksums-xh-macosx64-nightly/opt: DCjtdlWfR1WLcuajiozLsw
+ beetmover-checksums-xh-win32-nightly/opt: X6OBMxqwTS6kM8KnhY8GYQ
+ beetmover-checksums-xh-win64-nightly/opt: FSzOOasxRkKdED8SGDvtFQ
+ beetmover-checksums-zh-CN-linux-nightly/opt: SfdhJImWTfSZsRr25yxM0w
+ beetmover-checksums-zh-CN-linux64-nightly/opt: M3kEp0wpS2S42oF81MBhkA
+ beetmover-checksums-zh-CN-macosx64-nightly/opt: daKa2m-hROGXFE-TIRJ6Xw
+ beetmover-checksums-zh-CN-win32-nightly/opt: JYwQMOI2S_OOGXlmKFkaKg
+ beetmover-checksums-zh-CN-win64-nightly/opt: VAyxa_tAR4WCchLfTA97Og
+ beetmover-checksums-zh-TW-linux-nightly/opt: UGZ_ovbNRFm2LDAp4JhD2A
+ beetmover-checksums-zh-TW-linux64-nightly/opt: dBWqhDRkQBCibNr5xjR0-A
+ beetmover-checksums-zh-TW-macosx64-nightly/opt: D98QimVbQqOxsrHXlNJi7w
+ beetmover-checksums-zh-TW-win32-nightly/opt: e2cG-5CTQqKcwffoRkLFyA
+ beetmover-checksums-zh-TW-win64-nightly/opt: ZpzesNn0R6Gj6mgFpqhBWg
+ beetmover-repackage-ach-linux-nightly/opt: T0TMBosvRCqpmD4aviGeSA
+ beetmover-repackage-ach-linux64-nightly/opt: SMBOLn7oQ9We8EK-8B1vEQ
+ beetmover-repackage-ach-macosx64-nightly/opt: TpYugzhCS1S8N07oDpm1Iw
+ beetmover-repackage-ach-win32-nightly/opt: N6AuE-76RwW_rY2k_hlFLg
+ beetmover-repackage-ach-win64-nightly/opt: K5u4Rr2yS0GfEw1cmyEYvQ
+ beetmover-repackage-af-linux-nightly/opt: E0_TAQ6ERCmJzk4MURDdiw
+ beetmover-repackage-af-linux64-nightly/opt: NWK90IISRK-5jH86a4igqw
+ beetmover-repackage-af-macosx64-nightly/opt: RZ28deERRPGwtMnzGQr20g
+ beetmover-repackage-af-win32-nightly/opt: avl_qJNNRsCPG8COasRQCQ
+ beetmover-repackage-af-win64-nightly/opt: RrJqKLlxQRCxkFklnN7L_w
+ beetmover-repackage-an-linux-nightly/opt: E7JPu99bSHSVOppHZ5eR1A
+ beetmover-repackage-an-linux64-nightly/opt: ZdziLgxpRKqzDfQ_ROYEfg
+ beetmover-repackage-an-macosx64-nightly/opt: ag1oD52eTMOYzBGLeApWMA
+ beetmover-repackage-an-win32-nightly/opt: O4UWhndYQz2MiHacXj4sDQ
+ beetmover-repackage-an-win64-nightly/opt: VxeZ1rivReKUcfHOFYPOVw
+ beetmover-repackage-ar-linux-nightly/opt: FqTnlFa9RwW7eGrmiFoaiw
+ beetmover-repackage-ar-linux64-nightly/opt: MrKdqB37Qo-1iOCwP85bGA
+ beetmover-repackage-ar-macosx64-nightly/opt: dqFHFYIyTuGcWUzSrR5WLw
+ beetmover-repackage-ar-win32-nightly/opt: XZXzihUoRaiXMxTA_AORnA
+ beetmover-repackage-ar-win64-nightly/opt: HtYBksRoSr-GvHEXf7WWYw
+ beetmover-repackage-as-linux-nightly/opt: aWQWZZBaSIeX4rMVHGNMqA
+ beetmover-repackage-as-linux64-nightly/opt: L53DblPpTnGvxAyq8vNsng
+ beetmover-repackage-as-macosx64-nightly/opt: LYfSWCXjTPq2vYRkv8qZnA
+ beetmover-repackage-as-win32-nightly/opt: dDpBXBOORJ6hlkc5FJ7Fsg
+ beetmover-repackage-as-win64-nightly/opt: WbzrVTD5TjGuavrke9Za6A
+ beetmover-repackage-ast-linux-nightly/opt: LdDGHLTwSK6RJPspfJSobQ
+ beetmover-repackage-ast-linux64-nightly/opt: Ld5GC_WpSYmVIPOJgppqOw
+ beetmover-repackage-ast-macosx64-nightly/opt: WZlLLRXBRXe34_Jj4iVKWg
+ beetmover-repackage-ast-win32-nightly/opt: SNZDUw_dTeOLdjoXtcOsdg
+ beetmover-repackage-ast-win64-nightly/opt: E-kjRKAmQXKg77hNBueM3w
+ beetmover-repackage-az-linux-nightly/opt: PPTL6shFRLOx8csCco-zQQ
+ beetmover-repackage-az-linux64-nightly/opt: IE4-H9OvTvGjbHB7fwt1eA
+ beetmover-repackage-az-macosx64-nightly/opt: Xa2pYNLdR-euPYinzN5g_g
+ beetmover-repackage-az-win32-nightly/opt: eZHSrVvESqmtODMiLfwl-Q
+ beetmover-repackage-az-win64-nightly/opt: aWYhHe6MSomon2ldyUQFEQ
+ beetmover-repackage-be-linux-nightly/opt: dplioIgmSOiDG3Zp7WHl_Q
+ beetmover-repackage-be-linux64-nightly/opt: QB3vQVnCRgOlLOdR-PvT5Q
+ beetmover-repackage-be-macosx64-nightly/opt: UICXFoRPRNC3S-DFUGt4ow
+ beetmover-repackage-be-win32-nightly/opt: ASyb8Ap8R2OSgC5sGGZLsQ
+ beetmover-repackage-be-win64-nightly/opt: OHxrtwhUQ62RHaxE44eq3g
+ beetmover-repackage-bg-linux-nightly/opt: Ou2XZvsJRLC08T0JqG6P7A
+ beetmover-repackage-bg-linux64-nightly/opt: dRVqmBD9Qba0BEAD1KWU4A
+ beetmover-repackage-bg-macosx64-nightly/opt: Cg4jHH2nSEytt61CujbxeA
+ beetmover-repackage-bg-win32-nightly/opt: ZfVbqhMaSUqiglS8QuWWjQ
+ beetmover-repackage-bg-win64-nightly/opt: YZK-hW4TRBydjNZe7qDTuQ
+ beetmover-repackage-bn-BD-linux-nightly/opt: S2MKeHWJQRuX4NsLDaeK0w
+ beetmover-repackage-bn-BD-linux64-nightly/opt: CAreRKRHSECR7yoaAC0NeA
+ beetmover-repackage-bn-BD-macosx64-nightly/opt: S08zcgg8QKOTaZsJnfWDYA
+ beetmover-repackage-bn-BD-win32-nightly/opt: Q7Ybo_k1RjC5n6zRgbZzaA
+ beetmover-repackage-bn-BD-win64-nightly/opt: bcP991rKSeKzspDg3qJL2w
+ beetmover-repackage-bn-IN-linux-nightly/opt: bda5WeiVReGdpVN7tPyH-Q
+ beetmover-repackage-bn-IN-linux64-nightly/opt: FEiYOnAmSc-nhxfKzVsmoA
+ beetmover-repackage-bn-IN-macosx64-nightly/opt: Xp2EvBidRmGXt7zvolkWZg
+ beetmover-repackage-bn-IN-win32-nightly/opt: amdxmjZ1QrS1yD6gUe-feQ
+ beetmover-repackage-bn-IN-win64-nightly/opt: CKpV5w1rSiuwuBgg5pHJig
+ beetmover-repackage-br-linux-nightly/opt: C2MZ74sfQi2WslG6lMV_2w
+ beetmover-repackage-br-linux64-nightly/opt: HfDZ4KBKTPSaSkD0eVoDxA
+ beetmover-repackage-br-macosx64-nightly/opt: Bq6D8yuvSYqA4Q1_I6j04A
+ beetmover-repackage-br-win32-nightly/opt: VFigux2XSjq-Xr4fy4Yr_g
+ beetmover-repackage-br-win64-nightly/opt: R2UoQHZTR3myClDcCj1ctg
+ beetmover-repackage-bs-linux-nightly/opt: Axcb736qRmqLeEyYuCKoUA
+ beetmover-repackage-bs-linux64-nightly/opt: C-hci-p4QkSHszi_SrvsSA
+ beetmover-repackage-bs-macosx64-nightly/opt: dJmWmoQVRCGtU9e4oPVP8g
+ beetmover-repackage-bs-win32-nightly/opt: JtxMGV2ESMuHtyJje1Cpgw
+ beetmover-repackage-bs-win64-nightly/opt: LquOOkWiTpyR-GmDlQr3zg
+ beetmover-repackage-ca-linux-nightly/opt: F-IOYRWNTuWEhAkDWdhu7A
+ beetmover-repackage-ca-linux64-nightly/opt: H3SOLS9DRX2SnriZJrypVA
+ beetmover-repackage-ca-macosx64-nightly/opt: PNyvVqm2RfSnYOb144ju4A
+ beetmover-repackage-ca-win32-nightly/opt: Y8V9Lzi5SjiYOtQVVLC1EA
+ beetmover-repackage-ca-win64-nightly/opt: AJdVhSumQAaCaPAhGVzzbQ
+ beetmover-repackage-cak-linux-nightly/opt: b6Yj_IlISoWTy77IW53GDQ
+ beetmover-repackage-cak-linux64-nightly/opt: B0pLeywxQwGOZukGSibzWA
+ beetmover-repackage-cak-macosx64-nightly/opt: AbCq3OIIRmGsuT1ggtn31A
+ beetmover-repackage-cak-win32-nightly/opt: f5UP4tHlQGKt6G3Zo3nPgg
+ beetmover-repackage-cak-win64-nightly/opt: WcNvjPyVTc22DenVmwDzpA
+ beetmover-repackage-cs-linux-nightly/opt: d6hnCwCUSJuUz_mpSczYPg
+ beetmover-repackage-cs-linux64-nightly/opt: Oxh_RUuFQZqBD3n35da4wA
+ beetmover-repackage-cs-macosx64-nightly/opt: FWVp-9QDTRKyM6JRaVC9gw
+ beetmover-repackage-cs-win32-nightly/opt: NCLQJSJnRNW-KoQHA9M-qw
+ beetmover-repackage-cs-win64-nightly/opt: TwJNHkcqR_uJr-Tk7P79Rw
+ beetmover-repackage-cy-linux-nightly/opt: e2dS0rD4TX-inqSrFOlUXg
+ beetmover-repackage-cy-linux64-nightly/opt: WRtqUx53Tze90dv1l2DH9A
+ beetmover-repackage-cy-macosx64-nightly/opt: O6rX30GpTt-IKgUWS1hSSw
+ beetmover-repackage-cy-win32-nightly/opt: KFDMdxsvSjatAXDEEXzymg
+ beetmover-repackage-cy-win64-nightly/opt: WetOqmV_SuyaS2srsIwqOg
+ beetmover-repackage-da-linux-nightly/opt: QSec8ATMSbWlbAAbUi4-YQ
+ beetmover-repackage-da-linux64-nightly/opt: BqjCEDqsTaSDpyv8pGiwUQ
+ beetmover-repackage-da-macosx64-nightly/opt: dHhK0kxZThS9WmKnrvfAOQ
+ beetmover-repackage-da-win32-nightly/opt: NrUPE6sPRxmHDXKUyLj_7Q
+ beetmover-repackage-da-win64-nightly/opt: D7PhB8F_QsSUpaSX5eEqtA
+ beetmover-repackage-de-linux-nightly/opt: B7BCad7YTCqiAbQbmzb4_w
+ beetmover-repackage-de-linux64-nightly/opt: RF-oI_jRQtmnkpbLbIjsTw
+ beetmover-repackage-de-macosx64-nightly/opt: JdvSjqo0QP61AY_PKr6VIA
+ beetmover-repackage-de-win32-nightly/opt: bHe8ErWnTB2g38dHj_AAuA
+ beetmover-repackage-de-win64-nightly/opt: CIa5HsrFQZaks6ArJTv3LA
+ beetmover-repackage-dsb-linux-nightly/opt: DKF9tyH3SFO2_rrAAFefzA
+ beetmover-repackage-dsb-linux64-nightly/opt: VNe8NA6xSQiWSxd6EYtN-Q
+ beetmover-repackage-dsb-macosx64-nightly/opt: NGMiMIfdTnaUHWkNKw7Sxw
+ beetmover-repackage-dsb-win32-nightly/opt: JW7NzbCyTByfO-bEgVOIjg
+ beetmover-repackage-dsb-win64-nightly/opt: KrX-Jf5ESaqJBH57WeyojA
+ beetmover-repackage-el-linux-nightly/opt: VfVbz8qRRV6jaDIo1aneVg
+ beetmover-repackage-el-linux64-nightly/opt: C58pRnjIQSGv-TA3fje0_w
+ beetmover-repackage-el-macosx64-nightly/opt: LzWTGu8kRYmgNJeeDAwt8Q
+ beetmover-repackage-el-win32-nightly/opt: Q1J7Iz1WSZe5JN4Wf4zqSg
+ beetmover-repackage-el-win64-nightly/opt: IEdwqr_9QKCD3wcqyWhYEA
+ beetmover-repackage-en-CA-linux-nightly/opt: IAIkG-7eTKW6oTnAz0H6Fg
+ beetmover-repackage-en-CA-linux64-nightly/opt: NFXWi-O5TBKFObRNHD1Dyw
+ beetmover-repackage-en-CA-macosx64-nightly/opt: IckvqAvBTWOov3Gdvcd6Zg
+ beetmover-repackage-en-CA-win32-nightly/opt: TTZKctYVS62Oal250037QQ
+ beetmover-repackage-en-CA-win64-nightly/opt: AnQm3wzeRG607PNa_fjJPQ
+ beetmover-repackage-en-GB-linux-nightly/opt: GRl_mZHQTFmM1WgYCWpXwA
+ beetmover-repackage-en-GB-linux64-nightly/opt: Vpl9VBy3Q1-oupRgJosz4w
+ beetmover-repackage-en-GB-macosx64-nightly/opt: Fpp1x6CoTZWIh5r_V1Sxlw
+ beetmover-repackage-en-GB-win32-nightly/opt: VNnPqG2GQiOWasSbbQsd1g
+ beetmover-repackage-en-GB-win64-nightly/opt: EW50p_jrSxabYX3IC52gnw
+ beetmover-repackage-en-ZA-linux-nightly/opt: JNuMJqdvTTGfNTPyXYXkkg
+ beetmover-repackage-en-ZA-linux64-nightly/opt: Mh8vEurDQ-Kt8478p_WcPg
+ beetmover-repackage-en-ZA-macosx64-nightly/opt: P_OxKVYdT1OfzBVFdzJjeQ
+ beetmover-repackage-en-ZA-win32-nightly/opt: HSPTjbPETEOEZ0CQ3lTGGw
+ beetmover-repackage-en-ZA-win64-nightly/opt: BCONUj6HQ1awAi46B6e3Uw
+ beetmover-repackage-eo-linux-nightly/opt: NMocu83QSvuPQzitQkyclA
+ beetmover-repackage-eo-linux64-nightly/opt: butTzclsTQGvWKhLJixNHg
+ beetmover-repackage-eo-macosx64-nightly/opt: GAuPMH7HR7Si2dApBxTM6Q
+ beetmover-repackage-eo-win32-nightly/opt: Gk_7RX8UThyt6kkaCpAaUA
+ beetmover-repackage-eo-win64-nightly/opt: ZEWMtXoxQHKKjB5wX3FaZQ
+ beetmover-repackage-es-AR-linux-nightly/opt: QHItbozbRiOsbaXvlAADvA
+ beetmover-repackage-es-AR-linux64-nightly/opt: JiCO9DXpQNG4y-kLMCbPvw
+ beetmover-repackage-es-AR-macosx64-nightly/opt: JJhGu8G-R6ey5HMrt8N7WA
+ beetmover-repackage-es-AR-win32-nightly/opt: d3pvNDsRRRCpIT1huhHPqA
+ beetmover-repackage-es-AR-win64-nightly/opt: Jm4fFZwHQdioDLMzx9GD9Q
+ beetmover-repackage-es-CL-linux-nightly/opt: HlrVp-eCTAGKa2qHjrf90A
+ beetmover-repackage-es-CL-linux64-nightly/opt: CimY8oC2TlubOwGLk2v-ZA
+ beetmover-repackage-es-CL-macosx64-nightly/opt: fBAykKCOQDKQqW7I4mpGXg
+ beetmover-repackage-es-CL-win32-nightly/opt: WypRc2nQTy6klu5lqqiIuA
+ beetmover-repackage-es-CL-win64-nightly/opt: TD-jCgOfTcaxpVmkKVGe2A
+ beetmover-repackage-es-ES-linux-nightly/opt: Brva-VkuR2Wp1FrMlHz1hA
+ beetmover-repackage-es-ES-linux64-nightly/opt: GWEBcq_RRpKrejQlVqc1mQ
+ beetmover-repackage-es-ES-macosx64-nightly/opt: MSzu9QJ4QTGmrd09lMe31w
+ beetmover-repackage-es-ES-win32-nightly/opt: HHlaojwRQaW7N8HDskyzmA
+ beetmover-repackage-es-ES-win64-nightly/opt: cy43GuciQXG97nvDe-6dQA
+ beetmover-repackage-es-MX-linux-nightly/opt: Osts3rvvSAu2zwjKJNDz8g
+ beetmover-repackage-es-MX-linux64-nightly/opt: N_GOxtRxSIyQ1XwLbHQzTQ
+ beetmover-repackage-es-MX-macosx64-nightly/opt: RdwHq7uURx-xyUdFnIKH7g
+ beetmover-repackage-es-MX-win32-nightly/opt: cKpQWdnzQHK5URpITV7t7w
+ beetmover-repackage-es-MX-win64-nightly/opt: fmrv_3DmTRWOxErDAcrNyw
+ beetmover-repackage-et-linux-nightly/opt: c-Awag1KTWGOfg1FyGEl6Q
+ beetmover-repackage-et-linux64-nightly/opt: R5k74SNoSPyfunfnRi1JZA
+ beetmover-repackage-et-macosx64-nightly/opt: W57B_YuvTceh7Neol-UN2w
+ beetmover-repackage-et-win32-nightly/opt: W2oCMAvlT3aI_N_8WyYCMw
+ beetmover-repackage-et-win64-nightly/opt: BB6VI46WQpOTqmL5KBIpnw
+ beetmover-repackage-eu-linux-nightly/opt: Dm7Pl-yITXycabzxuUpFpQ
+ beetmover-repackage-eu-linux64-nightly/opt: Oe7tlJQ9S563-Hl-3Sk_yg
+ beetmover-repackage-eu-macosx64-nightly/opt: Dt4t448kTliszaEj2gUXig
+ beetmover-repackage-eu-win32-nightly/opt: TezOlH5qQFSfDolqCHYnkQ
+ beetmover-repackage-eu-win64-nightly/opt: Pi9a_Q6kSV2bREnSjVT2dw
+ beetmover-repackage-fa-linux-nightly/opt: EdkCIA51RluWp3WXe4sXxA
+ beetmover-repackage-fa-linux64-nightly/opt: WiG-8z8SQAmhM8fuVNgE3g
+ beetmover-repackage-fa-macosx64-nightly/opt: F96eva97Tq6p9Sx0MnKNVw
+ beetmover-repackage-fa-win32-nightly/opt: fntJsAgOTSmoKeeqCLU5oQ
+ beetmover-repackage-fa-win64-nightly/opt: YS9csF60SYGgsenCMotZAw
+ beetmover-repackage-ff-linux-nightly/opt: dOWlHfp-R_SfW2dQ5Tat8Q
+ beetmover-repackage-ff-linux64-nightly/opt: SkxXmkfOT5aPQOO_-9YGiw
+ beetmover-repackage-ff-macosx64-nightly/opt: T8T1hIwfQUm_GsorEnvmug
+ beetmover-repackage-ff-win32-nightly/opt: GmZlf_SyRfiPQ2v-MWhnJQ
+ beetmover-repackage-ff-win64-nightly/opt: f05mB4DGSTCOd5G4fWXxBQ
+ beetmover-repackage-fi-linux-nightly/opt: Z_RBq4ARSgi7ASmRP6sn1A
+ beetmover-repackage-fi-linux64-nightly/opt: ISgrf-WMQXGFnjlZU9JAEA
+ beetmover-repackage-fi-macosx64-nightly/opt: At6Vi3kCQSmwHYSFL4Z1eQ
+ beetmover-repackage-fi-win32-nightly/opt: NywzLPJtQp2aB4eIPocx2g
+ beetmover-repackage-fi-win64-nightly/opt: WF7Ex2OAQWm7Z5Ni8ZVaHQ
+ beetmover-repackage-fr-linux-nightly/opt: EWMNpDQlTqmnx1oOsQnCZA
+ beetmover-repackage-fr-linux64-nightly/opt: O3bAikO5QDa5YItV78UzUA
+ beetmover-repackage-fr-macosx64-nightly/opt: ZWDUa0F6STi-0TDjhQYcsg
+ beetmover-repackage-fr-win32-nightly/opt: SB9auZqJQuugTezOWdMjmQ
+ beetmover-repackage-fr-win64-nightly/opt: LS_t59ItQs-B0X6hIjDY0A
+ beetmover-repackage-fy-NL-linux-nightly/opt: VexwdunSSB22NOSajyx0qw
+ beetmover-repackage-fy-NL-linux64-nightly/opt: Pcx7JRK3QtW2O-3_OdG17A
+ beetmover-repackage-fy-NL-macosx64-nightly/opt: AgR_e1yLR1e5jYa_82-PdQ
+ beetmover-repackage-fy-NL-win32-nightly/opt: GjXo07vRQjOFSbRxT-S_iA
+ beetmover-repackage-fy-NL-win64-nightly/opt: BqW5_HxxSTKi6rFAeggbxg
+ beetmover-repackage-ga-IE-linux-nightly/opt: Cs-PemPORdC1wAldJGJUmA
+ beetmover-repackage-ga-IE-linux64-nightly/opt: anwRhctkQxGPoGr7V9lN_g
+ beetmover-repackage-ga-IE-macosx64-nightly/opt: bYtOPqgAT1m3oaJeu_MK4g
+ beetmover-repackage-ga-IE-win32-nightly/opt: NwS1ExwMR7aEuw1akzG1ug
+ beetmover-repackage-ga-IE-win64-nightly/opt: PAZLsQhwSv-YFNBeZ--oZw
+ beetmover-repackage-gd-linux-nightly/opt: KGCT5EpORd-WJqi4q26fDA
+ beetmover-repackage-gd-linux64-nightly/opt: Tk_LgZLbTM6yoJ_ELnoW0A
+ beetmover-repackage-gd-macosx64-nightly/opt: UOyLHhKJRTubiod6ls2Gtg
+ beetmover-repackage-gd-win32-nightly/opt: fW4ZUoSDSZusn08Syfr2BA
+ beetmover-repackage-gd-win64-nightly/opt: DL4cUiWjQWO7O3wn1r_6qA
+ beetmover-repackage-gl-linux-nightly/opt: FW6PoOi_TCKY5iXTubuvOQ
+ beetmover-repackage-gl-linux64-nightly/opt: b0N9DALdRRmoRCIq62SV9w
+ beetmover-repackage-gl-macosx64-nightly/opt: LaOIsTc6Qxuq0QMjW2IkRw
+ beetmover-repackage-gl-win32-nightly/opt: fhXpQOvRRHuGVsObxQ669Q
+ beetmover-repackage-gl-win64-nightly/opt: Iqpn3BgoT-2iwjQ_hGkH_Q
+ beetmover-repackage-gn-linux-nightly/opt: PnpOCozXT3-fhdoeJQeB4g
+ beetmover-repackage-gn-linux64-nightly/opt: IcB7LmWRTHmy0qiXQuDiow
+ beetmover-repackage-gn-macosx64-nightly/opt: IqB6MsfVT26Kz8jIdogyuA
+ beetmover-repackage-gn-win32-nightly/opt: Jnkr1JjqRIKq5kMLDOjiiQ
+ beetmover-repackage-gn-win64-nightly/opt: MryT0QCMRGS8PeRHYLiaDg
+ beetmover-repackage-gu-IN-linux-nightly/opt: Ylg2TUnPRMm1h21fyYRmbw
+ beetmover-repackage-gu-IN-linux64-nightly/opt: P8n0O-A2SIaKGujWD7VPIQ
+ beetmover-repackage-gu-IN-macosx64-nightly/opt: ML8Z9HAAQ-6R7qfjzd413A
+ beetmover-repackage-gu-IN-win32-nightly/opt: ZNAp2RfBQ8utinrV1u9RRw
+ beetmover-repackage-gu-IN-win64-nightly/opt: NfvhMspdRLqHq1AUYjBBxw
+ beetmover-repackage-he-linux-nightly/opt: H5nTycQuRoerZiFzRKXReg
+ beetmover-repackage-he-linux64-nightly/opt: Gg6xdHCHRJW5rR0VQ1OJPA
+ beetmover-repackage-he-macosx64-nightly/opt: cGITz_8ZTJOEFdR_0oMqqg
+ beetmover-repackage-he-win32-nightly/opt: Cd0chyHTR5WjSpxjpc_SMQ
+ beetmover-repackage-he-win64-nightly/opt: bxQor4tBSMKFHiZXubUvJQ
+ beetmover-repackage-hi-IN-linux-nightly/opt: BS0PzZ1XTCuP41KFS6d-eA
+ beetmover-repackage-hi-IN-linux64-nightly/opt: Bs2LBPx6T6mMzkN1HgiSSw
+ beetmover-repackage-hi-IN-macosx64-nightly/opt: HtJjNZFrQ2qNWS05dyaMUA
+ beetmover-repackage-hi-IN-win32-nightly/opt: dq-WYunJSf2hAi6FoBFS9g
+ beetmover-repackage-hi-IN-win64-nightly/opt: RL36I4i7RMyweQpqP9LTPQ
+ beetmover-repackage-hr-linux-nightly/opt: Hcxr_OTNRbKPPj2wTHYssw
+ beetmover-repackage-hr-linux64-nightly/opt: cd1vLOttT66coEZmlUwVmw
+ beetmover-repackage-hr-macosx64-nightly/opt: CMziF882RW2hoSpjDqUHpA
+ beetmover-repackage-hr-win32-nightly/opt: KO5LlTChQgeNdlTIFQ8SDQ
+ beetmover-repackage-hr-win64-nightly/opt: b1z-Or8lTf-1yhlzGWvWpA
+ beetmover-repackage-hsb-linux-nightly/opt: YMbXbudAR2ew-GxelGpFtg
+ beetmover-repackage-hsb-linux64-nightly/opt: ZX6YsGWsS82FZBnoYPsJEQ
+ beetmover-repackage-hsb-macosx64-nightly/opt: U800fpO_QSSH8QRvUwn_qg
+ beetmover-repackage-hsb-win32-nightly/opt: UwJJSlZaRKKv74xlaOiPQA
+ beetmover-repackage-hsb-win64-nightly/opt: VuPZy77_TI2odFC_4TFc5Q
+ beetmover-repackage-hu-linux-nightly/opt: Pb_7eNeCTVmQaZwka2oG7Q
+ beetmover-repackage-hu-linux64-nightly/opt: QtETo4BFT62G5vCUUGgZYA
+ beetmover-repackage-hu-macosx64-nightly/opt: Fbn-q5JkQFiKIYoJuqg-Xw
+ beetmover-repackage-hu-win32-nightly/opt: Qk2uljhfTUqI0NGVxvAkGg
+ beetmover-repackage-hu-win64-nightly/opt: StsjcF2wQy2c-1oRcvh6Dg
+ beetmover-repackage-hy-AM-linux-nightly/opt: YPFp7-zeSV-fsoAAjvsaig
+ beetmover-repackage-hy-AM-linux64-nightly/opt: CfkG0fjwSFmoxp_BR9fE1w
+ beetmover-repackage-hy-AM-macosx64-nightly/opt: YNn_UQlGTYmmA78HoPDjlQ
+ beetmover-repackage-hy-AM-win32-nightly/opt: RLXO_OIwRV20Sm6E6meprg
+ beetmover-repackage-hy-AM-win64-nightly/opt: UeJegHhVTqqPkSvsV8SDEw
+ beetmover-repackage-ia-linux-nightly/opt: JZxZvNNWRC27uayH1YpJPw
+ beetmover-repackage-ia-linux64-nightly/opt: ZTTG0eBiQFaBffqEvxMlMg
+ beetmover-repackage-ia-macosx64-nightly/opt: F6pR1g1OSeSJsegxn04P0A
+ beetmover-repackage-ia-win32-nightly/opt: KnP8tnqbTwmGX_m3HIjPfA
+ beetmover-repackage-ia-win64-nightly/opt: QYt7460cSLqS7o84rsTsAA
+ beetmover-repackage-id-linux-nightly/opt: EafEPfk4TaOVp36dLdB_rw
+ beetmover-repackage-id-linux64-nightly/opt: KEEAVOlJQkC5MdNJkLYgqA
+ beetmover-repackage-id-macosx64-nightly/opt: F0n1IWfyRiWkrchjeywInw
+ beetmover-repackage-id-win32-nightly/opt: Y14ViEVFQoe5S6Q3JbxLew
+ beetmover-repackage-id-win64-nightly/opt: d8-sY-BYQ1K5xRw1RY2rlQ
+ beetmover-repackage-is-linux-nightly/opt: B3r_x9VgQK200oOKouvXEA
+ beetmover-repackage-is-linux64-nightly/opt: Wlj9Pr1USP2HOINAdoi7aw
+ beetmover-repackage-is-macosx64-nightly/opt: F5JleVV6SHq-U0dWQGaBwg
+ beetmover-repackage-is-win32-nightly/opt: QvpQYqoHThaMghWhySwmuQ
+ beetmover-repackage-is-win64-nightly/opt: FsLYhHHVSg6XwJCovzi-Zw
+ beetmover-repackage-it-linux-nightly/opt: CJvhiWc0TKasyZ1EBEnuRw
+ beetmover-repackage-it-linux64-nightly/opt: GhxdqpQ0QoO9ga8tgcWJ1A
+ beetmover-repackage-it-macosx64-nightly/opt: LNdDVm9fTui3obbtjmGlRg
+ beetmover-repackage-it-win32-nightly/opt: e_pGFdmRSPGX2e4Prrh1Rw
+ beetmover-repackage-it-win64-nightly/opt: GXeT_7_GS-e_WgEsfGdjhw
+ beetmover-repackage-ja-JP-mac-macosx64-nightly/opt: b6opRl6PSS6KUIqOO4_9YA
+ beetmover-repackage-ja-linux-nightly/opt: TRygNdiLSNO20HkQxFNxWg
+ beetmover-repackage-ja-linux64-nightly/opt: XH4tiChMRgSBHWF-NAB0tQ
+ beetmover-repackage-ja-win32-nightly/opt: YR6WXHtXTbuHYQufry8ZCA
+ beetmover-repackage-ja-win64-nightly/opt: MfCIujg8RtSk-H-JCSbtzA
+ beetmover-repackage-ka-linux-nightly/opt: C-YjvdgUSC2fk9OYqVqG3w
+ beetmover-repackage-ka-linux64-nightly/opt: HTW-bqDoRXqNTnleJCNj7A
+ beetmover-repackage-ka-macosx64-nightly/opt: A9K8nrzBQgKQqyGPLOpIdA
+ beetmover-repackage-ka-win32-nightly/opt: JKmWjMTGTrCjLMSXsSXEeg
+ beetmover-repackage-ka-win64-nightly/opt: QEPuLwFkTGWlZsKxjrD0Dw
+ beetmover-repackage-kab-linux-nightly/opt: TCf5t_4_TtOCfKxSQjebfg
+ beetmover-repackage-kab-linux64-nightly/opt: e1IDNIhLShWLPJW9aLj10g
+ beetmover-repackage-kab-macosx64-nightly/opt: JPeCKEacRNGZ3Oa-fLOC4g
+ beetmover-repackage-kab-win32-nightly/opt: YlJt8v4JTnCI5tQkRXPp3w
+ beetmover-repackage-kab-win64-nightly/opt: QxztbZxWSOuEd0nDvGLE0Q
+ beetmover-repackage-kk-linux-nightly/opt: ZjdiltPgSKm3x9g0MpkQ7A
+ beetmover-repackage-kk-linux64-nightly/opt: SFNO0O4QQPe1EZ6aWo0F2w
+ beetmover-repackage-kk-macosx64-nightly/opt: ewpAZknIQK2HpjKkvykCtg
+ beetmover-repackage-kk-win32-nightly/opt: MmeUkaDhQWCy9-bZDPtNjQ
+ beetmover-repackage-kk-win64-nightly/opt: R-ni211MSXKA1iuXDgbK1w
+ beetmover-repackage-km-linux-nightly/opt: cdX-RfXzSkasFVxlFbCrAg
+ beetmover-repackage-km-linux64-nightly/opt: UYK-2knSSwWMEtzpbKp7GQ
+ beetmover-repackage-km-macosx64-nightly/opt: C2OzZK2tSTWy8K-k65-eGA
+ beetmover-repackage-km-win32-nightly/opt: N_McP1auTqymybGQAl-WJA
+ beetmover-repackage-km-win64-nightly/opt: S9rRDUqWR8e3udNmBH_5Nw
+ beetmover-repackage-kn-linux-nightly/opt: BEQl5usRTQKRCsscoW-iDA
+ beetmover-repackage-kn-linux64-nightly/opt: edtYE1mRQAqq1H1O3L52Yg
+ beetmover-repackage-kn-macosx64-nightly/opt: AXGLoQMsQcOk5Vj90fdPyg
+ beetmover-repackage-kn-win32-nightly/opt: VmxFOfpISyihEoHNwfZu6w
+ beetmover-repackage-kn-win64-nightly/opt: JYiWx82BSHW8MWybvQntaA
+ beetmover-repackage-ko-linux-nightly/opt: WgW1LPSjR8u4lbwmO26f2g
+ beetmover-repackage-ko-linux64-nightly/opt: cFAjbJqWTtmcJ_JViFAZ5A
+ beetmover-repackage-ko-macosx64-nightly/opt: HzfyPtQqTbOY-Sr37e0C6g
+ beetmover-repackage-ko-win32-nightly/opt: fT_XLNyMSICeWFNdOmJVEg
+ beetmover-repackage-ko-win64-nightly/opt: MJWmh3DUSEO2Pr-y2EM8aw
+ beetmover-repackage-lij-linux-nightly/opt: fvEN7tJLRia6VFb4HP-G8A
+ beetmover-repackage-lij-linux64-nightly/opt: CqOUKJdIRjGneyE51DE-MA
+ beetmover-repackage-lij-macosx64-nightly/opt: C5JYSXUqTUynTEv7DFWJMQ
+ beetmover-repackage-lij-win32-nightly/opt: Is0HW-j1RBKMCaKg9L2O8A
+ beetmover-repackage-lij-win64-nightly/opt: EyM0yBOPSJ-8BkJQSP7J6g
+ beetmover-repackage-linux-nightly/opt: Me-zHWyySOCwDp_0-S0P6A
+ beetmover-repackage-linux64-nightly/opt: f9hEcIfwQw-4t4CxU3s6rw
+ beetmover-repackage-lt-linux-nightly/opt: bCnhY6yfT36_oNqtQ1vGAw
+ beetmover-repackage-lt-linux64-nightly/opt: HgF0Yg2vQQOaHRG0pMo1yw
+ beetmover-repackage-lt-macosx64-nightly/opt: RMCnnJFCT4uqSVdd2f1OFA
+ beetmover-repackage-lt-win32-nightly/opt: HYU4ghhWQdC0CqiyA0sUrA
+ beetmover-repackage-lt-win64-nightly/opt: R4qldvvST2SP_fPiuTKnSA
+ beetmover-repackage-lv-linux-nightly/opt: emkD4WgxTlqwjgqCXmSeGQ
+ beetmover-repackage-lv-linux64-nightly/opt: UKm84q62TK6IGslrQo6DKw
+ beetmover-repackage-lv-macosx64-nightly/opt: Rgqc7eRzRea0-7yT_wlo2Q
+ beetmover-repackage-lv-win32-nightly/opt: MDkP1lVlSW2BU4xY7m3v_Q
+ beetmover-repackage-lv-win64-nightly/opt: IUd6w6unSaCVySzTpPtNDg
+ beetmover-repackage-macosx64-nightly/opt: U-1KjmHDSfitmIloCZqTmA
+ beetmover-repackage-mai-linux-nightly/opt: fXFGYTUDTLC4W-dBK9B38A
+ beetmover-repackage-mai-linux64-nightly/opt: JretRfOwQUGi415SmM6kKw
+ beetmover-repackage-mai-macosx64-nightly/opt: YOKs3fJjR4alOJDx5WJ42A
+ beetmover-repackage-mai-win32-nightly/opt: VvZ5lsbETQ2T2o7OPCowBA
+ beetmover-repackage-mai-win64-nightly/opt: FX5g1bNOQtyUbezKKRxWnQ
+ beetmover-repackage-mk-linux-nightly/opt: Ro3vajMJTBeYla0S-8AE7A
+ beetmover-repackage-mk-linux64-nightly/opt: BIpBu_Z_Rtyj9DwknxK8Qw
+ beetmover-repackage-mk-macosx64-nightly/opt: MvfNg5JISR2CxChpMrGcVQ
+ beetmover-repackage-mk-win32-nightly/opt: D80Sj1j_TGOKdf0KfyjmUg
+ beetmover-repackage-mk-win64-nightly/opt: Uep4KIwXQyCnD7dF87IGEg
+ beetmover-repackage-ml-linux-nightly/opt: B6sAHufJSTy6MXmNxWJwgg
+ beetmover-repackage-ml-linux64-nightly/opt: IPPsAYyeSUqQ6KL_XZQaWA
+ beetmover-repackage-ml-macosx64-nightly/opt: BemH4RmeTGOyMjDBWjyqXA
+ beetmover-repackage-ml-win32-nightly/opt: J0UzKvakS5KA_vPK1h6kqg
+ beetmover-repackage-ml-win64-nightly/opt: XUlYvDiOSkatP1XDlLmZng
+ beetmover-repackage-mr-linux-nightly/opt: cx0vcDkfS6KQ24aKLBlNLQ
+ beetmover-repackage-mr-linux64-nightly/opt: BmsYgMb7S5uYkd3BI4ct-A
+ beetmover-repackage-mr-macosx64-nightly/opt: XTm97ikkQ6OvAAikNCKkkQ
+ beetmover-repackage-mr-win32-nightly/opt: H1AILI1VRjWpQ_gyZal3YA
+ beetmover-repackage-mr-win64-nightly/opt: GGxzRgx7S1udIsStyoF0NQ
+ beetmover-repackage-ms-linux-nightly/opt: PVgLgKFMQQCVvgnng01pNQ
+ beetmover-repackage-ms-linux64-nightly/opt: KgdyxWNkSSiuUmZEVYDcIQ
+ beetmover-repackage-ms-macosx64-nightly/opt: RZgT-3mKRFqq04YEoKkeBg
+ beetmover-repackage-ms-win32-nightly/opt: UaVPwKBdSdqfGPdQgozobg
+ beetmover-repackage-ms-win64-nightly/opt: SZvYmKTqQBuOs3qxc4nWRw
+ beetmover-repackage-my-linux-nightly/opt: c1G8knuPS5m1MLbwl_kqUw
+ beetmover-repackage-my-linux64-nightly/opt: NdhruHSAQ9uZD2EaRM52xg
+ beetmover-repackage-my-macosx64-nightly/opt: U1z8gBDHQgCSnqUxzDLcYA
+ beetmover-repackage-my-win32-nightly/opt: FPlTcyUZSpq91UA4DpSDEA
+ beetmover-repackage-my-win64-nightly/opt: N5YS7RFERfyU6RFY0RXkFg
+ beetmover-repackage-nb-NO-linux-nightly/opt: JNz9MBhVTkmjD4_G3reRTg
+ beetmover-repackage-nb-NO-linux64-nightly/opt: APW6-pRZSqaHzb9WpglpMA
+ beetmover-repackage-nb-NO-macosx64-nightly/opt: J3ykhHcLQtmgQzg3P2zwLA
+ beetmover-repackage-nb-NO-win32-nightly/opt: VGZDOejmT-WTu_PfYdqIOA
+ beetmover-repackage-nb-NO-win64-nightly/opt: X-TIAN7PTOqCd_4t2KoHUA
+ beetmover-repackage-ne-NP-linux-nightly/opt: GflbzSu7TsWc-rgIXVp1FQ
+ beetmover-repackage-ne-NP-linux64-nightly/opt: b9yE9-3vT7mhcjUKKdG80A
+ beetmover-repackage-ne-NP-macosx64-nightly/opt: NW-O4N-wTJGPGOZFlrcNOQ
+ beetmover-repackage-ne-NP-win32-nightly/opt: B34zzKEFSdaivBcRzXem6g
+ beetmover-repackage-ne-NP-win64-nightly/opt: bWfeYkC6SCOhSpV-UhHlyw
+ beetmover-repackage-nl-linux-nightly/opt: TgYr-u9bT4Skoc7RaNg0zw
+ beetmover-repackage-nl-linux64-nightly/opt: VQNZmoQ4TEK2iXZM-kPK_g
+ beetmover-repackage-nl-macosx64-nightly/opt: N5saas7-T5-TxOuLdpvgdw
+ beetmover-repackage-nl-win32-nightly/opt: SxlnPNIHQyKuzKrUTyVswA
+ beetmover-repackage-nl-win64-nightly/opt: XZFul6aER9yoFeiIzqlzKw
+ beetmover-repackage-nn-NO-linux-nightly/opt: EVEaeA2NSuuOuHK6t_llow
+ beetmover-repackage-nn-NO-linux64-nightly/opt: ebt9r7gpRzG3XyGm9uor8A
+ beetmover-repackage-nn-NO-macosx64-nightly/opt: XsJobL55TV-hrM_dbwaDBQ
+ beetmover-repackage-nn-NO-win32-nightly/opt: M243GtiATEqO9ASMIxN34w
+ beetmover-repackage-nn-NO-win64-nightly/opt: HoW_8LQwRtqWbUR7FFAYfw
+ beetmover-repackage-oc-linux-nightly/opt: MEyzC5qSRAW2N4RzAmeEJw
+ beetmover-repackage-oc-linux64-nightly/opt: BT3ptDLBTqS3f2GgcUFVmw
+ beetmover-repackage-oc-macosx64-nightly/opt: fpcP_UmdTV6OJ0fYtJcGvw
+ beetmover-repackage-oc-win32-nightly/opt: DfWTHOJmQjuijQInA76yhA
+ beetmover-repackage-oc-win64-nightly/opt: QJQzmGmcQ0qFouK3_v4m6A
+ beetmover-repackage-or-linux-nightly/opt: bzheFQObShur7JW7gpXReg
+ beetmover-repackage-or-linux64-nightly/opt: MWHd3t9VSG2NMy91l3KCfA
+ beetmover-repackage-or-macosx64-nightly/opt: MPhSRqRNTA6RadJF--th4Q
+ beetmover-repackage-or-win32-nightly/opt: VeDho8ZuTuSBoPW_-fZ7wg
+ beetmover-repackage-or-win64-nightly/opt: Kvn_zQQQTvywHsI-aB5WGA
+ beetmover-repackage-pa-IN-linux-nightly/opt: MrNrjnScT6C19lBy0Ebsxw
+ beetmover-repackage-pa-IN-linux64-nightly/opt: JQE_ESNmRxC-lKOCHFxlkw
+ beetmover-repackage-pa-IN-macosx64-nightly/opt: E1mexvZiQpKjCun-EwSk2w
+ beetmover-repackage-pa-IN-win32-nightly/opt: ECG4GAG1Ryy_A-Gi5ISBRQ
+ beetmover-repackage-pa-IN-win64-nightly/opt: eJ-9-rkASzW84M0awiYm5Q
+ beetmover-repackage-pl-linux-nightly/opt: dOa0gX5iRna4zPc9JwAW_A
+ beetmover-repackage-pl-linux64-nightly/opt: RJqn-XGJTGm3LwxFQva-0g
+ beetmover-repackage-pl-macosx64-nightly/opt: TZNAPhCgTJuDzapWg4SUwQ
+ beetmover-repackage-pl-win32-nightly/opt: Q-VaPgObSJeTGAdOtVvzMQ
+ beetmover-repackage-pl-win64-nightly/opt: MJaui02-QROqbDue5_XTeQ
+ beetmover-repackage-pt-BR-linux-nightly/opt: cGzoBII-QoCyAWEkagMRpg
+ beetmover-repackage-pt-BR-linux64-nightly/opt: aPy4ojGqRqiP9qZfYA6r2Q
+ beetmover-repackage-pt-BR-macosx64-nightly/opt: YampoF2XTx2KixbCZxb2Dg
+ beetmover-repackage-pt-BR-win32-nightly/opt: Zz2mUu8pTg2Ho82Z6AH0iQ
+ beetmover-repackage-pt-BR-win64-nightly/opt: Z0xSecrRSr22LjJUWwilqw
+ beetmover-repackage-pt-PT-linux-nightly/opt: O1dPSI3DR8SQQsiuhMKxeQ
+ beetmover-repackage-pt-PT-linux64-nightly/opt: cteaZ5-vT5KXsWnILhoTIg
+ beetmover-repackage-pt-PT-macosx64-nightly/opt: fp-MCOCGRJeDYl_LGy46Mg
+ beetmover-repackage-pt-PT-win32-nightly/opt: B0nxsE2pSIOljA2ceB_Q3w
+ beetmover-repackage-pt-PT-win64-nightly/opt: GZk8aRtNTBSWAOP-7umQKQ
+ beetmover-repackage-rm-linux-nightly/opt: c3X7HBUjRiu2i2HBIAS4rA
+ beetmover-repackage-rm-linux64-nightly/opt: BAK_1kX2SauObBedx2fcxQ
+ beetmover-repackage-rm-macosx64-nightly/opt: JYaC9qZPSriUQDfsvzZaRA
+ beetmover-repackage-rm-win32-nightly/opt: WqXpIvKtTp6694RqlcobwA
+ beetmover-repackage-rm-win64-nightly/opt: ZIRmf10GQ0OKbKM3pkscAg
+ beetmover-repackage-ro-linux-nightly/opt: YCI9zXqaQwiHVYQ1bJDJRw
+ beetmover-repackage-ro-linux64-nightly/opt: MuOKoCEuSBCO_ZU59Jc_WA
+ beetmover-repackage-ro-macosx64-nightly/opt: HEBygsKlSFeghU_kcJ94Zw
+ beetmover-repackage-ro-win32-nightly/opt: VG0cb04FQwCH3jNw2hsdJg
+ beetmover-repackage-ro-win64-nightly/opt: IHaxxt69S62poikbx_zWLQ
+ beetmover-repackage-ru-linux-nightly/opt: T5s1hFWAQPajvGXOKzY3ZA
+ beetmover-repackage-ru-linux64-nightly/opt: FyzvGw8aSu-tixhYBHdcOw
+ beetmover-repackage-ru-macosx64-nightly/opt: PN0CpjZ3R1mCLT831Ey1IQ
+ beetmover-repackage-ru-win32-nightly/opt: fPAComkYTiCdLNMbJk4Uzg
+ beetmover-repackage-ru-win64-nightly/opt: P5Zn27QcQ1K2-FD19VxGkQ
+ beetmover-repackage-si-linux-nightly/opt: bT8zRu7RS2ugks47cgInYQ
+ beetmover-repackage-si-linux64-nightly/opt: I-gcz9cTRdukvuXLnfkiTA
+ beetmover-repackage-si-macosx64-nightly/opt: XkChb3EuQUWpwpUTsn4htA
+ beetmover-repackage-si-win32-nightly/opt: CZmRbZ25TDOrH5s0i8YR6Q
+ beetmover-repackage-si-win64-nightly/opt: fdDzyhQdSH6dlTZlwwunCQ
+ beetmover-repackage-sk-linux-nightly/opt: GI1Au7JqSnS3OW8QdY873w
+ beetmover-repackage-sk-linux64-nightly/opt: YNEPHOttS-agBy1BJ31R1g
+ beetmover-repackage-sk-macosx64-nightly/opt: O7wSRTChSCGknGZW3tpi_w
+ beetmover-repackage-sk-win32-nightly/opt: VsqAcp2XRKiM0C7dtIN1wA
+ beetmover-repackage-sk-win64-nightly/opt: WWHe3zPBQ3u4H6gzdauB_w
+ beetmover-repackage-sl-linux-nightly/opt: KqDt7iGXSyqdn0mT6xU7bg
+ beetmover-repackage-sl-linux64-nightly/opt: fCS_TYl9SfOPR7KpgDKMJw
+ beetmover-repackage-sl-macosx64-nightly/opt: PbNO0hmiTs2EvToUEJdzyA
+ beetmover-repackage-sl-win32-nightly/opt: RAOMzvmYQ_i0E5X2MQS-Ag
+ beetmover-repackage-sl-win64-nightly/opt: JV5LtWGrQ9KI5fLSNr7gJQ
+ beetmover-repackage-son-linux-nightly/opt: JiVT_KV9SIC18gQWDr4CbQ
+ beetmover-repackage-son-linux64-nightly/opt: eNANePuKQ9GIrA38O9zZjA
+ beetmover-repackage-son-macosx64-nightly/opt: Z9rk9DKGTtG42rWzneBXvA
+ beetmover-repackage-son-win32-nightly/opt: F4AmQPKsQgehWxYuhjrhsA
+ beetmover-repackage-son-win64-nightly/opt: fY-VdpbsSayXSw8wxHkO4A
+ beetmover-repackage-sq-linux-nightly/opt: PX_81qu5SZ-mFmGHxRMPgg
+ beetmover-repackage-sq-linux64-nightly/opt: FZi7ipQ-TLqQ1utsG5mNKg
+ beetmover-repackage-sq-macosx64-nightly/opt: BcAVDoD4TduHVbEBh9YhWg
+ beetmover-repackage-sq-win32-nightly/opt: PjFeLVezS92ws2YA5shHBw
+ beetmover-repackage-sq-win64-nightly/opt: Fe0V0HPVQ4izzaWEVweR9Q
+ beetmover-repackage-sr-linux-nightly/opt: fz9CiU7GTvyVpsejimbeUQ
+ beetmover-repackage-sr-linux64-nightly/opt: H05nVlkaTjC5vHdoB68M2w
+ beetmover-repackage-sr-macosx64-nightly/opt: UNidIAwNRZiNrp0SNQo0rA
+ beetmover-repackage-sr-win32-nightly/opt: WUnQGWCvT6KEVAsOwo5POQ
+ beetmover-repackage-sr-win64-nightly/opt: Df3UUu4BTI6UHpui7Gtb2A
+ beetmover-repackage-sv-SE-linux-nightly/opt: QngZEldsTPeQG8g8boia3g
+ beetmover-repackage-sv-SE-linux64-nightly/opt: QxWxmChURIeXMlJmOccU6w
+ beetmover-repackage-sv-SE-macosx64-nightly/opt: WLw-TkLkQnqmciPsgStthQ
+ beetmover-repackage-sv-SE-win32-nightly/opt: DDh9T8ntTRmWyETCtlTTQA
+ beetmover-repackage-sv-SE-win64-nightly/opt: UEfsXAOxQOKnT7tKE_xl6g
+ beetmover-repackage-ta-linux-nightly/opt: D6UE8DTZS8amLKtkj2m7_A
+ beetmover-repackage-ta-linux64-nightly/opt: XWiwh1FaSlKOm1QYrLrl7Q
+ beetmover-repackage-ta-macosx64-nightly/opt: TAh4ZYhzTKGLR7JYCA90PQ
+ beetmover-repackage-ta-win32-nightly/opt: b9Xx7o9fSd21MLJGQgjwwg
+ beetmover-repackage-ta-win64-nightly/opt: dfiHqcJFSnaZANv3vpg4EA
+ beetmover-repackage-te-linux-nightly/opt: NHwcQ26KSmirnnlqDH9kiw
+ beetmover-repackage-te-linux64-nightly/opt: WqtlenMJShqHtQW3swGjyg
+ beetmover-repackage-te-macosx64-nightly/opt: fUb8Iu1TRzSNoSin0OkWdQ
+ beetmover-repackage-te-win32-nightly/opt: Rlhj7gNcRUqgFixrksvC6Q
+ beetmover-repackage-te-win64-nightly/opt: YkZMT5SHQ1-nC7c1FHQyDg
+ beetmover-repackage-th-linux-nightly/opt: Tdqaq0eWTyOUENkal7qfdg
+ beetmover-repackage-th-linux64-nightly/opt: EQNZoYRGSI-VcygKNlxnTA
+ beetmover-repackage-th-macosx64-nightly/opt: BZFqbV8rQzGhTHtTfpWCIg
+ beetmover-repackage-th-win32-nightly/opt: ZKLsYmGuRmCxE-CUEOjZcQ
+ beetmover-repackage-th-win64-nightly/opt: PVNnBNfqReyQcmksZeWo2g
+ beetmover-repackage-tr-linux-nightly/opt: dnSUfpZ1R9qy5J-LsJbKFg
+ beetmover-repackage-tr-linux64-nightly/opt: bGl7OUUhT_aB2HxqXFoxqg
+ beetmover-repackage-tr-macosx64-nightly/opt: cxBleeNVSQ-tXusDoYwwsw
+ beetmover-repackage-tr-win32-nightly/opt: HDILTRFQTNC96YflOaMKIw
+ beetmover-repackage-tr-win64-nightly/opt: P-AjUy0oR2ipFRIgBbiB3A
+ beetmover-repackage-uk-linux-nightly/opt: XLKOnuQgT268M7O41MLa6Q
+ beetmover-repackage-uk-linux64-nightly/opt: Y-iTrDx8TqK2M5W4YXyoeg
+ beetmover-repackage-uk-macosx64-nightly/opt: EVMMuGG_R6eyaLawETsvkw
+ beetmover-repackage-uk-win32-nightly/opt: ea-FlI9qReq5ONL-yXSVkg
+ beetmover-repackage-uk-win64-nightly/opt: ZZMEgWKrSzq9qvjL_3ahfA
+ beetmover-repackage-ur-linux-nightly/opt: T3IQwb3wRzC9U6jI-Fj5Vg
+ beetmover-repackage-ur-linux64-nightly/opt: W8GWNO5HQYu1ReCy8gkxBQ
+ beetmover-repackage-ur-macosx64-nightly/opt: Ks9jDBFMTkSBE1RMvCOwzA
+ beetmover-repackage-ur-win32-nightly/opt: G8aCz8_RQS2Y64T2XtdaXA
+ beetmover-repackage-ur-win64-nightly/opt: W1B8gk3YQNW9cxK2px9t9A
+ beetmover-repackage-uz-linux-nightly/opt: YUJ__9UwRYSwKdrEpRDZ1A
+ beetmover-repackage-uz-linux64-nightly/opt: N9zg7Y2IQRS49mZDi5Eamw
+ beetmover-repackage-uz-macosx64-nightly/opt: HMNr8ur1S1emIM7cScrYjg
+ beetmover-repackage-uz-win32-nightly/opt: ACF1YV4rSN-l9Atjc-nNeA
+ beetmover-repackage-uz-win64-nightly/opt: Q08EpvoFRl2tQYmvF9OQGA
+ beetmover-repackage-vi-linux-nightly/opt: cX7xvX22TWm58zfXhmYivQ
+ beetmover-repackage-vi-linux64-nightly/opt: PpZg1ymzRxqrOme6Z1qlAQ
+ beetmover-repackage-vi-macosx64-nightly/opt: S1OqWMsnQO6DTt06zQHUTQ
+ beetmover-repackage-vi-win32-nightly/opt: F6pb2od6TwCTipWcJqj1ag
+ beetmover-repackage-vi-win64-nightly/opt: Mp7XvJD0TROqGDkD4Ab6ug
+ beetmover-repackage-win32-nightly/opt: fgJmEzGmRXKAkCdIn8nnMg
+ beetmover-repackage-win64-nightly/opt: F0WbwTyqTRiNlVGzgFwfQQ
+ beetmover-repackage-xh-linux-nightly/opt: epHgRVelQNK5bBGePnWWeQ
+ beetmover-repackage-xh-linux64-nightly/opt: Oi2h8B0GRH2wX8mwyxtg3Q
+ beetmover-repackage-xh-macosx64-nightly/opt: R-hh5SRJT3q_kiJNbvbBbQ
+ beetmover-repackage-xh-win32-nightly/opt: J3tN1CUQQYGUdQn9L9Bjsg
+ beetmover-repackage-xh-win64-nightly/opt: bP6vG5pVTKmfJdLVrfKfMQ
+ beetmover-repackage-zh-CN-linux-nightly/opt: QTkW1NfEQo2q0z5l3DSOOQ
+ beetmover-repackage-zh-CN-linux64-nightly/opt: IKFKel8jR9CuJoGuYw2W8Q
+ beetmover-repackage-zh-CN-macosx64-nightly/opt: WJfz9N5KSMiH4KjTsz29AA
+ beetmover-repackage-zh-CN-win32-nightly/opt: HKcwO6c6T6qedymgg71ECw
+ beetmover-repackage-zh-CN-win64-nightly/opt: dQYD8vxiSFSId2lPZNRCsQ
+ beetmover-repackage-zh-TW-linux-nightly/opt: XwAWrAFGQOKVsGHWRx7WHA
+ beetmover-repackage-zh-TW-linux64-nightly/opt: CQSQu06WTZ-cbJwQpIRSPQ
+ beetmover-repackage-zh-TW-macosx64-nightly/opt: UzH7TVTVQvOLxmJBkcVk1A
+ beetmover-repackage-zh-TW-win32-nightly/opt: XsFDo3ZKQ4Sg5O50DrrKVw
+ beetmover-repackage-zh-TW-win64-nightly/opt: QXd0FyDPQTSbmSww111liQ
+ beetmover-signed-langpacks-build-linux-nightly/opt: ToqKjwXvR9aRyjtap_-ADQ
+ beetmover-signed-langpacks-build-linux64-nightly/opt: NusBVJ5zQyuXLaUa2NvE1Q
+ beetmover-signed-langpacks-build-macosx64-nightly/opt: NwWDXJhlQDSvRDs35VY9Eg
+ beetmover-signed-langpacks-build-win32-nightly/opt: WPFILzZqR7GfmFyUkHx7jw
+ beetmover-signed-langpacks-build-win64-nightly/opt: PUc0gQPmROW2mFSuu5BX4A
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-1/opt: HgNXpPwzRs-Op9MdkDd_CQ
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-10/opt: L9tno3VuThO2-4_wsP2xEQ
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-11/opt: WxTF0LoyQZWnm6fTda3vvQ
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-12/opt: Nsy-ad-9QR65Ewpx1DZTkw
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-13/opt: BT7EPC9sTfmHtv0m_T8g_w
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-14/opt: aRAkaNV0SPGovE_oIsQZ7Q
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-15/opt: DEUFxH4rRmKlZLmBtJq7Pg
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-16/opt: IsK0yFVnTCG8_V_ENsOsiA
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-17/opt: U63ff7qjTdmVcjtd1JURRQ
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-18/opt: Ynp8LxFrRUarb-QwkJDDyg
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-19/opt: ThBZAcQJRBmY6EkCaxyhMQ
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-2/opt: NTLUB3wTRPq9hlFvcgYk3w
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-20/opt: QJT3mZuFQZiAaLW9WbYflw
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-3/opt: Z04WT45_QO2x0kV7wnCNiw
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-4/opt: I787Fc0yTB-ksr0WvntCGw
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-5/opt: YADlgGJnTriFd7m08kygbw
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-6/opt: JoMTRva9T2uXAB3Mfkh7oQ
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-7/opt: YfiT4rKPSUyRZf5zmcDLvA
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-8/opt: eZvDWMGYQ3WI2D3Ef9oQWA
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-9/opt: VSG0a7ySSamfjXjUcaPR5g
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-1/opt: azk36HraTXCUVYJ7oku2Yg
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-10/opt: CqI2on3tRUi-doKi5iEaug
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-11/opt: QF7Z3TXHQly7Ihg9jlaqpA
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-12/opt: dhkf1shbSK2JF0MUIHUjEg
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-13/opt: fwNm1xDkRC66yOWLgyNoXw
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-14/opt: WkUWjCy1QBCt0OKdo1fPyQ
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-15/opt: IsyMp_JVT3esfP5yhk7pog
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-16/opt: Kz0WaP_2SvSOYg79Hd3k3A
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-17/opt: N46xAPtrQtGsRgQJLFD4YA
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-18/opt: SRt3pXcXTO6ouhgroL7gZA
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-19/opt: JPPxzh2GQ16fV1gDCwf-aQ
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-2/opt: MlcWxuzsSJODuiqWHwr70A
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-20/opt: JEeRKmspSf6O2sgX_LdOEA
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-3/opt: Pt7DzxvASOGXr8jHhwkgrQ
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-4/opt: VI8-3J09TBO3aeIMe7nxOA
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-5/opt: B3gytGZiTzmtRxonLMgNgA
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-6/opt: Oqq_rW8cSwWuzRV7gE-rOw
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-7/opt: ToBaS7-uR_KRS8rNkRjm5g
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-8/opt: cTW7WGt3QIetIKFSO4ml7w
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-9/opt: dIPOCZRYSmioKQwo0olwyQ
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-1/opt: GSu3v6w3Q6iveDrHJU-j-g
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-10/opt: W57uvEYJR_6M2kTqWNiOMQ
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-11/opt: PpXoqzWnRsaWpoXRzX0tXQ
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-12/opt: PeUzRTwwQuylPRMD3RuZ1g
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-13/opt: JbAlC6wQR2K1PG6XMhWRdQ
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-14/opt: LK3GmKsXSUSGF6x3nIdgKw
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-15/opt: YeZPKM1ORKWUgt2wJ_N0GA
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-16/opt: EXQeUHUoSs2RcIoXvPGo5Q
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-17/opt: GGnuZOA8S1abhtZ21ole6w
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-18/opt: SB7f5glwQIqMXaF9x9h9ew
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-19/opt: Zj3_K_fJQXexfJS-cM4MYA
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-2/opt: BOOj0fujTSu_FKXQEbf1iw
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-20/opt: JpdZlli8TjKeEPUdj8xn8w
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-3/opt: C6XTrpsiT7W7sBMCpaFF3A
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-4/opt: Ix7RDCzyTzqyHFmOuYzuHg
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-5/opt: GUaxD_BGQ-2Zc_YqDEhnNQ
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-6/opt: Xm8SjqipRmmIQKv_DMPSoA
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-7/opt: K9JnK5wOSKa_W85AOBijtA
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-8/opt: XLI4UNESRMWHbPGWq38_NA
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-9/opt: PIYfG1KxTW23_j42yIuN8g
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-ja-JP-mac/opt: d4NGW3L8SFSCBncLKDyzmw
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-1/opt: Wr7v4JPrSyaSXCJyHq1LOQ
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-10/opt: LGPu7NFnSui0-NfUb0_jlQ
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-11/opt: DYA23ClHRRmghnDNPzxySA
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-12/opt: GAz96NF6R_qMK50jBkq6-A
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-13/opt: Hsl-rZWoTHiqNLDISXh6Cw
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-14/opt: MSQ4SsDNRIaPn0jnbePNBA
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-15/opt: JAP2mI6YQ9ua1BoLaCiZGQ
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-16/opt: ARw-7OsYQU6TIkKkBaTvzA
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-17/opt: SVcVbiEcQhCJ0QWo_WqiCA
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-18/opt: Ydu7XqYJQKON-IlTCNwLow
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-19/opt: Kzl6iGdoTGmk30bG22vS9g
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-2/opt: Yvb2mAFUSZqzcoQ9noXoGg
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-20/opt: CgASdaSvRQqs7vXwS_LXyg
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-3/opt: CNNN9qIGRw-fF7TvGDJTzA
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-4/opt: Ss6VQfFvS-qv4m5kytFPxw
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-5/opt: YoCdVAGWR56di23avu1Ndg
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-6/opt: fhkSLu3bSzW8Ij1CIQw98g
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-7/opt: ItsKtytQS3WDKzGcIuwBeg
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-8/opt: ehgneIt6RxyAhTy6-LZzwA
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-9/opt: Y0thOUuWRTCtg6I5zIVMNg
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-1/opt: HfWgTl5gSlyHCAAUE3tYQw
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-10/opt: VgrZcxVnTCmzboAk67Z0kA
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-11/opt: dJYtaTvtS2mDKXBV5IFY4w
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-12/opt: LxPTERvkR0aSY_fBHMoy8Q
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-13/opt: eJwEu0oTSQupUADVlT8xJg
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-14/opt: PF708LP0Q3KRdzOeI8g89A
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-15/opt: LIpBTIW3S3OLT_8WBLsZ7w
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-16/opt: WntNamkYTumijV4iw8gNng
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-17/opt: GnB8SejySNyKC-2q154CSA
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-18/opt: D5EXh-HYRZqis0WY5cBAlw
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-19/opt: ADHRBTyBTfSWNh9ehW1lOg
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-2/opt: NA8XaTL2Tcex1cnZftIfBA
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-20/opt: THGt7LOzRiqj_uuxiG2R0A
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-3/opt: MM4r3QXlSMGc6sjsQu769Q
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-4/opt: Xl8xKPaxQEOfbctl_L24EQ
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-5/opt: XilE8MATT_uQmWzQRNn07Q
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-6/opt: FEMDxp0aQSe7xR08bFNh2w
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-7/opt: IWpg_5u8TEynsl0YcuKXkw
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-8/opt: XhqMvZAFQfOk6c-y3ZOc9w
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-9/opt: aRD-JqixRnumrtxxx0NVMg
+ beetmover-source-firefox-source/opt: TY6KaixBSiiPL1NWm5eu_w
+ build-android-aarch64/opt: fogDjYSnQFyi9I7OrEUfsg
+ build-android-api-16/debug: QMypHF7cShukITJE_1x2aQ
+ build-android-api-16/opt: A_rSgxP7R_qUBjAjt_O4Og
+ build-android-x86-fuzzing/debug: S6B8vrssRoCvnxIKv87nuw
+ build-android-x86/opt: WiY6-CCWRPC0nHwAFK-SYA
+ build-docker-image-android-build: C1xKlL7LR8qUyXuv9FURaQ
+ build-docker-image-debian7-amd64-build: BktGV7LETO2actnAf9J1eA
+ build-docker-image-debian7-base: SL3YzcJLSUmyDUFjQcyTgA
+ build-docker-image-debian7-i386-build: LN3dF9UySoqv1WLAOSipwg
+ build-docker-image-debian7-mozjs-rust-build: LFSZvO4VRIC2mNkzl15ldg
+ build-docker-image-debian9-base: ZP7UvTh0TuaFVi17NbD3dQ
+ build-docker-image-desktop1604-test: CM-YiLLeSK-51h4UAhOY1g
+ build-docker-image-diffoscope: YWcFmqj6SdaerKpnBRYFPQ
+ build-docker-image-fetch: JB9tPBcBRvSWJkNfnuZatQ
+ build-docker-image-firefox-snap: T5wJ7hxrSRKLKnMEyv40nQ
+ build-docker-image-funsize-update-generator: OOEibPI8T_qjq0g1IcqleA
+ build-docker-image-google-play-strings: RPfWLNmRRaGCJOq132wv8w
+ build-docker-image-image_builder: GGZQxjGMQ76boJd4C8E6cw
+ build-docker-image-index-task: DoElvaMqRIO2TpjbV8QBJg
+ build-docker-image-infer-build: B_uWwDCESQWnHDDHjZA_lg
+ build-docker-image-lint: XGNAECEES72AEPxwbO4jKw
+ build-docker-image-mingw32-build: B6SGsr0uQ_OqF3SesxF2Cg
+ build-docker-image-partner-repack: RPU00aTdQaiLOjmw7izftQ
+ build-docker-image-periodic-updates: WkRRBVweTKuQNkWcjeMLJw
+ build-docker-image-pipfile-updates: KoFd2TnRTbafh1AeJAwHZQ
+ build-docker-image-toolchain-build: UVI9gB2fTSOAbySPwvdr-Q
+ build-docker-image-update-verify: CMbXFR28R8SSwDl0GY6NTw
+ build-docker-image-valgrind-build: VU8KwwjGTQGXGMD4ze6j5Q
+ build-linux-devedition-nightly/opt: Yq1JphpyReeSM9EL68GAMw
+ build-linux-devedition-nightly/opt-upload-symbols: cvaWoW0TQO2g17E0CrwWNQ
+ build-linux-nightly/opt: RDIH_DoRR0SI19OHpYpr9w
+ build-linux-nightly/opt-upload-symbols: fXt-jQ1FQ6qerPOValkclQ
+ build-linux/debug: LhIiq80ZSRyJh5nWgkakaA
+ build-linux/opt: MlJof0yJSViJc5WPOQ_Kzw
+ build-linux64-add-on-devel/opt: cNj-u2qSScydVqQcHxpkbw
+ build-linux64-asan-fuzzing/opt: Yiddv4h-RfelllhIyBVACw
+ build-linux64-asan/debug: DuIstl95SDmXI1hpS4PEFA
+ build-linux64-asan/opt: dDp65nmkTZeZ_JVz6br4OA
+ build-linux64-base-toolchains/debug: Y-OBQKLeR0iy4nRrpUd86w
+ build-linux64-base-toolchains/opt: dabFHxrxQDWPxbRmsibZYw
+ build-linux64-devedition-nightly/opt: Ch7R28xCTtiVD2bNb_Uqhg
+ build-linux64-devedition-nightly/opt-upload-symbols: MrbGhgatTI2ixDQGv_Sk8w
+ build-linux64-fuzzing/debug: B3GBuCV7RWOEzQBGBrb4Jw
+ build-linux64-lto/debug: TyFCAH4TS26bxWgwKQAppg
+ build-linux64-lto/opt: Bn1PTtX9T2KgnjjQCCXtOw
+ build-linux64-nightly/opt: bnKwzqskQqm6ZZCXBdwhkg
+ build-linux64-nightly/opt-upload-symbols: QQs2rb5hQFO-kWTa0Qck4w
+ build-linux64-tup/opt: X7itdf16RZaaYJri6Vi3GA
+ build-linux64/debug: CkbmJ_AaT9-N4npxhcDxEQ
+ build-linux64/opt: LfSB5XZwTAyQ0xlOEpanjw
+ build-macosx64-add-on-devel/opt: XVzjO6u2T7CNZfkv7McHTA
+ build-macosx64-asan-fuzzing/opt: N13R5e0rTUuK26Bv-Y0_WA
+ build-macosx64-devedition-nightly/opt: TmSYLLDqSgmDmWwJz0Q32A
+ build-macosx64-devedition-nightly/opt-upload-symbols: b8xft-h9Tl-9BstKJfLHtQ
+ build-macosx64-nightly/opt: H3lphBDASBu7DfUL7q6nIA
+ build-macosx64-nightly/opt-upload-symbols: d_g9WcFnQV-U_QkNgcjCWA
+ build-macosx64/debug: CibCdzr9QLODly5buEeBvw
+ build-macosx64/opt: QdnI0m8OT0O6RYCr5pQzQg
+ build-signing-linux-devedition-nightly/opt: IDXgzz1YQjqIOUi58fSAXA
+ build-signing-linux-nightly/opt: d6zCQKqYQuGc-NPUfv07cw
+ build-signing-linux/opt: ItpjcNpNSd6bixDEx9C7iw
+ build-signing-linux64-devedition-nightly/opt: YLD4T7GPQ9CSXYpgIZNMdg
+ build-signing-linux64-nightly/opt: XsgCutIJT-m7pInRRvjEng
+ build-signing-linux64/opt: MkUAHEf2TvC9sAQCc85qOQ
+ build-signing-macosx64-devedition-nightly/opt: c48Z1W6SSWej6GKi9y1ulg
+ build-signing-macosx64-nightly/opt: B5ih0IxHQSmNxYFtmRsdZA
+ build-signing-macosx64/opt: KTXMo0baSTajy2uH5I4jeA
+ build-signing-win32-devedition-nightly/opt: YnNsokAcR_-mO9EmSogPAw
+ build-signing-win32-nightly/opt: ZmNlSNCZRCK4USJrdgafYA
+ build-signing-win32/debug: JTB77Z-bTtOFV61D1lj04w
+ build-signing-win32/opt: YeFIGUFzT6qSNHG-MYvcTA
+ build-signing-win64-devedition-nightly/opt: AvJjBhCdSTSpsAhWkZ87OA
+ build-signing-win64-nightly/opt: TM5IXIYEQu67IkiPxjT6rQ
+ build-signing-win64/debug: BQjcIVaUQZWRy4JtxmGa8Q
+ build-signing-win64/opt: fT2vRUXgQoqi0to7OhnyCA
+ build-win32-add-on-devel/opt: BncaAWYtQB6Uv8EUuRIiig
+ build-win32-devedition-nightly/opt: fdpUyZNPSeORyYbagJzruw
+ build-win32-devedition-nightly/opt-upload-symbols: MsKyU4K_T7mrBAhVyH2gqQ
+ build-win32-msvc/opt: YTA1D7lQSC-dyJkOvFcUgQ
+ build-win32-nightly/opt: TsJE0biiSeesrZPT9XfxKA
+ build-win32-nightly/opt-upload-symbols: fWhpZoSrQJ6THcT6AgUziw
+ build-win32/debug: a6WMW7xXRyqSvD_q0OStEQ
+ build-win32/opt: YKC_SzyIQy2y83trQ49WQg
+ build-win64-add-on-devel/opt: QGBVLG4XR52vzov-ijV1Dw
+ build-win64-devedition-nightly/opt: RMjxYqpXSsycGMXaTiAu5g
+ build-win64-devedition-nightly/opt-upload-symbols: EkOTxZ8UTyWX7IZJOFGHpA
+ build-win64-msvc/opt: dEwfuZ3LQCeLFxDm8Urtzg
+ build-win64-nightly/opt: Pq8op_xeQGeJjVEc7fgniA
+ build-win64-nightly/opt-upload-symbols: ZRlLB6KhQRmDqR9skFqatQ
+ build-win64/debug: EDHK4shfRKyhAv5cIZihew
+ build-win64/opt: ZVu7UgN0TD65Ds61R0Fcdw
+ checksums-signing-ach-linux-nightly/opt: HKNStYLrSrKG7DAJykDmrg
+ checksums-signing-ach-linux64-nightly/opt: RtAQh6bWR3q3c1pFqrnWtg
+ checksums-signing-ach-macosx64-nightly/opt: NbFo7NSTTE-oDWhBR5QKtw
+ checksums-signing-ach-win32-nightly/opt: WF4LBNq8QOqjVcrOHkl3Dg
+ checksums-signing-ach-win64-nightly/opt: JoP9tg19QqWa1K_ElhLazQ
+ checksums-signing-af-linux-nightly/opt: eq72aFWlT0mp1TAoUgfhcQ
+ checksums-signing-af-linux64-nightly/opt: A3okjsdmRT6_OZhI5vg9Cg
+ checksums-signing-af-macosx64-nightly/opt: DUQBiRUDRQuIhPM_YxQ0aQ
+ checksums-signing-af-win32-nightly/opt: COPyyFCcSYWmCuuHFMksGw
+ checksums-signing-af-win64-nightly/opt: JKkvpoXwSyu6TvhIn1zUng
+ checksums-signing-an-linux-nightly/opt: KtIkudidTBarJzjhwMPwdw
+ checksums-signing-an-linux64-nightly/opt: IOgIAuPiQPWiF2ET2JFk3w
+ checksums-signing-an-macosx64-nightly/opt: EVVOR45rS2Sj2Aj-SQ0v5w
+ checksums-signing-an-win32-nightly/opt: eXv-TvgTR9KzIkLrd9sPeA
+ checksums-signing-an-win64-nightly/opt: ImXcLJIcRxWa6wM6eyFGxg
+ checksums-signing-ar-linux-nightly/opt: W5lR6DHySHyo5IdpBDyu7g
+ checksums-signing-ar-linux64-nightly/opt: TSuHgBl1Qz682yJL5gNHwg
+ checksums-signing-ar-macosx64-nightly/opt: cqnFA8BISJ-u8sQhR-EruQ
+ checksums-signing-ar-win32-nightly/opt: AvLxmxpSToOvWBfhuHxdlQ
+ checksums-signing-ar-win64-nightly/opt: WIlIxVHvSmCSTiLHouts4w
+ checksums-signing-as-linux-nightly/opt: QQtpBg_lTiSNu9xzZtZhcg
+ checksums-signing-as-linux64-nightly/opt: eEdTGktgSOSUoFSvE-M91A
+ checksums-signing-as-macosx64-nightly/opt: awn8_8MaQ9OuDhJNLDa9Xw
+ checksums-signing-as-win32-nightly/opt: YNC4gixaRBeQ5tW863M8oQ
+ checksums-signing-as-win64-nightly/opt: c1_jdf3LQSqQZX6vGQmnvw
+ checksums-signing-ast-linux-nightly/opt: VVPUzyYcQJiUTVLaZCMU1A
+ checksums-signing-ast-linux64-nightly/opt: UD8GTBQBTaWlZNCk4T-dYg
+ checksums-signing-ast-macosx64-nightly/opt: Vc4WzS7HT_6mUs-Inei_qQ
+ checksums-signing-ast-win32-nightly/opt: AKBxeqaUT1-SGTkztHG8FA
+ checksums-signing-ast-win64-nightly/opt: NRm2m2csRoKwdw-dDfPncQ
+ checksums-signing-az-linux-nightly/opt: Q91tq4ZNRWK-xpe7g5F59Q
+ checksums-signing-az-linux64-nightly/opt: XKh60ZcgQ_ySMUxe91Xywg
+ checksums-signing-az-macosx64-nightly/opt: CiwBakUUS2G6WCYN41DEAg
+ checksums-signing-az-win32-nightly/opt: Zvum4MzBT6K_ujzVOayV4w
+ checksums-signing-az-win64-nightly/opt: EXBs7P_XT5-A6m9O0ql_Lg
+ checksums-signing-be-linux-nightly/opt: ScPWb4eFQ5mV5KHTnDp1Ng
+ checksums-signing-be-linux64-nightly/opt: WrW72HpDQJSnAEqgQeNing
+ checksums-signing-be-macosx64-nightly/opt: Uusr2ioMT769xssJUMyo3w
+ checksums-signing-be-win32-nightly/opt: TgMkgTOkRcig2ZKxHBxJzQ
+ checksums-signing-be-win64-nightly/opt: CE33GDsYSLWS3BUiLC0LlQ
+ checksums-signing-bg-linux-nightly/opt: T-Z2UgvTTyShrKnXqVegkA
+ checksums-signing-bg-linux64-nightly/opt: efQAKe6WT8OGofjzw88AeQ
+ checksums-signing-bg-macosx64-nightly/opt: OAQlMt2DQFioEdOF5DShpA
+ checksums-signing-bg-win32-nightly/opt: F5Mc9-z1RF-kXtaW8Dm6Ug
+ checksums-signing-bg-win64-nightly/opt: PL3-TOwxTbaycwS_dW6f5Q
+ checksums-signing-bn-BD-linux-nightly/opt: X-VEPeikTI2ZKNiP8YdaUg
+ checksums-signing-bn-BD-linux64-nightly/opt: QKliapu0QXiTVDD4EMQTMQ
+ checksums-signing-bn-BD-macosx64-nightly/opt: Eiej4DSNSGi5OXIA0za-Hg
+ checksums-signing-bn-BD-win32-nightly/opt: N2rkQ8FpQ6-fXj4met76RA
+ checksums-signing-bn-BD-win64-nightly/opt: GIVwA6NhSfyAAwZ4WpRypg
+ checksums-signing-bn-IN-linux-nightly/opt: FcJ78cV-SguIPd7rae_UFg
+ checksums-signing-bn-IN-linux64-nightly/opt: Z7pBsPXARmOMuoHInwg-iQ
+ checksums-signing-bn-IN-macosx64-nightly/opt: QfOwm2UXRLyz9MiKSp399A
+ checksums-signing-bn-IN-win32-nightly/opt: GHd6r_DHTK6kNzLzxsY79w
+ checksums-signing-bn-IN-win64-nightly/opt: e3ajCwA1S2mpMYkDf5ivPA
+ checksums-signing-br-linux-nightly/opt: RLrWz8yuTCGQQYRNfTN-Kw
+ checksums-signing-br-linux64-nightly/opt: DJPSuB_ISSaxD-LBobTK7g
+ checksums-signing-br-macosx64-nightly/opt: RJSTVKoORTSOWi0bm_1Azg
+ checksums-signing-br-win32-nightly/opt: R0kT6iOBQ4qmYT09N2vHJA
+ checksums-signing-br-win64-nightly/opt: Vx4R5D7NQZeFF9Hqzko4wQ
+ checksums-signing-bs-linux-nightly/opt: fXY3cYBRQi-_CuQvibxTSQ
+ checksums-signing-bs-linux64-nightly/opt: S6rwDE2cTBqRgkogIaOT2w
+ checksums-signing-bs-macosx64-nightly/opt: MiZpEjWySzCRXABn_WcCxw
+ checksums-signing-bs-win32-nightly/opt: AMb-6EixRku0jB0ya_fO5w
+ checksums-signing-bs-win64-nightly/opt: RRZEJDSaTbmW5HqZqDNing
+ checksums-signing-ca-linux-nightly/opt: ZjMNY6U7TvKMEUsI_OAQcw
+ checksums-signing-ca-linux64-nightly/opt: U5t3NvidQbCpjS_MFrt70Q
+ checksums-signing-ca-macosx64-nightly/opt: GHlm35aKSRqa9PAzmmXjeg
+ checksums-signing-ca-win32-nightly/opt: e_NYwiRkSMKOmP1uCw_FVw
+ checksums-signing-ca-win64-nightly/opt: XaxgjpYqSv6kJYXzrmooTw
+ checksums-signing-cak-linux-nightly/opt: cRzDzoQGRkG5kpHfi7Y9LQ
+ checksums-signing-cak-linux64-nightly/opt: d6jIcAebTRiQLxDa-35UMQ
+ checksums-signing-cak-macosx64-nightly/opt: dHCqQflVQP21hAsDFIt89Q
+ checksums-signing-cak-win32-nightly/opt: Eu7EUDO-R4614fXPyxq_GA
+ checksums-signing-cak-win64-nightly/opt: XJW94ufyRXeZJC4x-ciX3w
+ checksums-signing-cs-linux-nightly/opt: FkROwABnQHuS2Bwop8JwhQ
+ checksums-signing-cs-linux64-nightly/opt: bgO4fCrcTzO2AYrdFUw9FQ
+ checksums-signing-cs-macosx64-nightly/opt: P82rfvHWTN6PGpThNF8GKw
+ checksums-signing-cs-win32-nightly/opt: X_Tg-VwGReejsoal-0kS2w
+ checksums-signing-cs-win64-nightly/opt: Q7HqtOljQcKCLPpCO8iTJA
+ checksums-signing-cy-linux-nightly/opt: VSQE8uV3TGaq0i4uF_JEsw
+ checksums-signing-cy-linux64-nightly/opt: dMt4FG74TrS7hjf9NfK7AA
+ checksums-signing-cy-macosx64-nightly/opt: EeJw6HiVSwy9Cr81-kymwg
+ checksums-signing-cy-win32-nightly/opt: EfqXlJ3HRC6Ybsh61QwqpQ
+ checksums-signing-cy-win64-nightly/opt: Ljm2Bw63QXeae1KlZedHgw
+ checksums-signing-da-linux-nightly/opt: RXRFrvGSSZmiVK0Fg05mWg
+ checksums-signing-da-linux64-nightly/opt: QF0ihb1bTba4Qpfv5r_EiA
+ checksums-signing-da-macosx64-nightly/opt: I1sLL8r3Q_ak4R9geDVWuA
+ checksums-signing-da-win32-nightly/opt: cZ4H4bOWSH-JTpFe_koQQA
+ checksums-signing-da-win64-nightly/opt: W_7x77AtRG-uA9a_WLBx6Q
+ checksums-signing-de-linux-nightly/opt: foK2yPyNQNSt79nY-Hcbrw
+ checksums-signing-de-linux64-nightly/opt: RV1ZSnh1RG2754VSfdqgkQ
+ checksums-signing-de-macosx64-nightly/opt: Jg-2OYNBSX6LXk6rA1Xevw
+ checksums-signing-de-win32-nightly/opt: QG-zwVqDQtyDnUWV-AbIiw
+ checksums-signing-de-win64-nightly/opt: HnRv5rjbQua_NAimpjswZw
+ checksums-signing-dsb-linux-nightly/opt: LEex2aRUQKGQjyD6xCR4-w
+ checksums-signing-dsb-linux64-nightly/opt: BOJu_WJxTeKmnmujvJQ1dg
+ checksums-signing-dsb-macosx64-nightly/opt: CfzEO-T8TRGMP6QCdQu3EA
+ checksums-signing-dsb-win32-nightly/opt: TRrnZh4LRFOSpLHSfahgEQ
+ checksums-signing-dsb-win64-nightly/opt: WEKbazzQRSeuwpIeCJQGrg
+ checksums-signing-el-linux-nightly/opt: M27OL5YbSB-QxYeoh24y0Q
+ checksums-signing-el-linux64-nightly/opt: LDj3tXchQGm7pTgw_V6XrA
+ checksums-signing-el-macosx64-nightly/opt: bBDp0s7zQweE6DIfRC3AsA
+ checksums-signing-el-win32-nightly/opt: ZWNZZoM4QTiaXlwGnXOOKA
+ checksums-signing-el-win64-nightly/opt: GaDb9efbQDG1htYnBu-b8w
+ checksums-signing-en-CA-linux-nightly/opt: JSCGpsFZRt6ytsJqVNW43A
+ checksums-signing-en-CA-linux64-nightly/opt: an3Y4AjVSOGeDdODFZ-POQ
+ checksums-signing-en-CA-macosx64-nightly/opt: Vf1glTFcQfyg3H2bYqfaFg
+ checksums-signing-en-CA-win32-nightly/opt: SpBNmVVYTjS1AcnCiHL98w
+ checksums-signing-en-CA-win64-nightly/opt: IgNNSrWdRsCIb5nbAZI_DA
+ checksums-signing-en-GB-linux-nightly/opt: J0oohZg5QaW2pr7HRwdR1w
+ checksums-signing-en-GB-linux64-nightly/opt: PAH5G6bET7S8fAlGX4AWQg
+ checksums-signing-en-GB-macosx64-nightly/opt: K2TdPlJQTAGQfKzuYKZYpA
+ checksums-signing-en-GB-win32-nightly/opt: H3hsyqm-RqKKPFUWzTQt-A
+ checksums-signing-en-GB-win64-nightly/opt: EjdFYTLiTYqKgdx8vrIXkQ
+ checksums-signing-en-ZA-linux-nightly/opt: E6jdORXhQFSvUvDjgdVYbQ
+ checksums-signing-en-ZA-linux64-nightly/opt: Hh-XFLxyTWa36jLpFUFh7w
+ checksums-signing-en-ZA-macosx64-nightly/opt: DbKdGoE3Tb2K0JZ87xclbQ
+ checksums-signing-en-ZA-win32-nightly/opt: VRSMTafUQUCxVRgZawuKpQ
+ checksums-signing-en-ZA-win64-nightly/opt: d_fYfR_eT--5gLeQr9zCyw
+ checksums-signing-eo-linux-nightly/opt: c10LvwFQRR-lTZ7aSJ0LGg
+ checksums-signing-eo-linux64-nightly/opt: dFBsSWgUQRG1t7aOqUkuCQ
+ checksums-signing-eo-macosx64-nightly/opt: ASMxJqQoQyG8z8J8Is4p-w
+ checksums-signing-eo-win32-nightly/opt: LZSZVsJ1QI--xwufjKTNvw
+ checksums-signing-eo-win64-nightly/opt: GlcfhkFSQ0WorxIqng5CjA
+ checksums-signing-es-AR-linux-nightly/opt: RFHuPGujTfa0Yfermu18rw
+ checksums-signing-es-AR-linux64-nightly/opt: YAf9l8_NRNCpIk0EUQYG2Q
+ checksums-signing-es-AR-macosx64-nightly/opt: OyCUJWeNTC-5wyW-TId1TA
+ checksums-signing-es-AR-win32-nightly/opt: WfR62EDUQxSx-SM_ebMD4w
+ checksums-signing-es-AR-win64-nightly/opt: XKvUwQFbSsywwD0rkIzrJw
+ checksums-signing-es-CL-linux-nightly/opt: Vt7srtVKROOchJ6IcRGXtA
+ checksums-signing-es-CL-linux64-nightly/opt: DQxrnKTfThWI2U2KqZaabA
+ checksums-signing-es-CL-macosx64-nightly/opt: Qa4vJ3VcQuiDVWNCRMeI_Q
+ checksums-signing-es-CL-win32-nightly/opt: Fqdlj67_RzSWPJTqVX0rZA
+ checksums-signing-es-CL-win64-nightly/opt: Tn0ASUCNTQyA3_18Ds-AOg
+ checksums-signing-es-ES-linux-nightly/opt: Ad0dDMr3RQGCMFZz_uREsA
+ checksums-signing-es-ES-linux64-nightly/opt: S-cql5JQQx6J-aC_DuWEqw
+ checksums-signing-es-ES-macosx64-nightly/opt: KLBL_oNZRwyzpp0KsfbiWA
+ checksums-signing-es-ES-win32-nightly/opt: Hyowsj-PTkyeZCntSJDvyw
+ checksums-signing-es-ES-win64-nightly/opt: c7h7eKugR6u9N_qp4ohyiA
+ checksums-signing-es-MX-linux-nightly/opt: Qk2mgwUBSzGBO_D2mWKjSw
+ checksums-signing-es-MX-linux64-nightly/opt: Mqs1AkQiRvW8lUVL9x9RyA
+ checksums-signing-es-MX-macosx64-nightly/opt: Po1rg54ASNmypSBKw6jBhA
+ checksums-signing-es-MX-win32-nightly/opt: ZC3wQumLRjKOwBYgil-Seg
+ checksums-signing-es-MX-win64-nightly/opt: DegMguzVQJKqNSehEom-ZQ
+ checksums-signing-et-linux-nightly/opt: IPpncWOFRCOceH9ggMPnhg
+ checksums-signing-et-linux64-nightly/opt: QhOjcRwDSny3r39dZz8JSw
+ checksums-signing-et-macosx64-nightly/opt: L3kedNJpTiK02PGGAOz7Ng
+ checksums-signing-et-win32-nightly/opt: CyTQCY_lQWOXTFwpVeD7sg
+ checksums-signing-et-win64-nightly/opt: eWJNZfZiSCGwQHMsZg0hkg
+ checksums-signing-eu-linux-nightly/opt: NfhiUBRaT1WKakl5QUTByA
+ checksums-signing-eu-linux64-nightly/opt: PtwtE1z5SuO1VbPn_fB3hQ
+ checksums-signing-eu-macosx64-nightly/opt: Yal6avx4S8mud1X6OFHNSg
+ checksums-signing-eu-win32-nightly/opt: JuPjlt2yQvCoKL4JKaEnkg
+ checksums-signing-eu-win64-nightly/opt: WfOIOTh8TfGvEVhsaRrgPw
+ checksums-signing-fa-linux-nightly/opt: Rsl_R9o_RiWoiafYOHH1UA
+ checksums-signing-fa-linux64-nightly/opt: fvZEpS98RzyqqHbj_tAu1A
+ checksums-signing-fa-macosx64-nightly/opt: NbQDYC91SgS1iNfjLyV5WA
+ checksums-signing-fa-win32-nightly/opt: RhkSL3clQYGffrSqjwff9g
+ checksums-signing-fa-win64-nightly/opt: eOuPZO3lSDyOpT7mQDAe1A
+ checksums-signing-ff-linux-nightly/opt: RHBBQxrYS6ya64I5HMU-Jw
+ checksums-signing-ff-linux64-nightly/opt: LrWWqjBNSxWK7r6ObOyxZQ
+ checksums-signing-ff-macosx64-nightly/opt: JrDGqm_8RpOATDVkk8P1eQ
+ checksums-signing-ff-win32-nightly/opt: JW7BqgBiQguzu1WFDms1tg
+ checksums-signing-ff-win64-nightly/opt: GMiyWWQmSFaEVpStinWtnw
+ checksums-signing-fi-linux-nightly/opt: baabxPAkRn6uMQyS8xDwKg
+ checksums-signing-fi-linux64-nightly/opt: akp5PmrpQdukn0cmIUndqA
+ checksums-signing-fi-macosx64-nightly/opt: cjFwbQRaTBy1p-29H-qqkg
+ checksums-signing-fi-win32-nightly/opt: ahyEujfmQN2TSOsCIiv_Pw
+ checksums-signing-fi-win64-nightly/opt: btO0gMexRJG6LJCwCU9JuA
+ checksums-signing-fr-linux-nightly/opt: B3oD2VqqSCeMX5Y5wiw11g
+ checksums-signing-fr-linux64-nightly/opt: aaNspnKdQ0iIKVSrPsqIZA
+ checksums-signing-fr-macosx64-nightly/opt: O8GTvRpuThyw-dpUas6wVA
+ checksums-signing-fr-win32-nightly/opt: IvrBgZITS16Cu4lC0fZCSw
+ checksums-signing-fr-win64-nightly/opt: eErUM2rVQQKf2qRNKCoe8g
+ checksums-signing-fy-NL-linux-nightly/opt: IETrRjJmR9iF2QFzYZSrAA
+ checksums-signing-fy-NL-linux64-nightly/opt: Qi6GBhnkSkKdKb1n-UA-tg
+ checksums-signing-fy-NL-macosx64-nightly/opt: czrCA3RAQASGsvZ8tsvCNg
+ checksums-signing-fy-NL-win32-nightly/opt: Wg6edmNIRSaqtRLpHNm5Rw
+ checksums-signing-fy-NL-win64-nightly/opt: Qbc9Cmm6TLm4rSC6zStTHw
+ checksums-signing-ga-IE-linux-nightly/opt: YoxjkaWET9mxdpEbzOv3Ug
+ checksums-signing-ga-IE-linux64-nightly/opt: V3XBUwMtTbKHVxnABUER5w
+ checksums-signing-ga-IE-macosx64-nightly/opt: N5n9c8WBRKis42q8E2kdpg
+ checksums-signing-ga-IE-win32-nightly/opt: Uu9RaFBaTD61RbBTKbWsqg
+ checksums-signing-ga-IE-win64-nightly/opt: Uxz7xPSLS_uh24GsbyeOtA
+ checksums-signing-gd-linux-nightly/opt: W_IgAa5DRyO0K3y6_HpNUQ
+ checksums-signing-gd-linux64-nightly/opt: TiI4gPpKQomziDrtdN_7zw
+ checksums-signing-gd-macosx64-nightly/opt: Lkv5O2wIQ9uFaKxpZBuTIQ
+ checksums-signing-gd-win32-nightly/opt: Hzm5DWRnRWKSZsi9cXnM8A
+ checksums-signing-gd-win64-nightly/opt: dlslTCzRTuSC_Xj01mPC4A
+ checksums-signing-gl-linux-nightly/opt: TNh4IVcuR1a_qB_gvCdLGg
+ checksums-signing-gl-linux64-nightly/opt: TGXwDYeIRVOQ95GvhrQeqQ
+ checksums-signing-gl-macosx64-nightly/opt: IvA5oC4BRFeRGOQhrXn5Hw
+ checksums-signing-gl-win32-nightly/opt: CiGDypZhRECqF2fJEaz4vQ
+ checksums-signing-gl-win64-nightly/opt: A3I83guHQ4yOLPrfx2LUrQ
+ checksums-signing-gn-linux-nightly/opt: ZzjMrNPNQvGVykifdgW9QA
+ checksums-signing-gn-linux64-nightly/opt: RW0xXsYEQF6Ml_rDicCj1A
+ checksums-signing-gn-macosx64-nightly/opt: S-9Mqeb5TuOjrG1rBZtKkw
+ checksums-signing-gn-win32-nightly/opt: PXRGMjSyRGqstkCb5qKyCw
+ checksums-signing-gn-win64-nightly/opt: L3LBFD-JRpa0KfKPK_RHFg
+ checksums-signing-gu-IN-linux-nightly/opt: Ic35N_2dRsKE-gjyFoPcSw
+ checksums-signing-gu-IN-linux64-nightly/opt: McJQudM6S8uCFaN-pOROqg
+ checksums-signing-gu-IN-macosx64-nightly/opt: QMzFnnGKTIOadvVqcPczzQ
+ checksums-signing-gu-IN-win32-nightly/opt: d2dM_OjgSKGuks5-u4KUQw
+ checksums-signing-gu-IN-win64-nightly/opt: TApNioviSUCNTLG1-KwL9Q
+ checksums-signing-he-linux-nightly/opt: QSZ73IolTnqRLP9GTMXKmg
+ checksums-signing-he-linux64-nightly/opt: IxNSY1GRShSTSjlrHpViYw
+ checksums-signing-he-macosx64-nightly/opt: BNKUpiMgS6Sr1UZi9fU5Vw
+ checksums-signing-he-win32-nightly/opt: XfvtJWDfS4OXBxjH_UX2Fg
+ checksums-signing-he-win64-nightly/opt: NSEvEVFoRRS4IIQJly4B4w
+ checksums-signing-hi-IN-linux-nightly/opt: ZHup7BhuSf2l1cPzoXdXQg
+ checksums-signing-hi-IN-linux64-nightly/opt: DvJJW3i-TcmtKmaIJ0cGRA
+ checksums-signing-hi-IN-macosx64-nightly/opt: VYaVOE93Sji6D5W6gHbCBw
+ checksums-signing-hi-IN-win32-nightly/opt: eavJwkqBSpK16pG0soN_5w
+ checksums-signing-hi-IN-win64-nightly/opt: Jf_KabZeRcGPZQW2f5NuRQ
+ checksums-signing-hr-linux-nightly/opt: OpJ7xw8XTTK8W4TA4NeIKQ
+ checksums-signing-hr-linux64-nightly/opt: Qx_pkeKcSK2cw_Taxm5ELQ
+ checksums-signing-hr-macosx64-nightly/opt: OCWaK7_ASESnR7CmhKYR3A
+ checksums-signing-hr-win32-nightly/opt: Tw2qP8NyTFKpsap7rixXqQ
+ checksums-signing-hr-win64-nightly/opt: eeq4pqxpR5KYUclCVQopsA
+ checksums-signing-hsb-linux-nightly/opt: QKP8f8pbTNquZDtt6k5Cqw
+ checksums-signing-hsb-linux64-nightly/opt: b4U03dj9TqGU2iHKP7Nfew
+ checksums-signing-hsb-macosx64-nightly/opt: UtqoKpTuT7imBFbo1RfnDQ
+ checksums-signing-hsb-win32-nightly/opt: PRUGLxbiQ0uvWmdXbXHNKg
+ checksums-signing-hsb-win64-nightly/opt: EbnbBdq1RGGgyhyW68Ab2g
+ checksums-signing-hu-linux-nightly/opt: P_Go6lRfRaWpa3mS04mjyg
+ checksums-signing-hu-linux64-nightly/opt: E9GD0_d-SqyynOV-W1WadQ
+ checksums-signing-hu-macosx64-nightly/opt: Z1aPTCx4S7SCqCOBedMTMQ
+ checksums-signing-hu-win32-nightly/opt: WwHXZSuOTKS_U6vbmnZYyw
+ checksums-signing-hu-win64-nightly/opt: NkU7iqd0Rkahao614L1_Hw
+ checksums-signing-hy-AM-linux-nightly/opt: I_0JVZerRvuq8tVQFfFRaw
+ checksums-signing-hy-AM-linux64-nightly/opt: S9zM0MDwRaCNzg3VLpBjCQ
+ checksums-signing-hy-AM-macosx64-nightly/opt: Twlo57PkTvCId4ri1CNR8g
+ checksums-signing-hy-AM-win32-nightly/opt: Yxcyed4qT5q355oe9alU4w
+ checksums-signing-hy-AM-win64-nightly/opt: Z1oghly0QOWtT5kN4eazMw
+ checksums-signing-ia-linux-nightly/opt: Vvtv3x7FQha6QEz0sgLUoQ
+ checksums-signing-ia-linux64-nightly/opt: F_lddlF9T-yqKg6j07BWGA
+ checksums-signing-ia-macosx64-nightly/opt: D079DMR6TSCH2brgto6iKQ
+ checksums-signing-ia-win32-nightly/opt: XwtUlGarSViwJJcpyivHQQ
+ checksums-signing-ia-win64-nightly/opt: D34FQgscSbSGm_Prm--N-A
+ checksums-signing-id-linux-nightly/opt: LO4LvHjoSd-1lVB1rC-_DA
+ checksums-signing-id-linux64-nightly/opt: L_gnnigdQwmMcDq9T62kRA
+ checksums-signing-id-macosx64-nightly/opt: FfQ7asCeSzukB61oIICIaw
+ checksums-signing-id-win32-nightly/opt: b-OKvM_ZRVuwKLHN2cQYGQ
+ checksums-signing-id-win64-nightly/opt: A7kAKxnCRmGxAlOP3GcxhA
+ checksums-signing-is-linux-nightly/opt: PPnocV_ASE-qsfbsSL9nPw
+ checksums-signing-is-linux64-nightly/opt: DT7kEEW8TiqpXb8J6R-Jzg
+ checksums-signing-is-macosx64-nightly/opt: YYd1sPP7Q-Wx0aNxMk_Qrg
+ checksums-signing-is-win32-nightly/opt: dtRSWw7UQ_mlvepotDPyYA
+ checksums-signing-is-win64-nightly/opt: djbxuuohTNe7HQPLjdvC5Q
+ checksums-signing-it-linux-nightly/opt: UXX8LcA0SzqJxr5Lw_9etA
+ checksums-signing-it-linux64-nightly/opt: TXsTnqYoQVyLumHWcKms5w
+ checksums-signing-it-macosx64-nightly/opt: YKJKS-OXQma5tRx7MqP1Tg
+ checksums-signing-it-win32-nightly/opt: ctZYCe5ZT-2EJWnthWlHPw
+ checksums-signing-it-win64-nightly/opt: Erak48gXQwy181KqWpB9Vg
+ checksums-signing-ja-JP-mac-macosx64-nightly/opt: LEImBHArStCIXrqicNptsA
+ checksums-signing-ja-linux-nightly/opt: OFfemLg4QhGPUX4t_BW6LA
+ checksums-signing-ja-linux64-nightly/opt: PTGvOEUFTRqDWjudxZctIA
+ checksums-signing-ja-win32-nightly/opt: ectFzahOT_Kn58-vGBp1_g
+ checksums-signing-ja-win64-nightly/opt: Xd2MnHVyTaqTIvCMXO6koA
+ checksums-signing-ka-linux-nightly/opt: B82Nkxy4T1yW8hZzP89z7A
+ checksums-signing-ka-linux64-nightly/opt: IA4-AYnkTb6p3MG-NHKICA
+ checksums-signing-ka-macosx64-nightly/opt: bqDCQwh1Qsijs39xN9g2iA
+ checksums-signing-ka-win32-nightly/opt: Be59chQfQ_WvefGu277xIQ
+ checksums-signing-ka-win64-nightly/opt: Lqk00aY-RaWz-DyB3qK34A
+ checksums-signing-kab-linux-nightly/opt: bQT9b9p-TLq-PWT1rsgFxw
+ checksums-signing-kab-linux64-nightly/opt: FT88Fsq6S_ehnBj80TWP4Q
+ checksums-signing-kab-macosx64-nightly/opt: MSfyynvvT4OEuk6D5eJpkg
+ checksums-signing-kab-win32-nightly/opt: b1-VpkyCTZyF1uC_-rWF_A
+ checksums-signing-kab-win64-nightly/opt: Fe3wC8HPQF26_s9_ZqGm_A
+ checksums-signing-kk-linux-nightly/opt: JUZYDCfaSxeT-otpPBgzjA
+ checksums-signing-kk-linux64-nightly/opt: fl0VxBoASYOgG8mbJE4xvQ
+ checksums-signing-kk-macosx64-nightly/opt: ChukFzmxQa2bK8Ou0oUoUA
+ checksums-signing-kk-win32-nightly/opt: DLek-u6iSkOOAgiclmEMNg
+ checksums-signing-kk-win64-nightly/opt: btPgn-YzQR-lnZu5B-gzbQ
+ checksums-signing-km-linux-nightly/opt: DohZqgCaRLqNk1CVDryryw
+ checksums-signing-km-linux64-nightly/opt: Yoh5sjQVRCe6K9vl8LCLQQ
+ checksums-signing-km-macosx64-nightly/opt: Lr9R_nInQTmB8QGMUDDgZg
+ checksums-signing-km-win32-nightly/opt: HmU4nDB-R8qkiWP-d5C7ng
+ checksums-signing-km-win64-nightly/opt: EgccQ5E8QFqRefDZ8lKxaA
+ checksums-signing-kn-linux-nightly/opt: EBH3OHf-Q_imHokgbwcyiA
+ checksums-signing-kn-linux64-nightly/opt: QNiirMRcTV6wRYkZG-ZBFg
+ checksums-signing-kn-macosx64-nightly/opt: NvtKdjFTT_W7bMI4sMWNkw
+ checksums-signing-kn-win32-nightly/opt: AEIsbCUETYmk6kjnyKCI6w
+ checksums-signing-kn-win64-nightly/opt: Z-tgRViISF23RP42zVJXcQ
+ checksums-signing-ko-linux-nightly/opt: TFaul3h4Roah0CtTPm6UEg
+ checksums-signing-ko-linux64-nightly/opt: brqqptATQl6k5_OLOXPW6Q
+ checksums-signing-ko-macosx64-nightly/opt: XMcwWUxMSc2t-RFzZVZkTA
+ checksums-signing-ko-win32-nightly/opt: a0k8WsusSt6VqYMrHT4coQ
+ checksums-signing-ko-win64-nightly/opt: IcGpD0u_RxiX8JbuRwx0wA
+ checksums-signing-lij-linux-nightly/opt: d6bFppblQlq1RHA_v-C7fw
+ checksums-signing-lij-linux64-nightly/opt: AepAh7e7RJ2qg6usDnwrWA
+ checksums-signing-lij-macosx64-nightly/opt: PIk2u6DxQyCwfH2wf1oBmw
+ checksums-signing-lij-win32-nightly/opt: OHAW45IjQqaabT78R--xDA
+ checksums-signing-lij-win64-nightly/opt: KHmdowjhSNesLdOZx0wU5g
+ checksums-signing-linux-nightly/opt: ErIbYHZ8QoWVS7hQPmj5ug
+ checksums-signing-linux64-nightly/opt: fcO7yaZSQzC8Y6NqyvisiA
+ checksums-signing-lt-linux-nightly/opt: ECEQWq5DS3aSLJvrwShS2A
+ checksums-signing-lt-linux64-nightly/opt: b6-A3Hr5RkSMLRchc-tpbg
+ checksums-signing-lt-macosx64-nightly/opt: PInLkRoWS4iMsJEF1oQQeg
+ checksums-signing-lt-win32-nightly/opt: d0OrwjsARiyT22gUu8JQYA
+ checksums-signing-lt-win64-nightly/opt: OPnefgP4S6yXRVK15P-C2A
+ checksums-signing-lv-linux-nightly/opt: R2Sf78uJSx68HolrSCqZTQ
+ checksums-signing-lv-linux64-nightly/opt: e6j9bz9ARISpWixxWOCCVA
+ checksums-signing-lv-macosx64-nightly/opt: OLEWYbJYROSBnbHdG0bzdg
+ checksums-signing-lv-win32-nightly/opt: Up7RToh9QnOIgto9Y2sZZA
+ checksums-signing-lv-win64-nightly/opt: AIunuKu_SMqd4tkR-7wCPw
+ checksums-signing-macosx64-nightly/opt: Sm8VOZ2JSNCp2o1vhwFFQA
+ checksums-signing-mai-linux-nightly/opt: EVAVAp-SQ4S2emL8uwQ4mA
+ checksums-signing-mai-linux64-nightly/opt: bqxel9RjTQq3p86OpZFYcA
+ checksums-signing-mai-macosx64-nightly/opt: PilDbahdSUC5MUsnIBr0nA
+ checksums-signing-mai-win32-nightly/opt: SiLErbB_RQ2DxZ06PrsTqA
+ checksums-signing-mai-win64-nightly/opt: MwFuGFb4RGmVllVVKmxSVw
+ checksums-signing-mk-linux-nightly/opt: eNbXgoc0R9CEhdxJ6FeWlQ
+ checksums-signing-mk-linux64-nightly/opt: YfHrLIQQTLCPvwLcBNdrIA
+ checksums-signing-mk-macosx64-nightly/opt: VNmYGwL8QU-tAL8j1o3t3g
+ checksums-signing-mk-win32-nightly/opt: baa3s4v0SnqjYckdM-ctDg
+ checksums-signing-mk-win64-nightly/opt: KXC_bm1cTFqMzS2mvWEq2Q
+ checksums-signing-ml-linux-nightly/opt: bnD9orTPT-eCJvydxexQqQ
+ checksums-signing-ml-linux64-nightly/opt: KhzBf8rVQm2CsRF6deUtNA
+ checksums-signing-ml-macosx64-nightly/opt: PVhErE9aTH-kslU6lOLtQw
+ checksums-signing-ml-win32-nightly/opt: XetSCzEoQ2yfJa5dgeI1Ew
+ checksums-signing-ml-win64-nightly/opt: T0QFX40JTCuZA4TrNpgwaw
+ checksums-signing-mr-linux-nightly/opt: FBamX3M4Rn-Gx-88fTAPoA
+ checksums-signing-mr-linux64-nightly/opt: FeQZarnzRvqCQI-sHkoU0g
+ checksums-signing-mr-macosx64-nightly/opt: Wu4RGQ0wSHWHh1Of60Y4eg
+ checksums-signing-mr-win32-nightly/opt: egalbvcDSsqLZH8lDKFXIA
+ checksums-signing-mr-win64-nightly/opt: CjIPsAGHS86TPsaz2RrZnA
+ checksums-signing-ms-linux-nightly/opt: ZPHS2bI6TS2rcuMcsu1qDQ
+ checksums-signing-ms-linux64-nightly/opt: XxOdkxrxTMyfrBfTD-R0aA
+ checksums-signing-ms-macosx64-nightly/opt: K5nRdk92TlSqmMXO3PxRag
+ checksums-signing-ms-win32-nightly/opt: X_S3WVdHRii3hkmiSycIJw
+ checksums-signing-ms-win64-nightly/opt: Vy6EegfXS1SP0X_U9elSwA
+ checksums-signing-my-linux-nightly/opt: fZWKqHUXTt6h03b6xrjokw
+ checksums-signing-my-linux64-nightly/opt: XMLLsp9aTcmwLoz8aLGD5Q
+ checksums-signing-my-macosx64-nightly/opt: GkhnYuK0REyaNDgNYiA99g
+ checksums-signing-my-win32-nightly/opt: dApz9xjlRY6SVajfU1i7_g
+ checksums-signing-my-win64-nightly/opt: JbeUI4e1Szayj00R5QZndQ
+ checksums-signing-nb-NO-linux-nightly/opt: QpGs_mQUSESXBt0g3DTF3w
+ checksums-signing-nb-NO-linux64-nightly/opt: FXvq940oTSekn-OcYDfcyg
+ checksums-signing-nb-NO-macosx64-nightly/opt: EnkxwtnaSjiPUnbhMtjtzw
+ checksums-signing-nb-NO-win32-nightly/opt: CCWFmVfaQ4Ws7kmLf1OOsQ
+ checksums-signing-nb-NO-win64-nightly/opt: Ex2NcUA_T7OyuYQQcTm8KQ
+ checksums-signing-ne-NP-linux-nightly/opt: PYFihC3kQACQZAfHrExIHw
+ checksums-signing-ne-NP-linux64-nightly/opt: RgGUqLoKQR6Gz9GN3GYh-Q
+ checksums-signing-ne-NP-macosx64-nightly/opt: WLBdLMR2SQ-qh2wqohdDBg
+ checksums-signing-ne-NP-win32-nightly/opt: GDhq81HuR7qFSVWo0qTeAQ
+ checksums-signing-ne-NP-win64-nightly/opt: Xd85hF8aS2O4N9GjUzbHYQ
+ checksums-signing-nl-linux-nightly/opt: Lddh06IpT_KpNYbe0ze1jA
+ checksums-signing-nl-linux64-nightly/opt: ASi0blIqSY6oDVv7A7bmSw
+ checksums-signing-nl-macosx64-nightly/opt: dgwb2O8ISkeHHhoWvNnJvQ
+ checksums-signing-nl-win32-nightly/opt: MAcZIW66R0yBoe70GMe5rA
+ checksums-signing-nl-win64-nightly/opt: YAiFqMiTSuWlYSyBJ6pTZw
+ checksums-signing-nn-NO-linux-nightly/opt: Y80UdLkjQq-6j3pv9a7bJg
+ checksums-signing-nn-NO-linux64-nightly/opt: MetJV7p4S0e41mi5EsEPag
+ checksums-signing-nn-NO-macosx64-nightly/opt: Ianc1Pe-Q_OixYytdM7Yqw
+ checksums-signing-nn-NO-win32-nightly/opt: A7IR1cUuQn2V2s-n9eyYag
+ checksums-signing-nn-NO-win64-nightly/opt: QudO4R4pRLGwQWyEzxpVTg
+ checksums-signing-oc-linux-nightly/opt: byjisNBfT3Czcf9YjttsOA
+ checksums-signing-oc-linux64-nightly/opt: f-jOWr43QE-BZz5yQAHuLQ
+ checksums-signing-oc-macosx64-nightly/opt: Myory5CjQSCX49UHaqVs8Q
+ checksums-signing-oc-win32-nightly/opt: dVLb16lFRRmswWungfnLJQ
+ checksums-signing-oc-win64-nightly/opt: bTXzGIA7SGeg4M6uhhH2pw
+ checksums-signing-or-linux-nightly/opt: NSy-QYvsQ5u6OXPbXzJF7w
+ checksums-signing-or-linux64-nightly/opt: OEH4ithFS1ymYTzg_DGyKQ
+ checksums-signing-or-macosx64-nightly/opt: O_Bcb_mZRxSMsN66HM79Cg
+ checksums-signing-or-win32-nightly/opt: B8KiFOCHR5y6RUZC-YxPBg
+ checksums-signing-or-win64-nightly/opt: AjoUoKtMRM-P0vaT9ouDiA
+ checksums-signing-pa-IN-linux-nightly/opt: Natf6ZrUQYyKCz1Y7-CZoQ
+ checksums-signing-pa-IN-linux64-nightly/opt: V3ssux5mQi-UBJGeMOusYQ
+ checksums-signing-pa-IN-macosx64-nightly/opt: ZHoKhyhqTLedbVX9i-sinw
+ checksums-signing-pa-IN-win32-nightly/opt: KfMUlwEESwmFXJu5yd4cWg
+ checksums-signing-pa-IN-win64-nightly/opt: A8N9_364QVGwfFY-tRXMVQ
+ checksums-signing-pl-linux-nightly/opt: VvXWmRTzTwawGSHtmu2NQw
+ checksums-signing-pl-linux64-nightly/opt: BQxpFLqmSyuzRTFgd3WZ0A
+ checksums-signing-pl-macosx64-nightly/opt: Mbxxh0crTy-YCONNcPbC1Q
+ checksums-signing-pl-win32-nightly/opt: dW1jQLOXQjy66IzjhyXfmA
+ checksums-signing-pl-win64-nightly/opt: H7oiDk7FR2eytEcqCz63Yw
+ checksums-signing-pt-BR-linux-nightly/opt: JBzXcACxSRyFifcz3mRzhA
+ checksums-signing-pt-BR-linux64-nightly/opt: OKmgJytgTreLqih_itHiqA
+ checksums-signing-pt-BR-macosx64-nightly/opt: VCX8yIBSRDWCp5yn9HzDdA
+ checksums-signing-pt-BR-win32-nightly/opt: FXVrbjs3S96AVbvzoJdbkg
+ checksums-signing-pt-BR-win64-nightly/opt: QuHN-i9tQ8O49m_fkSMpcQ
+ checksums-signing-pt-PT-linux-nightly/opt: A-ViJvVtRiKf_3QQtONnVA
+ checksums-signing-pt-PT-linux64-nightly/opt: WQaVJmpURr6BHUrL6DxioA
+ checksums-signing-pt-PT-macosx64-nightly/opt: LVZuxiI7TUytrVtldQh-Nw
+ checksums-signing-pt-PT-win32-nightly/opt: Pmecsok3Q6qtHT4GTZMmcA
+ checksums-signing-pt-PT-win64-nightly/opt: Lj6SLhiUTkmDZoSOyXuUWw
+ checksums-signing-rm-linux-nightly/opt: WM2KVp6-TDqPzaKZ9gbkVg
+ checksums-signing-rm-linux64-nightly/opt: ZH0ELrJGRLepu6XAKQPRrA
+ checksums-signing-rm-macosx64-nightly/opt: dq67QwJtRHOzK4f2z7NAPQ
+ checksums-signing-rm-win32-nightly/opt: Gh8C7tqkSACO1ZMZ2gz9YA
+ checksums-signing-rm-win64-nightly/opt: CG7y67oRTNqHnTIH98O5GQ
+ checksums-signing-ro-linux-nightly/opt: O5CU1Ph5Raq47hAWVkt-cQ
+ checksums-signing-ro-linux64-nightly/opt: aZX1sibtS_-0-VTRaLOqcQ
+ checksums-signing-ro-macosx64-nightly/opt: b6SBkllRQWOyiyjg072ZiQ
+ checksums-signing-ro-win32-nightly/opt: EK1hvRWbScWTP7TUyaMUmg
+ checksums-signing-ro-win64-nightly/opt: bCFtwla9TQazKOs3RziAfg
+ checksums-signing-ru-linux-nightly/opt: VxO55FUQSJey9pzJu8QL1g
+ checksums-signing-ru-linux64-nightly/opt: FJQMDPohTkW4YJTqjXviyQ
+ checksums-signing-ru-macosx64-nightly/opt: Xq44GJ7CTZiuIGle9l-n6A
+ checksums-signing-ru-win32-nightly/opt: F4gU6XhfQ7KvdESdRv659g
+ checksums-signing-ru-win64-nightly/opt: ULgxnLgGQ9yJyJT926AtNQ
+ checksums-signing-si-linux-nightly/opt: AoMuekyCRe2ByH4fZIrvhQ
+ checksums-signing-si-linux64-nightly/opt: Jwmu5vfjQ_KesnQxewpIxg
+ checksums-signing-si-macosx64-nightly/opt: eXDTNq5-QROP5e-3j_UUuw
+ checksums-signing-si-win32-nightly/opt: UicdNE_jQ4-h4oraI3VSkQ
+ checksums-signing-si-win64-nightly/opt: G3K9R1DKQg6f4I_mlJg8pg
+ checksums-signing-sk-linux-nightly/opt: EAtlHjF2SU2TE2DV2dc2jw
+ checksums-signing-sk-linux64-nightly/opt: QsZMxtV8QTKGDIn4HOQ-sQ
+ checksums-signing-sk-macosx64-nightly/opt: NbRFCAXtTE2svKgCwgF0Xw
+ checksums-signing-sk-win32-nightly/opt: U5u-nYjLStmOkE_V8nGXdw
+ checksums-signing-sk-win64-nightly/opt: b2coeibQQOay8ytvlZbpPw
+ checksums-signing-sl-linux-nightly/opt: J3zBhoW1RqGLmIdDRPM3_w
+ checksums-signing-sl-linux64-nightly/opt: DfYgMS0jRbCrO4EVow658A
+ checksums-signing-sl-macosx64-nightly/opt: OvvZ4ze_TQ6OIUai-YxGWQ
+ checksums-signing-sl-win32-nightly/opt: QSkW3PwaQXGzqTCcDSB8gg
+ checksums-signing-sl-win64-nightly/opt: RIT2ZWUeQw60qDe1Slhd7A
+ checksums-signing-son-linux-nightly/opt: EpPk_I9-SJ22vwlNoqKqTA
+ checksums-signing-son-linux64-nightly/opt: XSl7CdPZQeiFx2rwDyvyvA
+ checksums-signing-son-macosx64-nightly/opt: HtU7XbfaR9m4_XzTdk6MIw
+ checksums-signing-son-win32-nightly/opt: aLLdzt7EROuavQHGVJfvXQ
+ checksums-signing-son-win64-nightly/opt: RDLF943VQl2weQC4mxxCbw
+ checksums-signing-sq-linux-nightly/opt: OHBS_XFURF-bHitNKIZGKg
+ checksums-signing-sq-linux64-nightly/opt: EcWrj3TrQASvkI4O7J-0BQ
+ checksums-signing-sq-macosx64-nightly/opt: AQCMYGN2Tlm2DazfcXZaSA
+ checksums-signing-sq-win32-nightly/opt: O3-xmTu4S0urh5FhqEsFkg
+ checksums-signing-sq-win64-nightly/opt: XOqXx3AuQCubqPa-TWkAtQ
+ checksums-signing-sr-linux-nightly/opt: bhIKLEvcT-WhkZGRzW_H2g
+ checksums-signing-sr-linux64-nightly/opt: IMDmNM-TQS-2XFz39xkVGQ
+ checksums-signing-sr-macosx64-nightly/opt: V6PYTPjsTvCwiMkaV1Zx-w
+ checksums-signing-sr-win32-nightly/opt: WIXcUD7GQVyhQCmrq4-VaA
+ checksums-signing-sr-win64-nightly/opt: K_4nbyQrQ9OpeKRePuXgYQ
+ checksums-signing-sv-SE-linux-nightly/opt: CTOVgGKiSKqyXf3iIciFDA
+ checksums-signing-sv-SE-linux64-nightly/opt: OGlfN1ueRX6lQsYrdwWnsg
+ checksums-signing-sv-SE-macosx64-nightly/opt: FdRoEjRLTOqXUjypgBzBYg
+ checksums-signing-sv-SE-win32-nightly/opt: Y3dEl91_R1Svee2y3D5zUA
+ checksums-signing-sv-SE-win64-nightly/opt: ENKZhMaYTuS9cS2OhkgHlA
+ checksums-signing-ta-linux-nightly/opt: WWNBHqHQTdOnPxLyrFbdLA
+ checksums-signing-ta-linux64-nightly/opt: Hnz2QMOORqyQPdG2vFMXlA
+ checksums-signing-ta-macosx64-nightly/opt: aHdgSW3iRIuCEyVadT3ZCA
+ checksums-signing-ta-win32-nightly/opt: aFsMvWxjTl23QhGYPcVeng
+ checksums-signing-ta-win64-nightly/opt: XhVDN63vQEukME6nhSiR8w
+ checksums-signing-te-linux-nightly/opt: O2uOJHQxT-WsEx9GwDN7jw
+ checksums-signing-te-linux64-nightly/opt: G0PoNvo_QF25ru3dkEUOFQ
+ checksums-signing-te-macosx64-nightly/opt: BeRheTqRTKm2AHlqBAwGCA
+ checksums-signing-te-win32-nightly/opt: RK-u3qGASoeG7iVc0pCo4A
+ checksums-signing-te-win64-nightly/opt: P2O0vojNQ6-ycwgiKy2Oew
+ checksums-signing-th-linux-nightly/opt: WbhluOk4TyalFR0LwSuWHQ
+ checksums-signing-th-linux64-nightly/opt: fE07mwO8TvaXVguxWVZZ3g
+ checksums-signing-th-macosx64-nightly/opt: Io7pxd_0Sn-xucFkR3PhMw
+ checksums-signing-th-win32-nightly/opt: MwgXxZjUSNmIXBsNeQFWEw
+ checksums-signing-th-win64-nightly/opt: V53tYswzTbSGksYdIsU3DQ
+ checksums-signing-tr-linux-nightly/opt: e_P25-7tSUO3-aEEZOgG3g
+ checksums-signing-tr-linux64-nightly/opt: FoyNh9kKRTWqbsBuB967vA
+ checksums-signing-tr-macosx64-nightly/opt: QvfGI-5eTkiBwkKpW8XsOQ
+ checksums-signing-tr-win32-nightly/opt: W7Qkgg5_Sp2xtb6LDS_JFg
+ checksums-signing-tr-win64-nightly/opt: VswSIuBYR5uczm0EafH0WA
+ checksums-signing-uk-linux-nightly/opt: NeWlbPKrQdedHnJtzWWOzg
+ checksums-signing-uk-linux64-nightly/opt: cujf16CvSOGrZKw7ZSXG5g
+ checksums-signing-uk-macosx64-nightly/opt: HRsQLOZDRwuO8Ku6ZCpHxA
+ checksums-signing-uk-win32-nightly/opt: YGPJ-GHaSZu5e7aqPf5KVA
+ checksums-signing-uk-win64-nightly/opt: c39hlTnlQQmQvqh5NXVPTg
+ checksums-signing-ur-linux-nightly/opt: Crj5gXEQT6yGrD4TK4STOg
+ checksums-signing-ur-linux64-nightly/opt: KxzDifBuQEyHF-F4C5YRNA
+ checksums-signing-ur-macosx64-nightly/opt: BB6bMlQkSEWMwAcwahFbfw
+ checksums-signing-ur-win32-nightly/opt: Xq1_LsO4T9emfXj4n2vDDg
+ checksums-signing-ur-win64-nightly/opt: DyrTulFlTZiQqaQXjUnsZA
+ checksums-signing-uz-linux-nightly/opt: agxhEAxdSlmfsiguJmz6ZA
+ checksums-signing-uz-linux64-nightly/opt: L1aehcqkR3Oq89GG7d0eiA
+ checksums-signing-uz-macosx64-nightly/opt: T8FbY-3ATkqIM4e_jqRrDA
+ checksums-signing-uz-win32-nightly/opt: d0lVoW6qSkWGxIfoLPxdSA
+ checksums-signing-uz-win64-nightly/opt: dvuZdDJnSjizmInGloBQlw
+ checksums-signing-vi-linux-nightly/opt: T_9_tRRmTfStyFQdAKgF6Q
+ checksums-signing-vi-linux64-nightly/opt: YfcSBf7zRS6PzZzQs1_VsQ
+ checksums-signing-vi-macosx64-nightly/opt: epDQOdGPR5mMj1gXTAgtww
+ checksums-signing-vi-win32-nightly/opt: ZAI8u5x0T-GdPXd1uJMyEA
+ checksums-signing-vi-win64-nightly/opt: dsr4Lr0lRLygmCpHXLBqoQ
+ checksums-signing-win32-nightly/opt: aQfV70drRA-29dhZBxF_DA
+ checksums-signing-win64-nightly/opt: KndlrnjKRL-SHsBwv6Rqvw
+ checksums-signing-xh-linux-nightly/opt: dlLsh7GfQT6x-vO7d_ArLg
+ checksums-signing-xh-linux64-nightly/opt: Bb3HxWOoTRWPbNA21b1NkQ
+ checksums-signing-xh-macosx64-nightly/opt: aK8B_2aDSGaTxHf-5Nd9kw
+ checksums-signing-xh-win32-nightly/opt: QCaNAODgRhW5lAgCO-6oDA
+ checksums-signing-xh-win64-nightly/opt: eHV-Mch4THKStRfViVHM9w
+ checksums-signing-zh-CN-linux-nightly/opt: E4P65q9OTDq_pAv3gunjTg
+ checksums-signing-zh-CN-linux64-nightly/opt: dshNTa2jTnij8tNQa_60Yg
+ checksums-signing-zh-CN-macosx64-nightly/opt: BpbGzNKDTK-DmZCbDPhR3g
+ checksums-signing-zh-CN-win32-nightly/opt: FVkZVTGORzmWw2aTEWssuA
+ checksums-signing-zh-CN-win64-nightly/opt: F1ndgAy4RKWRVUVB7WpYKw
+ checksums-signing-zh-TW-linux-nightly/opt: PqQA1ZcKTJCeZGS9IthBlw
+ checksums-signing-zh-TW-linux64-nightly/opt: XTGG5Ec7Rt2omRMoyIa9fQ
+ checksums-signing-zh-TW-macosx64-nightly/opt: cMGpg-IuST-SwugpvEy2PQ
+ checksums-signing-zh-TW-win32-nightly/opt: di1RM6STTHebfM-AfYRY_g
+ checksums-signing-zh-TW-win64-nightly/opt: YEcRN4TuSm2tkcqsg631Vg
+ fetch-binutils-2.25.1: biYr6jzaS0qLYEdV04VsgQ
+ fetch-binutils-2.28.1: Rr4bme6jR367-RJOtXvnwA
+ fetch-binutils-2.31.1: ZZw7z81LQxa3h3WSQGszdQ
+ fetch-cloog-0.18.1: RBIu79TYS_6XZmBdXjBy5Q
+ fetch-gcc-4.9.4: ONRYKCQyQ0OChAuC0dn7Og
+ fetch-gcc-6.4.0: diW7DE6wRqi4T7_gofMf4Q
+ fetch-gmp-5.1.3: Amvm8R65Spue_kEeE66Qtg
+ fetch-isl-0.12.2: FA01rHTTQdmclndY1p9SWQ
+ fetch-isl-0.15: VeBaKhmaT_ypNgF0ea30WQ
+ fetch-mpc-0.8.2: WoamR_8-SByGgpmQlksP3g
+ fetch-mpfr-3.1.5: ZctJp1yBR5OH6TgTcoHZ9Q
+ hazard-linux64-haz/debug: ZtrJ5vnUQt6yWo5Upy5i9A
+ nightly-l10n-linux-nightly-1/opt: M3fma7PWTSCmn0zpybL8PQ
+ nightly-l10n-linux-nightly-10/opt: fWqGYTd_RP-y-1b8R-B_DA
+ nightly-l10n-linux-nightly-11/opt: e4r7V2bIQGu1Z57m57zn4A
+ nightly-l10n-linux-nightly-12/opt: DpIk6MlOSS2AtO2caKOFeQ
+ nightly-l10n-linux-nightly-13/opt: bwEyoHgwTOW2gCUNIpiAqA
+ nightly-l10n-linux-nightly-14/opt: avKg-GvpTKac7lZhHkrd7Q
+ nightly-l10n-linux-nightly-15/opt: SXEK3Ru9Ry2KVmi-xFJecQ
+ nightly-l10n-linux-nightly-16/opt: ZgENtuuhS_6ZWk-A2d-_UA
+ nightly-l10n-linux-nightly-17/opt: M9kCrsbZSgufZAru0yuIqQ
+ nightly-l10n-linux-nightly-18/opt: Kt4WAULxTaeGV-zPpocCBA
+ nightly-l10n-linux-nightly-19/opt: arRWcxmzRsSSSrTeFD6nwQ
+ nightly-l10n-linux-nightly-2/opt: PU-WMys7SMKbpc7Pb1Gq2g
+ nightly-l10n-linux-nightly-20/opt: TPJ1zVoKSEu0BtbkAvK40A
+ nightly-l10n-linux-nightly-3/opt: B4YtpxKWQtO4nLKmIc8_0w
+ nightly-l10n-linux-nightly-4/opt: bvlqFe21Tp-BqG3wmFtqXw
+ nightly-l10n-linux-nightly-5/opt: N9R3QY6qREiBduEHDbO4bw
+ nightly-l10n-linux-nightly-6/opt: N6tzp0LsTkW5QG-ZilYHuQ
+ nightly-l10n-linux-nightly-7/opt: RCSYfW1dSEmQ9rS6MCZbOg
+ nightly-l10n-linux-nightly-8/opt: HM5erlZiQsKPV3L4KH0K9g
+ nightly-l10n-linux-nightly-9/opt: NCu9reHbSKaKqCJ_M5yd8w
+ nightly-l10n-linux64-nightly-1/opt: ZvyQtn96RxiZyCaDjkqHSw
+ nightly-l10n-linux64-nightly-10/opt: Qh7C2Ra0RM6hcTHGQCCPCA
+ nightly-l10n-linux64-nightly-11/opt: I88Zies5QMiT_aH1V_3y-w
+ nightly-l10n-linux64-nightly-12/opt: JOVwKKjiQmaQEevb1OMKbQ
+ nightly-l10n-linux64-nightly-13/opt: eLSfvfSsT5297kSM0o0J9Q
+ nightly-l10n-linux64-nightly-14/opt: RMjOhFTES5mKjc6RT2zVQg
+ nightly-l10n-linux64-nightly-15/opt: R6dlAkl_QsCLzDjCibIznQ
+ nightly-l10n-linux64-nightly-16/opt: BRsT9HDPSleVJEkBDw0rAw
+ nightly-l10n-linux64-nightly-17/opt: TasNIvJaQ9axS1APzIKVdQ
+ nightly-l10n-linux64-nightly-18/opt: Yl5FUrSwQoq2M1rPsrZvvQ
+ nightly-l10n-linux64-nightly-19/opt: Ak03-49gTM2pu0ZCBZNY3Q
+ nightly-l10n-linux64-nightly-2/opt: KLL5HYCRSfKEboKKkmtI9g
+ nightly-l10n-linux64-nightly-20/opt: afZps1V1RIu31_26GClGQA
+ nightly-l10n-linux64-nightly-3/opt: QUDHc3eDRQaeTCz21FBaYg
+ nightly-l10n-linux64-nightly-4/opt: PzF33T1PQnydTpXmSOngyA
+ nightly-l10n-linux64-nightly-5/opt: IW0a4N-2RN-csUW1HZ685Q
+ nightly-l10n-linux64-nightly-6/opt: Bs2RbuVZSS2iCPoYk51ong
+ nightly-l10n-linux64-nightly-7/opt: NBCtAhEgSvmoogT_ssTLxg
+ nightly-l10n-linux64-nightly-8/opt: AHkfpzMqTkuMxHBE2pIIlg
+ nightly-l10n-linux64-nightly-9/opt: OYRfWE3ITrKbOBkD68888A
+ nightly-l10n-macosx64-nightly-1/opt: MJGU52EETjCqDiXp8_dbLg
+ nightly-l10n-macosx64-nightly-10/opt: aEIj6W9_RRaRQ2juf0XTkQ
+ nightly-l10n-macosx64-nightly-11/opt: ILjTOqt8Ttu7LI0KkjxTGA
+ nightly-l10n-macosx64-nightly-12/opt: L7ERVMblRAqqngH_8gKqQw
+ nightly-l10n-macosx64-nightly-13/opt: U9P36EijQMu7aT5x75Bmvg
+ nightly-l10n-macosx64-nightly-14/opt: Y517BHv5RhmYF-PRUYvbfw
+ nightly-l10n-macosx64-nightly-15/opt: AQsMvwytT6uOnEFVUpsgEg
+ nightly-l10n-macosx64-nightly-16/opt: G4zdtxccQuaxm5PmCvUeLQ
+ nightly-l10n-macosx64-nightly-17/opt: cf7zk29mSP-9BFs2gL_5AA
+ nightly-l10n-macosx64-nightly-18/opt: RlWuvgC_QhqlHtIOthwKiA
+ nightly-l10n-macosx64-nightly-19/opt: doIEdwXDR16m3ttyx4QUZg
+ nightly-l10n-macosx64-nightly-2/opt: OFslDtdUROGLvXql5LAQIQ
+ nightly-l10n-macosx64-nightly-20/opt: fSZY8R3PT525MBTERRtdvA
+ nightly-l10n-macosx64-nightly-3/opt: O8UoAIB5TkCYpWSli4BxjA
+ nightly-l10n-macosx64-nightly-4/opt: Z5oe2o9fQset_AjLOgA5Kw
+ nightly-l10n-macosx64-nightly-5/opt: fuXsM7QMQK6P5j4wcKnpCg
+ nightly-l10n-macosx64-nightly-6/opt: T-aRkoWZT2eMpSF10bWuRA
+ nightly-l10n-macosx64-nightly-7/opt: MpGM-fTmTOSdW2xvdmawrg
+ nightly-l10n-macosx64-nightly-8/opt: OwbqeygvTBOiAv-5hEVW2A
+ nightly-l10n-macosx64-nightly-9/opt: MSPETCeXRpCk3DY65qwSKA
+ nightly-l10n-signing-linux-nightly-1/opt: YTPeRAioSYqYS5ZmqRWn1w
+ nightly-l10n-signing-linux-nightly-10/opt: TH6Pu5yNQyS4pGSUAZd4Tg
+ nightly-l10n-signing-linux-nightly-11/opt: HLxlh0cERwCDOfZrm7UZ-A
+ nightly-l10n-signing-linux-nightly-12/opt: Fp9tFiW5R8a0zS15T62cZw
+ nightly-l10n-signing-linux-nightly-13/opt: df2C4bIEQ12JjpLe_9e2qA
+ nightly-l10n-signing-linux-nightly-14/opt: HYO-xU0NT6-7kH7DMyHsqw
+ nightly-l10n-signing-linux-nightly-15/opt: eUrOPg5wTM2-i2XV-7kWIQ
+ nightly-l10n-signing-linux-nightly-16/opt: Altp_eTQQZa39ZvOQpke3A
+ nightly-l10n-signing-linux-nightly-17/opt: Y2jMDKf0RFW-K4vOiBvOgw
+ nightly-l10n-signing-linux-nightly-18/opt: BHYHgFGHTOa0dU_GAJ1EIg
+ nightly-l10n-signing-linux-nightly-19/opt: DoqO8w14Tda7hYGBKbIWjg
+ nightly-l10n-signing-linux-nightly-2/opt: ckWS5YvxThGGkb0bYZL6vA
+ nightly-l10n-signing-linux-nightly-20/opt: NJ6MiF7DS_i_2BCOPkLKCA
+ nightly-l10n-signing-linux-nightly-3/opt: YzoUdy8pQKK64EWDVT15RQ
+ nightly-l10n-signing-linux-nightly-4/opt: Mlmvz9myRzWxKo23hkc-Vg
+ nightly-l10n-signing-linux-nightly-5/opt: RT_9wjj3RIuZd-JSkPLAuQ
+ nightly-l10n-signing-linux-nightly-6/opt: IGiiOO9xQNuNCSVBWeCU9A
+ nightly-l10n-signing-linux-nightly-7/opt: Q3RiB1ElSkWE1S647UpDxQ
+ nightly-l10n-signing-linux-nightly-8/opt: UkbjtdVITUiKgoAlTapt1g
+ nightly-l10n-signing-linux-nightly-9/opt: JEPxCpqvQyefYYnWJShVoA
+ nightly-l10n-signing-linux64-nightly-1/opt: QiX1Z_dfSRKJwIoBhVPEew
+ nightly-l10n-signing-linux64-nightly-10/opt: arKIYpPhRayi7tEShKNYzQ
+ nightly-l10n-signing-linux64-nightly-11/opt: Xp5izAReTimc1JEyIGAd5Q
+ nightly-l10n-signing-linux64-nightly-12/opt: VjEjI4-YQOmn0Ae0vNnSGg
+ nightly-l10n-signing-linux64-nightly-13/opt: HER6wom7RwG-IiXdJCZvNw
+ nightly-l10n-signing-linux64-nightly-14/opt: HTImDNwpTfa8iZT9B3jpdQ
+ nightly-l10n-signing-linux64-nightly-15/opt: RYg6wfYyQciD9lFymyzW2A
+ nightly-l10n-signing-linux64-nightly-16/opt: NPfaGtzSRF-wb1QuXC9o4A
+ nightly-l10n-signing-linux64-nightly-17/opt: Jlp1OG9jSdyy6WnfVM7Ltw
+ nightly-l10n-signing-linux64-nightly-18/opt: YnXbYss5RUqAdlHjINgonQ
+ nightly-l10n-signing-linux64-nightly-19/opt: ZvsVjupxT8qfPhi7MI1VgQ
+ nightly-l10n-signing-linux64-nightly-2/opt: G0EjmjqrSMiuMOoJF8ewTw
+ nightly-l10n-signing-linux64-nightly-20/opt: AtdEPSilRsqlAiA-BH0oUg
+ nightly-l10n-signing-linux64-nightly-3/opt: RYsmO6sqRuum4WpEnFeeEw
+ nightly-l10n-signing-linux64-nightly-4/opt: b7Cl0JCtTKa8zxOnMAso1Q
+ nightly-l10n-signing-linux64-nightly-5/opt: QXmQ_ut7SpasE0DxElVkPQ
+ nightly-l10n-signing-linux64-nightly-6/opt: Tj2KxHHJTXu21ILYS6qMMA
+ nightly-l10n-signing-linux64-nightly-7/opt: H1nZjKVhSVyAnFffJpZe2A
+ nightly-l10n-signing-linux64-nightly-8/opt: QxXcWPsoQzOJqC_ZnLjYeg
+ nightly-l10n-signing-linux64-nightly-9/opt: DDgSsggASymmhIaOsGEVuQ
+ nightly-l10n-signing-macosx64-nightly-1/opt: CcP1H8gVTRKKhH3BcsHFzw
+ nightly-l10n-signing-macosx64-nightly-10/opt: e6zMbtgLRQyyz9K2LNbJQQ
+ nightly-l10n-signing-macosx64-nightly-11/opt: LzL8X3tUT46ODpZMPGGFSA
+ nightly-l10n-signing-macosx64-nightly-12/opt: ZQe-XukVSNmrniRaFAmgLA
+ nightly-l10n-signing-macosx64-nightly-13/opt: ep9ZuJmjS4K-b0PLBhk4vg
+ nightly-l10n-signing-macosx64-nightly-14/opt: XFFxGBL2Rh2wL_hg96zK0g
+ nightly-l10n-signing-macosx64-nightly-15/opt: ex6ti43HS8KJiRroyVsCDw
+ nightly-l10n-signing-macosx64-nightly-16/opt: coTPE8t2Rtm-GWfk1irJxg
+ nightly-l10n-signing-macosx64-nightly-17/opt: c8FA8Z-cRXGSFd8XRObhtA
+ nightly-l10n-signing-macosx64-nightly-18/opt: MRL0zSKwRlmGkuTZnbML4Q
+ nightly-l10n-signing-macosx64-nightly-19/opt: GUD_A2JtQVSIMGdhwlFTcg
+ nightly-l10n-signing-macosx64-nightly-2/opt: ThMQ1LVoSPmTiv9jGJju-w
+ nightly-l10n-signing-macosx64-nightly-20/opt: Qi-e3_3oRo-dr0PUzWm9uw
+ nightly-l10n-signing-macosx64-nightly-3/opt: YqWtmTiUTRmIKm53SMvVRA
+ nightly-l10n-signing-macosx64-nightly-4/opt: LVUTiAu4TG2Wq1WPjxC6HA
+ nightly-l10n-signing-macosx64-nightly-5/opt: DEOOPPJTR2m9p2mxjf6Sjg
+ nightly-l10n-signing-macosx64-nightly-6/opt: Sy_64pFfQx2sCBGgqj8ceg
+ nightly-l10n-signing-macosx64-nightly-7/opt: IHKBFPS9RcmffkMl2ObX2g
+ nightly-l10n-signing-macosx64-nightly-8/opt: Wv1Ip9BgS5W4RhkJ4rJv9A
+ nightly-l10n-signing-macosx64-nightly-9/opt: WgfG86w8SIKN6TOBBOMnHA
+ nightly-l10n-signing-win32-nightly-1/opt: V9mSUcq3S-qNaRX7bXKnsg
+ nightly-l10n-signing-win32-nightly-10/opt: bibb7fhYSeCjxKNpYXy8qg
+ nightly-l10n-signing-win32-nightly-11/opt: SpwVErJ8TVqbFiBLisMctQ
+ nightly-l10n-signing-win32-nightly-12/opt: MjjQOn2MS9-0hws3o_K1mQ
+ nightly-l10n-signing-win32-nightly-13/opt: Egf9AI7FTym1ofDsssq0qw
+ nightly-l10n-signing-win32-nightly-14/opt: ME5Wx-AORVqpdfsjdqXJ9g
+ nightly-l10n-signing-win32-nightly-15/opt: ApB2MQz1Q-ySKAQMs_6Emg
+ nightly-l10n-signing-win32-nightly-16/opt: GnWoiUDMQAC8GXne_1DNxA
+ nightly-l10n-signing-win32-nightly-17/opt: fHU7HknlRhuE8tuRFXWWKA
+ nightly-l10n-signing-win32-nightly-18/opt: Rfq4ucT3Sg2OfZlR-_TxEQ
+ nightly-l10n-signing-win32-nightly-19/opt: erjQfXN2T2uuKKePUVdg8A
+ nightly-l10n-signing-win32-nightly-2/opt: XwX0RyK0Qi66OVi9S06RJg
+ nightly-l10n-signing-win32-nightly-20/opt: QA4UBut6Qz2PStQzB2oF2A
+ nightly-l10n-signing-win32-nightly-3/opt: Ry8RrzSVT92WFk_PHHPoHg
+ nightly-l10n-signing-win32-nightly-4/opt: DoigKNuHSNyos4Xl9E639g
+ nightly-l10n-signing-win32-nightly-5/opt: G47beA9XRTucSHAa5o9EKw
+ nightly-l10n-signing-win32-nightly-6/opt: DPG3JcmHQESC3qJ5ZFv0oA
+ nightly-l10n-signing-win32-nightly-7/opt: IavYtB1ARKC_IIWrZK7ozA
+ nightly-l10n-signing-win32-nightly-8/opt: d75wfLPRRL-tAmupT6iiiA
+ nightly-l10n-signing-win32-nightly-9/opt: f2guqAoPSjGYlHN4Tnv4Lg
+ nightly-l10n-signing-win64-nightly-1/opt: F2Sis7grRoGVnGii96XAzA
+ nightly-l10n-signing-win64-nightly-10/opt: NvnogtchRoCmTIQbcstj4Q
+ nightly-l10n-signing-win64-nightly-11/opt: aM-gXzXIQjaYaN4rfG_iqQ
+ nightly-l10n-signing-win64-nightly-12/opt: PFLA0G-gQuCs2YlQ2REgEA
+ nightly-l10n-signing-win64-nightly-13/opt: MGH2gMFFRLav6MQZ7Y97Cw
+ nightly-l10n-signing-win64-nightly-14/opt: cFsQneyWQXKhKv7vfaLZWQ
+ nightly-l10n-signing-win64-nightly-15/opt: UvbKxmkWRquNcKwcVVdhig
+ nightly-l10n-signing-win64-nightly-16/opt: a6ShH7FvShaJ2ht27eldmA
+ nightly-l10n-signing-win64-nightly-17/opt: SvNDOn7FSqmLyh_IAnDSQw
+ nightly-l10n-signing-win64-nightly-18/opt: QAKsMsHNQWmKUxPQog5qQA
+ nightly-l10n-signing-win64-nightly-19/opt: adDiWeGBQ66yn_xx13wO1A
+ nightly-l10n-signing-win64-nightly-2/opt: M3crvx6yQcerlysnnVixFw
+ nightly-l10n-signing-win64-nightly-20/opt: PBBgBODjSDyYsXCfadWd7g
+ nightly-l10n-signing-win64-nightly-3/opt: MDc3vCZpTuiM_lwEFrJsng
+ nightly-l10n-signing-win64-nightly-4/opt: Iuk7ENqBTmC_tIvKFE-Vmw
+ nightly-l10n-signing-win64-nightly-5/opt: R0MANCi6RKSLsgDc7LUI6Q
+ nightly-l10n-signing-win64-nightly-6/opt: GV5cOk7RTrKBU6qs2meXTQ
+ nightly-l10n-signing-win64-nightly-7/opt: cX_Byl4WQAySUKhgG1Fzyg
+ nightly-l10n-signing-win64-nightly-8/opt: RXx9bnBXR1es5o4oi9tLHw
+ nightly-l10n-signing-win64-nightly-9/opt: Nwu7D-WfT2uQCU-nAbsB-g
+ nightly-l10n-win32-nightly-1/opt: bHQfmDHvQTa0FJPUGdNizA
+ nightly-l10n-win32-nightly-10/opt: REfC9Dt6RIu5JwK9tSH3kg
+ nightly-l10n-win32-nightly-11/opt: MILCs2hcTfOACt0oQPBLww
+ nightly-l10n-win32-nightly-12/opt: ZrMHYAAQRzuMBkFZl8wgnA
+ nightly-l10n-win32-nightly-13/opt: brP6lNvCR0G9YUnQBl2buw
+ nightly-l10n-win32-nightly-14/opt: DCIsaTvlRLCdBB3EXMJHqg
+ nightly-l10n-win32-nightly-15/opt: NosrKgViQl-inKi8ZBRfqQ
+ nightly-l10n-win32-nightly-16/opt: Qdaxx1t2SBiHwbUsprix-A
+ nightly-l10n-win32-nightly-17/opt: bmsjYCNNRvGtO6qigtXQnA
+ nightly-l10n-win32-nightly-18/opt: D3_cRw0uTeazsZT5H0MJ3A
+ nightly-l10n-win32-nightly-19/opt: cSwWdwg1SgyKz7u_850kjQ
+ nightly-l10n-win32-nightly-2/opt: Hza5vp6eTn2E7xzGngXS0g
+ nightly-l10n-win32-nightly-20/opt: LLN14uOeRYOtM9Gk3gaBYQ
+ nightly-l10n-win32-nightly-3/opt: GVRJMmOpQ2iYRhq3oHidxg
+ nightly-l10n-win32-nightly-4/opt: YqqDUOETRK2gKcuthmV-UA
+ nightly-l10n-win32-nightly-5/opt: b3WtcBHbSHWkCtS1iMAFSA
+ nightly-l10n-win32-nightly-6/opt: X3Wf5TUnR_2B6_VQ5Og82A
+ nightly-l10n-win32-nightly-7/opt: VeDgth29Tqm1jHKx2-p2dw
+ nightly-l10n-win32-nightly-8/opt: atjMNEDtTNS1lokgUEFLbQ
+ nightly-l10n-win32-nightly-9/opt: DT89JvzoS2-C-a7HE_nWuw
+ nightly-l10n-win64-nightly-1/opt: BiPWnYYNT8iFjxWgw9dxSQ
+ nightly-l10n-win64-nightly-10/opt: Zq9AiBwCQFudobGgKMsOvQ
+ nightly-l10n-win64-nightly-11/opt: MRi-qjJxSBuehPYJb2CuKw
+ nightly-l10n-win64-nightly-12/opt: bWwcYKxKRsS4D8Rw1znuRA
+ nightly-l10n-win64-nightly-13/opt: ZZcimVyJRK-wet-gjgiGiQ
+ nightly-l10n-win64-nightly-14/opt: OGdkRsr0T66L3cpmwSTn_g
+ nightly-l10n-win64-nightly-15/opt: UNxfUEXESqWX1i_mU2zFsw
+ nightly-l10n-win64-nightly-16/opt: VDf0hUQnR46WoLmSnamptQ
+ nightly-l10n-win64-nightly-17/opt: XknO8Wv4QpmTozAdq_iTWQ
+ nightly-l10n-win64-nightly-18/opt: fSqjl-qoTk-w8UkrJQRd0A
+ nightly-l10n-win64-nightly-19/opt: ZI2_10s6S5K7G7tvaCRDXg
+ nightly-l10n-win64-nightly-2/opt: JRp86glISJCWYQPNA78zAw
+ nightly-l10n-win64-nightly-20/opt: SgqrHoiJQOuST_c8YxuC7Q
+ nightly-l10n-win64-nightly-3/opt: AIa3e0G3SimeOEq7wj9Gyg
+ nightly-l10n-win64-nightly-4/opt: DI7GL9BBS6u4QkJoMbjjZQ
+ nightly-l10n-win64-nightly-5/opt: HoVh0zHJRV6WpIhdB-hw5g
+ nightly-l10n-win64-nightly-6/opt: d2b3VdJuTLqFJUUhH5Rapg
+ nightly-l10n-win64-nightly-7/opt: T2Cv061_R9ufl54hn4EuTA
+ nightly-l10n-win64-nightly-8/opt: FuC6XWdlQK-L1k50iVxicg
+ nightly-l10n-win64-nightly-9/opt: a4hQWQVATCGJA6cAKyP9eQ
+ packages-deb7-automake-1.14: Jcd0sip9SwyED9OT2lF9vA
+ packages-deb7-cmake: GPEoycKQSlyE1LPUmUqnBA
+ packages-deb7-devscripts-2.14: fm8rcOdZQQ6495GsAXaBjg
+ packages-deb7-dh-python: AdGzX_RoSyGAWv095qCYiQ
+ packages-deb7-dpkg-1.17: NbyaKA-8Q26dE_-ItC7iGA
+ packages-deb7-gdb: He0hh3vgSbCq4yS9umIwuQ
+ packages-deb7-git: AYTUNwpBTq6ergMbTQV2pg
+ packages-deb7-make: YVNkvIqIRyyLaa0xHlxFZw
+ packages-deb7-mercurial: cAD-wzUIQRS3MI99JitNHw
+ packages-deb7-ninja: QCiS8QwVRL6Kv1X9KejV2A
+ packages-deb7-python: JfPMDBk8Q6u6HY0oO-ujJA
+ packages-deb7-python-zstandard: MTUOYeGhSACGyJuehw9ezw
+ packages-deb7-python3-defaults: TLO8SLVJRtCIs-PzEW82eg
+ packages-deb7-python3.5: JDvyzYnXR7yrKJIjPEz1CQ
+ packages-deb7-valgrind: eLzgZ3QXQDenrWk2WrKW7w
+ packages-deb7-xz-utils: aY6_78zuS8iTeOH_jsFQqg
+ packages-deb9-mercurial: PJXYDmeAS5q_08Cu_iCkjQ
+ packages-deb9-python-zstandard: ImhF1BThRTKV1Hm93oFNGg
+ partials-ach-linux-nightly/opt: a5c3DbOUSwudgLPdYUDPqg
+ partials-ach-linux64-nightly/opt: OynTzU6UTcCj2XfsbZF96g
+ partials-ach-macosx64-nightly/opt: G4YJEbSZQZyqPY3IWo5AMw
+ partials-ach-win32-nightly/opt: fpkGXG86QO2WU4PByquw1g
+ partials-ach-win64-nightly/opt: OeOMYad2R9W7yFsHcVhz-A
+ partials-af-linux-nightly/opt: LeeAPFqlSTWNhwOof9A3Lw
+ partials-af-linux64-nightly/opt: Fupfx72oT16276yGbE_hhg
+ partials-af-macosx64-nightly/opt: JHUNty-LS4iGnPLSklz_eA
+ partials-af-win32-nightly/opt: VgrLMB8fSjC1L0nxTVbSqQ
+ partials-af-win64-nightly/opt: EpG-zFWgRnOW3ToQfvvehw
+ partials-an-linux-nightly/opt: S8JXISRYRzyPcPJBX15d9Q
+ partials-an-linux64-nightly/opt: MKGGkNzkSvGR9v3pxAJImg
+ partials-an-macosx64-nightly/opt: BUdg94S8QeG1WpfI0jg4Ag
+ partials-an-win32-nightly/opt: JfDN6Q6rTbSJVEDL6eRndg
+ partials-an-win64-nightly/opt: FL30WNa9TJGMiTZmFo6bkQ
+ partials-ar-linux-nightly/opt: LlPQWS5yR-6uhYc55KmVAw
+ partials-ar-linux64-nightly/opt: RNPFgrW2Qz-cyrB4VXewBA
+ partials-ar-macosx64-nightly/opt: KA4Ez41PSauwDfWD9ljI8w
+ partials-ar-win32-nightly/opt: PBMfCeGkRoqUnmBvOTR0Hw
+ partials-ar-win64-nightly/opt: cmRg5g8oTd2YPPiM5nYb2Q
+ partials-as-linux-nightly/opt: d9DHfPOCTZ67hYif3yU_JQ
+ partials-as-linux64-nightly/opt: cd_qg176To2sNpumZ8OmNQ
+ partials-as-macosx64-nightly/opt: fNC9PHLcSEeC8am5G_yHPQ
+ partials-as-win32-nightly/opt: cg8-OeiCTYCjqPSvcg15hQ
+ partials-as-win64-nightly/opt: Gifef01GQrGKn7VV0Lf8vA
+ partials-ast-linux-nightly/opt: XCxCVpb9TT681TaQrcBijQ
+ partials-ast-linux64-nightly/opt: HhF524hRRTC7apSrPmhahw
+ partials-ast-macosx64-nightly/opt: DQjYqBckQBSe22oy5ILKHg
+ partials-ast-win32-nightly/opt: eL4Qj-Z2QrOsw9OcIlZfYQ
+ partials-ast-win64-nightly/opt: Xl5WhwZAToejTPwKkm1Zug
+ partials-az-linux-nightly/opt: KMT9KjBVSs2UN-12cWRyYQ
+ partials-az-linux64-nightly/opt: UBZp2jgFRQCo2lgG1hMJzg
+ partials-az-macosx64-nightly/opt: SKQIwa6PT_aHH-qNTlmxEw
+ partials-az-win32-nightly/opt: LRdu7VpJSBuJP2NyaIAsxA
+ partials-az-win64-nightly/opt: SksxNImDTqKwczakWwqr7g
+ partials-be-linux-nightly/opt: EyYuvz7VRfeiQTnngWnwoA
+ partials-be-linux64-nightly/opt: ZmYr6tmKTrKRqUYdGPaQoA
+ partials-be-macosx64-nightly/opt: JmhcESQ3R6m06iTjK449TA
+ partials-be-win32-nightly/opt: KmZzuVHXSE6XDsyg7R1X6w
+ partials-be-win64-nightly/opt: dqYPPQmFSRWLG-93iqa2FA
+ partials-bg-linux-nightly/opt: FjF9RK1oRHGLYJpiWHMNPg
+ partials-bg-linux64-nightly/opt: ZpzUl8TOQVSKtL3cQcrezw
+ partials-bg-macosx64-nightly/opt: MGlreuskTZSi6kuHMSD2cQ
+ partials-bg-win32-nightly/opt: JnIg1iwUSquBACmxmjtw1g
+ partials-bg-win64-nightly/opt: SeA8xiBTS8aA7_aPBxJHHw
+ partials-bn-BD-linux-nightly/opt: OozYcUJqTZGY8G7apOIUQA
+ partials-bn-BD-linux64-nightly/opt: Wq-DCntASy-kVFDWnI2Aww
+ partials-bn-BD-macosx64-nightly/opt: IiC3VwAZR6ewrpbDQXmKCg
+ partials-bn-BD-win32-nightly/opt: RuIuY1m2Q7WvjQG2yFpJJQ
+ partials-bn-BD-win64-nightly/opt: IByS0pNPT0Cgp8go4BIm1Q
+ partials-bn-IN-linux-nightly/opt: XPuDT6mnRW6esptS8hlgZQ
+ partials-bn-IN-linux64-nightly/opt: B0Pzm7EPQr-a7OPKKrvPQQ
+ partials-bn-IN-macosx64-nightly/opt: L_Qq6W_jTOWKg0jWqfUY7w
+ partials-bn-IN-win32-nightly/opt: XlQj0g98QHidChLKl-tmjw
+ partials-bn-IN-win64-nightly/opt: FcOuMbwLSUmqYrASomwlEw
+ partials-br-linux-nightly/opt: Bp6TqDRITn2tJSUfdYFoww
+ partials-br-linux64-nightly/opt: RIq8YgugT66ifsZRLuTAew
+ partials-br-macosx64-nightly/opt: Df1tytxkR_WHQaaqZqMJrA
+ partials-br-win32-nightly/opt: AM__AdiWSbu-vGSvid6OLQ
+ partials-br-win64-nightly/opt: Bnc_t0ANQtCnZb6eZd7C1g
+ partials-bs-linux-nightly/opt: LlzMgGnwSFGQF29f0XErFg
+ partials-bs-linux64-nightly/opt: A8kHjPdPT5iio3iipRvoXQ
+ partials-bs-macosx64-nightly/opt: Lwgejfj3Tc2RmLPR6ED6IA
+ partials-bs-win32-nightly/opt: f7zkMLsmTXWnMxZpbCTnHA
+ partials-bs-win64-nightly/opt: F5Fqw4i-SBWyqsYZfZ2blg
+ partials-ca-linux-nightly/opt: MOG_FasbR0ik6WiMlMOQyg
+ partials-ca-linux64-nightly/opt: ZRkkQseWRAKzxzUyviFadw
+ partials-ca-macosx64-nightly/opt: PjQQ7SsYSRGpkhTAnoESpw
+ partials-ca-win32-nightly/opt: GmaioaSAQK6wOOZWNPbHCA
+ partials-ca-win64-nightly/opt: aM1GapkeTuGZpG2nPYPNPw
+ partials-cak-linux-nightly/opt: QxmX7uSsTYKLZ2mJcHygPg
+ partials-cak-linux64-nightly/opt: Qr6EMZnUSTqiUJs-l89WXA
+ partials-cak-macosx64-nightly/opt: R4NP1RqMQW2YA0V5S51XEg
+ partials-cak-win32-nightly/opt: SCyueIGqTKKITTIWVwV08w
+ partials-cak-win64-nightly/opt: CYB4LVcLTIKmv6_MJ3_06w
+ partials-cs-linux-nightly/opt: BG1gCoQ1RbiDWCM-w8Ci2w
+ partials-cs-linux64-nightly/opt: A-jECrTzR_SyNWWWUFpyHw
+ partials-cs-macosx64-nightly/opt: asK9C7BgS7yJ1dECYLFYug
+ partials-cs-win32-nightly/opt: RosbAGc4SpaSvXoZgq_Dwg
+ partials-cs-win64-nightly/opt: RXxRn4aoT3qP8vqUGVdhrg
+ partials-cy-linux-nightly/opt: KQ4K0WWnRLKp_ehExpHpoQ
+ partials-cy-linux64-nightly/opt: bWoM0hO5SVOR_T6jZfEt8g
+ partials-cy-macosx64-nightly/opt: KIv9gLmNSdSv35uTJTPZrA
+ partials-cy-win32-nightly/opt: ICQRRS6LT3CS8lEBDGnEug
+ partials-cy-win64-nightly/opt: JMgieSGwRZ-i2xjyP3ru5A
+ partials-da-linux-nightly/opt: Edelai6xRLq2KjkG6oGvZQ
+ partials-da-linux64-nightly/opt: EEQcVmCIQqGuCPx0GJlHwA
+ partials-da-macosx64-nightly/opt: UAxUsv4ITUCAacHUF8FizQ
+ partials-da-win32-nightly/opt: WU1W2cU7RheESkXEkPy9dg
+ partials-da-win64-nightly/opt: VTnxmZGKQL6UvMs0uFL0GA
+ partials-de-linux-nightly/opt: W_LMXUscRbuRHifUdIDJ0w
+ partials-de-linux64-nightly/opt: KA451D30RgG7ULAYckw04g
+ partials-de-macosx64-nightly/opt: H0kHdUlxRA2saGk-hjSnoQ
+ partials-de-win32-nightly/opt: YBBPPUpTS8WgIXEW3dLn5A
+ partials-de-win64-nightly/opt: RsjQhjo-QneVv-OFwNrlHA
+ partials-dsb-linux-nightly/opt: VOIF3-4CSPyKQHS2hv1MSg
+ partials-dsb-linux64-nightly/opt: YPAGrShJSh-qpD-yTdSZoA
+ partials-dsb-macosx64-nightly/opt: Lba2gI5cT_K9pSHXm2anpA
+ partials-dsb-win32-nightly/opt: dkMHYsGzRD22n-GgY83YiQ
+ partials-dsb-win64-nightly/opt: c8lOg-M6Rty6LWG4d6WzlA
+ partials-el-linux-nightly/opt: f7LdDRLhQQq5yhIWP-tPyA
+ partials-el-linux64-nightly/opt: Lq3m2ep7RXOC1B8PYEo4-A
+ partials-el-macosx64-nightly/opt: I05isFpUTXyrV9hk8nZTZg
+ partials-el-win32-nightly/opt: ILSjnJKPTkanSO37LNiHfg
+ partials-el-win64-nightly/opt: Sr4UYmsyQ9-yzzo27tndlg
+ partials-en-CA-linux-nightly/opt: EBbHBa5ASFixmnTBMzHjOA
+ partials-en-CA-linux64-nightly/opt: TKU-G9jwRSClNzZiVcYoxw
+ partials-en-CA-macosx64-nightly/opt: XyZx_PnqSqO7PyvfepoStw
+ partials-en-CA-win32-nightly/opt: ctQ24ZCcQ3KkDCo_lADw6w
+ partials-en-CA-win64-nightly/opt: aAwsFxpYQdO2IGs_PgPSxg
+ partials-en-GB-linux-nightly/opt: BEuOJHT7Tpij-S0Bin5sYg
+ partials-en-GB-linux64-nightly/opt: AEsAmiANQ-C-WsF2uiG1ZA
+ partials-en-GB-macosx64-nightly/opt: WK2mG6ImTuSTgMVmye6-8w
+ partials-en-GB-win32-nightly/opt: eeAJbUNwS3mMk03N9LcLdw
+ partials-en-GB-win64-nightly/opt: HYZseoccTeKQGs-QcSy5aA
+ partials-en-ZA-linux-nightly/opt: JdtiDyFtSPmXkeT39GzY3g
+ partials-en-ZA-linux64-nightly/opt: f6A0Rd5URRSkz6EAysTyoA
+ partials-en-ZA-macosx64-nightly/opt: MVWEoDtCQm6VomCZ6M2YcA
+ partials-en-ZA-win32-nightly/opt: azTwqDL1QtyrpzDzIevJ0w
+ partials-en-ZA-win64-nightly/opt: TilkEQd8Q9u84d_2m9eXfQ
+ partials-eo-linux-nightly/opt: VHYjIGkORv2Qgkzeotg2Lw
+ partials-eo-linux64-nightly/opt: I6ZXG31YQbOkVRfnbU2HjA
+ partials-eo-macosx64-nightly/opt: Y5Js1-ksRMquCNhzVRYFZA
+ partials-eo-win32-nightly/opt: EjGMVcs5RA-nzu06eNME4g
+ partials-eo-win64-nightly/opt: HfsTsGTkR8WzdkgSG2YPgQ
+ partials-es-AR-linux-nightly/opt: YMs-xFcCT3ymfZl6xLGqiw
+ partials-es-AR-linux64-nightly/opt: R_TRW1ABRKGexbMJ_djr0Q
+ partials-es-AR-macosx64-nightly/opt: UNGzfVR1QI-teqPO4b4XRQ
+ partials-es-AR-win32-nightly/opt: buqyTODxRoKDPgnxazMjbg
+ partials-es-AR-win64-nightly/opt: Ce0zo8S7Rz6cycMA3FUeLw
+ partials-es-CL-linux-nightly/opt: cZ8R3J1bR0KXqMKf6UdfVA
+ partials-es-CL-linux64-nightly/opt: LRXXoYzdQTmX8Ma0gschCw
+ partials-es-CL-macosx64-nightly/opt: UhROY_GzRNKJPYlUM2HvWQ
+ partials-es-CL-win32-nightly/opt: IB60vF58RQ21uLCP2zo5bQ
+ partials-es-CL-win64-nightly/opt: WhX3EYcRTk6SJpq-nkLGpQ
+ partials-es-ES-linux-nightly/opt: N4NmcgfuScC0MCp04_FbKw
+ partials-es-ES-linux64-nightly/opt: ZZtsUSz6RM-E44q2IWL5bg
+ partials-es-ES-macosx64-nightly/opt: EYxBcaFGRoO_oYHM09u5Dg
+ partials-es-ES-win32-nightly/opt: PHzzR2qhSBmLdCCL9hYlxA
+ partials-es-ES-win64-nightly/opt: c7DIwCWbTJ-zzVlEKAsjKw
+ partials-es-MX-linux-nightly/opt: DH6z6cLORdm99qDZIksTYQ
+ partials-es-MX-linux64-nightly/opt: PmDG-HmJToiK5Gwp9RjULw
+ partials-es-MX-macosx64-nightly/opt: PvX-emuSSuuKrsh8pC5eSQ
+ partials-es-MX-win32-nightly/opt: VC1N5wt_Qom7BUGoIfW5og
+ partials-es-MX-win64-nightly/opt: W9EOJKu8QomPfz01JXp97A
+ partials-et-linux-nightly/opt: O-S34ARGSjWpJAACPquteA
+ partials-et-linux64-nightly/opt: Rk9T70OASfumIzo32-hPZQ
+ partials-et-macosx64-nightly/opt: Cu1TJKrDTieWhRTjorlFTg
+ partials-et-win32-nightly/opt: E6tmEv0oRtStHkYIi4Nb4A
+ partials-et-win64-nightly/opt: Ncuah8SBRs2aaHICA_8L6g
+ partials-eu-linux-nightly/opt: AlKQZPigT82OiMhN5Ea_lQ
+ partials-eu-linux64-nightly/opt: YlTxK3D5SX2pq28OvWZcvA
+ partials-eu-macosx64-nightly/opt: JvFNctMGTzSHENwpTHULjw
+ partials-eu-win32-nightly/opt: GFng5mFPShiz1lpY93H0cg
+ partials-eu-win64-nightly/opt: b_v5Sd3TQnGrmwZm3KxUfg
+ partials-fa-linux-nightly/opt: dtyCnCxJSWiutrRVWIORkQ
+ partials-fa-linux64-nightly/opt: TFWT9wGHQjSD7ajkTRXRMQ
+ partials-fa-macosx64-nightly/opt: Hj0KpPy6TpmgKXatWy0Wag
+ partials-fa-win32-nightly/opt: JgxvvnE1TDO3GJ_-320S0w
+ partials-fa-win64-nightly/opt: Ssp3AgEhSIKvkIJcEnvxYQ
+ partials-ff-linux-nightly/opt: WuFmUNaORW6ZKfcuuxRV-g
+ partials-ff-linux64-nightly/opt: PFgrdnuUQ42u-x2ci6berQ
+ partials-ff-macosx64-nightly/opt: VfOTGW9HTvGACCoVgW0uUQ
+ partials-ff-win32-nightly/opt: T6aAhxE4T8iskiKjjiymBA
+ partials-ff-win64-nightly/opt: HN9EIKZ1SFWxFkzar6ktvA
+ partials-fi-linux-nightly/opt: N4KdM-qUT2WbwAh7SjtdRA
+ partials-fi-linux64-nightly/opt: b1-SfkszQEuTGrVPHDBwmw
+ partials-fi-macosx64-nightly/opt: cYB8Kp20SROJz5wmTaZqXA
+ partials-fi-win32-nightly/opt: Fh0VZHIhRVqGEGB4haEgZQ
+ partials-fi-win64-nightly/opt: W-yce0q1RzqtwZi0L5skRg
+ partials-fr-linux-nightly/opt: TxupYI60RJ-SPSsaz5t0zg
+ partials-fr-linux64-nightly/opt: ShEUqqv4QN-phl8c2suj8Q
+ partials-fr-macosx64-nightly/opt: X2XblrhtQpSyuAowxrpgHQ
+ partials-fr-win32-nightly/opt: MJM08x6tQeSr2njdjdlIOQ
+ partials-fr-win64-nightly/opt: UcfGlVXvTuK4lPMs7rAG8Q
+ partials-fy-NL-linux-nightly/opt: fkNYTJ8GQzej2Z-1aLbVXg
+ partials-fy-NL-linux64-nightly/opt: CNw1o8kjT6mojDYFwSnUng
+ partials-fy-NL-macosx64-nightly/opt: b7i-shXvT2qjs0tttnJq-g
+ partials-fy-NL-win32-nightly/opt: ChaZkeaHSgyw0O5TInPCPw
+ partials-fy-NL-win64-nightly/opt: BauDbnksR7K6IVQR6KnrdA
+ partials-ga-IE-linux-nightly/opt: ZLJBZUXARoKjmlVirq1wOA
+ partials-ga-IE-linux64-nightly/opt: KgGV7w99TSWqfJDgotmozA
+ partials-ga-IE-macosx64-nightly/opt: Yh_cmp25RvO77rTjEAqpLw
+ partials-ga-IE-win32-nightly/opt: In-oS7U5R1aBTQ9p0aXpVw
+ partials-ga-IE-win64-nightly/opt: JgsMbymHRoSB7VDhGRYopg
+ partials-gd-linux-nightly/opt: AQRGqvy1S4iGVQaSZgne8A
+ partials-gd-linux64-nightly/opt: R6hMwlfBTTmVTUHe25Ag_Q
+ partials-gd-macosx64-nightly/opt: LF_HwS43SceCHqiU6ZNU6g
+ partials-gd-win32-nightly/opt: XXE4sGooTGKVMwrmKbVjQg
+ partials-gd-win64-nightly/opt: KAIhNubSRZiYK8gj0TNjAA
+ partials-gl-linux-nightly/opt: N_EA6bt3Rkuvk7a2vF9jpg
+ partials-gl-linux64-nightly/opt: dadAvkxWTqG32otHnPh7PA
+ partials-gl-macosx64-nightly/opt: WbV5N17aQQm5M_N1w1fVug
+ partials-gl-win32-nightly/opt: UrSgVPL3THq8CpjYknsUtg
+ partials-gl-win64-nightly/opt: PHajEl5sT0GPQMUoW0zccA
+ partials-gn-linux-nightly/opt: RPAXYS1BTC-MizQyYGEc-Q
+ partials-gn-linux64-nightly/opt: TQ61u9QgTBaUe53frtqLVw
+ partials-gn-macosx64-nightly/opt: ASa9cs6cS_uJI_vJn666mg
+ partials-gn-win32-nightly/opt: PL-prStDS46tsnfY-keUnQ
+ partials-gn-win64-nightly/opt: PSSXKsAyS-i5pOvbONjf7w
+ partials-gu-IN-linux-nightly/opt: Ml-SgX4RRx627Ct4ANETtg
+ partials-gu-IN-linux64-nightly/opt: a7cEojv7T9S2sNw1Ur2XZg
+ partials-gu-IN-macosx64-nightly/opt: Uuy5UHg_StugxNySkGc1DQ
+ partials-gu-IN-win32-nightly/opt: ECsUd0YsSTmTilD27pSAcg
+ partials-gu-IN-win64-nightly/opt: QNCOAZuTQ8C_2hfsHkBIKw
+ partials-he-linux-nightly/opt: K4aqEXeqTUe0uNX47ieYWw
+ partials-he-linux64-nightly/opt: Rb3UOHCpRYu25Or90s4sNw
+ partials-he-macosx64-nightly/opt: GRtxYCSFT1iVQv4BFPO-TQ
+ partials-he-win32-nightly/opt: Aro7MFavTOWQHulzm6mMTw
+ partials-he-win64-nightly/opt: RjQEJT-STTKUsl-RuP7SjA
+ partials-hi-IN-linux-nightly/opt: Bk_VrP6FR_aBCCZwIxQfMg
+ partials-hi-IN-linux64-nightly/opt: DoVmle6aSIShprbtio3SDg
+ partials-hi-IN-macosx64-nightly/opt: VgrN5SFwScW5PvZhJVxhEg
+ partials-hi-IN-win32-nightly/opt: TF1oRBmHTROtF4MGZT_z_Q
+ partials-hi-IN-win64-nightly/opt: TWEDmUEjRfC0gRoeeJTvIw
+ partials-hr-linux-nightly/opt: ZCi8s9FaRMuWJyuiEu_2PQ
+ partials-hr-linux64-nightly/opt: BU8qhJyNSBGDw1zMcw-I7w
+ partials-hr-macosx64-nightly/opt: f5iQ3zNaT9CZpxSa81xJGA
+ partials-hr-win32-nightly/opt: EfkSfWCKS0m8LjhPY5RTSw
+ partials-hr-win64-nightly/opt: AFeS6oYuSEKCT5ZPP3Q9tw
+ partials-hsb-linux-nightly/opt: ORqq5dzWQtiZjbnvk5u_CA
+ partials-hsb-linux64-nightly/opt: d0_NvU7gTCuxayzwMwGLgg
+ partials-hsb-macosx64-nightly/opt: WXbDxGC5QSqSSHaWrwpO5Q
+ partials-hsb-win32-nightly/opt: UNFIqs-HTmaNdASOcOr7xQ
+ partials-hsb-win64-nightly/opt: elDC2DjITtyX4Vr5Eq2pjw
+ partials-hu-linux-nightly/opt: PrdItlPvQKy45Yxid9g6og
+ partials-hu-linux64-nightly/opt: IIF5eE_9RfmHUTSjDm-hQw
+ partials-hu-macosx64-nightly/opt: FYtNHdfHTE6TUR7n-x-hLQ
+ partials-hu-win32-nightly/opt: Mh7Rr_qPSBq7II4hlVr_Ig
+ partials-hu-win64-nightly/opt: VC9GyoHMTlax4q0gWsdQyg
+ partials-hy-AM-linux-nightly/opt: GcbumvRiQfiYJVknF3K5nw
+ partials-hy-AM-linux64-nightly/opt: O4-ve_PFSvScMzagb0QZpg
+ partials-hy-AM-macosx64-nightly/opt: CWiqw2Z8R2a5EuOisMcMBw
+ partials-hy-AM-win32-nightly/opt: T66CFfReQxa0WfmRmwWQWw
+ partials-hy-AM-win64-nightly/opt: efCwzyhCTcWl2qN_Ya00Qw
+ partials-ia-linux-nightly/opt: XK_HaMURRyugPlZFiB36rQ
+ partials-ia-linux64-nightly/opt: IMJBKmhkTRGeXdmCoVDP7g
+ partials-ia-macosx64-nightly/opt: X6D4v_7zSiqaR1XNH-jlwg
+ partials-ia-win32-nightly/opt: eHM_T9hzRsuhvSktcqo2iw
+ partials-ia-win64-nightly/opt: BHKKvCYpS56xX9niHohkJQ
+ partials-id-linux-nightly/opt: BISySZYERSStyimfxEfdjA
+ partials-id-linux64-nightly/opt: Ouy00QNIS-2ccKOSo34QTA
+ partials-id-macosx64-nightly/opt: R3UYh550SBmJ2cRq6Clttw
+ partials-id-win32-nightly/opt: KP5mseKFTRuvLWO58VqPnA
+ partials-id-win64-nightly/opt: fSIPFpdxTkioAymIk3oDfw
+ partials-is-linux-nightly/opt: Q0w4Ys0PSW6FgGwfb-7DVg
+ partials-is-linux64-nightly/opt: V4xZbb24RvCayqYmLe1W9g
+ partials-is-macosx64-nightly/opt: QNKJ3eYYQG2n75d1AjtCJA
+ partials-is-win32-nightly/opt: DXKc7iQjTBG9vRkl5Qk5YQ
+ partials-is-win64-nightly/opt: VEXXiVCtRqGeOVnW-XMm5g
+ partials-it-linux-nightly/opt: UzcAkXigQZmNzXRfbxkveQ
+ partials-it-linux64-nightly/opt: WAAJiZj6THujdjb2_GI3ag
+ partials-it-macosx64-nightly/opt: CnFaayYTQc2EQLm2W4MojQ
+ partials-it-win32-nightly/opt: bOPowrHESgqvfJ9XHxYzJw
+ partials-it-win64-nightly/opt: SJIZOi3sQv6I1Bh8hma-ng
+ partials-ja-JP-mac-macosx64-nightly/opt: egxEG__hTJiMFOwjLunXoQ
+ partials-ja-linux-nightly/opt: P5om5b5WRn-t2dNahTMg1g
+ partials-ja-linux64-nightly/opt: Gf_VJvACQL2T5E2KQcWsfg
+ partials-ja-win32-nightly/opt: TntFsN0qQBWBtBnus5iQRg
+ partials-ja-win64-nightly/opt: d4pbtiEcT5eSu2vcmgW2Nw
+ partials-ka-linux-nightly/opt: PZxEiTCIRWSVBSTnS8mDuQ
+ partials-ka-linux64-nightly/opt: V3HGTIG0TE2Fq4Sq3NY42w
+ partials-ka-macosx64-nightly/opt: LNuB1vbmRVeI9HfyfnPPVg
+ partials-ka-win32-nightly/opt: eKgYCQYbQBKuadN_uIQOMg
+ partials-ka-win64-nightly/opt: C3_NWKzXRCGD25XeiUi0yg
+ partials-kab-linux-nightly/opt: btWM0MeKQ5OWIw7TY6RSGg
+ partials-kab-linux64-nightly/opt: Xu7lR9VlTPqUOtRgzQfLlA
+ partials-kab-macosx64-nightly/opt: FRApc9oYQdmd9qbA97ecZg
+ partials-kab-win32-nightly/opt: fSog6IxKQeyCDgkMGaNQVg
+ partials-kab-win64-nightly/opt: dERn9uWCRaG_26Ztj4R8YA
+ partials-kk-linux-nightly/opt: bOqDTMJNQb-hrG2Lxr7m-w
+ partials-kk-linux64-nightly/opt: LyMj-3-YTZCnJMx6aoFhVQ
+ partials-kk-macosx64-nightly/opt: Vv4PgY71RketAPQ_6LVgug
+ partials-kk-win32-nightly/opt: Bh_v5HvBTmejRfpkm5rO8Q
+ partials-kk-win64-nightly/opt: YEIUuWCDQRy4Rw8WsLedTw
+ partials-km-linux-nightly/opt: A4cMzxbURGCjEXzDpji1Rw
+ partials-km-linux64-nightly/opt: WmkpblKbSKWNbgeRDKHnPA
+ partials-km-macosx64-nightly/opt: Zvmb8r1nRTCnvFPgvWQlMg
+ partials-km-win32-nightly/opt: Xk8CzuU2Q0-Dv5EiolMBYA
+ partials-km-win64-nightly/opt: UKK2cTG4T0akkrKTuppqAQ
+ partials-kn-linux-nightly/opt: ONynqXkESpyIJLdWCtkiSA
+ partials-kn-linux64-nightly/opt: WbKjgTZvSQWza24xRhtUCA
+ partials-kn-macosx64-nightly/opt: FASG2KJnT2WpyRMmwL9XrQ
+ partials-kn-win32-nightly/opt: A4APwXEtQMWsJP-Y844j0g
+ partials-kn-win64-nightly/opt: OxZgVmYfT_yAt7xTENn6cg
+ partials-ko-linux-nightly/opt: TkVFPbqxRmahKnEod2kZKQ
+ partials-ko-linux64-nightly/opt: A5Sto0MlT2q5UM0djhTKkw
+ partials-ko-macosx64-nightly/opt: K2rAdU-GR-2JNFQikuKDyg
+ partials-ko-win32-nightly/opt: Vqp8187nSSilR5djUZU-vw
+ partials-ko-win64-nightly/opt: Jl1S8Xf_TfafMoMxPHSlMA
+ partials-lij-linux-nightly/opt: QTP26wigRjuyfl9VUO_hCA
+ partials-lij-linux64-nightly/opt: DSKe_rCpRBiCE3gdeCevaA
+ partials-lij-macosx64-nightly/opt: AFiaAfoWT5q_dA103pD6Zg
+ partials-lij-win32-nightly/opt: LOLUQN95QlmhbCjqhxfnZw
+ partials-lij-win64-nightly/opt: OP_eILVfRremSBAXY0Orrw
+ partials-linux-nightly/opt: Tl-RP__yRoWm_VKLjq30_w
+ partials-linux64-nightly/opt: cDLHP0MXQ3uNOXIhmh0k9A
+ partials-lt-linux-nightly/opt: P7Ilzm94RaaFbiyPKg3ZcA
+ partials-lt-linux64-nightly/opt: OSxZQso2SZWu7xDW8B4FJg
+ partials-lt-macosx64-nightly/opt: MF_UX8cbQD-P2rRLsofluQ
+ partials-lt-win32-nightly/opt: BgjamP0mTNe1z2-ex6AObQ
+ partials-lt-win64-nightly/opt: Une4IYmvQd6SiabisFIkMg
+ partials-lv-linux-nightly/opt: YMsSm4DBQbebmAGCQTpErg
+ partials-lv-linux64-nightly/opt: ISEa7cAuTeSVYRrmmIijjA
+ partials-lv-macosx64-nightly/opt: TazzAAuZRCi6AMZ132Islg
+ partials-lv-win32-nightly/opt: NYIwcPQPRSijrK5mkS2Whg
+ partials-lv-win64-nightly/opt: WSSn31bdSr-vmqz5210dFw
+ partials-macosx64-nightly/opt: GiiT6ppLQCmi04NGHfXGEg
+ partials-mai-linux-nightly/opt: Lsip79SmS-O8O9c8MEmtcg
+ partials-mai-linux64-nightly/opt: F60giUPBQuWuZsrdLQYJuA
+ partials-mai-macosx64-nightly/opt: OfIBLC1eTqq5qqCirlNWmQ
+ partials-mai-win32-nightly/opt: P0FIn53DTsWEFJKAuIRprw
+ partials-mai-win64-nightly/opt: cYuSDhaCTeGpBwTuNIiCtg
+ partials-mk-linux-nightly/opt: VDHS-iUZR86vl2qBz0tAsw
+ partials-mk-linux64-nightly/opt: aQmzWeMBRVeNICX0AsNuow
+ partials-mk-macosx64-nightly/opt: aOy7-RopS8qLrTbpcHlf_A
+ partials-mk-win32-nightly/opt: ITBrrPYwR36LTQZzDUIflw
+ partials-mk-win64-nightly/opt: PuVohVqURU2kG2PN1s4iIg
+ partials-ml-linux-nightly/opt: Xm8yZHj3RVODqwA4PXxtjw
+ partials-ml-linux64-nightly/opt: AUNb3EOpTYaFkkMSAFKNBw
+ partials-ml-macosx64-nightly/opt: ORyCBP16Sf2fxXtVPtEc5g
+ partials-ml-win32-nightly/opt: WDMUQ_XVTWS00aSA6gfL2A
+ partials-ml-win64-nightly/opt: FuKmEcwHQEKgxjr9Boy4Gw
+ partials-mr-linux-nightly/opt: aCcZ8iY1QXCxkwf4Gv7IaQ
+ partials-mr-linux64-nightly/opt: PGKFbGlcRIWUX5W53YaboQ
+ partials-mr-macosx64-nightly/opt: G-7V-SzGRHSFc-ufBlRQPw
+ partials-mr-win32-nightly/opt: YEoT5bYNSxmgcwgu7NYryA
+ partials-mr-win64-nightly/opt: b-1ZeWVnRwmofhUV6HfXBw
+ partials-ms-linux-nightly/opt: T0Buav8lTKGGcc4D4sggDw
+ partials-ms-linux64-nightly/opt: Y58oLf19SLWLkhRAbcvJbQ
+ partials-ms-macosx64-nightly/opt: aJLb5tflQ120f1zQgCVTjw
+ partials-ms-win32-nightly/opt: RlvVfNlLTqmBmPwnYKeUhg
+ partials-ms-win64-nightly/opt: eYP3d-93RbWJrNyw0pcG-A
+ partials-my-linux-nightly/opt: YCrqmWv3R4yYXs0Lzjcogg
+ partials-my-linux64-nightly/opt: M7ZsSqfyTAK8OLRG3Qedkw
+ partials-my-macosx64-nightly/opt: HJ3wrM0gStKhl5xoJh4pBA
+ partials-my-win32-nightly/opt: GSh-iBOqT0mq8Xr49ShwaQ
+ partials-my-win64-nightly/opt: PViOhvw1SnaIoRXWvFJR2w
+ partials-nb-NO-linux-nightly/opt: H8509MOfQm2a0n0VLPP3xw
+ partials-nb-NO-linux64-nightly/opt: ZxVAwHOYSXCZfrRg6FcMnA
+ partials-nb-NO-macosx64-nightly/opt: aNdv8HnITzydC9b1WSvnew
+ partials-nb-NO-win32-nightly/opt: TNWFzvZ-QS6Z3Pi8C5ebhg
+ partials-nb-NO-win64-nightly/opt: Ml8G8JvLQrK4mnElyJEDvg
+ partials-ne-NP-linux-nightly/opt: UsxcyFksT_2rNfk25VlUWQ
+ partials-ne-NP-linux64-nightly/opt: DRSEhc8VRyKkTPGLkIvqeg
+ partials-ne-NP-macosx64-nightly/opt: KzLnyMA7Ryyl-l_0JtTF0A
+ partials-ne-NP-win32-nightly/opt: HpzvQ5s7TlSLMr1ajbq02Q
+ partials-ne-NP-win64-nightly/opt: IYT0A-PnS8CdTHZa3RU0vQ
+ partials-nl-linux-nightly/opt: ElMB-MLjR3qV7dGK_pg1rg
+ partials-nl-linux64-nightly/opt: DHX068zaRHyCROy8x0lDsw
+ partials-nl-macosx64-nightly/opt: fMaW0JFSRVOIQ-ISt6kWdw
+ partials-nl-win32-nightly/opt: Qhf1Aze-SSOCFwyQKCE98Q
+ partials-nl-win64-nightly/opt: HyjXOdKST7GKX3avCY0Cfw
+ partials-nn-NO-linux-nightly/opt: I9SAOxK5QviqVmR8eX-Jqw
+ partials-nn-NO-linux64-nightly/opt: Hy0ePsUeS8aAZ6vaB8DZfA
+ partials-nn-NO-macosx64-nightly/opt: F1_OVm6ITY-osALxjLvUmA
+ partials-nn-NO-win32-nightly/opt: Mm1eCihkSuSfD0PXX4HmMg
+ partials-nn-NO-win64-nightly/opt: RmYhh7-kQlqYZmPOQoxvxA
+ partials-oc-linux-nightly/opt: DBpbLsUIRBGwssSwzuXKfg
+ partials-oc-linux64-nightly/opt: LKlUrMDXRaqW9aVgsS_oNQ
+ partials-oc-macosx64-nightly/opt: V6Y3x_7ySPqOeqEkNefJbw
+ partials-oc-win32-nightly/opt: BOAA0j7dRNGzRd2S0HS0Ig
+ partials-oc-win64-nightly/opt: GoyQLmhZRG609-cEpJEDDg
+ partials-or-linux-nightly/opt: OQTseTWcQTWTXpn5t0l1hA
+ partials-or-linux64-nightly/opt: W8jxDSgYQK6AoQSgXCL4eQ
+ partials-or-macosx64-nightly/opt: XV0NQpteSQigkxw2WKlfkA
+ partials-or-win32-nightly/opt: YTHK8v9ZS_ijrDRS660KTA
+ partials-or-win64-nightly/opt: POOfpWEiSyaYrLIRkdqiDw
+ partials-pa-IN-linux-nightly/opt: UTxKnWhXSkyNvSESHCPo7w
+ partials-pa-IN-linux64-nightly/opt: D9fWTsTNRZO0Bu84cwa19Q
+ partials-pa-IN-macosx64-nightly/opt: NhCD2LgnR1y__BfXrPOtcw
+ partials-pa-IN-win32-nightly/opt: Sc6D38YDR_COlOBvmHyFlQ
+ partials-pa-IN-win64-nightly/opt: ADYwzMNCTQCc8ZOv3CtJrw
+ partials-pl-linux-nightly/opt: dB3De6NrRKOCxR9P8F3bWQ
+ partials-pl-linux64-nightly/opt: FFXiF26jSr6Kfnkurr0lxQ
+ partials-pl-macosx64-nightly/opt: VeCZXJMRSESCz4zDN-Afxw
+ partials-pl-win32-nightly/opt: JqIBOpcbSbGWhSwE6cc24g
+ partials-pl-win64-nightly/opt: JIM9HUVaQ6-qDPR1XIR2AQ
+ partials-pt-BR-linux-nightly/opt: Woi-TPT8R3210ZlUk9Idrg
+ partials-pt-BR-linux64-nightly/opt: A-6J1DE1QXuzYm89LM16zg
+ partials-pt-BR-macosx64-nightly/opt: Vs3MrpbuSWKRR1kbJb0bOQ
+ partials-pt-BR-win32-nightly/opt: dazTOEvCSG6TB3NDQLk2cA
+ partials-pt-BR-win64-nightly/opt: O7PtroRjRJmbQl1ctXe1hg
+ partials-pt-PT-linux-nightly/opt: GX0bD7tLS82ai5LSX8V_Cg
+ partials-pt-PT-linux64-nightly/opt: etJL1kcHSeCeORI1SYXFjQ
+ partials-pt-PT-macosx64-nightly/opt: d2Htf4xbTzmA-9rZqcEeLQ
+ partials-pt-PT-win32-nightly/opt: KQ1DQukCR8C3Y9z50JxwYA
+ partials-pt-PT-win64-nightly/opt: CKueCp8XSgeXxDXqm_NrRA
+ partials-rm-linux-nightly/opt: Iuty04TaTiKuEMAXukbwqw
+ partials-rm-linux64-nightly/opt: E7nOPvS_Rq6ka9DzPXJJYg
+ partials-rm-macosx64-nightly/opt: LOJBiys0RW2BIYyVmiv5NA
+ partials-rm-win32-nightly/opt: eCWfbAxVQ4-BUTQCqp_BbQ
+ partials-rm-win64-nightly/opt: B2yQmXHLRZKqv_9dlK_f6A
+ partials-ro-linux-nightly/opt: CUZhFilIS_W2uCDmQmPMeQ
+ partials-ro-linux64-nightly/opt: JyiPPZ80RNyMMuELtTkpQg
+ partials-ro-macosx64-nightly/opt: EMGuNP82Tmu0VZFGXT0r-A
+ partials-ro-win32-nightly/opt: DTm8MGtTTm2lhwRIeHK_sw
+ partials-ro-win64-nightly/opt: a4qFw5WNSx2VLNvacihEBQ
+ partials-ru-linux-nightly/opt: cTgBcCdiSQ-tVe3kIM_uXg
+ partials-ru-linux64-nightly/opt: R26YS745TImC8wv1jh1zMQ
+ partials-ru-macosx64-nightly/opt: LUgJPl60RN2AbRYlUcqapw
+ partials-ru-win32-nightly/opt: e42u1h2gTTCDg_3DjbbG1Q
+ partials-ru-win64-nightly/opt: LMqZ7hdAQVGVKU4irCHCTg
+ partials-si-linux-nightly/opt: eYhNIhonT-icoSn7JwyR4g
+ partials-si-linux64-nightly/opt: KM_plii9QZaAMrzuBpc_tg
+ partials-si-macosx64-nightly/opt: UqeVh2X6RB2aeeaueZeUOw
+ partials-si-win32-nightly/opt: ZZpKLBUlSlKw9dXte3d1xg
+ partials-si-win64-nightly/opt: YPQSmk08ScmEuNbspPL2Lw
+ partials-signing-ach-linux-nightly/opt: HFagEw5PRHWko0LcSoNzsw
+ partials-signing-ach-linux64-nightly/opt: EA4Z7LKVRf-oSGUJ2qIo9g
+ partials-signing-ach-macosx64-nightly/opt: cYc-ETRJT-2ifpYolV6RWg
+ partials-signing-ach-win32-nightly/opt: CK6XYlXnTg2ddGOvvQwQ2w
+ partials-signing-ach-win64-nightly/opt: KBtczv6YTdegeegD30FU5w
+ partials-signing-af-linux-nightly/opt: H6_5duA4SquJnxCVSPCAKQ
+ partials-signing-af-linux64-nightly/opt: D6L560D5SJGpwCzRsFBUKQ
+ partials-signing-af-macosx64-nightly/opt: QpfXW3h3RTKVgk0NyDZwhQ
+ partials-signing-af-win32-nightly/opt: GlUhGbiEQhizNjub1v7VxQ
+ partials-signing-af-win64-nightly/opt: FgkXgoDeSdyYwLBliaS9mw
+ partials-signing-an-linux-nightly/opt: LkJsluZdQAmDxL0pt25aGQ
+ partials-signing-an-linux64-nightly/opt: XhRchsuFTv2wM9yKa2NNiQ
+ partials-signing-an-macosx64-nightly/opt: DuqA1rfhRbqvmFPjd7NIjg
+ partials-signing-an-win32-nightly/opt: YVGXtH8YRT6veIz34kWyMA
+ partials-signing-an-win64-nightly/opt: RT4bmOkEQzmJERVzWmzC0A
+ partials-signing-ar-linux-nightly/opt: KXcxo6UPQXiSCDgHaUqyzw
+ partials-signing-ar-linux64-nightly/opt: e_zXs8UiRCeHHutXWfAenQ
+ partials-signing-ar-macosx64-nightly/opt: Obys75-8RyuY6pu0sAbsAQ
+ partials-signing-ar-win32-nightly/opt: a_GJS6KhSWGq1FopDtBUlw
+ partials-signing-ar-win64-nightly/opt: a_WIZC8cSNinUijvPQgpFg
+ partials-signing-as-linux-nightly/opt: YEwEf0ZfTPKdOIe4hpAW8g
+ partials-signing-as-linux64-nightly/opt: KWsbcX_gTWOyrxDswl1Y1Q
+ partials-signing-as-macosx64-nightly/opt: Uk6SVnrlRDWMp6UtTdJ1oQ
+ partials-signing-as-win32-nightly/opt: F6rgRPTyS6efVZQHTr0sXQ
+ partials-signing-as-win64-nightly/opt: SxqzQXFCSp-Sx0PhVfFn0Q
+ partials-signing-ast-linux-nightly/opt: HfkVK97ISYGByQ1Hlio57w
+ partials-signing-ast-linux64-nightly/opt: EEZWFezOSWy5N2h74zpULA
+ partials-signing-ast-macosx64-nightly/opt: XI1QB5WhQTeOCMC-hh-AxQ
+ partials-signing-ast-win32-nightly/opt: L1IVg43UTRmL419hX5_PCw
+ partials-signing-ast-win64-nightly/opt: e7Z6oBnRQYOCfuBK221qNA
+ partials-signing-az-linux-nightly/opt: MQS3QvTSQoGaB5xIMV6vEA
+ partials-signing-az-linux64-nightly/opt: Ha1J4_z8QqSmGdRQxay5RQ
+ partials-signing-az-macosx64-nightly/opt: RBnRVYqeSoKeHb3o1YRLkQ
+ partials-signing-az-win32-nightly/opt: NiGMcATEQM-q0GCYImimXg
+ partials-signing-az-win64-nightly/opt: AON1fwXjT0qRXec4SeINLA
+ partials-signing-be-linux-nightly/opt: O0UIHhJuSkKkcCn6dsx_2Q
+ partials-signing-be-linux64-nightly/opt: QkxIo9bZTxK2Kx7eCxLBOw
+ partials-signing-be-macosx64-nightly/opt: YTVJd7S_S1CO8ika0lrNYA
+ partials-signing-be-win32-nightly/opt: M11M0QkWQzivmPqIycUFxQ
+ partials-signing-be-win64-nightly/opt: RtZpj-kkQOykwwI-FGuQAw
+ partials-signing-bg-linux-nightly/opt: BVAMwcSRS8SICXv-UsFVgQ
+ partials-signing-bg-linux64-nightly/opt: U5X48KjBRbmtz_sO0nVXww
+ partials-signing-bg-macosx64-nightly/opt: A1WVequiT3G1rR4zV_b0dQ
+ partials-signing-bg-win32-nightly/opt: QShPE4XEQbqxDf4oxgI7wQ
+ partials-signing-bg-win64-nightly/opt: Y5xCchOkSwqNCuAQZg_IQQ
+ partials-signing-bn-BD-linux-nightly/opt: GYHH1qzzQNOShwSuMPT_dA
+ partials-signing-bn-BD-linux64-nightly/opt: I8wsKm7dTDWIA644pQ8jIg
+ partials-signing-bn-BD-macosx64-nightly/opt: Y_IKp-vMSZ-IGAaHcMIuiQ
+ partials-signing-bn-BD-win32-nightly/opt: Kr0U-_iyTUubL0HujNwzrA
+ partials-signing-bn-BD-win64-nightly/opt: HM1N7b6BQT-IjC7-4Y6RSA
+ partials-signing-bn-IN-linux-nightly/opt: eLGyl7IpRju1MLbgf96VvQ
+ partials-signing-bn-IN-linux64-nightly/opt: XNHyuOBZTROV7DKzkh_Cfg
+ partials-signing-bn-IN-macosx64-nightly/opt: Hw9aEoUzS2S9cqD7Ky8s4g
+ partials-signing-bn-IN-win32-nightly/opt: ewoQX_S7RbCKcdmLN_n5_w
+ partials-signing-bn-IN-win64-nightly/opt: DVRPhidlQzm-urNjwa36vA
+ partials-signing-br-linux-nightly/opt: Ko4bJKcbSUWEn0NWpr02Qg
+ partials-signing-br-linux64-nightly/opt: LLVobCTFQnWxCkrL1TRpNw
+ partials-signing-br-macosx64-nightly/opt: SodLk-Y3RxmXtlQr37TJOA
+ partials-signing-br-win32-nightly/opt: RArn2yHQSWSBotx3R6_tBw
+ partials-signing-br-win64-nightly/opt: eu4ZKfL2QJGAwFUFBXSd3Q
+ partials-signing-bs-linux-nightly/opt: EPC2N4JyRnOWMYusK5NHIg
+ partials-signing-bs-linux64-nightly/opt: Qmo0WSmlS6m6idyP2xLYUg
+ partials-signing-bs-macosx64-nightly/opt: eWvbs-u-QT-cc8rhCZQytA
+ partials-signing-bs-win32-nightly/opt: BrA99_dwSVKmxyDkYFU2kQ
+ partials-signing-bs-win64-nightly/opt: HEJdG0cRSum5JMTUhQMCOA
+ partials-signing-ca-linux-nightly/opt: ZcVFIKpURKqqxNfdpSjRRw
+ partials-signing-ca-linux64-nightly/opt: TAphjdjiT2G7XLLpeC7kfg
+ partials-signing-ca-macosx64-nightly/opt: LsiLNm6sRuSr0zJYFPJWpQ
+ partials-signing-ca-win32-nightly/opt: GDGSd5lESLuCkIkAYlYRdg
+ partials-signing-ca-win64-nightly/opt: Wpy5EApfSe2bQhuvf_ZOmw
+ partials-signing-cak-linux-nightly/opt: HiHNbu-8QUWe_BUCLF7jkQ
+ partials-signing-cak-linux64-nightly/opt: fHlNwIRQSr2VjN5xexZ2Gg
+ partials-signing-cak-macosx64-nightly/opt: I0gqfrupSdmXR0X2lJXysg
+ partials-signing-cak-win32-nightly/opt: f7aafgJeS9Sdf8qMaMfDow
+ partials-signing-cak-win64-nightly/opt: cxow05HzSviZ-IkGdYO4qA
+ partials-signing-cs-linux-nightly/opt: OO8zctuNRrSdqEVNUWXV9w
+ partials-signing-cs-linux64-nightly/opt: BNr7mSXsTmCYL0MaauQo_w
+ partials-signing-cs-macosx64-nightly/opt: Cf25-AqCRuCiK6_NFtWzEQ
+ partials-signing-cs-win32-nightly/opt: T8FZdsJxTwurlOKi9J7JWg
+ partials-signing-cs-win64-nightly/opt: JEIbFVeAQeKNPNEGe4mJlw
+ partials-signing-cy-linux-nightly/opt: LzWo0-C1Sj6xQ1I9gP5clw
+ partials-signing-cy-linux64-nightly/opt: fbwNi0btTIGvQDLAKsHuiA
+ partials-signing-cy-macosx64-nightly/opt: WCOoDBq2TQaCttDN_6znzA
+ partials-signing-cy-win32-nightly/opt: KQvBxnirTYKG4xNP00VXwQ
+ partials-signing-cy-win64-nightly/opt: AwMafUj-R92xuGdiCkUJFg
+ partials-signing-da-linux-nightly/opt: Bbsdc8FnT2ay9YbRdvM0_g
+ partials-signing-da-linux64-nightly/opt: Hu1zrfBQQ1KF91hKGW9UHg
+ partials-signing-da-macosx64-nightly/opt: JkfUpPYiT4qCz4ttUR65mQ
+ partials-signing-da-win32-nightly/opt: VgMJX9OpRPW89fopuCgcWA
+ partials-signing-da-win64-nightly/opt: GKGjqNjsT6yQyKsyJPZlmg
+ partials-signing-de-linux-nightly/opt: QylCEFarT_ypOPwGOT6LLA
+ partials-signing-de-linux64-nightly/opt: Ud0hPUXHSH2fqpwCUnin5w
+ partials-signing-de-macosx64-nightly/opt: ddGuSWhsQ0i3GFaG9Ymd4Q
+ partials-signing-de-win32-nightly/opt: IVIf__2NRIiuL82xxtEjEg
+ partials-signing-de-win64-nightly/opt: S3c7_TuaTKi8ZvKz_pdHbg
+ partials-signing-dsb-linux-nightly/opt: RxwnY4l6T9CEIl9XEZdnuA
+ partials-signing-dsb-linux64-nightly/opt: ZGgYj0B-Qd2wupmwKr9eww
+ partials-signing-dsb-macosx64-nightly/opt: cgRQU0D6SvSQ6fQKzENk8A
+ partials-signing-dsb-win32-nightly/opt: IMsGQWQkQByq3qDcP9He9g
+ partials-signing-dsb-win64-nightly/opt: LK68qkThTwKaq_4quF1hVA
+ partials-signing-el-linux-nightly/opt: bnI_6HowSuGvuFuMZpe1rQ
+ partials-signing-el-linux64-nightly/opt: VUcnhNvNQmeGlqh-km-WLA
+ partials-signing-el-macosx64-nightly/opt: W_d_xbCRTg6AUQO-DSOZWA
+ partials-signing-el-win32-nightly/opt: dHaKYDumQp-M6JbCxTAJhw
+ partials-signing-el-win64-nightly/opt: ebfX1CUkSy2UaiGUNGbN_w
+ partials-signing-en-CA-linux-nightly/opt: KexqKrU5Tl-7fIDpzrEnzQ
+ partials-signing-en-CA-linux64-nightly/opt: aRoyCOv4RXS6EfN3ZnJsig
+ partials-signing-en-CA-macosx64-nightly/opt: SYabqzqkSJCQW28HrbaUoA
+ partials-signing-en-CA-win32-nightly/opt: fhDr14HNT5SRUDUSC56kQg
+ partials-signing-en-CA-win64-nightly/opt: RdhT8RLbQOyp5JDnB309Cg
+ partials-signing-en-GB-linux-nightly/opt: WcVUrGoQTzKmS9kv6dnHGw
+ partials-signing-en-GB-linux64-nightly/opt: ej0ETBXMRFGIdkkfKSZWxQ
+ partials-signing-en-GB-macosx64-nightly/opt: F10k1RjWQ1SnNjTwSxX6nQ
+ partials-signing-en-GB-win32-nightly/opt: Fbuz-W8SR1irbzPcMwq8tg
+ partials-signing-en-GB-win64-nightly/opt: dAiMHA7PTHqMr3iH3n8t-w
+ partials-signing-en-ZA-linux-nightly/opt: Z92VamhpR2qqmC9VmQ9M6w
+ partials-signing-en-ZA-linux64-nightly/opt: JX_7qmuUTv6z_vPlt_1GTQ
+ partials-signing-en-ZA-macosx64-nightly/opt: JP0BotuQRhSIwdz8C6LoQQ
+ partials-signing-en-ZA-win32-nightly/opt: WRxZDrwsRu2SBNVLLNPJDQ
+ partials-signing-en-ZA-win64-nightly/opt: IzOer88STTmEO5Oq1dsBCA
+ partials-signing-eo-linux-nightly/opt: PF9xUFrYRWamzw8lurLWKA
+ partials-signing-eo-linux64-nightly/opt: FtyStjxyTr60GVnaSMO2OA
+ partials-signing-eo-macosx64-nightly/opt: f3un4mmyQh6oeGAsG36L2Q
+ partials-signing-eo-win32-nightly/opt: BmiMLx6zQ6KFvcWwAP-zcA
+ partials-signing-eo-win64-nightly/opt: RIQ6gSGJTDGjwbRnPXYPYA
+ partials-signing-es-AR-linux-nightly/opt: NGBOGCF9RwKDakTfo-dKQA
+ partials-signing-es-AR-linux64-nightly/opt: UpnapbyJTk2i4HMflP9PFQ
+ partials-signing-es-AR-macosx64-nightly/opt: B5A3dglNTMmv5EoZJH-Bng
+ partials-signing-es-AR-win32-nightly/opt: Io6JVkZVS_KQ6NJRxoG1RA
+ partials-signing-es-AR-win64-nightly/opt: BlqZDY_FS3SEKAVfNSNUfQ
+ partials-signing-es-CL-linux-nightly/opt: bYSIoooTT3eQAb8Civio5Q
+ partials-signing-es-CL-linux64-nightly/opt: Fu3jHQUwR_ugWRD-JdIFgQ
+ partials-signing-es-CL-macosx64-nightly/opt: Z0js_gokTs66aVV1dN8Qbg
+ partials-signing-es-CL-win32-nightly/opt: FSkL5IotSQufAVK5MxEwgw
+ partials-signing-es-CL-win64-nightly/opt: XlaNvQ-PRZGQgHtJcFavHQ
+ partials-signing-es-ES-linux-nightly/opt: ccy56MZHTLCqLzOkkMDGVw
+ partials-signing-es-ES-linux64-nightly/opt: XO8ds6_jT0GkyNSHT9L2_A
+ partials-signing-es-ES-macosx64-nightly/opt: SUA10Z2QRny7XeiWtj0BWQ
+ partials-signing-es-ES-win32-nightly/opt: Xo_N9y8dRFa-lnznwi8nmQ
+ partials-signing-es-ES-win64-nightly/opt: Kx4to7tDQwCGENo2oYcXRg
+ partials-signing-es-MX-linux-nightly/opt: OXCN98JzQrCfx6BZ7UyYiw
+ partials-signing-es-MX-linux64-nightly/opt: bZPQHuMwRVKZHYhxDeWx2g
+ partials-signing-es-MX-macosx64-nightly/opt: fR-rcq_PQ7KVKd8bkg0WwA
+ partials-signing-es-MX-win32-nightly/opt: Mc6i5eT6RSulcMIrTljHKQ
+ partials-signing-es-MX-win64-nightly/opt: Or3pCZKdTUWzwpcNiovRGw
+ partials-signing-et-linux-nightly/opt: A_3SLX3PSRCOAl9_6US87A
+ partials-signing-et-linux64-nightly/opt: TpIe_UPTSySqyzOCEsJbgQ
+ partials-signing-et-macosx64-nightly/opt: LU4C3SNbTC2zJYrfSLco9A
+ partials-signing-et-win32-nightly/opt: Lle8PjP5QWSDBNgRLfklIQ
+ partials-signing-et-win64-nightly/opt: FPLIVD5TQTeo51W-jvSaWA
+ partials-signing-eu-linux-nightly/opt: d2_4rImRRke20XECeM72GA
+ partials-signing-eu-linux64-nightly/opt: BOEaNAmgRAu_MeHvju31uA
+ partials-signing-eu-macosx64-nightly/opt: dSuhCH8GR0KqEnrNlE0B7g
+ partials-signing-eu-win32-nightly/opt: eCx_wgFeRzSpAdLezIlUYg
+ partials-signing-eu-win64-nightly/opt: a1lri6SBQ72NOSHE-EGXCA
+ partials-signing-fa-linux-nightly/opt: VS28G3MyQqyGS2I0s9Lgbg
+ partials-signing-fa-linux64-nightly/opt: Q50vnYp5RY-LutMJO9mHqg
+ partials-signing-fa-macosx64-nightly/opt: GDWsUneZRiuy38w7bPoTlw
+ partials-signing-fa-win32-nightly/opt: fn0JzJJIQQC7_Fxzkb4e7w
+ partials-signing-fa-win64-nightly/opt: TLU4BYF4T-etQCR3Iakd2g
+ partials-signing-ff-linux-nightly/opt: TM1_-JnzSyC6AGrFIcmI7g
+ partials-signing-ff-linux64-nightly/opt: GIUyaFk7TXGdUkCzE5XqSA
+ partials-signing-ff-macosx64-nightly/opt: FRqPmANTQueDELNw0x5RAQ
+ partials-signing-ff-win32-nightly/opt: cScEorCgQamzPzdkTPtoZQ
+ partials-signing-ff-win64-nightly/opt: FGfC0EHAQpq0BzquPUj5vw
+ partials-signing-fi-linux-nightly/opt: R3yGBKNQQFi9xxbLib4ukg
+ partials-signing-fi-linux64-nightly/opt: RsFqty04TZapZbt-s3e1_g
+ partials-signing-fi-macosx64-nightly/opt: RhiB5JCpQAye2g-mxiCTjA
+ partials-signing-fi-win32-nightly/opt: TMXpLGN5S9mr2CRLT9eLpg
+ partials-signing-fi-win64-nightly/opt: ILBBSmBDTA-8KZ_z1opy_g
+ partials-signing-fr-linux-nightly/opt: Ql377gyeRraRWU94shN_UA
+ partials-signing-fr-linux64-nightly/opt: XbS7JlEaQ7agKr4Ek6xjuw
+ partials-signing-fr-macosx64-nightly/opt: UV62X3QiTiKxHbxuGdTv6Q
+ partials-signing-fr-win32-nightly/opt: GlSmvNGUSemonY_BQdh9VA
+ partials-signing-fr-win64-nightly/opt: UB0yL3LETwm2OUdbgaCXwg
+ partials-signing-fy-NL-linux-nightly/opt: dBL1gFIORqa5Uog4-qvE2g
+ partials-signing-fy-NL-linux64-nightly/opt: OcKbh_yvSd-gJT32Txjadw
+ partials-signing-fy-NL-macosx64-nightly/opt: B-gJHqn4RqWwF8DuUgihRw
+ partials-signing-fy-NL-win32-nightly/opt: Sey8SaESSv-c_QWP8MI8qg
+ partials-signing-fy-NL-win64-nightly/opt: YvGghd8PQJKrok5ovA6AfA
+ partials-signing-ga-IE-linux-nightly/opt: fBh51wkvSsOhnu7HkKfYbA
+ partials-signing-ga-IE-linux64-nightly/opt: WmHxZmWTR1unkmpq5cG_hg
+ partials-signing-ga-IE-macosx64-nightly/opt: ZR4DzfcwR52257vhxUSsRA
+ partials-signing-ga-IE-win32-nightly/opt: YiHK6uWORAGD9m2bqkx8QA
+ partials-signing-ga-IE-win64-nightly/opt: eI1MjR05RMmonrB-Mp4hVQ
+ partials-signing-gd-linux-nightly/opt: Tgfo8KPyTQ-Xg6KKgvET5g
+ partials-signing-gd-linux64-nightly/opt: QeFJ8p9KSo-KMztoRmNe_g
+ partials-signing-gd-macosx64-nightly/opt: O3MenUtxTW6ju-Mz0p5d3Q
+ partials-signing-gd-win32-nightly/opt: TNsIc8oKQ9q3q7MB1egYyg
+ partials-signing-gd-win64-nightly/opt: Qk6oNwB9SJCDXWLrwouK6A
+ partials-signing-gl-linux-nightly/opt: X2aksfBRSOKQ7hfCMhLTAg
+ partials-signing-gl-linux64-nightly/opt: ba4B8fRPQc2WMuQNIkaMSw
+ partials-signing-gl-macosx64-nightly/opt: Tb2akjwzQKCYujY_WCg95g
+ partials-signing-gl-win32-nightly/opt: JLajOHWxTaKlVqkgteYcdA
+ partials-signing-gl-win64-nightly/opt: AxChlgBZSl-XtI3e4upSYQ
+ partials-signing-gn-linux-nightly/opt: XPpHiw64RMiXu8qVjG9z7w
+ partials-signing-gn-linux64-nightly/opt: TvUzRCyDSaK3CSEdvXh-ig
+ partials-signing-gn-macosx64-nightly/opt: GxkMB9KpSRKQ_5H_jISE0w
+ partials-signing-gn-win32-nightly/opt: Vbkn7xDJRnWswYeFLhY5dw
+ partials-signing-gn-win64-nightly/opt: D4pMOk63QbGgAsAIOfHO_A
+ partials-signing-gu-IN-linux-nightly/opt: MUcMTwqUTLSb4ZJSBhFpCg
+ partials-signing-gu-IN-linux64-nightly/opt: ML3HWnMFTB-Or1kv2sk9gg
+ partials-signing-gu-IN-macosx64-nightly/opt: MJ1vbV4VT_KoQekXowifQg
+ partials-signing-gu-IN-win32-nightly/opt: T8PfnsuHR4ekjOoD4psn3w
+ partials-signing-gu-IN-win64-nightly/opt: BrgHX4MoRPG2NrE6pcb_Gg
+ partials-signing-he-linux-nightly/opt: PFb3HQGXTweIY3XJ-cau5w
+ partials-signing-he-linux64-nightly/opt: GYqeZYSrQwyOXQ0YUbJdQg
+ partials-signing-he-macosx64-nightly/opt: R0Vnc7FFRa6eZ_4t1L4vlA
+ partials-signing-he-win32-nightly/opt: cZWsMXS1SuWWPpSiYMQv2g
+ partials-signing-he-win64-nightly/opt: CRzdIslfSiaQJtpNgtiMag
+ partials-signing-hi-IN-linux-nightly/opt: bYwOOf6gQpC8XJUxX8I8Eg
+ partials-signing-hi-IN-linux64-nightly/opt: CSaK7ds3ScGSS_sTpRNzkA
+ partials-signing-hi-IN-macosx64-nightly/opt: BWZ86PHLQ2mQCFyBl68EFQ
+ partials-signing-hi-IN-win32-nightly/opt: UaVYC3PRR_yFYDqOllr3HQ
+ partials-signing-hi-IN-win64-nightly/opt: LQByOrgaS_mjjWm1jGvxJg
+ partials-signing-hr-linux-nightly/opt: P6tSPi4xQbinPVF2-aMnYw
+ partials-signing-hr-linux64-nightly/opt: B4JzROXqTYiHPzoD_Z6hSA
+ partials-signing-hr-macosx64-nightly/opt: K06XBPpTSiWdD0qXnzP8lw
+ partials-signing-hr-win32-nightly/opt: N00BdfQsQPyOjh_grOwNvA
+ partials-signing-hr-win64-nightly/opt: TGQUf_AsTDGE0uIh5_tZbw
+ partials-signing-hsb-linux-nightly/opt: Jj9OBJ5yTTySd8MfjtLBPg
+ partials-signing-hsb-linux64-nightly/opt: XcUuO7QRTMSpEehZwbLJbA
+ partials-signing-hsb-macosx64-nightly/opt: VNIpeSCzRCqabHOwTSEKhw
+ partials-signing-hsb-win32-nightly/opt: BhpMcqIsT8mtyzMRA6jHOA
+ partials-signing-hsb-win64-nightly/opt: V4TNu5KvSRuoOkTpoqr37A
+ partials-signing-hu-linux-nightly/opt: cJz-cuSTSgm1Uz3Td34R3A
+ partials-signing-hu-linux64-nightly/opt: KbgqBmS-Q7qzLQv8O0tm9Q
+ partials-signing-hu-macosx64-nightly/opt: EV-7LMn6QLS4n_cTnHl5YA
+ partials-signing-hu-win32-nightly/opt: NE_C5y9lRsihW4OXTUdVdQ
+ partials-signing-hu-win64-nightly/opt: FZqPZgLJTMyauMv4fsWlZg
+ partials-signing-hy-AM-linux-nightly/opt: KnH5x5D0SdOjdaTsONNUiw
+ partials-signing-hy-AM-linux64-nightly/opt: VmtiApuBSVCUejnGpshcUg
+ partials-signing-hy-AM-macosx64-nightly/opt: B08V2jHKR5mQqn8yoj7F5A
+ partials-signing-hy-AM-win32-nightly/opt: YsBzuxSlQca7cq-3vzFBFQ
+ partials-signing-hy-AM-win64-nightly/opt: FQNxPswTT5WfyqX0Igoc9g
+ partials-signing-ia-linux-nightly/opt: GsuIC61ZTJqhqEDOQJcsnQ
+ partials-signing-ia-linux64-nightly/opt: UVMeI2NiT6yDVWeTcyvc6g
+ partials-signing-ia-macosx64-nightly/opt: aTBf6wjIRW2nHKdxQNFLjQ
+ partials-signing-ia-win32-nightly/opt: Jyh9O_9xSrWFxbf3lbVquw
+ partials-signing-ia-win64-nightly/opt: AGuc-JPYSN2Kv0J6co6E5Q
+ partials-signing-id-linux-nightly/opt: Z9GOhgqyQ1ecKXOQ7YG7zA
+ partials-signing-id-linux64-nightly/opt: GIXlEFz0ToS6Tq8IG_m9Ww
+ partials-signing-id-macosx64-nightly/opt: dJ6pTUBrRmK1wCeQgv70jQ
+ partials-signing-id-win32-nightly/opt: U1ERee9iSqeJtrVYlUx6mw
+ partials-signing-id-win64-nightly/opt: ZZxeCI5CQGih9JRSZiA_KQ
+ partials-signing-is-linux-nightly/opt: CNumvUjkQWSzTQvuyMG_Ig
+ partials-signing-is-linux64-nightly/opt: F0nFSsjOQlGY8i0lLK5rpw
+ partials-signing-is-macosx64-nightly/opt: NWoqmB3AQduqMS8JpPCIUg
+ partials-signing-is-win32-nightly/opt: CDkv9y7PTVajXASwmIZA7A
+ partials-signing-is-win64-nightly/opt: PoeEmMQzQMW6j56-RxhMSQ
+ partials-signing-it-linux-nightly/opt: TSQMtMUkTsaUoUKUueFryA
+ partials-signing-it-linux64-nightly/opt: W93E81CoTi-sKwOshDr5yQ
+ partials-signing-it-macosx64-nightly/opt: QqRKOt5lTH2xHoiaaQkR0Q
+ partials-signing-it-win32-nightly/opt: HVVMRKcHQwWMrua7NhR9Dw
+ partials-signing-it-win64-nightly/opt: EyxoDx3vQKyFoD4CZUlUAA
+ partials-signing-ja-JP-mac-macosx64-nightly/opt: DVqhD94iQWe2GckkHGReow
+ partials-signing-ja-linux-nightly/opt: SyvHN7MtSgCx5Vy3HZAGUA
+ partials-signing-ja-linux64-nightly/opt: EVaYGAPeT5anllaYjDb7BA
+ partials-signing-ja-win32-nightly/opt: GYTxKbyoQd-TnqZcFYoZAw
+ partials-signing-ja-win64-nightly/opt: e393S4laRGKKssU0JeLffg
+ partials-signing-ka-linux-nightly/opt: EJ7bX6SGQ3qOq8K6C6f5cQ
+ partials-signing-ka-linux64-nightly/opt: etmvNo6NSy-1gvp5YNLOKA
+ partials-signing-ka-macosx64-nightly/opt: DmeQke20SiygkTDvXkPVBg
+ partials-signing-ka-win32-nightly/opt: bdoYOeNuT7uGvnaydgjndA
+ partials-signing-ka-win64-nightly/opt: eYzOV94qTMC6a7FY3rSO-w
+ partials-signing-kab-linux-nightly/opt: BA_UXBZzTkmhnfaoPAY6Hg
+ partials-signing-kab-linux64-nightly/opt: BA3VFIbsSp21UOuqh9mmIg
+ partials-signing-kab-macosx64-nightly/opt: eGjpT-hlRdGe6pvyYsW_Rw
+ partials-signing-kab-win32-nightly/opt: WWQiUbynRlKMIgCVy-muYg
+ partials-signing-kab-win64-nightly/opt: MuFBw4SyQSKmGy8uBxhGzw
+ partials-signing-kk-linux-nightly/opt: UCmRLEPcQiGD4Wo4RAHczA
+ partials-signing-kk-linux64-nightly/opt: HpyEZS5EQVKJlncwXKSkLQ
+ partials-signing-kk-macosx64-nightly/opt: RT8BYKVgR1SXSWB67G7lFA
+ partials-signing-kk-win32-nightly/opt: BEMAYLXcTjeBwR2p2CW0dQ
+ partials-signing-kk-win64-nightly/opt: GdAZzAXFRRSSSQz6n9tt1w
+ partials-signing-km-linux-nightly/opt: EE9z3RHOT32TM2azvvEAFw
+ partials-signing-km-linux64-nightly/opt: fDZzeYpMTvK02gS-qPiRFw
+ partials-signing-km-macosx64-nightly/opt: fZ9A6gpjQfSlA6zIE9eoJw
+ partials-signing-km-win32-nightly/opt: Ib6mF0QoRiOKiYhAkorleQ
+ partials-signing-km-win64-nightly/opt: N66n0iOPRLeruEheLfRY4A
+ partials-signing-kn-linux-nightly/opt: b3JFNvs2Rf-0X7FvUbHyfw
+ partials-signing-kn-linux64-nightly/opt: BxKGd83cSpOZP24zRQOFlQ
+ partials-signing-kn-macosx64-nightly/opt: Ji_0OqfzRXWjAzRDCDN3tA
+ partials-signing-kn-win32-nightly/opt: QWnDwSeEQg-9ZGXk8G--EA
+ partials-signing-kn-win64-nightly/opt: SKcgSrlaTQ6vNV5dOcguUw
+ partials-signing-ko-linux-nightly/opt: LNCiEW61Tla6tXGayl71Pw
+ partials-signing-ko-linux64-nightly/opt: SpjudpTOTG6qTkugs_657g
+ partials-signing-ko-macosx64-nightly/opt: Sb7QGroSTY2q0Vg5mTOj8w
+ partials-signing-ko-win32-nightly/opt: IB6rqpxIT1ayCwizW1JMkQ
+ partials-signing-ko-win64-nightly/opt: KCoAr5zLTTSJ8N10_UnhBw
+ partials-signing-lij-linux-nightly/opt: W3wPzV44SmKhZMzpL4kM1Q
+ partials-signing-lij-linux64-nightly/opt: Ye2ry2ccTISAoOvntiR7Nw
+ partials-signing-lij-macosx64-nightly/opt: XtijKcB0RT2PJTwSA7_owQ
+ partials-signing-lij-win32-nightly/opt: Y1TF2Cc8TwaCMVdH8sZzwQ
+ partials-signing-lij-win64-nightly/opt: NNMjQvBkSJWrIDK-ryPWUQ
+ partials-signing-linux-nightly/opt: T04aUUVQRzm7wCpc_yQ40Q
+ partials-signing-linux64-nightly/opt: Ifv7an3vS-muF4hExPfaQw
+ partials-signing-lt-linux-nightly/opt: EQaC1DEUQYes1rxWFF1Aeg
+ partials-signing-lt-linux64-nightly/opt: euYZ9At4QFKYwQjrDJrxaA
+ partials-signing-lt-macosx64-nightly/opt: W8CexpabQWu7JVqFDqNPTw
+ partials-signing-lt-win32-nightly/opt: YMORO7zIRHyueFQi51zW_A
+ partials-signing-lt-win64-nightly/opt: ZjBuGRgJQRmhtR-TNrj0EQ
+ partials-signing-lv-linux-nightly/opt: T7Won6gNQ3e3-7TKjoKAYg
+ partials-signing-lv-linux64-nightly/opt: HCMMLbPQR8ySxqtcJiz1hg
+ partials-signing-lv-macosx64-nightly/opt: RZlnc6UnS9-tboxH9fijzw
+ partials-signing-lv-win32-nightly/opt: UBPl3vxvRJaPrKfwyP1DEA
+ partials-signing-lv-win64-nightly/opt: FfXSNkOERc60lraNXu4Miw
+ partials-signing-macosx64-nightly/opt: aQtpOQQrTOmz8iDleFQOZA
+ partials-signing-mai-linux-nightly/opt: aoeCzdrbSPCIXMgz5volCw
+ partials-signing-mai-linux64-nightly/opt: BRkYVqtjQiqeAusA13olXQ
+ partials-signing-mai-macosx64-nightly/opt: XF8RfiOmRuG4hbecCYOl4g
+ partials-signing-mai-win32-nightly/opt: IZyYrboaQLuxbuwB3_IL6g
+ partials-signing-mai-win64-nightly/opt: feVYRJmcSxCmboQgak1xgA
+ partials-signing-mk-linux-nightly/opt: Z2NKBj-nQM-r2-IYQ2dBMg
+ partials-signing-mk-linux64-nightly/opt: Nct5L3XdTf6IV4So-U1jhg
+ partials-signing-mk-macosx64-nightly/opt: RGHFZ5GiR2KV1F-jQse0sg
+ partials-signing-mk-win32-nightly/opt: PRqocepiSpyd1qjvsyALiw
+ partials-signing-mk-win64-nightly/opt: cc33Qs4GSzWZSDE0dKOlnw
+ partials-signing-ml-linux-nightly/opt: Jd-m9dfwT8WIdZhjZn-W4A
+ partials-signing-ml-linux64-nightly/opt: J0fpeVsxT5KGPGzz5hYBKw
+ partials-signing-ml-macosx64-nightly/opt: BMEtJbYHT2iGPlOwU6OdMg
+ partials-signing-ml-win32-nightly/opt: Vwl1S-lqSfeLixyuIYfqzQ
+ partials-signing-ml-win64-nightly/opt: UbEsxIURQu-6oqHwgINzjQ
+ partials-signing-mr-linux-nightly/opt: JnJ8nTFtS-CAd_sqqLo4aQ
+ partials-signing-mr-linux64-nightly/opt: BsBEoTj8TPKM3btIq7hj8A
+ partials-signing-mr-macosx64-nightly/opt: ZybYQZBjRkaok0SuXqNDdw
+ partials-signing-mr-win32-nightly/opt: S6jh5HntRMyiJK10TMniPw
+ partials-signing-mr-win64-nightly/opt: L_0V5SqbSr-uY2V3OI96lA
+ partials-signing-ms-linux-nightly/opt: bXF9NJpoTmG4cQMjWkhfVQ
+ partials-signing-ms-linux64-nightly/opt: M0xh6hV-SeG1LhkHsCFxZA
+ partials-signing-ms-macosx64-nightly/opt: edZY-l6iTt6_81mhh45m8A
+ partials-signing-ms-win32-nightly/opt: BX88Q9ZuQQGVQKPUTA1oxg
+ partials-signing-ms-win64-nightly/opt: UmgzN-onQaWTiByW6ihdxg
+ partials-signing-my-linux-nightly/opt: SfEM2TWcQVSYqJyJREIlWA
+ partials-signing-my-linux64-nightly/opt: VJ7I9jcTRBGzozCecS5c9w
+ partials-signing-my-macosx64-nightly/opt: SRhq7ZCHSweci57uUtOWnQ
+ partials-signing-my-win32-nightly/opt: NgTVn8YkT4GIxXNAo9GzDQ
+ partials-signing-my-win64-nightly/opt: fs4QjnhFQj-v9UBsVQ_tyQ
+ partials-signing-nb-NO-linux-nightly/opt: Pu-iengKT064vQ3oAjbcWg
+ partials-signing-nb-NO-linux64-nightly/opt: dLRpKx4zQDeWaWfu4noPEQ
+ partials-signing-nb-NO-macosx64-nightly/opt: Ec8TX01lSf6xYOJp0j3sSQ
+ partials-signing-nb-NO-win32-nightly/opt: QtnhgzhhQ2iwk334sSfGlg
+ partials-signing-nb-NO-win64-nightly/opt: SHgNslHgSTucJ2c6TxCvsQ
+ partials-signing-ne-NP-linux-nightly/opt: LhvIbKajTui8eulAF0Jd-A
+ partials-signing-ne-NP-linux64-nightly/opt: L761ROZURkeR7aH2kbw25w
+ partials-signing-ne-NP-macosx64-nightly/opt: SV4RPoooTtSyzOXwEAUtog
+ partials-signing-ne-NP-win32-nightly/opt: XNFledIUQ1-IyLu9Ulj11g
+ partials-signing-ne-NP-win64-nightly/opt: KEiNu2alQmO2y8T-9EAtuA
+ partials-signing-nl-linux-nightly/opt: L0m2ZKIMTaWvWV6bmqTwog
+ partials-signing-nl-linux64-nightly/opt: YnadTaRJQeSz4HPPf4yC9Q
+ partials-signing-nl-macosx64-nightly/opt: BttqI6fjRd20cVYuvKDhcA
+ partials-signing-nl-win32-nightly/opt: D_sidXLITWO2qEp5yHRTAw
+ partials-signing-nl-win64-nightly/opt: QdiaGV7pQ1e9svkBnAMkLg
+ partials-signing-nn-NO-linux-nightly/opt: JqMbIfZ3T0SmG6tuQNZPrw
+ partials-signing-nn-NO-linux64-nightly/opt: FCjdyIHyRa-fEL5FpIAfwA
+ partials-signing-nn-NO-macosx64-nightly/opt: GyOyEWVkR1yoja7x9CmnwQ
+ partials-signing-nn-NO-win32-nightly/opt: CLiOhK1hQ-SMEZDTbEjhfg
+ partials-signing-nn-NO-win64-nightly/opt: BpuBXxAMQv6dBp_h9bTesg
+ partials-signing-oc-linux-nightly/opt: GB6wRt7uQwyL0pn6iXFLYQ
+ partials-signing-oc-linux64-nightly/opt: Pg6P2e5iTeS1MLpAYdg6cg
+ partials-signing-oc-macosx64-nightly/opt: U1p7L8x0RguO6Uz4hLEMuA
+ partials-signing-oc-win32-nightly/opt: UFRyNIdCQ1mjjpiLH_fKXg
+ partials-signing-oc-win64-nightly/opt: dFk91jlES52Ck1c5goeAYQ
+ partials-signing-or-linux-nightly/opt: Y0wJXx34TPmfJQpRdT9zAQ
+ partials-signing-or-linux64-nightly/opt: dkMhS2SQQYGG7Ze1fJg5jA
+ partials-signing-or-macosx64-nightly/opt: Bp3QbdkORZufbtO0epQtoA
+ partials-signing-or-win32-nightly/opt: Eoiz49t0Qde1h_6iXmdTCA
+ partials-signing-or-win64-nightly/opt: Va1J_0TEQ_-fbHVp-7aySA
+ partials-signing-pa-IN-linux-nightly/opt: CpgFQuJOSAaCg62XADAc4Q
+ partials-signing-pa-IN-linux64-nightly/opt: QkvSRRvATzKtuemh0Ml5mw
+ partials-signing-pa-IN-macosx64-nightly/opt: JGWUgYaeRd66ea_TJfJ_1Q
+ partials-signing-pa-IN-win32-nightly/opt: Jv4W7KyeQJO0-9CT5F0swQ
+ partials-signing-pa-IN-win64-nightly/opt: OHk6nHj3Rqe8LGm768H4nA
+ partials-signing-pl-linux-nightly/opt: QYF2c3kjS_Wmf97IML8qmg
+ partials-signing-pl-linux64-nightly/opt: cVTeB4tPThWJJqi_zVFVKA
+ partials-signing-pl-macosx64-nightly/opt: KbXhd1W2RhC8-K59NgGkbg
+ partials-signing-pl-win32-nightly/opt: BYfqDhD8RF-3Y3r5o_klNw
+ partials-signing-pl-win64-nightly/opt: epgztiHOSIK11y4MRgrzWA
+ partials-signing-pt-BR-linux-nightly/opt: B6-RpwnKRse2mnX4SJmOcg
+ partials-signing-pt-BR-linux64-nightly/opt: HN8Eu3DrRKOddOmTRjMm1Q
+ partials-signing-pt-BR-macosx64-nightly/opt: EKrezTz3Tx6-ahmnIZelSw
+ partials-signing-pt-BR-win32-nightly/opt: D8NG7b9AQwWrk-R4UuGcbA
+ partials-signing-pt-BR-win64-nightly/opt: Z2A_3I5JRjSvYlZl9Nr-BA
+ partials-signing-pt-PT-linux-nightly/opt: Sp2iFQYERK6otQ6c1lYmFA
+ partials-signing-pt-PT-linux64-nightly/opt: Lv1HPNd7Rei5vRDZtdSqKQ
+ partials-signing-pt-PT-macosx64-nightly/opt: GIVyHAzSToKAgsK2yMj8Nw
+ partials-signing-pt-PT-win32-nightly/opt: F8uOsEcsQvGU4oIsOde8Jw
+ partials-signing-pt-PT-win64-nightly/opt: aTyDHTuhRvWM8RiThQWn3Q
+ partials-signing-rm-linux-nightly/opt: JVpKEBbkSACcarN3dcDaGQ
+ partials-signing-rm-linux64-nightly/opt: QNmMaZYsQNehsxsTH1KIiw
+ partials-signing-rm-macosx64-nightly/opt: BkInLIFwRheTGQChBxD8EA
+ partials-signing-rm-win32-nightly/opt: Zav_MHyqT_utukmTEBDqBw
+ partials-signing-rm-win64-nightly/opt: OZe2lJwDTguiSL6b1rZ6gA
+ partials-signing-ro-linux-nightly/opt: OHiecNX7S2WeHlQ_MjbA7A
+ partials-signing-ro-linux64-nightly/opt: AT2cczbSSuiOd7mQBVaK2g
+ partials-signing-ro-macosx64-nightly/opt: Y5j3og4JRJ6A2t28hY_W6Q
+ partials-signing-ro-win32-nightly/opt: apZpUe6pSh2OHJIMXX3Log
+ partials-signing-ro-win64-nightly/opt: CmlwXdIGQsqqUU3A6Jkbcg
+ partials-signing-ru-linux-nightly/opt: VmQGCDwVQrGiaom-gSF0og
+ partials-signing-ru-linux64-nightly/opt: d114NZkXTdmannRfrrwjUA
+ partials-signing-ru-macosx64-nightly/opt: LYnTyi11TJG23OC9e5Ct7A
+ partials-signing-ru-win32-nightly/opt: dH-Twa89SI2VrieBk5MU3w
+ partials-signing-ru-win64-nightly/opt: E_4t-tMAQdm3r4TnPXUFig
+ partials-signing-si-linux-nightly/opt: RdPFHIYPSeSYImJTCBYb7A
+ partials-signing-si-linux64-nightly/opt: ZsgdEjqNSduisiTukApZ8w
+ partials-signing-si-macosx64-nightly/opt: R-6la3sSTpeknpQBJmlGng
+ partials-signing-si-win32-nightly/opt: N3zsllsbT9SGRcpLRlxIJQ
+ partials-signing-si-win64-nightly/opt: NRg6yFjxSYeaifPrgqfM0w
+ partials-signing-sk-linux-nightly/opt: T4MtDvaSSu-rBzsV4TGkDQ
+ partials-signing-sk-linux64-nightly/opt: CWSR6mMcSdqfhfggDdARKQ
+ partials-signing-sk-macosx64-nightly/opt: JNvrT_0lRxGShu247lQFPQ
+ partials-signing-sk-win32-nightly/opt: CV4OzJP3R2Ca0_opmA5OMw
+ partials-signing-sk-win64-nightly/opt: OTVpBrHRTqatOKAdJpzaIg
+ partials-signing-sl-linux-nightly/opt: EWgPEw0sTROiv9gEaKLidQ
+ partials-signing-sl-linux64-nightly/opt: DB-yjqloQOaTju-day8qbA
+ partials-signing-sl-macosx64-nightly/opt: NUQb9EGZQuSuiWNEJBt6xA
+ partials-signing-sl-win32-nightly/opt: Gxt6eOOUSb-LaD-y2ccGfQ
+ partials-signing-sl-win64-nightly/opt: LYcB8fPGQfmy0q4h7g3vGA
+ partials-signing-son-linux-nightly/opt: YC0jGgEkR4ef5ENvwvAvzA
+ partials-signing-son-linux64-nightly/opt: Yvt3Uq9-SZyabCMJ60vbhg
+ partials-signing-son-macosx64-nightly/opt: NiX99GMxRaewTq63mg2t9Q
+ partials-signing-son-win32-nightly/opt: Nc7n71uuR1-AZnAf8-Pwiw
+ partials-signing-son-win64-nightly/opt: HpRjouzNRuOYg49ha-EeQQ
+ partials-signing-sq-linux-nightly/opt: IhzuV2VFR0GBJIfQKidA1g
+ partials-signing-sq-linux64-nightly/opt: AH5UETeHRpiVMXc1IeFH5Q
+ partials-signing-sq-macosx64-nightly/opt: IuamAc3JTwyQIZ1sxWioVA
+ partials-signing-sq-win32-nightly/opt: cB6VNL0eTjG9kib0VUWzPQ
+ partials-signing-sq-win64-nightly/opt: VJLDyf5KSGCSt_L8_TbNTQ
+ partials-signing-sr-linux-nightly/opt: aODBSmmUQG-Y1eSwnR86ig
+ partials-signing-sr-linux64-nightly/opt: Or4SHpQCR92c2rWvPNliuA
+ partials-signing-sr-macosx64-nightly/opt: MEV9mDjfQpOAcr3BzfOVTg
+ partials-signing-sr-win32-nightly/opt: D44Y1OcYQZqY1t0EmwYG3Q
+ partials-signing-sr-win64-nightly/opt: DD1mKBolTXeLdail6v5nBw
+ partials-signing-sv-SE-linux-nightly/opt: eqSPMOAgQtS-rkTnvY9LEg
+ partials-signing-sv-SE-linux64-nightly/opt: dC8d6eNrSNWUJRTaBNnvTw
+ partials-signing-sv-SE-macosx64-nightly/opt: AuqeE3nTRTCbrQlGw4ey8Q
+ partials-signing-sv-SE-win32-nightly/opt: Kxxo8GVBTjuQZgjxN-rawA
+ partials-signing-sv-SE-win64-nightly/opt: dgoJ77slRvqSbzZOKUujxg
+ partials-signing-ta-linux-nightly/opt: LPE9v8THR-6jz771SwxiiQ
+ partials-signing-ta-linux64-nightly/opt: FwdSJNupQ3qeG8ZVioC3Wg
+ partials-signing-ta-macosx64-nightly/opt: bET7fpbTSa6kk-2cLgkPWA
+ partials-signing-ta-win32-nightly/opt: bpjB8KnGRqmBKohbFRSE-g
+ partials-signing-ta-win64-nightly/opt: Z1Zw-iC4SgiM3rcx5-8YfQ
+ partials-signing-te-linux-nightly/opt: StFezEXAQQWrdbrN-1Bgdg
+ partials-signing-te-linux64-nightly/opt: SSKHLd40SJ2B-_XVsOgIcA
+ partials-signing-te-macosx64-nightly/opt: IbKRgEhnQzSWwltw81pUdA
+ partials-signing-te-win32-nightly/opt: CHIHPBJ0TDm53fMy9jnHyA
+ partials-signing-te-win64-nightly/opt: P8HomZeSSSGW63mTm6qIkw
+ partials-signing-th-linux-nightly/opt: c6232nKdTqG6WldZsUiR3A
+ partials-signing-th-linux64-nightly/opt: Et2Wkk8AQfG0XP_0yXrDPA
+ partials-signing-th-macosx64-nightly/opt: EAtTH3L_Ti2dPLmw931kNA
+ partials-signing-th-win32-nightly/opt: KNARLNm-RKeHLCoewwjNnQ
+ partials-signing-th-win64-nightly/opt: FBjizMtMS1i1GR7vcj72iw
+ partials-signing-tr-linux-nightly/opt: E3U62hJXSGGe-PDyzFEgrw
+ partials-signing-tr-linux64-nightly/opt: Aq5-AhdzQhqAqvSDnPQynw
+ partials-signing-tr-macosx64-nightly/opt: Mpu6pi1oQiCtRZD0pf9rKw
+ partials-signing-tr-win32-nightly/opt: AMHH4hfZSPinGb37kakkxw
+ partials-signing-tr-win64-nightly/opt: RRee5K_jQ2aBImWzicKkog
+ partials-signing-uk-linux-nightly/opt: C6pvWIK0RHqsU6FJfBElzA
+ partials-signing-uk-linux64-nightly/opt: FqjeC0y5QDqwcYXBK2rOrw
+ partials-signing-uk-macosx64-nightly/opt: Y1qMqpkGQOWXdl9VN0l7mQ
+ partials-signing-uk-win32-nightly/opt: fWlBOH-RTm2M8yg4Pc1pCA
+ partials-signing-uk-win64-nightly/opt: MlNjzMO8TrCZw6oQhYARkQ
+ partials-signing-ur-linux-nightly/opt: WVXEdW5HRzawbt-jUUlOGQ
+ partials-signing-ur-linux64-nightly/opt: OUjhskk3TYCRg8u6Jj2eSA
+ partials-signing-ur-macosx64-nightly/opt: NOgN3hZ1TuaGlwQ3mk72sQ
+ partials-signing-ur-win32-nightly/opt: SCd1vdZjRLO8lMhAP-fWZQ
+ partials-signing-ur-win64-nightly/opt: cRmqw9TpSUKQnOYYCFZtcQ
+ partials-signing-uz-linux-nightly/opt: JP4om1FvTKyzRJX0XR6ghg
+ partials-signing-uz-linux64-nightly/opt: G1KLE1EKSYqA4g6gDppzzg
+ partials-signing-uz-macosx64-nightly/opt: FqnI8iINTOKURfvUE-z9Lg
+ partials-signing-uz-win32-nightly/opt: Tl3v6XQdQEa-wtZvdaQhFw
+ partials-signing-uz-win64-nightly/opt: WkCMuPZtS1S0i4gFCymm7Q
+ partials-signing-vi-linux-nightly/opt: awoXvHjdTmWET22pq3Ksrg
+ partials-signing-vi-linux64-nightly/opt: FvqlrJTKTbWeSyFkAviPhg
+ partials-signing-vi-macosx64-nightly/opt: TChQ7dFPSc-luX07hHM4qg
+ partials-signing-vi-win32-nightly/opt: d9G2IpdfRqSp5hAyCiupiQ
+ partials-signing-vi-win64-nightly/opt: TXY6mx1xSWm3DkF1EJzHdw
+ partials-signing-win32-nightly/opt: R0v_rS_KRh295iS4cyWWMw
+ partials-signing-win64-nightly/opt: YZOEGRV1SoW0I1HxEEqRpw
+ partials-signing-xh-linux-nightly/opt: epd-p0krQyuQ-C0A0Bmulw
+ partials-signing-xh-linux64-nightly/opt: GX5vA-XnTsu9Cq5edvm4Fw
+ partials-signing-xh-macosx64-nightly/opt: cSIDU3n2Sx-Ml8XscJDgmQ
+ partials-signing-xh-win32-nightly/opt: MApwHMmQRc-HlQnEcGqDrQ
+ partials-signing-xh-win64-nightly/opt: YQ_YNpGMQMOyoqu-vwrIMg
+ partials-signing-zh-CN-linux-nightly/opt: Qb3NimSDQFSTgcJD2cyZhg
+ partials-signing-zh-CN-linux64-nightly/opt: NjJwrOGRQuCjPTVzxnR_Ng
+ partials-signing-zh-CN-macosx64-nightly/opt: OVy9cU62T1-hdUiSR7CEOA
+ partials-signing-zh-CN-win32-nightly/opt: UiO5ZLpXSfi_dlZcsfJVFw
+ partials-signing-zh-CN-win64-nightly/opt: DPXgDB4_T9a3R61lS_3gnA
+ partials-signing-zh-TW-linux-nightly/opt: VY-4RKyoQAKUZsl7wUxhVA
+ partials-signing-zh-TW-linux64-nightly/opt: IkuTLVIZRSqZ-fNXd2sLfA
+ partials-signing-zh-TW-macosx64-nightly/opt: WRPBJpwgS9-41ID_tIc_NQ
+ partials-signing-zh-TW-win32-nightly/opt: UbKjBPvVQKSqjBNeh-2scw
+ partials-signing-zh-TW-win64-nightly/opt: eLUgAmLXTP2FFzRDCwAgeQ
+ partials-sk-linux-nightly/opt: JWBjz51mSnmOuNvhUBhH9w
+ partials-sk-linux64-nightly/opt: HfwLHZTXRbq-By5_jpHwbQ
+ partials-sk-macosx64-nightly/opt: e0YbExcMQlqfxbmXd37_Ng
+ partials-sk-win32-nightly/opt: Y_rbbkGdRQ2BR5DPifzpkw
+ partials-sk-win64-nightly/opt: CiNh_GC5Q9a1-tqtFeATig
+ partials-sl-linux-nightly/opt: WcxKNHUoSTyXy_INgIe6ZQ
+ partials-sl-linux64-nightly/opt: c6cLMrpURQSnaD60lpfCQw
+ partials-sl-macosx64-nightly/opt: Ptp4n5wdQxSHyUgtk0o_dQ
+ partials-sl-win32-nightly/opt: FKklbhmJSNqolzbavZ85Pw
+ partials-sl-win64-nightly/opt: cbSOtWXzSf-vF2yoxHsy7w
+ partials-son-linux-nightly/opt: DoBEUu91T4m4LBTKzLvIHA
+ partials-son-linux64-nightly/opt: YmH0dF9iSbaxTefJZ5i1FA
+ partials-son-macosx64-nightly/opt: SMFzkXRvQS2mij-P4LOn8w
+ partials-son-win32-nightly/opt: fb82d1Z7Tf-dFAnVDAIVlA
+ partials-son-win64-nightly/opt: aZxmIGLtRPGd_z54-6bznw
+ partials-sq-linux-nightly/opt: ZyjGaJZrS3qDYu51pMCxiQ
+ partials-sq-linux64-nightly/opt: CS1f0M7OS5eo8I8BPzAaaA
+ partials-sq-macosx64-nightly/opt: MF6b3kq7TReESyISL4pyhg
+ partials-sq-win32-nightly/opt: YlasrAVPSUmHKh010CARxQ
+ partials-sq-win64-nightly/opt: YoeX1ntqQGO5ab7jDbydww
+ partials-sr-linux-nightly/opt: OlfVvC6qS1GbpqoB5rWU7A
+ partials-sr-linux64-nightly/opt: Ln7501zLRuuXS8oBV9-h1w
+ partials-sr-macosx64-nightly/opt: ZLQqQGHwQIqw-ywujYTa8g
+ partials-sr-win32-nightly/opt: YMd5e9LFRWWZP6SG2HjJFw
+ partials-sr-win64-nightly/opt: D35NI5_7RY6MtwSX5qQokg
+ partials-sv-SE-linux-nightly/opt: Wq-p2LMzTWeOPUm6O2VadQ
+ partials-sv-SE-linux64-nightly/opt: ZBEvi0IdRo2501eZXHYmKA
+ partials-sv-SE-macosx64-nightly/opt: HhUngiTrTUi2c5OONpjBfw
+ partials-sv-SE-win32-nightly/opt: PZqmARJqT1WuSRiUtk1epg
+ partials-sv-SE-win64-nightly/opt: AlgXg-cEQtCe_T6jxmEBtg
+ partials-ta-linux-nightly/opt: DGWMArITQvuYANCiw4RNOw
+ partials-ta-linux64-nightly/opt: d2fT_R95RpuydwFkKc2Eug
+ partials-ta-macosx64-nightly/opt: NI0D74LaSx2mw9zUAwOxQg
+ partials-ta-win32-nightly/opt: BB97eDpwRgGld7fKXZRwrQ
+ partials-ta-win64-nightly/opt: X2CUJBKhShO5qZ8R4ElScA
+ partials-te-linux-nightly/opt: cxZjV4GcTemo9H3Vj3MvnQ
+ partials-te-linux64-nightly/opt: YR74lHRRRSWuAE9CldZfdg
+ partials-te-macosx64-nightly/opt: ZbuPgm4ARuCbfgYh0Njurw
+ partials-te-win32-nightly/opt: fueEbwe5T_mW3kM_3VbU5A
+ partials-te-win64-nightly/opt: NYpVIi0pRwmVRB1eqN-5Mg
+ partials-th-linux-nightly/opt: QB7vDPmtR46sN9ViTzlMDw
+ partials-th-linux64-nightly/opt: CJMuej4eSg63TDYE_u8y1g
+ partials-th-macosx64-nightly/opt: KzCyOkxDQpm521et3WIF_g
+ partials-th-win32-nightly/opt: Cp7jL98VQ1GFiXTjMlgMOg
+ partials-th-win64-nightly/opt: evG5J6NlQeOja13TmwnouA
+ partials-tr-linux-nightly/opt: R5FgxMjyT5ayP9fh1wUfdA
+ partials-tr-linux64-nightly/opt: AnF3U5HxRw6pRy9hzZBUuw
+ partials-tr-macosx64-nightly/opt: RDnfbO2_Toq3d-m6LHrS8g
+ partials-tr-win32-nightly/opt: SmA8BSCHQai0X3AKz68URQ
+ partials-tr-win64-nightly/opt: YNQzbnCqTkWs_HCAN8VxRA
+ partials-uk-linux-nightly/opt: FS-9hLxdRuiH_9-rVX1tbA
+ partials-uk-linux64-nightly/opt: G7wdY_i8Qca6bMKKpNIcCQ
+ partials-uk-macosx64-nightly/opt: NmDJJ9KCQ3mIYmwwkUmauQ
+ partials-uk-win32-nightly/opt: EP-LW18QQueBfjkGaYM4SQ
+ partials-uk-win64-nightly/opt: GxtSL9YiQhi9fS0Tm-aonw
+ partials-ur-linux-nightly/opt: XLNzvLOYT2CwMrAx81p66g
+ partials-ur-linux64-nightly/opt: MwTNutzZTGmBzbbDhjy1hQ
+ partials-ur-macosx64-nightly/opt: GGd41stbR9OenOwoE5KC5Q
+ partials-ur-win32-nightly/opt: SRM6Bvf5QVWVf8EMc2-erA
+ partials-ur-win64-nightly/opt: XZoxgjRPRQmEpwGama8QTA
+ partials-uz-linux-nightly/opt: ICSwtIM-Tnqx1GZt15GtpQ
+ partials-uz-linux64-nightly/opt: Ce06NWnnTdm7GiRkyt2JeQ
+ partials-uz-macosx64-nightly/opt: e9K1azbuT06J6HmRzmS54Q
+ partials-uz-win32-nightly/opt: fMVBX9kyR3uo7lkCccj73Q
+ partials-uz-win64-nightly/opt: A3JRM_-MSEyngYWzlNQMyQ
+ partials-vi-linux-nightly/opt: L5zkQaepQA6gbWfDuzORYw
+ partials-vi-linux64-nightly/opt: BS2JOn0ARg6p6XdjFG_qtQ
+ partials-vi-macosx64-nightly/opt: eUCnrjRiTFC2URiKfoTsFw
+ partials-vi-win32-nightly/opt: EgcnLZKnR9aruqO8nNTcLw
+ partials-vi-win64-nightly/opt: dERNAo43TfafzoRB6YW8JQ
+ partials-win32-nightly/opt: U2Jlf-c9Qy2d4ffUaWMKtw
+ partials-win64-nightly/opt: Oc13MSXMR8-1MI2UaQQOZg
+ partials-xh-linux-nightly/opt: K-t7E1R5SAatRj4696WS6g
+ partials-xh-linux64-nightly/opt: ckHbWBYxR6azJsbHz3AwWg
+ partials-xh-macosx64-nightly/opt: M0YVQJm7SRe5HxRklz4zBg
+ partials-xh-win32-nightly/opt: F54k6sIHQkujUDh7iPTnAA
+ partials-xh-win64-nightly/opt: QK5GcEC_RZ2BPlQqd-aoow
+ partials-zh-CN-linux-nightly/opt: MByojppzQNqJNO2cxDF-TA
+ partials-zh-CN-linux64-nightly/opt: ZSxGcjlvQ7OSGRJv9AkU7A
+ partials-zh-CN-macosx64-nightly/opt: bliPH5_qQ2qkQo9-K9efjg
+ partials-zh-CN-win32-nightly/opt: PYQkh72_Sz2T45ul5FK-cw
+ partials-zh-CN-win64-nightly/opt: RbtvPiOHTH6sPydxy5EATw
+ partials-zh-TW-linux-nightly/opt: e2meTx-vQQG6yrOFN2Y_tA
+ partials-zh-TW-linux64-nightly/opt: IuVm9JqSSTaWGEDiRfbHTw
+ partials-zh-TW-macosx64-nightly/opt: NizyZm_ZSVySFykPtOxkdw
+ partials-zh-TW-win32-nightly/opt: dV3MpU42StGK2ys01yGGfQ
+ partials-zh-TW-win64-nightly/opt: aCg_H9I-Rs2Iud9Ggm37oQ
+ post-balrog-dummy-firefox-linux-nightly-1: MGqSFisGQsONNpfAthJZtw
+ post-balrog-dummy-firefox-linux64-nightly-1: EkPHkJJsQQiFSuqiZlx4iw
+ post-balrog-dummy-firefox-macosx64-nightly-1: YMnot-NTR-SukLmgZwqJmA
+ post-balrog-dummy-firefox-win32-nightly-1: MSE6DNoiS7Wc-v5CZKJPtw
+ post-balrog-dummy-firefox-win64-nightly-1: KfqM66AWRdWXlp0jvGjnjQ
+ post-beetmover-checksums-dummy-firefox-promote-1: EbHB0OMJQsmhrSjf6VBa1A
+ post-beetmover-checksums-dummy-firefox-promote-2: fXJoKrTJThO-latWN7bt-A
+ post-beetmover-checksums-dummy-firefox-promote-3: AuJIj5WxRY65-XUmn8W8lA
+ post-beetmover-checksums-dummy-firefox-promote-4: CFAwRGVxTHuzxEgx-IJJSQ
+ post-beetmover-checksums-dummy-firefox-promote-5: eQpQAvVmTaCzvC9zVYSoQA
+ post-beetmover-checksums-dummy-firefox-promote-6: BheuQTuWQAix0lf3R81Q0A
+ post-beetmover-checksums-dummy-firefox-promote-7: LGU8P2TJTpCG4YICOmBNLQ
+ post-beetmover-checksums-dummy-firefox-promote-8: Gk3jqWUZS9iDFyyrl2u81g
+ post-beetmover-checksums-dummy-firefox-promote-9: Ciy0YKjyStyJuYCSSA6PPg
+ post-beetmover-dummy-firefox-linux-nightly-1: VKKyqbdlRBKiAbOjKsUHjg
+ post-beetmover-dummy-firefox-linux-nightly-2: TKWnieYcQySGwviNOVyg2g
+ post-beetmover-dummy-firefox-linux64-nightly-1: C8hLe18-QH6mHIgIPT6XTQ
+ post-beetmover-dummy-firefox-linux64-nightly-2: f9GFT5TtRLmFE43WYo8S0Q
+ post-beetmover-dummy-firefox-macosx64-nightly-1: fnmT-MKbRTijEZhh7B7paA
+ post-beetmover-dummy-firefox-macosx64-nightly-2: JQVK6RFWS_yEUQsVZ1EaNA
+ post-beetmover-dummy-firefox-win32-nightly-1: HjMmJZvtSRa8LQVfYaj9Xg
+ post-beetmover-dummy-firefox-win32-nightly-2: IZon-Em4S8O72XvPLLvzIA
+ post-beetmover-dummy-firefox-win64-nightly-1: C0iZ7GACRnSaz4bVpWPVKA
+ post-beetmover-dummy-firefox-win64-nightly-2: BMRyJOQETseq-FVZyDmNrg
+ post-langpack-dummy-firefox-promote-1: Z-ltNiBVR6OtcEvYoGonXA
+ post-langpack-dummy-firefox-promote-2: fUMLTRltTcKzwEHTUgO38w
+ release-balrog-submit-toplevel-firefox: AsmTM6aNTZGz136nc1sicg
+ release-balrog-submit-toplevel-firefox-bz2: Nl3bOXrFRsKXNTAEWGQ_AA
+ release-beetmover-signed-langpacks-checksums-linux-1/opt: R70INVx1SQOuL3c_HQupxg
+ release-beetmover-signed-langpacks-checksums-linux-10/opt: L_9bKU7eTaK74ees9OPsQQ
+ release-beetmover-signed-langpacks-checksums-linux-11/opt: RQmaWu8yQVGatGJKcOukwQ
+ release-beetmover-signed-langpacks-checksums-linux-12/opt: G1HJ8HsETQObBsqEdW4RQw
+ release-beetmover-signed-langpacks-checksums-linux-13/opt: A5CChUOLTc-6sRYKEXOJAw
+ release-beetmover-signed-langpacks-checksums-linux-14/opt: PX0BZE9hSM6xO3FOLqfl2w
+ release-beetmover-signed-langpacks-checksums-linux-15/opt: eX_tcf9VRVG6A3h8iZaTYQ
+ release-beetmover-signed-langpacks-checksums-linux-16/opt: WSQagOrzRGKsCyBwzuwP8g
+ release-beetmover-signed-langpacks-checksums-linux-17/opt: BsRIMsXDQmKA4PbMlY3RdQ
+ release-beetmover-signed-langpacks-checksums-linux-18/opt: e4QgSToQRFmfi3pr3nNP6g
+ release-beetmover-signed-langpacks-checksums-linux-19/opt: Sy19Rt3tTyeD-f9d1p7EfQ
+ release-beetmover-signed-langpacks-checksums-linux-2/opt: XOc4YsTnTjqp8b9OaBIS6Q
+ release-beetmover-signed-langpacks-checksums-linux-20/opt: XO6fl2SmQf6utHPUKxbHeQ
+ release-beetmover-signed-langpacks-checksums-linux-3/opt: D6cVUe91Rl-ujNKd8V9AIQ
+ release-beetmover-signed-langpacks-checksums-linux-4/opt: CiOdCxp3TIqHTItYx0J02g
+ release-beetmover-signed-langpacks-checksums-linux-5/opt: TOlgrlkfR8eGBxvJ3fCnyg
+ release-beetmover-signed-langpacks-checksums-linux-6/opt: YAfx-_KQTny49HBSw5qq3Q
+ release-beetmover-signed-langpacks-checksums-linux-7/opt: aZKj5_ykRhmYHkPR9puFjw
+ release-beetmover-signed-langpacks-checksums-linux-8/opt: Ydypa16JRKKzdA0rRYAvPw
+ release-beetmover-signed-langpacks-checksums-linux-9/opt: X5H_LvuBSsKCekbEZ2bRjw
+ release-beetmover-signed-langpacks-checksums-linux/opt: cZDYaiiDTFO6L57KigFm2w
+ release-beetmover-signed-langpacks-checksums-linux64-1/opt: OuH5lBMHQl620_XL5KVxbA
+ release-beetmover-signed-langpacks-checksums-linux64-10/opt: A2LH1wE6S7Woeiq173VQlQ
+ release-beetmover-signed-langpacks-checksums-linux64-11/opt: b_qxYv5uSKCKwSpOdQk8EA
+ release-beetmover-signed-langpacks-checksums-linux64-12/opt: FTXV0epESqWEgLG8I42QNw
+ release-beetmover-signed-langpacks-checksums-linux64-13/opt: HuTeMIz5ROmSGx0q8yJTtQ
+ release-beetmover-signed-langpacks-checksums-linux64-14/opt: TdwknkVeQpW7An96PtcCuQ
+ release-beetmover-signed-langpacks-checksums-linux64-15/opt: UfP7dbqmR4ugUU41ibPNqg
+ release-beetmover-signed-langpacks-checksums-linux64-16/opt: WHDuKjg9Rzyu0nLiR_JF-g
+ release-beetmover-signed-langpacks-checksums-linux64-17/opt: DaUSzHp6R6WvFvkEBz9soQ
+ release-beetmover-signed-langpacks-checksums-linux64-18/opt: NR98OF2FR2GpRppbPlrjOQ
+ release-beetmover-signed-langpacks-checksums-linux64-19/opt: fFNyMc2LTAiD59n7uI9e4g
+ release-beetmover-signed-langpacks-checksums-linux64-2/opt: NYL17RUPR2W5mwHxFqncuw
+ release-beetmover-signed-langpacks-checksums-linux64-20/opt: J8gWyDBJRoOhylV6EwEqLg
+ release-beetmover-signed-langpacks-checksums-linux64-3/opt: Od66mcUVSdW5qzjET-N7aA
+ release-beetmover-signed-langpacks-checksums-linux64-4/opt: IUrV-KGrRI2jiYdmuH76oQ
+ release-beetmover-signed-langpacks-checksums-linux64-5/opt: S4lP9btRSg6Fzv09M_ADbQ
+ release-beetmover-signed-langpacks-checksums-linux64-6/opt: TTnzkE3fTlK94aON6fOTAQ
+ release-beetmover-signed-langpacks-checksums-linux64-7/opt: IJzTX-9VQxi-z6-o_fMUHA
+ release-beetmover-signed-langpacks-checksums-linux64-8/opt: GrHy0qB4SLCizByHCWzk9w
+ release-beetmover-signed-langpacks-checksums-linux64-9/opt: BkGRkYQYRmKcJ-asc2B19Q
+ release-beetmover-signed-langpacks-checksums-linux64/opt: K6TDWIu9QxSt75TLxA_9Mw
+ release-beetmover-signed-langpacks-checksums-macosx64-1/opt: Xd2W-BS1QoSCWj9MYL-DuA
+ release-beetmover-signed-langpacks-checksums-macosx64-10/opt: Z_DIGGjVTQipBaM-JabD9Q
+ release-beetmover-signed-langpacks-checksums-macosx64-11/opt: V4RijlP4Q6aAtWK5K54tzw
+ release-beetmover-signed-langpacks-checksums-macosx64-12/opt: Sdvn1F_-REeiZzJpC5cH9Q
+ release-beetmover-signed-langpacks-checksums-macosx64-13/opt: K08Zn9atQ0mrgThhNIs77g
+ release-beetmover-signed-langpacks-checksums-macosx64-14/opt: bm5FwMr0RzyUzdsUIK93eQ
+ release-beetmover-signed-langpacks-checksums-macosx64-15/opt: A0aI5N8wQ3ys2KZ8-GZaMw
+ release-beetmover-signed-langpacks-checksums-macosx64-16/opt: RnViq2D1TZepEeNSvnz3JA
+ release-beetmover-signed-langpacks-checksums-macosx64-17/opt: Yy2lGBeYRwCyUnI0XET9zw
+ release-beetmover-signed-langpacks-checksums-macosx64-18/opt: YtDHfhLYSxOUxKvnxBoIOw
+ release-beetmover-signed-langpacks-checksums-macosx64-19/opt: ASOGRPEsTqCz4N4T5sl6lg
+ release-beetmover-signed-langpacks-checksums-macosx64-2/opt: UnlPmgjUQEqc53FBFe5shQ
+ release-beetmover-signed-langpacks-checksums-macosx64-20/opt: YIkiEnXGTsCNd_Lhoj4aiQ
+ release-beetmover-signed-langpacks-checksums-macosx64-3/opt: AgTWGe0lRUOsu8gmQXsTjA
+ release-beetmover-signed-langpacks-checksums-macosx64-4/opt: QOa32xX5R4uIB20yy6S4yw
+ release-beetmover-signed-langpacks-checksums-macosx64-5/opt: E8vg_Yb0Tf2lqT4WZOPrVw
+ release-beetmover-signed-langpacks-checksums-macosx64-6/opt: DcZiLugGTfiBUv12pZp_4w
+ release-beetmover-signed-langpacks-checksums-macosx64-7/opt: TIH_iY2vRri9h52aXik9_w
+ release-beetmover-signed-langpacks-checksums-macosx64-8/opt: ZQorGYbWQEekHE-nl0YBHw
+ release-beetmover-signed-langpacks-checksums-macosx64-9/opt: dYeIXt3UShyNEkGTywKMGA
+ release-beetmover-signed-langpacks-checksums-macosx64-nightly-11/opt: dhYHslNCSZualrXJFabzCg
+ release-beetmover-signed-langpacks-checksums-macosx64/opt: BmAcxd1GST2FTjusrIWaeg
+ release-beetmover-signed-langpacks-checksums-win32-1/opt: US3RHBUPTG-9hQyowgN2Ew
+ release-beetmover-signed-langpacks-checksums-win32-10/opt: YlPaRQmmTrKL8O-QBrQHxQ
+ release-beetmover-signed-langpacks-checksums-win32-11/opt: U7FfqgouQIuCDI6XL-uK9A
+ release-beetmover-signed-langpacks-checksums-win32-12/opt: TG8T7cftRZyc-pAVG8vlHg
+ release-beetmover-signed-langpacks-checksums-win32-13/opt: Una3xeGwTwKLr06bWLK_vg
+ release-beetmover-signed-langpacks-checksums-win32-14/opt: So7N4x-rSuKqFvau7NLqwA
+ release-beetmover-signed-langpacks-checksums-win32-15/opt: GXB626K2QFyB7B2G6_5Dhw
+ release-beetmover-signed-langpacks-checksums-win32-16/opt: c59Vt2npT5qIwA4j7MbD9A
+ release-beetmover-signed-langpacks-checksums-win32-17/opt: DdID_qxASyy7Z2YFcUevAQ
+ release-beetmover-signed-langpacks-checksums-win32-18/opt: FjtKq6afTx--4JfvG0IuQw
+ release-beetmover-signed-langpacks-checksums-win32-19/opt: FhWQdBRUSQKBFZJlLM4n3w
+ release-beetmover-signed-langpacks-checksums-win32-2/opt: ftkaiX1dTFiWYkJ1OqchUA
+ release-beetmover-signed-langpacks-checksums-win32-20/opt: D_sV6M-uSAOVhsoTe_mQxQ
+ release-beetmover-signed-langpacks-checksums-win32-3/opt: GrxSlh_RRuayNnidwK1QAw
+ release-beetmover-signed-langpacks-checksums-win32-4/opt: E-SjMvoJRQ6YaKW41O8Ufw
+ release-beetmover-signed-langpacks-checksums-win32-5/opt: GOCMkzJKREiIZQTqLMaD1Q
+ release-beetmover-signed-langpacks-checksums-win32-6/opt: DNQQqPRrSNCJlBAnuWDsZQ
+ release-beetmover-signed-langpacks-checksums-win32-7/opt: XU47qN0yRmKKZmnSJyqyQw
+ release-beetmover-signed-langpacks-checksums-win32-8/opt: YuMQ_KQRRg267Z1kEqPJQg
+ release-beetmover-signed-langpacks-checksums-win32-9/opt: eIXEboE3TWSK1MDuD-KyoA
+ release-beetmover-signed-langpacks-checksums-win32/opt: FBbsk_sKRo2N_aKBAyr2Jg
+ release-beetmover-signed-langpacks-checksums-win64-1/opt: OghyLqj5TtOokFUxN8MccA
+ release-beetmover-signed-langpacks-checksums-win64-10/opt: cO_DyW-_RMuSQaDJDtsifA
+ release-beetmover-signed-langpacks-checksums-win64-11/opt: Ni1zl90iRlyR-NgDega3yw
+ release-beetmover-signed-langpacks-checksums-win64-12/opt: XX2NXc4jQv2_tgP3_iZXIA
+ release-beetmover-signed-langpacks-checksums-win64-13/opt: EOj7Tt2JR2qb79R-X3M3IA
+ release-beetmover-signed-langpacks-checksums-win64-14/opt: DL7j6E8lRliTACQ__GmDGg
+ release-beetmover-signed-langpacks-checksums-win64-15/opt: dOtqXD8DQ6WdUkyh8RnRcg
+ release-beetmover-signed-langpacks-checksums-win64-16/opt: aY6PUEwCTUys_XmD9CukpA
+ release-beetmover-signed-langpacks-checksums-win64-17/opt: DsCshlOLQ9W9SZB5325oFw
+ release-beetmover-signed-langpacks-checksums-win64-18/opt: InaLfuvwRUGYlBBpuyX2HA
+ release-beetmover-signed-langpacks-checksums-win64-19/opt: SsSimkG3SfiTblM0zyZ0bA
+ release-beetmover-signed-langpacks-checksums-win64-2/opt: cU2Mv82hTSOA019AT2uu9g
+ release-beetmover-signed-langpacks-checksums-win64-20/opt: CNhF2DeESRaCy_Fzm09P7Q
+ release-beetmover-signed-langpacks-checksums-win64-3/opt: aF29QPhJRoumDl0CwSQogg
+ release-beetmover-signed-langpacks-checksums-win64-4/opt: MYER8fj6RoaJxSn78FwjCw
+ release-beetmover-signed-langpacks-checksums-win64-5/opt: H8gz1DX4T9SDU7F0H1RC3g
+ release-beetmover-signed-langpacks-checksums-win64-6/opt: VfhefXMfS26QCT6_slRysQ
+ release-beetmover-signed-langpacks-checksums-win64-7/opt: RvSV3dj0Q4OA1AcqPHMdLw
+ release-beetmover-signed-langpacks-checksums-win64-8/opt: UPb-oZ0vRoqi4pL8xho1_A
+ release-beetmover-signed-langpacks-checksums-win64-9/opt: AmM37dQ6SWSOMdHd-csMsg
+ release-beetmover-signed-langpacks-checksums-win64/opt: CUPP42X3RxWGSz4e0qykVw
+ release-beetmover-source-checksums-firefox-source/opt: auTB-TbaTdiuoPqu9J0JYw
+ release-bouncer-sub-firefox: QZmmT4y6RBevS3_xlodUoQ
+ release-early-tagging-firefox: cTpT5UupQAWb2_r0XDKWww
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ach-public: dY0esueWSFGeVEVu8kpPNA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-af-public: DhboGhloQ7-EhpRDARcUvg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-an-public: Pj-K8H1MQeKUZkHAMsAYXw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ar-public: SkEzez12R3ebC8RKop941w
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-as-public: auo9ALdiT1OxQuotwcn2gw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ast-public: LPCYqTauRPimYMdjV9t1Xg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-az-public: EKwI-DgORtm43k9L7bpxpg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-be-public: Lnw1oL5QSQemyO_aLalg-g
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bg-public: MoQnwjzYQ_GM4j-pKk2b8w
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD-public: SjWwoMRhQUqqaQhG8elF0A
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN-public: NLgOUMR4RwiMztAYiJa29w
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-br-public: Vwk-X7V3Q7-pPDtZdlsn8A
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bs-public: c5269dUKRtilqTlfz-R7jg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ca-public: FP72EgUOSE-jNQIHo5cCRQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cak-public: PPltRXFRRnSFNihcxcbtrA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cs-public: RgnUiCx9QRmq1S0VLwP6gA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cy-public: YC88xwp7RqqxhcbDep3mwQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-da-public: FuIqLClzTkCVYxMiPKrbcQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-de-public: IMBHi3-sQWGXE3ABwT7CRg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-dsb-public: DawGB73sRou73ZB8wGNpZw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-el-public: aAEVQ7_NQXKPbI5gi0eqvg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB-public: EQpQ1GlaT1GXW2ToRw4yTw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-US-public: G67fZa2wRdKk2kOSgK_WNg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA-public: IxJ7Qi1NT-O5GFBEIPBLuw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eo-public: GcAGgm8KSj-crPfqF8Dcfw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR-public: Xb-A_ryMSOa0JJ7KmKfolg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL-public: MuPLX4beSaC_u87bFakorA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES-public: TdDt-A09RcCe09tdXNEpNQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX-public: J5DByMKZQBOF-FriXPWJFA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-et-public: YoGfOuYBRu6eF6IDH1i_OQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eu-public: DGkEAb-1SYiat7cNJMLKXw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fa-public: YftXe7gATeyqDO1Gc73TmQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ff-public: flskCG0WQzCLKcLfu4khtQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fi-public: GCOoGioPRFulQzBBXQE2GA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fr-public: PIp-BNAURRqTqdBSUz9qdg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL-public: RweTPrH7SXa_ClWWgA_1Ug
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE-public: NqB7gnbjQkyRRfQpx45P6A
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gd-public: Zv3XfcbMTxiO14ZhNTZjNQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gl-public: Wx0jWVAHSa-w_ocBk37uvw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gn-public: IDl8L35oS9C3oXuQnMbklA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN-public: G191Czy_Q5qoiQEBIeclbQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-he-public: PL1a_ob9QSOh4JYbQ1ck_A
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN-public: WtAR57KgQgGkANlNoojI0Q
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hr-public: bxlVnm49QzaJWX4KOp3thg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hsb-public: foKTt1grRkmOTbU-YhJBnw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hu-public: esO8hiLrR9ObQ-5sj8wRHg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM-public: bD3-D7DRTHyvTQvjffCjXw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-id-public: fG6eOLUmRuSUEPUXcnKHNg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-is-public: exqf1W0pSNCQcUk9DAoOeA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-it-public: AzLrEqu5Q463lfsAjaFU_Q
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ja-JP-mac-public: UhMTDRS9TRSWkFp1SrnICA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ka-public: S8sH3tOTTHGm0eGiOw-xQg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kab-public: QdGIBr7eRZu8R9sZc0wh2g
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kk-public: PY6VA2txSLCEDmZFxQv8ag
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-km-public: RJ463zVASA6MOtQquP2a4g
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kn-public: C8bYvKeWStGmNt7h8eOsPA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ko-public: CB62snvhQ1e-w6IWiGNDlg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lij-public: Db_jHYswQaOLLZDT3eRfmw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lt-public: EHPLlpyuRieS7T1xyEezHw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lv-public: eG-KO-MbQ1iix5FwFmTuRA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mai-public: X5M_NKJmSYyXZ0-xPQ9XOg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mk-public: UuJdetagT7-F4E5Tuvhv7A
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ml-public: XHW4SAvjQMGE-iBSCQ9d0A
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mr-public: WruD2_myTx-yEXLA2rL1Xw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ms-public: b_4SZhToQbOCIKI7NEOwMA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-my-public: dsYDhTkLSQewHyZcQEF9wg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO-public: Rm0o1H1QTgSb-fbfK6D22A
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nl-public: IRF0yhezTvauEaZojp47qg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO-public: EJOs9_IsRIqdVrXrGT-JOw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-or-public: W2o7Z_-6S_2vrgZgxEHPqQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN-public: UwnbCPBPQKCMugdxpcyvZQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pl-public: I2EdB_L4TlqK2ivPU7qazg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR-public: HFeI808XTgifDrTZ7Vo_yA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT-public: CMf3JuH7Qe6ro29U-eKzhA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-rm-public: YO30yLPURWGBow_NIpXubA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ro-public: LFBxiHHzSZq5JtHgqdD7sg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ru-public: Jh6ys5zRQNK2RHY6YVqZzg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-si-public: O_pXIuxrR3Kv-lHr2RO6dQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sk-public: a0S3yB7iShiKFHxO69LLpA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sl-public: Gz5N-lI8R8O0zIfiP1a7pA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-son-public: GeBHBTboTqKc4ENIfuosZQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sq-public: RiIjkmxvQO6iAPN3t6i9dw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sr-public: agxfPethSLyFPiIw0dG59w
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE-public: URMFVlJgSPmv0O3SJWGvWw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ta-public: CXWjfWFxSgyefWYIYOrIeA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-te-public: RXB4H57YQTKFl4rMLDKC_A
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-th-public: RXU4eWbvRRaTsRynIJ8Z7w
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-tr-public: QjUJDX3nQWuxyc3doJOTCw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uk-public: YsrVhfmVQ1uluEwJsJ6zIw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ur-public: a1z6LfwYS7G9earU6vhbKA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uz-public: f3MgUap0Tzi0fdbWsJwu7g
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-vi-public: M3opDjN0Qj-h5WYmSE1AdA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-xh-public: OgafI7DzQhmsLu0LFNya2w
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN-public: LitlxYlwR6qy20625S7OoQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW-public: dxPaUcT-QtKPKwUvwwLukQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ach-public: bmTSmpNjSiuLl8Ced2g_qw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-af-public: dOhqHGIMQneL64BdkSaUrw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-an-public: Scmka-6UQ627pxNtmsxUEQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ar-public: NAIme4FlQm2AIb4oP9o9Ig
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-as-public: Q2MQtX0sSMaoi1nDVpKuGQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ast-public: cDTro4SWSp6MpiUksOC3Xg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-az-public: N0W78Mn0QKaF2G6o73d0dQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-be-public: cd_6M5J1TmetVLD--6oBig
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-bg-public: XcB9PL-tQHOo2LsIzwSaRA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD-public: b1P94sFYTGi0EjmqRjNSvQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN-public: IZOSG4W2SW6us1DujdJaKg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-br-public: dgGeXhtwTC-Vt5e2bYbG-g
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-bs-public: Y852hZ6jS2GluyuWxVe_NA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ca-public: drzlYevrT3CNjhZCBmXzQg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-cak-public: KYZfrVkKRjeftPFkKJbmGw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-cs-public: O4rm1zmXRgStcJcTlfrxPg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-cy-public: LPiaqMRDSgmUZoC8xL-ycQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-da-public: NULUAOX_S7qrljTYzDGeZw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-de-public: NRlbzYIHSkeMzYhDgf9vCw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-dsb-public: A0wKQlHMRvKC4myAuP1ubg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-el-public: G-C76QqSRBO1H6g0R-ZubQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-GB-public: KRFKgU0lTtma83EWbHXakQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-US-public: KaG4YgkeQEaknmWPLr0Kqw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA-public: GkPDzeXBSLSk_XQGVBh3nA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-eo-public: RTppSncRQPyRvg_uG-JGPA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-AR-public: BhTsgyQkQPWTSp0L2_IW4g
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-CL-public: KXWYCQgZShitj6mgS1ebRQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-ES-public: EMSZcxpyTAGVUetW__3kTQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-MX-public: Pc-EuItCTLmXik0e3gnX6A
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-et-public: TJtZAuqqSfiKmfZxQ78vTg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-eu-public: HXIQBy7gS0G47LbaqemUkw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-fa-public: bnT_ySYcS8awRiVd0nXxVg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ff-public: KRiak2eXSPq-XRvb0bBhvg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-fi-public: Fs26qwEiSluTmokmh-JPRQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-fr-public: UuXG6TedTmi2uA2bfPplSQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL-public: QF6JoEwTRlau_U12TBHI7Q
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE-public: F0VJZNsaQEWQkTYcDuGm0g
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-gd-public: HZCSLzHiQcqSpK5zhcgMAw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-gl-public: E7261oTHSTSMHDQhAL62bw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-gn-public: AnZNznBOQmmvlLrq6cx92g
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN-public: csCRlmYpS6OWAE2n_Dwa8A
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-he-public: JacqlK9kStmWGQP7rjimAg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN-public: PHb0vsiSQZy2fxYksPLzAQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-hr-public: c1NwQJFHS-mHnNNZPODJfA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-hsb-public: TYJ1tdGgSBOBiKy5VRtk6g
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-hu-public: XoVgnHQ-TN6IIdKqbkbxJg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM-public: Sa_pdt5CR3SVS7OG1DBxig
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-id-public: JMrge8QzQzWGL0x6l8LqUg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-is-public: WPT0YB_lTlS9_xHUuZ_bVg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-it-public: KEMID7U4SbyRo9zpaNLReA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ja-public: U6XySv1kTvCvOzuluPpabQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ka-public: QQCVSF3ISMSV2Sgv3uB5lQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-kab-public: XPVo0ohVRO-YTtmoDz-85w
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-kk-public: IVMkX91oRC607qoGyj3DCQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-km-public: HgRfwGZhSLGXsgaRQIAZpA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-kn-public: QF2GoKMaReOo-kWExwD3aw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ko-public: e0ICT-pnTWCfE8qrtE9e1A
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-lij-public: c6BHsAJTS6KJh0wySRO1AA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-lt-public: ecbZndZwS3SErbGGdMMRIw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-lv-public: ULzjnEQOTEaw4s9l0-YzOA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-mai-public: F4ZHa9K0Qr6kz57wBKKtNQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-mk-public: f3pkoltxQrG1alFrq4burA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ml-public: JJ5GVeiWR0KyuJ3efZEVCg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-mr-public: HuV3V8AZTHa-kOz89XIqew
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ms-public: CuqRzwsWTlWyJRa_3C3R4w
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-my-public: P-xssrA3TgCkKWZYFZuVdQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO-public: HFyFNWzvRSGNNzEY58Fz4Q
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-nl-public: HLLkIkPOQwOkAp-Akl_xqg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO-public: Y7HH98x2QEab4ZuJNT25Gg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-or-public: K26GhwWjSKOknzh3T6gMBQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN-public: VOjVuOYtQwexK65UTQ8Cbg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-pl-public: dXnZPA4ETTm81Wq4uWJGcA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR-public: Mzf_FoBxSBG-yqkTFXxlag
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT-public: MA4ljm2CQVCnZZsZpShwYg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-rm-public: SbUW2_B0Qiyu7lPWGiQ-mg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ro-public: ctQVAW6eTka9Gpv8jCO0pQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ru-public: d90FttZkRiS9clJYHrl7pg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-si-public: f5j26KJLSa--Vp_4ajaeQw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-sk-public: co6ejij6TbKoISQgTc9yKQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-sl-public: WfsSEP89QJWIuqrgX0HFoQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-son-public: Z594QhVxSh2IiRhkvvwn6g
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-sq-public: P9-C9Md3T7WJhFrYqyknyA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-sr-public: OTIIuRCLQ2CScpnd2JHTfw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE-public: U8bXmjDYR9uj6u4wYWCAQw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ta-public: EB0ROwyGRT6b0oE1aYugdg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-te-public: UdwoDh-NSMq-miIM1Qn5zg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-th-public: O1GaafS4SFOem0SLz1Rb3g
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-tr-public: d7-Fb8fQRrqpkKfP9qOrJQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-uk-public: fchMe6k-SCuOxxpQPCvL5A
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ur-public: evpm9AClRgGieIN5l1f2SA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-uz-public: BvCrgY8hQMaID5ipDuyOpQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-vi-public: JmlGQs3KQdygLpDAiGFWyQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-xh-public: fUCE2Tg7RvqKzFTteSuqhw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN-public: Nscv2UbjQVG4Xzk2jF4Gdg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW-public: PSOVci9EQeifiV4XFvOaGw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ach-public: VxU8hRioTP2ZnI5AczySJg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-af-public: PmxKPMV2QRa2T7t4Etwv4g
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-an-public: EobNsgSUTiWj-N9r7erFiw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ar-public: A3VZFZEFQfWx811skzdIeA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-as-public: OYa92TwqSVWuFGnjWeB0mQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ast-public: BlagTDvdRkSe4BGreY61eA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-az-public: Ctnbo96cRZCb8e0Ul3frxw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-be-public: NYLLZFWPSsOUCIVSTQDkeQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-bg-public: Yw1noVG6QAKjepWevPsMng
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD-public: MRw9YU4KTJ6f9FjkP9Xc4w
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN-public: I5LbYHEgSTKbD-_hWQQBbA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-br-public: O5HAM19YTLyCbsxqJFeXOA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-bs-public: Yv4ydW7jT_ORi301t8gqTg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ca-public: LNZnZgfdSW2cOVxBUfqqtg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-cak-public: S6iKWRgSS6O74500V8pa-g
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-cs-public: FHlDareZRgOEIpDkmyPKTw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-cy-public: bLVWaOBnQtCpfFRasOySZw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-da-public: VeYbreMsTYeBKeo_CwKFmA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-de-public: Ll5gpz6rROy0N3dZuH48TQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-dsb-public: PdOpftjNTRWvdnzmJgbMcw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-el-public: Zz5pxUEcRTKEpA11RfBIMQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB-public: WdxzrTimQpGPwOesFYNrww
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-US-public: e2J84_VKTEWcVEbM27ds_A
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA-public: FYY3sFMoS0CuBLhvprG8iA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-eo-public: UcznsXgqTsWxwWkZkX2Log
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR-public: PMdfmIghS2uki3i38kySLw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL-public: Kood2IGjTfeJEu2rqoFOoA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES-public: MAqIKIOuRJ6EToCtJH5qXw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX-public: AFppzlYIS4O3nj-wjtUT8Q
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-et-public: XnBO5yuDR9eUhrAFRZB4Gw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-eu-public: H4uE03n_TfibMwnEGqBB3g
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-fa-public: XrXRDCpzSfS00WVRIVOeYw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ff-public: e36w8E8TTEyBsmUpYeQfow
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-fi-public: AXDQMSJUTvCWwD-_xm7CsA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-fr-public: Y94gleXXSi-uuezcUPHvbA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL-public: KhrCVs1QS-qzaXAc12Xssw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE-public: Q_glFllpR6Kaz1nhjevL_w
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-gd-public: JbxarqDjTSWcRHXbizqevQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-gl-public: KJ069PaPSdqWnqKMSxoIQw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-gn-public: XGUA9M_IRUGkP2Z60VZMhA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN-public: D6s3U2RSTtGiugqMVcWh5A
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-he-public: MfzsDI2pQd-1C5ENcaCd1w
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN-public: cGNfr2rLSJW9HXIOgjYVAw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-hr-public: WY3lR8BpRAyNTh0M8Tirxg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-hsb-public: Kn_YNY9vRy6Sd15JDAMqPw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-hu-public: IpQfMy4-RgK_KvE0WaEnHg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM-public: ZBkwq8h7SxaPXKl6Mnq-tg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-id-public: NZnzdJ6QQLSUNzF0UdOPLg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-is-public: dIwIFQIVR_6OI7tR09ZzUQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-it-public: KlMY7isETVGrPrW5W3WLUw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ja-public: XmKmt3CfTOe4X8zKCUqjMg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ka-public: Ngiw1yDhQIuYuvOn-xTKDg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-kab-public: Bpixh8TkQmGX2r_5OcOVpg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-kk-public: TwaueRbpToClZHnd7RGq4w
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-km-public: XWeBSF-eTWiYLaV7wo81Jg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-kn-public: PtRQO1ukQWWWKu_0Jq-pMA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ko-public: bI1jYwW4QD6pO0xId5I31Q
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-lij-public: Ca_2l4d9QNyHLlHwYTl8CQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-lt-public: YZ-znrj6RYa1euUNKJv3OQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-lv-public: Ok5NbcBcTYm1DISqJyeJ0Q
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-mai-public: OUUg4S64SsC8o4vxgywyXw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-mk-public: Et163xNSRb2Mb6niHgJGtg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ml-public: SEubLfBiT42cVczIchvxrQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-mr-public: bbo5pXNmTm2XEHqUb4cdPQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ms-public: NQJPc3faS6msEm6ifMHo_g
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-my-public: Nm6Ho5RlS8WD6W-wp5lSqw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO-public: cXz49DGaQh6_WJnBDQsOEA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-nl-public: KJs7olrKQSq_zuu_MXXViA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO-public: b0lEut7uToyly3X7PM5bRg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-or-public: U1I6I4jISW6EKaSMyJIdbw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN-public: BijwbZNRSAufxiA-G-2i9w
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-pl-public: KRDl6NBqQC-EVGlM0iDyOw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR-public: QQM59K4STKa4wxMXzG-YNA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT-public: JI-mNfF0Rw2Q6eQzNBhb8g
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-rm-public: ND57W-HmQkWEeLO8K25wqg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ro-public: LzlAP5RhRMacVcztTkHyzQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ru-public: VyHXAf4vQ3-IEsNjzmBM-A
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-si-public: NkTAE8zaRGq3e3h7ir-G7w
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-sk-public: WuF_bpBgSma951JY4_8SgA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-sl-public: bHhi2C1ARPiXr9rJ9Lvdow
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-son-public: fRHa__NxRxSCoNfLSsx45w
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-sq-public: KAv45tUQQCyyXxECv88BBA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-sr-public: a2wO2tnOS9a0nFwwozaJxg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE-public: KPq-i_w4QkCG2hJowTHpVg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ta-public: Ne-m9_qoT1S3n1eJpsW3wg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-te-public: ZvtjZYyUQEG_nhmUsiEQ6g
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-th-public: En5Y-vDESDqU1zeUkhrbrQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-tr-public: ahiHQxTTTKGmSbtJrRNsvg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-uk-public: bCVX_xEJS2ClEcLa_ad39A
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ur-public: NMIly4otTP6knymDu4EM6A
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-uz-public: Pb2uPs-3SzaWpKLyRcm5TA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-vi-public: fDUY8TqOTV6oiRxH-0gMaQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-xh-public: PB6u0L2DRtWtk81ahDB8iw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN-public: LOlQxOLQRiyTFrDDBLMkfw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW-public: e_EPQ7biRyyKKuA-e0oQDQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ach-public: bdgdeHFWQmiX5su1vopNCQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-af-public: UpsCg8dZS6q76tw4QylJ0A
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-an-public: FLQBgCP2SEOZuUMVXJSIew
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ar-public: MCR6fIE-Ql2xnjAUiXxB7w
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-as-public: BCkdJqXoS0yxEkAylpXZcA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ast-public: fvuQHDyIRImpXwc35-W66Q
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-az-public: TpBFMYbARG6ARk4SME6h_w
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-be-public: MkRiZM1ZQsOF9cQ_6BllYQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bg-public: Ea1UU51gQ82tm34WwFf5XQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD-public: aXrlEKpoSUu9kAspvhcaKQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN-public: Q7tOwo5LT3GDCNjvH60fuQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-br-public: YkJ4lp0eTXWPcFr773IKkA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bs-public: P_Fr6ayxROO8D_tca0vZNA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ca-public: Xt1Gok7JSLmgvoDQwO95-Q
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cak-public: cLV13AbhTeieRhXus0O7CA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cs-public: UkbTBIJdQEGO0udxq8xHyQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cy-public: DDrmGYA3TTChg8t64jZAfQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-da-public: CEM0Ez2qSmSNgY5RI9AGHQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-de-public: B6JowQcTRIK1QO6mgsI4OA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-dsb-public: MF9cfw_ORkm1B5OBtMUGOA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-el-public: PvLAacXeRzyeQNldDGlARg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB-public: aGMOZrvKR8yc7LeP-Orw5A
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-US-public: JbCJGW46RFeNaiHQg5zd6A
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA-public: JhNMXyfjR1K7XP6w6L9PEg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eo-public: RShvdkn3RJyC3v526e2CrA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR-public: LWgA8ZxzQC256kxHArE8Tw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL-public: BKdw4GFrQGCmNKfNUkJKFg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES-public: FkqiMgX_QhS640Yn5Mbaog
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX-public: UySXSsLjR3yvfYdlNH-0Eg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-et-public: aBUOi5HLRW2-reM-UzafpQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eu-public: futYbQJqTj-ukv1d7_23hw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fa-public: ao7__LErR8K_2JQM4tjZPQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ff-public: VFJo_zizT-eHKkwVY4rZ6g
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fi-public: dr_mqZCKRsm7jjAU0u59KA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fr-public: D_hP8Hr-T9aoJqu3yY5yDQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL-public: UmAL6ebpTWa_6GC9g06EZQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE-public: Oy6260nPS5GmQbC9K7zYJg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gd-public: ckDuOPK3TGK7p7qjN4VPIQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gl-public: AWP74qo8R36DJp6A9ev5GQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gn-public: QQ5x0nLGTY6Jss7Fh6IxiQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN-public: etn3D4T3S2ejTOnC4Rj_xQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-he-public: UaUXM0pfTuG1GmIoL-PGZA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN-public: Twe0iyNwRC--Zmd0TfrCbQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hr-public: MbEl4DKhTSO-mmx3OHl3ng
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hsb-public: YzowmadKRPeTAvy2P0dpQg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hu-public: Y-CQfMsnSUChutKUypxVBQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM-public: P6QFlhYvQ2mtEgVEKJX9hQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-id-public: KTUWHj6bRkWzwRkOIP2HmQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-is-public: V3aukMRCQj6jW6IVieyTLA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-it-public: VKVPk1kXQE-lwkCxA5IsfA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ja-JP-mac-public: ShAfiUeTQ56XcNmP0dBNSA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ka-public: Y9hbKGKPQpmXHZ9Hdkgt1A
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kab-public: ATris7DfT3qSJ2P7vGmhmg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kk-public: Pn1y5-_rTTiRC_SoMxjcqg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-km-public: IZSr7LvUTcCbGYGErEqhbw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kn-public: QTulGmYpT4e8P0HHxz-dCQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ko-public: USvqhkYHQyOtwmWj_5n_Hw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lij-public: Ba178gfgTsW4EzNpzJKuDw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lt-public: YlCdenwZRDCeIr250W2TAw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lv-public: eaHlStjyTWeQaiVVBKNOwg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mai-public: DbSLjuk5QV-TB_u7A7QU3Q
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mk-public: KA7LEBFeS4egX174_Emp5Q
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ml-public: XF7CWi0xRh6ZX61dm2fBrw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mr-public: d38HH_hbRjeVOVNMgkQcSw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ms-public: fFRFtBOIS7iPAVLd34go3g
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-my-public: TNDQ9imTQuqAVN90hOBY2Q
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO-public: A8i1pe1_SXCsGlTQo-Ne0Q
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nl-public: H7Xh_mcdSzy0HOdbtbli3A
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO-public: XCWfV9EMSwmtHs_tO2Rkog
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-or-public: AjwcCv7JSOGP3Cy5G3LkdQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN-public: d8G-NmDqTL25um-YsFtg4w
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pl-public: fI-TOLbQTdK3kkBYqELUGQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR-public: N0Pei4IBQN-2HRRyyxq1lw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT-public: KHmGasCHT_6rTt9QorX3Ag
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-rm-public: WGBWtxrBTbmgXZggWToCUw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ro-public: CGEnKtoCSO-M8CMk2mtBXg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ru-public: DTfNCcAYT1GwwlhhjSRRVg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-si-public: dgoKTGnnSHuzNx_R75OnGQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sk-public: ZayJ1FS_T0K4U-ZLOrV5ig
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sl-public: Gv5r_3-ETSCuuZ_C1aEceQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-son-public: bcoRe6HOQjiDKj7wgq7_Lw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sq-public: RGfxIcStS1i4nwmRPMGIlA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sr-public: PBs68FNoRou5mJ8P3yhnxQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE-public: P5Oh3P8AT3uuz9cMkX9OtA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ta-public: SQVfhOxcR4m5RQ8kDtBkJQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-te-public: ASQa9BnfRWS4PqdM5RJ3lg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-th-public: X3y_Zf3JTSydm1aFwp3ytA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-tr-public: Kd0jnFSdQkOtWp3shp_Fjw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uk-public: I3rLBcrYRmOwmMagBFO8dw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ur-public: O5S01xrwTr-a9CEpltKqsg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uz-public: U7RnkYD2TPChiI1iQVJ4zA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-vi-public: KZJJm9JgRfKJthlTU7pF5g
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-xh-public: SI6i9WcHQK2bjjY_-LUCkg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN-public: VEDdsvgJTnieopWDtj57xA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW-public: XtjJUkZcRqmJo8YI28hlEA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ach-public: KhGTagglRGCN9GH7qpa9Zw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-af-public: S_LFVOxKS-u8ry15a6tDJw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-an-public: Ssa3mxvlQ3KiNBYXUSpH2g
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ar-public: HoZgoY0eStOSoy48gsf3cQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-as-public: XPoTpSNjTI24mhOuYxyS5A
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ast-public: U4_ThJ5cSPq1_zbX1fH-rw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-az-public: UCWq6pmXTRaRj333kB0xxQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-be-public: B0lG7BjHRTSdEw0WkGtRDg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-bg-public: ZnZCy3mXQoSxyYh4ObocXg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD-public: fDC9-zPrTeS9MfI6n631pw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN-public: EpgPpaTNRQKVgH29VhJ9DQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-br-public: D5hxhHlQS06ghjevauHtYg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-bs-public: X0o8P-J9RSmf5F2v-2eNdg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ca-public: W9ppgscaSbCOr2riUK_zkQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-cak-public: EwpXGWSdQkO8QV3M7agmMw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-cs-public: H2r0q6_zRsCNlh51WS0i5A
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-cy-public: NJpBwxaQThOArQC-d5d7JA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-da-public: L-nHHFt1QlOYE8DjHmTbvQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-de-public: AqUAh0e2SGGYcJzw-8XW3g
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-dsb-public: JsgyJseZRWaiNhGgBMUcOA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-el-public: Izkqddl-TTeG69l5LHZUIQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-GB-public: Fl6vOCBVReKU4TQJAzXrjg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-US-public: AO-7wI9OQYm7NxedCuz8Fg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA-public: ceznJ_jNSbekNzpUwnv8wg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-eo-public: e8W6uV7GQ4S7zbphALCnxg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-AR-public: djLbFjkPTPKk-g_dAyfYvQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-CL-public: CVAGbVH7RfaBYZyQCpryxw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-ES-public: YSzpDHeOT9uvz26pb1HLAA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-MX-public: R_MPGB59QeGtk_Okb30f6w
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-et-public: fvu1i1Y4SguP2PMQ7gUK4Q
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-eu-public: aXIW9BVNQnyZZof1AIKHzg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-fa-public: c7t8K0dfSZaIeZVROB_4zA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ff-public: VPl--q9sTaOYBMijwbz2xw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-fi-public: bJuP7weuTTiPWLmYTmYTXw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-fr-public: M0pgDnUIReu3vcT1TnzZxg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL-public: P8BHUK6cTz6t-xlsmhYhlQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE-public: ADQX4ppXQOWHySGKkj8hxQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-gd-public: cpIPi0ywQmmH6zc-bznA0Q
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-gl-public: JB6DExQ-T2mc_ibOvdMyLQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-gn-public: YzJPx47uRyejrvJYyxGZ-g
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN-public: MaYwViQ5QkmCI65dwxXgLA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-he-public: T9Mhkyi3QwWkdDK4flf1PQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN-public: Cetf_3qURDyHqyv3mN021A
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-hr-public: CEd1vCjGS7CKdq_MHHxinw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-hsb-public: LHadRR9MTlO8GCHgc6XizQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-hu-public: DeveDMA3Q8yyU14lermDuA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM-public: I9rUIPFyQkiVduujLpzAsg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-id-public: AftILQYIQ5qtpIabfRL_Sw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-is-public: cMG4h3L9Tti3k5ayH7CtBw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-it-public: UjhpgctdRSOwvYHQJddM4Q
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ja-public: Vsyu_LNYQu2XhgckYUZhCg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ka-public: QZyIT8_fSOu5mLVW89Ey6Q
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-kab-public: dWfaNtxdRUC5VNr-tFwgpA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-kk-public: ZCtTpQMUQoydDCVMQUIV9Q
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-km-public: WqQznDoYSRaow48_X7kCOA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-kn-public: EXlf8le3QdmNmbkphhsklw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ko-public: Aciu5GpxTxWhs9hdhB0F_A
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-lij-public: OqDGxtlDRV6IL9RABjBcHw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-lt-public: HAwOMwrqRYSZnPCcYdOMqw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-lv-public: EDb2sq_nR56Pk8DtRYR79g
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-mai-public: fVNXTIlTQqGKig-n_FBWMA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-mk-public: LaURw3zaRoSvhT8VflLHDg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ml-public: EeYz4BSGSOyhDxwOzduieg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-mr-public: ZIZctQsLTv-aS-YFR5Snkg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ms-public: b8uPXECYRoOe-GYZLWaC_w
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-my-public: OhfUYedWRCKVd3VmGb1T7w
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO-public: RnCKTKEBQjalQ7-zKetSfA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-nl-public: Wpa-YKydQQyF_DQTnEtv9A
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO-public: EXbaFH7RT4OLlTI1UZddDA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-or-public: Up2aok6bT0WsTpcbuVxJRg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN-public: YBOeT9QwTHGDkwuhQa0_yg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-pl-public: IEsxtDWRTy6NvlZkw_F7Dw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR-public: RxOPpiorReqFnIygx4eZ4w
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT-public: eRQkypwuTOWgRksRln7iCA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-rm-public: I-QYmDoZQ9mK80q2iI6ojw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ro-public: NlMGF_FHRaC7XuERQseXPw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ru-public: LFq3MC8fRLGedlwherXWUA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-si-public: XVByGOUaTR2fj0vi2XGP6w
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-sk-public: Bh8EoXmNQJWFX2QVhZwNsA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-sl-public: Vk_FQmi7TRy8u2EeVJhTww
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-son-public: UGesbOH_QcSAOGySXeWkvg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-sq-public: Qm1M0iWfQTmvnZuLLiqTeg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-sr-public: Jjxk0ZZPSSeT2mCg_3RfbA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE-public: SQvBiY9aTVG0EZISsF1kdQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ta-public: cL5Q-umXRMecYKAlXZlmQw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-te-public: F8HMLeElQR6pX98lZJWH1w
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-th-public: NOzXhuUYSZ-pHL3nbnf-Dg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-tr-public: JlnIJQ8kTFWPP2l09qn_WA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-uk-public: f-UWSWNYSl6bWzz4zGYg5Q
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ur-public: NVbNed5eQeupBZq1vGqk_w
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-uz-public: UYUtG_5vRR65GSoddaBheA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-vi-public: V-5N9xqcTOm7Kss6J3Mysw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-xh-public: KvEGw4nlRquYoJTc6xZ8iw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN-public: Pz-AqHOqR0Ske7C-oJNDcg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW-public: MXclepKJTBuuidoSviJrCA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ach-public: UlE-_79qTDy6kZOCN1rwzg
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-af-public: SLkwG5gaQUavB3eL4f-n_Q
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-an-public: TXhk8uwLTQabK0c1tV0Auw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ar-public: YBLnpW5FRVWY6XjGcfxXvg
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-as-public: eYOaxIJyQNe9jKsdgaQMYQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ast-public: PosYXfhLQFeHPj-WuWW5QQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-az-public: Cs4eo5UiSGWnzK9EWD4KXw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-be-public: WKgBJa07RxyMkJRkZULG5A
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-bg-public: HFiNr1ogSZy0onDbWw6crg
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD-public: ALSiVOHmRy-F6ko5EzLcyA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN-public: EtqsqUL8Tr-jfql0Bd7LQw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-br-public: a1qa8L8yQbWkVU6Tj4vTyQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-bs-public: aSmIqYsJSRqCrIzVfHwsJQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ca-public: HXP2vzJ-Q--4e_Fi83qfMw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-cak-public: Jh97-ZsMSYe_trHVvWfnaQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-cs-public: f29UzSFLSyS-VTolXMShvw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-cy-public: ThD-9mMASN-0PMseysPJOQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-da-public: Yk4EcxhFQrm2hxRcplHUvw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-de-public: E9srDEVETDWy8RFNUw6b4g
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-dsb-public: X_aAa87wQ9Sz5FZEAJgLyA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-el-public: EWz_fo9wTg-72cbs3ZblEQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB-public: Hb8hGezeQ_220DQaNuHQIw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-US-public: TIgbAeUbTFOKt7SvjZJmQA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA-public: fmyB2IzzR2eguxVG6kPaxQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-eo-public: VZqjsRvARw-CUf9D068keA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR-public: ezMZZ-B_RvGFqYC_p-B4uA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL-public: dO3aZW4cToiu4OQONTW91g
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES-public: HKR-lsYqSZC76HeE6pOrsA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX-public: ILfrQ7gbQCq3DQ8m98EjTA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-et-public: WXQSz7XDRHCnMqx3DHd_lQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-eu-public: b9Jl7O-WQISo7qTybmnHkQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-fa-public: B3mi58vPR0eQAPq895os_A
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ff-public: Cg3xIqz4QJ-V8tqWF221zA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-fi-public: T3_8dFn6SO-iT1HegOt4Ug
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-fr-public: B0dEBV0kStGBdB8jijBgbA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL-public: Xh5XGmbRRmiL5RfCicdxJA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE-public: WoQuItnjQMKlYAJHglpn3A
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-gd-public: TKYzUgpzRbGou5Nlm7saLQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-gl-public: EEteQDmjREKA00tJtgNQPA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-gn-public: eKhY0D_sTuSLN1cgVXghKQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN-public: YlnGCNBpTSKMzOZHijNaYA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-he-public: Py8ZnU89TFq_XS8-8w8ubA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN-public: OOtjGXW5Tba01kF53ehhPw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-hr-public: R5_IImVjQACikGa1hJ6dJQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-hsb-public: JowVLwQgR0qA8jlZlxYwug
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-hu-public: D_eL_fPLQ2y3eQ6IF0xTZg
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM-public: SvbOrlpxRGyb0MkRnUjGbA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-id-public: RX86xznjTF2PEJxPk9vh0A
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-is-public: P-d7QWOmQlibT3cuSM2LZw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-it-public: DjV53xw6SmeWtSP_iNTvFg
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ja-public: aod9P02ZRgO02Em6VIuJ0Q
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ka-public: TpJtD6XFRbqjaup7ViThuA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-kab-public: Ne_-MtnNR4mDpgffYkjxHQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-kk-public: G7JLRq2hTOOkaFNzTYl0RQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-km-public: D9elh1y8R2O89qGF22YLTA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-kn-public: LEONW0wESZydxb1fxfU04w
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ko-public: b5aDZCpvSuarqJ1iVhNOaw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-lij-public: beD-0SAsTnyERfU00149qA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-lt-public: WiFhvKnYRGKX64X_sEdhjg
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-lv-public: NFo39_AiRXWldD5C9zdnOQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-mai-public: deonDFvzTKKj_1eidBsh1w
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-mk-public: X-qV7ONPRVK2zmq-V5BaYw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ml-public: K6ZZni5sQde_9nnBthjDOA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-mr-public: ZwPDThssSASMGu-1pqUlpw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ms-public: Th8H_IZYS4O8Pm3OjV8Tsg
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-my-public: DnmltDpeRbmkP_lRO41zIQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO-public: Wt0lM88JTvqJFW25TfzUAQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-nl-public: Fvudxw_CQRCKiMeWjaqtQQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO-public: MqZo_FmwTt6SF3RR2Zd9zA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-or-public: VOfp7WssSySnyj7ORQ0wWw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN-public: WLix1r5tQ9qzldKiteNutw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-pl-public: LSLyBvNlSKyqIv1YQwzDAg
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR-public: WqY_1nV0SouUdOxEi-N83w
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT-public: A8s5mY7QQDu9CaZi9A3hAA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-rm-public: YEbQwqWgQ0uNw3FtnWIBEw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ro-public: bV0JJGldTmygFKyYPV0FFA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ru-public: XI5b2VaFSc6Ig0gvCZWYGw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-si-public: ba5mqufwS_qk0mIapRkUVA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-sk-public: USNlNty6SL6kHE4eB7XHcQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-sl-public: DUte6fTnTNO9tvSlOjrrug
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-son-public: WfB9X1qmRgyUy3dFUJOwpw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-sq-public: IX5tBOxrSAONm4ER3dmE9w
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-sr-public: a7gob-n1Q3i7XyP31CQCgA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE-public: CimkaNOmTMqcpTwCEOrfqA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ta-public: Hnd393wMTI6it2hB9r5u1A
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-te-public: Ik7f88URRByvY8iNa3WXgw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-th-public: TdOekF1xRZ-fdvmuL0beUA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-tr-public: LXIdeXkORr2nGhhNyBjlVA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-uk-public: N8s9vdUjTDWwD65wblbrrg
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ur-public: XgqrlSmPReq89A5LD1iSMg
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-uz-public: VOHCk6AgS6CEFqDdgj6rbQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-vi-public: UumEL4FQSPGCTiRK9xXDPA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-xh-public: GbRcqXcTSN-2Cpc_6Op8pQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN-public: DGzlx_D3Q1a-pQvcz1yAxA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW-public: ZDWMIUJ8ROmwpSBc2rsqEg
+ release-eme-free-repack-macosx64-nightly: TtsvYDE2QHWzv7TjPL_lpQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ach: RChsgqxYQguNDafkfL9q0w
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-af: Qvawj1_fSJ2r2CzMTuouiQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-an: Jvt_PJG5RZ-x8IazROOF6Q
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ar: bAXLR3gZS2a1soJt_QmG3g
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-as: VA26fDTpTgamHZ4LP-CG5Q
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ast: KDToiq-aRqmFFOh8z1769w
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-az: HCPLt8C7TWKkZ1FwZYBiJg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-be: JmtwI9qFRoCBw443LBilSA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bg: YK5FCPBQSoe07AeukjrCwQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: AYRNzyKMScCKxKoTHBlISw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: A_VmwgyHTuex2mZXlqrWqw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-br: MNAHQYU1TmCojfgr9Ji_Tw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bs: bS8LHdLaSsaA163CubSfXA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ca: ehu2oJqrRTiwMU6o-3oSMQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cak: Dp2jEf4cQCWC_T29i71f5g
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cs: JqhBG08BSJCkmIgGE6U-eQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cy: O8U_AHp-RHmBrxf7DrwIkw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-da: bNwYoPWkQRmh6-l7VKcFkw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-de: O0HgcHSYS7inP_oy3wTydg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-dsb: CyyVeItETESoIRcPH9Ap6A
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-el: fZHLDm9gRg24-xTMUaPtOw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: PjhzGusOSvSRNX_uvaDqjQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-US: FZbrF9RYSymxxdrTeVvDvg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: bTHwdgKbQBuC3ljVzjfs_g
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eo: ZavhHnX_RN2GhC1Mf31Psg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: feDB1ILZSw-slB1GDrUpeg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: D9zBMxMsRlarsmS9Xf6J2g
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: W0MvB0lAQ2y1LXN38AoKJQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: b2IQDvnJT1ayxSMgx3yDxw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-et: f1kIbvBRTeqqrRC-LmrjaQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eu: aTlnfHLrTw2ysuZaOw2kVQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fa: bcuq-yfFS_mLB9OhWSePOA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ff: HnzvmHCiQY64r-WUGKrlLQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fi: Ww_gGjqYQoCqa2B_uT4wwg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fr: TRvHm_x7TDSfKtMARB_62w
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: KbpXGoTeSB2wfnLTfTTzYw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: da8ocTojTp61vfjNXCzpNw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gd: Nm8-cmONRyKs-CHoxFGr1w
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gl: HrHDE8FmSwi4w3jI2EbrEg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gn: PZJx9PsKQOS3sc6CzuaABA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: NW2mOt7hSC2dfZ6c1wkWAw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-he: R-9WgGw8RaezU6AXo_d8Xw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: M5q04sJySVaYs6ye_uKKfw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hr: GoEUPW0ZREm3GJHrvcdhzg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hsb: Qkej-tmPTRSCSiP7mU_rjA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hu: B6FCLViFQueOrTHpxGFNFg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: Dxcganm9SjmegCUA5Fmj_Q
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-id: FnAPIs5ZT1K0vLvVpisRmA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-is: byk1GutIS0y8ww6bzvvfKw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-it: U8QHrjZAQAiOzdMTiWodEg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ja-JP-mac: G-xtOQfpSsGhYFxDJpApeA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ka: Q3wLQME9TOKaLqIRonHQ5g
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kab: avtSZT8dQlemHd7xUpD0-w
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kk: VO-00tuPSPmahF7ryGkCng
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-km: V7S-kxToTomtgKvoeIXGHg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kn: IuxWJ9ibQjCrhFw6Qti4EQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ko: NjVp1B4gTCuXA9T0_EnPQQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lij: Ve5elrx_QkWCQMG24f0uJg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lt: Ps3PHcwBSGiOlfx6EuY2xw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lv: TnkiyMMRR-mB-Po2VSuh8Q
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mai: HKKQ4DxNTh-Wu57I2G-oWQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mk: f0pewahcRBajx856N1z3OA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ml: JPWIOEl3QCiQPP6XPE-6Lw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mr: frdrD75JTamA5pclBGbqqg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ms: HrAH0pnpTE20Vrr4rtIhyA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-my: V4mj4e0jRdOYhROT_d3o2A
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: LpXnwECmTwaouD-EXraQ5w
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nl: dZt0tlYpT0uYkrd1ZA0Czw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: M4PBNRmmR8SexgyC79n55w
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-or: WnEjrfR7Ro2slnC6L84V8w
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: GtXKQeocR8yZjkbxjtY2zQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pl: fTNPZgRzTHyKP_HG97tDEQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: YldKUA-xTESm2HtIUYnIFQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: KuukaWNKQJ2lmeGjjEH-0Q
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-rm: feRrl426ScOU5N6lWQ_ozA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ro: dywq5ZrWQV6dT2NyWA9SFw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ru: F6DGaEUaRAW-Ek9nm1uoBQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-si: NdsnWVPaQrC6COB3RQRPCQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sk: X5_vtQBNT5KvOZyF2B3zRQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sl: EjSvrMj5RXG77ft9NW7ZgA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-son: Nj-qwVqsQnKrBo5MRZIxUg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sq: bzhkIcKXTN605Bi4fH6B5w
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sr: X-EOVAiTSbam5w3zqNxrMQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: WjP-A3mtSBezdFbYrmOvGg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ta: WJTu_WOBQCihd_aMz-OnIw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-te: KOiua81hRZmpKlDRVJjHtQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-th: GeCQJB3TQZGZFty4ANCVjA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-tr: YD1eXFMTQkGgwYy6wRUE_Q
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uk: E19cA3V0RPKjxbvKcU0TxQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ur: SamqegJ7RbyuCeb-JilvVg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uz: R_ldD7_6TF68wtXLnX7isg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-vi: G_96vM_3RmieUvTEJVvMjA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-xh: GI0k_4YQSqaGPEh8Gyfnew
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: Nq0yTbkAQMOqs1OEuDVdMA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: ZZEFA6obSfWWG9GQFQlvrw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ach: KpCKtGflQka0P03DFHHMOA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-af: d3j8yTneTcqpsbzQoQ6DRg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-an: WioISVpZSeqZ1QWQSm3IlA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ar: Ga-LYxMoTQmdj4sQsHlD6Q
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-as: fS5JF1WJT4-soqmQOnQ9TA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ast: D0yKjNkdRvmjRZ6wvfoX8g
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-az: TjJCdYqcQoa3IuT8_UrzLA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-be: J6j0ozfqTLeadDTQHz6NPQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bg: FVTpRfvhRRyuNPuhTbJSKA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: cHQkIU0lSMOZR_pYRLmEOQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: aQft06SpRja0G4iNjH65Jw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-br: QAzV69l_TcebHwce6mgLgw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bs: PL6bgWFISra_nl-HhQeBeQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ca: QYV5bbvoTleIiZ31xtm6ng
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cak: alR-cZpNSKS4TlrujQOwXw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cs: L0dqR9NHRHSEVJU_KGmbcg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cy: YA775icDSFGYfvqJzjmAsQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-da: SMxu6NU5QZyyLPrfVn2Trg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-de: Cz8M2L_dTbOwWl7h9xS09A
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-dsb: ObCpAHa2T4aOEfhqPWJN0A
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-el: Iu-R1vQhR4yg4-u-XekT_A
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: NMxOLJ2BThiyeREXUCMfjw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-US: dYE12GtsRAiyFcDfjGFL2w
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: FzfPo-shRU25gK4PvAs9zw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eo: MN-J0WvJQX-eQqpMyptTHw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: FxIHLQ38SRSvAwAHM91GIg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: OxP5kOHpQrejUxaux1PvsA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: DX-JYoCtSwWj05Hr4585Zg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: J8F3UZEVR2aYflJaanEXfA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-et: NBO8AkZWRcOXeopc1MjzgQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eu: SJa3RYxDQbiG3VwLoTujEA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fa: F9Ew3iMpS9yRnM_Z0jFjbQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ff: HaHl_sgySIKVBSCUlwdEtg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fi: JN_GxUWqRXW06VhVtWxiOg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fr: aNROH74YQdSuuYuMiW7x9Q
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: Mz9crJtSQvGbCcn4GLO8_A
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: ChHJvJMxT0ypgNCp-P2oBQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gd: caZRuIHwScGDcsJA2lYP3g
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gl: KkgQQKi8RByYpkd4h7VIqA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gn: Yjch3XRGROK4uIcSuCsN6A
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: UJSn3Ud3QOWyxC7e2zUZfQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-he: f5FXBqJfS56VCNCQMMfQzw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: SgNbFeoJSnWQaJtILpHr-w
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hr: Hb5pjVFwTVu67Vz9AC-sPQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hsb: WHYD_17DRcmWfL406YgB-A
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hu: TSxw9cggTzCEFs47hki1eg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: ApyW-43aSa6qG50hD7dqEg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-id: eK8inN_pS4eA-Q0EN2jIew
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-is: J1ZmHm4nQ9G5xCR5gO2I0Q
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-it: N_hkGXsATmyD6vs4Gwb_6g
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ja-JP-mac: OsU7dc0QTBCnyj4JYQtmuw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ka: UcHy1xF_RGi_uwp-HUEHlw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kab: e4_jwPAOQNi-6ItLlSw6Jg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kk: c_fED7l6SvS-tvDPa_k_zQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-km: H99ovAjMROy7La4zJFOMrQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kn: MSQhyrwORQiFM0J4RU2kaQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ko: VRneFe6OTvWbtshLaYjrQg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lij: dgG8nkQPRLCsK4eZiX8tZg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lt: YWX5QqZsRl-AB--7lYgMDQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lv: cVZ7NsuPSK28VGwgG0mEjQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mai: FooUdzKBQ_a2iHnI9TpuNw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mk: JagEddkgR3CC79HiSylW2g
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ml: FMix8PvIRfa6NKLdq8JONA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mr: DQQRskWCS1GjGRfslSyNcw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ms: AhgN5ymRSbKQ8KTfLvxFHg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-my: cxJNmRcZRiq5rDjR8rh41g
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: bon4bte4TlqCevDeBJkuaw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nl: MJDrLKn-QH-M1RIt1QJJQA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: Ezzbb0X5QFWVtvOe_ifdFg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-or: LaLA4PS_Q_yI9AnI3CkGpg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: Ru9A-g_dTQiuXI56nnOCVw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pl: a2VgM4vwSBq6BYgjS9revQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: fb9yzjYCRg67I9emXZOAHg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: Tp-0HuAuRMCEJOaD-fmiIA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-rm: Q1-cnKgBQHeGkcvzp6ntKw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ro: I2R-eU3nRoii1w8mzESJVQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ru: bKLawfrVQhWeZ1JzOmQ0yw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-si: SJrQcpVZSC-MlIzOWA1njA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sk: BR82ivS5RR-GaBlMvFdtbg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sl: ElQFOdf3TsO5yM7ejODNhw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-son: SsMwvVKySzGd9R_MXQOp-g
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sq: NJXHJdCXTW6fF8wjFfzwmQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sr: d1ZAhrOSS2OK6gp92Fo5CQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: SlFRQCKARHmEc4EDiYqzMA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ta: UojSC7jOQR-wmcmnlcz6OA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-te: Vr7BD6E7RRSVS1iSJsh9Mg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-th: Nu6Uu-58SkONsA5LwHmx2w
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-tr: HpT-JvScRcyz-D8w1aTH0A
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uk: ScJdy7SOQjmOcubBeIELyw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ur: QnrR3reHRcSWBTMp7znAiw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uz: Bpkc9sNQROCaQ0S8P8JhwQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-vi: CZkvvLxAQg6O4bpglR7FMg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-xh: cNlFKuKHSMy5a6uoUJGn4g
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: D2fxKZzGTPShydka_YMhSA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: acOIN0IDSXy5-lsjnpiGDw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ach: aWYWzzZzRYiw2d7rIvzMoQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-af: Z7dwy0wBTjCVUcIJDdT0jg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-an: bv_kauxmQemY1ULDI4LBaA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ar: CGeTb45uRfmhW4JZJw2r6Q
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-as: REb2PKPYSOankODh0pwedA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ast: LsfO-nSgTBauylBQRosaww
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-az: ADANO3GTRESuwTOYGRusHQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-be: KAhT9LvxTnqPxxtiPGoOpQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-bg: GbdxC1OOSoSr5SVAfhmjwA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: FLwdv5NqTEKirAFMxG8THA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: EJpGYAKBRk6W8VHGpeNH8w
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-br: Ny8_tidtTlmnoR4X0bRAuA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-bs: YQF99IF8S4Gf26KntWt6nw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ca: YRlZmmDKSoqwZRrd6E8wbw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-cak: fd5Qyz9HTnCYiB4b42whXQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-cs: AS3czye9Rkm56wF7U3KcdQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-cy: Nw1o7k_ySPiZJ2Fa8vaB3g
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-da: cJ3S4BghRbOHTekqgXpDxg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-de: Y1Vg9rCbRIa2Q1IYFTuGmw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-dsb: Zo3T47unR1iLbD_FJhJzEA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-el: emKp3EM-SnGCaQC4O2Q6GA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: UU4BmGLRRSC5MX7Nh5iTzg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-US: Sganw_Z3R7GuKQeQrPJATw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: eix6ohC7Q-CN6zvS3U0mzg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-eo: FnRuBWp2TJqvLMeKIa35RA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: djXTghowSsaZNG3NhyHU6w
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: EvJSx9mJTV6BTwYbKR0W6g
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: eKWY-U3hQKa1Z3xGN5d7Qg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: AcDMukzHSAOvKV_5SfoGSw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-et: J0rvodQ6TVW9k99W7Q99QA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-eu: KEYqUSzMQiy_YPOdFFlvjg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-fa: E2dCIsJjTFK6SfJVqXtk7Q
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ff: Tk7GbzDCRfC57ByieZ1G5Q
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-fi: UQ6Z46KvT8K5NlcTu3LNJA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-fr: fMCTSY5oR3GKNV6bGa3lLg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: XqIHBtWsQRSvIW3MQXkL-g
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: ZMdIIq6VR0KCAQf6Se0jhw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-gd: foz4txNQRVm9cpvaXlIsrQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-gl: SO8RtkL9TDm1ir_cTZbECg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-gn: LAqNny9TTpaZLOvcZXItBg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: ayVKJnFfQlGbXxD7Jnuxww
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-he: OS5zOSAOTsGDOFWn0nA9jQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: RxOl11NbSiWNmZqr2mhc_g
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-hr: dB3CBvicQ5umN5_MKz4Djg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-hsb: D_yjAemjQne3PLq7rpm3uQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-hu: FCAbzakKTI62nuU5MTsAug
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: I1qskSYvR0qsd5BSLRBhyg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-id: PDVBdgyESPGscItQvHt7Cw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-is: cT9dLpbhSGuUK1qFbt9TcQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-it: cTmXeLFrQwSwuxOfDLNT8g
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ja: AUYQzUOAQ6mliu8USUBVdQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ka: PQdK-klnSlicsn5WEs6Z-A
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-kab: e6140sPzRnik_6JhoaI5Tw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-kk: aPZ1tNkWTsCav7WU1iebHA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-km: EZ5HVJ7cSlOu4OtpxCFmaw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-kn: Nb-ggQ9CTKquPsCKLTuXTw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ko: OO_SsN9MStmN8iC9SToj5Q
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-lij: JBs0YRaEQIyn6_UZZ_eCLQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-lt: VupOWu21RQWDLQ4AxUy8Lg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-lv: ZasYoP5ESR6-jsnT0Rvx8g
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-mai: FbAstUw1Qrew-nUb29eS4w
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-mk: UUmGOUmaRLyKEiUZ1DNNMQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ml: HmZ_l9LJSkqdO-kWTIBAqQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-mr: MN_NAyQdQ5Gn7-jLlD2YPA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ms: IGb0gyWvSvm0HSQ3Fz9CRQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-my: E5VMcTtqRHmOqJfo2aY4Zg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: W6QEgbocRC-4iFfoXS2Jig
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-nl: fvRAiDShTFeivkvbrLTC1w
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: Bywt12RIS52xavNYIL0qSg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-or: CAdoIf1GQhWlN_LjXo4NXg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: JGlcXfsyRRuTfmIXXWWjDg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-pl: X0t2LNPmSZKJRUf_RpGbWg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: Wr8qjMnlTkatNAqlAO1DCw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: TRrZK8OlRDeh1VLiOXy9uw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-rm: R5Xh6CQTQZKoOUZTteS7Mw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ro: KqB5Wl_xTban1CWLjwsOTQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ru: DEDKMj1sQaCTpooVJFEA2Q
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-si: YTtsyMF2Qc207irqX5CjEQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-sk: QesJG20KSIy39WW2E49B1Q
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-sl: DkJvccLDTSyVbevpo4LSKA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-son: LcrdSOiAQ_etrJbye4vkqw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-sq: NVQFqenwRCGhLtLYSCt_5w
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-sr: PzT0YRBMTB6DZzYLNgWbOA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: ODSNWHCuQQ6-9W8zXxPhkQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ta: RzzK1Qf1RjWs-pTLDCoPUQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-te: A8K1Rg3xRjW5ylZ9tlKMqw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-th: GR2LQDPpQdi9feIUT1FnOg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-tr: acFE7dctR6SBeKFoR5C0YQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-uk: WT8Ida4kRmGAXyWi10Zpag
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ur: TtwkGYFBRnSHHhk1erFWGg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-uz: EJPRt7XySeSUV5deViIg0Q
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-vi: U7wOiUzcQcazkR2WjZSNEA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-xh: E2regI7RQomDcdyYer2CBQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: URGuTTOoQIOmPjt8qMLsQA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: JtwQHHcfTxejIycIylK68Q
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ach: RZ94_aJRQ2Cq5Ap5dNZ1PA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-af: ecyMaVXaSXeZEkK_zQEl_A
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-an: P7ZhuJEiSqi7PUD7jWJUcw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ar: bc6thNwgRXu96JtI1q8Ufw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-as: MszMBYjtTUWVBivfp_Vg_A
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ast: dP5bmyziQteyWRRnsOJmmg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-az: VZ-Z_pHMR-qDdzrIUDM4uA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-be: fRBtVKdDRh2PJ7c5NOjYQQ
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-bg: YJyUIeyhRISnydMwzHJ9Bg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: GqcHbHuoSqK0_2vkO1tEGw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: I9zYELwuSjiyMqWxWY2BSw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-br: LWDjaHYVTDqmeWODPVuW7A
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-bs: EUpQuatnQOCMFCCzSFcvoA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ca: c4rr6mVQTROh4wvcTpnTLQ
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-cak: YfHkBFOQQuqHzFecssOLhQ
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-cs: ZD2MfX_sQ_2FFtZMGkBEFQ
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-cy: N2fzCaPZTHKEFx2DufzrcQ
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-da: EMLBdjbuQkKz0LaBvGBkpg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-de: a9AHPMZKRmOOJxCjrmKoRA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-dsb: I5zHEmIfTDS8AJkHSVGs5A
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-el: KnRw2FYgS9SDZnq9XU8H3A
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: bpVd7VLrQo-ub1B7SLupJA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-US: PKvCnQH7Ro6vW-ZMYrOsew
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: cROUusuYT_2v3tKf5oYJpA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-eo: f-rJP6R-TFKQJLJub4O_Xw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: FNyBmdXpQDWqN7TuC92SdA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: Jsz6oPx_SO-ZU2cyrYjijg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: bzEeEmJATLGeKr8ActGn2A
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: G4GphrVeSGmOKJmwNn1EXA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-et: SkACvJc7QzWHvgHdfOX5VA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-eu: N9O2UX4yQKCNaHyxTxZNFw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-fa: E7cMKkhfSvOk4PznBJksGg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ff: fAHTpnTVRK29XggVYbADFA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-fi: fvy0P6aHTxWb8IVaXDWrrg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-fr: c_vbW6U2ROqK1dRLUOfz1Q
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: a6vrsYHMT6-apwOe8cv2uA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: ZgaD0Cn3Tn6usYh7Xswzaw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-gd: ZjDSOIyST2OHAZ9oIBH8Sg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-gl: NuW2YmUGTfSNKCTHOJtAyw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-gn: YQ5yH4lfTPyw49Lscsl6ng
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: Wrb0m3qGTNqyhhsIW6MSkA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-he: BAUve6UeSmqoOBgY71DWcQ
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: IUzoLspHROuNE_VeKRHOVQ
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-hr: RyGkRvkeSDS8DXjJ7lbSxg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-hsb: At25N1NqQI6W_9wlg3KXdA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-hu: TcTFuGnoSIKiydbZXhCGcQ
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: eMq1zDxDT9qEw_B-1QU-5Q
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-id: EGfXzAdjRfGAKwaUixEiFA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-is: AGUOrV0cQruSOx2DVVv-Rw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-it: Bz3YxGXcQY26FRPBu4mx_w
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ja: Y5jGH6VpSQeJAOGkbvMEHQ
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ka: ST0ZCPNcTiih5r0yeflpow
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-kab: J8S8m2ujSoCUzWlB24vwNQ
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-kk: EbeWe-2_QdOPf8LczPLLIg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-km: ac45y03qTY-8MuYvlEViWg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-kn: E-ZeCl7yRyaCXNkHr8BGDw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ko: YXBCtcfISr2y0rgT88VgeA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-lij: DfLkPGl2SNWM845JLvAWrw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-lt: YDet6EHYR-yS3g8q26LK_A
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-lv: Q3kr8P1aT6O621wT252Dbw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-mai: HQ1JDYJqS0SymSpTrnyf_w
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-mk: K58o_g2qREKbPa_0WpaSSA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ml: LiVe4SghTMCDz460cWHoDg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-mr: e8W0dfklTDG9quPcE56sqQ
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ms: Lm1LEE0pQqOMbnMl3-9upg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-my: KG9vhmK0Q7Sd0t3VILP5qw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: a937UbVMSgSp3v7pwP_XvA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-nl: LYbVfOR2QmCcp2thzJxMig
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: OqNDo9TkQhitvggCXkdUsQ
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-or: OxBKg9MZQ76dC9_xlcT7aw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: XSRLOINhQdWemiA4VdCJBA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-pl: bSndblg8R9Kz6nYXzbkWkA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: LjHP6QXSQHyOYqS9lJM8DA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: MHFNzBCgT8WLZKjvfAW0aw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-rm: UVb5BiYgToi-LqWZJRcUUg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ro: WTS8e36yRx2Y6zp3i304Bw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ru: O8HZ-UwbRwO3nc_SId9Ndg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-si: AzgIcmyyTGydXwgibF2LBw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-sk: bSvfzBeASBO8FBr68P5EeA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-sl: JVbYWKnxR3GG9bxuJ1naRg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-son: PW_AK2jzR_WFawvIv7ugcw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-sq: Bt6ZZOiARxacSOHnnbSoTw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-sr: MACQF1FhQI6TvzwjvYluWw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: HnZ5aCGJQ42hEsI7YuBN_w
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ta: PrefJUjhSze7s6Z_0y3_Eg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-te: KUcrcwz-Q4q8HSACpl92Lg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-th: Q1P3UliPSoqFwxw61Lmq2Q
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-tr: XxKMypmvRPi83NCVo9C1ww
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-uk: fyn4Ll7_SY6PvgEcCRMOUw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ur: QPFMOzedTP2B6lkAiERoBw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-uz: PgERMFn8QsCKen47SI-AcA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-vi: AJ3EuzQTTLes9uiauatflA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-xh: I4X08ccaSii0t9Jlum75fg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: IR2xY8p-SfKVKfAaa36wqA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: I_Jvj8I5SMSwecMKmett3A
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ach: TGgqj4_DSD6tXCO8MZUWFw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-af: ITRwATXRQSmdyUN7R5UY2g
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-an: KDbdYMPcS5OYPcaO0bM24A
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ar: OmFJ9NUOR7y8QcHdqd-WMg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-as: EHwYHNNXRieZRAemf3w9ag
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ast: Eon7KWZfRaWRxf5VYsTsvw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-az: Z4tBmCB0TbCM-6v8o1Ju7Q
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-be: CY5FpCv6RoqX15Axsr-ewQ
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-bg: W5tbV_b-RRaZCkkySWYNjQ
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: LC56VVMhQdm6kb2ptGHssw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: NixuxkDnSFe0PouGYTUmMg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-br: I5I4843RTfWZnnoiCvWMCw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-bs: A_vmMeq4QbagvGwKCDwVVg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ca: ZyqJwrhuSU-l3do22cCuDg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-cak: a2XAxi7DS32x68TwsXO6uA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-cs: eDABLx9SSQKPzoCoyuT12w
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-cy: CnGHSTsmSMO1nzFlZvbdMA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-da: WfuT77FUTC2RWT4moA0GtA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-de: fXsAoKxnSFGmHA7uXi1OEQ
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-dsb: eZrdOfM1SEioV4XmjeuAPA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-el: JEVFcilFSpixDfcUYT2tWg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: McvpYfPLRYOPKHxHJLn18A
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-US: NSmta1TkRICpaEjJk34MXA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: clnxfY_hS2epAPzYXVPKQw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-eo: JxBM1kxoS3m_hMAhAHBlkg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: cK8ofYt0QQ-XEqoVWaEQgA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: YKz-V_jkQvei69HlNPUfIg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: ONKhqoHUTmmwW8s_pTeeJQ
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: GPZ1u5fuRcyUVZBdfgRyIQ
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-et: Kv6H1ttYTpeuIq0k8Nfrhg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-eu: FpE4qwj7TSenhEWJrB4sMg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-fa: NNyx2YllQ2uQdrQUY-sHlA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ff: Mqff6JPtRz2PQvT2Pesk8w
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-fi: EAErs8fLTnCHD8iP4WGjIg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-fr: ZznjUyXRQq-gOzrcfsAOpQ
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: V908ajZgT8-QKR1rV_pmIA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: Glktw21sQQifVhyJtB6EVw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-gd: UrZgEV94SBeQsPhZeI5gxw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-gl: bEQlASpyRf2-qRLh7_h58w
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-gn: YdGfS6ZsQGmCPRi5mnBcMg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: fCypB4vOTF-8wVB3CMaejw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-he: O0QE75QOQ66u-zJSqsFhxw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: aZOS3aUrSK2cfxNJH4-kpg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-hr: PSAaBO71QOGsXm6J3R4MFA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-hsb: Rt7fer6CQOa5_qitk_ojmA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-hu: Z1pKbNqgS1K6Jp4nSg9Vng
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: IIhVh7lKQUqSpQ2a_sTk8g
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-id: IfCB51gaT-6iMnYQlIRiIw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-is: DqS5ZzqHRa-Qowup6XM3Iw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-it: JlwruV7fSZqt45KFc2Wdmg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ja: CHN_ohUFRPequMGpQFkdVA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ka: eOus9CzPS36GzdXbGp8H1w
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-kab: duGRlDz9TBehIJmz9fagGA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-kk: K1pqu_MWQBS_LgBlnImgBA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-km: U-TY7R_iS0my3_DwYPjM5g
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-kn: UN_2M9fsSr6sswfJHdm9dA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ko: WfGl-8T-QVCU1bV2WD0wgw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-lij: TxTvw3G1TUinpAeMQeaQnA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-lt: AOAQu1O9QnGIPbsGqqeIow
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-lv: IWAJM_s8SA2G0Z1PLenz4A
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-mai: MggoqMeVSCKvFMb1dC0eBw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-mk: OhLGgMZiSc-t691bNKu-ZA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ml: H5cW2IGkRee9lrofdNUM-A
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-mr: GwhNG4-UQlet2TLhzV7AYg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ms: D2GFOrqJStuIrWcuTkvt9g
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-my: S0-HSNK9RMaWKxKv7czUCg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: fW3j3JhXTjiWIDf1LClIrQ
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-nl: Ph_BYX8vRvG8zEnzVmjOaw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: P6U9k9yDT7mnPp8zhSUEtw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-or: VeJk56bmSam6dEm18gyjgw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: ZKzsZtFXSumvIMXVA6EGlw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-pl: BDbu9NX0Q0SQTiCE41ErdA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: OXvfQTRoTUGwX9685acfHQ
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: OgOsow60Qgqzt4ssd4cwqw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-rm: YJnYTaozSwe7US4QzF6l-g
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ro: YT3I0fXUS62Q1LuvEyDiJA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ru: cvh1LGIqTO6dLM6I2luXNw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-si: IK_uwLeuSHiVOYi98DdtLA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-sk: DhmccWtJTyqABe6no97PYw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-sl: ZeangmmfQwaXMmvhQ2m0yw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-son: HYm5TJHCRW2CUJ3jGwGQGQ
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-sq: Kyrw6LSRT1CbXxMMNQGImQ
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-sr: fED3zlGaRXKtUQRaGio4Bw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: fOqxjmYiSU2H4zTFxcIpng
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ta: dURDlYzRR9GY7-Kn-rWv3A
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-te: K6YdvCGFQ2uRtm2rumMSsw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-th: RXSP92luRSizxhs77gMabw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-tr: KfPzM5oCQ0yv8uIrcnJZhg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-uk: Id-N8diNTrOTl2G4hmzc3g
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ur: VLWLclNWSZKXFgp3kBLDRw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-uz: UmjLuROTS_2ia4ZdJfntHw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-vi: Ilv8BHAnQ-6PjCZ0SewzBw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-xh: SaYubREJQW2JGOQBwSf4Dw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: L1nb9PDOT9umCJj-CjPqHQ
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: VwDe9SpDTfWaDA3iYm2jeA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ach: FGgr4detRLqTixs6C2qWzg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-af: IbX36xtMQVSiquRqNNU7mQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-an: QLxSQADDQKm4-vNRS7HLjg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ar: IKZ5RKtiRL-_HB8nlf05Tw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-as: Hhw5ylb4RpWFaEvRPqpdYA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ast: FovfX5d3SDiEHk81pZFKsQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-az: Re4HHNMxSgSD7z5I6DkVuQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-be: OQSTx3wgRAO3-oB9dGNQPQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-bg: DQS8nbZZR-iAKzh2A7cg7A
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: A036tfIXRsu4nNryJMc2Sw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: Lfv1giZGQtK5LvUnTC5sZg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-br: d2TyR5c4SUK8G1GzJ3G7tw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-bs: QD0h7HdRRIimNRyvf1FC3Q
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ca: RTb7ilaZTrqfaFVEeAOg2w
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-cak: OPzxKgtiQzKhpd43D-S8EQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-cs: Cq_0S8iySteUlHPC86wHtg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-cy: I09EA4uhQrW0kZzZn_uePA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-da: XmoqiR9gRoCjCSwy4iOrUw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-de: BW5z2EB8TguX2Ad6hpoJPw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-dsb: OMCu-GiRSDip-YxzNPAySA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-el: XxQzjzhVRAq1qoDzsocfFw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: e9Ku0hkLTW2PeDh7V7RZzQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-US: G9mTnzR9TBq3vMP-YkKrnA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: JneoEpECS_mhhIIDZ0HMFw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-eo: Bl5PAPY6RpKEdj7QqmixEQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: FSrcUA-4Rc6qvHfUDVmBvg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: FX_BPSnjT_Ccf5b7U-l6oQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: TW4_uwHCRU2KSZ7Jy_ynQA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: F2_VtQWnSty-8TWCXXRSKQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-et: bUrxCCcGS7uGjj4K3pqj8w
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-eu: FvDLE83-SfuvhUSPE8-ljg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-fa: ZPkT01AaQW6WKUk03g8E0w
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ff: CAcAPm_ZSf2zIivK-J80fQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-fi: RvEKLmX_QdW_Kl-qmv9TXw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-fr: TbD2nv1yRHGw411Yu27XbQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: bGQlaQsMQZu__vDVX9JWeQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: CQog18c8SLW788xqm9aUvA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-gd: c30bNtb2RnSf0f-kYxw7IA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-gl: YBWDrsOeSn-kgdkGC25dBA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-gn: HXeJD8gdSE6eRyCzU5-NKQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: eU6_5alwReet8GAwZDzoCg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-he: evDpOaXjRNuSZBi_apLagA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: SoFcjXt4Q86sUz5m5MBI4Q
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-hr: Bg2P5g2-Q_Sjo16SJ4q0Iw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-hsb: ctex2B8aQ1q1jjRtDTzmEQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-hu: crnSokMoQi6z6mv_h64XIA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: I8B0a2g-TNKqG_NJMUjDHA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-id: Y8-P4iySTH-HGrVeZLxTEg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-is: eAe6UUBqR_KPauOsXQBkRQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-it: asqL9KakTFSDtoI5T1E_Tw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ja: e8ER9nFUSWeAhFxCgdelOg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ka: YqxXSBu0RpK6SVoru4PNbw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-kab: CfZ9bDEiRrewBssXNHcqEg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-kk: Vc0NcROxTbms6T43onJN_Q
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-km: UnmoDqPKT_u-0FXQhZDcbQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-kn: aesIyZUoT8GJeBSGC1Fg5Q
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ko: X8WW0BecSzuKmqjXrrlHhw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-lij: LE08t72rRKuRLgueGf8ZdA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-lt: SyikPmzwRDWOTPmRjMVz8w
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-lv: TrCyVp-NSV2ZDnhEJh-New
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-mai: PpjPGRajSDmyxoqh_5E4Xw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-mk: PEAlVPyUQPeB8B2nTLCRcw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ml: Gv1eMdWpTg2gGlO5PEvk-A
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-mr: DcJcIHpMRnKGFMdRF4P5EA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ms: cHraxJyOTWmIyk5czyavxw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-my: aGEP9OFmQEazt--hOAQL5A
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: Pwswl7bKSPKuWGeTJ29jAw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-nl: ZepYHjMkTuy5C1wqOJ_Qlw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: bvcrLsAtRTm5hT9UIiPpzA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-or: dUmakoXgTImZDRxuHh5e6g
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: WXT8my1vToa8pEikCrkHhQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-pl: QZjha-zLTva0gl98RBXefA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: BWvtiNaRRYSCYtkSydL2JQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: OkpYPccGR6einVSDsjtVHA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-rm: OwZJgDyQRqi2HkVWHGKmug
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ro: Du_dLDr-Sqij_F2ooys-pg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ru: ArJb7GfORX-nNbPRm9NICQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-si: aPVASSZoTAaSWwZoimqQug
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-sk: A1yhrnbxS-OD1vGMKwh1jw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-sl: B-8zzh5KSaatFv1VxrHn5A
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-son: c0BuUNb-SuKmqU-kJs2dVg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-sq: VwIkVGszSOCyjH7Rqf-tUQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-sr: f-Sh2C_gRIWy3osdvxXOnA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: bxx46gIfRRWGVB9eTzpyCw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ta: IKbuaaLuQSqRFKw6c2x1IA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-te: SRUfdkGdT4SoIJJ6qcl-mA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-th: ccJPviUhQqigOsTI4VQPZg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-tr: MZX7YjhqROmL4RFgBZ3EAA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-uk: JgyZ8Id8RqePDiaiwcxQwQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ur: e6nO1wGlQLmzxsFcAlLW-w
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-uz: ava8f3qxT9qniDd2naFzUw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-vi: avRGD37ITm6FeZD_E912QQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-xh: JvwFJzglTm6glIwpsPHi1g
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: dcLfLlhXSFiur1sfpxZMnw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: bSayWXAmQu2YjDSLz_kA5g
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ach: YDXTTcCYT5apz-VbiBYwKw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-af: cwTvDN3tS62Q-4NuxysPgg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-an: a0UdmCCtSSW30Vkvswl7ow
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ar: dudDj-99RreHLMl4GPzRfw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-as: RT8z7mQtRIC7vQi3_5kqQg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ast: UdeLBXYmRn-2YJC-86xA9w
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-az: dlu5vzgkT5ygvmo_3VlA2A
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-be: QPoskV4wS-u0gNhnqnnHbA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bg: dlVUWW-VR1yDrIgats-0VQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: eHPu6xvFQgWhychzcc3xXQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: RekQ6nNOR6Sm6l5VLr7SOA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-br: Um0DXKB4TdigJniLK2_iKQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bs: Z55URMNjStCp5TxBXzNJqA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ca: Wl1XQc0kQPOd7naV6pZlRw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cak: GXwj1LHcTu-8hnw2_ZvGFg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cs: agLK-hGtT2KMr_l4kk5F5w
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cy: CnU6AXPFTxCSXeYm2gw7wg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-da: W47uW_mmSpefQgfcBVo5Nw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-de: dAPwnJNVTrmoAHdYHvn87A
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-dsb: ViAd71ccRu2K7CS5ALrr-g
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-el: N79Ja2atQQyT0U8ebqN3KQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: Xl1AyetMQiWfz8UMl6SavA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-US: eIFqIE4MQn6wV_q3EBqPig
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: b6GuM4LSSwyZj2J3gKal6A
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eo: ChK_2J_fQqyGqNgrwytdAA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: JPF2vLNtRlCqCe1Rc9hJ7w
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: fByNQl24R8aR7x6ZormXPg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: Kx8GhRUiTyy6a9kc9hBq9w
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: L-RXtrixR-6fWCmt7C8ARw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-et: RlO-fTrjR06C9P8jXATGOQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eu: CMBA14FPSPKUoHOCAsxhtg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fa: QhoySkEtTueb4P537n16Jg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ff: MBv8Lmm6QU6NW-P36coDZA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fi: Gi6Ief8eTKOQl7Fmw71-Ng
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fr: Ywa0BPETTJ6gJbbGJDo_9g
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: ABpbZoMdRvibLS9qqxe4Ug
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: Y9IYz3kOS3GgtL6c4H9R1A
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gd: au-3E27OT-i064WPgtmUdg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gl: VGDwlYIsQSawCdVJIY6aug
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gn: e9V63cMYTGGvjyRYeP4FqQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: WRwHlRmCRXiy1vLyQKXXRA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-he: bfoYjUsaQBGI5CGeLV8Fxg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: Nk03mtgeSLqU-Lc9MeIBUA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hr: aajsVAWXTImIkII4eRFBaQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hsb: X_7u2iEpSTaOIILozAKiFA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hu: dN1wFoNJR-mugxqdbMGb0w
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: UYQ89_akSFmgr_KdEouAuA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-id: Cb7HpfeeSSuqtol8crVIHQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-is: AUMt0RVDRGCagaQNIwp9QA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-it: aRwkiDMLSkuhnoKpdshmDg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ja-JP-mac: Yu_1ChPTRbuJwKTuyZ0oMg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ka: MMjPFav8SLGHNDt-HR8TQQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kab: BGAGS9-gRq-PZMCuF5Bf3g
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kk: NMdJifgiRtGicHO84hkpHg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-km: ZXniYbnTTgm0ODv4eruAyQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kn: Lb9hUaKYQVakmh-VIxs2XQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ko: BTOSnRSGTYe31U6hllnRGg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lij: PGc57loPTey-aCBk_5TtPQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lt: Ew-nv0izQfWBHeBcPOaJJA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lv: YNV9QUCyS-qNzH67-L3SjQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mai: P14Iyf3mTYqyYYztirOgxw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mk: aOBXSuhjREmDQRk0Dzh8Dw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ml: SNcG44-CQpqeerBijd4wXQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mr: F6SpRRHxQ9-oRZGQxV34Zw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ms: HbjP1IQ7TjO3xkYy6mjlcg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-my: fZyhs6kDRjGlWP6S_uxBTA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: aWzlTb9tQR2K4y7-6f5lyQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nl: Bt3iwBieSn6om9_G-ZBV6A
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: YGTkKZMFSjyqHYYfkCURFg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-or: Y_jy4puERmqtuqOTXgYT4g
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: WgM9hp9ZSxKZp5sRjGiJFw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pl: cX7Vcz3BQv-MSiwkw9dZ_g
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: Xn585rx4T4e6Gq-V5iE7og
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: ADugTJ8gRg-bOPOD1Z4I2g
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-rm: CQGJsP0vTRCZ0-n3iaR1YQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ro: L4zkwW7qRlm_7r9BzLsO9A
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ru: b42k6NS-Tnq0oqzoge2_oA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-si: VQC0nsaiRaC1zr3yDWDqxw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sk: F9-d3fkNTBWTCyqOlOrpAA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sl: YlQcqpuDTMq_xFaJwuLTTQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-son: SuZgcnHtRRmN9Sx33zVExA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sq: AM8HH80mTQ2y4B9Pfk1c2w
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sr: YDop8ndNSZCx3hJWGztZbQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: WIjz2CInS0uB0zUv8K4P7Q
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ta: UIfuRO3GQwyHgkiSf4QcSQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-te: R0xEmAQtTiukitwKctGH-w
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-th: UpTr9UAqTyaeJfEyBQYsZA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-tr: ORvR5yPCRTqc2NisSuVVaA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uk: GlnNQGFgRvatgmdqH1OuRw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ur: GIQyE8c1Rta7292g3mG5vw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uz: d-4JH_bvQDifBG-yYMvR8g
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-vi: c_MEYLlVRZiezVSGhIF9uw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-xh: LQ0JkNXvQ52gyp9r3w1rsQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: YmsrimgGTgikWLOjev8T-w
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: SNMqTJ6-TXG4Ntg1-5C4XQ
+ release-eme-free-repack-win32-nightly: cf3mq3trQjSKrixc4SIkPQ
+ release-eme-free-repack-win64-nightly: SOL75cl4T8OhzCTUcb3TBQ
+ release-generate-checksums-firefox: McPLDh8YQXutVQy-Pmfrrg
+ release-generate-checksums-firefox-beetmover: HMwoTKsvTwm7JHxUb0d6cw
+ release-generate-checksums-firefox-signing: e1Hmbt8BRFykxt2JvhUzXA
+ release-mark-as-started-firefox: JvtrEgGESxijh4YloPEyxQ
+ release-notify-promote-firefox: L3KhRz6pQP6R30Q57YIHmQ
+ release-partner-repack-beetmover-linux-nightly-aol-aol-en-US: cQHHX0NHSY2l-Yv8Njh39Q
+ release-partner-repack-beetmover-linux-nightly-aol-aol_desktop-en-US: HOTFYq4kTPWFTptoCoa7SA
+ release-partner-repack-beetmover-linux-nightly-aol-aol_huffington-en-US: WNpy1LrTROqczrbILBAUfQ
+ release-partner-repack-beetmover-linux-nightly-aol-aol_uk-en-GB: X82AsffSS2uxRU_ZWo9Gng
+ release-partner-repack-beetmover-linux-nightly-funnelcake-funnelcake134-en-US-public: FChVob7uTd6sS3GAj8J7PA
+ release-partner-repack-beetmover-linux-nightly-mozillaonline-mainOther-en-US-public: OMioDsKPTKaedVU5v3NQtQ
+ release-partner-repack-beetmover-linux-nightly-mozillaonline-mainOther-zh-CN-public: O5fOOqa0RsylV3QI17-g5g
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-ca: OEpdGUNaSAy9vjkEiKF2nA
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-cy: TjacQelIQMq5CyP3VOEaPA
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-de: Ak7j0WJcQam4Raj64acjtg
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-en-GB: B4a-oV1-Q9KVv2pf5-lKLg
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-en-US: RpMfsE1yRFy_WtkTiAZwWQ
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-es-ES: DnkFsRsET3-Ig3lj477e2Q
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-fr: KyZx2chjQMOv7P1-G-tPsA
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-gd: cRt1ahpNRHeR79kZ731dfg
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-it: ViIpxCQaQB-BvySpsI21Nw
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-ca: QeLe5gx3TOORReX6VNA-Uw
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-cy: XD_wRDmfQ7WnyD72WV9vfA
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-de: IgKeFHVZRb2W8UAfTX0X6g
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-en-GB: J0eBrV4SR5yDMSUymUeLog
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-en-US: FLVASylYTT6jLD8lrk42uA
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-es-ES: R7ssoRFNTDSj9v4RL9IRuw
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-fr: VKZYChTzSqinL_KqjlOfBw
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-gd: atJPuleoR0GkFfLIJcXjdg
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-it: cPi2wcv2Q9GcaNeWsPL3ww
+ release-partner-repack-beetmover-linux-nightly-seznam-seznam-cs: CgjORzvkR_6gcg9TvTbNYA
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-1und1-de: MMWbieaESW-_g3HZ5aZ-kg
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-1und1-en-US: XZKXZnTzQaiQOI3eVXDCAw
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-1und1_notb-de: LJfeXaDBSDOmSoTuH2rNIw
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-1und1_notb-en-US: Qa2OSIYeRiuV9BAFfYFZPw
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-gmx-de: XeH2wihYQHOBgr-e8LuvjA
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-gmx-en-US: YjYzRNspStmPEZYvlckO6g
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-gmx_notb-de: KR3tof6_Sh--1geQIwF1Ig
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-gmx_notb-en-US: KX6dn6gmSZeS7Dt7ZHXz-Q
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-mail.com-de: Wau2EfQsQyqKoxrlDN0ekA
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-mail.com-en-US: ds20s8qdQm-2h6vGcn4LAQ
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-mail.com_notb-de: AHBXZ8cxS6aELkthmmLIyA
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-mail.com_notb-en-US: Hn6A1b1XTzGpPLdOx2g1tA
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-web.de-de: GBBAmAgORR6yAYCTUew2Gg
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-web.de-en-US: MFX0FA0xQh6JZnSNSS7f-Q
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-web.de_notb-de: T1W1tDcLSk6llsGSbSKY4Q
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-web.de_notb-en-US: dHc1IeKmTU2xNxGjceQEkg
+ release-partner-repack-beetmover-linux-nightly-yandex-yandex-portals-ru: Sx4IlvLDRI6_jHdszDJ0Vw
+ release-partner-repack-beetmover-linux-nightly-yandex-yandex-ru-mz-ru: OwnhmgjoRyuD7ZYQmlZqwQ
+ release-partner-repack-beetmover-linux-nightly-yandex-yandex-ru-ru: XiIUDLjtQKWHLxM2CuVAIg
+ release-partner-repack-beetmover-linux-nightly-yandex-yandex-tr-gezginler-tr: RABS8Eg3TsaPSfaE95EOAg
+ release-partner-repack-beetmover-linux-nightly-yandex-yandex-tr-tamindir-tr: af4Fn2t4Rcmxld6Q3JmpTQ
+ release-partner-repack-beetmover-linux-nightly-yandex-yandex-tr-tr: Xe89ca0USK-powdWoVXZWw
+ release-partner-repack-beetmover-linux-nightly-yandex-yandex-ua-ru: Y3g_ogJQSiCjpdGKGb6fGA
+ release-partner-repack-beetmover-linux-nightly-yandex-yandex-ua-uk: BzSxqvtkRjGXZXYarKB04g
+ release-partner-repack-beetmover-linux64-nightly-mozillaonline-mainOther-en-US-public: P6Ja2uuUQdmtGkxSN9QmAg
+ release-partner-repack-beetmover-linux64-nightly-mozillaonline-mainOther-zh-CN-public: cssKIiPERP2oLRqK176Waw
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-ca: ETVfyAnKQN64oJUXqAbwQg
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-cy: bwh0IcHLSUmZxqnkhmoKbA
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-de: H4QQw-MvQoGbpg25SUg85g
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-en-GB: PqSQ-so2Rxe9sU9X2By0uw
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-en-US: TcAszN23TyKP2TZH8_1vRQ
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-es-ES: FoBwe6ExR9SYHP_OJ3BR9w
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-fr: WbclX02iREymmOB0-MfsDw
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-gd: EKqrfzUCQsSaGSaeTK1fyg
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-it: R2E3ZGaOTfm1f6LSAEaAmQ
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-ca: O93xVMGpS4addmApyV61xg
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-cy: O3jHGav9Sri0f1YV8pJz0w
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-de: TK3-YXJbTpSSCNQMHC6pQg
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-en-GB: F1dWSTxETK69B22OJj_bnA
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-en-US: NM76bjS3TbegyztcSIl4LA
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-es-ES: SlmHEv-jSiOvDKeLsTWa0g
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-fr: TvqofSs-SeC4Ee0IOwiplg
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-gd: ADAqSb_jT8WpI0Jqwd76fQ
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-it: Xzn070FoRlCorrMSe2bFjg
+ release-partner-repack-beetmover-macosx64-nightly-aol-aol-en-US: LGxo37hWR7O7w5vcCm6gUA
+ release-partner-repack-beetmover-macosx64-nightly-aol-aol_de-de: MHgACfA_Rsy_aR1uJRcnOg
+ release-partner-repack-beetmover-macosx64-nightly-aol-aol_desktop-en-US: RYQvanc9RzeJKNQek1Vi4A
+ release-partner-repack-beetmover-macosx64-nightly-aol-aol_huffington-en-US: SPqCCK0rTTmcm6fiba0j3g
+ release-partner-repack-beetmover-macosx64-nightly-aol-aol_uk-en-GB: MNKMGqQ_SwyRlVTe7kYzkA
+ release-partner-repack-beetmover-macosx64-nightly-chipde-chipde-de: JWl50iqySk6K4mS6pPKmxQ
+ release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-003-de: OUoPLe2RTp-gcBC-bsxCxg
+ release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-004-de: bk7RvZCXSjSkJtp5sfYhkw
+ release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-005-de: dfRqoe2ESpiAPQKeeQVROQ
+ release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-006-de: EjK7OxXUS8m_sZMik4Gkew
+ release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-007-de: cD-kLCS8QGKebE5f1AszvA
+ release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-008-de: TKbT0ZiOT2-p3Nqgh5itSw
+ release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-control-de: dugSbKE8QQyI8Kawon4TYA
+ release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-de: C9wmapcRTsmuUbuwEO91YA
+ release-partner-repack-beetmover-macosx64-nightly-firefox-firefox-election-edition-en-US-public: fLSjQ9-kSM-J8gJOwRUWSw
+ release-partner-repack-beetmover-macosx64-nightly-funnelcake-funnelcake134-en-US-public: YVV8prISTkCdyz0mAmkUFA
+ release-partner-repack-beetmover-macosx64-nightly-funnelcake-funnelcake137-en-US-public: IV6hDCDbTXiVGu0WSmjKtA
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-de-public: GEzdaCmPSruxLLAMPMxPXg
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-en-GB-public: EkJwaTJNSeGPTKfZQ6J_PQ
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-en-US-public: FcG4pDI_RQaliTswbIZ7MQ
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-es-ES-public: Tj4M7qNiR1eomyFLmywmGg
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-fr-public: GRf_S4-hSQqlSOWbblLCsQ
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-id-public: PUrNgQwwTdyLklAh8RvV0w
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-it-public: adp5FBsfQs2s6uqIMmHZ9Q
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-ko-public: Wfme37H4S7aeMNmhRrDTug
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-pa-IN-public: Nlob54CMRy2y_eP8NiwqxA
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-pl-public: fU_cmrBZSjian9dlB9HCLw
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-pt-BR-public: E9g6CqbxSmeAJCzv2OKhSQ
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-ru-public: N_e3sDz2RiiJhXwP0SnJtw
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-tr-public: AgU1rgGhSBGQFOzM_SwEQw
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-de-public: GpwqtZk-T42AsJ6AJF37BA
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-en-GB-public: I_Bb5kSHTyqBh2it7TR-pQ
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-en-US-public: PvS1Fk_qS_mC2oToi184WQ
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-es-ES-public: QFH9FzHHTWyUM9X-eO0xAw
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-fr-public: EPzEi_IOTXSqpk5wC0uwxg
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-id-public: DYhgUU_qSzK1kEVjh3EwVg
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-it-public: EJWdIeR3QbmlFJtHQVTJ6A
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-ko-public: Cb9ToHwtQia3bNs95wraRw
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-pa-IN-public: fT2kj5bxSoORejKvY-CB-w
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-pl-public: WoKMQgcLQhiZdMbtaWG8Iw
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-pt-BR-public: PAJmYqVCQIOCKvgdMO6VxQ
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-ru-public: IR2T9pMjSke3x-TSJOaWxw
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-tr-public: F3cbGExmTa28vnO_XE7fGQ
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-yahoo-aura-en-US-public: FRtNkGs9RMqBH7tZHS-KEQ
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-yahoo-en-US-public: UpBWrvLlSXWGxag_CmQ6LQ
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-yandex-en-US-public: WfHipiriRpia2c7Y2Ca2og
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-yandex-tr-public: MEkfBnjFREyD_NrjmtdlXg
+ release-partner-repack-beetmover-macosx64-nightly-mozillaonline-mainOther-en-US-public: ZEKwv2hNSxmVUa3VXn3EpQ
+ release-partner-repack-beetmover-macosx64-nightly-mozillaonline-mainOther-zh-CN-public: KHkZwXmhQ7WvDeqTYvbFZw
+ release-partner-repack-beetmover-macosx64-nightly-ntt-ntt-en-US: bsYQIafbQuaPlmEvmoqSrw
+ release-partner-repack-beetmover-macosx64-nightly-ntt-ntt-ja-JP-mac: c0JWK1_rTnOVP8QnAh_SHg
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-ca: KFmryuKNSdeeAqIaPyweTg
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-cy: EXXooUbFTUe5r4w5BUrfJg
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-de: Py3qzuaoSS2OtwMSrbWV5A
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-en-GB: WhwdOdpuQP6BRV_9GCqq1Q
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-en-US: EWo5Kk7VRWWsGc9VLS401Q
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-es-ES: LOdUn8v4T2CRfQp-IrSWkg
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-fr: Fgoag_dGRj6ApUfKLgv4rA
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-gd: OLnmiJLFQBKxEvo28xgDXQ
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-it: KPOLNz1JTIySiusQX2CiZw
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-ca: FvgFeWbcToC5fuRd0wTcHw
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-cy: H9DQ5rwFQf-tlHEHnZVTDg
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-de: cDFnYI8qT-KdrRrj8xYwdA
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-en-GB: P96X10efTXSUKQ4LQLgJCQ
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-en-US: DXIboAgmT8CxeRytW8_apw
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-es-ES: ES8iijsCTQ-BczcFC0hUeA
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-fr: FeKQo7e1S26PMAjtCkeF-w
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-gd: DsX0QLixRDCNr4AomSp0AA
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-it: Qtix8qmJRfidtlMCsSUr0w
+ release-partner-repack-beetmover-macosx64-nightly-seznam-seznam-cs: DzPiXPrlRKOFAuYbm47log
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-1und1-de: Q1tSs19_RJK_P5Ul_uKMJg
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-1und1-en-US: aK8zIvuHQ_2y-6WmG2bl6w
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-1und1_notb-de: DfIo9MSGR8KBiB38TvlyHw
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-1und1_notb-en-US: J1fhYTKDRF-5uMH92oGsUg
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-gmx-de: Q7b2g-Y6S5O8ZWlX4HKF8w
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-gmx-en-US: LHaeTLNrR8GUYHtY_C6ByA
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-gmx_notb-de: LgpKWrofQuCeL7BomsIs8Q
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-gmx_notb-en-US: NjG6Fon9Qg-fBYQURViT2Q
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-mail.com-de: YmuecbOPTLCw-YcwuTXtEg
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-mail.com-en-US: QG72LA8WSBGxs8FX21io3Q
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-mail.com_notb-de: duTn-30rQRSt7-zvOXA3og
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-mail.com_notb-en-US: bAdgStvzTwei1RP3IpAXRQ
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-web.de-de: SRgodtcLS0yZzmqC2ka-9Q
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-web.de-en-US: G9OVyAaYQSO4HWqcZ0Q2Pg
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-web.de_notb-de: ALKwZFJBRnqdJEWfTpcGIQ
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-web.de_notb-en-US: d_co2iEDThCsBvInor46zQ
+ release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-portals-ru: KFE9TP95SomMc5EcnTXNiA
+ release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-ru-mz-ru: BqJIG2dcThuDNToV0BZllQ
+ release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-ru-ru: LUy6LDAsQ5OXXDRD2WJLOA
+ release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-tr-gezginler-tr: VWvWb_kdTWGpJFsc9bOPlQ
+ release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-tr-tamindir-tr: NMEUlwOBQEah57RZLFbKqw
+ release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-tr-tr: SdHfIiSZRQyuDGvSUEEJmg
+ release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-ua-ru: dMXg8-EVSBq-cZ4VXtRM0A
+ release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-ua-uk: T9Ae0ZnpR_WOvvpwVSZHIg
+ release-partner-repack-beetmover-win32-nightly-acer-acer-002-en-US: HnFnERSvTHuAZJrAaa8AZQ
+ release-partner-repack-beetmover-win32-nightly-aol-aol-en-US: TbCl2baUTzS2gIyF1f865A
+ release-partner-repack-beetmover-win32-nightly-aol-aol_de-de: ERd2B3c7Sl2zNsacm8EgRw
+ release-partner-repack-beetmover-win32-nightly-aol-aol_desktop-en-US: S8mumgLESMa_t59Rr4BLnw
+ release-partner-repack-beetmover-win32-nightly-aol-aol_huffington-en-US: TqeIEoalQPaH0E2V53F6kw
+ release-partner-repack-beetmover-win32-nightly-aol-aol_uk-en-GB: CHBFaQyfRAS85P-Cxf9UKQ
+ release-partner-repack-beetmover-win32-nightly-chipde-chipde-de: aGvc_IBqRE-9k55clX2Rxg
+ release-partner-repack-beetmover-win32-nightly-chipde-cliqz-003-de: CoKDg1HAQXeo2KdX4ULVow
+ release-partner-repack-beetmover-win32-nightly-chipde-cliqz-004-de: KvIXWqEcRyeZorY0YmcoCw
+ release-partner-repack-beetmover-win32-nightly-chipde-cliqz-005-de: ROBDcnBfSm-Q9Vyp2Qu5gQ
+ release-partner-repack-beetmover-win32-nightly-chipde-cliqz-006-de: ckybGZWGRrOKXJnbF_wJJQ
+ release-partner-repack-beetmover-win32-nightly-chipde-cliqz-007-de: T92z_tthSxO_A2k0be2wsQ
+ release-partner-repack-beetmover-win32-nightly-chipde-cliqz-008-de: TrTEtzY_SLOVwAh0-AFU1A
+ release-partner-repack-beetmover-win32-nightly-chipde-cliqz-control-de: bck6M4V4QomOPgngmA-uvQ
+ release-partner-repack-beetmover-win32-nightly-chipde-cliqz-de: TlgaFZ3sSG24vzkyYkY51Q
+ release-partner-repack-beetmover-win32-nightly-firefox-firefox-election-edition-en-US-public: VL7JV_U_Sx6IBPia-rmiJQ
+ release-partner-repack-beetmover-win32-nightly-funnelcake-funnelcake134-en-US-public: HBRvEoRXQkC2ZScN2yEtYw
+ release-partner-repack-beetmover-win32-nightly-funnelcake-funnelcake137-en-US-public: RQpFkjGTTzCP3tXtAyrUkg
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-de-public: LKTXjL1zQOKN1kzwv9jObA
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-en-GB-public: EM0PsRw8QOKJLUNIUGRrbQ
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-en-US-public: cTfeFHL2QF-GM6ijYaZRKA
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-es-ES-public: U31JSRguSeuzg6KhOxQDGA
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-fr-public: f006fG2LRbqSL-E2awIABg
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-id-public: Y6HRJxXnTpu-nQakvOKviA
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-it-public: FsVyynooT6WIQtS961ELqA
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-ja-public: Zu3p9qZfTxK0t0VN4IoCng
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-ko-public: bGi_ELhlQNWjZZN87BX64A
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-pa-IN-public: IwvLA9-ASI61f1TlYwntiA
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-pl-public: WwHRoIfuSEWBrl2HQWooTA
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-pt-BR-public: F9uuPBuYQKiYZkfK0Rlm8w
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-ru-public: Lbt204khTz2Qm78-aZVkbA
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-tr-public: XLPiCZXbTdCUkYDu-cjD1Q
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-de-public: Jdes4JjaQb-29v1ZumNO_g
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-en-GB-public: YamlK9gnQW-AwQiCY0ZR7w
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-en-US-public: Pu_4fme1T_6o0dBy2hmY9g
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-es-ES-public: A8mycs11RYWefMI2KfP2LQ
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-fr-public: fUEeolZEQr6DclkJxyEgfw
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-id-public: ASNdzfqMT8yAgR7_6myEjw
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-it-public: KoCxWjzBRcu_wXQ4nUvbRQ
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-ja-public: cNtJKNY6SQ6l-kABg1ps5w
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-ko-public: Aw-qQddhRNysFQ0LK1uJEQ
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-pa-IN-public: DTpZjxuPTH-B5O0k7I9szg
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-pl-public: MARL3XiPTO2rBlu0NumP3Q
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-pt-BR-public: MgPPrPSbQS6Ig-61zOv5-g
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-ru-public: PRkswFE1S_2JJfoKdbhGkw
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-tr-public: OYFW36BWSxaxX_elAOljFA
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-yahoo-aura-en-US-public: DopENAjrTQa0aH0TvvsTKg
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-yahoo-en-US-public: XQGT9t-vTCKrILUjY_B6YA
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-yandex-en-US-public: RgCfCiifQ7eBhGsKo1ZlzA
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-yandex-tr-public: S7Ase0-LQ-axtd9Kr-80dg
+ release-partner-repack-beetmover-win32-nightly-mailru-mailru-ru-public: L9In81mRTKWQc0QIurbsJg
+ release-partner-repack-beetmover-win32-nightly-mailru-okru-az-public: batepSucQ3-t_QgdaBDU9Q
+ release-partner-repack-beetmover-win32-nightly-mailru-okru-en-US-public: TWERo8A9RvCpQPMNE8EYNA
+ release-partner-repack-beetmover-win32-nightly-mailru-okru-hy-AM-public: MPSJhc9tQUKMluQvTFDfxw
+ release-partner-repack-beetmover-win32-nightly-mailru-okru-kk-public: NHq-6xTgSr-YJKZbBRtfWA
+ release-partner-repack-beetmover-win32-nightly-mailru-okru-ro-public: PG5A1ISoTVKE-sxhRxfECA
+ release-partner-repack-beetmover-win32-nightly-mailru-okru-ru-public: Reh7uNPGTNKOM1zF5WWekA
+ release-partner-repack-beetmover-win32-nightly-mailru-okru-tr-public: DhGQvy2NRq-2fZvNZKZkeA
+ release-partner-repack-beetmover-win32-nightly-mailru-okru-uk-public: BfJWu17NRm2TWumZ_Zn6vw
+ release-partner-repack-beetmover-win32-nightly-mailru-okru-uz-public: UQWm4_-uTmuE_1UdnfMpyg
+ release-partner-repack-beetmover-win32-nightly-mozillaonline-baidu-zh-CN-public: LcAIKN9uQ4O8p2gjnh3a9A
+ release-partner-repack-beetmover-win32-nightly-mozillaonline-kingsoft-zh-CN-public: WVHtWryiTf2vmU8mjutqUg
+ release-partner-repack-beetmover-win32-nightly-mozillaonline-mainWinFull-en-US-public: SHFroZr9Rkqw0EWEd6WeZQ
+ release-partner-repack-beetmover-win32-nightly-mozillaonline-mainWinFull-zh-CN-public: fNB4p9wiSW6PPRTPiQe2Sw
+ release-partner-repack-beetmover-win32-nightly-mozillaonline-mainWinStubFallback-zh-CN-public: QdD27iZnQKaRsH0kkuCNLQ
+ release-partner-repack-beetmover-win32-nightly-mozillaonline-others-zh-CN-public: aCbNZmydS86hzeT4FgO2hg
+ release-partner-repack-beetmover-win32-nightly-mozillaonline-qihoo-zh-CN-public: LwmLcZuNRtOFY77ZVws_SQ
+ release-partner-repack-beetmover-win32-nightly-mozillaonline-tencent-zh-CN-public: UC6ilBpLTBq3oMY54OFFhQ
+ release-partner-repack-beetmover-win32-nightly-mozillaonline-xbsafe-zh-CN-public: An-gvxe6T5WqKSiFTODQ-w
+ release-partner-repack-beetmover-win32-nightly-mozillaonline-zol-zh-CN-public: XkEDv3o3S9a_l9eJD_uRcA
+ release-partner-repack-beetmover-win32-nightly-ntt-ntt-en-US: R_-VzghBSrC3hmY1mUV70A
+ release-partner-repack-beetmover-win32-nightly-ntt-ntt-ja: RNcZkZTjRDqblMSVxsOXlg
+ release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-de-public: e0O3M1ijT1qCOkvt9pcNeQ
+ release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-en-GB-public: Ar9iKCMkRf2xL3jVi1Spbw
+ release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-en-US-public: Y-x3uqLGQ-WlnqEv3yPHWg
+ release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-es-ES-public: anXH2XO8QH2Pagqi-AlJwA
+ release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-fr-public: b36bYlzMTnCn3mTGqAktbg
+ release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-it-public: RHHXtV8fTZq_L8QxnzTBzg
+ release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-us-en-US-public: SzJZWPbSTRCW81D8tUEz0Q
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-ca: NOCVY7wITcSW9lofhedxKw
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-cy: XpxntXjgSDKv2Hyg1U_ftg
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-de: YdtdKm-iS_aiLmU5W6KiYg
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-en-GB: KkE0ZRXpSFecbrRijxSkRg
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-en-US: dgw8KQbVQhqTiZ2PGoUP4Q
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-es-ES: NY61HGKKTeWNpk1izw7Igg
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-fr: dUipTfysQHawNop3HX7L4Q
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-gd: LvvRgYmLT1aSExIQkIdPVw
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-it: Kbi5pm2yTfK7WjhsuuXE8A
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-ca: c51un2uASoamuzGu-tY0Sw
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-cy: TDIfG1gSS0uiyW4T8gl_MA
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-de: NH4osUe7RBCKsRzGAwjaRw
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-en-GB: ZjQzpfttQoqBAdo5avl0Gg
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-en-US: fhZGjF1bRliKsLan17uDdw
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-es-ES: aXe9VwdcTMqiIj9at7FcLQ
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-fr: S9Jy8ilWQZ-VtbFH9NeQwg
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-gd: B8Njp8VqSvKE4O0xEIGQrg
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-it: SsQp9MzfSx2lf2ciVJc-mg
+ release-partner-repack-beetmover-win32-nightly-seznam-seznam-cs: dKCi1hueRWKYYz9NtUtN4A
+ release-partner-repack-beetmover-win32-nightly-softonic-softonic-de: a4H-gSVURQGKmdBmYMmMDA
+ release-partner-repack-beetmover-win32-nightly-softonic-softonic-en-US: AZ8lXf1lRd6ngCdiagc9Pw
+ release-partner-repack-beetmover-win32-nightly-softonic-softonic-es-ES: Rae6s-K0QeC7HfiikiFb0g
+ release-partner-repack-beetmover-win32-nightly-softonic-softonic-fr: VKoRlQLVTgy-ZKyBdV5WOw
+ release-partner-repack-beetmover-win32-nightly-softonic-softonic-it: Icm9IpkqR1imR1nliI2vMA
+ release-partner-repack-beetmover-win32-nightly-softonic-softonic-pl: BjGd7LPYRBKXEqbRwG00gw
+ release-partner-repack-beetmover-win32-nightly-softonic-softonic-pt-BR: H-plcK4sQha8zkMJ7ektPA
+ release-partner-repack-beetmover-win32-nightly-softonic-softonic-ru: MaJGBVgvQXSjIN5v-jZITw
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem1-de-public: FMO8xxV9SpGr27U7cA3AvA
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem1-en-GB-public: SkIPWe3XROu9kgzIb-J10w
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem1-en-US-public: GyiHuISIRTGeFH5mKLhPkA
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem1-fr-public: EUMAWk29RNSMZWTbLTKlAA
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem2-de-public: axhrW0gySBGHL0uDmfzwRw
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem2-en-GB-public: DrpkNo8SQJqXnj1qVQNUpg
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem2-en-US-public: O_YnhNtGS1ajmt75MOkXOg
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem2-fr-public: Exg3_o3wRHC4Red_yuYi0g
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem3-de-public: YP8R8JdcRqanuePKOfzw7g
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem3-en-GB-public: HRy8urgqQE6UeRG3f4MGyw
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem3-en-US-public: Zi6HMv6CRpKaf_Itz2XkAQ
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem3-fr-public: AITGgz9dSw-K4vf-zGDDzQ
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-de-public: RGzIaKdJTJCxWM-8KasH4g
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-en-GB-public: FlVXGtRbTC6mNWP4zUhObw
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-en-US-public: IqUdFkDlRX6B4BsGgPebKg
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-fr-public: fg3z7gs8TBuzmmdq2zPDLg
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-de-public: Gj841P_tQQWEp8OTdyXdCg
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-en-GB-public: Oooe7GlbSxC0qWCTT2kTLg
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-en-US-public: G2ZIsE0ZSqeeFVOoWMQJZw
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-fr-public: S-oEVsoTQlKDEmtaXPFysQ
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-de-public: W3pqeYhPR16CZeRUFdSIXg
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-en-GB-public: RzJOL2fLRzK2GbKOZvD-yw
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-en-US-public: SbIBS_kwS_qU_hLtxOyp1g
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-fr-public: dHylJgeUTG2TXALQ3frzAA
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem1-de-public: Mlfa_zKHQ0CAd3UW_oLviw
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem1-en-GB-public: DUGXU6elQ1KBfS_doA1lxw
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem1-en-US-public: HbYuVDSGTF28ETZIsSElnA
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem1-fr-public: BwRthjc4SBevf2OchAuNWw
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem2-de-public: GaQuMdWKSWerOnSIbQCYvw
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem2-en-GB-public: QbeWsWvJSvKBjonWnBVFug
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem2-en-US-public: arw05s0XTGCs4-UHWhvdyg
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem2-fr-public: IydGIES8QK-oEu0ScXX-cg
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem1-de-public: RMMNhUOySRO1H4lj7uuM0g
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem1-en-GB-public: eWN6-QqtQtie_lguiXoLgw
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem1-en-US-public: bZb-PyJeQ0OJ0y8FxTrN8A
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem1-fr-public: Tm3Xw5vfQ7OJk01H2-GG3w
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem2-de-public: DEm0sYL3QmCEWPpQBcNSSQ
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem2-en-GB-public: CwthOZ_XTba-y2p8FrpMPA
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem2-en-US-public: LV58jHQCQPiSo2djTJmw6A
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem2-fr-public: e17U1TBATN2SpZipLqY_qQ
+ release-partner-repack-beetmover-win32-nightly-toshiba-toshiba-001-MX-es-MX: ELlNoGY5TNKwDz3i7NH5PA
+ release-partner-repack-beetmover-win32-nightly-toshiba-toshiba-001-US-en-US: GQNUW7oGTtSwBIsuLMcIbA
+ release-partner-repack-beetmover-win32-nightly-toshiba-toshiba-b2b-JP-en-US: CkET61BAQ-ys7QFQqIAnRg
+ release-partner-repack-beetmover-win32-nightly-toshiba-toshiba-download-B-US-en-US: TCOVwiQHTz-roR97EgiWog
+ release-partner-repack-beetmover-win32-nightly-toshiba-toshiba-download-MX-es-MX: DX9wDTmCQqCs1OtHh6d6sA
+ release-partner-repack-beetmover-win32-nightly-toshiba-toshiba-download-US-en-US: Z1WGjIFBSOWTJnHjkO39SA
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-1und1-de: ddEZQA_1SaaLx7w43AYBTg
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-1und1-en-US: BvPjfXNCSdanfa5eBuhhiw
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-1und1_notb-de: GrnXhdYnSBWijvJrxny1Bw
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-1und1_notb-en-US: A6M938oLR8KVTgPeLkYCsg
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-gmx-de: d5r8e-u1TEWv7Il8nU64ig
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-gmx-en-US: EmrjTwtAQu-ep3va8l-BYA
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-gmx_notb-de: bC4nvoPdSWyYFUJyjiehkg
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-gmx_notb-en-US: e3rFFS2NSQ-eEBLf5hzpkg
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-mail.com-de: VMKA694DT8-LjTOJi5ZEHQ
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-mail.com-en-US: Y8Axfz10QxWTYtEbyhnY1A
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-mail.com_notb-de: WYSAxtWhRI2Aly0NV1Pa4g
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-mail.com_notb-en-US: exdF4-X2Ty2tluEqfFfXfA
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-web.de-de: ZGIC_uVvSu-zM5T5sX8JtQ
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-web.de-en-US: ENbofKrjQvqNomETN6VwQQ
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-web.de_notb-de: VtPZzyUrSfe7oJCk-oonYQ
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-web.de_notb-en-US: BmPs6i8tRoqtFv7DA8UO8g
+ release-partner-repack-beetmover-win32-nightly-wildtangent-wildtangent-en-US-public: SxgBS0HMQwewn73Wf9uhKA
+ release-partner-repack-beetmover-win32-nightly-yandex-yandex-drp-ru: f83cTx08SOCAEZ9MtI6BRg
+ release-partner-repack-beetmover-win32-nightly-yandex-yandex-planB-ru: ckMdxeGaTOG0AfSj9sMttA
+ release-partner-repack-beetmover-win32-nightly-yandex-yandex-portals-ru: LE6NZCyiQ8SYWPS_eYl3zQ
+ release-partner-repack-beetmover-win32-nightly-yandex-yandex-ru-mz-ru: FHf-MVGQStunXu5GQ1bDQA
+ release-partner-repack-beetmover-win32-nightly-yandex-yandex-ru-ru: dSHraoq8THa19WQTSCFg3w
+ release-partner-repack-beetmover-win32-nightly-yandex-yandex-tr-gezginler-tr: f9b_elHISlGCAFaovMVCiw
+ release-partner-repack-beetmover-win32-nightly-yandex-yandex-tr-tamindir-tr: Qqh-VmMST7yMbBvwj7aLbQ
+ release-partner-repack-beetmover-win32-nightly-yandex-yandex-tr-tr: Lej8LZ7MQ3OTfxeQHEWkzw
+ release-partner-repack-beetmover-win32-nightly-yandex-yandex-ua-ru: K9o3koH8RTyakuynD5Hibg
+ release-partner-repack-beetmover-win32-nightly-yandex-yandex-ua-uk: Ebv0z7EQQTKqhM8tG4ZIXA
+ release-partner-repack-beetmover-win64-nightly-acer-acer-002-en-US: dMSPPs16SceNIEuKfUtbZg
+ release-partner-repack-beetmover-win64-nightly-aol-aol-en-US: RZI80m2iT06v4JitiFTXXw
+ release-partner-repack-beetmover-win64-nightly-aol-aol_de-de: Pk32T1UHTduslx6WWSa4VQ
+ release-partner-repack-beetmover-win64-nightly-aol-aol_desktop-en-US: cFkKluN0SxOWsP1taxjkYQ
+ release-partner-repack-beetmover-win64-nightly-aol-aol_huffington-en-US: OfHYKwj0TlKJXUijxOrYSg
+ release-partner-repack-beetmover-win64-nightly-aol-aol_uk-en-GB: EctuiYUFRD-rCrOIM8ntEg
+ release-partner-repack-beetmover-win64-nightly-chipde-chipde-de: c40jasziQRy71Qebjf45DA
+ release-partner-repack-beetmover-win64-nightly-chipde-cliqz-003-de: eYroXbJ2TLWOQhO3KmdRmQ
+ release-partner-repack-beetmover-win64-nightly-chipde-cliqz-004-de: Sax-W_iETw-FnXSmqVWNPQ
+ release-partner-repack-beetmover-win64-nightly-chipde-cliqz-005-de: GTNx6IxNSdeJJg_gDAld2g
+ release-partner-repack-beetmover-win64-nightly-chipde-cliqz-006-de: EKEEw0s_TsO6xOWxWTfx3A
+ release-partner-repack-beetmover-win64-nightly-chipde-cliqz-007-de: dvS6cVqoSmmZ-sWK-cNEjw
+ release-partner-repack-beetmover-win64-nightly-chipde-cliqz-008-de: IGz03s2RSzOa81zzSNaVQQ
+ release-partner-repack-beetmover-win64-nightly-chipde-cliqz-control-de: Y2_Cd5UTSlyTz8n_Esi9zw
+ release-partner-repack-beetmover-win64-nightly-chipde-cliqz-de: UpY4Z7boTpiUTBAO9HkI3g
+ release-partner-repack-beetmover-win64-nightly-firefox-firefox-election-edition-en-US-public: IWTgiVM7SjC2CWGMzfy6RQ
+ release-partner-repack-beetmover-win64-nightly-funnelcake-funnelcake134-en-US-public: M6b01YkUTfWhlq6ylzZmBQ
+ release-partner-repack-beetmover-win64-nightly-funnelcake-funnelcake137-en-US-public: TLaQF0bNTbaozjBY4E5y2w
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-de-public: Nj29R1vxR-qa0q7SO2M-IA
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-en-GB-public: Qzkwl8cYR8qQbyprHQugTQ
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-en-US-public: bhe8QICQQpapN6YYf7bpoA
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-es-ES-public: UYapZs9uQL-RpFdJg67WYg
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-fr-public: eS9aHqZhSFK1FcD6P3ovPA
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-id-public: Jy7Y8vdGTQ-aItAdL-PZoA
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-it-public: BkQrYZrQT_SqqHa2kPFbnw
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-ja-public: HbCtfPHqTxezNC4a3jtaUQ
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-ko-public: dJA-bzumTdmc30aUCKgWvA
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-pa-IN-public: IZaU-iuiRjKdrMfstzqsNw
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-pl-public: Sp05Y_ceQHe8WKcd-Lstcg
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-pt-BR-public: RQKBl0d5TESz5A7tBlUSrA
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-ru-public: O0GrdZa8SrSnD156S_eTwA
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-tr-public: RNQWffZVRSqji8kf_3j7TQ
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-de-public: Z20m3p4ETRmJsk2YhwzA8g
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-en-GB-public: dMEAUZ4xRzWLhzn8LXvFug
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-en-US-public: QCV4fi60RSW_d_Ugtd0tzw
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-es-ES-public: Im23RIwESsWkGkYcoUSF1w
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-fr-public: ahvvWMhqSJ2n0uz4AD-w6Q
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-id-public: JbouLxJFTlmwKyw7-rG3Dw
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-it-public: I9gjpH5IT8uN9XfZxR9AZA
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-ja-public: BvYEyiwDTZOacIvaPr7RWA
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-ko-public: C9XMFM9HRyiuG6CSlEiqDg
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-pa-IN-public: S9IpN2ITTlSTgGGj_mSZ6Q
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-pl-public: JoooizHVRx-Zbp1HNECDGw
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-pt-BR-public: WRYOS5n4QWitxNjIK16kiQ
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-ru-public: IyyZTQWDQhOz3oVx9JQ-IA
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-tr-public: QdVinVsLRmOl_fSuszOhwg
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-yahoo-aura-en-US-public: L31DKiwqSB-vM2oN6jtLrg
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-yahoo-en-US-public: CkK_p0wwQoqF3sGLyowJmA
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-yandex-en-US-public: fwKMZhhKRSue18s1uIDfLg
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-yandex-tr-public: NdwJZJ_XSI-0kQUyeUdzGQ
+ release-partner-repack-beetmover-win64-nightly-mailru-mailru-ru-public: SEC1Os8NTuO5vvawZYPnuA
+ release-partner-repack-beetmover-win64-nightly-mailru-okru-az-public: V5RxPB4UT_-k864B7XA3cg
+ release-partner-repack-beetmover-win64-nightly-mailru-okru-en-US-public: JrSfNj7VR4aJnZpW0Ql_dg
+ release-partner-repack-beetmover-win64-nightly-mailru-okru-hy-AM-public: d4l66IL4SS-FRHcNwdk-RA
+ release-partner-repack-beetmover-win64-nightly-mailru-okru-kk-public: Pu_qm-6cRNmppXTkmBv__g
+ release-partner-repack-beetmover-win64-nightly-mailru-okru-ro-public: OWmt0XuMQkW5gaxjKAx0Nw
+ release-partner-repack-beetmover-win64-nightly-mailru-okru-ru-public: W6eknarQT6GJSUHoQsT3Tw
+ release-partner-repack-beetmover-win64-nightly-mailru-okru-tr-public: TaKiH74RTOyL4kGcTLTesQ
+ release-partner-repack-beetmover-win64-nightly-mailru-okru-uk-public: ebp_T1LNRLSlENInkvjUEQ
+ release-partner-repack-beetmover-win64-nightly-mailru-okru-uz-public: e6yokAjmRnSMChwWklJR5w
+ release-partner-repack-beetmover-win64-nightly-mozillaonline-mainWinFull-en-US-public: DsH5tr1cQBW2Gx45hxqZhg
+ release-partner-repack-beetmover-win64-nightly-mozillaonline-mainWinFull-zh-CN-public: Z07uGFiCSzG2ZjFS7IwzBA
+ release-partner-repack-beetmover-win64-nightly-mozillaonline-mainWinStubFallback-zh-CN-public: MtF2dFF5TVSXLItr6ajvUw
+ release-partner-repack-beetmover-win64-nightly-mozillaonline-others-zh-CN-public: Q7SWXvJkSLG4-W5MNclHiA
+ release-partner-repack-beetmover-win64-nightly-mozillaonline-qihoo-zh-CN-public: Y7uhFyzhRYGCe1BuEU6XaQ
+ release-partner-repack-beetmover-win64-nightly-mozillaonline-tencent-zh-CN-public: UGg3ZshcSRqM8RI0zgZ9vw
+ release-partner-repack-beetmover-win64-nightly-mozillaonline-xbsafe-zh-CN-public: LFm7bz9hQtqkUs-9aIIJQQ
+ release-partner-repack-beetmover-win64-nightly-ntt-ntt-en-US: XiCIz_87R9GuDIyZNXHxbg
+ release-partner-repack-beetmover-win64-nightly-ntt-ntt-ja: EzFeNEwWQLyJpSic37X9Gw
+ release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-de-public: bl2lb51QQjO-fn-auWRyZQ
+ release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-en-GB-public: PiSKQgS-QEy4NUGipyzB8A
+ release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-en-US-public: HqJt4Vz4R7yyhP1TmrQjJw
+ release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-es-ES-public: DDjaooDEQAqCTWkFAKkYvg
+ release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-fr-public: JOAGwMoGS8y5ldakExfeJw
+ release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-it-public: fqm8GWsAQMuiewOGFNFvNQ
+ release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-us-en-US-public: CQe5eFbFREq6K5WyMEJWjQ
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-ca: FBBT92_PSySY_NuE6UbzWA
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-cy: ZyGvwyC1RzifKJSVu8dy4g
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-de: Wfy5XUvyTP-CUIJ_BM1riw
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-en-GB: GEKAFz4MSkmuwjZ0ufkqtQ
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-en-US: Nu20aPbdTSOVV-zwzMTrVQ
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-es-ES: BeL-58rLTQmEtzc0E1Ut_Q
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-fr: J3tVEj5MRSSSXZapxqTSCg
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-gd: J3r4Sf9YT46HXL42GsYKqw
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-it: N_LIZPKrQpKa_nceOwe1HQ
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-ca: QPAx1VA1ROurbO_7ZEb1nw
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-cy: b-R32c3cTm-TSlMrmScQOg
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-de: MgV-IVoSQwqX_rUWgcWLDA
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-en-GB: WHOm-TttS42okKv8CooiZg
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-en-US: HljGQ4KfTp-52QdcWtqy3w
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-es-ES: LysQsoXITlCVnG2DHzD8Bw
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-fr: Jjr__pAhR5a_xdxelV0duA
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-gd: N8DsMRHWSzOnhGBs7SOSUg
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-it: D_FJcnVeTfCrp_EOVbVGBA
+ release-partner-repack-beetmover-win64-nightly-seznam-seznam-cs: cPMMn4A3RQuWrXBaWKQb0A
+ release-partner-repack-beetmover-win64-nightly-softonic-softonic-de: PzJWCZeNS3ayXdW3gJ8aTw
+ release-partner-repack-beetmover-win64-nightly-softonic-softonic-en-US: aFqMMpzVTeGiQ86Kbz7qsA
+ release-partner-repack-beetmover-win64-nightly-softonic-softonic-es-ES: dfF_kts2R7CRUuNUCAnbzA
+ release-partner-repack-beetmover-win64-nightly-softonic-softonic-fr: BlFDu5yTRL2ACGQqPK_IlA
+ release-partner-repack-beetmover-win64-nightly-softonic-softonic-it: FSKkdTHBTzekJ91ylIs3Pg
+ release-partner-repack-beetmover-win64-nightly-softonic-softonic-pl: ZK_R38msRe-OYjBbSkksEQ
+ release-partner-repack-beetmover-win64-nightly-softonic-softonic-pt-BR: LoBoZEORSx2HoEddWapBXQ
+ release-partner-repack-beetmover-win64-nightly-softonic-softonic-ru: a1Dj7M-QT5Sgwwbiz9q6EQ
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem1-de-public: T3yU8L2kReKrLm_oBTNxuQ
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem1-en-GB-public: f81zlstYS9Sk7eI83drClA
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem1-en-US-public: BuWewCVVSoSqO2oocHqLrQ
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem1-fr-public: dvCYashmTLySbtZbAfM8tw
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem2-de-public: FabBNM9JQWKl38WowdGZpg
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem2-en-GB-public: e0D-A1sHQhKCQD_cVXue4A
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem2-en-US-public: bvRDY0LTRleqg7hsMZD2lw
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem2-fr-public: eNxQA2rSRZyWEDgV9yew7A
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem3-de-public: MgdHif8ZTJm8NDc2j87aCg
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem3-en-GB-public: b1EzO0NpRLq-f-nh6NKMIA
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem3-en-US-public: HM7t_AzKSHSG_fWmBXViwA
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem3-fr-public: ClkE0u9dQ5Oi1V4aAg18Dw
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-de-public: NqvYvaYHSaCLqRJlIA-nxg
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-en-GB-public: DX77XEqcTGKaRuF9_iLPTA
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-en-US-public: XkuH5373SK2vmxuPmh7LPA
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-fr-public: ZvGBlB4bRKiCkYEw6dtBXA
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-de-public: FGl9bvODQu2mqtZy49QNvw
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-en-GB-public: Ke4jIgOARsmWGSVWHc6pJg
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-en-US-public: aDkAl2YSTjOL-7WzrZO2hw
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-fr-public: IYiKHxfYTFuWHRUdcDmvJw
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-de-public: DML2EoeXTDOmJIItZ3C76A
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-en-GB-public: Kp-e422FQeGC8ITZikQfXg
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-en-US-public: E0Q02kRFTdas5ziB8_T_2Q
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-fr-public: Zw5uXlJvS3W4J-eKOpRtjw
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem1-de-public: HnuxBaQ3Q4mk1fzic9FiiQ
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem1-en-GB-public: eHxi659ESVyqsnL2TEeEIw
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem1-en-US-public: BmAgJt3QRTWANZ8Pwy0mJA
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem1-fr-public: NJIQ4rBERU6NFh2m67fWBA
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem2-de-public: KqQrefSuQ2mwNWfC5O2zGg
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem2-en-GB-public: FLtLcd1yQqy1vSJIk2osHw
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem2-en-US-public: OKCS5BZESI6xd-vZ_BB0Rg
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem2-fr-public: BeqU0L4QSxqE45y5xSbBPg
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem1-de-public: bguKTodhTnu6p7hj_xaIrg
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem1-en-GB-public: BdPsIwSaTHGXWZwgK3P7fg
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem1-en-US-public: Q4Og0UoPThK4Dn3Cufe74g
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem1-fr-public: PJ4a3_HxTHGvVp2D96QN5A
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem2-de-public: czBvsvmHRayMJzh2xJ0IpQ
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem2-en-GB-public: WD8pu55RSgycpKROmSymBg
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem2-en-US-public: UjbKbAJ_R9KRUCnPyIJtNg
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem2-fr-public: QporqiJjTPibDjPgd4LxJA
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-1und1-de: bSz-LqvmR9eeVLarDBYk2A
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-1und1-en-US: fMVKsPCPQWOoHkRqoEFSxA
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-1und1_notb-de: LcCJSMvmS3u7WNSnF82Omw
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-1und1_notb-en-US: JmP8Rz_JRNqcS0-n5UrZRA
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-gmx-de: JzvYvXs0QtG8lDq1pwSYZA
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-gmx-en-US: SdVEmNFITwecgpT4nUuzuw
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-gmx_notb-de: eORLffr8TjWBcn5M9hlBew
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-gmx_notb-en-US: SPkDYDmaRQ6b6anE8PGXow
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-mail.com-de: UH_s8qJERumqqD0FIXedhg
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-mail.com-en-US: c5ZQpNFER_ujPETmQ1659A
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-mail.com_notb-de: IsNI9uZKTWa9921dPkk5eg
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-mail.com_notb-en-US: Xbp9vpmRR0KFAgOoHotUpw
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-web.de-de: J9CWv-x0Rd-N1cOBIKIoDw
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-web.de-en-US: DiiMu2t7TbefBT5cQ0uZBQ
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-web.de_notb-de: MgMn4fWmRxq5yWSwEUwkEQ
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-web.de_notb-en-US: CVR3LEZJQXCGHJSSeqKp4g
+ release-partner-repack-beetmover-win64-nightly-yandex-yandex-drp-ru: fw9jGkwtS2mhtdgg8fK-mA
+ release-partner-repack-beetmover-win64-nightly-yandex-yandex-planB-ru: SYhB2A4kQFig4RdXvMxX7g
+ release-partner-repack-beetmover-win64-nightly-yandex-yandex-portals-ru: cmyyg1NtSW2hy8v1x8hCiw
+ release-partner-repack-beetmover-win64-nightly-yandex-yandex-ru-mz-ru: UzIDPvbOQd6izYhTANQ7OA
+ release-partner-repack-beetmover-win64-nightly-yandex-yandex-ru-ru: VWMR2NB1RRSZWbH1zWZQcw
+ release-partner-repack-beetmover-win64-nightly-yandex-yandex-tr-gezginler-tr: WkWfzAT-RSa2eHxMK71AwA
+ release-partner-repack-beetmover-win64-nightly-yandex-yandex-tr-tamindir-tr: HBYQ4YEmRb6yeiWMz2xUKg
+ release-partner-repack-beetmover-win64-nightly-yandex-yandex-tr-tr: LCSe72AoRpy6aPmyR-9ptQ
+ release-partner-repack-beetmover-win64-nightly-yandex-yandex-ua-ru: KBb9BmdnThKJqDPh_XL21g
+ release-partner-repack-beetmover-win64-nightly-yandex-yandex-ua-uk: R6ShpAeMQmeN5f3ta5zRWw
+ release-partner-repack-chunking-dummy-linux-nightly-aol-aol-en-US: Fl4h6BC3SwaKYLiTwhUT1w
+ release-partner-repack-chunking-dummy-linux-nightly-aol-aol_desktop-en-US: WxWdFF_hRjCfX7ellm8AxA
+ release-partner-repack-chunking-dummy-linux-nightly-aol-aol_huffington-en-US: IbZ_9NTnTW-aE0YxnJjmxA
+ release-partner-repack-chunking-dummy-linux-nightly-aol-aol_uk-en-GB: IEn7b9tQQuyMTAt54Iy6yg
+ release-partner-repack-chunking-dummy-linux-nightly-funnelcake-funnelcake134-en-US: YJn6BqduSWCpW2WXhmlM9g
+ release-partner-repack-chunking-dummy-linux-nightly-mozillaonline-mainOther-en-US: cidFWd6oTQK86psDSczbHA
+ release-partner-repack-chunking-dummy-linux-nightly-mozillaonline-mainOther-zh-CN: ASbrmNvdRT-4N5ByXSehWQ
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-ca: G0814a4TQgSU6NjRCjDaVQ
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-cy: Kdy612q1QP-0GdFjDin7rA
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-de: fdZ3PGDwQWO2D0olKp_v9Q
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-en-GB: FEU35DS_StWNEABCAvjCcA
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-en-US: apEUC9YgSVi1rCLhVQbaZA
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-es-ES: PoHzU7j-QRyCJ6riX1-Vow
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-fr: DWsOMlNNRm6g_ZzEs75MeA
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-gd: dFDKzmy3TF2B9dLJqbEBYA
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-it: KtN5S2eqSUyOTdpgITg_LA
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-ca: PW-mLeUMRcyVOHE_qkHLSg
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-cy: PNkK9FZuQ223vGyKy-9rJw
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-de: SjyQjBS9QkyJUDSpu2DYrg
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-en-GB: BEQTaMFQQLaGMydwNYUdYQ
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-en-US: WjzfALMdS02PWHaKqRZjIA
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-es-ES: V4Yf6DLQTrSBhj_ZzQ6nrg
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-fr: STa4Vhp8QGqXLb5LpvcogA
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-gd: JZRSsT6ZS7GFHFSP59JkgQ
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-it: PRf-iVugSuKzrVhL6cmaWg
+ release-partner-repack-chunking-dummy-linux-nightly-seznam-seznam-cs: Bvj_EU07TI-rN7MsY0QVUA
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-1und1-de: Vu67oEMTSQS530mVijYvFw
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-1und1-en-US: XWVcZ6zeRWO1xQkcphOy4Q
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-1und1_notb-de: QWaMxE-AQgegwkl59BpBEg
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-1und1_notb-en-US: WB5nB27PQy2gKTTZJWYyQg
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-gmx-de: Yc1jYejGTa-FnZVFu63uMQ
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-gmx-en-US: VEjcR3XIQPGwz_8kTAiVBQ
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-gmx_notb-de: Zbl3lcEjTCaLUPKj7SWqPg
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-gmx_notb-en-US: Iz_Z74DjRP-BTO44sXTQyQ
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-mail.com-de: By3IrHyFQeKLlvAF9Nv9qQ
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-mail.com-en-US: T1vC9oxSQkizoUCMMcDf5A
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-mail.com_notb-de: RScYNwRVSPmwOTgJ2XtGaA
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-mail.com_notb-en-US: QA8uGrNWTY2FkL2ymIXeQQ
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-web.de-de: Jszyh_lvSlSzQy7jU7hQqw
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-web.de-en-US: EzB9tSGWS6mU3HL8nD1CgQ
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-web.de_notb-de: agf3o9pfTpWydU699tgQMA
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-web.de_notb-en-US: KDR0sFYtQmaVIzd9-op2Rg
+ release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-portals-ru: DxwlUCEvR2a3At2e7J6ZXg
+ release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-ru-mz-ru: d0kY5vnoQ1Sqe0z51WT2mA
+ release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-ru-ru: HYY2jNi_T12Yz1zmOKZ2bw
+ release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-tr-gezginler-tr: C4lH3A0gTKi_VS4KQ82ZTw
+ release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-tr-tamindir-tr: KIo9d1qXT8eOjxylNBZBFw
+ release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-tr-tr: Dpe1934eS06dtgjhESmAgQ
+ release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-ua-ru: FaGqpRoRSGOhkOK0UR4RkA
+ release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-ua-uk: dfSr1x1LTuGHCCDFqt1wGw
+ release-partner-repack-chunking-dummy-linux64-nightly-mozillaonline-mainOther-en-US: FadnvUO4Ti-9OAL7qwRrFw
+ release-partner-repack-chunking-dummy-linux64-nightly-mozillaonline-mainOther-zh-CN: QCh-fvHITk6yqL7NiS00gw
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-ca: TjQvz95wQJWgYnJkFXWS8Q
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-cy: Kl8n-mFCScG5f-fMw5Qq-Q
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-de: DevD7YtSSF-CGWbrYI4Ntw
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-en-GB: PNmRY94JT76Ejl5yYX3HFQ
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-en-US: VhHtTtCPTdGJlyGT-jPsrA
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-es-ES: FMQ-VEm1TuaPtDgyqF7dXw
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-fr: VDIxeefNSnCdBy6N3D8I_Q
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-gd: MYjDhbJ5TgK-38Z--oDKHw
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-it: f8tprk0hSf62fEPhqbavLA
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-ca: cDgrdvfRSZCO-2wSGwSqRg
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-cy: UD8pSzkHTH6yH-gRGWL7eQ
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-de: JrprVawUSUKsOL1as3QbWg
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-en-GB: UrPatzeQS4OJf7b2ri7yLA
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-en-US: BWc417QwR5yDSRQ25xUONg
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-es-ES: d-zMXurYTpSjTJhw6laTjA
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-fr: B3OYCWKNQCuIufOuS9QuyA
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-gd: Av0UiDEvQKCmqTLKLXA0zw
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-it: LUlPCcopScS0asxdkiLRfw
+ release-partner-repack-linux-nightly: UO4uplgdSbap_5QpagWAtg
+ release-partner-repack-linux64-nightly: f8mgMXjSSxad0HG35CnxDQ
+ release-partner-repack-macosx64-nightly: SzpeIMSDTYeSpGWc999qxA
+ release-partner-repack-repackage-macosx64-nightly-aol-aol-en-US: cZW-czE_TMeE6ER-THQHcA
+ release-partner-repack-repackage-macosx64-nightly-aol-aol_de-de: Klx5x9wJQ3Gp4VhzWxllig
+ release-partner-repack-repackage-macosx64-nightly-aol-aol_desktop-en-US: fFIRDguaR9a4yHbPQBxuiA
+ release-partner-repack-repackage-macosx64-nightly-aol-aol_huffington-en-US: HjF5gacFQpaEfbt-xCEytQ
+ release-partner-repack-repackage-macosx64-nightly-aol-aol_uk-en-GB: EluUnY4FTzSNqNlzHXyT2A
+ release-partner-repack-repackage-macosx64-nightly-chipde-chipde-de: FBWI_sOmTuOpM19WMtkTIA
+ release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-003-de: Mnc6tMkyTkCIJUWmqC8Blg
+ release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-004-de: d-ZeGR3xR6mt7Z3E3j6fRQ
+ release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-005-de: cHX5HFTfRCub4eHZt22UXQ
+ release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-006-de: PziUMlaDTNG61yaGRuhe6Q
+ release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-007-de: PwcF0OMjS7KoH9_tCgyIgg
+ release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-008-de: bER4g0jJQKCv1MpeGH_MZw
+ release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-control-de: DCmH5TDbSNiqsvQ0lQ-Exw
+ release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-de: FRXzg4O9Rsa2IktaG7C3Nw
+ release-partner-repack-repackage-macosx64-nightly-firefox-firefox-election-edition-en-US: AeCg8JyYRQawGNKpSzeu8Q
+ release-partner-repack-repackage-macosx64-nightly-funnelcake-funnelcake134-en-US: PKAlXMUKRtWnIwKPXkhRHA
+ release-partner-repack-repackage-macosx64-nightly-funnelcake-funnelcake137-en-US: MNn45cg1T9iGWNOCsi8VsA
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-de: MDgKzekrTn-M0ADySHU2fg
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-en-GB: PqWEHhBAQZG0-jgA50ZeqQ
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-en-US: ZOB6-qVwQD2RLmXc6Tzplg
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-es-ES: BsxSTWS7T9GPDcpbfXTkMA
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-fr: C1WxDhuuQo-a8xRNfkyqrw
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-id: XR-ZTJPqTyKiPZXg2sPkBA
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-it: PpnTB5RfTPSQdUO_S_45Rw
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-ko: GMafq2enTam1vy_4MdLDUg
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-pa-IN: KqGinlJcQEaxW4-6IffNww
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-pl: DGkoViLXQ-aFNdv38nrR9g
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-pt-BR: TXNkI77kTaSO0q63sdTK0w
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-ru: TDhUOknFR_-PBKUEBs18-Q
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-tr: VlFJRofOSVWkWbvmoDXReg
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-de: M3F3eGtzRImPwA-nKbkILQ
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-en-GB: fbDcAZcVT9mcwjKzFeGQPA
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-en-US: CO2XRa5XRIicOn7l_G8JTg
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-es-ES: Lp5SzER7R-2tHixqB5fOUg
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-fr: K6MuyJW4Smqv14H1FtT29A
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-id: asdCp65nR7KyMcDHqN88Bg
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-it: Qip7bL0QQ9OQ01Uk3zZzqg
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-ko: RBIxsdNCTiKpMXq97MGHAQ
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-pa-IN: IkCXosFPT0m6B124I7PDcg
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-pl: N3m-SYN3Qn-02Kyrc_PTAA
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-pt-BR: K-ra1l9LTjuOJkwUOU4exg
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-ru: fvi5Q5wIQ1uWYZvict7Jig
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-tr: VvLHNkUUS1SyMrLmnHveDw
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-yahoo-aura-en-US: Gw5a8KNcTluBuJdCvDIibQ
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-yahoo-en-US: X69bdqf_RaiDyjEMYCTyJw
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-yandex-en-US: Ep2J2L9WTAy3Q2e_iCVjQQ
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-yandex-tr: DbILlvm0T5-fqIccfO_QgQ
+ release-partner-repack-repackage-macosx64-nightly-mozillaonline-mainOther-en-US: N5xwjXTtRtmwfnLj87MdJQ
+ release-partner-repack-repackage-macosx64-nightly-mozillaonline-mainOther-zh-CN: KEv6U2JrRyOxpWGaSvViEA
+ release-partner-repack-repackage-macosx64-nightly-ntt-ntt-en-US: XiRND8a6Q3et0pl7NExR2Q
+ release-partner-repack-repackage-macosx64-nightly-ntt-ntt-ja-JP-mac: NlQ3gqM4RXKPOXTnpbdo9g
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-ca: azxF_70HS7y1mEPeH_lMkw
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-cy: Hm9lQXgsSVuXzbrmk7X0nA
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-de: fBSKtepRSbKQZVOuaEKJPw
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-en-GB: LyWK1ZqkRHqDRQ8nKlL8kg
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-en-US: Su3NtxirSSqBKSPeuwuz6A
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-es-ES: MkTFT8SVSta0RRYNHuTJmg
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-fr: BiR2QFC_Q6ux8jreOM85xg
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-gd: f-3HWh8cSPqjN2IT_MR0IA
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-it: TlYxU8AsTxWmFVyJ0tA02Q
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-ca: AQ8Z07ZcTZ-rbqp0HHzfZQ
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-cy: ENVbIUsyRL2A-rPHaGPz5g
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-de: NX6EO8tWRga9XPxV8aerdw
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-en-GB: dtCWtYPnQ_mWdxw-lmyvAg
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-en-US: M60-S97OSdW4AmZ4tCMahw
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-es-ES: TCf6fz7LQXSbkQ5QOy5Uvg
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-fr: Tm7Hp8hDQYKdNTCq55kyDg
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-gd: UhQUm0EUQ6G32mTqmJtpFg
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-it: PEgJHiuHTymthsW-1-IuHg
+ release-partner-repack-repackage-macosx64-nightly-seznam-seznam-cs: fLe_59oERT2lOFHfcnu-fw
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-1und1-de: VigDGwSkR2y74yUZtSeAqQ
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-1und1-en-US: Nq6ggH_gTZ6QQERWuvp0Mg
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-1und1_notb-de: f_C6tcW2SwSx3pKftcpywQ
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-1und1_notb-en-US: UKhPQR2gQOSz8fcOlkBQkA
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-gmx-de: Mp628RbBSquvNYs9AnxQMQ
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-gmx-en-US: KkEKpaipQRC2Q9Kv5IYvEQ
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-gmx_notb-de: MUqfp1U3Q5WVIsFvoB-ykg
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-gmx_notb-en-US: KsDtTDaLS7eG_pew54nVag
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-mail.com-de: K_Q4ZoinSL2IT2KpNYL1ig
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-mail.com-en-US: e5EwmkVYSDuKtib_DffhOA
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-mail.com_notb-de: RHiKJ_x0Rtiacg6iVDE6Kw
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-mail.com_notb-en-US: Z9-aA8nwR9-_SnRaxKuTHQ
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-web.de-de: LVg61mxsSjiz8qvI-E3Zvw
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-web.de-en-US: YJHJJQaDTA-sjbNTpjZu_Q
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-web.de_notb-de: Rw8-CAlQRXuGH1iTz0Vebw
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-web.de_notb-en-US: CRc39GuQQb-jU7HqmpvjAQ
+ release-partner-repack-repackage-macosx64-nightly-yandex-yandex-portals-ru: Z1DLLqEyTH2vPiwHIzBl8w
+ release-partner-repack-repackage-macosx64-nightly-yandex-yandex-ru-mz-ru: aYJ1f3sLTru9kRwkm6uVtg
+ release-partner-repack-repackage-macosx64-nightly-yandex-yandex-ru-ru: L7pL8ev6ROqO5jljAsIfUg
+ release-partner-repack-repackage-macosx64-nightly-yandex-yandex-tr-gezginler-tr: DXbZXfLVTky9wvp5ARq2nQ
+ release-partner-repack-repackage-macosx64-nightly-yandex-yandex-tr-tamindir-tr: e_DJ1jl9RkeVqqXXhxa2ag
+ release-partner-repack-repackage-macosx64-nightly-yandex-yandex-tr-tr: ZVZne-avRheffJDwQ7k3_w
+ release-partner-repack-repackage-macosx64-nightly-yandex-yandex-ua-ru: JVgSbvGgRqWVZFiOVs5ZJA
+ release-partner-repack-repackage-macosx64-nightly-yandex-yandex-ua-uk: dpfjrTKsT32j4EBBpMV_kA
+ release-partner-repack-repackage-signing-linux-nightly-aol-aol-en-US: fmfyjBqiSnqgvLhYZjqx7w
+ release-partner-repack-repackage-signing-linux-nightly-aol-aol_desktop-en-US: O0An4cBORUilylitG1L6YA
+ release-partner-repack-repackage-signing-linux-nightly-aol-aol_huffington-en-US: Y_c74uPhQWSKBzbKBVkXSQ
+ release-partner-repack-repackage-signing-linux-nightly-aol-aol_uk-en-GB: BoVGx-5tQ2m0s-j9UQRdlA
+ release-partner-repack-repackage-signing-linux-nightly-funnelcake-funnelcake134-en-US: AzPsfV6AQaWGzVFGZ2P5TA
+ release-partner-repack-repackage-signing-linux-nightly-mozillaonline-mainOther-en-US: YeyjMIm2TuCdUEhjjbhKNA
+ release-partner-repack-repackage-signing-linux-nightly-mozillaonline-mainOther-zh-CN: a38VmAACRKaPpYS9vWG-5Q
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-ca: SFOOeMaAQ-2UXWNYM7_KZQ
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-cy: ZzlAFM5oS6edXV-UxaxKBQ
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-de: EytL054jRI2oEW3iTGXRQw
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-en-GB: e4rKpCU5S9aZp8rLWnYU_w
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-en-US: Yk7eCqZcRHK7aSWZ2xCOZw
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-es-ES: WcCnTaTLRBqTkR3O00R6eQ
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-fr: YQnV8IxTTkCmE3lzl8-EmA
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-gd: V_0p2VRMR7KzUZGBjjnQBA
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-it: TzcTkjt6RYu8kvEbrL2QiQ
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-ca: BxVQLYkjSB-El4-cTKD8lg
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-cy: MjnJ91pgTfSYvZKrCVscoQ
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-de: Rz-IIDvXSU24EH-A8eOzMg
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-en-GB: OSVAjo73Tx-h14UpmUVwjg
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-en-US: Ah6AXDiAScyo88iAiwEmkQ
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-es-ES: EU0NJZwmR4m-q4pomOQ4FQ
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-fr: AeTEaXuKS5C5w1cVIgqJtg
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-gd: UiFrAFsBTx6o6zgFcT--Rg
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-it: GE8RdeizSHu9l-BXC2oABw
+ release-partner-repack-repackage-signing-linux-nightly-seznam-seznam-cs: NW5PD22dStCB8t21ob9qOw
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-1und1-de: TBcgDrlYR9il0XgoRRtHKg
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-1und1-en-US: Pc7ax-LbQQWlvX7xOUCbHg
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-1und1_notb-de: SEKzGHnvQQqhIVrSwOEB8g
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-1und1_notb-en-US: G3tXqPVYRdWJ2hAlHSbShA
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-gmx-de: FUyPytEsRySewYlpn0yOWg
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-gmx-en-US: DsxE83h0SqGraJH9o_Oa7w
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-gmx_notb-de: DbXPvZu3T9qPsJDBYJUUXA
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-gmx_notb-en-US: Wnc6A8t5R8KTkFMOBYspRw
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-mail.com-de: N4k0PV03QIOkqsyMc52qCg
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-mail.com-en-US: e5W7vrtdRFWfqUFsNwB8IQ
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-mail.com_notb-de: Jd3YmUDxSv-i-Epp06L6Yg
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-mail.com_notb-en-US: E6EpY6T4RdyGMOcjrs5P9g
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-web.de-de: ObYb7ifERg63Mcw9USy4hQ
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-web.de-en-US: FST9apwdT8iZR2an9twKRg
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-web.de_notb-de: LnmcVQsCT_Wf5Lzsu--FMg
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-web.de_notb-en-US: Rao96LAlS5acRQ4jbSzYXQ
+ release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-portals-ru: A_OvvKm-ROyr-jKEODPC0A
+ release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-ru-mz-ru: Iq49RR1aThWcQHQn2jXheA
+ release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-ru-ru: O42VEReoR1GszNWdrHEvjA
+ release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-tr-gezginler-tr: OZbH-k-FQbOXLqSbp6OQkQ
+ release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-tr-tamindir-tr: Uydzud-_SLu44paGfS0Cmw
+ release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-tr-tr: KsQaFfjxSJiloIskPy1K5g
+ release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-ua-ru: Gr-6TcvZRryyocxgn_sVhg
+ release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-ua-uk: InEOCDcaRGiRXG_aU1M0GA
+ release-partner-repack-repackage-signing-linux64-nightly-mozillaonline-mainOther-en-US: Pzz8p2gORnmluoRh4pSqmA
+ release-partner-repack-repackage-signing-linux64-nightly-mozillaonline-mainOther-zh-CN: HmG2JrGwSpy62uGlOg96Pg
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-ca: PHYqIoc0SaW_E6PMm7aF_w
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-cy: czBJQXCFQrWuA4OvNgRLOg
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-de: dR1OrHwTQE-DQzsLBGgaiA
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-en-GB: T86oavrITFSJp4eF08W2Kg
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-en-US: Z5YYoRXaSyK4rE9MW05L9A
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-es-ES: bb7BT1j4T_a3u1o8s6aToQ
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-fr: TRulVLTKSgiMArTx2_yARQ
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-gd: c-E9SLTsS2eZwtuvGxY_Pw
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-it: O_71sHH1S8iu59_kFKedTw
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-ca: UXqUxcTXSLCwqrujPH_IGQ
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-cy: TlbhPM9lTc2Kfz8rhjm7IA
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-de: NKMkFXfsSES_7J0gpPrClA
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-en-GB: L-gPITEOQQi8PNp3wNzGMw
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-en-US: EiV662PdRVKgM-H2xutXag
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-es-ES: On7yelz7Qk6n_pm98kmzaA
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-fr: YQIqCz7vQmmln0Cxg8REzA
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-gd: I1KEbTqlSCuzOlQidC0mTg
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-it: Zehd9xHbSDCpz6NZueuNSg
+ release-partner-repack-repackage-signing-macosx64-nightly-aol-aol-en-US: JCMoz1ykR-qkqt4-qKv9CQ
+ release-partner-repack-repackage-signing-macosx64-nightly-aol-aol_de-de: fAmbNs9EQbizCoiEW7rgpA
+ release-partner-repack-repackage-signing-macosx64-nightly-aol-aol_desktop-en-US: ShTUrHtjSxmGGYnYNXQPnw
+ release-partner-repack-repackage-signing-macosx64-nightly-aol-aol_huffington-en-US: dXyo_KMaRMeRRxnQY_amJQ
+ release-partner-repack-repackage-signing-macosx64-nightly-aol-aol_uk-en-GB: dzEFFYGlQjCoS5SFzsp95w
+ release-partner-repack-repackage-signing-macosx64-nightly-chipde-chipde-de: B8vvO6FfS1Cu_mZKLvjZVw
+ release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-003-de: L8nt40hQRByTfx6hcDP-Lw
+ release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-004-de: YJzRB7QkT3C8m66SQQxfxQ
+ release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-005-de: Y3_UEwWfTiCAiEDyh3NZ2w
+ release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-006-de: U3spNthoT3u45MsOAYtzVg
+ release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-007-de: JjzcXKqSSee_mS-t_dtxUg
+ release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-008-de: MR7jZNM_QiCs3iy3AF40ag
+ release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-control-de: NaVV-o6KQ7i0PEKHj3adfA
+ release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-de: cTH3z9AXQF2lVL3aCbp0cw
+ release-partner-repack-repackage-signing-macosx64-nightly-firefox-firefox-election-edition-en-US: XBEnPqARRn6A6kvRfkLCUg
+ release-partner-repack-repackage-signing-macosx64-nightly-funnelcake-funnelcake134-en-US: HA5gv1tRQ-aAmKUQHJVUsQ
+ release-partner-repack-repackage-signing-macosx64-nightly-funnelcake-funnelcake137-en-US: cxt4oosvQYSCVfPJzOIXZQ
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-de: YaWE4B_0QUOONj7i85DlRg
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-en-GB: dFXA0fEsTfKC3Ci0WP8MJQ
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-en-US: ZgCOk84KSBmESob7xuv0Fw
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-es-ES: KA9Lm5N9T1yPTM7QTK2boQ
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-fr: XbzZVIQnRPONgrrK9hZalA
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-id: NvQRUiHbRT2aPdkcnb53Sw
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-it: CkA05810SgWZovO6p4rsGg
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-ko: HgorKPdRSFGghJznzBCzyA
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-pa-IN: V4LisnjuTy26NOOPy7P-yg
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-pl: OmHmx7SwS4yWCuSEwAq_VA
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-pt-BR: bfXYwCIKTNSr26EzUHZ85w
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-ru: VDBicfCSQ56ugRvMxLHocg
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-tr: KTWL_XX7S5KacNH-REQZhA
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-de: ZFApNHfzS8GIW1DV-VyN_w
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-en-GB: BBA50gyORL-Edq18_DbR_A
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-en-US: L_4NjItuS6-BLdCdrESEPA
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-es-ES: arSGT9-QRFuRQG6Z44iDrA
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-fr: X0yj2BfCSfOLZFmpV8IhDQ
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-id: WBuqZ4nKRY2je1NzMKA9Cg
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-it: dDjacDNOTZ2KqR0JfuXZQA
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-ko: ZUxTEtJLQ_yc4g5YzwBQ0g
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-pa-IN: PpWwwSplRmGHIaYpf_i-MQ
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-pl: NY4fLUSSRfqp4RTxyWaTLQ
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-pt-BR: dGzEbKk3SqCs4Dzt0aYNmw
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-ru: LGLHnINIQsWANtIGCplhLQ
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-tr: PBUT7-mbRCyp3LCUje7wIQ
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-yahoo-aura-en-US: Ld-dUBh4QkyLzQaCLCxgkQ
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-yahoo-en-US: A_k4Y65YTQa8-XpSRinaag
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-yandex-en-US: XzkArif4RUeIsuSG8BC20Q
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-yandex-tr: KBEuUBGJQqK2iUBLMNtOeA
+ release-partner-repack-repackage-signing-macosx64-nightly-mozillaonline-mainOther-en-US: RLqikoPWQpStFyWe6ka_aA
+ release-partner-repack-repackage-signing-macosx64-nightly-mozillaonline-mainOther-zh-CN: ebyW37wpSme8w1n5yE1T-A
+ release-partner-repack-repackage-signing-macosx64-nightly-ntt-ntt-en-US: P2PVfIwYQxiL2t80u94fEA
+ release-partner-repack-repackage-signing-macosx64-nightly-ntt-ntt-ja-JP-mac: P_w5qrurSra_GRsE_ngwZQ
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-ca: cjCuTLlTQ7eR1oVP1IfqOQ
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-cy: cGDVw7y1Spu3U0C9unUmVA
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-de: GecZv0YrTRmIAEG8RWCTiw
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-en-GB: QHVxE3wkT--AG2PjQU4UKQ
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-en-US: ckT3lbQxQyezwXccn5Srwg
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-es-ES: VMOM0OHESVmAKqPCZQQTUQ
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-fr: bg31l36cSTel27hlofYVfQ
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-gd: HstbSzJkR-6cf9GkEeyGQg
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-it: c521Gc69TIa-flGKA9s9Wg
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-ca: MBZYWx5GTaabsutnWGuleQ
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-cy: bNQhtHM_Tb6ZshFrhMXtvA
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-de: DuUlk57VTKajqCMlPIV_fg
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-en-GB: Z_z3xQqnRwKQdFJ4LT32yw
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-en-US: IT1uywfjTKuqrmUKyP8Djg
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-es-ES: B9pRIwZTSHKS4k7Fm8AuvQ
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-fr: dbEuEpl1SPC-i3iMPBWjvQ
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-gd: XeYleDJkRneuxJyp5n9a2Q
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-it: Sawym0_4QMijlwXKzryWJw
+ release-partner-repack-repackage-signing-macosx64-nightly-seznam-seznam-cs: JA99iJ3URcqn2uL3IEKOww
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-1und1-de: cCfzOT8QTUCQx3nh_1S58w
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-1und1-en-US: IWraWw4XSSmULkYPZYgaqA
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-1und1_notb-de: JAADP_k-TbKYYB5xmp55LQ
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-1und1_notb-en-US: USl8NQfaSTSZF0LAgAeqRg
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-gmx-de: QlOQ6WcsQvynGmWOmL7cwg
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-gmx-en-US: El2mjGwKR0CLdsl_eOko-A
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-gmx_notb-de: PafmIpCCQIez-TCR5-RIWQ
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-gmx_notb-en-US: FCEaj_QvSKy2eOM65SpjSg
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-mail.com-de: LP3dx7_9SEK5I1BnFRwLVg
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-mail.com-en-US: AK5sZPhyTnSkT84FeW5MqQ
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-mail.com_notb-de: evj12_-EQD2CHYvnl_oCLw
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-mail.com_notb-en-US: WlBOg4UXStC_ENbvTJR1_A
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-web.de-de: PXNnofwoSfuAjFZMstDefw
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-web.de-en-US: IeVTvDAQS5-YpRZrEzc5pA
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-web.de_notb-de: Poa4Nn-eSwWM9ZapRx3y3A
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-web.de_notb-en-US: HBlDrziWSp2Zglg_WQaDRw
+ release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-portals-ru: fYqgLQxcSl65-aBkdUht5g
+ release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-ru-mz-ru: HFhENKq5QV6SQPO9Tg0ZtA
+ release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-ru-ru: PrRxEkWgS3iIcyrl1EbJoQ
+ release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-tr-gezginler-tr: FXReXgZ4TOijQXH2-g_sHw
+ release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-tr-tamindir-tr: Oqqerg7TQtSgMVr81RpVqw
+ release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-tr-tr: emyNdDBVRS-kOm3ktr5FPQ
+ release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-ua-ru: XXmF6_-jSWe5WXRTKhKvrQ
+ release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-ua-uk: WHG2lC6sToC914uhICOlpA
+ release-partner-repack-repackage-signing-win32-nightly-acer-acer-002-en-US: S8GF0GZKTk2tEUn48wpo0w
+ release-partner-repack-repackage-signing-win32-nightly-aol-aol-en-US: SJlBZDVnQAyslf29KwuLKA
+ release-partner-repack-repackage-signing-win32-nightly-aol-aol_de-de: SyIa_Iv8SNClwdciqz9CrA
+ release-partner-repack-repackage-signing-win32-nightly-aol-aol_desktop-en-US: IphwJeWWRtG2dF8IQks8Dg
+ release-partner-repack-repackage-signing-win32-nightly-aol-aol_huffington-en-US: chsrz7hLRJCeLd4vm4Bk6A
+ release-partner-repack-repackage-signing-win32-nightly-aol-aol_uk-en-GB: OUulyxHMTRSQHeJcftbo5g
+ release-partner-repack-repackage-signing-win32-nightly-chipde-chipde-de: AWu6urNYQ4qttAxI974wiA
+ release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-003-de: f_wa0GdSSmiqoxjoWtWVrA
+ release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-004-de: dF87-Z6wRW6mWjJUQTaQtA
+ release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-005-de: XzFPD5A4QX6noBkt8KXZbQ
+ release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-006-de: GWOzJ0T9SauKRNxCJjkarg
+ release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-007-de: P1gq2J-0QmO5gWy2528tpA
+ release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-008-de: D-y0D-x-QEyixNT3Y3FOQw
+ release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-control-de: d53HQ7SAThW7XyqpNHUfrw
+ release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-de: GL1V6Wj1QF2QO5l4FS-iPw
+ release-partner-repack-repackage-signing-win32-nightly-firefox-firefox-election-edition-en-US: PkFmN-9KTo-HtD8C1HPsrQ
+ release-partner-repack-repackage-signing-win32-nightly-funnelcake-funnelcake134-en-US: UeY8n5_PRHyemj5mJCEoFg
+ release-partner-repack-repackage-signing-win32-nightly-funnelcake-funnelcake137-en-US: SqASpEpcQrC-2A65bcx7Hw
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-de: D5ZDmjdbQ5Oe0Ve06TvJ9A
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-en-GB: PO5oCMz2SJ6h93hN1CRhUg
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-en-US: USMuLsWET2GdNPyQx_yoMA
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-es-ES: O6wIY4icRfihRLgsONsGIw
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-fr: bBJSkmI5QT2x0m0-vRrNGQ
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-id: JmIZLIK0TKGvvfg18WWkew
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-it: LeFd7hvlSfm8WVPEpg4x_g
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-ja: fcfKGUs7QBylC0RJ9pNorg
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-ko: Wq1xbFThRIi7sSX6TfI28A
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-pa-IN: FcAkJ60uSU6nJM-NK82Qnw
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-pl: LB8IYutGR5OFsgp_9_Mrfg
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-pt-BR: RBUAKfL-THG0KRp_9Xr1rA
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-ru: KEm_R8ygTsSHvIk6MX4Pxw
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-tr: Z9I2emKQTrKuYtOjyQDaZw
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-de: ApHi7KvlT_-MXoYn2YNcgw
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-en-GB: PX014iroSpGpThXoO7dfHg
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-en-US: PewbAx6cRDeTe1C5-K9BHA
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-es-ES: b4WcVLl8Q-GYsSxdHtnB_g
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-fr: bQbRuuyXRTiRIOUVp4aemQ
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-id: C5zW_aH0Qp2jzdQQNYPlog
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-it: MIVsUT8HS3ewRwqYGdcwsw
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-ja: QVUwEFVISbOST4hgW_eejw
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-ko: adJ5LoziRN-rNEVli03sew
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-pa-IN: Ctq4EIa_QimpjpfOTIDMjg
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-pl: ISrvkLtgSl-oVXNBv_IoKA
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-pt-BR: HYA8b328Qem1_vwa7-WClA
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-ru: JFl_NpRwTJuq0lNv6LWWFg
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-tr: XebcZQ_LRnK_nbRtQlv-9A
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-yahoo-aura-en-US: fdZ324DPSYu7DEWBZ-DOJA
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-yahoo-en-US: BCHFqFnvSTeLSfXh_B4Wvg
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-yandex-en-US: X8TarqWiTyyBDkkYNC9MJA
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-yandex-tr: VrSJuuI6SEGC0SOMxSE4uQ
+ release-partner-repack-repackage-signing-win32-nightly-mailru-mailru-ru: JvWkXHVPQs-Izj13Q5ufVQ
+ release-partner-repack-repackage-signing-win32-nightly-mailru-okru-az: e7DdmJXnR2KCbozx0q9nbQ
+ release-partner-repack-repackage-signing-win32-nightly-mailru-okru-en-US: BHYhl5fyTTWcLkXYon2YTg
+ release-partner-repack-repackage-signing-win32-nightly-mailru-okru-hy-AM: GKQ8SSSBStih06jHScTFCw
+ release-partner-repack-repackage-signing-win32-nightly-mailru-okru-kk: eXFvdjF_QJOTjcNzsxnAdQ
+ release-partner-repack-repackage-signing-win32-nightly-mailru-okru-ro: RRA95yQ4TxCFlYgdSDnRaw
+ release-partner-repack-repackage-signing-win32-nightly-mailru-okru-ru: Kh7WqcGITKy-kv63xjaAuQ
+ release-partner-repack-repackage-signing-win32-nightly-mailru-okru-tr: LM-EeO6sTZ-Kh5w6rnnT6Q
+ release-partner-repack-repackage-signing-win32-nightly-mailru-okru-uk: PPjnfmQJRhG6jGf4mrnmHA
+ release-partner-repack-repackage-signing-win32-nightly-mailru-okru-uz: c5vNa7ggToO-UzA6jue5Bw
+ release-partner-repack-repackage-signing-win32-nightly-mozillaonline-baidu-zh-CN: EbLB_2nETUqzORb4aLc4Iw
+ release-partner-repack-repackage-signing-win32-nightly-mozillaonline-kingsoft-zh-CN: ffKAN9xEQjyjLyx-TT_pDQ
+ release-partner-repack-repackage-signing-win32-nightly-mozillaonline-mainWinFull-en-US: BqCX6u3RT9SvPhP9z-JQxA
+ release-partner-repack-repackage-signing-win32-nightly-mozillaonline-mainWinFull-zh-CN: U5JQWO-WTFuP_zBLNTCRHg
+ release-partner-repack-repackage-signing-win32-nightly-mozillaonline-mainWinStubFallback-zh-CN: F_4Hkcz5TFKrUevScjbCTQ
+ release-partner-repack-repackage-signing-win32-nightly-mozillaonline-others-zh-CN: UMtojzsPTaKx08wd-6AxHw
+ release-partner-repack-repackage-signing-win32-nightly-mozillaonline-qihoo-zh-CN: KhkTGOreTFCwruJ5z7QV8Q
+ release-partner-repack-repackage-signing-win32-nightly-mozillaonline-tencent-zh-CN: fjxCRlUZSTms_fMBfGiqkA
+ release-partner-repack-repackage-signing-win32-nightly-mozillaonline-xbsafe-zh-CN: Hhn1S8s9R6i2Eu_WhTH4GQ
+ release-partner-repack-repackage-signing-win32-nightly-mozillaonline-zol-zh-CN: TVnHn3lnQGGbZA8ORstgsQ
+ release-partner-repack-repackage-signing-win32-nightly-ntt-ntt-en-US: N4JjMUJdQfuq2_QtR0q18g
+ release-partner-repack-repackage-signing-win32-nightly-ntt-ntt-ja: br9DN3c_T8a1X_JOYcXOYg
+ release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-de: JCfIVyI0QE-fAC8uXakQzw
+ release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-en-GB: RbQXvSnpRnSpw-d7FH0SGA
+ release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-en-US: XpzUDzsyTJ2hRx-yj7d6oQ
+ release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-es-ES: BORMypT5QlWsXUGBsbqmWQ
+ release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-fr: NVv-XX5qSVaIYnzachQN-g
+ release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-it: LzaMjaCMRNGHQ6iX0K7F9w
+ release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-us-en-US: dSMluYdzTxuIYoug4bi6jg
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-ca: AC3vsFPvR5W55m5b6yW0gA
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-cy: VnvM9hQzSsmXX7-S6rrPzg
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-de: EG6_zJUwRpG6zkIV1v2w5w
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-en-GB: FhnPraiSThGrMeIFiIgr7Q
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-en-US: AeMrl5V6TZqIkpbTxSijKA
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-es-ES: IY46LYIrSI-zAOVkipZYtA
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-fr: I5FnPHt3Q6uCrpPEbY50Pw
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-gd: SyZhcQHdT-iZ0of8-fO52g
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-it: UBxmmePaR--nVVQf3QGQZg
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-ca: Eo8o7pJHT_CF6KB9cLH6GA
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-cy: OjarzXy8TTGHYwx0QhzSZA
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-de: RmRNBjy7S8qGHAEaqc-CNA
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-en-GB: Kh8ctqqkR2WW4Kz-uV9mjg
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-en-US: bWUiqnI8R7muQRzzNbiLgg
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-es-ES: e8LIpYeSSXSCspiT3BjpIg
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-fr: AIQzFwreTeCMtHthTj7zug
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-gd: Y8OhhGMHR0-s1m2p1GFaqg
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-it: XohcXEKAQLupCQHEZ3wdeQ
+ release-partner-repack-repackage-signing-win32-nightly-seznam-seznam-cs: fAHt_YErQRawNNXysCRsww
+ release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-de: d6GmxFx8QxeFH6Kof16cgQ
+ release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-en-US: af0q_B7ZRzic-yzgVimp0w
+ release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-es-ES: UUtD3SF4T7meZXIahxMILA
+ release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-fr: f3dKMJKLRiOg-hLL_K1zZg
+ release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-it: VfMTqhFhTrWR_QU6seIPcg
+ release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-pl: Y92ziwSYT5u3UawNFgf03w
+ release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-pt-BR: WttB_tvCR-eOvVRf_rcSDA
+ release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-ru: UajJBV8WTEadm0pAX5vPpQ
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem1-de: ZzSSAW-AS7KEs4TJlxq9QA
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem1-en-GB: G-hWsyREQFGO7_PwHAoN-w
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem1-en-US: Kg_HnFUCScugObqTno6HWQ
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem1-fr: L_4vXgFZRhSw3OdL-zcvFA
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem2-de: VIS8G5efQ6mjcA30F9YHVg
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem2-en-GB: SsiUenk9Td-RgWjCWRBwyw
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem2-en-US: P2C0VJiwQGCSiOdyRhDS6A
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem2-fr: HmJ6_4FYR4-eeECLf2xyXQ
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem3-de: OGjQziIBR5y7Ic-bGqm2ww
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem3-en-GB: IEhoxBKCRZWE6YsQiHSdJA
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem3-en-US: SYEdQaIXR-G-WXZtbix94g
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem3-fr: Io2uTgsTQl2HXoX5o8CpTA
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-de: CuNaDVcwTYe2m8GQ3IDOhQ
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-en-GB: O44cYTwLQv2UXlov7x7_Nw
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-en-US: TOU3T95CTmG5_zaxTlzyMg
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-fr: EWmViGMFRm-iGSQu4L46Eg
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-de: e3G02jM-QBqfkmsdEwx_pA
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-en-GB: GW6pbGuzRXWjUFni8QiFLw
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-en-US: ThzJuQ0GRzSkqVqXv3qk4g
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-fr: c-0CKZruTh6kvnNBHaYYQA
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-de: buJ3jok6SxmndRz6Su2FHQ
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-en-GB: dq1k3gGATWO-MVcXJSzU0w
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-en-US: AdQ8ZfB9SeqeFq5tA0HxDg
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-fr: QM6peJYjQgy46kwhTcd41A
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem1-de: JDzxQ0v2SuuJtNkjy7fmVA
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem1-en-GB: QU6wvL9cQ0ek5oEXps8UBg
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem1-en-US: W2LsVKQqQMu3DtT8F41__Q
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem1-fr: GdBuiki9R927dwfZTTxyRw
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem2-de: WlWy4fBtR5CuHIAU8ZPCow
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem2-en-GB: YxukSsRQTLC3OQS1GnHViQ
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem2-en-US: SWDWe0utTJWUYt3byEJd_Q
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem2-fr: LeXS9q05QZOD1zYQy-ZoXA
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem1-de: MXXbi2RJRG2phRSi676dnw
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem1-en-GB: Y6kctChLRIGXPPT_atSpmw
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem1-en-US: Eg6oHExGR-iTbvBYsmGX5A
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem1-fr: KoO7Owp5QEGefAYBi6UD4g
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem2-de: HVbHCKjURsSlPqWdc82JjA
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem2-en-GB: HpVsDhw5Ro6LKqOGWdF7fA
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem2-en-US: Hlb1KoJrR921WC4y2YweRA
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem2-fr: coY-_1kfTpC5h62XKVnrdw
+ release-partner-repack-repackage-signing-win32-nightly-toshiba-toshiba-001-MX-es-MX: X-f86mHVQkSNMVwWCqgzvw
+ release-partner-repack-repackage-signing-win32-nightly-toshiba-toshiba-001-US-en-US: ZbCETvnzSlClpRhWm3Ampg
+ release-partner-repack-repackage-signing-win32-nightly-toshiba-toshiba-b2b-JP-en-US: Y2SmjK1oTLGS-sJCjKPBsw
+ release-partner-repack-repackage-signing-win32-nightly-toshiba-toshiba-download-B-US-en-US: eWY6gA5JQOS9qZOktd3rCw
+ release-partner-repack-repackage-signing-win32-nightly-toshiba-toshiba-download-MX-es-MX: UEjyHjOgRXeQxtVaQlT3_g
+ release-partner-repack-repackage-signing-win32-nightly-toshiba-toshiba-download-US-en-US: cYFOHWVST66MMdeeSZrDwQ
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-1und1-de: fywqFS2mSVm0-6xwN_6M7Q
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-1und1-en-US: FA_me1f5STeT-3Drb0e5Kw
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-1und1_notb-de: OZxX9H65T5qTBQvGqiDpwg
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-1und1_notb-en-US: Yo5owbAzRKegLzKtx4nP-g
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-gmx-de: XeuAS2RFQi6vmtWIPjtIlA
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-gmx-en-US: PkEjXl13SYyJHuHq_a23vQ
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-gmx_notb-de: RACC8r_nTo6NWj_7OUwehQ
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-gmx_notb-en-US: UZ40Jyx2R_m5bdDMfcHPjg
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-mail.com-de: V4kFd5WHQ_ebN9zl9tN6ww
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-mail.com-en-US: bpy9eWfySwip7cM0-yENIg
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-mail.com_notb-de: bA642o1iR72QNLy7LF4GQQ
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-mail.com_notb-en-US: TDYfSw3FQJqAuWm0ZH2nmw
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-web.de-de: VAmlSof9QviWhF3diI0pzw
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-web.de-en-US: QWqAleDHTsGRQldxsTwZ0w
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-web.de_notb-de: aC5VJz9lR5-kKaXRZrzKkw
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-web.de_notb-en-US: TELGPOZDTwq_9hcJcYT0pg
+ release-partner-repack-repackage-signing-win32-nightly-wildtangent-wildtangent-en-US: JdARg7Z2Qu28R0Do18nqdw
+ release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-drp-ru: TohaP2kuTdKv37MaumMXdw
+ release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-planB-ru: MaW0ixuWRq6pXwRXPvVbFw
+ release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-portals-ru: QG42WqWyS6CXB4Id0tcfmQ
+ release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-ru-mz-ru: f45L5q3qRTus0Ge1z-l19Q
+ release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-ru-ru: TScPunQWRZCAQxwPHQsyOw
+ release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-tr-gezginler-tr: e8mfxrVwTOKJStJTpJ2jBQ
+ release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-tr-tamindir-tr: DRgVRvvPS3CwYV8p4bdY2g
+ release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-tr-tr: bpmAxALgT4as1TS0XDUsSA
+ release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-ua-ru: MZypzfCaRZukX4o1Bh6fCA
+ release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-ua-uk: QceLdF4iQPOjPleQAhzAKg
+ release-partner-repack-repackage-signing-win64-nightly-acer-acer-002-en-US: XiLkJwbOTTKH3_f-ra8liw
+ release-partner-repack-repackage-signing-win64-nightly-aol-aol-en-US: C1ENWN2_S0au0cNxXZ83Xw
+ release-partner-repack-repackage-signing-win64-nightly-aol-aol_de-de: PB0GN8cSSc-fsDDS8sGe2A
+ release-partner-repack-repackage-signing-win64-nightly-aol-aol_desktop-en-US: fOft-HAPRMq8F6-J5JOxbA
+ release-partner-repack-repackage-signing-win64-nightly-aol-aol_huffington-en-US: OGMe2wjpTUKdRgMt4_fM-g
+ release-partner-repack-repackage-signing-win64-nightly-aol-aol_uk-en-GB: XJHzkW69Rwq7zOl7jEFMSA
+ release-partner-repack-repackage-signing-win64-nightly-chipde-chipde-de: eGKCEA5_ShajCGqEVfMMjw
+ release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-003-de: WhGOAbPLSLCDpIBTtRs4Lg
+ release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-004-de: DJCj_Mw6RMiv0khQVYfnEA
+ release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-005-de: CJSTRMUeQkC_8Z_TOVj3Gg
+ release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-006-de: D6LpUw0tT7yGRwA9VCkubg
+ release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-007-de: XMBmRudHS1iMfxEIGQ-iFA
+ release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-008-de: PoCX_UJMQTy24IawcCtGjA
+ release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-control-de: HjcEdL0rStaFiN2jM_I8UA
+ release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-de: Z3VYxzJPQ1Kpx_RBOFt-9A
+ release-partner-repack-repackage-signing-win64-nightly-firefox-firefox-election-edition-en-US: cPIloCcPQl6aQvmoowbNug
+ release-partner-repack-repackage-signing-win64-nightly-funnelcake-funnelcake134-en-US: OZUBAd8RRUyEOcqoTQhPkw
+ release-partner-repack-repackage-signing-win64-nightly-funnelcake-funnelcake137-en-US: O9QQXuWbRBKWP2U9kNTbRw
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-de: EEXiCsXlRYug_UO0nxSWGQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-en-GB: ZnlgFqRmS6mfeeXj0gcriw
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-en-US: Ot-fuyKORXap8gwQiV7qrg
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-es-ES: SkOB5nUqQoGhIay15uOQlQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-fr: YGeDb7hxQAqR7QS4rvqkSQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-id: RgEhe6grSICa9uBBu-YJpQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-it: Cd4SxTbrSvKuZVOR3MGmfQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-ja: MCuxkPiiQZC84oAb803TVg
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-ko: bAhWTNW7R9udr9HgjR3KEQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-pa-IN: Az4kFYdmQYq0nB3MSdWHNw
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-pl: Hha2rbr5Rl61lrJa2MZYlQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-pt-BR: fnVnEbJ8RQq3jp9nEDEcDA
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-ru: HvPnYmEWRtCdKascj10oDg
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-tr: V4uvI1zwRTSY6x1RW10P7g
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-de: ZtcRAOqhRBOHTyarS0Z03w
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-en-GB: Y2pNVU-HR4y8cHuc5CsgzA
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-en-US: HKL7Ou8RR-awKSTdbuF5WQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-es-ES: F8LXzH12T4G9zDztVvAA0A
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-fr: bWbIs-NnRhm_gMZXPHWBkQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-id: Xf_0hh6UTRe7oEUZO1jDxQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-it: Zm3GBGS5Qm6IB-0xxPEIcA
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-ja: UE4DjdvlQPWOLO_DlPDWrg
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-ko: FdPj2LScSo2NGMAZMd2QTA
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-pa-IN: EB0Me2iOTWC3EUCfQOeGtQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-pl: UJXkkqHtSoiG1TsA41AVmQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-pt-BR: f_j54yxhSY-HqtgxA-fvgQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-ru: BrWe7wV3TrG1MJIyfCyFXA
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-tr: CpdhBsMjQf-0c9GtSYHUcg
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-yahoo-aura-en-US: ScrgZFziRD-V_NfQLqoF9g
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-yahoo-en-US: DjIkj112SQ2Mxlm-SSxBoA
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-yandex-en-US: NC8fwT0NR72-Q5oXAJT9dQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-yandex-tr: eeWcNduZSOWczw4HOIFM5g
+ release-partner-repack-repackage-signing-win64-nightly-mailru-mailru-ru: CPOZPomKQtKOW4jcjxS0SA
+ release-partner-repack-repackage-signing-win64-nightly-mailru-okru-az: WTMNaEv1TJKBKWE6JbjX5w
+ release-partner-repack-repackage-signing-win64-nightly-mailru-okru-en-US: AELUVC2uQeKSYrLMYxAzkA
+ release-partner-repack-repackage-signing-win64-nightly-mailru-okru-hy-AM: fjTtAoK8S-62VurIiP2F1w
+ release-partner-repack-repackage-signing-win64-nightly-mailru-okru-kk: ecEJOo0zSqWQEqHUmlQZIg
+ release-partner-repack-repackage-signing-win64-nightly-mailru-okru-ro: GaGrD0SkQE6i9nR6fq60_A
+ release-partner-repack-repackage-signing-win64-nightly-mailru-okru-ru: asIjnZ1iQTKalpGPyAXs1g
+ release-partner-repack-repackage-signing-win64-nightly-mailru-okru-tr: YuK8JM1VQaWoBXu7tc4lyg
+ release-partner-repack-repackage-signing-win64-nightly-mailru-okru-uk: BDFdvSynQ-qU7Zf7km4U-g
+ release-partner-repack-repackage-signing-win64-nightly-mailru-okru-uz: TKY6UahiQ2uCZh2N4u26Tw
+ release-partner-repack-repackage-signing-win64-nightly-mozillaonline-mainWinFull-en-US: T-BriiiASJ6BrI3xx1hRMA
+ release-partner-repack-repackage-signing-win64-nightly-mozillaonline-mainWinFull-zh-CN: Zlz2kqGqTBOdL2gZuCxQSA
+ release-partner-repack-repackage-signing-win64-nightly-mozillaonline-mainWinStubFallback-zh-CN: ElmjXAkbRUu0jG4wahBY3w
+ release-partner-repack-repackage-signing-win64-nightly-mozillaonline-others-zh-CN: DfGtPDmYTFCg41Icb-WBvQ
+ release-partner-repack-repackage-signing-win64-nightly-mozillaonline-qihoo-zh-CN: Bp1rATS-RDmRfiOB3sbUSw
+ release-partner-repack-repackage-signing-win64-nightly-mozillaonline-tencent-zh-CN: BUv-O0euQ_qJibj5VEs5aw
+ release-partner-repack-repackage-signing-win64-nightly-mozillaonline-xbsafe-zh-CN: OGCEeOcYRRW5b1RSAlCU0A
+ release-partner-repack-repackage-signing-win64-nightly-ntt-ntt-en-US: TPmGx8pDTyqG_QNYMA4Q7Q
+ release-partner-repack-repackage-signing-win64-nightly-ntt-ntt-ja: cU3WOS5ZR2yDzrxWEAs8wg
+ release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-de: Sf_OyaHTSlCieWVMh6BENQ
+ release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-en-GB: AA6S25k3RK2wBlWSimWzXQ
+ release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-en-US: QRA2Nq1RTPK0ewEAhBfNHw
+ release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-es-ES: GwQ1y8maTDOKLvv7E6-uTQ
+ release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-fr: Atjbqm-_S1iPBrC5JOkY9g
+ release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-it: ZxScpMhrS7WoSeMKV7U1SA
+ release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-us-en-US: IqgYuAK3QwaVJnCEyFb2_w
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-ca: WIFDnrI4TjaVsDiZ99eGxg
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-cy: XutCmPYMROyICbRO1k9wuw
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-de: POT5qBnVQUumpTbbuNLDkQ
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-en-GB: bv7RZWfbRa-sxTi0WPbLRQ
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-en-US: NLgxCzDzQjK4Xoeu8ufj1A
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-es-ES: UYAis7cpQbG7KIN-y2tIUQ
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-fr: OcBODF-rTO62HX8LSh42qA
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-gd: TMEsuX_ITfGy08FuQeBc4w
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-it: FK7omnQRSu6lfNAGQTO52w
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-ca: BJTfRkOBQp6jbcmRQ36Pbw
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-cy: MpKfO80VQnyDVNp1925K7A
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-de: A9dkhnF4R3Gu4ZRDGIQONg
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-en-GB: L1u6lza7RgaqxXR7QJF_Dw
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-en-US: NU73fJewTSq1RC4wBLaF5g
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-es-ES: AmczSEKXQ6SXI6Os9m17Eg
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-fr: AwPb-sfiS2WqukuSsK4oWw
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-gd: Gb4puHwvTRC2X8qip7hZ2A
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-it: Zcqg_F8MTHmfxYmR-IuO3w
+ release-partner-repack-repackage-signing-win64-nightly-seznam-seznam-cs: cvunSOESTI2-E5xCvHULug
+ release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-de: d5eswKoVSlyOPL-5kcOjkA
+ release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-en-US: bON5seb1QoqcMpahjlvgrQ
+ release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-es-ES: V4td-KcUTRGaXC8rCptrXw
+ release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-fr: VGw88G-tSmuloZ15v0qJQA
+ release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-it: UgcMTyIXQai50_gg_5JZtg
+ release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-pl: YfIbJC0tSIK7PANsxnowwQ
+ release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-pt-BR: EssGNIg0R9OZHsv_6KY-KQ
+ release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-ru: ANVajloGSgaNwnGetj_XWQ
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem1-de: AzIWuS3eTFu-SuFmjjpIGQ
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem1-en-GB: Ei5QVo_5Rwait1zbI2U2Aw
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem1-en-US: EqWayKh-TUiTa755QBtdNg
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem1-fr: GcCuGpf5RBKpCMWebENQ4A
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem2-de: I5Sk9dhkT2msmzPPR-IBrw
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem2-en-GB: V8Um8YVXQOGb5YbPU89q0Q
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem2-en-US: OipQL8PzQrmQUCHuq25b2A
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem2-fr: DescTqhjQoKAinuhQwC9pA
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem3-de: fsVg3eL0Ro-3duXk33EwCg
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem3-en-GB: eLTcE1WORBCyyOWxA3cebg
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem3-en-US: JCbOfq4MRLigF_ACninNGg
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem3-fr: dez2wjmRSJaefABIlFfcHw
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-de: XPyLptUvSk2OXIPjGWHVGA
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-en-GB: fia_iid4THGA3_OhQ1zSQg
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-en-US: eP-HIq7oTOSZHCDfWXSU9Q
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-fr: I2EbbOKuQ1S-ZzTISjqBMA
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-de: NaTz_8n6TFeFU5pFnovIhg
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-en-GB: YxcAjl0YRQ6EjF7Vx3fFDg
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-en-US: BYNf-L9JQIy35KRoTMy1UQ
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-fr: H-dAtdHIS1OTe8K0dqQPuw
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-de: PtQjUY9oSruhuIGzfwnd-A
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-en-GB: T2drYtdCTfOqmDmFcM7Csw
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-en-US: TqboOf8NRlaCiYs2MJfPjQ
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-fr: Bvt1zxneTga3bfoQytEoRA
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem1-de: TcJCsRupTQSXUfA3FfVBEw
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem1-en-GB: HLzAn_lQTOmUg0tDfAw5hw
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem1-en-US: BvAIuEpgSH-l-X7CYcQn2g
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem1-fr: HFCChlNgTiaTHv2ude_JQw
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem2-de: ZvZBXmehSTmX6m9ycuIfHg
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem2-en-GB: IDZNHNm9TZmYutFJG4r5fw
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem2-en-US: U589qFzST1G10r6Vd5q9Ag
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem2-fr: LYczc13FSuiCE9q6VCpL5g
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem1-de: Cb9BMMDMTdqU2FnXZ2yYsg
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem1-en-GB: fVP76dbdQ72gHotKQoAGiw
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem1-en-US: Tp9kItHlR2m0B4Y4My4cuA
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem1-fr: NgpflU6FRcOGAx8GY1AFhQ
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem2-de: BdhQmUpdRT6-ngpuLqwxDg
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem2-en-GB: PsvOEBXLRnKwmJdM5HQX1w
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem2-en-US: QytfsfVMRJq9-Ejqydp4JQ
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem2-fr: FUznCc-eTaqxLaJp0dKd1g
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-1und1-de: NdMPVp5nS6eb31T9cgNo4Q
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-1und1-en-US: RAbvalRiTTG1qBxfwaUnxA
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-1und1_notb-de: YE-Vh1YBRLa7olZGMWCfMw
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-1und1_notb-en-US: ItZwssg6RIukum_Ckm6aHg
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-gmx-de: PwDhHH_fSbmzt-Xv8nQr9w
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-gmx-en-US: BdiRIZSjSIK3wARQWpbFyw
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-gmx_notb-de: ZtSd8DnDQLaP3ZBqBVuBQg
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-gmx_notb-en-US: FW06s7oTTweKwn6yb0KtBA
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-mail.com-de: EVNEV7irTPOyl7KG3WPNJw
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-mail.com-en-US: YaNF-QZQQRKvuP6q6L7tbQ
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-mail.com_notb-de: IT0_W8-2SFahpz8rJw6yKg
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-mail.com_notb-en-US: Vfe3mEK6RvurBIV6MaKjhQ
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-web.de-de: S_RuUl7MSfCDx_Rv24wpFg
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-web.de-en-US: Joqwzyh2RxaPP0sxNJSlpA
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-web.de_notb-de: aAPZ2TowRdida11DeJiF5w
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-web.de_notb-en-US: Qoa3634oSJ6uP5BdboIT-Q
+ release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-drp-ru: AQUBCSt7Q9C0rHzb0zcuyA
+ release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-planB-ru: H8EuYAsMR_m5_OajAY_SiA
+ release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-portals-ru: OxgKd2J9QVqO9kWQE5gmnA
+ release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-ru-mz-ru: URa7OQLHSO2JGfREIvuOMA
+ release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-ru-ru: SnnSMoRcRMCiZk6pgwjYlQ
+ release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-tr-gezginler-tr: OrYjkkShTt2cgA2fq2qq9A
+ release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-tr-tamindir-tr: CbTcFG8lRK-qBmpT-xrvTw
+ release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-tr-tr: akJTQt4FRYiFR2Fs1leqMg
+ release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-ua-ru: P5r2WJeZTg2WD_EE3vbgDg
+ release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-ua-uk: DDuV6nmmTi2ITKU_nVZUDQ
+ release-partner-repack-repackage-win32-nightly-acer-acer-002-en-US: N0GVZTR6TY2sl9kudwl9sA
+ release-partner-repack-repackage-win32-nightly-aol-aol-en-US: LHIBrCs1RZaejPhf4pWVsQ
+ release-partner-repack-repackage-win32-nightly-aol-aol_de-de: W_09Pw_zSX6At5kbbR2cxw
+ release-partner-repack-repackage-win32-nightly-aol-aol_desktop-en-US: aEo3QqPcT7uRKDaoQGoG1w
+ release-partner-repack-repackage-win32-nightly-aol-aol_huffington-en-US: af8P-z0pRPeH2TWEpufubQ
+ release-partner-repack-repackage-win32-nightly-aol-aol_uk-en-GB: elwztSZQTa2uLLV_X5sWHw
+ release-partner-repack-repackage-win32-nightly-chipde-chipde-de: bagR4ORJQbOkJhad6G0qHA
+ release-partner-repack-repackage-win32-nightly-chipde-cliqz-003-de: HcyN27CTS6-301q938u9hg
+ release-partner-repack-repackage-win32-nightly-chipde-cliqz-004-de: e1zObD83RgWUw2Yh9WoOwg
+ release-partner-repack-repackage-win32-nightly-chipde-cliqz-005-de: YrvEZABvQCSIFCNFgwe7vQ
+ release-partner-repack-repackage-win32-nightly-chipde-cliqz-006-de: Pz-EsbFCSEKHF3NDF4hTHA
+ release-partner-repack-repackage-win32-nightly-chipde-cliqz-007-de: HWIid5X1QTqJpQ2E0HyQ-w
+ release-partner-repack-repackage-win32-nightly-chipde-cliqz-008-de: FDtNvgvPTUaQXrD487c__Q
+ release-partner-repack-repackage-win32-nightly-chipde-cliqz-control-de: M1aTr9RbQpeaGvDkDPmzGQ
+ release-partner-repack-repackage-win32-nightly-chipde-cliqz-de: L93MikcASniVKMDZqMos_g
+ release-partner-repack-repackage-win32-nightly-firefox-firefox-election-edition-en-US: Htoj2MtRS8ekABG1AZKlJw
+ release-partner-repack-repackage-win32-nightly-funnelcake-funnelcake134-en-US: b5l2KsPxQIeH12BbuAaQBw
+ release-partner-repack-repackage-win32-nightly-funnelcake-funnelcake137-en-US: WxZP_5diRQ6D_Ot26h0cAg
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-de: PO9iM_-XS06M6tVpJdICeg
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-en-GB: W1Sr_dU4QGOyK6cJ_--JNA
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-en-US: ElB-i78TSuWJOdngaHaVNw
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-es-ES: cXEe9quWQXux4wLX8AmVuQ
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-fr: DO5A7FBtQSeDruznxbTNXA
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-id: c3y8MIi-Q5eICY-x5b6fug
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-it: N5EMzG5eSF6Rbm1UXoz82A
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-ja: bkG_Vta-QpSuYFoTkSHxxA
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-ko: R9GsRHRMSg2whmrPaXJHlA
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-pa-IN: VMFJKplFT9eLK0YDgNXLxQ
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-pl: C3eaVmhJQfK4m3zqWqGKqg
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-pt-BR: VMzz4cBKSHCF9XbVV6hTUw
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-ru: csnxPNa3Qju-xj-n_T8qig
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-tr: H3lGoG24T1W6DKdK2lbjBg
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-de: LCEEaisGR5qM-tMTfm1g1w
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-en-GB: dzrFgUe6Ssmt5yOrvpQkcA
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-en-US: MR-6oeS6Sjq8n9Nxwi1SZA
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-es-ES: HkUp_-I_Tb-oNUf5xtGDlw
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-fr: C9wfwd99QnaSlgvKeW5qgw
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-id: EGIS-lyySkqPrnzxIfVYvQ
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-it: DYnNIKkNTIqqUPqGAnfojw
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-ja: DHz_Z7YAQsSpuIRmFQLjEA
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-ko: BUpQuthfQxuX6ZYEwG66-Q
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-pa-IN: a6Df7ylcRAyEVTbOX_d2qw
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-pl: ed_M7HPlQBqHktyVBFEuPA
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-pt-BR: aGS6E7JlQwmsvZvUJWLnlg
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-ru: SW1jZHeVRO6q03Zrj82SHQ
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-tr: dLJ1_EuaRQmOH5ub7cpNVA
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-yahoo-aura-en-US: cMHvYCIKSu6j1TQKNTSCZg
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-yahoo-en-US: FhvKIFoaRqunAwSSvJQTww
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-yandex-en-US: EE_iFeWgRdCplLFOMptAzQ
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-yandex-tr: blbOdFB5SC6OTkDG0G_F9Q
+ release-partner-repack-repackage-win32-nightly-mailru-mailru-ru: ek036v_QS8i15JL27MWihQ
+ release-partner-repack-repackage-win32-nightly-mailru-okru-az: QV24DA1bQ3KP60kT9FKzVA
+ release-partner-repack-repackage-win32-nightly-mailru-okru-en-US: PV0wphO-QsmESNOu0DgJDA
+ release-partner-repack-repackage-win32-nightly-mailru-okru-hy-AM: ZXSkk351S2ORh5TbzSRsbQ
+ release-partner-repack-repackage-win32-nightly-mailru-okru-kk: Ff32yh7LT4ywS2pu9enEpw
+ release-partner-repack-repackage-win32-nightly-mailru-okru-ro: W_ODP11pSxi9Lt7Zgy4_XQ
+ release-partner-repack-repackage-win32-nightly-mailru-okru-ru: RZmCQbHaRcaZbq34DgKYnw
+ release-partner-repack-repackage-win32-nightly-mailru-okru-tr: W6oTNZb-Q1al33UurO-GtQ
+ release-partner-repack-repackage-win32-nightly-mailru-okru-uk: IbVzJ-pcQUiK3zmwd-DCUA
+ release-partner-repack-repackage-win32-nightly-mailru-okru-uz: Zo1PMxVVT5a5D6fQZLpN7Q
+ release-partner-repack-repackage-win32-nightly-mozillaonline-baidu-zh-CN: HMRdur5vRpCGrljNMTMBzw
+ release-partner-repack-repackage-win32-nightly-mozillaonline-kingsoft-zh-CN: Vtf_vmu3QNCQBisD42UgvA
+ release-partner-repack-repackage-win32-nightly-mozillaonline-mainWinFull-en-US: bqRRvSylRyC5oaN6PcqrEQ
+ release-partner-repack-repackage-win32-nightly-mozillaonline-mainWinFull-zh-CN: f6YwTiCDT3un2GZFGtdO1Q
+ release-partner-repack-repackage-win32-nightly-mozillaonline-mainWinStubFallback-zh-CN: ffdlLBKWSaeEqz8LIh6ZkA
+ release-partner-repack-repackage-win32-nightly-mozillaonline-others-zh-CN: WhBv6u0_SmeZMwQ7QiHAbw
+ release-partner-repack-repackage-win32-nightly-mozillaonline-qihoo-zh-CN: fEf4PQ67Taud6NbZ3KPwIg
+ release-partner-repack-repackage-win32-nightly-mozillaonline-tencent-zh-CN: KAf_sFMdT0iZ1J67sAxs0g
+ release-partner-repack-repackage-win32-nightly-mozillaonline-xbsafe-zh-CN: VdUdqrcxQpGVk4Jb-vCCsA
+ release-partner-repack-repackage-win32-nightly-mozillaonline-zol-zh-CN: Nm0NmFBRR9erCRHorejJlw
+ release-partner-repack-repackage-win32-nightly-ntt-ntt-en-US: NXnLnupoRe2XSBhaZsfRrA
+ release-partner-repack-repackage-win32-nightly-ntt-ntt-ja: EkgYDDVtR3exZGsOve4NRA
+ release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-de: W51uRvqsQd6YGYhxbaXRdw
+ release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-en-GB: GjVz3nMMTlWf9F4cEdoavA
+ release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-en-US: Dve-tjtpTA2782j71qRewg
+ release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-es-ES: FqDw0hTSRJSNWedVoIPICw
+ release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-fr: VXOOm6ieSeu4f6bTlzdAow
+ release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-it: cJeROY_ATny4a52MKyNl2A
+ release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-us-en-US: VlUa4hoIRHWFrhM0ZpYULA
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-001-ca: N1x7XFhWT0yweJ627c5xSA
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-001-cy: fz3KQOY_TEO_VKBx4rabiQ
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-001-de: YiWrxFuKR1OyrvKC9rcNEg
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-001-en-GB: Hzly1TAZS4qoe1RhomMSRA
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-001-en-US: IA1xk1SNSwiKum2tQSib2A
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-001-es-ES: eNQ2DeizRPOcpAMuEXYzuQ
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-001-fr: P144Ez8JTXGqEPgeVBIvnQ
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-001-gd: CGDo-f4FTriA8vYTTblgJA
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-001-it: S1CTzv8bS-OEbTM41ZQNTw
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-002-ca: N9TLDVeuROmXNSlfbpLjtQ
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-002-cy: cqB_oVSfR6a6XZa-hP5vjA
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-002-de: YQtC0BxqSi28XJBsys8pDw
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-002-en-GB: cr0Z7P5gS4KsQj_YfbZjkQ
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-002-en-US: ckjpM0pJS-e314EyR6xFxw
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-002-es-ES: VQvEJ7K-QDGf_Jd9hPus5A
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-002-fr: fT0EZyjgSICV2EO8ocAw1w
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-002-gd: SICVC4-zS9uKk-tOPbRyIA
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-002-it: ZRZgxxNwShm2vLjRKcSFSw
+ release-partner-repack-repackage-win32-nightly-seznam-seznam-cs: FHmui_2QRryLvwwjv8qzSw
+ release-partner-repack-repackage-win32-nightly-softonic-softonic-de: SFTRhyhaTBimqk9BMcsA_g
+ release-partner-repack-repackage-win32-nightly-softonic-softonic-en-US: X8VrHZiQTgyW-C_z20uaXw
+ release-partner-repack-repackage-win32-nightly-softonic-softonic-es-ES: evILFpXASROi2D9uBItLig
+ release-partner-repack-repackage-win32-nightly-softonic-softonic-fr: X5EWtR9HQv65EZbMV9_1JQ
+ release-partner-repack-repackage-win32-nightly-softonic-softonic-it: cb24zrugSvGAHmNcc6wUQw
+ release-partner-repack-repackage-win32-nightly-softonic-softonic-pl: FCdlryzFQWq5bGV08_9tGQ
+ release-partner-repack-repackage-win32-nightly-softonic-softonic-pt-BR: AdTGlirBQFmc2gNiHTYIpg
+ release-partner-repack-repackage-win32-nightly-softonic-softonic-ru: IuuQv-yURfecijOPRtGyVg
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem1-de: RVP3ldcTQRGjGm7KEmpukw
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem1-en-GB: AQ-AtChBSymQn_z9qzMxlA
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem1-en-US: LnIRwibkR0yaVdyXamB0mA
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem1-fr: C9F5ek9uQFWQxxIhxlq7Gw
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem2-de: ekO5I9v9SseQqN5yB835kQ
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem2-en-GB: FvVPwTdpRIiZuPfFtDjB4g
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem2-en-US: eIfnQ1cUSeG1DXZUukDIug
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem2-fr: MG1uXoxaTkm2NjItt63Eyg
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem3-de: MdVJ0TetRqOYhNrCVykktA
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem3-en-GB: boKl2qf8SqShQQivsjhExg
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem3-en-US: Jg65r60AQOOVc70MvlmISQ
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem3-fr: V-R0681nQeKwbmlhgioNeA
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-de: dlM-XSgYTO27Xs8rVkc2sQ
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-en-GB: SmMP5ZSXRLqjro1h19xzYw
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-en-US: fXBjKt4xR-273oduIjInZA
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-fr: BstZlJRCSaiBwGe-tzpkmw
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-de: JxXT6G1xRr254_yTp3cXHw
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-en-GB: bDcM4YpPSoyjDJcgrC-9qA
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-en-US: Tv2OE5d1RQKsh68JjsMgRg
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-fr: EjRC3_obT9yk1_J2BYkHLQ
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-de: KH5GPV0nRUuhoeIU-9h-QA
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-en-GB: XkwOpKMVQWS8BEe080YBxQ
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-en-US: Ov2pGHUlQha2qPtPgA6Uiw
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-fr: Cy72BXzqRIeRQQOboJ5JbQ
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem1-de: SNxobrgxSLWjkfxUzqq16A
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem1-en-GB: eHP0wj1YTfyHxi9EHA0-qQ
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem1-en-US: RADlGUuvQiu5RdGNJ1hmnA
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem1-fr: XPTDsHThRzWfqTiTUcGTpw
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem2-de: QW6D9x77R46xw6BmOt_q3Q
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem2-en-GB: d9VmmRj5Qmeq0pWtrcK7Qg
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem2-en-US: KanT4EmiSxWt_PXFFnHhug
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem2-fr: XKwNtpJQTNi3WY0_mgbgYA
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem1-de: RIq99qhyR1OUr6oedsNyzw
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem1-en-GB: exqP39TUSySyY6XlXQFI3Q
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem1-en-US: ZCKJGDBWQGO6V1ewQWLdzA
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem1-fr: YGBI6vQtScqKDxAGnQzZaw
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem2-de: Iwj7DUd2SLeObijED9Kalg
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem2-en-GB: VCI4RWCoQIOXGLdkgbPFBA
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem2-en-US: B1BIBSxcRp2JwrWwKF6oXg
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem2-fr: Y0lf2aFjQHWzbfqYxt-3tg
+ release-partner-repack-repackage-win32-nightly-toshiba-toshiba-001-MX-es-MX: BbKSHTrNR9a-i_xefcb90w
+ release-partner-repack-repackage-win32-nightly-toshiba-toshiba-001-US-en-US: Rjoz5KpSTeCvSKmjKLM8fg
+ release-partner-repack-repackage-win32-nightly-toshiba-toshiba-b2b-JP-en-US: E9Do2gUZQuq1hppHQc_KtQ
+ release-partner-repack-repackage-win32-nightly-toshiba-toshiba-download-B-US-en-US: A65WJPa-Qs6P1s36Z2Qhtw
+ release-partner-repack-repackage-win32-nightly-toshiba-toshiba-download-MX-es-MX: HHOddPojRyGtgqoQzx8p1A
+ release-partner-repack-repackage-win32-nightly-toshiba-toshiba-download-US-en-US: LJd2kFtaRey2tQtKsCb-5g
+ release-partner-repack-repackage-win32-nightly-unitedinternet-1und1-de: Mye60mWJT36h-kN7mePI0w
+ release-partner-repack-repackage-win32-nightly-unitedinternet-1und1-en-US: Atew1fCCSX2Ze4-VFoqjFw
+ release-partner-repack-repackage-win32-nightly-unitedinternet-1und1_notb-de: Du6Qsp04Tgi4XHJ2-V8A6Q
+ release-partner-repack-repackage-win32-nightly-unitedinternet-1und1_notb-en-US: TRluSh6JRxGd0bba0QALig
+ release-partner-repack-repackage-win32-nightly-unitedinternet-gmx-de: PpHKU2GrQ0ORrYEO4Tx3Sw
+ release-partner-repack-repackage-win32-nightly-unitedinternet-gmx-en-US: G2hdpH2FTlu691NgDOIWSg
+ release-partner-repack-repackage-win32-nightly-unitedinternet-gmx_notb-de: Ov2G662SRUW2bLYWrdKdow
+ release-partner-repack-repackage-win32-nightly-unitedinternet-gmx_notb-en-US: WZcUWdH1SRGV5-5WllU-nw
+ release-partner-repack-repackage-win32-nightly-unitedinternet-mail.com-de: PKQK0Qp3RoWi_kfXsJ7MjQ
+ release-partner-repack-repackage-win32-nightly-unitedinternet-mail.com-en-US: D39amj5YSbepD2Mef-HQSg
+ release-partner-repack-repackage-win32-nightly-unitedinternet-mail.com_notb-de: VHDevsOySP6OyVY4o0pvvg
+ release-partner-repack-repackage-win32-nightly-unitedinternet-mail.com_notb-en-US: S1nhtn1tSVOWz0KDQPckmg
+ release-partner-repack-repackage-win32-nightly-unitedinternet-web.de-de: Q0-q5B7RRRKcv5mPk4YSTQ
+ release-partner-repack-repackage-win32-nightly-unitedinternet-web.de-en-US: LY6UX4uhQvm2GG13sIYL_A
+ release-partner-repack-repackage-win32-nightly-unitedinternet-web.de_notb-de: baGi8FY-RdKn-LMnwM5M-Q
+ release-partner-repack-repackage-win32-nightly-unitedinternet-web.de_notb-en-US: bA9hzUjuTSKI5rjB7I6J5w
+ release-partner-repack-repackage-win32-nightly-wildtangent-wildtangent-en-US: e5jXIU7USrq8FBhhaw6rXQ
+ release-partner-repack-repackage-win32-nightly-yandex-yandex-drp-ru: exfRz_NpT3mRbWAIbofKCQ
+ release-partner-repack-repackage-win32-nightly-yandex-yandex-planB-ru: LCMw7VijTW62FcvmkT_7QQ
+ release-partner-repack-repackage-win32-nightly-yandex-yandex-portals-ru: AmJVzwmmQS-kOH57cefg7w
+ release-partner-repack-repackage-win32-nightly-yandex-yandex-ru-mz-ru: MwgzxXNzQh-Hh6A3j5p7Tw
+ release-partner-repack-repackage-win32-nightly-yandex-yandex-ru-ru: Y3JA0lAVSDiY8V_PWSI2wg
+ release-partner-repack-repackage-win32-nightly-yandex-yandex-tr-gezginler-tr: SNCgVmDQR3G6vdVeTYmKuQ
+ release-partner-repack-repackage-win32-nightly-yandex-yandex-tr-tamindir-tr: G3mycDCQTUKzHJqqQHaZ7w
+ release-partner-repack-repackage-win32-nightly-yandex-yandex-tr-tr: TBhZKnmATcCvKoUb-sj6bQ
+ release-partner-repack-repackage-win32-nightly-yandex-yandex-ua-ru: U-qi811dSfGYxKrk3Ebvow
+ release-partner-repack-repackage-win32-nightly-yandex-yandex-ua-uk: Cfz2DZRRSUi-axyLqvEsRw
+ release-partner-repack-repackage-win64-nightly-acer-acer-002-en-US: YeSlBZB3SGmhkexMgHMPTQ
+ release-partner-repack-repackage-win64-nightly-aol-aol-en-US: IEuKI_OjT8GJoDuRfheE9Q
+ release-partner-repack-repackage-win64-nightly-aol-aol_de-de: ft9NUZ9tTHiAIW1S8t-RlA
+ release-partner-repack-repackage-win64-nightly-aol-aol_desktop-en-US: MeZvAhf2T9GRVeEuH3DyPQ
+ release-partner-repack-repackage-win64-nightly-aol-aol_huffington-en-US: Y8ZGBeugTdSCJujhFZPU0Q
+ release-partner-repack-repackage-win64-nightly-aol-aol_uk-en-GB: Nv_W78CGQnKah_8uY97_qw
+ release-partner-repack-repackage-win64-nightly-chipde-chipde-de: aOHqPG3YRZCtmyhPoPnAjQ
+ release-partner-repack-repackage-win64-nightly-chipde-cliqz-003-de: JsJzPtl6QRO8hap9Bnm0vQ
+ release-partner-repack-repackage-win64-nightly-chipde-cliqz-004-de: WylMm-GbRDKndFFC3qzvlg
+ release-partner-repack-repackage-win64-nightly-chipde-cliqz-005-de: Bgj-xcjDSYqLUT-ckRWwWg
+ release-partner-repack-repackage-win64-nightly-chipde-cliqz-006-de: P9m87OM-TJC-mPd03eGE6Q
+ release-partner-repack-repackage-win64-nightly-chipde-cliqz-007-de: JUANGkdzRLmXBrDo1k376Q
+ release-partner-repack-repackage-win64-nightly-chipde-cliqz-008-de: EpovcoD8QAWR4kp36zU5fA
+ release-partner-repack-repackage-win64-nightly-chipde-cliqz-control-de: M1dJljdOS5egZFBzDMEIEw
+ release-partner-repack-repackage-win64-nightly-chipde-cliqz-de: QQY1nBPYT9GuIaOVSwFj5w
+ release-partner-repack-repackage-win64-nightly-firefox-firefox-election-edition-en-US: EFW-a_eZTpi3CXvJ2QeMAQ
+ release-partner-repack-repackage-win64-nightly-funnelcake-funnelcake134-en-US: TDA-ohu_SdCwyYDcro7OyQ
+ release-partner-repack-repackage-win64-nightly-funnelcake-funnelcake137-en-US: XnuUiKAbR9qBISbdPgUUEA
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-de: QuOUcvv5QqKgQRw06NDJFg
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-en-GB: fTH5hDf2SGqcotWTp5tfbg
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-en-US: SmFZw7NvR122j02MBy--2A
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-es-ES: J4ugsatbQzeASM3fEXPbQA
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-fr: fEW_SnPVSPmXlPaKMG-b_g
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-id: DqaOEmYJQZyvPrPg36zTfQ
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-it: LqEixu4QR1W5RlbskO1BWA
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-ja: Xu6QlLbyTPuo0GMKerIfUg
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-ko: H8A0qzCjThCYC5FFVhtt1Q
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-pa-IN: Z_KAK0GGSfu_r-etz5Z9xg
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-pl: LuNmOwwSQIiSLBlEQeKtzQ
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-pt-BR: ALN_GTZ6T5iFkcq8mZJz5Q
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-ru: KPWqM5KfRvekOUQhiRyrTw
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-tr: UvGvdmSrTNWJpIqeAYlgIg
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-de: FprQNQXKRHGVRtZibMpkug
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-en-GB: cTNIcwgQSz6fCY1seslhUw
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-en-US: c5xqN2mWRjujUfQQFtl6FA
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-es-ES: Apj3zPtTRD6HRAy-NTF54g
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-fr: J4d14z3tSa2DRQUjqOqBMw
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-id: DcTfYMKyRGOiYpmSBVFFgA
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-it: DqkTId8VSmyOBtdS2-Hnlw
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-ja: BWIxO_MvRqulimYMFl87RQ
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-ko: F-s9DJQKSSWd-EckMoMNQQ
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-pa-IN: GAT5OnIGRkWMWNvpB7PsgA
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-pl: XRM14nw_S0OiKbNF12KNTw
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-pt-BR: WElGrtVHTVuAo3oOWLUD5A
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-ru: Y1l29LARSguqjrcyrfZ_Hw
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-tr: QqwTkQwkRkeZG3qQZXsy4A
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-yahoo-aura-en-US: e4lCFfFeTDe7osZWxJUErw
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-yahoo-en-US: erjqvW0KR6q6868D-akSaA
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-yandex-en-US: fsZ01vMlTRuPcovKGSG6Hw
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-yandex-tr: QCeMVexaSASfyHCzh_aTCA
+ release-partner-repack-repackage-win64-nightly-mailru-mailru-ru: MmcxWJP1QUWc_p9AQXqp5g
+ release-partner-repack-repackage-win64-nightly-mailru-okru-az: MYRCjHdHQVuo1CoSXvS6kA
+ release-partner-repack-repackage-win64-nightly-mailru-okru-en-US: GuZHICnORQKQAoXlYC1cuQ
+ release-partner-repack-repackage-win64-nightly-mailru-okru-hy-AM: FxJkCLhXQo6wYOqamVJdoA
+ release-partner-repack-repackage-win64-nightly-mailru-okru-kk: PpOcvRySRnqUXFQkRhVqPA
+ release-partner-repack-repackage-win64-nightly-mailru-okru-ro: Pg2mwD5CTxKSXV5BHJnFGg
+ release-partner-repack-repackage-win64-nightly-mailru-okru-ru: Q9Z-31u0S_i-VCKHd9U7Zw
+ release-partner-repack-repackage-win64-nightly-mailru-okru-tr: O6r3x0MYQ5ydkPBHW-uncw
+ release-partner-repack-repackage-win64-nightly-mailru-okru-uk: EYtppbXXRE2aJMoxDa5phg
+ release-partner-repack-repackage-win64-nightly-mailru-okru-uz: Fe5Z5g2cTBa__YEZlvkEKQ
+ release-partner-repack-repackage-win64-nightly-mozillaonline-mainWinFull-en-US: bVJI3h0QT8KNgHrLFoVJJQ
+ release-partner-repack-repackage-win64-nightly-mozillaonline-mainWinFull-zh-CN: bt_q-tkkQxusnHsV75ZWYA
+ release-partner-repack-repackage-win64-nightly-mozillaonline-mainWinStubFallback-zh-CN: Ugo6usVtSHKP4YIHOTYIpA
+ release-partner-repack-repackage-win64-nightly-mozillaonline-others-zh-CN: aRjZPvZpR1y9oC6jA04law
+ release-partner-repack-repackage-win64-nightly-mozillaonline-qihoo-zh-CN: NPRl45ohStW7Lm8oGcxDGQ
+ release-partner-repack-repackage-win64-nightly-mozillaonline-tencent-zh-CN: fE_-b4dRSVONMG9gLIl7AQ
+ release-partner-repack-repackage-win64-nightly-mozillaonline-xbsafe-zh-CN: J48UStasRLSXNrcJNMQrPA
+ release-partner-repack-repackage-win64-nightly-ntt-ntt-en-US: cO7csiSPSIqcTtt8Ioozlg
+ release-partner-repack-repackage-win64-nightly-ntt-ntt-ja: VkXiyXEXQoOtcw6MK8Ic7w
+ release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-de: ACNpEeYFQXyw34ued0WmUA
+ release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-en-GB: MPtUVZ-kRSmc2ViWnyRi0w
+ release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-en-US: Kh1n0YTqQ6m6s8-b36z7-Q
+ release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-es-ES: CzkvGintQ1uiknxc_kWCtQ
+ release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-fr: VLFknhL3Rc6mpPdSyxC_uQ
+ release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-it: NcqBtxSCQN6Yxy3IS1uOzw
+ release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-us-en-US: EY3IQucUSZqHuf0_K_gRbw
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-001-ca: XNHRVjyLR5itm1E8BmJkIA
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-001-cy: Z37kngz0RP2y5_i6s1a-rA
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-001-de: VEFQYZvNSu6f9004pjwwLQ
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-001-en-GB: DuB-14ebRGqMin3RNcVIXA
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-001-en-US: fHpc5fikQpGFP3b4AimdKQ
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-001-es-ES: E4YjKxSPR_--6zvSmO2ueA
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-001-fr: UgREzlOxQi2phtbUsJQBDg
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-001-gd: Oo0lnutyTvOLDW8xJK75vg
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-001-it: Cso66dw0QjupmkGtX4ZHTw
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-002-ca: BeaAQwPTStWHHdlczJ0roA
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-002-cy: ZQHceiD3R36cMhi9Hx7L7g
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-002-de: U0EfA2W_SfKbmSSjASJeWg
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-002-en-GB: D8Oe0KMYRoaxkgoqmJ2EFQ
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-002-en-US: ej5MlnWjSbS2NVkUi8Op_A
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-002-es-ES: e37uE19CQESgyPvXyifWWw
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-002-fr: RNoW9lGjTUKNDC8GWJnypQ
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-002-gd: YjTslyxTToWZc1xaIH0rKQ
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-002-it: XAMwgeJRRhGhhuEuGq6nmA
+ release-partner-repack-repackage-win64-nightly-seznam-seznam-cs: Qa2kHaR7S4OLOSdmxJxPSg
+ release-partner-repack-repackage-win64-nightly-softonic-softonic-de: T_gG-ufiRB-gmsJNLUcZwA
+ release-partner-repack-repackage-win64-nightly-softonic-softonic-en-US: O_DX6Y8RRbOiAgM6AfA5VQ
+ release-partner-repack-repackage-win64-nightly-softonic-softonic-es-ES: EuENXRUmR9CbFU-y7vcKFA
+ release-partner-repack-repackage-win64-nightly-softonic-softonic-fr: Iex0lQc_SJiWXPp__tt1Tw
+ release-partner-repack-repackage-win64-nightly-softonic-softonic-it: EUc-gZybRPGCDhmB2qAFzg
+ release-partner-repack-repackage-win64-nightly-softonic-softonic-pl: VZUVWOzPTjOuBFIoyWM_Lw
+ release-partner-repack-repackage-win64-nightly-softonic-softonic-pt-BR: S2lup30eRH6OqDrRk_iweg
+ release-partner-repack-repackage-win64-nightly-softonic-softonic-ru: b6zroKF2Rq6sM113Dd7_BQ
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem1-de: CdnzGiG6QhiQi7o0iVp-Hg
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem1-en-GB: J9SdKikYTr6-VoTnMLic_A
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem1-en-US: Es1hCiyNTvKTtixDJx48iw
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem1-fr: cJg9LR-RQZ-rm6278IgGhg
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem2-de: QLbykZ3NQu-hc4yxosxepA
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem2-en-GB: fOQ6Mdx3TeWzqLXXC1sicA
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem2-en-US: LdEkTGacRs2ZzO1Xez7xtg
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem2-fr: a0JTJaKWR1SYqJPkxulOUQ
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem3-de: JqMIDRWtSw-j7TvEV02a5g
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem3-en-GB: bUKWE87QTou7mec2ohn5EA
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem3-en-US: BvYadYwSSQOicAOOKfYsdA
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem3-fr: IbyZkig7QCKcDK85Sk4vfA
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-de: GTH8RvipRx6T_P5SIaC-7Q
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-en-GB: TzLC3c7qTwOKRR2Bv3yiCA
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-en-US: S-3TDDmqTNyrgJxmjQGqZg
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-fr: E-gK6QQxSY6bOb8fsrEy8Q
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-de: GCYpGh3_RsuDf3sm3cftkQ
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-en-GB: Frxf6zUlS5CN6AxHB1wT-g
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-en-US: brtMY60TQVW9Gm9BZ5zaVQ
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-fr: Fg_PB8BHRHuPUR3efdrBwA
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-de: e-MAIzFDQ9WeDxwYeuHH7Q
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-en-GB: CzFBWxoiQt67ne6l1DWT7w
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-en-US: deM7K7vMRiigx_yRIIqXiw
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-fr: X9IfgCo_RfWI1hGoDtVeFA
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem1-de: V2rYgfVFQAiOO5ZAcMSNjQ
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem1-en-GB: NZ44B18mRt2iLV8XJMXp6w
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem1-en-US: eIt1et-tQfC2XM0UUHpJ0A
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem1-fr: b7mujLDoRD-xbVvpoeyaKw
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem2-de: IbHOwRe3Tdmzt5xtLdqUgw
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem2-en-GB: EbX4WQHRTdWLigqlN5hhWw
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem2-en-US: GRuko-5OSm-zpEgzsIFDlg
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem2-fr: U9Jmus0tShWAXHPj6CJmLQ
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem1-de: dqN9lXS5SrSG-dfC4HpwtA
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem1-en-GB: aTwbVl-VS4mcJwBUmYSMWg
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem1-en-US: Njw6Pv_JRGKUV6jY7OJIdw
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem1-fr: fWVce1_8TFW-Qj41F4KzsA
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem2-de: V8WPCZGKQiqzuxXASaEORQ
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem2-en-GB: ewsuiRh9TOOlst0jZUQTsA
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem2-en-US: ec7BVNQhQOKe_VFpHbeT7w
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem2-fr: cqQJ4Bn6SiuNy0P7GcDvQg
+ release-partner-repack-repackage-win64-nightly-unitedinternet-1und1-de: Trb3Gl7JQWeS9nD4sWH7wg
+ release-partner-repack-repackage-win64-nightly-unitedinternet-1und1-en-US: S7A_nBH7QDmdwLN1yic0JA
+ release-partner-repack-repackage-win64-nightly-unitedinternet-1und1_notb-de: cB_7dRHpSdCutMk2Dao6Sw
+ release-partner-repack-repackage-win64-nightly-unitedinternet-1und1_notb-en-US: ZDFNUVqJSemGRV-GcPfl7A
+ release-partner-repack-repackage-win64-nightly-unitedinternet-gmx-de: ZfJKnmvlQVy3RhZNGaizQg
+ release-partner-repack-repackage-win64-nightly-unitedinternet-gmx-en-US: ENvE9b0bTmmpXZb3kXvK3A
+ release-partner-repack-repackage-win64-nightly-unitedinternet-gmx_notb-de: NFfPKFAmQo27c_97Wi0pbQ
+ release-partner-repack-repackage-win64-nightly-unitedinternet-gmx_notb-en-US: eCoOv5C1QAutxfD96KBd-g
+ release-partner-repack-repackage-win64-nightly-unitedinternet-mail.com-de: CHLSWVCZScSsz93Z_YEylg
+ release-partner-repack-repackage-win64-nightly-unitedinternet-mail.com-en-US: TR3jRWVQTeK1BVnIZ7sxcg
+ release-partner-repack-repackage-win64-nightly-unitedinternet-mail.com_notb-de: ExFGqNLcTs2fPlS-tfnLbA
+ release-partner-repack-repackage-win64-nightly-unitedinternet-mail.com_notb-en-US: Kxq5nF58QjWXP11TYzGtHQ
+ release-partner-repack-repackage-win64-nightly-unitedinternet-web.de-de: atKV-0H7TpyTxYlbjmyXPA
+ release-partner-repack-repackage-win64-nightly-unitedinternet-web.de-en-US: dX_6iMSWQlSaPTOuMHmqlg
+ release-partner-repack-repackage-win64-nightly-unitedinternet-web.de_notb-de: WslGWYz1ThqGPw_RzLMW-Q
+ release-partner-repack-repackage-win64-nightly-unitedinternet-web.de_notb-en-US: VwUogMdfSW-QdTufFIPEcw
+ release-partner-repack-repackage-win64-nightly-yandex-yandex-drp-ru: alpNVhKITcO_LUS1nF6ezA
+ release-partner-repack-repackage-win64-nightly-yandex-yandex-planB-ru: BL6PRm3JRTaGRwEhBF1MsQ
+ release-partner-repack-repackage-win64-nightly-yandex-yandex-portals-ru: XZJStNe7TV2bQiiFBgJ-4g
+ release-partner-repack-repackage-win64-nightly-yandex-yandex-ru-mz-ru: W0vqvjPJR0C-tHGQOH_fhg
+ release-partner-repack-repackage-win64-nightly-yandex-yandex-ru-ru: Fx26yAH0Q_a4oysqmGtSnw
+ release-partner-repack-repackage-win64-nightly-yandex-yandex-tr-gezginler-tr: fafg2Ah7TfCf4lRR3jNIcA
+ release-partner-repack-repackage-win64-nightly-yandex-yandex-tr-tamindir-tr: Ghjy1OcfSeKxqq1T46DPVQ
+ release-partner-repack-repackage-win64-nightly-yandex-yandex-tr-tr: LZ5ICIzWT0i43lzcAO3gkw
+ release-partner-repack-repackage-win64-nightly-yandex-yandex-ua-ru: VA3zk1qkQBGJ-SoVy_aNjg
+ release-partner-repack-repackage-win64-nightly-yandex-yandex-ua-uk: LzWbkscgTXiyDMuk5pHQaQ
+ release-partner-repack-signing-macosx64-nightly-aol-aol-en-US: bT8yXA8OTbG0ljyaXJvzWA
+ release-partner-repack-signing-macosx64-nightly-aol-aol_de-de: HjlnJkDUSOq-JyIwwSgWcg
+ release-partner-repack-signing-macosx64-nightly-aol-aol_desktop-en-US: YuSYUb0SRqW2lItNKbcoEg
+ release-partner-repack-signing-macosx64-nightly-aol-aol_huffington-en-US: RmDzk1gcQDGoDcoNrwDQnA
+ release-partner-repack-signing-macosx64-nightly-aol-aol_uk-en-GB: KTb0R-feQ5-sF2PVLY7h1Q
+ release-partner-repack-signing-macosx64-nightly-chipde-chipde-de: Tti16V0zTUurNgeEVyR0sA
+ release-partner-repack-signing-macosx64-nightly-chipde-cliqz-003-de: FZbY3P_PRKyS_0MSTEa1xw
+ release-partner-repack-signing-macosx64-nightly-chipde-cliqz-004-de: Nlpi1gz3TjuzokVemJ4zYg
+ release-partner-repack-signing-macosx64-nightly-chipde-cliqz-005-de: ITA6vOTbTqCwwQCK7Wwoag
+ release-partner-repack-signing-macosx64-nightly-chipde-cliqz-006-de: Hyc5zWuKQQOp7NCJPxeEjg
+ release-partner-repack-signing-macosx64-nightly-chipde-cliqz-007-de: cAQOg-MsQoyZHE6fWFColQ
+ release-partner-repack-signing-macosx64-nightly-chipde-cliqz-008-de: U_5RarFoQD6b_Ny56nuPug
+ release-partner-repack-signing-macosx64-nightly-chipde-cliqz-control-de: X-eLIXjMSROES-XC0fbc0Q
+ release-partner-repack-signing-macosx64-nightly-chipde-cliqz-de: PXVdBSTWQ--nPyvR72WcnQ
+ release-partner-repack-signing-macosx64-nightly-firefox-firefox-election-edition-en-US: PJahkc4URvmMSIc0wBHOWg
+ release-partner-repack-signing-macosx64-nightly-funnelcake-funnelcake134-en-US: AKZC6zJ6Sf23-ajcK7tteg
+ release-partner-repack-signing-macosx64-nightly-funnelcake-funnelcake137-en-US: WgW0LxBgRB64COq5zaLoZA
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-de: OGL6miIyQl6ejstRyYbZYg
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-en-GB: DeO_QlylRjWYOySyLsgP0g
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-en-US: NL_9kqjCT-SV2tDKSQbMoA
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-es-ES: V5MFtJUYQ2CtGQwWEhzpoA
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-fr: De5zAXkHRdy6VPIEIHJLkg
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-id: CYWHPXFaSeGjzCTAujiacw
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-it: DizQdvWOQFe7NB-p5IGNOQ
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-ko: dFDNpvsOTMKNF7her5lcbQ
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-pa-IN: JhggfF7uSvmfsoqqqWsUVQ
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-pl: QJRcOuGfQemj80a5shQ9hQ
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-pt-BR: TcadWvfuSTGEhcBTUJHrGQ
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-ru: eRhVPrZ_TBWJ7JS5rY7M0w
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-tr: eQy_T52XTLmmSvrHvGsePA
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-de: ejz1aMgWQKCRTU89D0Yzog
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-en-GB: CMUbtc3ATXibTRY3JtR_IA
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-en-US: GypnOXlRT56pYSrutbNyyA
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-es-ES: I4FK4yv1QGuzuaIuQ5fCfg
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-fr: O3g8gp6vS26jiV518PcqLw
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-id: N1tidPfgRWCvDTJITK67SQ
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-it: eVM1OXfmSiSvblqX3u5lMA
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-ko: a5GiRYLvT0uQlQ8sL-YZWw
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-pa-IN: I7V1kEgqSlq2Mr-fq3Bvlw
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-pl: E4nl5id6T5OU9ZrOwU7rLw
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-pt-BR: P8ZRf-QKSAiaGgxuv_uJbQ
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-ru: dtt-NOTDTR6aZVFZ7UxwAw
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-tr: VefrozaiTLm6xZchLIgMiw
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-yahoo-aura-en-US: LOf_HHjHTh6jfbY1scsRMw
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-yahoo-en-US: B79WTRwSSOC7G_o56IWyOg
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-yandex-en-US: QXL4HP1SSKChDf-eNaha0g
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-yandex-tr: HLkCgCv9RcqYyqANWMM77A
+ release-partner-repack-signing-macosx64-nightly-mozillaonline-mainOther-en-US: UWvqY5OTROWGaAlFhaks5w
+ release-partner-repack-signing-macosx64-nightly-mozillaonline-mainOther-zh-CN: Niif9xtzRtSha7kKio--Hw
+ release-partner-repack-signing-macosx64-nightly-ntt-ntt-en-US: BeeEJr_pQ02_p6W3A2gIVg
+ release-partner-repack-signing-macosx64-nightly-ntt-ntt-ja-JP-mac: UiIX3-wSTie6PjxUsGqvcw
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-ca: cGOecsznTcuFlrFfi3jTiA
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-cy: aE1odJDOSgyrKzArV9uo9Q
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-de: Vm894j09TEqN0wXQC_Tgaw
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-en-GB: Faq16OtNT0CcPcWrKjwiZQ
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-en-US: TOxEAdKCQKq4WQUonidaLQ
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-es-ES: MTU06JWKQrif2Z-TZYp_IA
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-fr: LF-tWKw8RwCrUJkJ-z3W0Q
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-gd: VQH4gnIARjy-ZOFZYnGBCQ
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-it: R44v2MZ0S2KEEehAhk8t0A
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-ca: Xed4qqZ_TTC8G1KYJI5gOg
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-cy: YrGQ5HDyQpuiCtj8XdhMRw
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-de: X5-Pt6F2RuWrDji-QAOePA
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-en-GB: cI1Yn1yJQgehetWlZ00h7g
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-en-US: NTdI9rQSTSK6b9qZmXsg-Q
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-es-ES: HHywXvcxRPSMgDDv_Tcpow
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-fr: d7z68L2aQNG8D3fkvnyg-g
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-gd: OAGT7eiCSr6Dn305U-NtZQ
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-it: dO-mH5mnQ1ynZhcYsDO7Dg
+ release-partner-repack-signing-macosx64-nightly-seznam-seznam-cs: BQz46WaxT--OPG0RstNmsA
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-1und1-de: R9sFKzQwQtiAzS63SgMgug
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-1und1-en-US: YV2v7kStTZeAKl20cucm3Q
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-1und1_notb-de: Iz80VQhWQQGLgDFhFXe9BQ
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-1und1_notb-en-US: RX8fyEksRNSvJz_b58R8Kw
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-gmx-de: XKgiCksYSxGXMY45_UYfNA
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-gmx-en-US: NGFvaGQwSf-u2ir4HoeOCg
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-gmx_notb-de: BfccjqTpSXSoUWhb9s0X_w
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-gmx_notb-en-US: YZ3m2cr8Spm-OuS7Sjm7nQ
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-mail.com-de: HmR9pWedQTOhHHEHr4dHUQ
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-mail.com-en-US: JVgTpY68S4CkbF3DCJZDJQ
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-mail.com_notb-de: EVHlFvhjQ7iHVGXkJa6miw
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-mail.com_notb-en-US: X_xQQ6PeRLyTaZLeRY7vuw
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-web.de-de: JPoz-NwySiOk6b4ZTuIMDg
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-web.de-en-US: Fw2zO4KNTLunbE3tRnvuHw
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-web.de_notb-de: Z5_96ISeRmicdlgexU1aSg
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-web.de_notb-en-US: Wq608zqiQQCyJke0ueoTYw
+ release-partner-repack-signing-macosx64-nightly-yandex-yandex-portals-ru: besdKUczTsGAx7VIi6vgxw
+ release-partner-repack-signing-macosx64-nightly-yandex-yandex-ru-mz-ru: CyAeWHPGQ7CMK3-IWijo0Q
+ release-partner-repack-signing-macosx64-nightly-yandex-yandex-ru-ru: StqQciJJQWqG4LczK3BS8g
+ release-partner-repack-signing-macosx64-nightly-yandex-yandex-tr-gezginler-tr: Zv8jpEZyQbOscnaOdDjdfg
+ release-partner-repack-signing-macosx64-nightly-yandex-yandex-tr-tamindir-tr: DfJx4g9MR8eTShBTKkexEQ
+ release-partner-repack-signing-macosx64-nightly-yandex-yandex-tr-tr: OPt9p01kTvm9EvviFu_kRA
+ release-partner-repack-signing-macosx64-nightly-yandex-yandex-ua-ru: eT5UzT9zT-uQla57siMjVA
+ release-partner-repack-signing-macosx64-nightly-yandex-yandex-ua-uk: ZF26uloLTa6ZMzYKR09j-Q
+ release-partner-repack-win32-nightly: Q2j3JmrhReShd2aIRSSGsA
+ release-partner-repack-win64-nightly: A5KcGJIETCqIWgbYLuAJ-Q
+ release-snap-repackage-firefox: NR5c8ichS_CCJeFzorjVCQ
+ release-source-checksums-signing-firefox-source/opt: JIcVwohsThmr2gFT68astg
+ release-source-firefox-source/opt: SO9LvB6YR_a9IhtnPui2Fw
+ release-source-signing-firefox-source/opt: QMzngmz6S_S4aJyLNOa3Ew
+ release-update-verify-config-firefox-linux: Gk7hT2U4QmuDnJSIiVT5ng
+ release-update-verify-config-firefox-linux64: YJieFTJ4R_KHcrz5j682Iw
+ release-update-verify-config-firefox-macosx64: Uo1TbpxGR4aADK_Y2pjpvw
+ release-update-verify-config-firefox-win32: YLV4XV64TOG2I2B9hp1Tdg
+ release-update-verify-config-firefox-win64: ceNzEVh_Qyu5GpVdV1nwOQ
+ release-update-verify-firefox-linux-1/12: KeZPVc_JQQ6DZz0rhh3Wew
+ release-update-verify-firefox-linux-10/12: OCpDzWzdSfeyuZv4YUh_pA
+ release-update-verify-firefox-linux-11/12: G0PTyvNwSh6955VwsidCZg
+ release-update-verify-firefox-linux-12/12: Ic-o1815Q5GjyEuie6-F8A
+ release-update-verify-firefox-linux-2/12: cliJiYh-R86wONFxHUyDuw
+ release-update-verify-firefox-linux-3/12: dhYQZiXhR-qhV_CYBmm5rw
+ release-update-verify-firefox-linux-4/12: epNDNn1-SdKyGyHtFwXXkw
+ release-update-verify-firefox-linux-5/12: NA57z1B2QoeP5bst2D8B9g
+ release-update-verify-firefox-linux-6/12: Q8JpVcNgSjqYTmC4YoKbaw
+ release-update-verify-firefox-linux-7/12: d4S97_aoTZGNTv_RmAxkyw
+ release-update-verify-firefox-linux-8/12: H7-UBOvrT2i_qxoT0wj3bQ
+ release-update-verify-firefox-linux-9/12: HUxWXBs8QGybX8GyADFaVw
+ release-update-verify-firefox-linux64-1/12: HSfUXuLETyGagjDpXMjpFQ
+ release-update-verify-firefox-linux64-10/12: QmQFsInAREKyeCF1h1iIHg
+ release-update-verify-firefox-linux64-11/12: WzrNxY35QQaWAwiNl3WWAA
+ release-update-verify-firefox-linux64-12/12: d05NAVzIRaOYed2ry2LbLQ
+ release-update-verify-firefox-linux64-2/12: TNphRsScRQ-d_4piRHMzPg
+ release-update-verify-firefox-linux64-3/12: QZGi-n2nQay3iVUzZ824Sw
+ release-update-verify-firefox-linux64-4/12: DkKLHEm1RQ6afg5asVO8xA
+ release-update-verify-firefox-linux64-5/12: NZNQy90EToSfM5i4jbjL2w
+ release-update-verify-firefox-linux64-6/12: Hxe0dFveQa-DOqdz3JBZrg
+ release-update-verify-firefox-linux64-7/12: FSPmKU6dTzSVNuz6Lty5Og
+ release-update-verify-firefox-linux64-8/12: FCe_UwVOSlaOauBX6pqKKg
+ release-update-verify-firefox-linux64-9/12: f87W-YfIT8Cul52FPpS8_w
+ release-update-verify-firefox-macosx64-1/12: aDR05DSeQtC3Ga3aroy4Xw
+ release-update-verify-firefox-macosx64-10/12: V-64IW93SEOMm6gJQN2AlQ
+ release-update-verify-firefox-macosx64-11/12: IIHf7GJCSDC-zluT2sfv1w
+ release-update-verify-firefox-macosx64-12/12: dbImgTthQqC08PYfgSkYdw
+ release-update-verify-firefox-macosx64-2/12: fV3FkRr1ToKbq1vxDBf-CA
+ release-update-verify-firefox-macosx64-3/12: R2YI8NnGSVKdIpAhzyirHw
+ release-update-verify-firefox-macosx64-4/12: DI6zuJcqT9aOsiw0pzY68A
+ release-update-verify-firefox-macosx64-5/12: H6-IrY1oRoWRONcdWStWwg
+ release-update-verify-firefox-macosx64-6/12: dJ-jl4-lR2i5yL8sEnXmcg
+ release-update-verify-firefox-macosx64-7/12: LCGLW9rDTt2lhQ_kMtC2fg
+ release-update-verify-firefox-macosx64-8/12: LgjfS9NdQ2CQ-GBSEqlh0w
+ release-update-verify-firefox-macosx64-9/12: OAS8WQAiTj23ENdpUz2Akg
+ release-update-verify-firefox-win32-1/12: YaQv2wBZR2iirDqWwuuP1w
+ release-update-verify-firefox-win32-10/12: FVHQU_WIRtO4_W0ieGXMGQ
+ release-update-verify-firefox-win32-11/12: e78ielxLSPybE5pSgEhqcg
+ release-update-verify-firefox-win32-12/12: B-4uLMGkTYOH3XDA9aDSpA
+ release-update-verify-firefox-win32-2/12: SF-_AGHATMmxiloUC16d7w
+ release-update-verify-firefox-win32-3/12: OBABm9sZTOOeGkUSmo7CWQ
+ release-update-verify-firefox-win32-4/12: dHcaB4k9RnW2hfNOrhZtJA
+ release-update-verify-firefox-win32-5/12: DiSRxYaHR76Chb7xc_dOxg
+ release-update-verify-firefox-win32-6/12: edUjcdfqQiyOhe5WaCHMXg
+ release-update-verify-firefox-win32-7/12: DqBZfu4vRoiQWzyfF-bOMQ
+ release-update-verify-firefox-win32-8/12: UR1T7w3LR1y_88Lm3w_LFg
+ release-update-verify-firefox-win32-9/12: WS-TE4KfRXShAa0AO2bPPA
+ release-update-verify-firefox-win64-1/12: ff2jw9FGQky6X7SNi929Yw
+ release-update-verify-firefox-win64-10/12: Hr-hYh5IS_aAlXyOsQpvwg
+ release-update-verify-firefox-win64-11/12: F8trJPI3T8GJR3aUWB1qLg
+ release-update-verify-firefox-win64-12/12: HgCFjs6zSNaJXffamvz7dw
+ release-update-verify-firefox-win64-2/12: WEgA4tB1Rh6ba93GW0UmJQ
+ release-update-verify-firefox-win64-3/12: X_aWUw1KShK1ZZ88YPM93Q
+ release-update-verify-firefox-win64-4/12: dJlRrwgbS0idC_tw3uWrgA
+ release-update-verify-firefox-win64-5/12: eGBzw5QSTDevIf6fKNMDgg
+ release-update-verify-firefox-win64-6/12: SKX8eJ4ERomCtG-CNbCpDw
+ release-update-verify-firefox-win64-7/12: cDLdqOXsRAC8ILD_pac0Xg
+ release-update-verify-firefox-win64-8/12: VdWR75VlR1-84PuGFaPuwA
+ release-update-verify-firefox-win64-9/12: OQwy7IqSTOm32NVXn_Wpxw
+ repackage-l10n-ach-linux-nightly/opt: X_dCq3IATvWTts4vFpiKvw
+ repackage-l10n-ach-linux64-nightly/opt: BjV47tinRw6RKRJLmOkhVg
+ repackage-l10n-ach-macosx64-nightly/opt: VtiwYS1IQ4-KTB5uBqUDdg
+ repackage-l10n-ach-win32-nightly/opt: Y0s-H8AlSKeXwwih_X6MHQ
+ repackage-l10n-ach-win64-nightly/opt: K9dYgwVSTaOnlvmY5uF4Iw
+ repackage-l10n-af-linux-nightly/opt: QuvvYbPITDusMh5NM3uqWA
+ repackage-l10n-af-linux64-nightly/opt: fjOpFEGnSsWj0EBMerzydA
+ repackage-l10n-af-macosx64-nightly/opt: EyjWmTuTRWCg3nS2J13Dow
+ repackage-l10n-af-win32-nightly/opt: L4nc7wdITbKYHrY8MeoGWQ
+ repackage-l10n-af-win64-nightly/opt: TfuIJO3SQVC8eYAdKQ7yvw
+ repackage-l10n-an-linux-nightly/opt: SlVK8RUxQgexIVKFsLdZ5w
+ repackage-l10n-an-linux64-nightly/opt: NYCxlB-SSreKnQ0pW2IZ7g
+ repackage-l10n-an-macosx64-nightly/opt: N-zDaE6VSz6FaBT5v2G9Qw
+ repackage-l10n-an-win32-nightly/opt: XAfftAF8QMye0KJChF0qXQ
+ repackage-l10n-an-win64-nightly/opt: S0-u4EurQLiy2CxFa3vrqQ
+ repackage-l10n-ar-linux-nightly/opt: ALzyUr_aRoCSi3Qn30AmBA
+ repackage-l10n-ar-linux64-nightly/opt: B_-Qwi_eSayPXs-lNFqmUA
+ repackage-l10n-ar-macosx64-nightly/opt: TO3j6xgbSiKOw5YL1oXI-w
+ repackage-l10n-ar-win32-nightly/opt: TtQeCz31ShuAScrFs2WqQw
+ repackage-l10n-ar-win64-nightly/opt: TfY_MC6_T3aCoiqaybiyNQ
+ repackage-l10n-as-linux-nightly/opt: Me19EtmeS1SaOC1lQGJx-Q
+ repackage-l10n-as-linux64-nightly/opt: SJW6-vTnSq-yVLVFYIWCHQ
+ repackage-l10n-as-macosx64-nightly/opt: ASmlqxFvRRyVYa0L23yqcw
+ repackage-l10n-as-win32-nightly/opt: UjohhO37SCCFOEpKHntilw
+ repackage-l10n-as-win64-nightly/opt: VHFj0TVMRQqSDlkKz-Lopg
+ repackage-l10n-ast-linux-nightly/opt: UMn3rVI6TjaR3MeHKPPcZQ
+ repackage-l10n-ast-linux64-nightly/opt: UwvcC3ncQTW6iupsln1GgA
+ repackage-l10n-ast-macosx64-nightly/opt: QuFJW7pgTg-YAY89xSb8Qg
+ repackage-l10n-ast-win32-nightly/opt: QW8H3MywRwCi7BR7LznxZA
+ repackage-l10n-ast-win64-nightly/opt: UpHB1fE_TJWZPkbsPIIOYg
+ repackage-l10n-az-linux-nightly/opt: W9V34gJcT4C1SZUfKqZK1Q
+ repackage-l10n-az-linux64-nightly/opt: JOszAMgARvCqtxNCnDDqFQ
+ repackage-l10n-az-macosx64-nightly/opt: DEkDEtSASY2bFtLKa4A2xw
+ repackage-l10n-az-win32-nightly/opt: T2OLtmLVRSWlEMPZKEAJ8A
+ repackage-l10n-az-win64-nightly/opt: E8OsEFzgSNO1mLiylHxYqQ
+ repackage-l10n-be-linux-nightly/opt: ehChRV4HQqmg6bSI5kkySw
+ repackage-l10n-be-linux64-nightly/opt: cbEL-MAsS3OrjGw3YZOs5g
+ repackage-l10n-be-macosx64-nightly/opt: K0FYej7bTzeJGF0wz_8rwg
+ repackage-l10n-be-win32-nightly/opt: IAypLFOSQ2OKgBOowJtvDg
+ repackage-l10n-be-win64-nightly/opt: IhdlTLY0TVWJobkdN2NDVg
+ repackage-l10n-bg-linux-nightly/opt: EWLggAibQ3mGL5EOKF7Dig
+ repackage-l10n-bg-linux64-nightly/opt: E6gDS7CmQBuyHHPqil3nsw
+ repackage-l10n-bg-macosx64-nightly/opt: QcHz61IfStKMkFFgawzV5Q
+ repackage-l10n-bg-win32-nightly/opt: F76yjGx-SqiOADsUTUWqbw
+ repackage-l10n-bg-win64-nightly/opt: KycXXp_AQ5G-VLwpSMt3Mw
+ repackage-l10n-bn-BD-linux-nightly/opt: J08jAPC_Qq-9mAgeQu3jiA
+ repackage-l10n-bn-BD-linux64-nightly/opt: ZCh4JWwGSA-F1VP3Qn69Mw
+ repackage-l10n-bn-BD-macosx64-nightly/opt: YN5ogj6eQDKShzIfjdKyKw
+ repackage-l10n-bn-BD-win32-nightly/opt: Q7TR9jwaSmqU4UzGrlR8PA
+ repackage-l10n-bn-BD-win64-nightly/opt: YC_tfgLjRMKHAP4giBQOPQ
+ repackage-l10n-bn-IN-linux-nightly/opt: d8Mw0BxvRQyKq7K3oY4_bw
+ repackage-l10n-bn-IN-linux64-nightly/opt: BCNxZWrMS_22_i29--8bNA
+ repackage-l10n-bn-IN-macosx64-nightly/opt: aLrCWBdlTFqipqjAS1Lo5Q
+ repackage-l10n-bn-IN-win32-nightly/opt: XGJ0ftKSQC6swSVJY4YVFw
+ repackage-l10n-bn-IN-win64-nightly/opt: Dm7HCGXXRXSXCKJXUXs7IQ
+ repackage-l10n-br-linux-nightly/opt: c6i7gvzGRDGh5lEwgIQsnA
+ repackage-l10n-br-linux64-nightly/opt: VRkWJ3C_QPOaK529thIIpA
+ repackage-l10n-br-macosx64-nightly/opt: GnP0xnT9QbaKRPeiivYzSw
+ repackage-l10n-br-win32-nightly/opt: GT3fr8dcSvSE80X56unNYg
+ repackage-l10n-br-win64-nightly/opt: cWbHbIiGSNqQO7LRcGSVqA
+ repackage-l10n-bs-linux-nightly/opt: O_Ti4LrkTZ2Q6jCUI__imw
+ repackage-l10n-bs-linux64-nightly/opt: L6pDqX-JQQ6c3c9EtuD8Ew
+ repackage-l10n-bs-macosx64-nightly/opt: DpGNpG4wScuujYTuV62U7A
+ repackage-l10n-bs-win32-nightly/opt: S88zC66VQbWeo_JzsHlJKQ
+ repackage-l10n-bs-win64-nightly/opt: NHDIAzWIS8aECl1K_FayAA
+ repackage-l10n-ca-linux-nightly/opt: PuCSLKzNQ76nDo1Wt04JHQ
+ repackage-l10n-ca-linux64-nightly/opt: P75THLYiTk6lBHg8CcvE0Q
+ repackage-l10n-ca-macosx64-nightly/opt: fr8z-mToTi2XdptPXTD4mQ
+ repackage-l10n-ca-win32-nightly/opt: EhJ7wmykQZWkdrxW7y73lQ
+ repackage-l10n-ca-win64-nightly/opt: AKI14rTHQ-uvjN0geu4rrQ
+ repackage-l10n-cak-linux-nightly/opt: KfFcUXTHQYOCrzpkG7WvSg
+ repackage-l10n-cak-linux64-nightly/opt: MfsG05qhRsmgAlmbhg2O8g
+ repackage-l10n-cak-macosx64-nightly/opt: DoqZDK43QAmCGqBfFv-PkA
+ repackage-l10n-cak-win32-nightly/opt: Aqa9ZGIxQWKzKVjmk0FCgA
+ repackage-l10n-cak-win64-nightly/opt: Y9w11m6mSfyNoeVW3y89yg
+ repackage-l10n-cs-linux-nightly/opt: XfDp08tySk2m0XxrVB9LbA
+ repackage-l10n-cs-linux64-nightly/opt: PWoOVoaRRku_yOtwy0-11Q
+ repackage-l10n-cs-macosx64-nightly/opt: RYTguRoHRXaDoqpgCBVkvA
+ repackage-l10n-cs-win32-nightly/opt: eGc7RQkESxetIrTkGLnA5Q
+ repackage-l10n-cs-win64-nightly/opt: MaK5m5akSiKTvMgS5COisQ
+ repackage-l10n-cy-linux-nightly/opt: MMXRhIMfSn-jtaxalFwywA
+ repackage-l10n-cy-linux64-nightly/opt: WxoNskaySoWuf3JdBYJcOw
+ repackage-l10n-cy-macosx64-nightly/opt: RrzTnM33T4iTeQqky2HgJQ
+ repackage-l10n-cy-win32-nightly/opt: H5a4CGP3RIaNkMxDJVLN-g
+ repackage-l10n-cy-win64-nightly/opt: FQgwyR8mScCdAEs8TP4QIA
+ repackage-l10n-da-linux-nightly/opt: LF9lJhWrRU--hGGO9cCy1Q
+ repackage-l10n-da-linux64-nightly/opt: O6OHPZuuQm-9_G_5R44jvw
+ repackage-l10n-da-macosx64-nightly/opt: YswzIJpXSi6-B7y0-ZBtIg
+ repackage-l10n-da-win32-nightly/opt: OP2FEQ4gRXCYIWGaHfCYeA
+ repackage-l10n-da-win64-nightly/opt: ceL9h9UHQVKM1I69JYBJdQ
+ repackage-l10n-de-linux-nightly/opt: A92o9QDMR_GMPp5tlxGLMg
+ repackage-l10n-de-linux64-nightly/opt: T-lIOpozSDeHvT32dNnpoQ
+ repackage-l10n-de-macosx64-nightly/opt: PaJTczTcSoiiLYu2QPtTjA
+ repackage-l10n-de-win32-nightly/opt: FmqQok4kRgGn2hfGuGrhug
+ repackage-l10n-de-win64-nightly/opt: Tr6qa8P1QXme0-xuuXMgWw
+ repackage-l10n-dsb-linux-nightly/opt: Zld8k105TtqqJJTsUqXkHA
+ repackage-l10n-dsb-linux64-nightly/opt: ZUvt8V9jQ8uYVW-aZJeXYw
+ repackage-l10n-dsb-macosx64-nightly/opt: GHc47jAMQWKrNPV1OBwo9w
+ repackage-l10n-dsb-win32-nightly/opt: cpImhCbsRsOfjWhNEHB0WA
+ repackage-l10n-dsb-win64-nightly/opt: YKs4Hl8tQeGUM3odUbyYvw
+ repackage-l10n-el-linux-nightly/opt: GNKtKFo1Sj6bMjYTKBo_pw
+ repackage-l10n-el-linux64-nightly/opt: I-rpP_sKTY2dBy-0Fq4G4Q
+ repackage-l10n-el-macosx64-nightly/opt: VjCdtkNeTRaGDd105qZPjg
+ repackage-l10n-el-win32-nightly/opt: IQf5EguNQIe4XQBJTH8Nkg
+ repackage-l10n-el-win64-nightly/opt: ZYZqYJvrSmWrnkUYosZIwQ
+ repackage-l10n-en-CA-linux-nightly/opt: RO2hng9HSSmkLDqVdRwkmg
+ repackage-l10n-en-CA-linux64-nightly/opt: S8ItT_NrT46_bwW8kopHvg
+ repackage-l10n-en-CA-macosx64-nightly/opt: W_jvCH29T2qdCQL4EQV2CQ
+ repackage-l10n-en-CA-win32-nightly/opt: b7FmPW5_Rfm3WGB3wRE4QQ
+ repackage-l10n-en-CA-win64-nightly/opt: GupW3UV8TFOh2IzByX498Q
+ repackage-l10n-en-GB-linux-nightly/opt: Dq-kqy77RG6vIIigTFiJow
+ repackage-l10n-en-GB-linux64-nightly/opt: CVZFytZXQ0GVxhz3k02TVQ
+ repackage-l10n-en-GB-macosx64-nightly/opt: MGas6hP8QFOmdBXoPss8Xw
+ repackage-l10n-en-GB-win32-nightly/opt: dguTVzBpTtCX9gfojo8nyA
+ repackage-l10n-en-GB-win64-nightly/opt: fZzjov6YSPWokzgmSOpReg
+ repackage-l10n-en-ZA-linux-nightly/opt: KJ2cCdxXRv-TkxYjtxDaVg
+ repackage-l10n-en-ZA-linux64-nightly/opt: Yk-FV1ZSQPuywvTi6WQa1g
+ repackage-l10n-en-ZA-macosx64-nightly/opt: Gu91jYH7QfeoX3KCvQzF5g
+ repackage-l10n-en-ZA-win32-nightly/opt: AmGY-ORMROyqBJkoD9imgQ
+ repackage-l10n-en-ZA-win64-nightly/opt: c0Oy_K_ESaWoaaGIBizU7g
+ repackage-l10n-eo-linux-nightly/opt: CwTCkmaLRiGZG1cWqtr8mg
+ repackage-l10n-eo-linux64-nightly/opt: G9SXSN0SSq6BO9Pa044_kg
+ repackage-l10n-eo-macosx64-nightly/opt: ezBNLgrZR0yQ8R-BS0U23Q
+ repackage-l10n-eo-win32-nightly/opt: NUJlScuAS7uPeGgVFSkRgQ
+ repackage-l10n-eo-win64-nightly/opt: COKF8SNFRZaNKwUS0_lRAw
+ repackage-l10n-es-AR-linux-nightly/opt: bgImvIYrQ0WLvwMdXnM4gg
+ repackage-l10n-es-AR-linux64-nightly/opt: DkGC2CKVTt2o-fZI7Yx0TA
+ repackage-l10n-es-AR-macosx64-nightly/opt: bbi8upTvT-u14G8kDO9uZg
+ repackage-l10n-es-AR-win32-nightly/opt: KoqkENbqRuKe0xe0D0N8Kg
+ repackage-l10n-es-AR-win64-nightly/opt: Ikswh3u4RyOWP2bzcrYIMg
+ repackage-l10n-es-CL-linux-nightly/opt: JWSmcpglSx2C2HwgBNP27Q
+ repackage-l10n-es-CL-linux64-nightly/opt: NmyR0rzKRkKg2W3PSb8QYQ
+ repackage-l10n-es-CL-macosx64-nightly/opt: E1G4WJbNR0WivXVZfVyBLg
+ repackage-l10n-es-CL-win32-nightly/opt: PdyqNQRQT2-aEKmTxRM5tA
+ repackage-l10n-es-CL-win64-nightly/opt: MOBCru2nR_q7vPA4DHStAQ
+ repackage-l10n-es-ES-linux-nightly/opt: dDndQQ2ZS--ZT8QN4w8-4w
+ repackage-l10n-es-ES-linux64-nightly/opt: GVs4HNSVTiOn8TWlGoPCPQ
+ repackage-l10n-es-ES-macosx64-nightly/opt: WiU5MFN-S4mKJvItIW8mBA
+ repackage-l10n-es-ES-win32-nightly/opt: UoG3BxAoQgqhQtLLdsYDQw
+ repackage-l10n-es-ES-win64-nightly/opt: F4jpif1WSCi9QzQuLsJ7aA
+ repackage-l10n-es-MX-linux-nightly/opt: ZtI_Vyh6TRKieOLHnVIFsA
+ repackage-l10n-es-MX-linux64-nightly/opt: FYrRlK72SkmjTLRCimu0fg
+ repackage-l10n-es-MX-macosx64-nightly/opt: IIoP1F7mSvC-ptSUO1eq-g
+ repackage-l10n-es-MX-win32-nightly/opt: Fk_1fqkPRIiJneHmXiVJNA
+ repackage-l10n-es-MX-win64-nightly/opt: cUp2QlU3TIuqAfNXLijpUA
+ repackage-l10n-et-linux-nightly/opt: ChUvzCWnTAqp6j3_RNhLow
+ repackage-l10n-et-linux64-nightly/opt: fET6B3cEQg25Yg9v_Mzhxg
+ repackage-l10n-et-macosx64-nightly/opt: LI4aOCIMSNK4pct7nAe3Vg
+ repackage-l10n-et-win32-nightly/opt: cSMaQXeMSr6kU_IECr_lFA
+ repackage-l10n-et-win64-nightly/opt: NMY6uN17SIOypJSEIwbM8Q
+ repackage-l10n-eu-linux-nightly/opt: D3iUIsf2Sk-BuVRjIc8p1w
+ repackage-l10n-eu-linux64-nightly/opt: JBnGk7xHQGS175oI09QxsA
+ repackage-l10n-eu-macosx64-nightly/opt: cAtYORc6SvSyFqavNP8gmw
+ repackage-l10n-eu-win32-nightly/opt: HyV8p7A1QW62cdLhzwSQ7g
+ repackage-l10n-eu-win64-nightly/opt: JMZfsItARN2l02Ncg7T7sw
+ repackage-l10n-fa-linux-nightly/opt: EYihBtCwQbmTx1PmwDFGLA
+ repackage-l10n-fa-linux64-nightly/opt: TpLbxyJEQUuGO6VwqYAlaw
+ repackage-l10n-fa-macosx64-nightly/opt: JPwCyPjjR0S-dyAuCMsYAg
+ repackage-l10n-fa-win32-nightly/opt: TzCchZHlQ9GpsErijwtWXw
+ repackage-l10n-fa-win64-nightly/opt: O5uZYdQ_TNuVB19swleNNQ
+ repackage-l10n-ff-linux-nightly/opt: Nlcy8Vg-ST-Mbq7ZdBRA8g
+ repackage-l10n-ff-linux64-nightly/opt: ILl2BWuoSXi1qpfeOE0A9g
+ repackage-l10n-ff-macosx64-nightly/opt: IJi_wTpIRMaIbx5JvjZogg
+ repackage-l10n-ff-win32-nightly/opt: C73m675jQE-gOqiq1FuBxA
+ repackage-l10n-ff-win64-nightly/opt: WagGyt7XQE65r_DD0vkYjw
+ repackage-l10n-fi-linux-nightly/opt: N04kLsTgQfiV-Vxz6GOCZQ
+ repackage-l10n-fi-linux64-nightly/opt: NIVLyHvARSuM1UP1DLnLmw
+ repackage-l10n-fi-macosx64-nightly/opt: KTJUJ6rzQf2FPU1Q6t4jzw
+ repackage-l10n-fi-win32-nightly/opt: W2-b5DuFQLWHQQYMk1zqug
+ repackage-l10n-fi-win64-nightly/opt: D13g_q_sTQeRhHfBE58r-A
+ repackage-l10n-fr-linux-nightly/opt: FbHy8bRfQZa2GMlbyC1D-Q
+ repackage-l10n-fr-linux64-nightly/opt: LvRquCmISBKHNT2VdGfNYQ
+ repackage-l10n-fr-macosx64-nightly/opt: VxCyyTI1S7O1dhGtI8sFWw
+ repackage-l10n-fr-win32-nightly/opt: bkDJcw4wRBidcFvDWGeh7Q
+ repackage-l10n-fr-win64-nightly/opt: WyXjchpUTXiphvF9z_XtaA
+ repackage-l10n-fy-NL-linux-nightly/opt: UBwEdm4yTlGMK0yzzlp-eg
+ repackage-l10n-fy-NL-linux64-nightly/opt: CCH18ef6QcyA-Ed1dPudBw
+ repackage-l10n-fy-NL-macosx64-nightly/opt: djZ1O9cvSg2OBkhdzbu7PQ
+ repackage-l10n-fy-NL-win32-nightly/opt: bRPNUU0oScGR6KM6QniVcg
+ repackage-l10n-fy-NL-win64-nightly/opt: G5VEGKpqTr6hYFDhuut9kA
+ repackage-l10n-ga-IE-linux-nightly/opt: KqI4_VuESam6cFj9c20K9A
+ repackage-l10n-ga-IE-linux64-nightly/opt: Tvlv2ScDTAOTsnjuN1OUDw
+ repackage-l10n-ga-IE-macosx64-nightly/opt: NxguYT2KRAu7oLt09GBDZg
+ repackage-l10n-ga-IE-win32-nightly/opt: dfGUvELjQ4mKaiN17b9jzw
+ repackage-l10n-ga-IE-win64-nightly/opt: D-JP0ck4QLSBLjie7gHiKg
+ repackage-l10n-gd-linux-nightly/opt: XIfQRrSKRLeNXhb2MPnclQ
+ repackage-l10n-gd-linux64-nightly/opt: OVfoZ4TUTba2mZOlBqKZ7w
+ repackage-l10n-gd-macosx64-nightly/opt: ar4BWqcLR8W9Eok-EuF-6w
+ repackage-l10n-gd-win32-nightly/opt: SuV4TBXrS3OudG-Qkqedgw
+ repackage-l10n-gd-win64-nightly/opt: QRVcaPrtRtWSVILDsjR6CA
+ repackage-l10n-gl-linux-nightly/opt: NRKe-_ezQBCVZtoIDcypQg
+ repackage-l10n-gl-linux64-nightly/opt: W4aRzxtCTWeTUG6MBSi7jg
+ repackage-l10n-gl-macosx64-nightly/opt: BovXfvvJQDSp07mbfqQq3g
+ repackage-l10n-gl-win32-nightly/opt: Som4AUNuTCSYnpD-kWEVeg
+ repackage-l10n-gl-win64-nightly/opt: EuQoWvCdTpejdsJXKKw57Q
+ repackage-l10n-gn-linux-nightly/opt: YzDa1YqjSUKCrQbLS8uGjA
+ repackage-l10n-gn-linux64-nightly/opt: RA3FNaekRaSzmryaRaZQSg
+ repackage-l10n-gn-macosx64-nightly/opt: M8Uog5bsQLOxVJWdQxdd3A
+ repackage-l10n-gn-win32-nightly/opt: XpjgkzadRlyf9qqk6ZuPsQ
+ repackage-l10n-gn-win64-nightly/opt: buShETCwS8mKiygN0u7DxQ
+ repackage-l10n-gu-IN-linux-nightly/opt: HerJYHB0TNeChFe6n3QkcA
+ repackage-l10n-gu-IN-linux64-nightly/opt: dbCT_cX7SYWkD7KHPNexeA
+ repackage-l10n-gu-IN-macosx64-nightly/opt: P8sTgN54TzufPYnhlzDU4A
+ repackage-l10n-gu-IN-win32-nightly/opt: Aa1NWhouRISrkqy8KNOpEg
+ repackage-l10n-gu-IN-win64-nightly/opt: E3llJ_QxTvOQPb3NW5NMJA
+ repackage-l10n-he-linux-nightly/opt: dDUyzraJSFC0EpQWLkqSXg
+ repackage-l10n-he-linux64-nightly/opt: KGx_mFUgSeSS0NCMHJwzEw
+ repackage-l10n-he-macosx64-nightly/opt: ZdQqpj7SRpGCcwW8TWu-8w
+ repackage-l10n-he-win32-nightly/opt: ay4pdRduSruJAp17B8qxvw
+ repackage-l10n-he-win64-nightly/opt: EDOTOXnwTrqIg_su5zQD7w
+ repackage-l10n-hi-IN-linux-nightly/opt: Li-dDxMjQSOsbU5So7FB5Q
+ repackage-l10n-hi-IN-linux64-nightly/opt: CTrGQcjjROi6TSBdGTE_JQ
+ repackage-l10n-hi-IN-macosx64-nightly/opt: T8jhSlVFRAmUOjDpBojMiw
+ repackage-l10n-hi-IN-win32-nightly/opt: T4bK8FauQOu054sUE657-g
+ repackage-l10n-hi-IN-win64-nightly/opt: Lxe8dskSSoiGDyRZQjnNgQ
+ repackage-l10n-hr-linux-nightly/opt: HfTjp97pR5-Q8KJrvjbKiA
+ repackage-l10n-hr-linux64-nightly/opt: GJmK34IQRIugEuqVmO06YQ
+ repackage-l10n-hr-macosx64-nightly/opt: X7SiA3GqSnGrM05OofErZQ
+ repackage-l10n-hr-win32-nightly/opt: bl8m7YBdQSedrfgsbQGzHA
+ repackage-l10n-hr-win64-nightly/opt: ayyeeUejSme1mmNOgtATfg
+ repackage-l10n-hsb-linux-nightly/opt: e8fpZptWQJuqrZSbIGi-Gw
+ repackage-l10n-hsb-linux64-nightly/opt: fP99sIBXTBaQdbi39HOhYw
+ repackage-l10n-hsb-macosx64-nightly/opt: IRSV88MBToyN1kkwoV-GIA
+ repackage-l10n-hsb-win32-nightly/opt: OTX-JxPmRLWxCAJ4Vs8ReQ
+ repackage-l10n-hsb-win64-nightly/opt: PBm9Fne1QF-sG5WRLlUetA
+ repackage-l10n-hu-linux-nightly/opt: VvT_7qPSSnG8PlNv1WbZ0w
+ repackage-l10n-hu-linux64-nightly/opt: S35M9lKqTt2StmJ1dLQD9w
+ repackage-l10n-hu-macosx64-nightly/opt: Atm7cEEqQFGSVjAs-wvs4Q
+ repackage-l10n-hu-win32-nightly/opt: A7gFbJSGSNSC8lot94Q-Pw
+ repackage-l10n-hu-win64-nightly/opt: WDjLgwYdQ_OGiPFvvSxlKA
+ repackage-l10n-hy-AM-linux-nightly/opt: YnEgGz7DSjiQD_2azaRUDw
+ repackage-l10n-hy-AM-linux64-nightly/opt: EL27o_rfRuqD54M76lXKOg
+ repackage-l10n-hy-AM-macosx64-nightly/opt: YJmtHf_7RcilxeC481NPhQ
+ repackage-l10n-hy-AM-win32-nightly/opt: eTlE_u5yR7eR6S2SDDCeUQ
+ repackage-l10n-hy-AM-win64-nightly/opt: WNjU1zsdQ7O2wgTZoiDqrQ
+ repackage-l10n-ia-linux-nightly/opt: WqrpxiX-REGU3I96XkO8IQ
+ repackage-l10n-ia-linux64-nightly/opt: P2zZyIEgRtWJ-xPS1_SluA
+ repackage-l10n-ia-macosx64-nightly/opt: VYEBVdDiQPufxIPFQ8gM4g
+ repackage-l10n-ia-win32-nightly/opt: JkDvhGE3QjGQZ8FxC9-6eQ
+ repackage-l10n-ia-win64-nightly/opt: UB97NWa5ToqxGAGBQkNQDQ
+ repackage-l10n-id-linux-nightly/opt: Aeahgf_7RBKTM46VDx1vfA
+ repackage-l10n-id-linux64-nightly/opt: JUbN84Z9TAqgqmhFySiHGQ
+ repackage-l10n-id-macosx64-nightly/opt: RswHlXRbQ7qiymYMhD3kug
+ repackage-l10n-id-win32-nightly/opt: fdTSsrbCR0uC4U89Rn0hQw
+ repackage-l10n-id-win64-nightly/opt: TPNWeZHIT2-UtjJpMdo6gg
+ repackage-l10n-is-linux-nightly/opt: Ye8dCdcHSharN0rkGdyOVQ
+ repackage-l10n-is-linux64-nightly/opt: QjkBs73MQGOv4KPv0nCPxQ
+ repackage-l10n-is-macosx64-nightly/opt: cFnFKiScR5uKvqAtwaPbYg
+ repackage-l10n-is-win32-nightly/opt: N56VRfojSmWioHKczLKbgg
+ repackage-l10n-is-win64-nightly/opt: ZoGeD24bTFKiS_efoSP8eA
+ repackage-l10n-it-linux-nightly/opt: Fr_kN5DqR2GnU5jF5dxp6Q
+ repackage-l10n-it-linux64-nightly/opt: NrLsuSrUSIWvKdDWklGCKQ
+ repackage-l10n-it-macosx64-nightly/opt: dsGoWvviSeyWfxNPWAGWzw
+ repackage-l10n-it-win32-nightly/opt: LEdmTOgvQ22Wd6aCfJTaPA
+ repackage-l10n-it-win64-nightly/opt: TJGAHaIIT82W5xLMMD1BQw
+ repackage-l10n-ja-JP-mac-macosx64-nightly/opt: HWRSUJ85RPqZJPNtI_0OJQ
+ repackage-l10n-ja-linux-nightly/opt: FJZeyHb-Sx2Wfe4E5G0FOg
+ repackage-l10n-ja-linux64-nightly/opt: W3yklSh4Qua7DXoehwq9qw
+ repackage-l10n-ja-win32-nightly/opt: cW_Sg9lYTMqvEkFqRX8uNQ
+ repackage-l10n-ja-win64-nightly/opt: MypX9zniT6aoJm98B9gHhw
+ repackage-l10n-ka-linux-nightly/opt: KhFfJ7KCS9C0n0JGRQIOBQ
+ repackage-l10n-ka-linux64-nightly/opt: UkTbeplUSr-qCQH6CjCGLw
+ repackage-l10n-ka-macosx64-nightly/opt: L98oZXV7TcW3ImsnzqGSBA
+ repackage-l10n-ka-win32-nightly/opt: IVS4K7plQsatHxvyDr4HOw
+ repackage-l10n-ka-win64-nightly/opt: FfYgzqsCQ9OhhHt1Iru7Wg
+ repackage-l10n-kab-linux-nightly/opt: Fl5vxGWfSo6mvrRwhrwvNQ
+ repackage-l10n-kab-linux64-nightly/opt: b4vXRNtKSTmNDLOuSCwdNA
+ repackage-l10n-kab-macosx64-nightly/opt: ECTTMt9ZRjC0Z_vA99goGQ
+ repackage-l10n-kab-win32-nightly/opt: KxtqMoPORzKvQfvxEQZX7g
+ repackage-l10n-kab-win64-nightly/opt: Gn3DU7vFTP6IGakpITCP3A
+ repackage-l10n-kk-linux-nightly/opt: GBJ7GmoLQhmVYK9e4-K5zA
+ repackage-l10n-kk-linux64-nightly/opt: b9QUorz5SYWVkRuNFZR8qw
+ repackage-l10n-kk-macosx64-nightly/opt: f7mWJVelQHqbYYPUNNg_QQ
+ repackage-l10n-kk-win32-nightly/opt: LwDE5j-ZSJ6ktqJ8-ASUuQ
+ repackage-l10n-kk-win64-nightly/opt: HbPObXUGSKK2XHChybaiQQ
+ repackage-l10n-km-linux-nightly/opt: M7GMEAF2TVajj4kHmca7UQ
+ repackage-l10n-km-linux64-nightly/opt: OsFJThNBReC4hT70G3WcNg
+ repackage-l10n-km-macosx64-nightly/opt: N9vqDGZQSQ6cR0vC67RYOA
+ repackage-l10n-km-win32-nightly/opt: dOLnMdDCRimKJWJhM14dOg
+ repackage-l10n-km-win64-nightly/opt: RVKTVdwITHma6HRNQIPsfg
+ repackage-l10n-kn-linux-nightly/opt: Aaea_KxeSuaevEDkR7Agiw
+ repackage-l10n-kn-linux64-nightly/opt: aCfE20MdTYyDfdN7PfEOXg
+ repackage-l10n-kn-macosx64-nightly/opt: Dwcz3UeJTMyeB8LmVHo9lg
+ repackage-l10n-kn-win32-nightly/opt: QxIY2WVHQsSiKZ8u9lIq9g
+ repackage-l10n-kn-win64-nightly/opt: dnlkyZbxSIeqPhVOFSWopQ
+ repackage-l10n-ko-linux-nightly/opt: f5eOpJWpQA-5mWYhXn05SA
+ repackage-l10n-ko-linux64-nightly/opt: EeSalDrkQUiGpzDScrfB7g
+ repackage-l10n-ko-macosx64-nightly/opt: NEqii-yXTo-J8WwzTTFaXg
+ repackage-l10n-ko-win32-nightly/opt: A9KF6wBJREmPL5euv9dHTA
+ repackage-l10n-ko-win64-nightly/opt: EorADmyKSf-cBTfvaVuLhA
+ repackage-l10n-lij-linux-nightly/opt: VTPTlDBkQiSJfcFCZbq2ng
+ repackage-l10n-lij-linux64-nightly/opt: WqZGbNwJRPaVFGv-nlco_A
+ repackage-l10n-lij-macosx64-nightly/opt: cZBjYaDATlaPshNKUTQ62Q
+ repackage-l10n-lij-win32-nightly/opt: QKBmFfkLSE2FF1QPLe47kA
+ repackage-l10n-lij-win64-nightly/opt: HNWydAavTN-CWXmuMh_PYQ
+ repackage-l10n-lt-linux-nightly/opt: IgeC1vZoRWaw0pdLojGLig
+ repackage-l10n-lt-linux64-nightly/opt: JlOv51ahQq24bh3jBPNc0A
+ repackage-l10n-lt-macosx64-nightly/opt: BMvTT-T3SSCsPjTP8I_3ww
+ repackage-l10n-lt-win32-nightly/opt: FRxEP5zYQVScciciqHi2Dw
+ repackage-l10n-lt-win64-nightly/opt: BRl-c7R9Qky0fWe8kAxeSQ
+ repackage-l10n-lv-linux-nightly/opt: RCJNFSYjRkywnqCmILpBPQ
+ repackage-l10n-lv-linux64-nightly/opt: YlZZWpxgRPG2EaHPeX5PZw
+ repackage-l10n-lv-macosx64-nightly/opt: SmMnWkEeSWqkNcJgFj6ZHw
+ repackage-l10n-lv-win32-nightly/opt: dmeLsTq5RVayST2DroeLww
+ repackage-l10n-lv-win64-nightly/opt: BupVR3UHQHuTJa56GUqv9w
+ repackage-l10n-mai-linux-nightly/opt: F2WbLUjBRQmbir-Ro9Sgkg
+ repackage-l10n-mai-linux64-nightly/opt: LE9YRY_CSDaA4YHw0tnQcA
+ repackage-l10n-mai-macosx64-nightly/opt: d0N1Y3UwSHyce_BJZg9lYg
+ repackage-l10n-mai-win32-nightly/opt: EEeb8aNjQq-L-SBZasRofA
+ repackage-l10n-mai-win64-nightly/opt: PaNvPZCXRoqjnRhCm3CjjA
+ repackage-l10n-mk-linux-nightly/opt: N6LvHid9QaOeU6EF-KDghg
+ repackage-l10n-mk-linux64-nightly/opt: fkKhy2e3Rtuh4L970B3TRQ
+ repackage-l10n-mk-macosx64-nightly/opt: ZUN_K612Qg2nOOZRndOPAQ
+ repackage-l10n-mk-win32-nightly/opt: J6ejcgdyRQSryOpxBG9fUg
+ repackage-l10n-mk-win64-nightly/opt: OJjYB8SVSEuj7gxPSoF_Og
+ repackage-l10n-ml-linux-nightly/opt: BjCmftxLRsS6rsm0T_SMuw
+ repackage-l10n-ml-linux64-nightly/opt: MVlT7Fy8QuuBZr3Ez1UYXw
+ repackage-l10n-ml-macosx64-nightly/opt: WVxeoggyR8K-QlOEuyndWw
+ repackage-l10n-ml-win32-nightly/opt: XdVEgSK-T6CqxXeguhb6FQ
+ repackage-l10n-ml-win64-nightly/opt: M4eBaLwtSfiOX-mUH9e85A
+ repackage-l10n-mr-linux-nightly/opt: YyBauZj0TW6BvgDmX5N4_w
+ repackage-l10n-mr-linux64-nightly/opt: ftzIaYVRQSePoWmC_1ZZ6A
+ repackage-l10n-mr-macosx64-nightly/opt: BpWcaQNpTpqi2M02EId72Q
+ repackage-l10n-mr-win32-nightly/opt: DceeRZrITj2vaxfWJtXyUA
+ repackage-l10n-mr-win64-nightly/opt: NcJ7v4OIS9asY92iUgISww
+ repackage-l10n-ms-linux-nightly/opt: KvF4Uf3sRoC3ndcTlDCq0Q
+ repackage-l10n-ms-linux64-nightly/opt: Rg5lx8h1SsiDcIAlgnNJ8g
+ repackage-l10n-ms-macosx64-nightly/opt: MfOcbnFqS1upre2Z4agwEQ
+ repackage-l10n-ms-win32-nightly/opt: OkVDCrNNQ_qbBTCkbQ_NjQ
+ repackage-l10n-ms-win64-nightly/opt: Hz5B48qzTFOFDkRp38nqmA
+ repackage-l10n-my-linux-nightly/opt: YL17OwlhTwu3xbZ79TBZjg
+ repackage-l10n-my-linux64-nightly/opt: LuDWcpQjRR-HYOdkSor7bg
+ repackage-l10n-my-macosx64-nightly/opt: KNbvYT5dSM6LfkyV0_Bkkg
+ repackage-l10n-my-win32-nightly/opt: Ro9VJpdAT8aC3JmTfCvpWw
+ repackage-l10n-my-win64-nightly/opt: dqEYijiSRPaLBL0iRUCayQ
+ repackage-l10n-nb-NO-linux-nightly/opt: OVMbwXoiRxiczYnho2AC4g
+ repackage-l10n-nb-NO-linux64-nightly/opt: dMlMfl2pT0W4J844uxxjUQ
+ repackage-l10n-nb-NO-macosx64-nightly/opt: axmkh8kLRtOY_3gdZI_Pjg
+ repackage-l10n-nb-NO-win32-nightly/opt: WKjr9IL8QwGRJCdoKiGdlg
+ repackage-l10n-nb-NO-win64-nightly/opt: AmjTR2sGRqWR2Bcpr8mSxw
+ repackage-l10n-ne-NP-linux-nightly/opt: GzkoVhd5RP--nqw9GdXN2w
+ repackage-l10n-ne-NP-linux64-nightly/opt: YnMFAQwuTMORbfctoIiPpg
+ repackage-l10n-ne-NP-macosx64-nightly/opt: ae2tGGyVRJGHVFV1JxLlGQ
+ repackage-l10n-ne-NP-win32-nightly/opt: eoUGTVRjRHy58YDu4dGKiA
+ repackage-l10n-ne-NP-win64-nightly/opt: QoSrC6YBQYOLVEzRJOpsMA
+ repackage-l10n-nl-linux-nightly/opt: cv2K4ELWRxK4Us1U02dVmg
+ repackage-l10n-nl-linux64-nightly/opt: Uok_JW_4SXWKKGshzXWtGg
+ repackage-l10n-nl-macosx64-nightly/opt: Yb4uVuTvQm6BV8y84I47iQ
+ repackage-l10n-nl-win32-nightly/opt: LKOZWCopR2Wi0yS4sqPQCw
+ repackage-l10n-nl-win64-nightly/opt: cDA2zSsdRJWDLCZutCfaRg
+ repackage-l10n-nn-NO-linux-nightly/opt: AbME5EJmRp2smau6aqTJVQ
+ repackage-l10n-nn-NO-linux64-nightly/opt: O1h7vs1NSW659-FT7dJ6_A
+ repackage-l10n-nn-NO-macosx64-nightly/opt: eZoqTdn_SHuDldKcR72Ppg
+ repackage-l10n-nn-NO-win32-nightly/opt: OYiWivG7RJybhTDpxxEZKg
+ repackage-l10n-nn-NO-win64-nightly/opt: aGc1xo5GSyCqISiRjJTV8w
+ repackage-l10n-oc-linux-nightly/opt: CSrSF_4yRY-DsdH2GL-fyA
+ repackage-l10n-oc-linux64-nightly/opt: QW9045zlQ6WYwNSxZLConA
+ repackage-l10n-oc-macosx64-nightly/opt: cR_m6L_qRzeDQEDn0S1PGg
+ repackage-l10n-oc-win32-nightly/opt: XF5cPuQWT_-4GwmOAIPY0w
+ repackage-l10n-oc-win64-nightly/opt: YbhQ-bezQaSD8y3Pobu6kA
+ repackage-l10n-or-linux-nightly/opt: ZBWXcEx_RNWCaBlR05o2TA
+ repackage-l10n-or-linux64-nightly/opt: eQCUACcXQiC-6btbGAwlqQ
+ repackage-l10n-or-macosx64-nightly/opt: TdDrwu7DSqy7LmgZ7QYebA
+ repackage-l10n-or-win32-nightly/opt: Ak8KFrG5TXiFmpVVaHtwHA
+ repackage-l10n-or-win64-nightly/opt: KKFqFUXqSkio5Kg_2L7H5g
+ repackage-l10n-pa-IN-linux-nightly/opt: e129_f6tT-2XIHbfmKNncA
+ repackage-l10n-pa-IN-linux64-nightly/opt: HNSL3KH2TZagkfJ8TsvYQw
+ repackage-l10n-pa-IN-macosx64-nightly/opt: SfIoh5xqT_e3oBVdjrbBzA
+ repackage-l10n-pa-IN-win32-nightly/opt: MEK3RPR4Tfa6Okg2CDqHOw
+ repackage-l10n-pa-IN-win64-nightly/opt: IYlg76WVRcqCbbcVpolJrA
+ repackage-l10n-pl-linux-nightly/opt: R7IyWmKTR8S_UUvakjK8Vw
+ repackage-l10n-pl-linux64-nightly/opt: YoIMyeH-Qh6A_7wy92er7w
+ repackage-l10n-pl-macosx64-nightly/opt: GO_UKlybQA-7gQzSIYyBPw
+ repackage-l10n-pl-win32-nightly/opt: e9LB_TaUQb26eBkYdQHi7A
+ repackage-l10n-pl-win64-nightly/opt: MqTkCPK9QjmXHgA63HCh7A
+ repackage-l10n-pt-BR-linux-nightly/opt: OO4bxyenQRyXbTV08LbL-A
+ repackage-l10n-pt-BR-linux64-nightly/opt: cQMmGNIITliO3gf8jsik3g
+ repackage-l10n-pt-BR-macosx64-nightly/opt: d_jhpGRZQA-oo4VeRK2jcQ
+ repackage-l10n-pt-BR-win32-nightly/opt: ZIgF4jeETqOiNwlw6500Jw
+ repackage-l10n-pt-BR-win64-nightly/opt: dwzicSkETzmnLciGZskPag
+ repackage-l10n-pt-PT-linux-nightly/opt: eH7_zUoZRuqeIzLovtIyeQ
+ repackage-l10n-pt-PT-linux64-nightly/opt: DICuRm5LQoOI9oknKbcpSg
+ repackage-l10n-pt-PT-macosx64-nightly/opt: Sxwwh50JSm2fRPfk_bhpVA
+ repackage-l10n-pt-PT-win32-nightly/opt: U0slPcj9TLOWk0dH_PcL2g
+ repackage-l10n-pt-PT-win64-nightly/opt: Co-uZyo9RS-6QKz10RwKfw
+ repackage-l10n-rm-linux-nightly/opt: Mw0z0B-iSt6EEh9dDmK1XA
+ repackage-l10n-rm-linux64-nightly/opt: HyZ4CA1gSES2kRfk9EQ1sg
+ repackage-l10n-rm-macosx64-nightly/opt: XQ36ofUdSrOaiP1CIWYU7g
+ repackage-l10n-rm-win32-nightly/opt: ENxorfjHSbeRc5ICV5akhQ
+ repackage-l10n-rm-win64-nightly/opt: Xo_lyazhTUeUigkI8OhTAw
+ repackage-l10n-ro-linux-nightly/opt: Rnee1W2_S9-fsvotWULwtA
+ repackage-l10n-ro-linux64-nightly/opt: Ia2EsaxfSG2Va5HqH_2JtA
+ repackage-l10n-ro-macosx64-nightly/opt: K66TNRdqTaqVJb22upqulg
+ repackage-l10n-ro-win32-nightly/opt: VLbpoIS1TV61zE21SKQbxw
+ repackage-l10n-ro-win64-nightly/opt: ZzV6qCY2QiSPfLjy1W0SMw
+ repackage-l10n-ru-linux-nightly/opt: LsFRtS3HQ4GzTeFqPULRpw
+ repackage-l10n-ru-linux64-nightly/opt: aZjpOd72RpmtGVkwHmJmyw
+ repackage-l10n-ru-macosx64-nightly/opt: PrX4pOtIRsGjTomIhMlAag
+ repackage-l10n-ru-win32-nightly/opt: B7KGW6zQRIa9m2Ilp2J3pQ
+ repackage-l10n-ru-win64-nightly/opt: XocHKkiJSv-kRUDk9Niakw
+ repackage-l10n-si-linux-nightly/opt: C9HZpuFBQhqdttyEFN01Iw
+ repackage-l10n-si-linux64-nightly/opt: DF_9EDVKQxCn5qaPLYuw9Q
+ repackage-l10n-si-macosx64-nightly/opt: fouYtqEMQlKvoRbGNSk9DA
+ repackage-l10n-si-win32-nightly/opt: F0LKyNFPR32bmL5G6vZxPg
+ repackage-l10n-si-win64-nightly/opt: GR_hQHOzRhOGKXYH0nz-pw
+ repackage-l10n-sk-linux-nightly/opt: SVLLpvKbRzKC4EpLdPB1rw
+ repackage-l10n-sk-linux64-nightly/opt: d95A59XISgm4cL8uQpu8lA
+ repackage-l10n-sk-macosx64-nightly/opt: ZyU486mYSAqoRGpXVr5DKA
+ repackage-l10n-sk-win32-nightly/opt: HFkIgsx9RmGgFcENqxlupQ
+ repackage-l10n-sk-win64-nightly/opt: LMJYnWSlTjirXjNvMryf1g
+ repackage-l10n-sl-linux-nightly/opt: XdYu83JNS6u2h7-KQnEISw
+ repackage-l10n-sl-linux64-nightly/opt: FKgGV9vnS8i-cyrOvu0nwg
+ repackage-l10n-sl-macosx64-nightly/opt: fplnbzMZRZORGkXtRAEijA
+ repackage-l10n-sl-win32-nightly/opt: HPvCtE1mQpKZNzM5Yodd0Q
+ repackage-l10n-sl-win64-nightly/opt: KjWrkT5vRLKyKxlJOdCG3w
+ repackage-l10n-son-linux-nightly/opt: SGOaQxQFQS6MzipCGMb1Fg
+ repackage-l10n-son-linux64-nightly/opt: bF4UTJLtTVeE2rLBb2OuFw
+ repackage-l10n-son-macosx64-nightly/opt: ewi198RnQdKry6X4qzdRuQ
+ repackage-l10n-son-win32-nightly/opt: bfqz1QWJQFSs9Im_oZURKA
+ repackage-l10n-son-win64-nightly/opt: XSw8QOGsTgOQ3JYQ8PRzCA
+ repackage-l10n-sq-linux-nightly/opt: S-2NblTdTp-JNRDm9DPlOQ
+ repackage-l10n-sq-linux64-nightly/opt: H9FsolZ3RR-OepCGiM8fDw
+ repackage-l10n-sq-macosx64-nightly/opt: JptCj9e6TwqCQ0-cvTk0nQ
+ repackage-l10n-sq-win32-nightly/opt: bFsf02LfSFWqk5rpkzYNCg
+ repackage-l10n-sq-win64-nightly/opt: dG5o_8p4Tcm2Sk1_wUFLOw
+ repackage-l10n-sr-linux-nightly/opt: DuLjnX6xTA-M1bh2SS_ptA
+ repackage-l10n-sr-linux64-nightly/opt: XQnmb-DjQHGEr7Xp42N54g
+ repackage-l10n-sr-macosx64-nightly/opt: WijMJD9bTJCvT0ftpOkHgQ
+ repackage-l10n-sr-win32-nightly/opt: HLiVMchHTiSWZC9l318X4g
+ repackage-l10n-sr-win64-nightly/opt: OL8oGxMCQ6qJNR0UzhNa3A
+ repackage-l10n-sv-SE-linux-nightly/opt: bIIItrogSU6pGhHkp9qb_Q
+ repackage-l10n-sv-SE-linux64-nightly/opt: BfzeNFLDRSCJmXQ1kMVKaw
+ repackage-l10n-sv-SE-macosx64-nightly/opt: Qc7i2OWFS0Kgj3Z7_SkNGA
+ repackage-l10n-sv-SE-win32-nightly/opt: OCUCZwPxR62YAOhRJ08zTw
+ repackage-l10n-sv-SE-win64-nightly/opt: Bo28uvBXRCOvciMUjkTa4Q
+ repackage-l10n-ta-linux-nightly/opt: FOBMy2dtS5afzNpx05-rYg
+ repackage-l10n-ta-linux64-nightly/opt: WkriWroZRNKE-NKfZFlMbQ
+ repackage-l10n-ta-macosx64-nightly/opt: QnbqiWEeTzOWKw9ShUdl8w
+ repackage-l10n-ta-win32-nightly/opt: QfaIfTegR5yfjw4ENJG5GA
+ repackage-l10n-ta-win64-nightly/opt: BfOSe7rpSn6JHJ4lRfnx5A
+ repackage-l10n-te-linux-nightly/opt: SnYbb3bWRWWksAPshcxUjQ
+ repackage-l10n-te-linux64-nightly/opt: U58C4Iv8Sx-Y9Aq2IXsYuQ
+ repackage-l10n-te-macosx64-nightly/opt: G_1EELSYQuyAzB9A3csvBw
+ repackage-l10n-te-win32-nightly/opt: fuUBPagwSw2UPjZWSqOxSA
+ repackage-l10n-te-win64-nightly/opt: aIyA8RSfTGW7XnFME6Xa5g
+ repackage-l10n-th-linux-nightly/opt: C6mWyhtkTe6jXIH_OJ1H-Q
+ repackage-l10n-th-linux64-nightly/opt: eyIrx-izRlWKffl85wIY7Q
+ repackage-l10n-th-macosx64-nightly/opt: LTwIuk3wQLqxtM7CBsH-Rw
+ repackage-l10n-th-win32-nightly/opt: NP8JuvFTTsiTBOtrgPhGbA
+ repackage-l10n-th-win64-nightly/opt: JrG7QlobSACd5-WW2FQdZA
+ repackage-l10n-tr-linux-nightly/opt: DJQpajaBTIi59c0zQUq2RA
+ repackage-l10n-tr-linux64-nightly/opt: SNBo9hNjR6CrW1_vMrJdig
+ repackage-l10n-tr-macosx64-nightly/opt: eHjj6UNEScOzV61G_eTKTQ
+ repackage-l10n-tr-win32-nightly/opt: XlxnDEXURhS_pCxqkRiVNw
+ repackage-l10n-tr-win64-nightly/opt: D-9aQDIyR8Wn0gKgMPGtYw
+ repackage-l10n-uk-linux-nightly/opt: Bo1J_7DMQDWUJCN1bBFZHg
+ repackage-l10n-uk-linux64-nightly/opt: DB-kHZjFR3GvYjeas_KHVw
+ repackage-l10n-uk-macosx64-nightly/opt: P3QhLSIxTDqgBP6PD9_KcQ
+ repackage-l10n-uk-win32-nightly/opt: WsBYsgIZSJiOX674U0Bgmw
+ repackage-l10n-uk-win64-nightly/opt: efaaKwJJTFGBeIlNhiCUHg
+ repackage-l10n-ur-linux-nightly/opt: a7_zVi-YSmq_rrw8_ZlR3Q
+ repackage-l10n-ur-linux64-nightly/opt: DX0rWZzwTPWOxqHrhHyrqA
+ repackage-l10n-ur-macosx64-nightly/opt: FH4jUbKySiW09eaFIvAm7g
+ repackage-l10n-ur-win32-nightly/opt: LWNTpMo-SIaQyKF2qmaatw
+ repackage-l10n-ur-win64-nightly/opt: WXcij_gSTimuGtkpoey0Ng
+ repackage-l10n-uz-linux-nightly/opt: Vm6Io74HTru5b8nOt19Aqw
+ repackage-l10n-uz-linux64-nightly/opt: ALG1qR27Q_yrW18FHqPRsw
+ repackage-l10n-uz-macosx64-nightly/opt: VwCNROBVSAaxkSxfC73jyw
+ repackage-l10n-uz-win32-nightly/opt: LknEL-m3TIuZEsSURWwCCw
+ repackage-l10n-uz-win64-nightly/opt: MGtV4GVCScW6J86bDn1MWg
+ repackage-l10n-vi-linux-nightly/opt: Rm1u8Iw4TbKYiFP3vJUsSA
+ repackage-l10n-vi-linux64-nightly/opt: Z_PbU86CSE6DYSDS0RTJGA
+ repackage-l10n-vi-macosx64-nightly/opt: W96ZZcUCS0aDdCb9-0OIhA
+ repackage-l10n-vi-win32-nightly/opt: Ca9SIhbNQlq6pnPBciC_Cg
+ repackage-l10n-vi-win64-nightly/opt: SpQJijEJTaWtM93Cb5JhQQ
+ repackage-l10n-xh-linux-nightly/opt: GZ8UYoYBS6WET3CiMtknLQ
+ repackage-l10n-xh-linux64-nightly/opt: IDl51PskQV-2Vu8Ax-4j7g
+ repackage-l10n-xh-macosx64-nightly/opt: OnIF72tQTR-AvO8LIsf6Rg
+ repackage-l10n-xh-win32-nightly/opt: O__L4JOOQmG7fQiAxUPn1g
+ repackage-l10n-xh-win64-nightly/opt: HfFRHqcuT86B_kSaXwOdQQ
+ repackage-l10n-zh-CN-linux-nightly/opt: NLNucfn3QOG6HP-hmZokew
+ repackage-l10n-zh-CN-linux64-nightly/opt: NIyH_N8lQxG4KBrtI-0C5g
+ repackage-l10n-zh-CN-macosx64-nightly/opt: KUNwvU8ZTVKVDtx804zCDQ
+ repackage-l10n-zh-CN-win32-nightly/opt: ZoWfzdicQtuW6Avo8tqkCw
+ repackage-l10n-zh-CN-win64-nightly/opt: crhHxmCSQd-4JHRZ8w4Fdw
+ repackage-l10n-zh-TW-linux-nightly/opt: ZdJDq5K1Tu2MW_oU2mDlnA
+ repackage-l10n-zh-TW-linux64-nightly/opt: HBCE8wT4QAmx7_PzMQC81A
+ repackage-l10n-zh-TW-macosx64-nightly/opt: ZYBrjx30S2OwzfWJKIzTdw
+ repackage-l10n-zh-TW-win32-nightly/opt: fUVNVY9ASXWh0jpeQFYWfw
+ repackage-l10n-zh-TW-win64-nightly/opt: YOiSIDw4S8aYT85CNFs4qA
+ repackage-linux-devedition-nightly/opt: Arj7FKKCQW69e48VzE_vmw
+ repackage-linux-nightly/opt: CyKdoPy8TsaMVctX6_fhgw
+ repackage-linux64-devedition-nightly/opt: JID74w9CRiOs9Jk3NWNjlg
+ repackage-linux64-nightly/opt: MnMQ3XqRTxCc7hbVLDKM0A
+ repackage-macosx64-devedition-nightly/opt: UU0aFcX7RFeeaOpr5XCtnw
+ repackage-macosx64-nightly/opt: G_aqbUCETm21mqoo7ytJVg
+ repackage-macosx64/opt: ZCv5yl_xRpinnb5yYHG6pQ
+ repackage-signing-l10n-ach-linux-nightly/opt: fAvC9v-XSLyJcrcpfwqZOw
+ repackage-signing-l10n-ach-linux64-nightly/opt: Vcv9E2lhSiGG2Cegj8KIew
+ repackage-signing-l10n-ach-macosx64-nightly/opt: AA89SyuTQLiwKmX489DQxA
+ repackage-signing-l10n-ach-win32-nightly/opt: EYCn4a0TQnyi2c7yc46ihQ
+ repackage-signing-l10n-ach-win64-nightly/opt: QS7WN3xeQ12urQGD3osz7w
+ repackage-signing-l10n-af-linux-nightly/opt: am-JImE0S0-r4C2-Ts37xQ
+ repackage-signing-l10n-af-linux64-nightly/opt: LVf3uAZ_SgegHwoqqsCwyA
+ repackage-signing-l10n-af-macosx64-nightly/opt: B4mc2R9YTECcx744jT5ZxA
+ repackage-signing-l10n-af-win32-nightly/opt: Q60fyODjRJWDkfVGtSGIaQ
+ repackage-signing-l10n-af-win64-nightly/opt: J4zfRenYQ_Ccvq7Pr4MfPw
+ repackage-signing-l10n-an-linux-nightly/opt: Ee2Br43vRjGEx-twKoqkVA
+ repackage-signing-l10n-an-linux64-nightly/opt: JiCbK76xS0KBXFTGM2Ikrg
+ repackage-signing-l10n-an-macosx64-nightly/opt: HY1J0vxQQvq8dD73IkgLDg
+ repackage-signing-l10n-an-win32-nightly/opt: LPid3B9tT_q18kCLR2ETuQ
+ repackage-signing-l10n-an-win64-nightly/opt: KL-EnxJcT8GJFwTkhnGE3g
+ repackage-signing-l10n-ar-linux-nightly/opt: IsMNN8fYSeuAwaPC-NBjNg
+ repackage-signing-l10n-ar-linux64-nightly/opt: YdAaaCeESzeOZJZhoU_FMA
+ repackage-signing-l10n-ar-macosx64-nightly/opt: FIWG4K0eRbmQqA09uzNkeg
+ repackage-signing-l10n-ar-win32-nightly/opt: c0OH4GtXSf6_a-_L1dmZDw
+ repackage-signing-l10n-ar-win64-nightly/opt: BLoCiPjISSuUPdCW4YWuhQ
+ repackage-signing-l10n-as-linux-nightly/opt: YEN4hgMlTwSH_xANAnCjEg
+ repackage-signing-l10n-as-linux64-nightly/opt: AY5cQf4hQJ2buzFOAKr87w
+ repackage-signing-l10n-as-macosx64-nightly/opt: P5dzdyn0SVK1vS5ZtG6pQw
+ repackage-signing-l10n-as-win32-nightly/opt: MSOAHn9VQ8yH2KUIarrDHg
+ repackage-signing-l10n-as-win64-nightly/opt: E3wSJw5BRnqSiHCWOtFxmw
+ repackage-signing-l10n-ast-linux-nightly/opt: Tnnfb3z1SDS4wlF8JkN3fA
+ repackage-signing-l10n-ast-linux64-nightly/opt: BJ-oW97DTXuIHYrtzUtEEQ
+ repackage-signing-l10n-ast-macosx64-nightly/opt: DdKMOQanTX6zibN387KZ8Q
+ repackage-signing-l10n-ast-win32-nightly/opt: Tr1FBxJHThaXQQCoYOYH0A
+ repackage-signing-l10n-ast-win64-nightly/opt: OJBRpZLkS8S_8uc00_7e6w
+ repackage-signing-l10n-az-linux-nightly/opt: CoA7XOfVQU-1aqtCxLkqfw
+ repackage-signing-l10n-az-linux64-nightly/opt: EA2HpsZZQ9qS4SGARaT3UA
+ repackage-signing-l10n-az-macosx64-nightly/opt: Etw7XdNPQU-bP0kmDMxHmQ
+ repackage-signing-l10n-az-win32-nightly/opt: DTAqU-5YRGScHpN5juWfDA
+ repackage-signing-l10n-az-win64-nightly/opt: T6BhjVuKRieM25d2Gp6-Ag
+ repackage-signing-l10n-be-linux-nightly/opt: bG09MC_ZRBeNm4cZDGMCEA
+ repackage-signing-l10n-be-linux64-nightly/opt: BXJpzNn0Qn2OU_KUM123VA
+ repackage-signing-l10n-be-macosx64-nightly/opt: AZCO-pbSR467nQBP8fxB1w
+ repackage-signing-l10n-be-win32-nightly/opt: V9LMRU3jR_6_YyBew8uo2Q
+ repackage-signing-l10n-be-win64-nightly/opt: UrmTQF0mTfq5LZlI8ntpYQ
+ repackage-signing-l10n-bg-linux-nightly/opt: EIM5cazgQOiGup2RVXkyTw
+ repackage-signing-l10n-bg-linux64-nightly/opt: bdiESmd2Tjy93v55aan7Sw
+ repackage-signing-l10n-bg-macosx64-nightly/opt: BvStobqwT3qZgpufMtiERw
+ repackage-signing-l10n-bg-win32-nightly/opt: fmn3N2msTuuvBOZ0xxJVuA
+ repackage-signing-l10n-bg-win64-nightly/opt: MwcrOu9ARumsoVjAa8SlGg
+ repackage-signing-l10n-bn-BD-linux-nightly/opt: cQ8DXc09QGaUuOR3OCTEVA
+ repackage-signing-l10n-bn-BD-linux64-nightly/opt: G9w4aKFRQOyqsdwY2Rxjmg
+ repackage-signing-l10n-bn-BD-macosx64-nightly/opt: SqjfJktvSeGPIFKENqg2hQ
+ repackage-signing-l10n-bn-BD-win32-nightly/opt: QUb2yI39TimxwOU_aWZsTQ
+ repackage-signing-l10n-bn-BD-win64-nightly/opt: YSg_a7PlRnmwjWNne90pZw
+ repackage-signing-l10n-bn-IN-linux-nightly/opt: WhJdTMn2Qc61S1IvTu9Wng
+ repackage-signing-l10n-bn-IN-linux64-nightly/opt: DeLYDeU4TTSdeCylUJX2lQ
+ repackage-signing-l10n-bn-IN-macosx64-nightly/opt: DV1Up2k2ROCkQOCvQ5sucQ
+ repackage-signing-l10n-bn-IN-win32-nightly/opt: ZWX7zun9Q3a8kCFXq_FGvw
+ repackage-signing-l10n-bn-IN-win64-nightly/opt: U8NFK_lWSUuosP3B0ZbVUA
+ repackage-signing-l10n-br-linux-nightly/opt: KG0SECCmRVGr1GIb_mseOQ
+ repackage-signing-l10n-br-linux64-nightly/opt: cIBNTZd_QEC2N6KYobb37A
+ repackage-signing-l10n-br-macosx64-nightly/opt: fBZp28bkTiG-rr2Nmdj9AA
+ repackage-signing-l10n-br-win32-nightly/opt: Pr_a2YYUST6y0tRqFKyfng
+ repackage-signing-l10n-br-win64-nightly/opt: Dp7uF75QTNSOgmm17dtMKg
+ repackage-signing-l10n-bs-linux-nightly/opt: GIY29le4RiqeaX4G33f6TA
+ repackage-signing-l10n-bs-linux64-nightly/opt: WgV6jv9yRJuBsxTPPQxd8Q
+ repackage-signing-l10n-bs-macosx64-nightly/opt: AQ0XYLyqQZmXU1mIFdTqgA
+ repackage-signing-l10n-bs-win32-nightly/opt: WLwkPj1wSJC1SyB_R4xmoQ
+ repackage-signing-l10n-bs-win64-nightly/opt: WHiqY6RHQSi8ZMhPvoGZLw
+ repackage-signing-l10n-ca-linux-nightly/opt: B7ETXAzbSP-pJU43PcsbPg
+ repackage-signing-l10n-ca-linux64-nightly/opt: ffj7REmzQFuTy5R48N3k5A
+ repackage-signing-l10n-ca-macosx64-nightly/opt: YQ0WddjLTSylYD-LN_J4Fw
+ repackage-signing-l10n-ca-win32-nightly/opt: eJZbY0VURN6iQZGvesJOtQ
+ repackage-signing-l10n-ca-win64-nightly/opt: FBzSCExGT1qGyYbuGznZdw
+ repackage-signing-l10n-cak-linux-nightly/opt: FECCg6xLQ3mCqifZljkjsA
+ repackage-signing-l10n-cak-linux64-nightly/opt: HXgAGOoWRWuR7lSDc1Stkg
+ repackage-signing-l10n-cak-macosx64-nightly/opt: EvIwe9S8SGSb42r4yVcXJA
+ repackage-signing-l10n-cak-win32-nightly/opt: Vax7C0UCRtGUfn284rqTZw
+ repackage-signing-l10n-cak-win64-nightly/opt: Q7W_ZDIgS4my0__KkIdycA
+ repackage-signing-l10n-cs-linux-nightly/opt: bFvM7CqXTXKBKcZePllGKQ
+ repackage-signing-l10n-cs-linux64-nightly/opt: GGdTDqvISnqKYHQuvxyTqA
+ repackage-signing-l10n-cs-macosx64-nightly/opt: exBXNztTSEGVluUGAPdUKw
+ repackage-signing-l10n-cs-win32-nightly/opt: Z_SSTQd9ToyIz7dh7L18_Q
+ repackage-signing-l10n-cs-win64-nightly/opt: FkT6jPX8R9KsRiN_qjbTvw
+ repackage-signing-l10n-cy-linux-nightly/opt: WDDoqBpZRx-hs2iIE5f1-A
+ repackage-signing-l10n-cy-linux64-nightly/opt: LZhIpSpRQVigRYby42F3aA
+ repackage-signing-l10n-cy-macosx64-nightly/opt: NZIO5NmXSv2rjcd5evXP_w
+ repackage-signing-l10n-cy-win32-nightly/opt: HKQck4vvR6aXWvrMzo-Mvg
+ repackage-signing-l10n-cy-win64-nightly/opt: AmVP2IJKS-SwqmCEP2DMeA
+ repackage-signing-l10n-da-linux-nightly/opt: embDNZtsR3-JZ0RxMvMZ4A
+ repackage-signing-l10n-da-linux64-nightly/opt: LEi5UmnoTUqTxgd3iIdUXw
+ repackage-signing-l10n-da-macosx64-nightly/opt: db1XS0qAQZ-HsGbgHc4PcQ
+ repackage-signing-l10n-da-win32-nightly/opt: VImlIRhBQ02G1Lf39liZXw
+ repackage-signing-l10n-da-win64-nightly/opt: YpyLBV8YQnS3mCfVa2UPRg
+ repackage-signing-l10n-de-linux-nightly/opt: OxMz2JgoS9uDmMvJoL_S9g
+ repackage-signing-l10n-de-linux64-nightly/opt: Bjf09fNwTteVe9HWaQdnlg
+ repackage-signing-l10n-de-macosx64-nightly/opt: JZ3X8RaXTNycGkgn1qXCiw
+ repackage-signing-l10n-de-win32-nightly/opt: UyQT6n5XQX-jcvp7SfI8RQ
+ repackage-signing-l10n-de-win64-nightly/opt: XI-EZLPnTBuFOthiIqEHKg
+ repackage-signing-l10n-dsb-linux-nightly/opt: cUbgJn7XRlaFkUzkr17FHQ
+ repackage-signing-l10n-dsb-linux64-nightly/opt: LZLYVtj6TVmmZgN2Z3uYCA
+ repackage-signing-l10n-dsb-macosx64-nightly/opt: LCO5Qr9HTtWj5P6FGWt9PA
+ repackage-signing-l10n-dsb-win32-nightly/opt: Kz7qIhSJQZC04Ss5AEvs3Q
+ repackage-signing-l10n-dsb-win64-nightly/opt: JLN5qdpIQKyEIXdHo7505Q
+ repackage-signing-l10n-el-linux-nightly/opt: HmjG_VhHQkO5kzkUaNdNRA
+ repackage-signing-l10n-el-linux64-nightly/opt: ZEfJdp6rRuW07gwNsELLvw
+ repackage-signing-l10n-el-macosx64-nightly/opt: em9DWRAvQOajAGy-syRAMA
+ repackage-signing-l10n-el-win32-nightly/opt: Dd0c5MPkRi64jaNdRHKcag
+ repackage-signing-l10n-el-win64-nightly/opt: MpN5_ySXR7SnEByPHRW7bQ
+ repackage-signing-l10n-en-CA-linux-nightly/opt: Y1RfVA46Q02RZlZAPcmuYA
+ repackage-signing-l10n-en-CA-linux64-nightly/opt: VC_Nipc9QpyRmVoCE6uBAg
+ repackage-signing-l10n-en-CA-macosx64-nightly/opt: de5nIASeRiSYuW9nn4su_g
+ repackage-signing-l10n-en-CA-win32-nightly/opt: WSusudwCTu2pgDfSpuoYNA
+ repackage-signing-l10n-en-CA-win64-nightly/opt: MpkzRo1TRL2G1GYNMTLhaA
+ repackage-signing-l10n-en-GB-linux-nightly/opt: XZrS8CPMQNKmYIIZMuVbAA
+ repackage-signing-l10n-en-GB-linux64-nightly/opt: Cvyc0ynEQciXutAejjvhQw
+ repackage-signing-l10n-en-GB-macosx64-nightly/opt: LI0GpvJ8T3S0Xua8xz1ATA
+ repackage-signing-l10n-en-GB-win32-nightly/opt: XcHCSDXXQCirDnGtGeEJlw
+ repackage-signing-l10n-en-GB-win64-nightly/opt: M-YRLPY4Q7SoUqCrMKzQFw
+ repackage-signing-l10n-en-ZA-linux-nightly/opt: eGZ3U8d_SkenPcNQ9M014g
+ repackage-signing-l10n-en-ZA-linux64-nightly/opt: E3QS042sRQS-CYm-0Rpykg
+ repackage-signing-l10n-en-ZA-macosx64-nightly/opt: YJEQ0J8wTxuxj1sPui6bjg
+ repackage-signing-l10n-en-ZA-win32-nightly/opt: PLpJM7lGTWG7gV5vrW-cFQ
+ repackage-signing-l10n-en-ZA-win64-nightly/opt: B_rzzxB4RpCzlzHlMGQ-iw
+ repackage-signing-l10n-eo-linux-nightly/opt: CVObj2zmQrSRQMLkuuMfFw
+ repackage-signing-l10n-eo-linux64-nightly/opt: N6yCt-x5RV2XWKWgNoCBkg
+ repackage-signing-l10n-eo-macosx64-nightly/opt: SIbU2KqQRFS9IesNFvn_8g
+ repackage-signing-l10n-eo-win32-nightly/opt: JUQqgb0QTZKaVNIm0Y-DfQ
+ repackage-signing-l10n-eo-win64-nightly/opt: VpPvf5B_TISpJykd72lE6w
+ repackage-signing-l10n-es-AR-linux-nightly/opt: QV5OAEc1QLyAo_H5q6Wa3g
+ repackage-signing-l10n-es-AR-linux64-nightly/opt: M_3_NBgiQCGiVOAJ2FMH4g
+ repackage-signing-l10n-es-AR-macosx64-nightly/opt: SRdYphzuRoG-8xRashlx8Q
+ repackage-signing-l10n-es-AR-win32-nightly/opt: Y05ckJtyRIufoiB-MfYm6g
+ repackage-signing-l10n-es-AR-win64-nightly/opt: URyztnYsSqq437UCCdeaVg
+ repackage-signing-l10n-es-CL-linux-nightly/opt: awFRPvBJSNC9epBZfMpSqw
+ repackage-signing-l10n-es-CL-linux64-nightly/opt: b0GI8a7rRuiZKwjHeNN6sw
+ repackage-signing-l10n-es-CL-macosx64-nightly/opt: NnLRv4iURJiT5WdymzjuVQ
+ repackage-signing-l10n-es-CL-win32-nightly/opt: Wp1NUM4hTHm2LKYEz-U3SQ
+ repackage-signing-l10n-es-CL-win64-nightly/opt: QtJWINsKRwCJ8zC1f_HPWw
+ repackage-signing-l10n-es-ES-linux-nightly/opt: BeiV8Ul2SoKtF7fckfqQPw
+ repackage-signing-l10n-es-ES-linux64-nightly/opt: WRskua4xQWawGoxS0NcViw
+ repackage-signing-l10n-es-ES-macosx64-nightly/opt: Jj8e62MXRWmYoKhshNM7_w
+ repackage-signing-l10n-es-ES-win32-nightly/opt: WJN6IKEkSSybnhWGvOO2Uw
+ repackage-signing-l10n-es-ES-win64-nightly/opt: SqUjd8tLQyW_gi1Om2ZjSA
+ repackage-signing-l10n-es-MX-linux-nightly/opt: YNBM3nbYQ5eu3qHW4VSSJQ
+ repackage-signing-l10n-es-MX-linux64-nightly/opt: VWR-e74tSo6Q4cA8vZY_pQ
+ repackage-signing-l10n-es-MX-macosx64-nightly/opt: PGxjjAkdRsqsxsbYJxv7kQ
+ repackage-signing-l10n-es-MX-win32-nightly/opt: VGnjDEE3Qaaqm7jhDO-t6Q
+ repackage-signing-l10n-es-MX-win64-nightly/opt: OmZSD6U5R-qweT7Uq1ViUA
+ repackage-signing-l10n-et-linux-nightly/opt: FR6X0YsCTvWC5g_NQcRUfw
+ repackage-signing-l10n-et-linux64-nightly/opt: bFMIGH9-SceXyaMyFVLnKg
+ repackage-signing-l10n-et-macosx64-nightly/opt: SjOCZW-eT6qNUX3--D3dpQ
+ repackage-signing-l10n-et-win32-nightly/opt: P1g6resMTU-f3e_5NE4G4A
+ repackage-signing-l10n-et-win64-nightly/opt: PNlOhZKnTYCAnKE-t9fUvA
+ repackage-signing-l10n-eu-linux-nightly/opt: Ur0dWGxKQamf725kzr0rPw
+ repackage-signing-l10n-eu-linux64-nightly/opt: PiLm411hRcu5uSTaYOPKGA
+ repackage-signing-l10n-eu-macosx64-nightly/opt: ZffeYcdRTjivgW9y_-fwqA
+ repackage-signing-l10n-eu-win32-nightly/opt: PZRfXzZbSqq6zTupcqcS1g
+ repackage-signing-l10n-eu-win64-nightly/opt: KDTOj9jPRneGVTsFFZ_fhQ
+ repackage-signing-l10n-fa-linux-nightly/opt: EnHWGU5vQHqAoi6CLm5MJA
+ repackage-signing-l10n-fa-linux64-nightly/opt: EXaPMxJERbG8rLnMj7ThMw
+ repackage-signing-l10n-fa-macosx64-nightly/opt: ZrDcqkOuSMC8jc86y83wBw
+ repackage-signing-l10n-fa-win32-nightly/opt: C70bd2c7QeOgl3sUwqajLg
+ repackage-signing-l10n-fa-win64-nightly/opt: H3gz0-W_S_OE4bDTgxn4aA
+ repackage-signing-l10n-ff-linux-nightly/opt: aFU5yQ0xQTOG3C6EqA2DnA
+ repackage-signing-l10n-ff-linux64-nightly/opt: D9LlLSK3Taq6aR7EFa3xJQ
+ repackage-signing-l10n-ff-macosx64-nightly/opt: ExMqoOc7RfOgynLUhefLvw
+ repackage-signing-l10n-ff-win32-nightly/opt: FBKUBTZTT6GJ5l76W5Wpqg
+ repackage-signing-l10n-ff-win64-nightly/opt: TQzZdsF0SDSqcYDcg7VF0Q
+ repackage-signing-l10n-fi-linux-nightly/opt: Im2MELuDS3ypYY4nhutNGQ
+ repackage-signing-l10n-fi-linux64-nightly/opt: Ybz5zYAHSICG7i1JEBrI0w
+ repackage-signing-l10n-fi-macosx64-nightly/opt: XKpTN4_WS56-a5uelNkk8g
+ repackage-signing-l10n-fi-win32-nightly/opt: FXL9FoFiSgCjJt_piKo3HA
+ repackage-signing-l10n-fi-win64-nightly/opt: H_n59Q1rRWWl2JrbpRiVPQ
+ repackage-signing-l10n-fr-linux-nightly/opt: dCsXvhruTiy_VVEGaO_g7Q
+ repackage-signing-l10n-fr-linux64-nightly/opt: Rf1GF6RSQi24jeXT1sng2A
+ repackage-signing-l10n-fr-macosx64-nightly/opt: Ov7BC2oGRqa2DN6Z1fqVUw
+ repackage-signing-l10n-fr-win32-nightly/opt: YvZQM4GbTmaWl2o8BwFNFA
+ repackage-signing-l10n-fr-win64-nightly/opt: ZcgljIn3RjSX7tzWDh0Wlg
+ repackage-signing-l10n-fy-NL-linux-nightly/opt: NaYI1w5FRvSYs9mzf69oOQ
+ repackage-signing-l10n-fy-NL-linux64-nightly/opt: WEGszjqcQraQzOohZHYBVA
+ repackage-signing-l10n-fy-NL-macosx64-nightly/opt: GXsPEBdfTMecJlY4uzHMfw
+ repackage-signing-l10n-fy-NL-win32-nightly/opt: WQ6Lc7_AR6ePWC_8OrfFWQ
+ repackage-signing-l10n-fy-NL-win64-nightly/opt: UnKjsArXSnuycIWOwICk5g
+ repackage-signing-l10n-ga-IE-linux-nightly/opt: HlanSStoSQisCfYjFJ304g
+ repackage-signing-l10n-ga-IE-linux64-nightly/opt: emJNUPLuTGiq1P1YsZqSow
+ repackage-signing-l10n-ga-IE-macosx64-nightly/opt: KB60jyxCRs2SgTuUXxIE7g
+ repackage-signing-l10n-ga-IE-win32-nightly/opt: cm-Zun5ORkS7nCnG-CF7xQ
+ repackage-signing-l10n-ga-IE-win64-nightly/opt: Oi8xiCkdTWixeQ83D5XQeQ
+ repackage-signing-l10n-gd-linux-nightly/opt: H0QhEvPSQQGqlPQ8mF3yiQ
+ repackage-signing-l10n-gd-linux64-nightly/opt: Vkoj_gZ6Rmm9Sfgj4GE-RQ
+ repackage-signing-l10n-gd-macosx64-nightly/opt: ZisYh3toT16YOhA_QO4JsQ
+ repackage-signing-l10n-gd-win32-nightly/opt: aSMT3jnGQkqRliES6VipGA
+ repackage-signing-l10n-gd-win64-nightly/opt: aD7k8NsBT3iUOntSvK-zyA
+ repackage-signing-l10n-gl-linux-nightly/opt: Nxl_JpQNQUyF_7XUmAVyag
+ repackage-signing-l10n-gl-linux64-nightly/opt: RmPK1DHwSCmOpD4NDqgC3g
+ repackage-signing-l10n-gl-macosx64-nightly/opt: LdAgA4mySNy_jDHSwg7l0Q
+ repackage-signing-l10n-gl-win32-nightly/opt: WrdPt7TDQI6SnHG0XN5RSA
+ repackage-signing-l10n-gl-win64-nightly/opt: FDM7nGsjSgCZdtV8zgVm2Q
+ repackage-signing-l10n-gn-linux-nightly/opt: daoVzRF-QtidceCwo3Ildw
+ repackage-signing-l10n-gn-linux64-nightly/opt: HTwz9neqS4CLb1ZPsep5nw
+ repackage-signing-l10n-gn-macosx64-nightly/opt: RMNQJDbGRomnhbrytM8h4w
+ repackage-signing-l10n-gn-win32-nightly/opt: c7etVvl_SfaNl1G-RahYiQ
+ repackage-signing-l10n-gn-win64-nightly/opt: N1k023rbRaOdZ7I3s5VUhg
+ repackage-signing-l10n-gu-IN-linux-nightly/opt: XA3ODce5TpiCL7nszUPHFg
+ repackage-signing-l10n-gu-IN-linux64-nightly/opt: FtH9c_t2QvijJJD5y81hsg
+ repackage-signing-l10n-gu-IN-macosx64-nightly/opt: bYgbrsS4QjqDPywcSFbRYQ
+ repackage-signing-l10n-gu-IN-win32-nightly/opt: Z0mwKLloRzO80Q8Ez4-ijg
+ repackage-signing-l10n-gu-IN-win64-nightly/opt: OOVftXGjQGut9YSahD72MA
+ repackage-signing-l10n-he-linux-nightly/opt: YnSRwyf_QF2AZG9mSR2x7w
+ repackage-signing-l10n-he-linux64-nightly/opt: RaraTuqjRsOrugv-xzcd3Q
+ repackage-signing-l10n-he-macosx64-nightly/opt: FR28kPGCRu-loL8jpnxzWw
+ repackage-signing-l10n-he-win32-nightly/opt: OprharuUT3C0Fjv0rPhoLQ
+ repackage-signing-l10n-he-win64-nightly/opt: avgh6K0JSdSkGlxxt_KZWA
+ repackage-signing-l10n-hi-IN-linux-nightly/opt: J-M7jKG4QTagxl5ZK0g4yQ
+ repackage-signing-l10n-hi-IN-linux64-nightly/opt: XMub522mTO6-Xmj0IVIiLQ
+ repackage-signing-l10n-hi-IN-macosx64-nightly/opt: RrfExwOoRbOwP9Y8e4kDYA
+ repackage-signing-l10n-hi-IN-win32-nightly/opt: Ehhwq7AnTkOtRxO8Cx6-qg
+ repackage-signing-l10n-hi-IN-win64-nightly/opt: ctz6JptjRmiw1iuzgVvdDQ
+ repackage-signing-l10n-hr-linux-nightly/opt: MCiBdnY7R0SmtvnqyuRjiQ
+ repackage-signing-l10n-hr-linux64-nightly/opt: RODaLKWFQyimVEi8Jr9cTA
+ repackage-signing-l10n-hr-macosx64-nightly/opt: ZhR3MPSsTT68DtibswW3Vg
+ repackage-signing-l10n-hr-win32-nightly/opt: FApws6mGR2u2n7Nk6pYk3A
+ repackage-signing-l10n-hr-win64-nightly/opt: WJv1dE3BRzqSyjNLZ9wlng
+ repackage-signing-l10n-hsb-linux-nightly/opt: LxSvJJVLTgOPDOVJ__zpMA
+ repackage-signing-l10n-hsb-linux64-nightly/opt: dmgFcrKZSVmr_hu6tdJFbQ
+ repackage-signing-l10n-hsb-macosx64-nightly/opt: Sk5VdTY3SPibeHQMrka8cg
+ repackage-signing-l10n-hsb-win32-nightly/opt: H9gHOd9qRTi1mbsPz06rkQ
+ repackage-signing-l10n-hsb-win64-nightly/opt: d8S8ciaqRA2BXi-7FrcC2w
+ repackage-signing-l10n-hu-linux-nightly/opt: FUs1-u4JQcSeUEB294DE8g
+ repackage-signing-l10n-hu-linux64-nightly/opt: Gs2Aq0oIRpmXhJKH7Wh_ag
+ repackage-signing-l10n-hu-macosx64-nightly/opt: Ko7ncwVXQueQBeE1nR8djw
+ repackage-signing-l10n-hu-win32-nightly/opt: Zvv_PpWsRgqT75xQm6HUkQ
+ repackage-signing-l10n-hu-win64-nightly/opt: NQAZfm7ZQ3Ozon7FKY1SHg
+ repackage-signing-l10n-hy-AM-linux-nightly/opt: bDFMzBiiTqusE5YoZEeG7Q
+ repackage-signing-l10n-hy-AM-linux64-nightly/opt: P8ZxpWIjSnWONhSu8hdXaw
+ repackage-signing-l10n-hy-AM-macosx64-nightly/opt: dMh3GbSXQl2Brg7w5FsQ_Q
+ repackage-signing-l10n-hy-AM-win32-nightly/opt: c3U4wan4QQCxWhFNkUvMsg
+ repackage-signing-l10n-hy-AM-win64-nightly/opt: U5XKWNmURee2K-z12INTIQ
+ repackage-signing-l10n-ia-linux-nightly/opt: fZ-J3BtuQcaGQYSsIUeUsg
+ repackage-signing-l10n-ia-linux64-nightly/opt: OEc0vEJAQp6xzfads9W7aQ
+ repackage-signing-l10n-ia-macosx64-nightly/opt: GHKsHFH4RNKK0aUmK-_05Q
+ repackage-signing-l10n-ia-win32-nightly/opt: MEpxKmvKS2Wmccm2MApy7g
+ repackage-signing-l10n-ia-win64-nightly/opt: O4LglEFKQWCkFZGydQIEEg
+ repackage-signing-l10n-id-linux-nightly/opt: EG6zXOfjRie1AEarZqjOTw
+ repackage-signing-l10n-id-linux64-nightly/opt: FlNqV5sVRV2eInASttHinA
+ repackage-signing-l10n-id-macosx64-nightly/opt: FE6TGYbMSRSxK0K8R06Fxw
+ repackage-signing-l10n-id-win32-nightly/opt: IgwsoU7aTy2d_FsSTMpozw
+ repackage-signing-l10n-id-win64-nightly/opt: MwA-kd-aSoqK0ZIoM2YhMg
+ repackage-signing-l10n-is-linux-nightly/opt: dUZDBfbmTBq-rG5xhGb5Lg
+ repackage-signing-l10n-is-linux64-nightly/opt: G37ZmO4GT32gaJbtA-_QZA
+ repackage-signing-l10n-is-macosx64-nightly/opt: EAdYQypDRK2BTg0aW1uOiQ
+ repackage-signing-l10n-is-win32-nightly/opt: fysAq2OeS22LTAIXIN9Zuw
+ repackage-signing-l10n-is-win64-nightly/opt: fu_f5jMIToOI-oPRsoB-0Q
+ repackage-signing-l10n-it-linux-nightly/opt: GQOCqNOKRc6vwLBd8PjOJA
+ repackage-signing-l10n-it-linux64-nightly/opt: GF3JJRvtQXeEcSAYq2xG3w
+ repackage-signing-l10n-it-macosx64-nightly/opt: HhdDHXvRSOqm0Nxuq7_JUQ
+ repackage-signing-l10n-it-win32-nightly/opt: Y6KQGGPvQVybpo8oMkmiEw
+ repackage-signing-l10n-it-win64-nightly/opt: Fy3zc0nATdqvxWpfEsnj4w
+ repackage-signing-l10n-ja-JP-mac-macosx64-nightly/opt: C9PxyYU0TZejPA-zkPtyyQ
+ repackage-signing-l10n-ja-linux-nightly/opt: YBFw-qXUSdqBScRoUjse5A
+ repackage-signing-l10n-ja-linux64-nightly/opt: UogzCsibT9i5aq3sIDNgXQ
+ repackage-signing-l10n-ja-win32-nightly/opt: BROb3yrVR6665AUY3kFGKw
+ repackage-signing-l10n-ja-win64-nightly/opt: dkPU_BRbQB2z3q7bsLYJpw
+ repackage-signing-l10n-ka-linux-nightly/opt: IR9A3T3RTHClzxaMFM-9LQ
+ repackage-signing-l10n-ka-linux64-nightly/opt: cnEq3S7yRCSwInRR7eLAGw
+ repackage-signing-l10n-ka-macosx64-nightly/opt: R12QoLAaRDyLVM1L6HQTLA
+ repackage-signing-l10n-ka-win32-nightly/opt: RIIsC0fwQVy4w3ttCMsqyw
+ repackage-signing-l10n-ka-win64-nightly/opt: aZaHxAtdSoeHjsUIDCuoow
+ repackage-signing-l10n-kab-linux-nightly/opt: HBrf8xdIQQWdZ3e2SU9xJg
+ repackage-signing-l10n-kab-linux64-nightly/opt: ElH_7MHaTRyo8nPqJai7YA
+ repackage-signing-l10n-kab-macosx64-nightly/opt: RdC6ancLTSyH7HCcNWJlEQ
+ repackage-signing-l10n-kab-win32-nightly/opt: J1xfdHNqQbCLAL4ZtcObrQ
+ repackage-signing-l10n-kab-win64-nightly/opt: HSjm2HRdQk2Uf1cFBIz7Ag
+ repackage-signing-l10n-kk-linux-nightly/opt: O4R_hSD0RzSiSPdMoVXXxw
+ repackage-signing-l10n-kk-linux64-nightly/opt: YGmROL5FT5OI2IZPsQIbmw
+ repackage-signing-l10n-kk-macosx64-nightly/opt: SOgODyUATyySLB9FROr-_A
+ repackage-signing-l10n-kk-win32-nightly/opt: NwUgx1BNSoKJVQ2V-b6Deg
+ repackage-signing-l10n-kk-win64-nightly/opt: Hb9mKZzCS9uqnsQMIMbO5g
+ repackage-signing-l10n-km-linux-nightly/opt: aJDL1w16RcKL4tsZy96T_w
+ repackage-signing-l10n-km-linux64-nightly/opt: Fr4n-E_IQ3uV3AWAmFGDAg
+ repackage-signing-l10n-km-macosx64-nightly/opt: G89rnmgmSVm5_uUvVCk9LA
+ repackage-signing-l10n-km-win32-nightly/opt: HyL31tMiSeih88t6FR0twA
+ repackage-signing-l10n-km-win64-nightly/opt: I67Qsyb1RQOGuD_Nx3I39Q
+ repackage-signing-l10n-kn-linux-nightly/opt: Xvuf79n4R2-9l-nNREzLjg
+ repackage-signing-l10n-kn-linux64-nightly/opt: dBhHzmYPReufVdMHsy0PMA
+ repackage-signing-l10n-kn-macosx64-nightly/opt: V5aojOzQTDeXRH-xvwr7vg
+ repackage-signing-l10n-kn-win32-nightly/opt: bOxK5FMgRnii_WYmu03fHQ
+ repackage-signing-l10n-kn-win64-nightly/opt: T8tOcuK8TSSZjztG0AICZA
+ repackage-signing-l10n-ko-linux-nightly/opt: TgHxOUXpQtmVTAfKoJ2dXQ
+ repackage-signing-l10n-ko-linux64-nightly/opt: I3QCE3X3Sai0WeJVmlrRxw
+ repackage-signing-l10n-ko-macosx64-nightly/opt: CsOevdopQIKWqcRyZgmnPA
+ repackage-signing-l10n-ko-win32-nightly/opt: NllCbxDIQvCf8Wh_PrP3Qw
+ repackage-signing-l10n-ko-win64-nightly/opt: XiIsCmx3RoGYumt4r5eWqQ
+ repackage-signing-l10n-lij-linux-nightly/opt: cgyD5HpbQuGmSmkSbNaqew
+ repackage-signing-l10n-lij-linux64-nightly/opt: IVxhNsWeRB-MXusTX4Flfw
+ repackage-signing-l10n-lij-macosx64-nightly/opt: OIOEaN_rTs-DmhXl8kYgRA
+ repackage-signing-l10n-lij-win32-nightly/opt: HgjL4yaQSASey25wLeIPZg
+ repackage-signing-l10n-lij-win64-nightly/opt: Fwh8HMxzRPuIu39mu350sA
+ repackage-signing-l10n-lt-linux-nightly/opt: JqiPIufKSKOAtTbpy_xVVQ
+ repackage-signing-l10n-lt-linux64-nightly/opt: LsldhnzvStWK9L5zfGZRwg
+ repackage-signing-l10n-lt-macosx64-nightly/opt: XYiyiueMRr2qT6rrxqZaWA
+ repackage-signing-l10n-lt-win32-nightly/opt: c64_384bShGmTegcFeSiJw
+ repackage-signing-l10n-lt-win64-nightly/opt: Q8EnRWg_SNe6uMR8ay8l4Q
+ repackage-signing-l10n-lv-linux-nightly/opt: Mp7TIGVlRqyuT56pirDSEw
+ repackage-signing-l10n-lv-linux64-nightly/opt: Pjgt6wL0RAmhWBoCMefK9Q
+ repackage-signing-l10n-lv-macosx64-nightly/opt: X0xSuZtpTwyZ0A9LjSdXvw
+ repackage-signing-l10n-lv-win32-nightly/opt: Cy9Ml8QmSDaEf61EDNT2PQ
+ repackage-signing-l10n-lv-win64-nightly/opt: ag89pZ48QZK-Nq8c1fNKxg
+ repackage-signing-l10n-mai-linux-nightly/opt: FoY6yMkHRjWeu6Yf5SrLTA
+ repackage-signing-l10n-mai-linux64-nightly/opt: SSFTQQBNSsOwH1WIDNBkaA
+ repackage-signing-l10n-mai-macosx64-nightly/opt: ZWaAw49qRmqx_M_QFrsh5Q
+ repackage-signing-l10n-mai-win32-nightly/opt: B9QkiVHZQdeGt2Y0yeoOIQ
+ repackage-signing-l10n-mai-win64-nightly/opt: docw-cfLSbmXISzSemCjfA
+ repackage-signing-l10n-mk-linux-nightly/opt: E1Lobwu6Qj-TK7vUEBieWQ
+ repackage-signing-l10n-mk-linux64-nightly/opt: asLQLhdeSnqIfA0poK9XmQ
+ repackage-signing-l10n-mk-macosx64-nightly/opt: agGtxVazTH2LZLFymhl5pQ
+ repackage-signing-l10n-mk-win32-nightly/opt: TwCxFBwVR5ms5HTPT8ZWbQ
+ repackage-signing-l10n-mk-win64-nightly/opt: KotWI6a-T9aJQWDhc-BNLw
+ repackage-signing-l10n-ml-linux-nightly/opt: eybshgJlThC8PlZninbjIA
+ repackage-signing-l10n-ml-linux64-nightly/opt: Byf2NlYsT8WclMUd4QBqSA
+ repackage-signing-l10n-ml-macosx64-nightly/opt: J4Zhgb29QwykOW1IERgB_w
+ repackage-signing-l10n-ml-win32-nightly/opt: PaS33ty9RrW4FfiEg45RMQ
+ repackage-signing-l10n-ml-win64-nightly/opt: QukXemWNShCQbAl_wCRnBQ
+ repackage-signing-l10n-mr-linux-nightly/opt: NlV_mAieSJKnDyz9ndEwbQ
+ repackage-signing-l10n-mr-linux64-nightly/opt: RuOvEb1VTi-ml6aI-sfYMQ
+ repackage-signing-l10n-mr-macosx64-nightly/opt: XjOrznhURPW1Y1d3HniA1Q
+ repackage-signing-l10n-mr-win32-nightly/opt: FiS93983QReWU0yoqCzSjA
+ repackage-signing-l10n-mr-win64-nightly/opt: Ra6jpjO6SVysSHQQyRKKxw
+ repackage-signing-l10n-ms-linux-nightly/opt: IkWCAqSATn6KzCiCIO_MQg
+ repackage-signing-l10n-ms-linux64-nightly/opt: DEhEX_U3SxaZf66XbbGgvQ
+ repackage-signing-l10n-ms-macosx64-nightly/opt: URhAyN6yQKiUDgiRIgWjmg
+ repackage-signing-l10n-ms-win32-nightly/opt: UBbEOxtVQ-K3z8-lXB-LAQ
+ repackage-signing-l10n-ms-win64-nightly/opt: N8PHng_dSgKrnjESg8zcmQ
+ repackage-signing-l10n-my-linux-nightly/opt: czIstd1zQ5inAy5MDdeUKg
+ repackage-signing-l10n-my-linux64-nightly/opt: fSZ9mLLOQbWBGt-wS3YKag
+ repackage-signing-l10n-my-macosx64-nightly/opt: GmNYP5D5T4-ocMuxQMX_HA
+ repackage-signing-l10n-my-win32-nightly/opt: KDmjFn_NT0Gf829rWCnl-w
+ repackage-signing-l10n-my-win64-nightly/opt: P2Q6eNOPRpqLXG3izXTaOw
+ repackage-signing-l10n-nb-NO-linux-nightly/opt: Uz451_GpSZSI-nsyhckHvw
+ repackage-signing-l10n-nb-NO-linux64-nightly/opt: aLv6kEmRQEumaI8kGqF--Q
+ repackage-signing-l10n-nb-NO-macosx64-nightly/opt: Uv4gzu0tReirE9Aa4DSQ_Q
+ repackage-signing-l10n-nb-NO-win32-nightly/opt: YGskM4vPS92AXUu45aK5Pg
+ repackage-signing-l10n-nb-NO-win64-nightly/opt: KUT6k1J7TV2bzx9Z0PuCug
+ repackage-signing-l10n-ne-NP-linux-nightly/opt: ToQXXFHCR1KmTIVuwrbm8w
+ repackage-signing-l10n-ne-NP-linux64-nightly/opt: PE6tUHWtQYKjLxwfnR033g
+ repackage-signing-l10n-ne-NP-macosx64-nightly/opt: TgjQS8qeRc2L4nzXqrOewg
+ repackage-signing-l10n-ne-NP-win32-nightly/opt: Ycbh2N3nRJup1fPR_KiN-Q
+ repackage-signing-l10n-ne-NP-win64-nightly/opt: OPyxr0ngTWCLCLs9KOA7jA
+ repackage-signing-l10n-nl-linux-nightly/opt: aIfsv17ySvy_zaIzSQYwuQ
+ repackage-signing-l10n-nl-linux64-nightly/opt: Hm9pHNSWQ-C5LBpDAA1E7g
+ repackage-signing-l10n-nl-macosx64-nightly/opt: FktJwfyeQ3isilDuTGYnfw
+ repackage-signing-l10n-nl-win32-nightly/opt: F0WtnMzXTD6U5pzqh9UOjw
+ repackage-signing-l10n-nl-win64-nightly/opt: GDe6TQImSBijxzKgJfKnkA
+ repackage-signing-l10n-nn-NO-linux-nightly/opt: BF2TKc91TU-ZVpeEE2tQIw
+ repackage-signing-l10n-nn-NO-linux64-nightly/opt: VWnaXteHQpmCzstqxSlAGQ
+ repackage-signing-l10n-nn-NO-macosx64-nightly/opt: LQ6dUVuHSiGHoYFW2aUPxA
+ repackage-signing-l10n-nn-NO-win32-nightly/opt: U2uAP2SDR9C88tnuODqqyA
+ repackage-signing-l10n-nn-NO-win64-nightly/opt: Q8ni759hSJqNGGI4Xji9FA
+ repackage-signing-l10n-oc-linux-nightly/opt: RzLr8Kz1SHOLRO7SXZHBkQ
+ repackage-signing-l10n-oc-linux64-nightly/opt: BCLHhPfETEm3BwXec23hbg
+ repackage-signing-l10n-oc-macosx64-nightly/opt: NtDyw74WT6iWrp9jAECTyQ
+ repackage-signing-l10n-oc-win32-nightly/opt: WTDZqWmOQTq2xWLWpN2EDg
+ repackage-signing-l10n-oc-win64-nightly/opt: L5qQyYi3TIuZknI_bFdeNQ
+ repackage-signing-l10n-or-linux-nightly/opt: XWNk5lJ2R4iZsomI3EIR5Q
+ repackage-signing-l10n-or-linux64-nightly/opt: NVP3TNXgSze8Hhw7Jyk9Lg
+ repackage-signing-l10n-or-macosx64-nightly/opt: OKMmnNWPQuiwV19oZkRRPg
+ repackage-signing-l10n-or-win32-nightly/opt: DzWbsKXuQmupdRPwQH-1JQ
+ repackage-signing-l10n-or-win64-nightly/opt: Pp0kV909SkyT-fzeuiyzrw
+ repackage-signing-l10n-pa-IN-linux-nightly/opt: Mdon0UCKQJitX6iAJYeyWA
+ repackage-signing-l10n-pa-IN-linux64-nightly/opt: ZmTqI_SIQeufS3J5e9SpuA
+ repackage-signing-l10n-pa-IN-macosx64-nightly/opt: G4NtfQxQRYyKqrJFe0iJ3g
+ repackage-signing-l10n-pa-IN-win32-nightly/opt: ALOeqG8HRwOwLrJ6blERsQ
+ repackage-signing-l10n-pa-IN-win64-nightly/opt: LEV2YxQiRvubB8L8rTX58Q
+ repackage-signing-l10n-pl-linux-nightly/opt: J01EqjQgTzSg1nDyit2XCQ
+ repackage-signing-l10n-pl-linux64-nightly/opt: Z7K1EVzOQsuhoVslGNKpyQ
+ repackage-signing-l10n-pl-macosx64-nightly/opt: M4CO4ZXZTui_kULw0A5gtw
+ repackage-signing-l10n-pl-win32-nightly/opt: Lbc1UXP8S02e5ECJOyqhUw
+ repackage-signing-l10n-pl-win64-nightly/opt: GPukNjHoTGO2xtzlvkUyXg
+ repackage-signing-l10n-pt-BR-linux-nightly/opt: VCGfn_WgRxCaMYkt2BBWMg
+ repackage-signing-l10n-pt-BR-linux64-nightly/opt: U5zbN9l6R62HMDzien3yFQ
+ repackage-signing-l10n-pt-BR-macosx64-nightly/opt: Ce1_BqusQJGgEy50VsI-9w
+ repackage-signing-l10n-pt-BR-win32-nightly/opt: LSNp0olKRqSh-MfsXMgEoQ
+ repackage-signing-l10n-pt-BR-win64-nightly/opt: L3KtGwigRumAqHIKffyt8g
+ repackage-signing-l10n-pt-PT-linux-nightly/opt: MHVhHbpAQ3uFAThZGD87IQ
+ repackage-signing-l10n-pt-PT-linux64-nightly/opt: cebUSNArTRm_XKysnAlrGQ
+ repackage-signing-l10n-pt-PT-macosx64-nightly/opt: FqivsVu8TO-IlmcvV4Jx-w
+ repackage-signing-l10n-pt-PT-win32-nightly/opt: LvdCpEuQTWq4ec-sVo7gXQ
+ repackage-signing-l10n-pt-PT-win64-nightly/opt: ZgMBksMqRMe_WeWhFWj_qA
+ repackage-signing-l10n-rm-linux-nightly/opt: BPshY3BXTmSC_aaaMSQpDQ
+ repackage-signing-l10n-rm-linux64-nightly/opt: PtiYBGGPRXeA82FdLOgiTg
+ repackage-signing-l10n-rm-macosx64-nightly/opt: HbABCQT1TWSry_IY5xyFqw
+ repackage-signing-l10n-rm-win32-nightly/opt: e75INMJCRzSlFYIEtc6RTQ
+ repackage-signing-l10n-rm-win64-nightly/opt: SDD7N3RDRSSDGkuWUtj1ug
+ repackage-signing-l10n-ro-linux-nightly/opt: BMkD1FdQTV6dKZYjKSZd0Q
+ repackage-signing-l10n-ro-linux64-nightly/opt: GoVt7km5SrGXatroWD13HA
+ repackage-signing-l10n-ro-macosx64-nightly/opt: XWuogkFhR4WHNVSMsL1EkA
+ repackage-signing-l10n-ro-win32-nightly/opt: Vu-GcguRSlm4FvNvAMECmQ
+ repackage-signing-l10n-ro-win64-nightly/opt: FByAvd_vSl-U_nJFybknIg
+ repackage-signing-l10n-ru-linux-nightly/opt: dsTYv72eTmaI2t9x1OtKjQ
+ repackage-signing-l10n-ru-linux64-nightly/opt: OSWy94YKQ1qhmSuh3B9BZA
+ repackage-signing-l10n-ru-macosx64-nightly/opt: MwFsHXQzRtKuMlDxyxoZaA
+ repackage-signing-l10n-ru-win32-nightly/opt: fKW6v-JoSNOnXp8bzFgMvA
+ repackage-signing-l10n-ru-win64-nightly/opt: Z2Ho3ejeQ8CTtO_2eVmnUw
+ repackage-signing-l10n-si-linux-nightly/opt: PaksFHgeSv2LZYQ0YhVUyw
+ repackage-signing-l10n-si-linux64-nightly/opt: S4-FC9FTRGeGAotq5_glvg
+ repackage-signing-l10n-si-macosx64-nightly/opt: G9VFPjEfTESGR3AT_XyHjA
+ repackage-signing-l10n-si-win32-nightly/opt: OnY6eoabT8eIp5Row3r9ig
+ repackage-signing-l10n-si-win64-nightly/opt: Cl7o0DCPSSq7kYBhDkkuyg
+ repackage-signing-l10n-sk-linux-nightly/opt: IlMxj92ZTJO3LE902Zh4Og
+ repackage-signing-l10n-sk-linux64-nightly/opt: FG4SfiAiRVef4pqv68rxrw
+ repackage-signing-l10n-sk-macosx64-nightly/opt: b-j1KNGMSE-Y70SoxIYdyQ
+ repackage-signing-l10n-sk-win32-nightly/opt: ZuXtme5kTLi5a_oJ6Lq9tg
+ repackage-signing-l10n-sk-win64-nightly/opt: ORLqNhKZTVmcIbGRJufb-Q
+ repackage-signing-l10n-sl-linux-nightly/opt: UZImpl0sRcSjiQ3jB0Ha3w
+ repackage-signing-l10n-sl-linux64-nightly/opt: CB0gqr-FTLiLwIFfYeq4TA
+ repackage-signing-l10n-sl-macosx64-nightly/opt: KKgxkMk9Rfi0RmSdjgfH1Q
+ repackage-signing-l10n-sl-win32-nightly/opt: cRthbStnSsysXqmuYIHbcw
+ repackage-signing-l10n-sl-win64-nightly/opt: BcdA2qP6TF2B5P5aV7OgDg
+ repackage-signing-l10n-son-linux-nightly/opt: e4iMtl1TQkakm83goL1tfQ
+ repackage-signing-l10n-son-linux64-nightly/opt: Pd58HHvJS2O4G0486Kqd7Q
+ repackage-signing-l10n-son-macosx64-nightly/opt: Aug81CVyQIyQQAHXvUZPpA
+ repackage-signing-l10n-son-win32-nightly/opt: aC-ve3ZUQkiPz_hwpJaboA
+ repackage-signing-l10n-son-win64-nightly/opt: RI-9o39QRfCRR8szkUlfVg
+ repackage-signing-l10n-sq-linux-nightly/opt: MLx3FTboTviFaqk1cw-jLQ
+ repackage-signing-l10n-sq-linux64-nightly/opt: HAcbdb_qSkm0hRJ8BnG1sQ
+ repackage-signing-l10n-sq-macosx64-nightly/opt: dqdQNHXXRxuVLGIKkxJLkw
+ repackage-signing-l10n-sq-win32-nightly/opt: XuEGjvNGSqiGPcM-DDE6dg
+ repackage-signing-l10n-sq-win64-nightly/opt: fbM3JchbRUmJw2dIZTXpxA
+ repackage-signing-l10n-sr-linux-nightly/opt: IQserNFITOyzXGKqhIXr3g
+ repackage-signing-l10n-sr-linux64-nightly/opt: RaNHvZ9TRTOOvZEo5N0orw
+ repackage-signing-l10n-sr-macosx64-nightly/opt: er_hc5gWSYq_DGbTLoSl4A
+ repackage-signing-l10n-sr-win32-nightly/opt: EPwJGLqjScyFPTy5M4PWSg
+ repackage-signing-l10n-sr-win64-nightly/opt: CgVXhU0pSOuZs0Cw4xYF-A
+ repackage-signing-l10n-sv-SE-linux-nightly/opt: Qj23vdxRTJ6H9Wj5jE3H7g
+ repackage-signing-l10n-sv-SE-linux64-nightly/opt: JQHXtHaMR_G3LgvO_vXnyA
+ repackage-signing-l10n-sv-SE-macosx64-nightly/opt: aexDsKYfRkuy_m54BJGJjQ
+ repackage-signing-l10n-sv-SE-win32-nightly/opt: fGQWB7TBRzWAYrTxCwGu9g
+ repackage-signing-l10n-sv-SE-win64-nightly/opt: aON70cR-QaSDFr8NZbo2LQ
+ repackage-signing-l10n-ta-linux-nightly/opt: VwwL-qsQTHWaNNxQoM5tGw
+ repackage-signing-l10n-ta-linux64-nightly/opt: OohKPshiT4WalOOF5HmNoQ
+ repackage-signing-l10n-ta-macosx64-nightly/opt: e18y95xwRNmG7m3O69I1OA
+ repackage-signing-l10n-ta-win32-nightly/opt: fCbrPmsKQ-25D4xgWyxgAw
+ repackage-signing-l10n-ta-win64-nightly/opt: QbNe3s1DR9aGOK8yc8WSCw
+ repackage-signing-l10n-te-linux-nightly/opt: ONIGk6PsRfKA2VA3pXBwZg
+ repackage-signing-l10n-te-linux64-nightly/opt: EpI_Vuz_Rcyyq0Rb6kFF5w
+ repackage-signing-l10n-te-macosx64-nightly/opt: IaTXFijUQNiZkCVHc3f_Tw
+ repackage-signing-l10n-te-win32-nightly/opt: a2fPHiHzTwCEU4wSRYclVQ
+ repackage-signing-l10n-te-win64-nightly/opt: MF5AajKMSRylw6phV7WE1g
+ repackage-signing-l10n-th-linux-nightly/opt: P3X9HvNmRja_ZYc8gtqg1Q
+ repackage-signing-l10n-th-linux64-nightly/opt: ffihSgezS9-ISkssvI2iew
+ repackage-signing-l10n-th-macosx64-nightly/opt: MPsEEWgKTo-zS-o4sxpG4Q
+ repackage-signing-l10n-th-win32-nightly/opt: K2qf3zKPQ1mdapLK5_DAbw
+ repackage-signing-l10n-th-win64-nightly/opt: CyC0JD95TXm26806U27b1A
+ repackage-signing-l10n-tr-linux-nightly/opt: HR9Fl2LGRa-0W_P24T6fRw
+ repackage-signing-l10n-tr-linux64-nightly/opt: SD13YpX3TUG3Lw1gsjb8zQ
+ repackage-signing-l10n-tr-macosx64-nightly/opt: QUb0MdbkTpyahsH1slF-DQ
+ repackage-signing-l10n-tr-win32-nightly/opt: VpUaHXCETO-DOW3Y-vkNyg
+ repackage-signing-l10n-tr-win64-nightly/opt: dLHPdVp7QmCU-jKlqZd3Hg
+ repackage-signing-l10n-uk-linux-nightly/opt: V2vDmIK-S8GgjSXMR6YbzQ
+ repackage-signing-l10n-uk-linux64-nightly/opt: Dav8-GQHTqiFV3aSZ9sMCg
+ repackage-signing-l10n-uk-macosx64-nightly/opt: Lnvq6TVoQA63u_aLCQ93zw
+ repackage-signing-l10n-uk-win32-nightly/opt: TEqTzmZUQbi1W6tVkloVsA
+ repackage-signing-l10n-uk-win64-nightly/opt: Ash05TvXQCqBgdx19un9gw
+ repackage-signing-l10n-ur-linux-nightly/opt: OvpD5KfFSF-qpk4m4aLmoA
+ repackage-signing-l10n-ur-linux64-nightly/opt: DUgCh61WSvy0DGFfHSkhLw
+ repackage-signing-l10n-ur-macosx64-nightly/opt: SlvzjZlsQgm_LvXCVVnUxw
+ repackage-signing-l10n-ur-win32-nightly/opt: VirVsGi2RKq128rWrvqqcA
+ repackage-signing-l10n-ur-win64-nightly/opt: KZE9oP_ARECt_pU9Q2pSyQ
+ repackage-signing-l10n-uz-linux-nightly/opt: NHaDTIGWQZqeUE1LrRaQDg
+ repackage-signing-l10n-uz-linux64-nightly/opt: Kq9XVvc_RwW0NetwehWDBg
+ repackage-signing-l10n-uz-macosx64-nightly/opt: ZfTiJQksTmyoXl0vDB8blg
+ repackage-signing-l10n-uz-win32-nightly/opt: SsNjefr8RJqViE_dbyFYdA
+ repackage-signing-l10n-uz-win64-nightly/opt: HCOlO3s-QOGysmnC48Q9UQ
+ repackage-signing-l10n-vi-linux-nightly/opt: N4-T5TruSzG5q3EcRglUCg
+ repackage-signing-l10n-vi-linux64-nightly/opt: fhUonR6GRkCwQgbCcbDH3w
+ repackage-signing-l10n-vi-macosx64-nightly/opt: Q3SD4lTZTzami965wJCO5Q
+ repackage-signing-l10n-vi-win32-nightly/opt: NRX5qZWrR_2KxjGXD0VGEQ
+ repackage-signing-l10n-vi-win64-nightly/opt: OpcvBdhZSoGBemViPKcJ1A
+ repackage-signing-l10n-xh-linux-nightly/opt: UN4MADOSTMqaox1_H0_a8A
+ repackage-signing-l10n-xh-linux64-nightly/opt: JtzE-iVGRJSwGhPNad3odg
+ repackage-signing-l10n-xh-macosx64-nightly/opt: AmKafOKCQOaw9PqKVXohKg
+ repackage-signing-l10n-xh-win32-nightly/opt: CXwPEeK3TUqt0fd3cd409g
+ repackage-signing-l10n-xh-win64-nightly/opt: dEVC2BDgTAy8-fYNk6yM9w
+ repackage-signing-l10n-zh-CN-linux-nightly/opt: WKcWbFPQQIy3twadRiIqdQ
+ repackage-signing-l10n-zh-CN-linux64-nightly/opt: SP56bmc3TuCvKDj7h4DMmA
+ repackage-signing-l10n-zh-CN-macosx64-nightly/opt: OjpGG6IlR7mU12jE_gVg7A
+ repackage-signing-l10n-zh-CN-win32-nightly/opt: b8ZMM5XfQkqusBjZTdjLCg
+ repackage-signing-l10n-zh-CN-win64-nightly/opt: G8tCfMYORW2qfTQ06aDt0Q
+ repackage-signing-l10n-zh-TW-linux-nightly/opt: LXr2D7loStyP0BYA3tdw4w
+ repackage-signing-l10n-zh-TW-linux64-nightly/opt: eI9lnZGWRGekEfmfOACYaQ
+ repackage-signing-l10n-zh-TW-macosx64-nightly/opt: E012hTBQSeOGE0eLxkGXXA
+ repackage-signing-l10n-zh-TW-win32-nightly/opt: SOqmmY0RSKm4_siOzGkfiQ
+ repackage-signing-l10n-zh-TW-win64-nightly/opt: Kg9aPh0-SbGebCvimwkobA
+ repackage-signing-linux-devedition-nightly/opt: R7N3rhWzTcqbdTtKgy-mFA
+ repackage-signing-linux-nightly/opt: ci0SN3DxSamIIh_R5KYV9w
+ repackage-signing-linux64-devedition-nightly/opt: LBphglW6TwC7ENtcXp8I7g
+ repackage-signing-linux64-nightly/opt: ZnhonCZFSfqLQVyZCdjcYg
+ repackage-signing-macosx64-devedition-nightly/opt: FclGIgG7Rb6-hR8HaMHnDA
+ repackage-signing-macosx64-nightly/opt: d5yH2HdKTz2s541waxG3Vg
+ repackage-signing-win32-devedition-nightly/opt: OiFfGlUHSXik2oq48wkbrQ
+ repackage-signing-win32-nightly/opt: BxL3Isq9RaOPswxyDBOEeQ
+ repackage-signing-win32/opt: Omn1p9kTQC-pt8jOExFqbg
+ repackage-signing-win64-devedition-nightly/opt: U3UdZ-uiTzCykY94pE9Sqw
+ repackage-signing-win64-nightly/opt: FkKt_e88T4OGUugZg5JRng
+ repackage-signing-win64/opt: bKapAXdoT0CiP0NpVJQqYQ
+ repackage-win32-devedition-nightly/opt: ZFH9-EwHTyafs5HsRmPbWQ
+ repackage-win32-nightly/opt: HGGANUKtTEi93_cw--xKew
+ repackage-win32/opt: VU5F21bERVmzXOAWnvJlzA
+ repackage-win64-devedition-nightly/opt: P2Gv1UxKTkmzTOgVwRKfqA
+ repackage-win64-nightly/opt: LIFN33kmSr2MKiKWQz1PNg
+ repackage-win64/opt: b5NUT0nWT-m4wtns4IVr8g
+ sign-and-push-langpacks-build-linux64-nightly/opt: eaD9V5rGTPWzcuSEZ3bLPA
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-1/opt: a24KhywDQ6mh9QU4UDk4Rg
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-10/opt: fFqVBOrCTkipeq5M8TtSAw
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-11/opt: cKQHrbwFSqqpkz416tWVaw
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-12/opt: Gn_npyL0Qf2QU4Xhg839qQ
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-13/opt: cimO5c1EQeu4KwyYCZqJwA
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-14/opt: Khtkrd61SUSkPgRk4ZQ4yA
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-15/opt: CJtVogO-Qfq8ChnctKfn9Q
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-16/opt: R2BR6es_SxKvWYPccHiv6Q
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-17/opt: F4N2Sp4QT4y5fqMlYOCxOw
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-18/opt: AZNVXcQIRMy4FlhnjzV2wg
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-19/opt: J_VsRHwTQ5qynYWQSFIYKA
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-2/opt: eTj_XfimQGKOz5fmoRSGPA
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-20/opt: HdsfXxN4Rg2-tQnQaJDJKQ
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-3/opt: Uk8sjpwhStq4lN9ggzH2ug
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-4/opt: HI35ki7VRzelLpUkeGU_Ww
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-5/opt: NCk4vTypQ6SKbfCdZckSAg
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-6/opt: Wktbx4SfQOeokiqZ9vr7LA
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-7/opt: PUC6Jc87QXGdbLJ9TlUpiw
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-8/opt: Nw7kDGAfTd6fFSELoqE91w
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-9/opt: C8P_CfWoSVGZe22KodyEYw
+ sign-and-push-langpacks-nightly-l10n-macosx64-nightly-ja-JP-mac/opt: BM2fI2BeTFehU3TZVqbM8g
+ source-test-file-metadata-bugzilla-components: bv-o3Az2SZa_69Hyq2GrkA
+ source-test-mozlint-codespell: B-_BUSD_S0qQ_U5iQFX0PA
+ source-test-mozlint-eslint: dgVfSnaqT0mn9S2ZvNNE8A
+ static-analysis-autotest-linux64-st-autotest/debug: GrdSsjQIS4KTTrDLaFbZAQ
+ static-analysis-autotest-win64-st-autotest/debug: OyJJ-zqOQJ6H9XWpedL1PQ
+ static-analysis-win32-st-an/debug: BE8-Owp5Q9a5ztb7jbl4aQ
+ static-analysis-win32-st-an/opt: cZI86Mt6SF2sKF6g1uNfZg
+ static-analysis-win64-st-an/debug: Yzwx8zOhRZ6mrmeAdcX19g
+ static-analysis-win64-st-an/opt: YS3DYOIJQ02YDHRXmhvV1A
+ test-android-em-4.2-x86/opt-geckoview: bt7JC81XSYGsRHo1VjtL2A
+ test-android-em-4.2-x86/opt-mochitest-chrome-1: TyMRg9yMT7iO32zC62tPqQ
+ test-android-em-4.2-x86/opt-mochitest-chrome-2: Yi4plPNHSTaVj9wZvJNG5A
+ test-android-em-4.2-x86/opt-mochitest-chrome-3: IO5Bld_QRmCBiSCU_CKMyA
+ test-android-em-4.2-x86/opt-mochitest-chrome-4: OjpaYRolRtCloJwhcGiNVA
+ test-android-em-4.2-x86/opt-xpcshell-1: GyIozDUXS5S5q6Cqd6WKiA
+ test-android-em-4.2-x86/opt-xpcshell-2: R-xFzvAvQDC5CZivb4_gog
+ test-android-em-4.2-x86/opt-xpcshell-3: RyoI0Y5XRDKFKyrIIt3R4A
+ test-android-em-4.2-x86/opt-xpcshell-4: DAcjXDKPTyqzmKE3yHiZGg
+ test-android-em-4.2-x86/opt-xpcshell-5: EuhaCnYZR4CT5rY49LPX2w
+ test-android-em-4.2-x86/opt-xpcshell-6: M2SXOD0CSsapIc7CwCeqrQ
+ test-android-em-4.3-arm7-api-16/debug-cppunit: fPljoG9RSEqUl6FQbMZKZA
+ test-android-em-4.3-arm7-api-16/debug-crashtest-1: XmCQGs_SQfyPPHhn7L4zaQ
+ test-android-em-4.3-arm7-api-16/debug-crashtest-10: Yn8ZgOoEQw6hHPqmXruFVw
+ test-android-em-4.3-arm7-api-16/debug-crashtest-2: O1kiabW2SMCG4qYkzCmToQ
+ test-android-em-4.3-arm7-api-16/debug-crashtest-3: flsQgOvrQFGJjuH57OMv-w
+ test-android-em-4.3-arm7-api-16/debug-crashtest-4: Xfiiq_bNT9uYAjqQLq7f_A
+ test-android-em-4.3-arm7-api-16/debug-crashtest-5: Naj59Fr_QMqL9kgmrQG0Cg
+ test-android-em-4.3-arm7-api-16/debug-crashtest-6: BhJmz1VgTDagUUIS0NgXOA
+ test-android-em-4.3-arm7-api-16/debug-crashtest-7: Ozbxu4QITzGmIsDvQvdsvA
+ test-android-em-4.3-arm7-api-16/debug-crashtest-8: N-DxXThsTmGo8SoHK7xA1g
+ test-android-em-4.3-arm7-api-16/debug-crashtest-9: My8M8kteT2at6tb3NhfRow
+ test-android-em-4.3-arm7-api-16/debug-geckoview: CwHm24B0T3q8-dw5jBoUcA
+ test-android-em-4.3-arm7-api-16/debug-geckoview-junit-1: FCxWzTpaQleI6hwRlq9ZOQ
+ test-android-em-4.3-arm7-api-16/debug-geckoview-junit-2: HjVfNpFySXOeRWPKeCg3kg
+ test-android-em-4.3-arm7-api-16/debug-geckoview-junit-3: JcP4jXVqT4-osnZCjhWwXg
+ test-android-em-4.3-arm7-api-16/debug-geckoview-junit-4: B49Fq__jR9q19utb9ZJasQ
+ test-android-em-4.3-arm7-api-16/debug-marionette-1: IMpxNh5oQNq-Faw9hHSV_Q
+ test-android-em-4.3-arm7-api-16/debug-marionette-10: drX95LHsR36xcRmPv1cluQ
+ test-android-em-4.3-arm7-api-16/debug-marionette-2: MpffmvghQ3-KSCz3FR00-w
+ test-android-em-4.3-arm7-api-16/debug-marionette-3: ecDJoA3nTFOsQX5sN7KAGQ
+ test-android-em-4.3-arm7-api-16/debug-marionette-4: f0rCbaU1TESZ_9ZrNGGK6w
+ test-android-em-4.3-arm7-api-16/debug-marionette-5: EZgmOl-eS7mapCj0Ii8JcA
+ test-android-em-4.3-arm7-api-16/debug-marionette-6: VslW3oF_QKePC8_y9vkDqA
+ test-android-em-4.3-arm7-api-16/debug-marionette-7: NtTbeg6XQsSRjGqPOlHb9Q
+ test-android-em-4.3-arm7-api-16/debug-marionette-8: Db0TxraSSgy9F218wyYepA
+ test-android-em-4.3-arm7-api-16/debug-marionette-9: EhTOjUv6S-KoF297RIIoSw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-1: eTIzwY7rTSS6TF6mVH3kXA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-10: Ozy_Mr4_TZ2ap-jgl7tMiA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-11: CUEMFO9QTd6v35_IEZ0NzA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-12: CR71wuubRjG1udqvVZGTig
+ test-android-em-4.3-arm7-api-16/debug-mochitest-13: WsPOLhbwR5Ke4RwFQW3Dfw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-14: YXI_eF6sTaaT8LgM61SIcw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-15: edK5725EQpiwkh1HLYciBA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-16: PHkUjfYDRXmmkXtBAr3cwQ
+ test-android-em-4.3-arm7-api-16/debug-mochitest-17: NKdptCiDRPKf9Mx0G6hI6g
+ test-android-em-4.3-arm7-api-16/debug-mochitest-18: VMGlKlYrRpKMlF-sCGC_Zg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-19: EA_xrjItQWyuJL89VMw1Xw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-2: Vh-Bnh6JQsShU1uX5d7utA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-20: H9No-bgHS_26pqt0Gp8aLA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-21: JYvWeMD-Rwa4knhYrikmOQ
+ test-android-em-4.3-arm7-api-16/debug-mochitest-22: InSTyW6ERJW_qXN5Qbk9Sw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-23: Sjr_v7j3TVakRovyjmx7rw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-24: Re2siL9EQbyap6EcQoDBow
+ test-android-em-4.3-arm7-api-16/debug-mochitest-25: fAjMkBehR2-FiDMQtHt1HA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-26: c5mVh02fQLm-kvD076pQaw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-27: J8Am6BM-Q5iP-GX3vyA63w
+ test-android-em-4.3-arm7-api-16/debug-mochitest-28: bvHnB01FRDO5fqWjnDgsHg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-29: TwMi3gmSTS6SwMWEb5poig
+ test-android-em-4.3-arm7-api-16/debug-mochitest-3: ZOiufvETRXa-b6Jf5_23Iw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-30: Kmn1h0G6SuilPkXq8W8_FA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-31: aA4BeIv3S5GmDHqMlhVWSg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-32: TNlXovSJSsy7tyvC-EzBzA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-33: MT4zffOPQcqcl8rqI9rhwg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-34: XXbpX-0QS-ufziBOIYeGgA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-35: Oxr9AEsTSTeBTOSSm0lW0Q
+ test-android-em-4.3-arm7-api-16/debug-mochitest-36: Jomc7qsUTkeoa0tWD1y4MA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-37: EPe49qw5RvCCewx5VVaFrg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-38: ePnqty90STOWYhyqiRaeiw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-39: LaDm2LKUQqqq8DoTwcQ3mA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-4: AHq4R7XwRD29eiIEcRwOLQ
+ test-android-em-4.3-arm7-api-16/debug-mochitest-40: ISpHNq-nSZe0K4M5YtrUDw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-41: CqtPOANTScS7ffznpftdkg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-42: QehInfQmSJiY6UDKH2mKVg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-43: N4hskPKxRee4TvxvpjAJUQ
+ test-android-em-4.3-arm7-api-16/debug-mochitest-44: S91YjgibSpCM__RdZLqU5g
+ test-android-em-4.3-arm7-api-16/debug-mochitest-45: Ms97MsFnT3-1q5FO7-bq3g
+ test-android-em-4.3-arm7-api-16/debug-mochitest-46: XudPe-jVTT6H_dT2UBfUsg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-47: blJVIqnqTlW0gwacCVFt2A
+ test-android-em-4.3-arm7-api-16/debug-mochitest-48: Chb9yDptQYm19uqz0754ew
+ test-android-em-4.3-arm7-api-16/debug-mochitest-5: Zc5EZyUgQ8Gq4OmGwwF1yw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-6: PvNoLqmGSmmYYKM_Nl4oCQ
+ test-android-em-4.3-arm7-api-16/debug-mochitest-7: YcP3D3eATZ64tCcxApMJRg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-8: Cuc7ZVV8QH2R4COyZYTWZg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-9: ZtrqFq-STqeyHmvn6ar9Zg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-1: eKOGklhqSWmwhercUOreuw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-2: aKPxsCZhTVKn-wF7yY2EWQ
+ test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-3: D1-WEQVoRuGfVHqvdlJFaw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-4: BMrP4x89SK608JAHLHePSA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-5: Ecw2WeH3Rm-ROesrS0pdtg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-6: WOGk5kzKRuilIwtP4SRHtw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-7: GUFeXonER-SV1kIXbQNDnw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-8: ZtYgTEDWRoSSed4jbjmQbg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-clipboard: ElKsDuw1SJm12zQgGFwp1A
+ test-android-em-4.3-arm7-api-16/debug-mochitest-gpu: W5z3CDOpQ9KFs1VRU95hHg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-media-1: H4N9KtiQS0yiw8BlH26GMg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-media-2: XT9M72d0T-Go-l3J0tOOhA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-media-3: U1AUcaddQWm3ymf5hxDqaQ
+ test-android-em-4.3-arm7-api-16/debug-reftest-1: TL7Z7kqTRraM43fVhrMQRw
+ test-android-em-4.3-arm7-api-16/debug-reftest-10: F9Nk080ESoWcRVkuQ5tzSg
+ test-android-em-4.3-arm7-api-16/debug-reftest-11: HrbvBkt2T82ZlSUVti6epw
+ test-android-em-4.3-arm7-api-16/debug-reftest-12: KmJfYL6pSe61Dcx0XWNrdg
+ test-android-em-4.3-arm7-api-16/debug-reftest-13: fFhIbnGFTU-OyXCLbqLqDg
+ test-android-em-4.3-arm7-api-16/debug-reftest-14: Ml4DFHuKQ_OUXgI-CBihRA
+ test-android-em-4.3-arm7-api-16/debug-reftest-15: Vyy5kLKDSwSmHMgVRHGSFg
+ test-android-em-4.3-arm7-api-16/debug-reftest-16: Dje-xF6YSvStKuqtNfXwJg
+ test-android-em-4.3-arm7-api-16/debug-reftest-17: D-zqNKf3QWGxg9Fz7LzPlA
+ test-android-em-4.3-arm7-api-16/debug-reftest-18: Ats3FH0rTuez3UN-tJV9aQ
+ test-android-em-4.3-arm7-api-16/debug-reftest-19: H1q0FFTXS3q0mKpMmn18qA
+ test-android-em-4.3-arm7-api-16/debug-reftest-2: RqfJs17lQ0ee0sc7jzKwag
+ test-android-em-4.3-arm7-api-16/debug-reftest-20: JwB9TcviRPC6IoH7fPnzWg
+ test-android-em-4.3-arm7-api-16/debug-reftest-21: XwRY-9mXT0SvFJXVApYipg
+ test-android-em-4.3-arm7-api-16/debug-reftest-22: WjkJ8dYRQO-ai0BKW5Y9Tg
+ test-android-em-4.3-arm7-api-16/debug-reftest-23: Zoo3wfzaQj2AE2HYifhI3Q
+ test-android-em-4.3-arm7-api-16/debug-reftest-24: ENYZSkWWTJidm1SSstXVIg
+ test-android-em-4.3-arm7-api-16/debug-reftest-25: fm2jc-eyRoWgMXxWNw6Krw
+ test-android-em-4.3-arm7-api-16/debug-reftest-26: R-J6TEqeQ82V6EF-sF0zUw
+ test-android-em-4.3-arm7-api-16/debug-reftest-27: HH7FrlgyRqSuJYW5JNS81Q
+ test-android-em-4.3-arm7-api-16/debug-reftest-28: Nkcav-gTQU-TgSl2_kDZBA
+ test-android-em-4.3-arm7-api-16/debug-reftest-29: GWXQPzN1T223iei3okF23Q
+ test-android-em-4.3-arm7-api-16/debug-reftest-3: dsknR4yBQn6pUBAO_RgQMg
+ test-android-em-4.3-arm7-api-16/debug-reftest-30: D-I-1Kl-QQGOWJOJdwDffQ
+ test-android-em-4.3-arm7-api-16/debug-reftest-31: CU4wh5dZR6qbDDj4tNxh_A
+ test-android-em-4.3-arm7-api-16/debug-reftest-32: UzxcdY7aQxOUf0GVe4q-Cw
+ test-android-em-4.3-arm7-api-16/debug-reftest-33: UycdLX4pR9WJGxreNITkPg
+ test-android-em-4.3-arm7-api-16/debug-reftest-34: ds38ad_7S1ylinW7vhiX9g
+ test-android-em-4.3-arm7-api-16/debug-reftest-35: RVCqBIUVRrK4MJXA5SYCFA
+ test-android-em-4.3-arm7-api-16/debug-reftest-36: aFSvcM4XQ3OPVesMEn0xMg
+ test-android-em-4.3-arm7-api-16/debug-reftest-37: Ls7Ev7i8Rc-bG1elpaqneA
+ test-android-em-4.3-arm7-api-16/debug-reftest-38: HsEgLHLvQtOfIkfby1LTkw
+ test-android-em-4.3-arm7-api-16/debug-reftest-39: NPaXzBO7S5iXemcu_cjBEg
+ test-android-em-4.3-arm7-api-16/debug-reftest-4: HzEJ-fNaRYejzcl3r7RF_w
+ test-android-em-4.3-arm7-api-16/debug-reftest-40: EJ5ZvL1JSaOs7TNDaGT44Q
+ test-android-em-4.3-arm7-api-16/debug-reftest-41: IfrZHhxcRhukExXnuCHTiA
+ test-android-em-4.3-arm7-api-16/debug-reftest-42: es6S1vtmTiOzVoSzJZtdhw
+ test-android-em-4.3-arm7-api-16/debug-reftest-43: YbUI5rKCSJe-JHKmps2hfA
+ test-android-em-4.3-arm7-api-16/debug-reftest-44: d4GCugbXRxqAaogzjrWmOA
+ test-android-em-4.3-arm7-api-16/debug-reftest-45: UFpnw7YGQGyEsStxcnPU6A
+ test-android-em-4.3-arm7-api-16/debug-reftest-46: QKzZ5mXaQei6eckdcpxcCw
+ test-android-em-4.3-arm7-api-16/debug-reftest-47: YeQHqXf3QgqILZRw3xI-qA
+ test-android-em-4.3-arm7-api-16/debug-reftest-48: U2mk0aAuRDawxk3Y8RgH8g
+ test-android-em-4.3-arm7-api-16/debug-reftest-49: eGvipfJ3SZyjiLKEKgxdmQ
+ test-android-em-4.3-arm7-api-16/debug-reftest-5: UXXetLg7SVqTeNwM-dIETQ
+ test-android-em-4.3-arm7-api-16/debug-reftest-50: PcIhOcxQT0Cf7x1Sco2KSg
+ test-android-em-4.3-arm7-api-16/debug-reftest-51: INNF1jzCQCGKQJycHZztUw
+ test-android-em-4.3-arm7-api-16/debug-reftest-52: UBMyK8PESVCbjKIBVcp1zw
+ test-android-em-4.3-arm7-api-16/debug-reftest-53: OCWG-iuITQeaBRmZy6BSkA
+ test-android-em-4.3-arm7-api-16/debug-reftest-54: DCKJw4yLSG-5tIpY7LQ1hg
+ test-android-em-4.3-arm7-api-16/debug-reftest-55: We6OpU7qTFWODN44iUMWTg
+ test-android-em-4.3-arm7-api-16/debug-reftest-56: Ld6Exp95R_yUDFe7rrz6Lg
+ test-android-em-4.3-arm7-api-16/debug-reftest-6: K6_K8OVnRJCfBJz8H84CMQ
+ test-android-em-4.3-arm7-api-16/debug-reftest-7: GP337AenRaybM5Gs5Qy-Gw
+ test-android-em-4.3-arm7-api-16/debug-reftest-8: ARPchXwqTTeY04A9DhSwsw
+ test-android-em-4.3-arm7-api-16/debug-reftest-9: dlEYmSuNTRKZV0tD9YxaMg
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-1: Sq4z7qpqSQyOBi47EiX9Bw
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-10: DjUP74vRQBCX5cYTRS-tCw
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-11: NftUUSXoQWWp6NaG-0nUpw
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-12: XRcryb3TSCmqb0YthvCYgA
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-2: LymZ9-SHRgO7ZRhabW8q4w
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-3: Ed9W13zPTla-ndOAOWvLBA
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-4: EOhl2JeARuGjHjSUGZunOA
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-5: TlBTec55RUmI_XV6xkoZgA
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-6: U-X4ALKzTLKXpkycymWZEQ
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-7: B4qHes0OTxy7nXtp4sItZg
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-8: agQ9NWOlRCCoLhUWGKJ9lA
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-9: HAnwMgw_RJOv60E5M-tAcQ
+ test-android-em-4.3-arm7-api-16/opt-cppunit: RoaedTd8Rs-F72pWQal1MA
+ test-android-em-4.3-arm7-api-16/opt-crashtest-1: eKr52-t3T7ypxSKTKMDSPQ
+ test-android-em-4.3-arm7-api-16/opt-crashtest-2: TXHXx37dRBWA7GbYyRip9A
+ test-android-em-4.3-arm7-api-16/opt-crashtest-3: EeuyjYEjRt6kbjpQk-699A
+ test-android-em-4.3-arm7-api-16/opt-crashtest-4: aAggyqZESk6Q6fEbO4GM0g
+ test-android-em-4.3-arm7-api-16/opt-geckoview: cv51sWxAQeyDEHb1hi0c8Q
+ test-android-em-4.3-arm7-api-16/opt-geckoview-junit-1: NYgKGM2YR2aIAHl8qpgdog
+ test-android-em-4.3-arm7-api-16/opt-geckoview-junit-2: MIkBrEJpTq2K8MkB6siuBg
+ test-android-em-4.3-arm7-api-16/opt-marionette-1: XRivG9WmS1O1mffCUqZKNg
+ test-android-em-4.3-arm7-api-16/opt-marionette-10: O7itLGRRRpWPYqLY7ltzOQ
+ test-android-em-4.3-arm7-api-16/opt-marionette-2: SA8bosxvS_2P1bBVlpBpaQ
+ test-android-em-4.3-arm7-api-16/opt-marionette-3: GExci6RUTKuxxD32A6u7dw
+ test-android-em-4.3-arm7-api-16/opt-marionette-4: YEF0rReuTv2yDl0XafRRfg
+ test-android-em-4.3-arm7-api-16/opt-marionette-5: VIsimfQKS32iZAutSfz2ew
+ test-android-em-4.3-arm7-api-16/opt-marionette-6: NKIerQ_TRkms-bgW88OoAg
+ test-android-em-4.3-arm7-api-16/opt-marionette-7: HlyG2a5sQB25YBnX5kUDrA
+ test-android-em-4.3-arm7-api-16/opt-marionette-8: KRTiFTe5QZeuJRbO5e8bLw
+ test-android-em-4.3-arm7-api-16/opt-marionette-9: bEJkSm1WTGedlOQLEt2yeg
+ test-android-em-4.3-arm7-api-16/opt-mochitest-1: MK6CcKF6QXyQ7DiuWh3QAg
+ test-android-em-4.3-arm7-api-16/opt-mochitest-10: L-PRM1J7QFiX6p7XW_4tug
+ test-android-em-4.3-arm7-api-16/opt-mochitest-11: O07LRmB6RSiSyHqFJOyP0Q
+ test-android-em-4.3-arm7-api-16/opt-mochitest-12: ZF-cUYutS1SqTMz47Q6pOQ
+ test-android-em-4.3-arm7-api-16/opt-mochitest-13: SsL-zEs_QqOnd2UwbNiRnQ
+ test-android-em-4.3-arm7-api-16/opt-mochitest-14: ZMXmu-CzTVO16cRrZRDo4Q
+ test-android-em-4.3-arm7-api-16/opt-mochitest-15: ETCY0rCwS8eMeYfzDGpF1Q
+ test-android-em-4.3-arm7-api-16/opt-mochitest-16: I1oN_pRYThGbYFQ9wHewQw
+ test-android-em-4.3-arm7-api-16/opt-mochitest-17: OUqmNaBOR02ASqvHKh-AlA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-18: CfgLwtF4Rg2r1ZJJLQaAVA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-19: VAeY2pcZSyqL8foVIq-VCw
+ test-android-em-4.3-arm7-api-16/opt-mochitest-2: PeYelk8bQQy1IYnPuujNHg
+ test-android-em-4.3-arm7-api-16/opt-mochitest-20: fyv-SrK1ScyDwBKm73uXfA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-21: bnSWS6WKQz-Rl4_kpx9m-w
+ test-android-em-4.3-arm7-api-16/opt-mochitest-22: bfs91FhpTA6qhsPVpr4tmw
+ test-android-em-4.3-arm7-api-16/opt-mochitest-23: XDqzM7xKSBC5MSl2482dTw
+ test-android-em-4.3-arm7-api-16/opt-mochitest-24: OwVcUDsWSYChHGwMrVtfnA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-3: MsUx--g3QE6fHzv5UjruCQ
+ test-android-em-4.3-arm7-api-16/opt-mochitest-4: Bi9oURDqT5uMrf667qGoHg
+ test-android-em-4.3-arm7-api-16/opt-mochitest-5: UbRPa3UMTXWMo-fi_kHyYA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-6: OwqmQjxfS9OfgheUJwqu-g
+ test-android-em-4.3-arm7-api-16/opt-mochitest-7: Szn1QoUoQdSU3Yzbt5kJiA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-8: SNXKXw7tQ5moMhrujAtUPQ
+ test-android-em-4.3-arm7-api-16/opt-mochitest-9: a7PSLMMVSuGS4D6LIr_IoQ
+ test-android-em-4.3-arm7-api-16/opt-mochitest-chrome-1: dHXi61bET0Cm9Wtdsg1cCg
+ test-android-em-4.3-arm7-api-16/opt-mochitest-chrome-2: fjhMrrthSLK6Khw-4o99nQ
+ test-android-em-4.3-arm7-api-16/opt-mochitest-chrome-3: GPpYZKN0TZyWNDUn0lEKpw
+ test-android-em-4.3-arm7-api-16/opt-mochitest-chrome-4: CCyensv-TTGZF5-NKlYygw
+ test-android-em-4.3-arm7-api-16/opt-mochitest-clipboard: Zia-vDn2RW6POB4HKXCK3w
+ test-android-em-4.3-arm7-api-16/opt-mochitest-gpu: Xs87BsxGQZioCgEdA3ParA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-media-1: eaP2BYdHQSyZydkKk9n9JA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-media-2: GZdDdVSJTVuigIyL9mHrnA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-media-3: XXjs7SBPSRKE6h7MArRh5g
+ test-android-em-4.3-arm7-api-16/opt-reftest-1: d60W_yUHRdimXnMYhLtFnA
+ test-android-em-4.3-arm7-api-16/opt-reftest-10: Ft01z0NWSFmpH8-fG0ZBBg
+ test-android-em-4.3-arm7-api-16/opt-reftest-11: Qw3NpFfYTei3rBzeqBPRMg
+ test-android-em-4.3-arm7-api-16/opt-reftest-12: JI2tP-dlQim6vfNHA0DLdA
+ test-android-em-4.3-arm7-api-16/opt-reftest-13: IQxy_hYLTKOzRGiok3Cbrg
+ test-android-em-4.3-arm7-api-16/opt-reftest-14: f5QjOcDzR1q0harn6haKig
+ test-android-em-4.3-arm7-api-16/opt-reftest-15: TqjYzrXeTKmGYsKeSIoUGQ
+ test-android-em-4.3-arm7-api-16/opt-reftest-16: H4vNXfwAT36z1HWJY6td7A
+ test-android-em-4.3-arm7-api-16/opt-reftest-17: Uixl2ydiQr2T5IrxXJh0NQ
+ test-android-em-4.3-arm7-api-16/opt-reftest-18: GMq38vgsQPWGQe54TC8FoA
+ test-android-em-4.3-arm7-api-16/opt-reftest-19: avSYj3YNQjWLKzEL5cWrIA
+ test-android-em-4.3-arm7-api-16/opt-reftest-2: EOJeDBcAT9OAOY1bIjG-cg
+ test-android-em-4.3-arm7-api-16/opt-reftest-20: EpIGjMXiRhqpCDlo6e9Jow
+ test-android-em-4.3-arm7-api-16/opt-reftest-21: F3stEWLjSm-VneOK2usOww
+ test-android-em-4.3-arm7-api-16/opt-reftest-22: H21rHqnUR9Gp1B6XFXA0WA
+ test-android-em-4.3-arm7-api-16/opt-reftest-23: aOCIWVtXSP6OlerklxNLjQ
+ test-android-em-4.3-arm7-api-16/opt-reftest-24: NsREmwVsQWKz396-Hfm8ug
+ test-android-em-4.3-arm7-api-16/opt-reftest-25: VZixEWAwS1q8eWkWechJRQ
+ test-android-em-4.3-arm7-api-16/opt-reftest-26: Es2ZPhiGQ5asQyBWNXa0Iw
+ test-android-em-4.3-arm7-api-16/opt-reftest-27: HEvtNjsHREOOfO5n2d4Smw
+ test-android-em-4.3-arm7-api-16/opt-reftest-28: IOBnM00tQHuiN-EagQG5mg
+ test-android-em-4.3-arm7-api-16/opt-reftest-3: T41cIz9ISy2i86EvbZoFhg
+ test-android-em-4.3-arm7-api-16/opt-reftest-4: fCOC9aoHQ0WlFfZCc0BA7A
+ test-android-em-4.3-arm7-api-16/opt-reftest-5: EJDGoofrRDCOdabocQhuEw
+ test-android-em-4.3-arm7-api-16/opt-reftest-6: Y2CsIUdqRbO_eFCrUQPJJA
+ test-android-em-4.3-arm7-api-16/opt-reftest-7: ID7B7fFVRdyYeuAlY0eEhQ
+ test-android-em-4.3-arm7-api-16/opt-reftest-8: A1IJriQMTOC_TLYu19o4lA
+ test-android-em-4.3-arm7-api-16/opt-reftest-9: J9u846cETsuceFw7cUZa8g
+ test-android-em-4.3-arm7-api-16/opt-robocop-1: Jb6qN24dSsONT7EqQhBrWw
+ test-android-em-4.3-arm7-api-16/opt-robocop-2: IcKGa_vhTXWOX-uWmBo2KQ
+ test-android-em-4.3-arm7-api-16/opt-robocop-3: X2hEhlT5SdGca-uiWUK6Jg
+ test-android-em-4.3-arm7-api-16/opt-robocop-4: HZQ-Z5PkSZ-n80SuQhUvfg
+ test-android-em-4.3-arm7-api-16/opt-xpcshell-1: S4j8uGwbRZaLP96gzsIl5g
+ test-android-em-4.3-arm7-api-16/opt-xpcshell-2: JD4ta2dnSQyy-NhcpXjf1Q
+ test-android-em-4.3-arm7-api-16/opt-xpcshell-3: CEzp0c8IQRyrXpVG9m9Mqw
+ test-android-em-4.3-arm7-api-16/opt-xpcshell-4: ECZ06_-MTkqhUI1S615i6Q
+ test-android-em-4.3-arm7-api-16/opt-xpcshell-5: b3pJkN-RRyS8usVO3hsa6A
+ test-android-em-4.3-arm7-api-16/opt-xpcshell-6: GsOZXKxtRjK85yNh12Nk4A
+ test-android-em-4.3-arm7-api-16/opt-xpcshell-7: SQJ8DI0EQoqHmPU-Drl83A
+ test-android-em-4.3-arm7-api-16/opt-xpcshell-8: cMsEdnX4R1eKkU9laXzeNQ
+ test-linux32-devedition/opt-cppunit: MCkyRWeRTrGIBt2X8TghHQ
+ test-linux32-devedition/opt-crashtest-e10s: HHJAJsUQSVOICH3YLwNhDQ
+ test-linux32-devedition/opt-firefox-ui-functional-local-e10s: fLR7IfykT9qbqZew4WxpqQ
+ test-linux32-devedition/opt-firefox-ui-functional-remote-e10s: YarXRjIzQUeE1oqs8XPnlg
+ test-linux32-devedition/opt-marionette-e10s: bzJUadZSSrimjR9T1moqeA
+ test-linux32-devedition/opt-mochitest-a11y: EH2dAnMAQxKr3oHk_32F0g
+ test-linux32-devedition/opt-mochitest-browser-chrome-e10s-1: N-Pn_aIsTEqKSx8kiIyN-w
+ test-linux32-devedition/opt-mochitest-browser-chrome-e10s-2: Ru4KwoHtTZmfUccQ3b9ObA
+ test-linux32-devedition/opt-mochitest-browser-chrome-e10s-3: f7TyhSscQceXRfjZSx0jwQ
+ test-linux32-devedition/opt-mochitest-browser-chrome-e10s-4: HrNVx0MQRNKxY6VNYypJSg
+ test-linux32-devedition/opt-mochitest-browser-chrome-e10s-5: Nvs-q-ogQGO3sQi_AbPTxQ
+ test-linux32-devedition/opt-mochitest-browser-chrome-e10s-6: YA2CUK_2TqudjbTGpQRGGQ
+ test-linux32-devedition/opt-mochitest-browser-chrome-e10s-7: X_wTGuJoRx23UmLI_xQyDw
+ test-linux32-devedition/opt-mochitest-chrome-1: En53pYeMTfyo-d5DXP9a2w
+ test-linux32-devedition/opt-mochitest-chrome-2: NPjKws8QRjuP5D0i8OZIZQ
+ test-linux32-devedition/opt-mochitest-chrome-3: CopeEq-lQQezek-xHjscJQ
+ test-linux32-devedition/opt-mochitest-clipboard-e10s: XkGS8U0jSuulv8mtoIL4AA
+ test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-1: ND9OweoWQPmw_69E9wt-yg
+ test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-2: MeqnASaMSPm_k5qqZTa1yw
+ test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-3: EVYJqIX-T3SC_PWf8-S9sg
+ test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-4: KeaSPWa6SWakV732dXRPKw
+ test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-5: JssGHWFdRL2sdoQjYZ1e4A
+ test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-6: JJeyHIyJQZiz5kQ9tJ75fw
+ test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-7: aPDwKQE-TKi1SmayoxPAHg
+ test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-8: I7Y-0jrxR4a7VW2XwSBfCw
+ test-linux32-devedition/opt-mochitest-e10s-1: OrtwabIMSGabsoSkClJFXQ
+ test-linux32-devedition/opt-mochitest-e10s-2: Ku5m4NfyQVuenkWCB5cTnA
+ test-linux32-devedition/opt-mochitest-e10s-3: d3ZG4RmXRNem0ARFn6zo6Q
+ test-linux32-devedition/opt-mochitest-e10s-4: HR_tZqshQ82_sYYsRmCZHw
+ test-linux32-devedition/opt-mochitest-e10s-5: AGahZrthSL-Zba-KE-O9Ww
+ test-linux32-devedition/opt-mochitest-gpu-e10s: IMPHoAncR_iJdnKZgpBxzA
+ test-linux32-devedition/opt-mochitest-media-e10s-1: KNEHmb4fSR28Hpvff9ZnYw
+ test-linux32-devedition/opt-mochitest-media-e10s-2: K3Qb0M6ETgiDnP4QRX3qAw
+ test-linux32-devedition/opt-mochitest-media-e10s-3: bac5kNsiRKWXP-nxkH-htQ
+ test-linux32-devedition/opt-mochitest-webgl1-core-e10s: cBtHr3ngRV2k6D8JIyM61Q
+ test-linux32-devedition/opt-reftest-e10s-1: NGDpOr_7SVeCFbKuPc3nVg
+ test-linux32-devedition/opt-reftest-e10s-2: U2dPWC7GQgqwXCCtvwYrAQ
+ test-linux32-devedition/opt-reftest-e10s-3: chZ1l6xNR3O6UK-pX1g0_Q
+ test-linux32-devedition/opt-reftest-e10s-4: KStk_1daQNuXmLZLU048qA
+ test-linux32-devedition/opt-reftest-e10s-5: WLNon20OSIaLN7qes9-oBQ
+ test-linux32-devedition/opt-reftest-e10s-6: QQNQIJhqTRCRY87ZHy5ujA
+ test-linux32-devedition/opt-reftest-e10s-7: IVzMWdCwRDy51MPRmSb2Gw
+ test-linux32-devedition/opt-reftest-e10s-8: O0zvL0tPSX6fHx7BkzbwoQ
+ test-linux32-devedition/opt-reftest-no-accel-e10s-1: Yn8zBM-rTJ2tlEN1dzVg6A
+ test-linux32-devedition/opt-reftest-no-accel-e10s-2: BVjna_OMQuWnRKrdl-pRjw
+ test-linux32-devedition/opt-reftest-no-accel-e10s-3: brOSR-SBTD2cbUvt9CNesA
+ test-linux32-devedition/opt-reftest-no-accel-e10s-4: S1wHVnxxQs6_AkxZiwMZMQ
+ test-linux32-devedition/opt-reftest-no-accel-e10s-5: bIhEs-v9Sk6Fb9k_yReXbg
+ test-linux32-devedition/opt-reftest-no-accel-e10s-6: W4-rWeb1TYibMJs91pOUhA
+ test-linux32-devedition/opt-reftest-no-accel-e10s-7: E7fZUv6IT7qFdgFLvLh72g
+ test-linux32-devedition/opt-reftest-no-accel-e10s-8: L7YVjWpSSUONMFNJOhCswg
+ test-linux32-devedition/opt-web-platform-tests-e10s-1: QD4qxY7JT3OHTu1CzC7eig
+ test-linux32-devedition/opt-web-platform-tests-e10s-10: caFiKNizT8eZNeRdDvj9HA
+ test-linux32-devedition/opt-web-platform-tests-e10s-11: P9ESdajVRHmOkJjHbEyvPg
+ test-linux32-devedition/opt-web-platform-tests-e10s-12: WjrGNcJ7SuWx7ziX32yxjQ
+ test-linux32-devedition/opt-web-platform-tests-e10s-2: H3UIbDi9Q_-L0ykO82rMVw
+ test-linux32-devedition/opt-web-platform-tests-e10s-3: W-RLq7coQF-myUW2ziHM-w
+ test-linux32-devedition/opt-web-platform-tests-e10s-4: DpRg4auwSnWR05SCdnni3Q
+ test-linux32-devedition/opt-web-platform-tests-e10s-5: Kii5FpMfRriKUqm-kalQhQ
+ test-linux32-devedition/opt-web-platform-tests-e10s-6: Ie_yzwNfT8SXIiSnf8zTgg
+ test-linux32-devedition/opt-web-platform-tests-e10s-7: bOAmOOelQ5i1LAZid-HIPQ
+ test-linux32-devedition/opt-web-platform-tests-e10s-8: W1lcMObGRlyIPQCt-irsiQ
+ test-linux32-devedition/opt-web-platform-tests-e10s-9: Kqd0ztT8QQiSl-RvBc3hSw
+ test-linux32-devedition/opt-web-platform-tests-reftests-e10s-1: B_iK45U1R4edEthj6XTPsw
+ test-linux32-devedition/opt-web-platform-tests-reftests-e10s-2: SLv4Ji90QUCgoTvqlgdKWw
+ test-linux32-devedition/opt-web-platform-tests-reftests-e10s-3: StDTmQiISgGx_J4zRv83uA
+ test-linux32-devedition/opt-web-platform-tests-reftests-e10s-4: e0UA4lCoS_WQv-9B0WySWg
+ test-linux32-devedition/opt-web-platform-tests-reftests-e10s-5: Cr1I57xxQ9W6UhP7G3XM1w
+ test-linux32-devedition/opt-web-platform-tests-reftests-e10s-6: XqBrHaQjSnOX-c7WFNJJJg
+ test-linux32-devedition/opt-web-platform-tests-wdspec-e10s: L8s_LXdOR_a9nN4jeOp_PQ
+ test-linux32-devedition/opt-xpcshell-1: HxBDANLlQ5iyOFUJ73d2gA
+ test-linux32-devedition/opt-xpcshell-2: LLq3ozdvS_apCRZs96iuZg
+ test-linux32-devedition/opt-xpcshell-3: VyKtls4tTzKUgdx5cQT2Gw
+ test-linux32-devedition/opt-xpcshell-4: ZH1ztj77RyCwTyF-vKud6w
+ test-linux32-devedition/opt-xpcshell-5: T0q4pdKCR-iHFc5FKrrSmg
+ test-linux32-devedition/opt-xpcshell-6: U6oeD8oiQ4GbcFvyt7mvHg
+ test-linux32-devedition/opt-xpcshell-7: MIhfaGbCTS2EtoDDcxTiYg
+ test-linux32-devedition/opt-xpcshell-8: Tr0d73CYSLaBYkEpEBpFIQ
+ test-linux32-nightly/opt-cppunit: PPYEQP_GTjqdGFAdjlKj5Q
+ test-linux32-nightly/opt-crashtest-e10s: Om_Y7m8RSZWUCc9Si2p_Ow
+ test-linux32-nightly/opt-firefox-ui-functional-local-e10s: TX-lr7MnRAi10Jg9KlMV1A
+ test-linux32-nightly/opt-firefox-ui-functional-remote-e10s: LXrvwiIwSU-LZKae0Lb8tw
+ test-linux32-nightly/opt-gtest: JukTBPnoSrSJNFqWUOvagw
+ test-linux32-nightly/opt-marionette-e10s: HGb4Y4uzRGC3-3TRI9xMMw
+ test-linux32-nightly/opt-mochitest-a11y: DzjXwxHLSCyjSZW1k_Ji-A
+ test-linux32-nightly/opt-mochitest-browser-chrome-e10s-1: Vn4MAt4GQTC9ksQtx-l6VA
+ test-linux32-nightly/opt-mochitest-browser-chrome-e10s-2: P8xjtpHbTNaS-dcpya1WXA
+ test-linux32-nightly/opt-mochitest-browser-chrome-e10s-3: W5JYHUgyQ7G9hYIH8y_r8Q
+ test-linux32-nightly/opt-mochitest-browser-chrome-e10s-4: fed-G_IoTeGfb0aK5PKHSw
+ test-linux32-nightly/opt-mochitest-browser-chrome-e10s-5: TPeYJWLQSnyYNF-Ar4mrpg
+ test-linux32-nightly/opt-mochitest-browser-chrome-e10s-6: I-6-fkX0TqypKwR7ZF72sw
+ test-linux32-nightly/opt-mochitest-browser-chrome-e10s-7: ETNum2VcQlmbxuzEdqoXdg
+ test-linux32-nightly/opt-mochitest-chrome-1: RI5Qc5deTAyfhXB34kFovQ
+ test-linux32-nightly/opt-mochitest-chrome-2: DObIRcEkR-SQOv_0IuegsQ
+ test-linux32-nightly/opt-mochitest-chrome-3: E08Q0JVHREOWLrb3PIRaBQ
+ test-linux32-nightly/opt-mochitest-clipboard-e10s: LVqarKFsSdOsqTWPDIdgrA
+ test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-1: M4sg_0ePQxy3r3LIKG-twg
+ test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-2: IBvvodG5SYCD_JABS3C7TA
+ test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-3: Mma-zNoYSO2Rj1IPaDhZFQ
+ test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-4: MGHKUkjWT_-TrDhpUv82wQ
+ test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-5: CnspVVyTT6CUSBWX7xNkJw
+ test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-6: PfIKFcpaTXaTFc8K9YQlwQ
+ test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-7: BEHqqb4BSZutqvSeHs_18g
+ test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-8: P0M4cIehS7C4o1P-pC6SIA
+ test-linux32-nightly/opt-mochitest-e10s-1: SNEWfW3qQb2P77Um1CCCAQ
+ test-linux32-nightly/opt-mochitest-e10s-2: Dk6kSwqyQrqKLkZZcQDnNw
+ test-linux32-nightly/opt-mochitest-e10s-3: df63Sxm3Rna7cYGgigcWkA
+ test-linux32-nightly/opt-mochitest-e10s-4: crFp7gOATo-UxtQGTs-urg
+ test-linux32-nightly/opt-mochitest-e10s-5: Jz_kLW_wSoyFgOyVDArzcw
+ test-linux32-nightly/opt-mochitest-gpu-e10s: apppS9fNTVKeOcu1y8JOBw
+ test-linux32-nightly/opt-mochitest-media-e10s-1: Db6LilkZTNqq89gsA0bRpA
+ test-linux32-nightly/opt-mochitest-media-e10s-2: XpCkuk3FTxqNebLWQxTftQ
+ test-linux32-nightly/opt-mochitest-media-e10s-3: OV0OnxnUQ12_cM1VJyQlKQ
+ test-linux32-nightly/opt-mochitest-webgl1-core-e10s: O4tPc1rBRFSOPmi5x3Hm8Q
+ test-linux32-nightly/opt-reftest-e10s-1: Ts5wkkfoQnm4v-z5kYBy3g
+ test-linux32-nightly/opt-reftest-e10s-2: LTrolNj2RO264GNe3I97oQ
+ test-linux32-nightly/opt-reftest-e10s-3: KIJdfqqHROemmCkdPxrBJw
+ test-linux32-nightly/opt-reftest-e10s-4: HEF6L0beRu6Rdj-_7LRGMw
+ test-linux32-nightly/opt-reftest-e10s-5: dP3sPG5sRcyO5koXpbo_4A
+ test-linux32-nightly/opt-reftest-e10s-6: Lcp8qmZaSi-ziCtBMD4zyQ
+ test-linux32-nightly/opt-reftest-e10s-7: LEH7D21TTImzaKcdq5kYCA
+ test-linux32-nightly/opt-reftest-e10s-8: GGDrh3u8QrmMPbwfv04KgA
+ test-linux32-nightly/opt-reftest-no-accel-e10s-1: DAhqB4SCQ2y0PmYGuM8A4w
+ test-linux32-nightly/opt-reftest-no-accel-e10s-2: abpHeo36TRmMougGwEJLdw
+ test-linux32-nightly/opt-reftest-no-accel-e10s-3: LbcCpNATRkmT_A18ysjwbg
+ test-linux32-nightly/opt-reftest-no-accel-e10s-4: Zf3uxBgkRzuKUajodsdFWw
+ test-linux32-nightly/opt-reftest-no-accel-e10s-5: eUwg4ySyQHy9xmD-u63hNw
+ test-linux32-nightly/opt-reftest-no-accel-e10s-6: AmX3tHgKSIGEU9bR3kJQ2w
+ test-linux32-nightly/opt-reftest-no-accel-e10s-7: T6wNztvYS5WfHjdswmf__Q
+ test-linux32-nightly/opt-reftest-no-accel-e10s-8: MUayms7FRh6CjSVcp3FW-A
+ test-linux32-nightly/opt-web-platform-tests-e10s-1: eRC9J1oNSQSGa0jTIB0nLQ
+ test-linux32-nightly/opt-web-platform-tests-e10s-10: WQxQIasbT7OmhK-9JHgBFA
+ test-linux32-nightly/opt-web-platform-tests-e10s-11: P4WJkiBZSHyji2aK9kKE3A
+ test-linux32-nightly/opt-web-platform-tests-e10s-12: VKDR4nUFSeCuNJ_SburCbg
+ test-linux32-nightly/opt-web-platform-tests-e10s-2: RQXxOfRPTOaUMxh2At9O5Q
+ test-linux32-nightly/opt-web-platform-tests-e10s-3: XXN8UGf1RSCs2SmTpke7jQ
+ test-linux32-nightly/opt-web-platform-tests-e10s-4: MijSfbGNSjygPlyNvDQ7jQ
+ test-linux32-nightly/opt-web-platform-tests-e10s-5: bRQhBEcASKKlLc5ktOxjIw
+ test-linux32-nightly/opt-web-platform-tests-e10s-6: H2LKl26xQBGk22u2nJmZyA
+ test-linux32-nightly/opt-web-platform-tests-e10s-7: D2AtE-7BRM6nkozpUpBmGQ
+ test-linux32-nightly/opt-web-platform-tests-e10s-8: aIXXkjNoQEGqluBOfVfHDg
+ test-linux32-nightly/opt-web-platform-tests-e10s-9: RLjdhK-qSVi8JhLOgBcI6Q
+ test-linux32-nightly/opt-web-platform-tests-reftests-e10s-1: cDTB_RPIQH2BI-1A1LtrDA
+ test-linux32-nightly/opt-web-platform-tests-reftests-e10s-2: KI9FS1rZRwSW_jix4oIk2w
+ test-linux32-nightly/opt-web-platform-tests-reftests-e10s-3: FnsPx5WCSxKWrdqAn6P_Og
+ test-linux32-nightly/opt-web-platform-tests-reftests-e10s-4: U04lHLLtR3aO1wM1kpEQVg
+ test-linux32-nightly/opt-web-platform-tests-reftests-e10s-5: KrnFTvukQcSSjUVdP4MTWw
+ test-linux32-nightly/opt-web-platform-tests-reftests-e10s-6: LkrzioEkSGe0ZlkkN7EYmA
+ test-linux32-nightly/opt-web-platform-tests-wdspec-e10s: Z6et_4CzRq-ZUO5AKqPoXQ
+ test-linux32-nightly/opt-xpcshell-1: SmV8Z0RYS6OJDyjTc87qhA
+ test-linux32-nightly/opt-xpcshell-2: UGIucizpRoq34qrR_7lDhg
+ test-linux32-nightly/opt-xpcshell-3: DYjlV-iETi2BqmDrzGyYgQ
+ test-linux32-nightly/opt-xpcshell-4: e69SjRl_T7e0Opm-dRnUyw
+ test-linux32-nightly/opt-xpcshell-5: EuzXV2-xS8eOz8H8J60nTw
+ test-linux32-nightly/opt-xpcshell-6: TpSS4GOjStmEYAchmYhGzA
+ test-linux32-nightly/opt-xpcshell-7: XEPWUpuLRtm_PD0nuharhQ
+ test-linux32-nightly/opt-xpcshell-8: UduDPE6LQoSxJPrFbh34Bg
+ test-linux32/debug-cppunit: OLHk3GAUTC2h5-racGOOJw
+ test-linux32/debug-crashtest: Dn6ldoWGTEyG4UBG2BqGig
+ test-linux32/debug-crashtest-e10s: fnhPQ7gxT-WfY3Aq3m_5jA
+ test-linux32/debug-firefox-ui-functional-local-e10s: YclvI4EpQMu4dpYV1Zjo2A
+ test-linux32/debug-firefox-ui-functional-remote-e10s: RZFTRYG_Qvi9mUbUo44G6Q
+ test-linux32/debug-gtest: CCyyLcQxRZisBuhh_iXRYQ
+ test-linux32/debug-marionette-e10s: IrgjKlyNRgGhrgRJh9a_-Q
+ test-linux32/debug-mochitest-1: KhIaxmxxSIihCWQOz37rPQ
+ test-linux32/debug-mochitest-10: EslHuVBdR8qIQ06Ju96agg
+ test-linux32/debug-mochitest-11: BeF-2svjSGKg0X-H1bGteg
+ test-linux32/debug-mochitest-12: ZCuxOeYFRiqV-n-6n35f4g
+ test-linux32/debug-mochitest-13: S53REvSDQlusx5eTKGwwdw
+ test-linux32/debug-mochitest-14: BlgZhRhGTC2u5rIKifCdnQ
+ test-linux32/debug-mochitest-15: EGm08UUoTMumMCPOInk0_A
+ test-linux32/debug-mochitest-16: EKfcPabSRNOH34V1CpCO3g
+ test-linux32/debug-mochitest-2: ObQUr1TWTiCUO_X_ONXKEg
+ test-linux32/debug-mochitest-3: JDBKvrYCTLOmYfCGflqbdA
+ test-linux32/debug-mochitest-4: VL6AK40ERse_QmQYGZ9bQQ
+ test-linux32/debug-mochitest-5: Y8e5uZ9QRsiqwI5KrqQ1aQ
+ test-linux32/debug-mochitest-6: FYQuk0IZR1S_FnWOv0ZY9A
+ test-linux32/debug-mochitest-7: ddBn-QJiQV2rlBwB2Y7wug
+ test-linux32/debug-mochitest-8: Xbp_gABmTv6pM3sT8Hf5rw
+ test-linux32/debug-mochitest-9: Td7nyZUkRlad9EwHHsYaVw
+ test-linux32/debug-mochitest-a11y: YDB6nybdQjOt2ZcofSrl7A
+ test-linux32/debug-mochitest-browser-chrome-e10s-1: VCkMNtDVTXm46ThwZDv4uA
+ test-linux32/debug-mochitest-browser-chrome-e10s-10: Ht8KOsWrQ9ixqMF8q1ueQQ
+ test-linux32/debug-mochitest-browser-chrome-e10s-11: I_gd95f1Q6m2oU3WxzbkCw
+ test-linux32/debug-mochitest-browser-chrome-e10s-12: bEz7sUBfS9qWQBpDDg-Wcw
+ test-linux32/debug-mochitest-browser-chrome-e10s-13: bNDh7t-VSIqvf8pLPzItWw
+ test-linux32/debug-mochitest-browser-chrome-e10s-14: WkJ0AK7qQReULMAqoFlmKQ
+ test-linux32/debug-mochitest-browser-chrome-e10s-15: AiXY3mI3T_6edRtxZIu71w
+ test-linux32/debug-mochitest-browser-chrome-e10s-16: Z2kvdN-KSfKkKRmzY0r_gg
+ test-linux32/debug-mochitest-browser-chrome-e10s-2: SukZJ2rnQ0W5vdqLK3a08g
+ test-linux32/debug-mochitest-browser-chrome-e10s-3: EGNm3AiQTP6df7rXOQhbdg
+ test-linux32/debug-mochitest-browser-chrome-e10s-4: YRqegZyeTfudcpzBEiGypA
+ test-linux32/debug-mochitest-browser-chrome-e10s-5: Y0oxOn9AQpqSwopHuocc7A
+ test-linux32/debug-mochitest-browser-chrome-e10s-6: Pr-VOROcRL6uO_uslc0t_w
+ test-linux32/debug-mochitest-browser-chrome-e10s-7: DwzJhDoRSve2PAH5qWsmHA
+ test-linux32/debug-mochitest-browser-chrome-e10s-8: cy3ufCR0TZep6Dzf7UdKVg
+ test-linux32/debug-mochitest-browser-chrome-e10s-9: T68yzrGtSy-uq5eXmbj5zg
+ test-linux32/debug-mochitest-chrome-1: d76Y5GF8SlGFPUICmiMNlQ
+ test-linux32/debug-mochitest-chrome-2: Q96WpnV2QyKwkQ0j_19dNA
+ test-linux32/debug-mochitest-chrome-3: VpQcUCZfQRuKK8bK2X0fbA
+ test-linux32/debug-mochitest-clipboard: dcI-4o95RJGw5wJhp1Zn6g
+ test-linux32/debug-mochitest-clipboard-e10s: BmRrkczrSia24-gdMu76fg
+ test-linux32/debug-mochitest-e10s-1: HjMXe2hlTeupGIiC0cJjQw
+ test-linux32/debug-mochitest-e10s-10: KLMG5vJjQ5eS3UEUH_R_Jg
+ test-linux32/debug-mochitest-e10s-11: Xdb2OCmaSlGKuRp1KhJ2Bw
+ test-linux32/debug-mochitest-e10s-12: YZ0uaQoiRi6rKUXw1grWuw
+ test-linux32/debug-mochitest-e10s-13: dm46hAU_R92n7X_v1FaBvA
+ test-linux32/debug-mochitest-e10s-14: UPwStxKeQbWhAG64X5Mg0A
+ test-linux32/debug-mochitest-e10s-15: eQYrwtTmRw29xxremSP_uQ
+ test-linux32/debug-mochitest-e10s-16: DqgL-wI9RUS0qccAFeCe1g
+ test-linux32/debug-mochitest-e10s-2: OTLUVRlLQ3qm56la1LXB5A
+ test-linux32/debug-mochitest-e10s-3: L_YOr8M6TvW-DZwUBTp2-Q
+ test-linux32/debug-mochitest-e10s-4: eF18rMLcRsGWfJfsNLcyJg
+ test-linux32/debug-mochitest-e10s-5: dliHVW9NSPaRDcvFZIJjjA
+ test-linux32/debug-mochitest-e10s-6: UYWaHz22RNCJbR8swesMJg
+ test-linux32/debug-mochitest-e10s-7: PzOxi8X4R2aEKFWMI9m9-g
+ test-linux32/debug-mochitest-e10s-8: cvcyN2lkSYOY7qpGylplGw
+ test-linux32/debug-mochitest-e10s-9: D3cZrYsKRuKkteZchkgwsg
+ test-linux32/debug-mochitest-gpu: R1xuGApaTmONarvsERGn5g
+ test-linux32/debug-mochitest-gpu-e10s: NPpva8CuSKKufLw3yB7pmg
+ test-linux32/debug-mochitest-media-e10s-1: Gj6OVTzBR2-54bsVtPBKbA
+ test-linux32/debug-mochitest-media-e10s-2: APXKeP8CSYyg7FeEYHsqGg
+ test-linux32/debug-mochitest-media-e10s-3: YNO1DkogSf2e1sWYB1oFAQ
+ test-linux32/debug-mochitest-webgl1-core: aULT36fYShCGxlfgdoFGAA
+ test-linux32/debug-mochitest-webgl1-core-e10s: RdxSzRabRlWmEWlPRr_icg
+ test-linux32/debug-reftest-1: e6Qr16ApSvWzOZn58tzJnQ
+ test-linux32/debug-reftest-2: eTeDlJKZQtqq2xSwlXcVlQ
+ test-linux32/debug-reftest-3: Osrs6Xa4T8aXi5vrYXS4yA
+ test-linux32/debug-reftest-4: ZRLCQf0cQmuJM5BtbVbT9A
+ test-linux32/debug-reftest-5: aCcmdsctRiGKuRkFhrkq3w
+ test-linux32/debug-reftest-6: XIggZ48aSTS4pmd_2ZUAGg
+ test-linux32/debug-reftest-7: OP2D9VrkR_ONTLrvkjlkCQ
+ test-linux32/debug-reftest-8: G40VWcsmSgy_KqaF3vuwCA
+ test-linux32/debug-reftest-e10s-1: KD9VDLPATpS1zCY1twJ3Ag
+ test-linux32/debug-reftest-e10s-2: FeZ_rmZSRmiwj3BLFqxArQ
+ test-linux32/debug-reftest-e10s-3: fp62BNSLR3-JqBYe2c21nA
+ test-linux32/debug-reftest-e10s-4: GZNYplqlQRO5Am9s_fM6YQ
+ test-linux32/debug-reftest-e10s-5: dCTk9lxtTyaceO1f3VbQgQ
+ test-linux32/debug-reftest-e10s-6: C6xd7S6HRGCp-8fw352U4Q
+ test-linux32/debug-reftest-e10s-7: b3g926OLSdKOS65erDpfXg
+ test-linux32/debug-reftest-e10s-8: L4Sg8dinSmev3VEl1j6ZqA
+ test-linux32/debug-reftest-no-accel-e10s-1: VjFF6TVYSFeGcoIN8fNWkw
+ test-linux32/debug-reftest-no-accel-e10s-2: ak9fVlpxTxS-3PvrOIGznA
+ test-linux32/debug-reftest-no-accel-e10s-3: YXK1i7H6Qd2jfq0jc-k-Rw
+ test-linux32/debug-reftest-no-accel-e10s-4: F59NX2p-Q-aJKE-zOa7j7g
+ test-linux32/debug-reftest-no-accel-e10s-5: aQoCO4k3TDCnCF-Nu92eAg
+ test-linux32/debug-reftest-no-accel-e10s-6: eo-sEirXTbqpgiJEzr3x3w
+ test-linux32/debug-reftest-no-accel-e10s-7: f657XHw9SJKtMbiVIjg0RA
+ test-linux32/debug-reftest-no-accel-e10s-8: IpNjp3waTzmjXF4Zw3oT5w
+ test-linux32/debug-web-platform-tests-1: eGilAUheSBeiKBa3XkMXqw
+ test-linux32/debug-web-platform-tests-10: eX-y6-K_Sh-dHy5lfxeaLQ
+ test-linux32/debug-web-platform-tests-11: OvuxHl-gQ5mJiu-WSl8Maw
+ test-linux32/debug-web-platform-tests-12: Vnk2Liw6SleQ_u9TiVfpRw
+ test-linux32/debug-web-platform-tests-13: Px1cebmKRki9c8j1kYPp2Q
+ test-linux32/debug-web-platform-tests-14: Q5iFFv6VT3mrTmQI--1tEg
+ test-linux32/debug-web-platform-tests-15: OTFAjys5TDuG6u-LmaXk1A
+ test-linux32/debug-web-platform-tests-16: WwgOq0qyTbGUIH5Vh6RNbQ
+ test-linux32/debug-web-platform-tests-17: GGSjYSBBQHGNemdMMM0qag
+ test-linux32/debug-web-platform-tests-18: FuQTRGSdT4uSd8rVKDKuWg
+ test-linux32/debug-web-platform-tests-2: T0WvG37oTzO_MsWDQIGakg
+ test-linux32/debug-web-platform-tests-3: Z72CFXpoRnqFmZ3eOrKqRQ
+ test-linux32/debug-web-platform-tests-4: TB5sEQ_iRnWPbOy28aR18Q
+ test-linux32/debug-web-platform-tests-5: TxVoIUzsRjCR8v1wMTGP-g
+ test-linux32/debug-web-platform-tests-6: KAedvH8lT9OF0NU26z8DLA
+ test-linux32/debug-web-platform-tests-7: GsKIIlJuQYqAkER2iz2RtQ
+ test-linux32/debug-web-platform-tests-8: Iv4hnMqHQuqoehQZguyssg
+ test-linux32/debug-web-platform-tests-9: RCJjL4C3T-GgC_Qx6nmUyw
+ test-linux32/debug-web-platform-tests-e10s-1: DDmY5SZDQMq75XENjoQu4Q
+ test-linux32/debug-web-platform-tests-e10s-10: IszBPSNgRw6TEcz6_RbgBA
+ test-linux32/debug-web-platform-tests-e10s-11: D15a8fAcRJ6_qGa4JCnKtg
+ test-linux32/debug-web-platform-tests-e10s-12: TQvyx-YaSme6VEnLse-VQw
+ test-linux32/debug-web-platform-tests-e10s-13: IriGxjSXTISzVtVJR6cQ3A
+ test-linux32/debug-web-platform-tests-e10s-14: WCJLM1QIQS6-9c_yi5PaRg
+ test-linux32/debug-web-platform-tests-e10s-15: CBkKwkBcTQita5Wvj12Aog
+ test-linux32/debug-web-platform-tests-e10s-16: Ilmd94l8QPuH1thfId94mw
+ test-linux32/debug-web-platform-tests-e10s-17: AHwBwBvoTmyMHAaRvC21SQ
+ test-linux32/debug-web-platform-tests-e10s-18: KxYD1UdhRCKEISsnVD-aaA
+ test-linux32/debug-web-platform-tests-e10s-2: Q-Ogz37KQWKtSavBrNgjUw
+ test-linux32/debug-web-platform-tests-e10s-3: e-1Hxx9eS12NBBAJ9f5OeA
+ test-linux32/debug-web-platform-tests-e10s-4: QjDGCJ_HSwq0cIyxeqiRuQ
+ test-linux32/debug-web-platform-tests-e10s-5: J9r2oJHNSlSS_qTFkYBrZw
+ test-linux32/debug-web-platform-tests-e10s-6: IUxO6-4uTOic0iyaz2jlrw
+ test-linux32/debug-web-platform-tests-e10s-7: AZviKb77RFu1s-ieP5tbWw
+ test-linux32/debug-web-platform-tests-e10s-8: TsECj-DNQTurMXs6CNfViA
+ test-linux32/debug-web-platform-tests-e10s-9: DQnQ_pdqSZmU7tS-4MAQog
+ test-linux32/debug-web-platform-tests-reftests-1: I0jyrWg9RzCqPldc_-ClQA
+ test-linux32/debug-web-platform-tests-reftests-2: QUiepn5uSoy2wms3IHmBTA
+ test-linux32/debug-web-platform-tests-reftests-3: dghY6AL3Rxy8UrRN7_pBbw
+ test-linux32/debug-web-platform-tests-reftests-4: aPlXWXcWQL6K3MLoPyyR4w
+ test-linux32/debug-web-platform-tests-reftests-5: SEXuBd1pStuaHp1uw5RK0w
+ test-linux32/debug-web-platform-tests-reftests-6: WB9e6EXlTOKQXBrXlW5BoQ
+ test-linux32/debug-web-platform-tests-reftests-e10s-1: ZOcale_1R7a_x2K23g31Vw
+ test-linux32/debug-web-platform-tests-reftests-e10s-2: Yk2pggQjSyiswWBMaHxPiQ
+ test-linux32/debug-web-platform-tests-reftests-e10s-3: K3YNrVxaTjWlKVgRaRCfLQ
+ test-linux32/debug-web-platform-tests-reftests-e10s-4: M8AnSaY0ToyJvVClYvyTPA
+ test-linux32/debug-web-platform-tests-reftests-e10s-5: YDMMfixBQCKFVp4xAxsQ9A
+ test-linux32/debug-web-platform-tests-reftests-e10s-6: ZXydNs6tTIuUFSJ8NSuRiw
+ test-linux32/debug-web-platform-tests-wdspec-e10s: KeoGsDXXRI2MlbEUrk0HKw
+ test-linux32/debug-xpcshell-1: DropJjywROKl1EnwUKpvZw
+ test-linux32/debug-xpcshell-10: OWit4m86Rieeun_9J_Z6_A
+ test-linux32/debug-xpcshell-11: K6sbcpORSTWJLMFvhkLG-w
+ test-linux32/debug-xpcshell-12: SuTPv7CfTbOhPHxSdiFD7g
+ test-linux32/debug-xpcshell-2: PIq_9SB3SUarLEjX7Nju7Q
+ test-linux32/debug-xpcshell-3: KVZ6kE-FQMSaSyeRKeHgXg
+ test-linux32/debug-xpcshell-4: Qun9hsT1TYyUTJydO9XuDg
+ test-linux32/debug-xpcshell-5: e5ICZEaKQZySLNbunjb2lA
+ test-linux32/debug-xpcshell-6: KTKPjq3nTiasQti_3Hi7ag
+ test-linux32/debug-xpcshell-7: YFuJr9UQQ9ae_FvoZtbEPA
+ test-linux32/debug-xpcshell-8: LYBkafx-THWcT-O7zmjDRA
+ test-linux32/debug-xpcshell-9: Fre3PYxIQjqRiwhfWHXx2Q
+ test-linux64-asan/opt-cppunit: aAcpV4iZTtuYwWdcOesW9w
+ test-linux64-asan/opt-crashtest-e10s: dD7tMnRJQg27zpT2y2nwEQ
+ test-linux64-asan/opt-firefox-ui-functional-local-e10s: DMkDPcMpRhiDx7FddbNKrg
+ test-linux64-asan/opt-firefox-ui-functional-remote-e10s: djGcA7ZXQ72Oolbtivik7Q
+ test-linux64-asan/opt-gtest: Om4JwJm8RpiycwIWUItMoA
+ test-linux64-asan/opt-marionette-e10s: DL1pKx-BTs6lmX1w7Z3OOg
+ test-linux64-asan/opt-marionette-headless-e10s: XeTRPbSQQ-eu1mfFAAOXqw
+ test-linux64-asan/opt-mochitest-a11y: TH3iGsCFQS-S_heQ4eZVoA
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-1: V8J4TK0ZQaqGfZ-00AtVTg
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-10: dNwgG-jPQHuo1fgCnCx9Nw
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-11: F1NHPCQaQqGP_f4bHscMYQ
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-12: PKgy6vibQeidPDp97MdtkA
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-13: LsM9ZDngSye22udXSurIpA
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-14: TLRf5VmARvaWT7k4NndAqQ
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-15: SiEr9B_eRSuFx3PA6edCwg
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-16: OuOe9_ACTJWesEAlknUOaA
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-2: b6KcipG4TQ-fdXasthcpoQ
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-3: SedD8Mv3Tt6b_LP8EmDa_A
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-4: AIY8xqU7TuaPXnXndUzgCQ
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-5: GPLu8tdxSbi_mCaLTJfCTQ
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-6: FmxiU2EnQ-aLP0NCgQ5_8Q
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-7: ew-B5wQOTnSGglykyOWYfw
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-8: YSsf3dWUQliAzGH_IaQZsw
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-9: HBT68uolR0-pOywpNVbeGQ
+ test-linux64-asan/opt-mochitest-chrome-1: LfuIWnQDSKGanb--MFa-jA
+ test-linux64-asan/opt-mochitest-chrome-2: QDqUVT5zRj6NaE4DdBIogw
+ test-linux64-asan/opt-mochitest-chrome-3: FPCMVLIjQ1K3q7xEjrNzlw
+ test-linux64-asan/opt-mochitest-clipboard-e10s: ecyh-iVpS42O8NYcC9QUSg
+ test-linux64-asan/opt-mochitest-devtools-chrome-e10s-1: KdkAMvfgSr-EW_uUfpomUQ
+ test-linux64-asan/opt-mochitest-devtools-chrome-e10s-2: JnWFVVQaRZSO17HfB96jXQ
+ test-linux64-asan/opt-mochitest-devtools-chrome-e10s-3: YOhxF82lTWiEX-Fi9SIX8w
+ test-linux64-asan/opt-mochitest-devtools-chrome-e10s-4: YSw-rDY4Q0KM5KGXTh_MFA
+ test-linux64-asan/opt-mochitest-devtools-chrome-e10s-5: PZpHhMfKQYyM-V5IggtwDg
+ test-linux64-asan/opt-mochitest-devtools-chrome-e10s-6: PxvW_b9DRlKdkBeDZ6mH7g
+ test-linux64-asan/opt-mochitest-devtools-chrome-e10s-7: b_AqXTDsTY2ppYzmDoHgbw
+ test-linux64-asan/opt-mochitest-devtools-chrome-e10s-8: H0gIxPD9RI6k_G2yL1TsMw
+ test-linux64-asan/opt-mochitest-e10s-1: cLKNkGfOQ4iebczTcUNVeQ
+ test-linux64-asan/opt-mochitest-e10s-10: My1C2HZYRXOwH3LtajnMZQ
+ test-linux64-asan/opt-mochitest-e10s-2: d_vxROhlT6WaY-4kuQ8GNA
+ test-linux64-asan/opt-mochitest-e10s-3: axIvuFstQ6ytPSRbRmS4fQ
+ test-linux64-asan/opt-mochitest-e10s-4: FgMtJP5FR5KyNVaZCF_HFA
+ test-linux64-asan/opt-mochitest-e10s-5: DyGGbdN-Qh2BTch0mMAf-g
+ test-linux64-asan/opt-mochitest-e10s-6: QBwyAwGVRNidmQAu22TA4g
+ test-linux64-asan/opt-mochitest-e10s-7: BEPa_302RmK5vvS62VOLrw
+ test-linux64-asan/opt-mochitest-e10s-8: G29NpvqoQQGSbHSkjs3HYw
+ test-linux64-asan/opt-mochitest-e10s-9: DHsDPpv6SN6Mwp9jZ6pBBw
+ test-linux64-asan/opt-mochitest-gpu-e10s: CU0CsfaxT7arvzzXTqBa9w
+ test-linux64-asan/opt-mochitest-media-e10s-1: e5JJlV-VSXSERLviLF70hA
+ test-linux64-asan/opt-mochitest-media-e10s-2: QYs1ivl_QWGesGO_TyBZyg
+ test-linux64-asan/opt-mochitest-media-e10s-3: UtdNnYOlTDaWR_NYIsQVZQ
+ test-linux64-asan/opt-mochitest-webgl1-core-e10s: HkPrHO2HQ9GAP6XRkpkAPQ
+ test-linux64-asan/opt-mochitest-webgl1-ext-e10s: IOBAOF4GSnmsklVIhAT_VQ
+ test-linux64-asan/opt-reftest-e10s-1: Ih7_O2f5Rze7WzxhAU7yIw
+ test-linux64-asan/opt-reftest-e10s-2: LhIrSa1ZSWuMqoaHSj06IA
+ test-linux64-asan/opt-reftest-e10s-3: TYT1vtRmQKiatixvnouNCg
+ test-linux64-asan/opt-reftest-e10s-4: XjL03xMQR1Gz9Svs4750-w
+ test-linux64-asan/opt-reftest-e10s-5: MQRFNMk5Rtau_6c2zEKcJg
+ test-linux64-asan/opt-reftest-e10s-6: Jw7c7mAuQSWnFklPEP5MhQ
+ test-linux64-asan/opt-reftest-e10s-7: SMBrUtaSQ66tc7rzXgjuFw
+ test-linux64-asan/opt-reftest-e10s-8: fn7sxlCiQ4aJuTaqM0gEAQ
+ test-linux64-asan/opt-reftest-no-accel-e10s-1: bbPUTmO-QT2-7mYoFyAcOg
+ test-linux64-asan/opt-reftest-no-accel-e10s-2: LGVe1WM6SsO0xmpFNHAEnA
+ test-linux64-asan/opt-reftest-no-accel-e10s-3: bPPwnCK0Q5O583QNIgOOsQ
+ test-linux64-asan/opt-reftest-no-accel-e10s-4: XdXlnGpzTDulEFmObD8oCg
+ test-linux64-asan/opt-reftest-no-accel-e10s-5: aK6g4etMTqeZXwvMK3vgOA
+ test-linux64-asan/opt-reftest-no-accel-e10s-6: c1CUF8G0Sx-NIBot_fcr-g
+ test-linux64-asan/opt-reftest-no-accel-e10s-7: AC9MWe3CSmiIywLyhv-2Cw
+ test-linux64-asan/opt-reftest-no-accel-e10s-8: YjCEqabIRK2MxRwYrAi9IQ
+ test-linux64-asan/opt-telemetry-tests-client-e10s: AleNPXuETn-CG8HBE09nxw
+ test-linux64-asan/opt-web-platform-tests-e10s-1: ImyA-70MSJyL6caHkRQkkw
+ test-linux64-asan/opt-web-platform-tests-e10s-10: Gl_L4ZaiTUW5a7oBq-Nlzg
+ test-linux64-asan/opt-web-platform-tests-e10s-11: QETh5-t0T7Oxsk99xsVtXw
+ test-linux64-asan/opt-web-platform-tests-e10s-12: fn6E9rFrSv-T8qz3uNrIMw
+ test-linux64-asan/opt-web-platform-tests-e10s-2: ZzHbZfo6SPqskJx7eA0n1A
+ test-linux64-asan/opt-web-platform-tests-e10s-3: LZUqKFBoR6WK3Od_0z924A
+ test-linux64-asan/opt-web-platform-tests-e10s-4: YMhQyd51SpWMzlH-wCAGfQ
+ test-linux64-asan/opt-web-platform-tests-e10s-5: DuLygXDNT_WT-S2sh7Qijg
+ test-linux64-asan/opt-web-platform-tests-e10s-6: Wyoin6VxQLGKngtIkl_Shg
+ test-linux64-asan/opt-web-platform-tests-e10s-7: dkmcbEnMQ6yjs_pVuqlsjw
+ test-linux64-asan/opt-web-platform-tests-e10s-8: cRnQPSv5T4SD4iFL4WeBqg
+ test-linux64-asan/opt-web-platform-tests-e10s-9: Ebc-X-5zRWGm49ZuXgjXYw
+ test-linux64-asan/opt-web-platform-tests-reftests-e10s-1: EkpA7sb_SnOCGtFovSRYAA
+ test-linux64-asan/opt-web-platform-tests-reftests-e10s-2: THKMsmAmQ0K06Of_-9kqxw
+ test-linux64-asan/opt-web-platform-tests-reftests-e10s-3: I_CoyKApTfGbQWHymcRcow
+ test-linux64-asan/opt-web-platform-tests-reftests-e10s-4: XCcxaOivS8i30XFV_R6iKQ
+ test-linux64-asan/opt-web-platform-tests-reftests-e10s-5: UxSwRLdtTiOTzbR5wua70g
+ test-linux64-asan/opt-web-platform-tests-reftests-e10s-6: NZXTomp7TH6CoAJFyBwTQA
+ test-linux64-asan/opt-web-platform-tests-wdspec-e10s: ClXgzy9MTZCdEucG2oUhlA
+ test-linux64-asan/opt-xpcshell-1: YTsOlqYnRpyNxC5I0LiIIw
+ test-linux64-asan/opt-xpcshell-2: UIqGH5zOSsOeX-nhymXazg
+ test-linux64-asan/opt-xpcshell-3: Y_salFF1QnGPDOsmkVbsxg
+ test-linux64-asan/opt-xpcshell-4: X1h0v5RAQyeKiSHg2LfbYQ
+ test-linux64-asan/opt-xpcshell-5: btl6bJOfRsOqS-Vwac8DVw
+ test-linux64-asan/opt-xpcshell-6: IfaHB_haTPqoMACQdGqF-A
+ test-linux64-asan/opt-xpcshell-7: Z6zEBor1RQ6L0OQkGd1DoQ
+ test-linux64-asan/opt-xpcshell-8: Lt7IyA1lQqClWRGI0iDGsg
+ test-linux64-devedition/opt-cppunit: NWf3sxBxQRasRZImqM2kkw
+ test-linux64-devedition/opt-crashtest-e10s: feLvaH10Rlu5huP9o5Xbjw
+ test-linux64-devedition/opt-firefox-ui-functional-local-e10s: Y3eHI7T6Qz2i7yEGTrXTIQ
+ test-linux64-devedition/opt-firefox-ui-functional-remote-e10s: NUU7BgJUQPOdlixTCVkjTQ
+ test-linux64-devedition/opt-marionette-e10s: Ao-N-Fw4Tt2USc7TRGnbhA
+ test-linux64-devedition/opt-marionette-headless-e10s: RzZ48exOQmasYdcvY6-MQA
+ test-linux64-devedition/opt-mochitest-a11y: YEC3d0B-TqWfp6MNwAmvJQ
+ test-linux64-devedition/opt-mochitest-browser-chrome-e10s-1: AjwMDvg0RGGw59T_6M6zpw
+ test-linux64-devedition/opt-mochitest-browser-chrome-e10s-2: Hg3YmSJXRSmqFG1UiAU_1w
+ test-linux64-devedition/opt-mochitest-browser-chrome-e10s-3: I16zdVUlQ-uN8ET_QRv-Zg
+ test-linux64-devedition/opt-mochitest-browser-chrome-e10s-4: fqcbkK7FTz2kAkt35UlTrQ
+ test-linux64-devedition/opt-mochitest-browser-chrome-e10s-5: LWKFT-1CR5yp21ZH69z6lA
+ test-linux64-devedition/opt-mochitest-browser-chrome-e10s-6: Ai00MlbcQwilnldlxUugDg
+ test-linux64-devedition/opt-mochitest-browser-chrome-e10s-7: SKFEAsO8QjaBTJgoXxp51g
+ test-linux64-devedition/opt-mochitest-chrome-1: WxGJUsrJQi6ZTsAIRlMZeA
+ test-linux64-devedition/opt-mochitest-chrome-2: G1A-bavGTAGK0etUo9aJZg
+ test-linux64-devedition/opt-mochitest-chrome-3: KXo5YpILS6eOWzEgL4S8DA
+ test-linux64-devedition/opt-mochitest-clipboard-e10s: A1K3RNw3S7irHLttZzJPeA
+ test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-1: FrU9eb9bRgeqFpgJJJGmdg
+ test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-2: ZWTurwk-R6qqjDY8dCYXSg
+ test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-3: LXoxvXULTXaE4w1cw_zPuw
+ test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-4: JVkhzKuwQSKRLEUmDYm-OQ
+ test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-5: JWu3CooGRA6dJbibMTl-_g
+ test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-6: FVw1GO_ST0q-LLjEaGYydQ
+ test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-7: Uc4G436kTKa6wX5NtegAOA
+ test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-8: LAiP0yylTOi1W-JRzsVjuQ
+ test-linux64-devedition/opt-mochitest-e10s-1: MWDhWVwVTjeV_31_NvmTEw
+ test-linux64-devedition/opt-mochitest-e10s-2: K6pnD7fkSwCIJUt-1v-e4A
+ test-linux64-devedition/opt-mochitest-e10s-3: SJbPGY93Q0O8c0kvMSpMEg
+ test-linux64-devedition/opt-mochitest-e10s-4: NESFg-OaRhewQtC9rsJwag
+ test-linux64-devedition/opt-mochitest-e10s-5: Z7DUAKL5RwWFl2B3EEkXrw
+ test-linux64-devedition/opt-mochitest-gpu-e10s: buQ_ig4lRqC6JaSPvozDlw
+ test-linux64-devedition/opt-mochitest-media-e10s-1: SXENcF9aRFGEU8WWa2gfSQ
+ test-linux64-devedition/opt-mochitest-media-e10s-2: QX7tZgVFRRWdbPi4UNvg_Q
+ test-linux64-devedition/opt-mochitest-media-e10s-3: Ies5_U7eRPOF1osla7RcVg
+ test-linux64-devedition/opt-mochitest-webgl1-core-e10s: TTl5QntNSEGsbNRTrhJOsA
+ test-linux64-devedition/opt-mochitest-webgl1-ext-e10s: Lo8Qb0j7Qzu8fgzvMlD3-g
+ test-linux64-devedition/opt-reftest-e10s-1: IzYLiGq1TJKpWTYVyDMViw
+ test-linux64-devedition/opt-reftest-e10s-2: Cvz8OnO3TOelJPmA5kFjvA
+ test-linux64-devedition/opt-reftest-e10s-3: Cf49y0pNQiirLz0a2ZfZ-g
+ test-linux64-devedition/opt-reftest-e10s-4: NzJhA7bXQpmFB0tB7REZLg
+ test-linux64-devedition/opt-reftest-e10s-5: G7tlvFI8R9W65Qk1JLq2mw
+ test-linux64-devedition/opt-reftest-e10s-6: I_CSfAbTRdy06PV2g6ECqA
+ test-linux64-devedition/opt-reftest-e10s-7: YyZi7i0eSWCy1SKW569D6w
+ test-linux64-devedition/opt-reftest-e10s-8: V9r9q6GsSV-DkfWvdO4taw
+ test-linux64-devedition/opt-reftest-no-accel-e10s-1: LpHF--9RShuLnOm3bpU_DA
+ test-linux64-devedition/opt-reftest-no-accel-e10s-2: R86YKKVFTPCpJ6r0PVReuw
+ test-linux64-devedition/opt-reftest-no-accel-e10s-3: ZLBpzOHYTqi129RnpFgUTQ
+ test-linux64-devedition/opt-reftest-no-accel-e10s-4: Iux_at0bS76kJH1LMuupYQ
+ test-linux64-devedition/opt-reftest-no-accel-e10s-5: IvqZqGD1QDmY0WSqvItYJQ
+ test-linux64-devedition/opt-reftest-no-accel-e10s-6: BwHJlF4oQ6e9oNQYKu7aeA
+ test-linux64-devedition/opt-reftest-no-accel-e10s-7: DE-ckDCHQfGqd9P0a1-Chg
+ test-linux64-devedition/opt-reftest-no-accel-e10s-8: L7QBVkUcTfmn4C7o4wTJvg
+ test-linux64-devedition/opt-telemetry-tests-client-e10s: StXCVCCeTOmAw7_j4uK0_A
+ test-linux64-devedition/opt-web-platform-tests-e10s-1: QGEz0YMrQlyVdWl3k5Jr7A
+ test-linux64-devedition/opt-web-platform-tests-e10s-10: H2DfLTDzSvqiHE2m-3Pqgg
+ test-linux64-devedition/opt-web-platform-tests-e10s-11: bYGh21ImRUif6_Xzfcuhyw
+ test-linux64-devedition/opt-web-platform-tests-e10s-12: T9UsGttBSPqQ7JuEn2m49w
+ test-linux64-devedition/opt-web-platform-tests-e10s-2: aSdkxmnORZamTkPYxC3E8g
+ test-linux64-devedition/opt-web-platform-tests-e10s-3: TWDxDzWPSu-IIhQcN0MDBQ
+ test-linux64-devedition/opt-web-platform-tests-e10s-4: TGIztwZ4SDqEnqwsLHXLBA
+ test-linux64-devedition/opt-web-platform-tests-e10s-5: Ztt1hEGeTnm43iNOrK3q2A
+ test-linux64-devedition/opt-web-platform-tests-e10s-6: XQ3Q44Z5RueZfNXVaEL9dA
+ test-linux64-devedition/opt-web-platform-tests-e10s-7: I8pMSDNKTYW33m4k3UtVyw
+ test-linux64-devedition/opt-web-platform-tests-e10s-8: cLbOaHkoSUKlp2bExeNrcA
+ test-linux64-devedition/opt-web-platform-tests-e10s-9: XFLTitlIQRiyaCVYujh19Q
+ test-linux64-devedition/opt-web-platform-tests-reftests-e10s-1: ZlT-pJjSTIS-BXU8lqXPPg
+ test-linux64-devedition/opt-web-platform-tests-reftests-e10s-2: bArVlGXZQGqYOg6M4fcokQ
+ test-linux64-devedition/opt-web-platform-tests-reftests-e10s-3: BbwP26qMQS6U7S-GN8Ocgw
+ test-linux64-devedition/opt-web-platform-tests-reftests-e10s-4: ZgApl3mmS1CACds1cZyxxg
+ test-linux64-devedition/opt-web-platform-tests-reftests-e10s-5: IhfhWLV7Rj6SsnuKVYe4eA
+ test-linux64-devedition/opt-web-platform-tests-reftests-e10s-6: bZbgEtxJT228Odwbk3WDmA
+ test-linux64-devedition/opt-web-platform-tests-wdspec-e10s: E_0p5e5dRgGfBlJcYZfv4A
+ test-linux64-devedition/opt-xpcshell-1: Ej0nQ0g0QCCaUPv71VJk9w
+ test-linux64-devedition/opt-xpcshell-2: I0jhNN46S4mVrK1msK3WAw
+ test-linux64-devedition/opt-xpcshell-3: GGN5Ot0BQ2Wzf5hrcyGACA
+ test-linux64-devedition/opt-xpcshell-4: Ru7ZELnaQsCdSsbLNGkFjg
+ test-linux64-devedition/opt-xpcshell-5: FiCNmmX-SL-YE3GUX5hwtA
+ test-linux64-devedition/opt-xpcshell-6: H2Vuk4uyTU6blNzh4es80Q
+ test-linux64-devedition/opt-xpcshell-7: KpylruJPQlWbFWnWsui63w
+ test-linux64-devedition/opt-xpcshell-8: Pzu5kmodTCWPfvrvFHJ94Q
+ test-linux64-nightly/opt-awsy-base-e10s: X2lyIjSNTWCJpVXnog94LA
+ test-linux64-nightly/opt-awsy-e10s: JusiIc6dSBe3GNiq3MjaXw
+ test-linux64-nightly/opt-cppunit: BqfL3Z3ZSdGaaVKZ2w13Tg
+ test-linux64-nightly/opt-crashtest-e10s: HBadm75jQXCSSI4plw3iug
+ test-linux64-nightly/opt-firefox-ui-functional-local-e10s: baXnArzCTlK8uuVqeIxQ4g
+ test-linux64-nightly/opt-firefox-ui-functional-remote-e10s: OEbTUmS9RcubiXFRAodIvw
+ test-linux64-nightly/opt-gtest: A9NXDwIBSQm2PlpHUjrIPg
+ test-linux64-nightly/opt-marionette-e10s: OpZcYkJNRi28CY4YoKUe6w
+ test-linux64-nightly/opt-marionette-headless-e10s: JLxEWdFJTYSqne1T5Q6VXw
+ test-linux64-nightly/opt-mochitest-a11y: P3px5dvVQFmRHRVeyKnarg
+ test-linux64-nightly/opt-mochitest-browser-chrome-e10s-1: KPQgJCfmRVW-7QAxupi2Xg
+ test-linux64-nightly/opt-mochitest-browser-chrome-e10s-2: H4CkuwR1RfmURmf8YbHfLg
+ test-linux64-nightly/opt-mochitest-browser-chrome-e10s-3: P9NEkwQSSWmun_ifToYT0g
+ test-linux64-nightly/opt-mochitest-browser-chrome-e10s-4: E3xfg5BqS-GHPZoIBLkP5Q
+ test-linux64-nightly/opt-mochitest-browser-chrome-e10s-5: AEeLCp7YTp-jso9NNWb2GQ
+ test-linux64-nightly/opt-mochitest-browser-chrome-e10s-6: XWYs0oy5S5e-9NLCaY06AQ
+ test-linux64-nightly/opt-mochitest-browser-chrome-e10s-7: dw28TRLqT4W55pXvF0XTDg
+ test-linux64-nightly/opt-mochitest-chrome-1: KIh3NAp0RL6599-aG_zLEg
+ test-linux64-nightly/opt-mochitest-chrome-2: XOsXyCJ4Q7i0R_N1eUX8WA
+ test-linux64-nightly/opt-mochitest-chrome-3: aOuYrPLUSzCcaCp6APtjzQ
+ test-linux64-nightly/opt-mochitest-clipboard-e10s: Y_Q3pvuMR9qV4lGyHzorTg
+ test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-1: XeeU4q5aSMm5dxXYY116UQ
+ test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-2: JOyw4y4FTHKJWhluAW3nLA
+ test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-3: PgQjG6sxQcap-vzNgq1ZuQ
+ test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-4: bAk1SzNYS6SLW_gsJZYy4g
+ test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-5: ZJ0J5RpITY2GFv6L_lyKew
+ test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-6: aeLuc5a8RsWeppFv2GX-Xg
+ test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-7: b5MNRVadQvCsHGglBN336Q
+ test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-8: CEGyVgTgRROi6XlFCr5elg
+ test-linux64-nightly/opt-mochitest-e10s-1: QWtnM5A-Stmv0LnRjjfDFA
+ test-linux64-nightly/opt-mochitest-e10s-2: bLz5lCBBQ9-LRkmPA0d4KQ
+ test-linux64-nightly/opt-mochitest-e10s-3: fH5-GRtRSZq3i-fMsj48aw
+ test-linux64-nightly/opt-mochitest-e10s-4: BHsAWq2vTOeBVhHSb_9VCg
+ test-linux64-nightly/opt-mochitest-e10s-5: SrCN4p3HTTawxuqRwJ_W6w
+ test-linux64-nightly/opt-mochitest-gpu-e10s: Z3zMjT_DTguhyzbczyh_kw
+ test-linux64-nightly/opt-mochitest-media-e10s-1: DrF46eTrRguMQQlB86TZ3w
+ test-linux64-nightly/opt-mochitest-media-e10s-2: LCC1DHJ9RYOqRuoDlo7Pkg
+ test-linux64-nightly/opt-mochitest-media-e10s-3: dOks1GgjTaCpvt1tYYMD-Q
+ test-linux64-nightly/opt-mochitest-webgl1-core-e10s: KpHEzVtCR6OEWVKBgVsvNA
+ test-linux64-nightly/opt-mochitest-webgl1-ext-e10s: KmTSDArZS-qADjBS8ufQRw
+ test-linux64-nightly/opt-reftest-e10s-1: Kq1hkf3pSHudVyshKaLCqQ
+ test-linux64-nightly/opt-reftest-e10s-2: YyWDtH0rTC6B4eMJTlyG1Q
+ test-linux64-nightly/opt-reftest-e10s-3: CkZw8Sa0QiGo7G1cKA2GAg
+ test-linux64-nightly/opt-reftest-e10s-4: VoJ0PSoOR7-elfrZxva3xQ
+ test-linux64-nightly/opt-reftest-e10s-5: Aodb4N5zRUKadMz74bxiVA
+ test-linux64-nightly/opt-reftest-e10s-6: LQzt9T3hQHu2z3qfYAHGyw
+ test-linux64-nightly/opt-reftest-e10s-7: aslttJezRW-C_HENido8SA
+ test-linux64-nightly/opt-reftest-e10s-8: ImgnRYO5QNeAp4Zfp8aKOQ
+ test-linux64-nightly/opt-reftest-no-accel-e10s-1: RoQu0VO0Q2qElIvHSXfYpw
+ test-linux64-nightly/opt-reftest-no-accel-e10s-2: M4ZemfhhTKW8NSsnl9wywQ
+ test-linux64-nightly/opt-reftest-no-accel-e10s-3: KSmj5VuvQrWQvLk-E5lr-Q
+ test-linux64-nightly/opt-reftest-no-accel-e10s-4: Ch0MiX4LTEuBJb4Yv9SQVA
+ test-linux64-nightly/opt-reftest-no-accel-e10s-5: aXmKbkSwSUOceTIK3tHNeQ
+ test-linux64-nightly/opt-reftest-no-accel-e10s-6: EhCoGQERQMOXE_QgnqhBNQ
+ test-linux64-nightly/opt-reftest-no-accel-e10s-7: OAh0RkQwQHizxIMLaHl3hw
+ test-linux64-nightly/opt-reftest-no-accel-e10s-8: dFU4Kp0RRbmwC6--7mgfFA
+ test-linux64-nightly/opt-telemetry-tests-client-e10s: b-3UrY2JTDGOB3qkNVmfhQ
+ test-linux64-nightly/opt-web-platform-tests-e10s-1: G7wN36a_TOWZgx8eVKww1A
+ test-linux64-nightly/opt-web-platform-tests-e10s-10: S7fTzE9rR1WgLeZnlRWZXw
+ test-linux64-nightly/opt-web-platform-tests-e10s-11: HgOAWw0dThuwKZvQr9rfHQ
+ test-linux64-nightly/opt-web-platform-tests-e10s-12: Kg7grIx-R_GQRL8dnnO_zg
+ test-linux64-nightly/opt-web-platform-tests-e10s-2: H1Z1eZUQR6eoqB1olPIFSw
+ test-linux64-nightly/opt-web-platform-tests-e10s-3: TNHjbNzvRpmh8_V_Iud7yg
+ test-linux64-nightly/opt-web-platform-tests-e10s-4: YudF7VrORFOW0vwkv6Efmg
+ test-linux64-nightly/opt-web-platform-tests-e10s-5: IOMWnSM3QUq_MgAPDHKThQ
+ test-linux64-nightly/opt-web-platform-tests-e10s-6: Wrk6q0FFSXO720oN_u1SyQ
+ test-linux64-nightly/opt-web-platform-tests-e10s-7: Bqp7MkMKRqmAxm30bVvcHQ
+ test-linux64-nightly/opt-web-platform-tests-e10s-8: EuEjeG--QyOUVa6NSQ8ZPg
+ test-linux64-nightly/opt-web-platform-tests-e10s-9: SuGV_CbMTgOuvMY62Ctykg
+ test-linux64-nightly/opt-web-platform-tests-reftests-e10s-1: ERbDEc-ySRWpX4Sf5iKBHQ
+ test-linux64-nightly/opt-web-platform-tests-reftests-e10s-2: Tbdx2D_ySwSXWjKd9JmFqQ
+ test-linux64-nightly/opt-web-platform-tests-reftests-e10s-3: cW4fTd5mTN-IgTaQz7Ae6Q
+ test-linux64-nightly/opt-web-platform-tests-reftests-e10s-4: YZXto297T4uGMsAsh3ISpQ
+ test-linux64-nightly/opt-web-platform-tests-reftests-e10s-5: TkTcxoXXQHWOL3hL_PoLBw
+ test-linux64-nightly/opt-web-platform-tests-reftests-e10s-6: SdUub9ZSQrOgK9RDhZbVCA
+ test-linux64-nightly/opt-web-platform-tests-wdspec-e10s: eWsZ4LblS9aVUxhfC31o-A
+ test-linux64-nightly/opt-xpcshell-1: QgfTSkbnRpSOxKdxM0phAQ
+ test-linux64-nightly/opt-xpcshell-2: G8LkYr4vSNK6UJ7ld5mb7w
+ test-linux64-nightly/opt-xpcshell-3: U6Rwyi2gQeutdXre12ZElw
+ test-linux64-nightly/opt-xpcshell-4: V2VAwcC5RZuyxiddKprTTg
+ test-linux64-nightly/opt-xpcshell-5: R7Gpq792SNq7hDuEsCLdkg
+ test-linux64-nightly/opt-xpcshell-6: XM9B1hNKRqOMl6mwWm92BQ
+ test-linux64-nightly/opt-xpcshell-7: d7JdOBlDR7K7-11mNGMGLw
+ test-linux64-nightly/opt-xpcshell-8: I2D7xySKTBCIQb5_NpJkFA
+ test-linux64-qr/debug-cppunit: YZYZrC1KS2ag6h5CpBKa5A
+ test-linux64-qr/debug-crashtest-e10s: XTpnKCy8RA6WEdc8uDebTg
+ test-linux64-qr/debug-gtest: fAGExFoyRJuBSe2qS3Oj5w
+ test-linux64-qr/debug-mochitest-a11y: Ez--vwjVQAqo9fCnYLwdhw
+ test-linux64-qr/debug-mochitest-e10s-1: c4lLb4bjScKyhKMkeLkrxw
+ test-linux64-qr/debug-mochitest-e10s-10: fn4m02xtQwKSzB422KzrQw
+ test-linux64-qr/debug-mochitest-e10s-11: dPM6Qm0ySBeDwQDY5ZeEWQ
+ test-linux64-qr/debug-mochitest-e10s-12: G0QdtSn0T16PBv23dHMc9Q
+ test-linux64-qr/debug-mochitest-e10s-13: eb0TXR-WQu67-QXIwsGQ9w
+ test-linux64-qr/debug-mochitest-e10s-14: MCrTXwOWSN-dfQ8FlDY7Vg
+ test-linux64-qr/debug-mochitest-e10s-15: Qy-5WCEaSUu1Rgkctsj5bA
+ test-linux64-qr/debug-mochitest-e10s-16: dhqt8ZCXTrCSZWe9qZ8rHQ
+ test-linux64-qr/debug-mochitest-e10s-2: d7OOzBfsQ2CYxaac6PaAHg
+ test-linux64-qr/debug-mochitest-e10s-3: cl044nfoQFmTRrndQHE4AQ
+ test-linux64-qr/debug-mochitest-e10s-4: cFnrT8MuRS-tK94Ib6KnOQ
+ test-linux64-qr/debug-mochitest-e10s-5: NxpWvceWS4KI3D3Bt237iA
+ test-linux64-qr/debug-mochitest-e10s-6: JrbyuAuQRaq4_Vkw-g7tmQ
+ test-linux64-qr/debug-mochitest-e10s-7: U5YYV2jJQvCu8tI2mHC4tw
+ test-linux64-qr/debug-mochitest-e10s-8: DKgCTpNgTHqJ2BafheFn3w
+ test-linux64-qr/debug-mochitest-e10s-9: CHlf63qIQ1GWjHL45kBwxA
+ test-linux64-qr/debug-mochitest-gpu-e10s: HJeahdnlS3OvCQfSVwi7Bg
+ test-linux64-qr/debug-mochitest-media-e10s-1: X9KZ-iAGTImMzZIG6PChYw
+ test-linux64-qr/debug-mochitest-media-e10s-2: KzFjSZF_SRyblwAfKr1vgw
+ test-linux64-qr/debug-mochitest-media-e10s-3: HUw9xn3SR8ib3G0d3zFMAQ
+ test-linux64-qr/debug-mochitest-webgl1-core-e10s: GvF9L16CTTmiUXtaozVYKw
+ test-linux64-qr/debug-reftest-e10s-1: fmnRLnUySQ6Wkf6NcqNh5w
+ test-linux64-qr/debug-reftest-e10s-2: Y9GqJhcISoeQmKwuKXPI1g
+ test-linux64-qr/debug-reftest-e10s-3: J2aL8gMSTWWdt5h_7dSxEg
+ test-linux64-qr/debug-reftest-e10s-4: A-UG5fRlROWq3wEes4p9IA
+ test-linux64-qr/debug-reftest-e10s-5: HJOn7jYxS32IL8L9TdO8WA
+ test-linux64-qr/debug-reftest-e10s-6: RTNQw456QxmFeMyG_ElQrA
+ test-linux64-qr/debug-reftest-e10s-7: LbCQTffnTra-gbZHOCkDgA
+ test-linux64-qr/debug-reftest-e10s-8: dZU-y2xHQO2QAANtrtN3ng
+ test-linux64-qr/debug-web-platform-tests-e10s-1: fX-UQuB2SCiWSNR_59BTvw
+ test-linux64-qr/debug-web-platform-tests-e10s-10: Ah8wxCEFTAG1queOeKG8eg
+ test-linux64-qr/debug-web-platform-tests-e10s-11: Qos9C9TARTCYEos0uerqSw
+ test-linux64-qr/debug-web-platform-tests-e10s-12: VMop8XwmQ52jldeERSI2ow
+ test-linux64-qr/debug-web-platform-tests-e10s-13: Ul8FQ-N5Q4O1iTgXiOHJIQ
+ test-linux64-qr/debug-web-platform-tests-e10s-14: IMR0ykw_RR-OEQPqq8GH0A
+ test-linux64-qr/debug-web-platform-tests-e10s-15: VQEFk-jPRw6dFFsRK7DyIg
+ test-linux64-qr/debug-web-platform-tests-e10s-16: DDdHWmmlTqK3VVsl2IXykw
+ test-linux64-qr/debug-web-platform-tests-e10s-17: NsuWJAo8ROKZCr7prkvc2Q
+ test-linux64-qr/debug-web-platform-tests-e10s-18: QoWdFiA-TH-bp8d6wicvKw
+ test-linux64-qr/debug-web-platform-tests-e10s-2: XI9yAxKPQ_WJljSiBGcyrA
+ test-linux64-qr/debug-web-platform-tests-e10s-3: LTxGSzbAQwGKTL5D4LFdjw
+ test-linux64-qr/debug-web-platform-tests-e10s-4: Qb7V9FlUQaeRVEfK77VdLQ
+ test-linux64-qr/debug-web-platform-tests-e10s-5: f5hGQdWfS7yOhpQm3wuzsw
+ test-linux64-qr/debug-web-platform-tests-e10s-6: Kx4sbvNuR5uAcQMomUrVGw
+ test-linux64-qr/debug-web-platform-tests-e10s-7: RBUTkVC3TLKuV8O4YWI16Q
+ test-linux64-qr/debug-web-platform-tests-e10s-8: Mp75pz5hRu6IsuMx2t3ylQ
+ test-linux64-qr/debug-web-platform-tests-e10s-9: B_KaezjpSySXRYF3xmkfmA
+ test-linux64-qr/debug-web-platform-tests-reftests-e10s-1: eVel8RwbQ8GRA0ki7WD2UQ
+ test-linux64-qr/debug-web-platform-tests-reftests-e10s-2: ahUKodQlRr-039iDEoz1Aw
+ test-linux64-qr/debug-web-platform-tests-reftests-e10s-3: IC7Jr-G2QOC1ZJbUXTE9xA
+ test-linux64-qr/debug-web-platform-tests-reftests-e10s-4: fprCNKD-TQiiasK9JIo7NA
+ test-linux64-qr/debug-web-platform-tests-reftests-e10s-5: cNXp8VUdT0uYsKtgqavMnQ
+ test-linux64-qr/debug-web-platform-tests-reftests-e10s-6: BC75lKytRRCinrpOx9XC6w
+ test-linux64-qr/debug-web-platform-tests-wdspec-e10s: GTpAlnF2TZGZOt_8WU5I1g
+ test-linux64-qr/debug-xpcshell-1: HQBaVQvyRJWafny32sgQvw
+ test-linux64-qr/debug-xpcshell-2: Su6aXhPMSWasMLkqZYpSjg
+ test-linux64-qr/debug-xpcshell-3: Ylql6wOyShek-m9KkPQ4sA
+ test-linux64-qr/debug-xpcshell-4: BXQ1lWhzSDKpMO-R_wxl2A
+ test-linux64-qr/debug-xpcshell-5: EJkaMufWRY6QJY2M-rSbAQ
+ test-linux64-qr/debug-xpcshell-6: D9MmZCZvQpW-89XOAc7nBA
+ test-linux64-qr/debug-xpcshell-7: WlveA1tbR1mpeydWKbCFrA
+ test-linux64-qr/debug-xpcshell-8: BGQCSurHS7SdQeSQ4DIJ3w
+ test-linux64-qr/opt-talos-chrome-e10s: Fur_SgEeQb2QiiAmKDTlUA
+ test-linux64-qr/opt-talos-damp-e10s: Ldr0T87VTTGOarOBBLplwA
+ test-linux64-qr/opt-talos-dromaeojs-e10s: JKaMqMOLSIG92xaJ5E54Pg
+ test-linux64-qr/opt-talos-g1-e10s: ISYeOgRaRoWf7xs7JhLp3g
+ test-linux64-qr/opt-talos-g3-e10s: NjKsY1zSSaC-iXXsiQRMog
+ test-linux64-qr/opt-talos-g4-e10s: NnOmj7RjSnyqyQzfc0YRew
+ test-linux64-qr/opt-talos-g5-e10s: HPGiOGBjSt22PTckSl1Vfg
+ test-linux64-qr/opt-talos-other-e10s: f6IUO3sRT--dvu3RCRKqEw
+ test-linux64-qr/opt-talos-speedometer-e10s: BtFjOIxySkmQQ9o-AnAk5w
+ test-linux64-qr/opt-talos-svgr-e10s: WkrHblrRTiOaYhU3dSZ34g
+ test-linux64-qr/opt-talos-tp5o-e10s: R7VFIdtwQai7-6vB4_J-ug
+ test-linux64-qr/opt-talos-tp6-e10s: C3Riq7liSaGbZ9IIourcQw
+ test-linux64-qr/opt-talos-tp6-stylo-threads-e10s: CIGvgNXkS9WHVnn8rMYd3w
+ test-linux64-qr/opt-talos-tps-e10s: eLNQ_PscQlqVyQA1O5rXBQ
+ test-linux64/debug-cppunit: B-WfpMvbTbSDOJNvf8Pj6w
+ test-linux64/debug-crashtest-e10s: DO5ucnbrSCaQ_0ua0e-CKA
+ test-linux64/debug-firefox-ui-functional-local-e10s: XonpKjuKQam943XB14FfqQ
+ test-linux64/debug-firefox-ui-functional-remote-e10s: GMaBJpSBRX-c4eVBME_hoQ
+ test-linux64/debug-gtest: BWg31UwMSNiNrKJqN5sK7Q
+ test-linux64/debug-marionette-e10s: OpmjiqfQTfSVSwTsGNuB8Q
+ test-linux64/debug-marionette-headless-e10s: AL9tNhMoSjm7jgmlNYZexA
+ test-linux64/debug-mochitest-a11y: MmHswxfaQoCXgWmTToiarQ
+ test-linux64/debug-mochitest-browser-chrome-e10s-1: BdpYysqvQa6JGmMAEzBAHw
+ test-linux64/debug-mochitest-browser-chrome-e10s-10: Bb20wc6nSMGi2KLQSg75fg
+ test-linux64/debug-mochitest-browser-chrome-e10s-11: UjAue-eMSvKPdmK9Ie243w
+ test-linux64/debug-mochitest-browser-chrome-e10s-12: EbV-CU06StSsLO5DTM5zAQ
+ test-linux64/debug-mochitest-browser-chrome-e10s-13: dpGiRGUwSeiPmpsvThVXmg
+ test-linux64/debug-mochitest-browser-chrome-e10s-14: Av3_nPUURfu5kahMbt-Pgw
+ test-linux64/debug-mochitest-browser-chrome-e10s-15: RnwUH3ZHRT6D_9vDK0CitQ
+ test-linux64/debug-mochitest-browser-chrome-e10s-16: NQX-_UQuQCCSW4EbrMdiqw
+ test-linux64/debug-mochitest-browser-chrome-e10s-2: UBIt2_EwStGjwMm-Yu3IKA
+ test-linux64/debug-mochitest-browser-chrome-e10s-3: e1r9C_DrS-6fDC1fHFpNyw
+ test-linux64/debug-mochitest-browser-chrome-e10s-4: AR9WjIOWSGC1Z0uH4iaL2Q
+ test-linux64/debug-mochitest-browser-chrome-e10s-5: JWxYpGYVS3aHCnf29pkRCA
+ test-linux64/debug-mochitest-browser-chrome-e10s-6: Pzmlwfx5R1yWMYM1G9tjpw
+ test-linux64/debug-mochitest-browser-chrome-e10s-7: eZTCUavMQieQGGkZLUfBJA
+ test-linux64/debug-mochitest-browser-chrome-e10s-8: MBN1uxm6T8-arWFT1jsz8g
+ test-linux64/debug-mochitest-browser-chrome-e10s-9: Id7lK26RQ6e0yijED32M0Q
+ test-linux64/debug-mochitest-chrome-1: BCExwmyYSBGs4Hk_rF3KRA
+ test-linux64/debug-mochitest-chrome-2: YZ-zU7TdTEOSORBA-4hgng
+ test-linux64/debug-mochitest-chrome-3: Y_l4OCRcR4yFWiC7iSmJmA
+ test-linux64/debug-mochitest-clipboard-e10s: Cepx4EW1SR2RtMM5CmvlbQ
+ test-linux64/debug-mochitest-devtools-chrome-e10s-1: ZdnQxHk_T_S120PvWDrvhg
+ test-linux64/debug-mochitest-devtools-chrome-e10s-2: TarA1cOFT5aUCQb9F3lrPQ
+ test-linux64/debug-mochitest-devtools-chrome-e10s-3: GQ6lmI9AS7aBTuT801zbpg
+ test-linux64/debug-mochitest-devtools-chrome-e10s-4: K7F6YOmHRpyUG4gDfzFHaQ
+ test-linux64/debug-mochitest-devtools-chrome-e10s-5: XEsuVhQ_SluJVDYVK_bDTw
+ test-linux64/debug-mochitest-devtools-chrome-e10s-6: SDb0zk4eTau0Oqh1hyMyDQ
+ test-linux64/debug-mochitest-devtools-chrome-e10s-7: RO6guGjMRMqTD7D7mQPuMQ
+ test-linux64/debug-mochitest-devtools-chrome-e10s-8: O-15Fqf0R46yq1shz6BcUQ
+ test-linux64/debug-mochitest-e10s-1: V4V2_oKqTGGpkk5mMQZEIg
+ test-linux64/debug-mochitest-e10s-10: LPbOIOhxQUGhglUkdAHngw
+ test-linux64/debug-mochitest-e10s-11: fuxufVp9TleUjiuJVp-4Tg
+ test-linux64/debug-mochitest-e10s-12: Uw1U5DclRNWjuvIDGCfNzw
+ test-linux64/debug-mochitest-e10s-13: Er0DrAdOTCKq6Cx0wZg-9g
+ test-linux64/debug-mochitest-e10s-14: czlLZyGcQ4izI1HsYgLCMg
+ test-linux64/debug-mochitest-e10s-15: Vnr8CrUfT225eq7qr21B4g
+ test-linux64/debug-mochitest-e10s-16: ck7v41ZWQTWFmPkUelVgUQ
+ test-linux64/debug-mochitest-e10s-2: PgF5GNSwQkGYbshSvx4xNA
+ test-linux64/debug-mochitest-e10s-3: TMrGijFeSSuXxeSzp8xthg
+ test-linux64/debug-mochitest-e10s-4: MV8XIgrsQXupj9t7_lNpZg
+ test-linux64/debug-mochitest-e10s-5: B1mWNcaETaC-H7V2b12DOg
+ test-linux64/debug-mochitest-e10s-6: TuAcRogDTQClOx3MCwLHUQ
+ test-linux64/debug-mochitest-e10s-7: G78XKZQvRnu6a1Aw_SWJSg
+ test-linux64/debug-mochitest-e10s-8: btYJfmqORUSx8_C_RhmIYQ
+ test-linux64/debug-mochitest-e10s-9: QM2yY5GyTgWRdJbcjYnvzw
+ test-linux64/debug-mochitest-gpu-e10s: SxjGhyYMTb-K3sOFA_b2Jw
+ test-linux64/debug-mochitest-media-e10s-1: akZAfk5ZS7C-OPDWQzM04g
+ test-linux64/debug-mochitest-media-e10s-2: RPOSpq5ERm2tANwP13rIiA
+ test-linux64/debug-mochitest-media-e10s-3: dsCfjIBET4KN4jliga2dZg
+ test-linux64/debug-mochitest-plain-headless-e10s-1: BOO32BmxR2mTE5Hr0I-FhA
+ test-linux64/debug-mochitest-plain-headless-e10s-10: B2VHVGIPRLWEkm-RBCslyg
+ test-linux64/debug-mochitest-plain-headless-e10s-11: WLVgSMGTQP62Nnha56NAJA
+ test-linux64/debug-mochitest-plain-headless-e10s-12: H4jnb0kRTEy-0WSsoYkk3Q
+ test-linux64/debug-mochitest-plain-headless-e10s-13: RL0hzklPSVmN23aa-GB_nQ
+ test-linux64/debug-mochitest-plain-headless-e10s-14: QnnRBzJmRnapBp32TwgQXw
+ test-linux64/debug-mochitest-plain-headless-e10s-15: DoWIhvdUSt2w0i1kmZX4XA
+ test-linux64/debug-mochitest-plain-headless-e10s-16: G6tJp7ccTAmoUhIpIC5IcA
+ test-linux64/debug-mochitest-plain-headless-e10s-2: ZU1ye4QwQH2RhK_UPBKqmQ
+ test-linux64/debug-mochitest-plain-headless-e10s-3: WyE5i3iTQEWw86folUGl1Q
+ test-linux64/debug-mochitest-plain-headless-e10s-4: L-qPP1pwTRiYjlhk8xQ33w
+ test-linux64/debug-mochitest-plain-headless-e10s-5: V61e-QgCRCSLH99kWHQuug
+ test-linux64/debug-mochitest-plain-headless-e10s-6: VU-VmnaeRTucNW71QoTDfw
+ test-linux64/debug-mochitest-plain-headless-e10s-7: WZWCQq7iSW2NeUTcTWrZvQ
+ test-linux64/debug-mochitest-plain-headless-e10s-8: ZZ2v4-EXTI-bv9LXsytvRQ
+ test-linux64/debug-mochitest-plain-headless-e10s-9: fCPnXH5-Qga2Mpl0I1AhLg
+ test-linux64/debug-mochitest-webgl1-core-e10s: MSJq1bLXSdyNyPAwYlDTBw
+ test-linux64/debug-mochitest-webgl1-ext-e10s: GgwWlpw6T_Sv6yfGYhMvRg
+ test-linux64/debug-reftest-e10s-1: C2uIAIY2Qj2RYzyTqQ1foQ
+ test-linux64/debug-reftest-e10s-2: E9adm1zBT1eyu7ai4N8S8w
+ test-linux64/debug-reftest-e10s-3: K4VFA6pHRxmdqEOkgYo6_g
+ test-linux64/debug-reftest-e10s-4: DspLRh0fR-ihihSLMSy7Sg
+ test-linux64/debug-reftest-e10s-5: F5K-j4HYQ_yG6rwu3B-xOQ
+ test-linux64/debug-reftest-e10s-6: bnWeTLZ-T-SUT6Bq2-16YA
+ test-linux64/debug-reftest-e10s-7: aJrwyAXHRiiE6zUUAvUiig
+ test-linux64/debug-reftest-e10s-8: N1zbNcwOQn6nC0PFOVz-kQ
+ test-linux64/debug-reftest-no-accel-e10s-1: e59DYKmQRdGUXYTy3PekKg
+ test-linux64/debug-reftest-no-accel-e10s-2: D8dPvPfISZ65fLMd1xosLw
+ test-linux64/debug-reftest-no-accel-e10s-3: DnzIVMnhRW2ZipL_fHxGIg
+ test-linux64/debug-reftest-no-accel-e10s-4: bpP-5B0wRGSzmY5C98pu7A
+ test-linux64/debug-reftest-no-accel-e10s-5: a1mUu2ZiToukXOXKWW5YmQ
+ test-linux64/debug-reftest-no-accel-e10s-6: N02OkpFVQCisdCCQzvo12A
+ test-linux64/debug-reftest-no-accel-e10s-7: DOH0x2dHQEucpsHTLIuHjg
+ test-linux64/debug-reftest-no-accel-e10s-8: Jz5lWnHdTjmPQbbIgMvujg
+ test-linux64/debug-telemetry-tests-client-e10s: budM4XXJTJuhBvclzA83qA
+ test-linux64/debug-web-platform-tests-e10s-1: Qr-urUZpSpKmR0WT_wSaSw
+ test-linux64/debug-web-platform-tests-e10s-10: UohYkNZNSt2FnH2QzHII-g
+ test-linux64/debug-web-platform-tests-e10s-11: EUTla8GTQne-K51AV_A11Q
+ test-linux64/debug-web-platform-tests-e10s-12: FE4SLyv8ShGJD566EYFm5A
+ test-linux64/debug-web-platform-tests-e10s-13: PSDhOVXVTvCil_x1GbWPPg
+ test-linux64/debug-web-platform-tests-e10s-14: LjyKpRg4Td-koqdKtv8twQ
+ test-linux64/debug-web-platform-tests-e10s-15: J7c-RWPISiq2ElvCV-32Og
+ test-linux64/debug-web-platform-tests-e10s-16: amyRmVlvT82WhTnN4ga0Zg
+ test-linux64/debug-web-platform-tests-e10s-17: Chz6Eid5RAa1qmZsPtXmwA
+ test-linux64/debug-web-platform-tests-e10s-18: Ah8S1AxwR6e0Ggt3T1W8aA
+ test-linux64/debug-web-platform-tests-e10s-2: GifBUk6ySbuGKITge7Tz0w
+ test-linux64/debug-web-platform-tests-e10s-3: fObR9hfdSOeuEAHNVI04RA
+ test-linux64/debug-web-platform-tests-e10s-4: LhpA1H_3Sk6Tha-NuoHHAw
+ test-linux64/debug-web-platform-tests-e10s-5: IatDrfpMSFenH1eAIPxv0w
+ test-linux64/debug-web-platform-tests-e10s-6: KJ1x-RJYTueLreNsoWgqXQ
+ test-linux64/debug-web-platform-tests-e10s-7: el5b-0eYSXWVCkTbtHRpWw
+ test-linux64/debug-web-platform-tests-e10s-8: eR8ixQdASJ2q8VVq8Lg6ow
+ test-linux64/debug-web-platform-tests-e10s-9: NETwJXVOTVyAM7h0tkpSPQ
+ test-linux64/debug-web-platform-tests-reftests-e10s-1: fpn7K00hRW-9ybGa970_oA
+ test-linux64/debug-web-platform-tests-reftests-e10s-2: UISHPhcBR3SJY_BK8TcoIw
+ test-linux64/debug-web-platform-tests-reftests-e10s-3: ReipojbjQCyXtWE0n-kSUQ
+ test-linux64/debug-web-platform-tests-reftests-e10s-4: Zux91BksQGawSAG7OKp3tQ
+ test-linux64/debug-web-platform-tests-reftests-e10s-5: dUv6teyCSX-0qsgTMytMRw
+ test-linux64/debug-web-platform-tests-reftests-e10s-6: b_YmMFInTLuG6bWIJLDc-g
+ test-linux64/debug-web-platform-tests-wdspec-e10s: GqnKAFisR7OE-USyuJCDAg
+ test-linux64/debug-xpcshell-1: ZYhBSORgQ5W_6NXi38nQQw
+ test-linux64/debug-xpcshell-10: T_QO6H0mRh6i2wJ0E1nl3A
+ test-linux64/debug-xpcshell-2: VCDk0yYASuKd8hHPsTj5Uw
+ test-linux64/debug-xpcshell-3: JgpfV-k2Td6Wu5S1ivvwuA
+ test-linux64/debug-xpcshell-4: dpmjr6bbTIWlw-76PDMTgQ
+ test-linux64/debug-xpcshell-5: ACE8EB6XS1aNzHJxw-1hlQ
+ test-linux64/debug-xpcshell-6: fYmXolLKRLSzVFyKR4HhzQ
+ test-linux64/debug-xpcshell-7: RRpudI8vS2u2GGJZwhh03A
+ test-linux64/debug-xpcshell-8: GsdwexBhQu2peAJT2skJvQ
+ test-linux64/debug-xpcshell-9: NJfPYcjgRCmPnuUdbigr3g
+ test-linux64/opt-talos-bcv-e10s: PH-BSe3rTiOqTOWV0KYnxA
+ test-linux64/opt-talos-chrome-e10s: TgdEV2bAT9KH6N2ihf8vZQ
+ test-linux64/opt-talos-damp-e10s: RPiK1dHTSY696JGtkWGHog
+ test-linux64/opt-talos-dromaeojs-e10s: aek-6X8PTgWY0_JHJpFv0Q
+ test-linux64/opt-talos-g1-e10s: Pugr_6q2R9WYedGPtfdRtQ
+ test-linux64/opt-talos-g3-e10s: HnZb--FpTx2IBPrlcw7pfg
+ test-linux64/opt-talos-g4-e10s: YCT6EoUES-OIN9Ht-0JD8Q
+ test-linux64/opt-talos-g5-e10s: AZkWoSwQQ8qQD1kqYwwPdw
+ test-linux64/opt-talos-other-e10s: SIRKklygS-uGl3r826eeSA
+ test-linux64/opt-talos-speedometer-e10s: dSwbZOgqQ3-CIv2cUEidYQ
+ test-linux64/opt-talos-svgr-e10s: DMNsJPhAQOy6fEVfmByxHw
+ test-linux64/opt-talos-tp5o-e10s: TOmnqoy6QcOrS2x9i4z2Yg
+ test-linux64/opt-talos-tp6-e10s: Bp6QgNTDRW-9HUctOge6YA
+ test-linux64/opt-talos-tp6-stylo-threads-e10s: Z4-YNtHPQRGj3tT6o-BTZw
+ test-linux64/opt-talos-tps-e10s: KzPayftaR5-Q81BLVmXvLQ
+ test-macosx64-devedition/opt-cppunit: UAZB1TytQsCN7l3MleyIfQ
+ test-macosx64-devedition/opt-crashtest-e10s: F4e1Z-3IRYSxtRa_g2aF6Q
+ test-macosx64-devedition/opt-firefox-ui-functional-local-e10s: Oky5zxonRVKP14QcdUDoIw
+ test-macosx64-devedition/opt-firefox-ui-functional-remote-e10s: BEnDvpogTeuwK2EFqgO_NQ
+ test-macosx64-devedition/opt-marionette-e10s: HCGzF8iDSOK_RL1TaXHt2w
+ test-macosx64-devedition/opt-marionette-headless-e10s: bAYKLQHES-Ww31Xi2kzDQg
+ test-macosx64-devedition/opt-mochitest-a11y: HB1PgQGzSd-x4B5fEQpHLA
+ test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-1: NgEOyv3lSqWY9piETTN_ig
+ test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-2: VSgIBd2nS5CeIYgPrvuV-w
+ test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-3: QgXCXgliQwqCSbpEqkHSVw
+ test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-4: GCJSeCkyRleSDu7tfQa9fw
+ test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-5: RC124PQnS227hpbBa3K23w
+ test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-6: ZVXiSwXvSmCYLKaBIx2rJg
+ test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-7: cAuJ4U1pQR6ucKCCKEb4gw
+ test-macosx64-devedition/opt-mochitest-chrome-1: Pa97ai7eQiuWINK4_6DMSA
+ test-macosx64-devedition/opt-mochitest-chrome-2: W9ZZt5c_SQm2wgD82QM4cw
+ test-macosx64-devedition/opt-mochitest-chrome-3: TGsIRcG9QbGea8JyYn0uUQ
+ test-macosx64-devedition/opt-mochitest-clipboard-e10s: c19vI6LOTQ6Qdxrsx-qCLA
+ test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-1: BSMiEdSHR4eREMb3hgi5sQ
+ test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-2: CdS4t8fjSeCSWQeP9UWPPA
+ test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-3: cGmVwHR0TnyAUHaMRIHrgA
+ test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-4: C5pfJBqbS8CvNLkSsv5yzw
+ test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-5: EyK0HZnhTaqjlxj48qXccA
+ test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-6: L3HlEsQOQ7Kto9rLdC4rbw
+ test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-7: JxE5i8GjRiWgaMSJJsx9kw
+ test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-8: ITv_MZnARUa7eLkCnjK9-w
+ test-macosx64-devedition/opt-mochitest-e10s-1: fGZPMm0cQP2sZG4rzBL40g
+ test-macosx64-devedition/opt-mochitest-e10s-2: cH5kPLi9Sd6ggFfnunCMew
+ test-macosx64-devedition/opt-mochitest-e10s-3: fU9mi153TxySDFBaUU_FnA
+ test-macosx64-devedition/opt-mochitest-e10s-4: StmZ4TVhTRiUDsDeSyZ5_Q
+ test-macosx64-devedition/opt-mochitest-e10s-5: aNuRQZkwQeyVSME39CDLNQ
+ test-macosx64-devedition/opt-mochitest-gpu-e10s: LieLKIpZR6uuY315fnDayA
+ test-macosx64-devedition/opt-mochitest-media-e10s: WcmPVNkaTPydv6VUt3AHQg
+ test-macosx64-devedition/opt-mochitest-webgl1-core-e10s: WKxNOuaqQGWMuFXKEYr4ug
+ test-macosx64-devedition/opt-mochitest-webgl1-ext-e10s: GKBdGNX2R5OHwZN0l17mBA
+ test-macosx64-devedition/opt-mochitest-webgl2-core-e10s: Ty7U3-WaTmS3Jjgg_jaHTg
+ test-macosx64-devedition/opt-reftest-e10s-1: YNA5V7VtRfucyCv0mgiRzQ
+ test-macosx64-devedition/opt-reftest-e10s-2: RIe4j3EpSO2i9wobHw8MzA
+ test-macosx64-devedition/opt-web-platform-tests-e10s-1: I8K4JuJ3SiSFfpMGE3xvpQ
+ test-macosx64-devedition/opt-web-platform-tests-e10s-10: EAxXfmRCRvy6filtsNXLkg
+ test-macosx64-devedition/opt-web-platform-tests-e10s-11: Pn2zVdw7R4qSEnF2KjLmyg
+ test-macosx64-devedition/opt-web-platform-tests-e10s-12: Pa5C6neSQDKnVZoEGB21-w
+ test-macosx64-devedition/opt-web-platform-tests-e10s-2: VaHHBxiTSbWrlW-jA9t_lA
+ test-macosx64-devedition/opt-web-platform-tests-e10s-3: c7zqXjQXRtqa0CxldUPLFA
+ test-macosx64-devedition/opt-web-platform-tests-e10s-4: EoK_Gkk8QaW7GSpX44zESA
+ test-macosx64-devedition/opt-web-platform-tests-e10s-5: WYVDAYoSTy6UM30aAAuH7Q
+ test-macosx64-devedition/opt-web-platform-tests-e10s-6: WTivgXckSsWMJMOkmGxHMQ
+ test-macosx64-devedition/opt-web-platform-tests-e10s-7: a9-_p3AbTiWkA0OA_ktKdQ
+ test-macosx64-devedition/opt-web-platform-tests-e10s-8: W_qEvTwrQ2yHb_IQ1WTLIA
+ test-macosx64-devedition/opt-web-platform-tests-e10s-9: FQ_81g7WRyiJUi1ZKSwDvQ
+ test-macosx64-devedition/opt-web-platform-tests-reftests-e10s: MmOWzfPPQXWABZ0Cb1-C9g
+ test-macosx64-devedition/opt-xpcshell: diUK-RMoS0STOdotcIcDnA
+ test-macosx64-nightly/opt-awsy-base-e10s: QwZ3KGvbTneJ48mYpAENFQ
+ test-macosx64-nightly/opt-awsy-e10s: M6ptPfUiS9ezlD5_b7wGmw
+ test-macosx64-nightly/opt-cppunit: P_RKRMWGRYCeOwIKpzBSgw
+ test-macosx64-nightly/opt-crashtest-e10s: Y2eNwyhkQpeD00Mg8jAC9A
+ test-macosx64-nightly/opt-firefox-ui-functional-local-e10s: DNfGVhDSQtGAbLINxeoUfQ
+ test-macosx64-nightly/opt-firefox-ui-functional-remote-e10s: BtFXSZuES3-fj3LTiJucpA
+ test-macosx64-nightly/opt-gtest: W6FchIQIT8eBO3SHSJAXyw
+ test-macosx64-nightly/opt-marionette-e10s: UQNVIugLThqD1W7rashuEw
+ test-macosx64-nightly/opt-marionette-headless-e10s: S9g8ZAaeTRSVKA9he0kRlQ
+ test-macosx64-nightly/opt-mochitest-a11y: DyqtEQZcQ2qJK6De9z8zqg
+ test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-1: XGrc0bllRZGuI_A1MCD2jw
+ test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-2: Qg64Fz6qRMG-BpYOJFeaYg
+ test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-3: enRPjfIySlKQNysor5WnkQ
+ test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-4: MwHhZQ6pQlu1LlW4BDDdlg
+ test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-5: Gz4W_SnLRqiP8HwtDDLWCg
+ test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-6: eGxOBUXZQkCd3a0wKt60cw
+ test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-7: GiHmQ2ZDQX2a1Zvs_d739w
+ test-macosx64-nightly/opt-mochitest-chrome-1: UMv1rx3ITou_RTHbAFfqVA
+ test-macosx64-nightly/opt-mochitest-chrome-2: Ks_kqKzQQY6Oge4DPAo_XQ
+ test-macosx64-nightly/opt-mochitest-chrome-3: BRdKLeqOSwuiMXFYUSr7Sw
+ test-macosx64-nightly/opt-mochitest-clipboard-e10s: cfJ0cd5xRZ--O0LBj0bV7Q
+ test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-1: b_StsMbFTgqoqIi69D4BRw
+ test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-2: JyQPZqFnQn62G6oibH94Sw
+ test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-3: StK0c9FtR5Gqf35WrMbZcg
+ test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-4: ILcR371aQNe11A-HicfUKA
+ test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-5: FVz-ikw8RGeyX_Hs8AqE8w
+ test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-6: JgQO5DqWRW--bYtZORy1vw
+ test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-7: SsSAUDncQ1yIt_3vpHColQ
+ test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-8: cH5YF3PETXajKwrzjBsHlg
+ test-macosx64-nightly/opt-mochitest-e10s-1: EHJlhYfiSY-07c_5VR3_Bw
+ test-macosx64-nightly/opt-mochitest-e10s-2: N7gDVoRzSYmdB5S36t_ktA
+ test-macosx64-nightly/opt-mochitest-e10s-3: C7TmZGwJTGi8RSOJId7vCA
+ test-macosx64-nightly/opt-mochitest-e10s-4: ZzFFCVLrQzWKWFMss-gG7Q
+ test-macosx64-nightly/opt-mochitest-e10s-5: H973rxToRryWwTCT6Yw54Q
+ test-macosx64-nightly/opt-mochitest-gpu-e10s: MucVF97XQGGcx9tF2eM9yg
+ test-macosx64-nightly/opt-mochitest-media-e10s: MqLQGSwvQBybKS01rtDlUA
+ test-macosx64-nightly/opt-mochitest-webgl1-core-e10s: RyUpcLyWRFO_6oz0D0Nf6A
+ test-macosx64-nightly/opt-mochitest-webgl1-ext-e10s: AYlCnP3yTnqbsXKq26pCzg
+ test-macosx64-nightly/opt-mochitest-webgl2-core-e10s: OsqMM9bmS7Oc6JhvGAI15A
+ test-macosx64-nightly/opt-reftest-e10s-1: UHtsE2xsS8WyLLoLk_4KjQ
+ test-macosx64-nightly/opt-reftest-e10s-2: TB8KE7qWQRejBbta_lR-0Q
+ test-macosx64-nightly/opt-web-platform-tests-e10s-1: ddENma46R02XVcvsHGnr9w
+ test-macosx64-nightly/opt-web-platform-tests-e10s-10: GkHwqnowS7y1IM537_o-uw
+ test-macosx64-nightly/opt-web-platform-tests-e10s-11: aRjElPCGTGuEyGFSQEw7NA
+ test-macosx64-nightly/opt-web-platform-tests-e10s-12: J4JeNAszQqa1S_O8a5sYvw
+ test-macosx64-nightly/opt-web-platform-tests-e10s-2: ai3vpiTZRNKg1M9GYuCXcQ
+ test-macosx64-nightly/opt-web-platform-tests-e10s-3: PKo_v7egSfimbWbKQv5iSQ
+ test-macosx64-nightly/opt-web-platform-tests-e10s-4: Q5Z2t_EfTZGaPsZqspEjHQ
+ test-macosx64-nightly/opt-web-platform-tests-e10s-5: MUCwhZw1RGS9GCwcjJPY_w
+ test-macosx64-nightly/opt-web-platform-tests-e10s-6: dwD82CepTL2oU-Enic-Y1w
+ test-macosx64-nightly/opt-web-platform-tests-e10s-7: NcHGf4tNQNSrc0JyaRTBUQ
+ test-macosx64-nightly/opt-web-platform-tests-e10s-8: KHtvc5bqR_-rAFJXCExQiQ
+ test-macosx64-nightly/opt-web-platform-tests-e10s-9: M2uH8xLlToWmhCvMbHTPcg
+ test-macosx64-nightly/opt-web-platform-tests-reftests-e10s: Yxk6e_WfSnadRM7983XAyw
+ test-macosx64-nightly/opt-xpcshell: KxLaSBLpSsywGZdEiJqdbQ
+ test-macosx64-qr/debug-crashtest-e10s: Qy4aeSVyTTyf4_jLLdG7yQ
+ test-macosx64-qr/debug-reftest-e10s-1: OcAWWpr2Rd21keJh7-EX5w
+ test-macosx64-qr/debug-reftest-e10s-2: Op5dTDfgS5mc2RAgkGC4Eg
+ test-macosx64-qr/debug-reftest-e10s-3: Ph2dJaqIRAWJGU6NXzyUZA
+ test-macosx64/debug-cppunit: SeEk0x7KS0OPkzhs6cgbmA
+ test-macosx64/debug-crashtest-e10s: HXfUuyE1RpCQR_2gx_GPgQ
+ test-macosx64/debug-firefox-ui-functional-local-e10s: dEUBhGhSQOqeDDC-gYCysg
+ test-macosx64/debug-firefox-ui-functional-remote-e10s: EgpNt9JnRFG0ksAFqthAZA
+ test-macosx64/debug-gtest: J21esFQuRR6EXMuBfZ1qkA
+ test-macosx64/debug-marionette-e10s: ADqcSC_hRiWgoqvdvM8pUA
+ test-macosx64/debug-marionette-headless-e10s: ARduI3SISSWGFrvgX0z0iQ
+ test-macosx64/debug-mochitest-a11y: ELtfMX2KR0uYOPJpPRNssQ
+ test-macosx64/debug-mochitest-browser-chrome-e10s-1: P_fNEVpfRXyC2_NEJCPOzA
+ test-macosx64/debug-mochitest-browser-chrome-e10s-2: LXn2LM9cTiWo3T-YPZsmFQ
+ test-macosx64/debug-mochitest-browser-chrome-e10s-3: AYBF7S1pS6C4AfzV8v1ExA
+ test-macosx64/debug-mochitest-browser-chrome-e10s-4: L94oX3a3SyOhevx_cXmkmw
+ test-macosx64/debug-mochitest-browser-chrome-e10s-5: Nxtaf7iMSButtuC238LoVg
+ test-macosx64/debug-mochitest-browser-chrome-e10s-6: AOQKJ-LiRAipVsxCAkTDrw
+ test-macosx64/debug-mochitest-browser-chrome-e10s-7: VggVU2EKRDGIdrljF72JDA
+ test-macosx64/debug-mochitest-chrome-1: SxRSJLJzTku1ns0nCaUMvw
+ test-macosx64/debug-mochitest-chrome-2: SJOeMpP1TomsHNTjzZarYA
+ test-macosx64/debug-mochitest-chrome-3: VJy6ghvxRqOsyY-BdAlR7A
+ test-macosx64/debug-mochitest-clipboard-e10s: ALDTIfhFT5q495EjxlCZLg
+ test-macosx64/debug-mochitest-devtools-chrome-e10s-1: TBZTECRLTc6SpULVUQtDzA
+ test-macosx64/debug-mochitest-devtools-chrome-e10s-2: egmx1RWzQimSexz2y-nYJg
+ test-macosx64/debug-mochitest-devtools-chrome-e10s-3: IcH_3NWySPeAHfGeFoKkuA
+ test-macosx64/debug-mochitest-devtools-chrome-e10s-4: Q954dJaVSQq2ZvMoHVB89w
+ test-macosx64/debug-mochitest-devtools-chrome-e10s-5: Z-amE-bVQ2K_CoLbz7hQMw
+ test-macosx64/debug-mochitest-devtools-chrome-e10s-6: CzUvreS-S_KM5ZurYvESkA
+ test-macosx64/debug-mochitest-devtools-chrome-e10s-7: O6EhO_DORFiz9r-lqZt2HA
+ test-macosx64/debug-mochitest-devtools-chrome-e10s-8: X2FAzch9SV-0tWfw7OJaFA
+ test-macosx64/debug-mochitest-e10s-1: ChybOSmZTSOgONnUk0U0CA
+ test-macosx64/debug-mochitest-e10s-2: fV0PrFBZSmK9kkO9MhwCJQ
+ test-macosx64/debug-mochitest-e10s-3: E4J4WbORQLycHyVo-fxfXA
+ test-macosx64/debug-mochitest-e10s-4: aGGZEpc6SZWIWJkOBeVdCw
+ test-macosx64/debug-mochitest-e10s-5: bhM-ZOizSIyLv6C3ixu_iw
+ test-macosx64/debug-mochitest-gpu-e10s: Dm7ZFK3ETX6IAP8dLmdWPg
+ test-macosx64/debug-mochitest-media-e10s: JKQFbqXET0iGLeixzeNJgQ
+ test-macosx64/debug-mochitest-webgl1-core-e10s: UnGhUwKxQJu6LWImLS1bHQ
+ test-macosx64/debug-mochitest-webgl1-ext-e10s: PR_efO1WQHW_4HfZnrmjZA
+ test-macosx64/debug-mochitest-webgl2-core-e10s: TBjTBy5PSAyP7_Kj8U4TRA
+ test-macosx64/debug-reftest-e10s-1: LpogbWbQS_SBeFkcjJYUNQ
+ test-macosx64/debug-reftest-e10s-2: DIl5dU7-Ra-mbYvnKPZaIA
+ test-macosx64/debug-reftest-e10s-3: ZbvHp7krT5iqYBxtN-GvTg
+ test-macosx64/debug-web-platform-tests-e10s-1: DnfOULj_QoqjUT2i7CZ6dg
+ test-macosx64/debug-web-platform-tests-e10s-10: Egvi2BCLSG-67M-MVF5M8w
+ test-macosx64/debug-web-platform-tests-e10s-2: eAH5t3zuR2mQRLgV5WYbMA
+ test-macosx64/debug-web-platform-tests-e10s-3: ferHdFWnTdW_JOCOKLcLmg
+ test-macosx64/debug-web-platform-tests-e10s-4: GAR3cjCXRuqf-mDwojCyrw
+ test-macosx64/debug-web-platform-tests-e10s-5: UclJk4u3RKe_y6u3aPSFRw
+ test-macosx64/debug-web-platform-tests-e10s-6: PjDS5BZATk2Puf1TlYHkfQ
+ test-macosx64/debug-web-platform-tests-e10s-7: Ct0PortLRzaJEzkN-rhH_g
+ test-macosx64/debug-web-platform-tests-e10s-8: IkLzQyOVTGySCs_ul5FFcw
+ test-macosx64/debug-web-platform-tests-e10s-9: cQVPT2_WRkaisPphm-1pyA
+ test-macosx64/debug-web-platform-tests-reftests-e10s: Rulmk2fMTZmbaB34Ez9ItA
+ test-macosx64/debug-xpcshell: aw_dKWSmRUe7ah3ZLm5Sgw
+ test-macosx64/opt-talos-bcv-e10s: Mkc2sBuRSmCk7M9QArPxXg
+ test-macosx64/opt-talos-chrome-e10s: FDDLvU8HSqCBqMxkZ-khYg
+ test-macosx64/opt-talos-damp-e10s: TVrKS9SNTtiruaRhAn6q-Q
+ test-macosx64/opt-talos-dromaeojs-e10s: XAVKLdwSRMGeqbmMfaj1Mg
+ test-macosx64/opt-talos-g1-e10s: GTiQ6dxJTvy7js3M_VOD6Q
+ test-macosx64/opt-talos-g4-e10s: Dnc_1zEzTkG8ILqJEJXK9A
+ test-macosx64/opt-talos-g5-e10s: RX5cKf4NRh6Bkqe74iHrsw
+ test-macosx64/opt-talos-other-e10s: ATrjShNkR9aeuqOtcDih9Q
+ test-macosx64/opt-talos-speedometer-e10s: ZelTPDpTR0erCsWK5NB5Hw
+ test-macosx64/opt-talos-svgr-e10s: P8kbt8M5RPqS7vS8zIrJzg
+ test-macosx64/opt-talos-tp5o-e10s: HiDm8Bg7Qc6_GFk0X9Sh9A
+ test-macosx64/opt-talos-tp6-e10s: ZeW57LJjT5O-D0BTVaqsLA
+ test-macosx64/opt-talos-tp6-stylo-threads-e10s: CBfRgTb7QtOvdGtMzcau5Q
+ test-windows10-64-devedition/opt-cppunit: KoN5Sgo1QX6-2bxEx1nLxg
+ test-windows10-64-devedition/opt-crashtest-e10s: ABsSnyVHTfOvB0qWI8v6sA
+ test-windows10-64-devedition/opt-firefox-ui-functional-local-e10s: Ui7sfJgNR2O0RWXCt0R2Og
+ test-windows10-64-devedition/opt-firefox-ui-functional-remote-e10s: fgym_uEfRp27Z1LUTwr4Bg
+ test-windows10-64-devedition/opt-marionette-e10s: XUTlvhCeTOOf2i3uDgCijQ
+ test-windows10-64-devedition/opt-marionette-headless-e10s: UdVntFU1SuqPrzIt8NB2kw
+ test-windows10-64-devedition/opt-mochitest-a11y: OKYNS3gWTmiwFq-GnvWQKA
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-1: PxTasAPIS9OQ2PylO1DqQg
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-2: Wj0vK-7UT_qQHmEF8VQ24g
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-3: V47SF-ZBRCaivsCcYZMvVA
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-4: b7J833_LRfWv37-E7l-TtQ
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-5: bwmzYMdtSyysvypGHtkcOQ
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-6: P8JPPQmjRHGZ3Vm70tfOzQ
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-7: MIAPTRd7Q5uviDDSUgyjGg
+ test-windows10-64-devedition/opt-mochitest-chrome-1: NlwxQg51RqWmklo5fkrowg
+ test-windows10-64-devedition/opt-mochitest-chrome-2: MY6xkHuRQIODy2T9BO0WkA
+ test-windows10-64-devedition/opt-mochitest-chrome-3: Fjk9RKFZQQ6rfQH_BV0H-Q
+ test-windows10-64-devedition/opt-mochitest-clipboard-e10s: Z3gwR6x2TvWRJ2bjoX0yVA
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-1: aZUGqnFCTOW99sfRcmvBZg
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-2: NCqv49uTTEeMOt4LRCQEyw
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-3: S62K0NDaSkiLW-Wh9RvBWA
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-4: Fts2h0gwRlSq969c7THpRA
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-5: ZFcX8mS9RJG17t74ZR6Otg
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-6: UEHkvnVlSEOcKmTizyXULA
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-7: HHJbfSd1QYmO5QmxhPqu6g
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-8: I5rTqfEFSl26I2oPptCaAA
+ test-windows10-64-devedition/opt-mochitest-e10s-1: bsXDjdnlSne_Q54A_uVUhg
+ test-windows10-64-devedition/opt-mochitest-e10s-2: JLfVynSvS4qwBpN3hrjUDQ
+ test-windows10-64-devedition/opt-mochitest-e10s-3: JuDucs7JT4KE2NvrqkFdmw
+ test-windows10-64-devedition/opt-mochitest-e10s-4: agPJLGAHSSSBkV85JE3nxA
+ test-windows10-64-devedition/opt-mochitest-e10s-5: IXvtVUL5SSefJOk23wGJ-Q
+ test-windows10-64-devedition/opt-mochitest-gpu-e10s: AVVOo1RPQKyduhimjGTLeg
+ test-windows10-64-devedition/opt-mochitest-media-e10s: BHMKRmpFQ06xrWQhHuKc6w
+ test-windows10-64-devedition/opt-mochitest-webgl1-core-e10s: V0q_RuSvQpWC6jSSHpy1uA
+ test-windows10-64-devedition/opt-mochitest-webgl1-ext-e10s: Vul6uDYJQDekoSYNX-bgRQ
+ test-windows10-64-devedition/opt-mochitest-webgl2-core-e10s: QiX9JrZ0SWeQUoZsXbrtHQ
+ test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-1: ILki9ThyTs6Vl6C4hVHLWA
+ test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-2: UaWz_lRKQb6swZ9xbuDpJQ
+ test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-3: QSnxPccYRFqBfoVlu9tA2g
+ test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-4: fpO79lxdQZyjdIT271JW7w
+ test-windows10-64-devedition/opt-reftest-e10s-1: RGDEkNghRZ-JDH8ofbEF3A
+ test-windows10-64-devedition/opt-reftest-e10s-2: DiK9v4cBRzK6705pigLsbA
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-1: Ro7r858uQEyfsij5dwXVZg
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-10: e4FX7g_uSuaepwtjI4_6jQ
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-11: RTvy_I4BQiSaEc1B6T8EUg
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-12: aleo0UawQY-iDVpg5Eeicg
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-2: J9S_oAwxTx27Afwh6SwKbA
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-3: OO87OHsLRbqeZqCq5qUMTQ
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-4: OWi1kXIQQLi9bxfXglJW5Q
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-5: BQNRdy6hTJKaBmygr_RkTw
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-6: VhJcLNziQrOxe-8gmKWlEg
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-7: ECqsC4amRC68rk0j9NPXjw
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-8: dkaDASkLQZ2FfXro8fjIeA
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-9: AR5HA0-lSF-1RfQYUwxcWg
+ test-windows10-64-devedition/opt-web-platform-tests-reftests-e10s: drMiq3VVS7CNWWSdjvfqJg
+ test-windows10-64-devedition/opt-xpcshell: TNGSOpHWSD-_jEmp2K4BEQ
+ test-windows10-64-msvc/opt-talos-bcv-e10s: ad5yeuj0S8e8FMSRe1XlBg
+ test-windows10-64-msvc/opt-talos-chrome-e10s: MODrd_oAQP-L3JNXgCaoHg
+ test-windows10-64-msvc/opt-talos-damp-e10s: EfWI3_qNRFCB9DosqzRm3w
+ test-windows10-64-msvc/opt-talos-dromaeojs-e10s: e0haqzCCTVebqq9V-2LHAw
+ test-windows10-64-msvc/opt-talos-g1-e10s: aT00QIMVRF6SvcUrnzPfVA
+ test-windows10-64-msvc/opt-talos-g4-e10s: QYEDxUAdSWmtP1qcbrni1w
+ test-windows10-64-msvc/opt-talos-g5-e10s: JZV3KDeQQD-9c-70Q1Fdzw
+ test-windows10-64-msvc/opt-talos-other-e10s: Pg36ZRxPQfiwfLkYNNpL0Q
+ test-windows10-64-msvc/opt-talos-speedometer-e10s: QUECAQBeQl2WjjEfejRleA
+ test-windows10-64-msvc/opt-talos-svgr-e10s: cdActXyvRkuWd0RIUEuMgQ
+ test-windows10-64-msvc/opt-talos-tp5o-e10s: NCaa6iLGSH6qzxjq9SAKJg
+ test-windows10-64-msvc/opt-talos-tp6-e10s: IWDuEuK0TAG19qVQ5U8bZQ
+ test-windows10-64-msvc/opt-talos-tps-e10s: ea7JfHj-Sqyk9CiJAG5gqg
+ test-windows10-64-nightly/opt-awsy-base-e10s: N2NEswF2TJqxgdRpi9-9_g
+ test-windows10-64-nightly/opt-awsy-e10s: FBEN7oYWSAe7WLfvdl880g
+ test-windows10-64-nightly/opt-cppunit: X67MdELCSgWJfxYQ0Cel6w
+ test-windows10-64-nightly/opt-crashtest-e10s: aYuX9hcbRRqa5SupW1FoKw
+ test-windows10-64-nightly/opt-firefox-ui-functional-local-e10s: Ea3uCnPoR2ixx8QuUf1pkw
+ test-windows10-64-nightly/opt-firefox-ui-functional-remote-e10s: LeEv91MQT9u0F6Go5X9w4g
+ test-windows10-64-nightly/opt-marionette-e10s: YOtOwiaGTFORjUMfmnK6Uw
+ test-windows10-64-nightly/opt-marionette-headless-e10s: W9u-yr7FSKuyV6qwhkyxrw
+ test-windows10-64-nightly/opt-mochitest-a11y: QBxMfAimR1yDmyEId5NkJA
+ test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-1: E_dB7MRRReq1DV8I2kwKPg
+ test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-2: QOTAlmPMStWg2rtQiKSz6Q
+ test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-3: N9c-cBdeQq6LrelZMlFZiQ
+ test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-4: WpNbVdNjSl6UjbynfbXr9A
+ test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-5: ZPJP1bnrTsm3psZMu4SLfQ
+ test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-6: EXlYJ2MnRTyjLYvOGmMcQA
+ test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-7: Mus-xpCcRkK9Qjhmpk46Vg
+ test-windows10-64-nightly/opt-mochitest-chrome-1: D3Sq3LIJSiuO3nFCsR8vxQ
+ test-windows10-64-nightly/opt-mochitest-chrome-2: QyRpMoTUSrS9c-p-Y4ut6A
+ test-windows10-64-nightly/opt-mochitest-chrome-3: CD9WbzOFTkGPc32vblTirg
+ test-windows10-64-nightly/opt-mochitest-clipboard-e10s: MiFWNxgKSYOnVONTOnE2zw
+ test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-1: HamAS6CzTnGnajX73mygpg
+ test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-2: DCsir_d6QmS1yZryGpfBeg
+ test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-3: JOyfWqpORHmDyG39NKNCNg
+ test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-4: diQh_YGERqKBLPfUarh5uQ
+ test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-5: M8OZYHoBTWKIfjOujDHehQ
+ test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-6: RhKKhch6RjKlde6qC3L2WQ
+ test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-7: ULbtH7-LS5CT7Vx9Ojq7nA
+ test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-8: Wwok1dqLSKeVDpCLtcgihQ
+ test-windows10-64-nightly/opt-mochitest-e10s-1: RAupkoz9TZ2ObM5LYRO1tw
+ test-windows10-64-nightly/opt-mochitest-e10s-2: IsrGJe11T_Kv0kG15lEwWw
+ test-windows10-64-nightly/opt-mochitest-e10s-3: V349QccLQc2qX4Eq8Fgymw
+ test-windows10-64-nightly/opt-mochitest-e10s-4: MWE8eEW6TFqc5ZZagJek_g
+ test-windows10-64-nightly/opt-mochitest-e10s-5: E3_sMJ1WTFi3c6H17WcthQ
+ test-windows10-64-nightly/opt-mochitest-gpu-e10s: Cpaj0FD9QCiiEk060YfhlA
+ test-windows10-64-nightly/opt-mochitest-media-e10s: MwcXiAGORIKP67zT8FecRw
+ test-windows10-64-nightly/opt-mochitest-webgl1-core-e10s: NmP_SjDfRym6Hczr2dPmGw
+ test-windows10-64-nightly/opt-mochitest-webgl1-ext-e10s: H7oeSiX2R8ib7w4dXSF9Ww
+ test-windows10-64-nightly/opt-mochitest-webgl2-core-e10s: a7tbELbcSp2HtNqRirQYwQ
+ test-windows10-64-nightly/opt-mochitest-webgl2-ext-e10s-1: ToNakT3PSBu859X7ZC7kUg
+ test-windows10-64-nightly/opt-mochitest-webgl2-ext-e10s-2: Ju4ddogMR7GjKQznevFb6A
+ test-windows10-64-nightly/opt-mochitest-webgl2-ext-e10s-3: CEsuOtMfRLaClGjy62QaxA
+ test-windows10-64-nightly/opt-mochitest-webgl2-ext-e10s-4: Osebfof-TJ-O3qjAAFId9w
+ test-windows10-64-nightly/opt-reftest-e10s-1: TSl71yHIQDWhcwIEQ1ds5A
+ test-windows10-64-nightly/opt-reftest-e10s-2: WW3TpvWGQdyW2n43MATydA
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-1: B8R0PXYcR8SZst13mBiyLQ
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-10: OuXXLPTVRpa_freaxG5rXQ
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-11: dOyi0VWeT-qhsuhbor0hjg
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-12: IW_kcn2PQ3C_s6LuEedPcg
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-2: R__1PgCIT5aDsDf9ZA5nPg
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-3: boTbD4w5QG2Upg_97rb1jQ
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-4: Z60d-OJyR1W_J3pgwbRgdA
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-5: VVVX7J7GRfm7_VpPA0E6Pg
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-6: TbLXS4ebTVeklyK-drFjUQ
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-7: QoRUtD1dS9aid5fhdmEAOw
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-8: Huywop4CRi2OdfjHBY00Hw
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-9: BI-KyJYhTsSIQxTSaEJ2EQ
+ test-windows10-64-nightly/opt-web-platform-tests-reftests-e10s: V_PZ_XO3T6-UUcnedbDjYA
+ test-windows10-64-nightly/opt-xpcshell: c-yw9DRRRZu9oJREmsMTWA
+ test-windows10-64-qr/debug-crashtest-e10s: Vq_oHsqRTNy7fTgFV5PEoA
+ test-windows10-64-qr/debug-mochitest-gpu-e10s: aq2-nw0iQi2yKz8GUAW27A
+ test-windows10-64-qr/debug-mochitest-media-e10s: ZfjQoOxpQji0IiETrbF7pw
+ test-windows10-64-qr/debug-mochitest-webgl1-core-e10s: OJZ3FvXnSEOk5EqHo62j8w
+ test-windows10-64-qr/debug-reftest-e10s-1: HFAIn8fxR0mQwrU3FwoNjA
+ test-windows10-64-qr/debug-reftest-e10s-2: ZjzzaHS0TiOs_m3x7SGZyA
+ test-windows10-64-qr/debug-reftest-e10s-3: HPFIXndNSwCbk1oC2hG-hA
+ test-windows10-64-qr/debug-reftest-e10s-4: ZhTMWsN8Rfq7fSAlLhM-KQ
+ test-windows10-64-qr/opt-talos-chrome-e10s: A2nrfY89SuuEalMvU2RmXw
+ test-windows10-64-qr/opt-talos-damp-e10s: eqL95epzTp-S5o_8UoJmDQ
+ test-windows10-64-qr/opt-talos-dromaeojs-e10s: UIMfQqS9QU2R_QO_L2b1pQ
+ test-windows10-64-qr/opt-talos-g1-e10s: Z8rOrQo0Qcit1ahsVW9x9Q
+ test-windows10-64-qr/opt-talos-g4-e10s: OlDE94AETwClIlR-4IlMuA
+ test-windows10-64-qr/opt-talos-g5-e10s: XQvHIEM6QterHUC4vTmulw
+ test-windows10-64-qr/opt-talos-other-e10s: RpEZ4GIuTOWW_jto8sOsfA
+ test-windows10-64-qr/opt-talos-speedometer-e10s: IScwK1UESMWO1K7ihRnXLw
+ test-windows10-64-qr/opt-talos-svgr-e10s: JFUW2EulRxm099DzpEmyjg
+ test-windows10-64-qr/opt-talos-tp5o-e10s: EB76dkJcR-idm3M72yDDDg
+ test-windows10-64-qr/opt-talos-tp6-e10s: aY3NrorwSxqZX1yLSMMSXg
+ test-windows10-64-qr/opt-talos-tps-e10s: Xd39snH6Te6_GBvCfUnxog
+ test-windows10-64/debug-cppunit: dcXoU9H2QU-jsC84EuJOvQ
+ test-windows10-64/debug-crashtest-e10s: DcnPKr76SyWlNWziBra3_A
+ test-windows10-64/debug-firefox-ui-functional-local-e10s: DaADnxFESuyaJLYgwsQEpg
+ test-windows10-64/debug-firefox-ui-functional-remote-e10s: ar3sMMCZQWmWA_mfSpdpng
+ test-windows10-64/debug-gtest: c2hf2S5nSdeDvI6PIhjqyA
+ test-windows10-64/debug-marionette-e10s: Wg8tOqH5SRemRlOygb2PjA
+ test-windows10-64/debug-marionette-headless-e10s: BD_5RSidTVOAh8oQiGDvZw
+ test-windows10-64/debug-mochitest-a11y: FDyz2xdlQuCLJ4MdjVJ1WA
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-1: beugRyqWQTy-iISJZ5vqXA
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-2: SrUDHK7FQXCNrrRfCHNGww
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-3: N6ZUJIdRSj6gj1KzIFyMcA
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-4: D56zLDIJSq-q-sFNlhrZmw
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-5: acDOLY_WQNmTrYIesclVCw
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-6: BqaZ5dEsR--ohxAMkhr4yA
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-7: LFbal7JDS0mr1TmhqdsJZw
+ test-windows10-64/debug-mochitest-chrome-1: LoXcpZy5Sze01qVmnxKdlg
+ test-windows10-64/debug-mochitest-chrome-2: Sh_ArCdRQ_yvaiqDc2sPVw
+ test-windows10-64/debug-mochitest-chrome-3: ZBFxySS0RcO0nG5sqXvtpg
+ test-windows10-64/debug-mochitest-clipboard-e10s: T4gJx7lFTBC6BFhdjNEmeA
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-1: WCAOfm-STzy6KLR3hgs-vA
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-2: BGeN1Pi9QoC1pS9KAC3HNQ
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-3: LgF_PaKkTs2cBKUaEFyoJg
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-4: WfoBJJLXSS2jAWrZ64yWog
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-5: NcNcVPVrQDS5KuIeADlIIw
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-6: cswGzBTsTcG_LSKet40qZQ
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-7: Ua7zSn_IQ_uRHmULcNlTwg
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-8: NkbkCELNRnGbj9yuYpBEtw
+ test-windows10-64/debug-mochitest-e10s-1: VfwqjoClRLaLKsqRBcH9Qw
+ test-windows10-64/debug-mochitest-e10s-2: f_rWd0TxQPC89r8V0zi9EA
+ test-windows10-64/debug-mochitest-e10s-3: YFxsgIerRtaFBGnGdZsGPA
+ test-windows10-64/debug-mochitest-e10s-4: RTPqH8RwSU-L6AYIDZ4ljw
+ test-windows10-64/debug-mochitest-e10s-5: P8sh1YjZRk6hakvjSYNvpg
+ test-windows10-64/debug-mochitest-gpu-e10s: HNNHAq-7S7CThzcSzdd7xQ
+ test-windows10-64/debug-mochitest-media-e10s: KyTjdkP2RU2WsgUK1C6wXw
+ test-windows10-64/debug-mochitest-plain-headless-e10s-1: N3t3_DwYSDmBeAE6V0n8Jg
+ test-windows10-64/debug-mochitest-plain-headless-e10s-2: ZzWyJzYtQNyA3TXQGxmP3w
+ test-windows10-64/debug-mochitest-plain-headless-e10s-3: b8m69rP7RueSo9Lc913hkA
+ test-windows10-64/debug-mochitest-plain-headless-e10s-4: Vw2pFe0XTtW6Io1qjsEadQ
+ test-windows10-64/debug-mochitest-plain-headless-e10s-5: J7lhTlrFTz-bd2oQ6DeesA
+ test-windows10-64/debug-mochitest-webgl1-core-e10s: LBpbxbB_RmWdZZ0brqPWzQ
+ test-windows10-64/debug-mochitest-webgl1-ext-e10s: Aw4ij6yASf-OD9OWN2SmDA
+ test-windows10-64/debug-mochitest-webgl2-core-e10s: QlY4yiUeTpKSeSwUPWL2lw
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-1: CXkeRK43SaerG8BE-dmM8g
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-2: RYAPe2UsSvaEIC-oX7ARAQ
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-3: LbkwInuYSJOFQ-TLbDdvqQ
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-4: YBxH4uvJSp28WlwGPKlV7Q
+ test-windows10-64/debug-reftest-e10s-1: SrKOQKOHSl-aa_GpdtvL9Q
+ test-windows10-64/debug-reftest-e10s-2: ce4BBh2SRK6oUVyz-iiaiw
+ test-windows10-64/debug-reftest-e10s-3: VOFP6k1WQSexUCmUEzUSRQ
+ test-windows10-64/debug-reftest-e10s-4: JnE2kQcvRKaU-4LMw1MFxg
+ test-windows10-64/debug-web-platform-tests-e10s-1: WBgSZbwQRPC9E_U_yu_rTQ
+ test-windows10-64/debug-web-platform-tests-e10s-10: TXpnxrpURjOXOlGY61zJmQ
+ test-windows10-64/debug-web-platform-tests-e10s-11: T8FM5pwQSIGqa5ybja5WSA
+ test-windows10-64/debug-web-platform-tests-e10s-12: UvLE3lXpRd6rJQw2fhsDcA
+ test-windows10-64/debug-web-platform-tests-e10s-2: boJN9UUQSgu9yF4HNbrzEg
+ test-windows10-64/debug-web-platform-tests-e10s-3: S5ogR_9JRz6apzh2E4IHoQ
+ test-windows10-64/debug-web-platform-tests-e10s-4: QV862XybROGYYXA2AapRIw
+ test-windows10-64/debug-web-platform-tests-e10s-5: YbsWw4H6TwmooIxH3wCuvA
+ test-windows10-64/debug-web-platform-tests-e10s-6: RH5xayQ3QiyZJ43XpPvX1w
+ test-windows10-64/debug-web-platform-tests-e10s-7: bYsGQx76Q4ise3k1SSo3CA
+ test-windows10-64/debug-web-platform-tests-e10s-8: C_jhpsyxRPCbsQd_hWKqvA
+ test-windows10-64/debug-web-platform-tests-e10s-9: YoC97kwWTMmBwqr2r2FOlw
+ test-windows10-64/debug-web-platform-tests-reftests-e10s: OsmTL-dHQWmigOV4f6vwFQ
+ test-windows10-64/debug-xpcshell: dzLDl5VrSzW5bqiuSbN0DA
+ test-windows10-64/opt-talos-bcv-e10s: Z-Z-iOD5SfSkuI-JSvOLgQ
+ test-windows10-64/opt-talos-chrome-e10s: P4rK_IUQS-yWeNdGYo8C7A
+ test-windows10-64/opt-talos-damp-e10s: Z0ORgjuPQ42ainod0hMfRw
+ test-windows10-64/opt-talos-dromaeojs-e10s: YRyaigWbRqmCbWs1tUcrTQ
+ test-windows10-64/opt-talos-g1-e10s: VYn1Gi4xSzGBxkw_GCygSQ
+ test-windows10-64/opt-talos-g4-e10s: Rducpu0UQ72-8o7-MgERcA
+ test-windows10-64/opt-talos-g5-e10s: LrOOz3ePRXmZy9KWfq0ISw
+ test-windows10-64/opt-talos-other-e10s: Q987z-ehS3ystkvpK5QQIQ
+ test-windows10-64/opt-talos-speedometer-e10s: BV3qoZhyRqWPt3T4TGRcbA
+ test-windows10-64/opt-talos-svgr-e10s: PjDfftwvQZSioAXltSCXng
+ test-windows10-64/opt-talos-tp5o-e10s: K6jnpaWiSg2POTNqpfHpRg
+ test-windows10-64/opt-talos-tp6-e10s: C1JOkLYZS8KutTXi4otrKg
+ test-windows10-64/opt-talos-tps-e10s: bYPJgPY2Rvu8YGyZAfsKBw
+ test-windows7-32-devedition/opt-cppunit: KwKfAp-tQXuKQ8YUjDPqiw
+ test-windows7-32-devedition/opt-crashtest-e10s: SVZF7QOmRqygcYMXbyl24g
+ test-windows7-32-devedition/opt-firefox-ui-functional-local-e10s: XW__mIhpQv6Zy8Am6ELaRA
+ test-windows7-32-devedition/opt-firefox-ui-functional-remote-e10s: Urh4kf_qQaa0LbVtuZE9xg
+ test-windows7-32-devedition/opt-marionette-e10s: PR1978RgQQukTCJi73wkJA
+ test-windows7-32-devedition/opt-marionette-headless-e10s: FbH6mEqyQHOisyz_gPw_Ew
+ test-windows7-32-devedition/opt-mochitest-a11y: C5TTmuUkQpqJHLkhdO6umA
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-1: OFbY20j2Ri2xRdNqF5WyBw
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-2: T4j4fQFNSq6aONzt82U1XQ
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-3: BSNxYR_VRi-uFf2SFhmHLg
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-4: Y_zFEam9Rxy5zBoUyqoAbA
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-5: L_BVSdwnRG23TniLhEkCtA
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-6: KGfpQbuETJaoKWnWF83r7Q
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-7: LuOhp-RaR0OnACOzU4queA
+ test-windows7-32-devedition/opt-mochitest-chrome-1: Iage7zvFR96X7tS4PQ5qRQ
+ test-windows7-32-devedition/opt-mochitest-chrome-2: X-r4-xotRUiReP5bs-lBpQ
+ test-windows7-32-devedition/opt-mochitest-chrome-3: MMICfr2tQcq8vrgWpWvwVQ
+ test-windows7-32-devedition/opt-mochitest-clipboard-e10s: LYQ-sWo5T3OCULkPE1wxbw
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-1: a0d02VNXRraEbNH466Y6Xg
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-2: bm7uuxraT6mzkWSDNZiJjA
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-3: DZapZ6OJQluY4yooIhoJVw
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-4: CUrzMX1RTR61AYA6b5s6TQ
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-5: GbDC3tqFT7KhNBl5_D8lxA
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-6: UjEeSAbfQju2QwD6ZrLM_w
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-7: W2tqAzxwRqi6iQIAfU9lyw
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-8: LEPlS8Z-Q6iNV8sZpSHBng
+ test-windows7-32-devedition/opt-mochitest-e10s-1: bnJe_8Y_RbmWKEMK9fAR4Q
+ test-windows7-32-devedition/opt-mochitest-e10s-2: IqL5nmasQtSvTu5G0BuIfA
+ test-windows7-32-devedition/opt-mochitest-e10s-3: NAWAF-UlR1y4_elSmKVCpw
+ test-windows7-32-devedition/opt-mochitest-e10s-4: LxFJd340S-mZfhVHl60yyQ
+ test-windows7-32-devedition/opt-mochitest-e10s-5: Xhw5d-zxRS-bKtI_4CBU1g
+ test-windows7-32-devedition/opt-mochitest-gpu-e10s: b0V4zfOhTCe-_LLaBvdnlw
+ test-windows7-32-devedition/opt-mochitest-media-e10s-1: Qp4EYYsWQlmaZbGm6AKLag
+ test-windows7-32-devedition/opt-mochitest-media-e10s-2: NUJWLSQoRWyBwqDlY_B4Qw
+ test-windows7-32-devedition/opt-mochitest-media-e10s-3: DRGAFUdCR_W7RygTSl9kEQ
+ test-windows7-32-devedition/opt-mochitest-webgl1-core-e10s: A8nYb6LzT6mkYcZEM72e9w
+ test-windows7-32-devedition/opt-mochitest-webgl1-ext-e10s: bhAt77UmStWRqiZaqDQzXQ
+ test-windows7-32-devedition/opt-mochitest-webgl2-core-e10s: fpFmIMBRSNCegDkGE-79OA
+ test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-1: Mgh5pTNDT0eASjJoZ_M19w
+ test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-2: LyFiwww6SgWUOw62QfFGcQ
+ test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-3: P77AwXuFS4ylnXMw2UE6ng
+ test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-4: euhPD3bhT1up15btNKCd8w
+ test-windows7-32-devedition/opt-reftest-e10s-1: FMoqrUUTQlOQMIftXCw5uQ
+ test-windows7-32-devedition/opt-reftest-e10s-2: JN8KPcHBQAicKB3BQ3goCg
+ test-windows7-32-devedition/opt-reftest-gpu-e10s-1: W03lwO8vTp2w7dhYotoBcQ
+ test-windows7-32-devedition/opt-reftest-gpu-e10s-2: YU8ls94gQX6tyIYOZLKJzQ
+ test-windows7-32-devedition/opt-reftest-no-accel-e10s-1: Cg0YpbjdSSKix2eCpPHfPQ
+ test-windows7-32-devedition/opt-reftest-no-accel-e10s-2: Y4SlCq63Rfeisueq1XlNlg
+ test-windows7-32-devedition/opt-reftest-no-accel-e10s-3: Bvy32h0cR-GGmloqHqSKbA
+ test-windows7-32-devedition/opt-reftest-no-accel-e10s-4: KKQf0UqbQ4KswjbxGsxN9w
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-1: OlR0_7e-R_-cFZuVLhxIKw
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-10: Hiw9RBcaQcmK3KRz0u4Gpw
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-11: dmLw_Vi7TEORJlmS2iM8UA
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-12: efgxrbg6RHiDKmOPnQKZuQ
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-2: EyKpqtFtSmWo3FNz5lSRYA
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-3: QfuQDqtyR-u_Qhyh3JwxIA
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-4: JJys2iYdSFe3ePEW760dpw
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-5: WW_mw761RW-FKtK7TZZPMA
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-6: Xc7MIQdoRjSuheWLIiwU0A
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-7: JkopvXjlT7qmbC6kTf_hdQ
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-8: f_wj0bDcTtO1FKVPtUgeRA
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-9: RFrAiWCSQ--9tZ1PrtfI2Q
+ test-windows7-32-devedition/opt-web-platform-tests-reftests-e10s: DVfM5hOzTWCCaAuniAjC9g
+ test-windows7-32-devedition/opt-xpcshell: StrGf1lTQq2DX3J26AgYHA
+ test-windows7-32-msvc/opt-talos-bcv-e10s: DgncjKDWSHKj_G6cAGfpjQ
+ test-windows7-32-msvc/opt-talos-chrome-e10s: fBVeJGajQ9WTrnmJONQQ6A
+ test-windows7-32-msvc/opt-talos-damp-e10s: DKiSq5mwTmCkHaqSKJtskA
+ test-windows7-32-msvc/opt-talos-dromaeojs-e10s: YcdgW-QoSJODZH81cfe1VQ
+ test-windows7-32-msvc/opt-talos-g1-e10s: Oa25OrYTSO2w6zR9yaUMYw
+ test-windows7-32-msvc/opt-talos-g4-e10s: Up3JjZChQw6CJRpHbgmU6w
+ test-windows7-32-msvc/opt-talos-g5-e10s: NckMuodzSBaZ2hYppHMNyw
+ test-windows7-32-msvc/opt-talos-other-e10s: TwyMOIBqSN6l53k-93bgAg
+ test-windows7-32-msvc/opt-talos-speedometer-e10s: A8z7BGelTrKfXo9bmr6S3A
+ test-windows7-32-msvc/opt-talos-svgr-e10s: Rpebbr5NSmO5z4opM-nJtA
+ test-windows7-32-msvc/opt-talos-tp5o-e10s: SBW1s9vFSZyliRTjzDeWPw
+ test-windows7-32-msvc/opt-talos-tp6-e10s: TOxkOPSRTm6Rj9vufZep-A
+ test-windows7-32-msvc/opt-talos-tps-e10s: V_qKt-9GTJq8KVTOUepcNQ
+ test-windows7-32-msvc/opt-talos-xperf-e10s: VgFJUOHbSfOxBnhhSQa97Q
+ test-windows7-32-nightly/opt-awsy-base-e10s: HV7jfPRXTdmtL9qbHG9NAg
+ test-windows7-32-nightly/opt-awsy-e10s: TUg7cuVbSwuD80AOHvPV-Q
+ test-windows7-32-nightly/opt-cppunit: BO722ioQQ5irIYDAR2FXVA
+ test-windows7-32-nightly/opt-crashtest-e10s: LoVUJYHqSD2-GsTdLywbFw
+ test-windows7-32-nightly/opt-firefox-ui-functional-local-e10s: PonrDDt1TF-oDSS2XuW9Gg
+ test-windows7-32-nightly/opt-firefox-ui-functional-remote-e10s: OejDfksBQaGNtBJ816zLAA
+ test-windows7-32-nightly/opt-marionette-e10s: Nb1JQhw3QXyRp_eg20iLqg
+ test-windows7-32-nightly/opt-marionette-headless-e10s: RK5d3vVFTza2o1DVTi2txA
+ test-windows7-32-nightly/opt-mochitest-a11y: fo2u5FpxRdKnzTWyxiLm2w
+ test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-1: fBlfTpEQSJu53YrJQsQC1w
+ test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-2: fIe2hSXPTB-268Dc8t5ZUA
+ test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-3: QgAPu9dUQReO949vie_ArQ
+ test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-4: ZEg9TfpSSESW-FgaDfSpjA
+ test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-5: VljfU8kMTgiTm3bbVvb6CQ
+ test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-6: LyjycC6_SBSb7Ua81H32jw
+ test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-7: fMOwIA_QTOS8ZiKRlAGgCQ
+ test-windows7-32-nightly/opt-mochitest-chrome-1: Tnuiw55nSVeAEH6wPUmYIw
+ test-windows7-32-nightly/opt-mochitest-chrome-2: IPbxje_MRtyUIiZ6zkfJ9Q
+ test-windows7-32-nightly/opt-mochitest-chrome-3: IK2mdnxzREqTtJLvmY4jlA
+ test-windows7-32-nightly/opt-mochitest-clipboard-e10s: Q67ndtymQ_SP9DmD3wF-mg
+ test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-1: VtPh6Yk8TP6k1U6UZSFlBw
+ test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-2: aQhM26S1QXigkJE4bKcsuw
+ test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-3: DHHVSKHETLSsFnZdaNmA6A
+ test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-4: Y7gdCvQFS5mMB_Lw2r4uyQ
+ test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-5: W6Zs8tDGT4G6_ZbRVd6kZA
+ test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-6: LGLvFNBiSqCC-KVUXWeEUA
+ test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-7: Bv-WR9jTTvKBd22kshXw9g
+ test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-8: SAIXkoJhTOWEdK9UIwfKTQ
+ test-windows7-32-nightly/opt-mochitest-e10s-1: Pfwlbo2ORG6TycIXnnEghA
+ test-windows7-32-nightly/opt-mochitest-e10s-2: BLs5W1QeTS24Ar65zFMBUw
+ test-windows7-32-nightly/opt-mochitest-e10s-3: aM9iVakkQfiaMioDlpckew
+ test-windows7-32-nightly/opt-mochitest-e10s-4: csiLPz2SQUiVcHh4d_qtJQ
+ test-windows7-32-nightly/opt-mochitest-e10s-5: HqIXSw8KS62QM5jO5-7o6w
+ test-windows7-32-nightly/opt-mochitest-gpu-e10s: CcFWYlL7S1y4EwvxsoMzWw
+ test-windows7-32-nightly/opt-mochitest-media-e10s-1: ExxKdQyTSeWnzzdPC49s7Q
+ test-windows7-32-nightly/opt-mochitest-media-e10s-2: St-RTAZVQ9ev12d3qAxOiA
+ test-windows7-32-nightly/opt-mochitest-media-e10s-3: bhod472FT62wdlHPcjtT9g
+ test-windows7-32-nightly/opt-mochitest-webgl1-core-e10s: aB99GpcSQ5usbLG6NE50wg
+ test-windows7-32-nightly/opt-mochitest-webgl1-ext-e10s: MBuloNosTZC2F-WgV6CXdQ
+ test-windows7-32-nightly/opt-mochitest-webgl2-core-e10s: Vv5HU1cvRgWKMnnsuzuRlg
+ test-windows7-32-nightly/opt-mochitest-webgl2-ext-e10s-1: LRS_uuddQOy3o41ERcIk9g
+ test-windows7-32-nightly/opt-mochitest-webgl2-ext-e10s-2: VYZaAXCIQviaOnh5cPk3ag
+ test-windows7-32-nightly/opt-mochitest-webgl2-ext-e10s-3: QpHNnu6OR9qdSI2PxOQUsg
+ test-windows7-32-nightly/opt-mochitest-webgl2-ext-e10s-4: AuE6-fopQ3GYBcze9ELbOQ
+ test-windows7-32-nightly/opt-reftest-e10s-1: NLenXZ7TTRecdNAXjWgnDg
+ test-windows7-32-nightly/opt-reftest-e10s-2: CpNKGntmS0ekRM8EDyWUYg
+ test-windows7-32-nightly/opt-reftest-gpu-e10s-1: YlM95Vf3RMSb-W_nIOFuNg
+ test-windows7-32-nightly/opt-reftest-gpu-e10s-2: QxcwyDwbRluI4d9MHWWoyg
+ test-windows7-32-nightly/opt-reftest-no-accel-e10s-1: cel2S3r6QteR14vBomSgwg
+ test-windows7-32-nightly/opt-reftest-no-accel-e10s-2: RVpOchBXR4Gm4hQvauGwCQ
+ test-windows7-32-nightly/opt-reftest-no-accel-e10s-3: dPmPo6l8RVuxoNL_9wkBGQ
+ test-windows7-32-nightly/opt-reftest-no-accel-e10s-4: DG_PgXxvQnG7t7YspSngkA
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-1: dT3LAUXSRtqVLIEXvgfmYg
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-10: cgwfYiVLSLKLbpRDpvVdhQ
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-11: KjimZRU1TDirC-YZB8IDQQ
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-12: fKrbqba1TKKkfW2t9XaMyQ
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-2: UjJVMojAT2yRTNdSIKMQwA
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-3: VEuCvZdTTt-ekBRNXSMHpQ
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-4: av6AkvQtTQKRiCL2A3GoxQ
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-5: feoa_LC9Sm6w1WIMselx_g
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-6: TYShh8PVSOK9CM-15oscXg
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-7: IRPODajnTI2bG6uwRaLt2g
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-8: O-kXnzwlQnepj7_JAvoGjQ
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-9: DU8ni1K1QqOj-_35L5SeCg
+ test-windows7-32-nightly/opt-web-platform-tests-reftests-e10s: En6vKJMCSQGboXlA3P7Dsg
+ test-windows7-32-nightly/opt-xpcshell: HV8t9V5JRNWLzPfPvioYnw
+ test-windows7-32/debug-cppunit: JJSwTf7sTGap6bV7myAMYw
+ test-windows7-32/debug-crashtest-e10s: bteeRuEdSfGcV9gqpfzXoA
+ test-windows7-32/debug-firefox-ui-functional-local-e10s: OiPUvXC8SSGji_R26javuQ
+ test-windows7-32/debug-firefox-ui-functional-remote-e10s: MQ_uwHC8RHS8SUsKAYjHIQ
+ test-windows7-32/debug-gtest: YkVzkQ4KSKy-C4bbb0teUA
+ test-windows7-32/debug-marionette-e10s: abZVJwHjRYSXd4VfO4zyOQ
+ test-windows7-32/debug-marionette-headless-e10s: Nboz_JrxRDevotY1KjQcoA
+ test-windows7-32/debug-mochitest-a11y: ObPWHiT4QQ6jMBdd9TagEA
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-1: BNHRc0r1R76bPwbj2D0SNQ
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-2: aMCqLB37Q9Csw6q-PRLlvg
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-3: CuyMAz2HTMmy3mK3DQxWSg
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-4: LP_eKeLiT66a8Ass1gDFjA
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-5: PxhRUrEpSIqbuCWLOCGuaw
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-6: UtY3eSGbT06RwfDeyNu7_Q
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-7: XsImJ0e-RP2AqUkb3MlruA
+ test-windows7-32/debug-mochitest-chrome-1: Cekuf5xkQey3wpapZnFVqA
+ test-windows7-32/debug-mochitest-chrome-2: PQkcbXcPQ36W-slIHTVV6Q
+ test-windows7-32/debug-mochitest-chrome-3: E9F9noBhTAaXf0Xw-fjRTQ
+ test-windows7-32/debug-mochitest-clipboard-e10s: CesIGLpXR-qMcOppbEaYIA
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-1: PcAJiRB4RXOCjf65x_siwg
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-2: f3PSM7cgR0S64j6UlCrdMw
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-3: QSdBKmxORoe1Zk6nm6dxWA
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-4: XRYhMCd1SDiv8Rr2x2F-DA
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-5: WcBbW7R8S7WIFXvaNF4PbQ
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-6: f9TyGBVBQmSQj7J85QWHvA
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-7: VAocR7p0RVSZMUaWcGQBXw
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-8: VtqKh-9ARCGM-Hyic7CTbA
+ test-windows7-32/debug-mochitest-e10s-1: d3ijBs9BSVmPQuwXluWa7Q
+ test-windows7-32/debug-mochitest-e10s-2: blEOU6B1QSeN8nKPsTjHVw
+ test-windows7-32/debug-mochitest-e10s-3: MhqkHExqTKW94bbWkN0FMw
+ test-windows7-32/debug-mochitest-e10s-4: Xt8QVoOMSXmOrUf14YgMbg
+ test-windows7-32/debug-mochitest-e10s-5: HNgbbIJoTB65KVShFzcnEQ
+ test-windows7-32/debug-mochitest-gpu-e10s: XclNYD1iTvO7cRpeiy7HhA
+ test-windows7-32/debug-mochitest-media-e10s-1: BLOhAaeUQaWOatACJflQ2Q
+ test-windows7-32/debug-mochitest-media-e10s-2: HcDpkzplRa-jgE91xtmtfw
+ test-windows7-32/debug-mochitest-media-e10s-3: XfrNjIL3TpO7BeP9FdJuSg
+ test-windows7-32/debug-mochitest-webgl1-core-e10s: EPXjeZr_RaSoqImyg6nxhQ
+ test-windows7-32/debug-mochitest-webgl1-ext-e10s: A-bEKONCRPyJ84stIeVKdg
+ test-windows7-32/debug-mochitest-webgl2-core-e10s: Me93X-W6Rr2l8k9e9EX1dA
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-1: bYO9b5noSXGd4FQyetEviA
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-2: cJzSz2LBRa2eEVT9RZ5KxA
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-3: TFWp2Lp4RCWtMsYn_zhHzQ
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-4: Yaxq7y3rRc2PYikdQNlzwQ
+ test-windows7-32/debug-reftest-e10s-1: A-z5Mjq8Qw-xyPyhMjr3qA
+ test-windows7-32/debug-reftest-e10s-2: dlBPWLtBT868DrvIrE5gOg
+ test-windows7-32/debug-reftest-e10s-3: VkbOhr6bQv2Zrbkir-Tc7w
+ test-windows7-32/debug-reftest-e10s-4: JnSEpzdvQ0CelidfMpcCOQ
+ test-windows7-32/debug-reftest-gpu-e10s-1: Hkx6LOv0Txanm3P8Addv2g
+ test-windows7-32/debug-reftest-gpu-e10s-2: e8BrPWFcS0Cd5PMOIS2-Yg
+ test-windows7-32/debug-reftest-gpu-e10s-3: YtTeu9WURTqlLOLjdA7JKA
+ test-windows7-32/debug-reftest-gpu-e10s-4: WqG2S7LvRf24eklvBw-v8w
+ test-windows7-32/debug-reftest-no-accel-e10s-1: OqjWmqC4SXWgWuDF4vCwLw
+ test-windows7-32/debug-reftest-no-accel-e10s-2: T6RpBHMmTI2TVnl05IOV4w
+ test-windows7-32/debug-reftest-no-accel-e10s-3: fz4LEI-AToe_PfVN28uTsg
+ test-windows7-32/debug-reftest-no-accel-e10s-4: azLHq_7ITnuRR9NsMXVpvw
+ test-windows7-32/debug-web-platform-tests-e10s-1: dFsmr-MNRHCk3qkTu7xo4g
+ test-windows7-32/debug-web-platform-tests-e10s-10: ccGSV9IETIO2U9N7dF428w
+ test-windows7-32/debug-web-platform-tests-e10s-11: UoqOHKU1SRSVp4F_eGb0Dw
+ test-windows7-32/debug-web-platform-tests-e10s-12: YtIYhaLCTsuBuQdpA8k3cQ
+ test-windows7-32/debug-web-platform-tests-e10s-2: KE1XSuhcR-SB0R4VhGM67Q
+ test-windows7-32/debug-web-platform-tests-e10s-3: BDsOi4nMRo6H7YIgV1DN_w
+ test-windows7-32/debug-web-platform-tests-e10s-4: bnsymjp_SQieaem_xOw9oQ
+ test-windows7-32/debug-web-platform-tests-e10s-5: TBmZAeCvRLuI90XZqsMq6A
+ test-windows7-32/debug-web-platform-tests-e10s-6: FqW949QyTjKpK0KRmSmG7w
+ test-windows7-32/debug-web-platform-tests-e10s-7: UaXLZjTERiyX6XhWdkkydg
+ test-windows7-32/debug-web-platform-tests-e10s-8: AvLjU0EtT_CLYv-3F6soUQ
+ test-windows7-32/debug-web-platform-tests-e10s-9: JQIP6skOQ9-PsBNEYOmJ9Q
+ test-windows7-32/debug-web-platform-tests-reftests-e10s: f7s8_unhQjG3oJLKPq06rg
+ test-windows7-32/debug-xpcshell: SmSPIZytRte65OUrqPSU6g
+ test-windows7-32/opt-talos-bcv-e10s: TCz2dSRLTemtcbFwOYtbWQ
+ test-windows7-32/opt-talos-chrome-e10s: bVw1FtZKSnqzyId1s0VOWg
+ test-windows7-32/opt-talos-damp-e10s: RdeUvE9OQaamWbwQU_koIQ
+ test-windows7-32/opt-talos-dromaeojs-e10s: X5LuD6UpTWW3Ld9YiBDspg
+ test-windows7-32/opt-talos-g1-e10s: BHD70D2fS3y5fg6mGt1IFg
+ test-windows7-32/opt-talos-g4-e10s: ScddyTXyQa6omsTaMpGOZw
+ test-windows7-32/opt-talos-g5-e10s: frf1vBhtRT-hS19o9yE0Ig
+ test-windows7-32/opt-talos-other-e10s: HlF_IG5_TRKknj0Yc-6qhQ
+ test-windows7-32/opt-talos-speedometer-e10s: RHL5POymR4aJ2-OB5oFL8Q
+ test-windows7-32/opt-talos-svgr-e10s: Xs7562SMSQ-bKOquIbG9Wg
+ test-windows7-32/opt-talos-tp5o-e10s: XPAmoCr3RMKvg5eGJEm9Jg
+ test-windows7-32/opt-talos-tp6-e10s: L5x1L5OOQv6tCI-CdCFO0w
+ test-windows7-32/opt-talos-tps-e10s: BDZpu3BCTiKjUH-c7m1MXg
+ test-windows7-32/opt-talos-xperf-e10s: MvExFTIETRSlN7y1K318Og
+ toolchain-linux64-android-gradle-dependencies: Ejx3j_TFQF6ue4ICBAm50w
+ toolchain-linux64-android-ndk-linux-repack: TbJ7aQCASTW7_ZOcFDITGw
+ toolchain-linux64-android-sdk-linux-repack: ZZardaJfRta2f6XTzAoNRA
+ toolchain-linux64-binutils: bQz0dpauTvSwvo_blA8iwQ
+ toolchain-linux64-cbindgen: WV9xRXQMToKhsF6cxDqCBA
+ toolchain-linux64-cctools-port: L9nDqulJQxKjvsTsURbDlw
+ toolchain-linux64-clang-3.9: R8-r8ookSiCfYbJYejpNWA
+ toolchain-linux64-clang-6: E-pAZ4gVQVCkX4gzYF3WfA
+ toolchain-linux64-clang-6-macosx-cross: fhVH_vwjRe-WRCEPcXiw2Q
+ toolchain-linux64-clang-tidy: a6v0ws6ARROjJ0WFqziX-w
+ toolchain-linux64-gcc-4.9: EdeVA6VwQqe3xzBjj1JVYw
+ toolchain-linux64-gcc-6: A7qVVBdbQoOSxVR7sshafw
+ toolchain-linux64-gcc-sixgill: JKEtKWFxRSGE2oGWpn-jSA
+ toolchain-linux64-hfsplus: e5QX1QaxQqidqKMqekvFOQ
+ toolchain-linux64-infer: OGiz92M7T1Kdysxtokyu3w
+ toolchain-linux64-libdmg: EO8XTk2rTuOB5Ku4JrPrFg
+ toolchain-linux64-llvm-dsymutil: VfDslyQ8TASVZ9LWmStnkQ
+ toolchain-linux64-node: Wi27Y0kZTHyy6JSuiSGz0w
+ toolchain-linux64-rust-1.28: et3673o9QUiFyQk-hccQBw
+ toolchain-linux64-rust-android-1.28: O7oG2edzRwuU8vRUUdMRqQ
+ toolchain-linux64-rust-macos-1.28: ORDZULTuQOCAL8uIraFbHw
+ toolchain-linux64-rust-nightly: NsBOpFzpT82sfq9Sxa6MdQ
+ toolchain-linux64-rust-size: e0_TP74QTFGV3Gwp0oZm7w
+ toolchain-linux64-sccache: fYJWAj-YTCm1qZGbGKvFFA
+ toolchain-linux64-tup: B8bIAVl9Q6u4Sq1kDg9sjQ
+ toolchain-win32-clang-cl-st-an: YJ8sBjtBSSa2r-GNuXwjTA
+ toolchain-win32-rust-1.28: USW_A4OqS2a9ADJ1UQfhCw
+ toolchain-win64-cbindgen: Dh47x4tbQ3eTfT9E9-BFIA
+ toolchain-win64-clang-cl: TRcMRJbxREiO6DfXvmf4SA
+ toolchain-win64-clang-cl-st-an: U5LpO6b3RXGge1eSMvErjg
+ toolchain-win64-clang-tidy: ElrbzUy2ThWDIVGxps9Ewg
+ toolchain-win64-node: YiZyuAI_TvySNF523_VdNQ
+ toolchain-win64-rust-1.28: LtSP0Uo0QTaN9ka4PppP7A
+ toolchain-win64-rust-size: bhXklMe_SB2E-lnqKKoHFA
+ toolchain-win64-sccache: f8ETToxiSpSYEJSozHdcFg
+ upload-generated-sources-linux-devedition-nightly/opt: bFzUdYJAQRe0G5t8u8KTOg
+ upload-generated-sources-linux-nightly/opt: PTjMFha-RiyRGlMJA9nbMg
+ upload-generated-sources-linux64-devedition-nightly/opt: RJ7giipQStyxI9vPNMBfZA
+ upload-generated-sources-linux64-nightly/opt: Eo7DTN7kTDqhvZjFnw5JBA
+ upload-generated-sources-macosx64-devedition-nightly/opt: PzaXu4jPQ4it9LtH8qYjzA
+ upload-generated-sources-macosx64-nightly/opt: Hriy5o4aRA294yak12FPhg
+ upload-generated-sources-win32-devedition-nightly/opt: Lpq7FF3DTHmJ2TqS-cV_cQ
+ upload-generated-sources-win32-nightly/opt: cSmblNMQQKyyfsLL8RcwrA
+ upload-generated-sources-win64-devedition-nightly/opt: ckp7YSkvTmue_snYs_plhA
+ upload-generated-sources-win64-nightly/opt: eaLzYIJvSfmZNfX5ZfGA7w
+ valgrind-linux64-valgrind/opt: Fbla0BDxQ0y77eyPwOSLbg
+filters:
+ - target_tasks_method
+head_ref: 91955baf362bcd432efd89fd8a247bb93e197e91
+head_repository: https://hg.mozilla.org/releases/mozilla-beta
+head_rev: 91955baf362bcd432efd89fd8a247bb93e197e91
+hg_branch: default
+level: "3"
+message: " "
+moz_build_date: "20181011200118"
+next_version: 63.0b15
+optimize_target_tasks: true
+owner: ryanvm@gmail.com
+project: mozilla-beta
+pushdate: 1539288078
+pushlog_id: "9972"
+release_enable_emefree: true
+release_enable_partners: true
+release_eta: null
+release_history:
+ Darwin_x86_64-gcc3-u-i386-x86_64:
+ ach:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ach/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ach/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ach/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ af:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/af/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/af/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/af/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ an:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/an/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/an/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/an/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ar:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ar/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ar/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ar/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ as:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/as/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/as/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/as/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ast:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ast/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ast/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ast/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ az:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/az/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/az/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/az/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ be:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/be/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/be/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/be/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bg:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/bg/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/bg/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/bg/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-BD:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/bn-BD/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/bn-BD/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/bn-BD/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/bn-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/bn-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/bn-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ br:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/br/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/br/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/br/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/bs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/bs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/bs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ca:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ca/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ca/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ca/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cak:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/cak/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/cak/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/cak/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/cs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/cs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/cs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cy:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/cy/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/cy/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/cy/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ da:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/da/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/da/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/da/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ de:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/de/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/de/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/de/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ dsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/dsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/dsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/dsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ el:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/el/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/el/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/el/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-CA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/en-CA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/en-CA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/en-CA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-GB:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/en-GB/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/en-GB/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/en-GB/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-US:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/en-US/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/en-US/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/en-US/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-ZA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/en-ZA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/en-ZA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/en-ZA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eo:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/eo/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/eo/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/eo/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-AR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/es-AR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/es-AR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/es-AR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-CL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/es-CL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/es-CL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/es-CL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-ES:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/es-ES/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/es-ES/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/es-ES/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-MX:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/es-MX/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/es-MX/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/es-MX/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ et:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/et/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/et/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/et/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/eu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/eu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/eu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fa:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/fa/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/fa/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/fa/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ff:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ff/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ff/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ff/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/fi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/fi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/fi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/fr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/fr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/fr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fy-NL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/fy-NL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/fy-NL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/fy-NL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ga-IE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ga-IE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ga-IE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ga-IE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gd:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/gd/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/gd/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/gd/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/gl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/gl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/gl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/gn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/gn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/gn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gu-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/gu-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/gu-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/gu-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ he:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/he/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/he/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/he/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hi-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hi-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hi-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hi-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hy-AM:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hy-AM/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hy-AM/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hy-AM/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ia:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ia/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ia/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ia/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ id:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/id/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/id/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/id/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ is:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/is/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/is/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/is/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ it:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/it/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/it/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/it/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ja-JP-mac:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ja-JP-mac/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ja-JP-mac/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ja-JP-mac/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ka:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ka/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ka/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ka/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kab:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/kab/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/kab/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/kab/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/kk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/kk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/kk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ km:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/km/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/km/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/km/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/kn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/kn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/kn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ko:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ko/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ko/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ko/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lij:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/lij/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/lij/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/lij/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lt:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/lt/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/lt/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/lt/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lv:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/lv/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/lv/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/lv/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mai:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/mai/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/mai/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/mai/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/mk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/mk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/mk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ml:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ml/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ml/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ml/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/mr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/mr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/mr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ms:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ms/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ms/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ms/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ my:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/my/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/my/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/my/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nb-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/nb-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/nb-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/nb-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ne-NP:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ne-NP/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ne-NP/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ne-NP/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/nl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/nl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/nl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nn-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/nn-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/nn-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/nn-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ oc:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/oc/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/oc/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/oc/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ or:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/or/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/or/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/or/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pa-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/pa-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/pa-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/pa-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/pl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/pl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/pl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-BR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/pt-BR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/pt-BR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/pt-BR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-PT:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/pt-PT/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/pt-PT/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/pt-PT/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ rm:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/rm/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/rm/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/rm/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ro:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ro/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ro/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ro/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ru:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ru/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ru/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ru/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ si:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/si/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/si/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/si/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ son:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/son/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/son/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/son/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sq:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sq/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sq/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sq/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sv-SE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sv-SE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sv-SE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sv-SE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ta:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ta/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ta/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ta/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ te:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/te/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/te/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/te/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ th:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/th/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/th/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/th/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ tr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/tr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/tr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/tr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/uk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/uk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/uk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ur:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ur/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ur/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ur/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uz:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/uz/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/uz/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/uz/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ vi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/vi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/vi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/vi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ xh:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/xh/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/xh/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/xh/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-CN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/zh-CN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/zh-CN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/zh-CN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-TW:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/zh-TW/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/zh-TW/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/zh-TW/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ Linux_x86-gcc3:
+ ach:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ach/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ach/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ach/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ af:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/af/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/af/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/af/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ an:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/an/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/an/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/an/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ar:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ar/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ar/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ar/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ as:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/as/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/as/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/as/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ast:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ast/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ast/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ast/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ az:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/az/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/az/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/az/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ be:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/be/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/be/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/be/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bg:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/bg/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/bg/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/bg/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-BD:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/bn-BD/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/bn-BD/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/bn-BD/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/bn-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/bn-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/bn-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ br:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/br/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/br/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/br/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/bs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/bs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/bs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ca:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ca/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ca/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ca/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cak:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/cak/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/cak/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/cak/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/cs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/cs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/cs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cy:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/cy/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/cy/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/cy/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ da:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/da/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/da/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/da/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ de:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/de/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/de/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/de/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ dsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/dsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/dsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/dsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ el:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/el/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/el/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/el/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-CA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/en-CA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/en-CA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/en-CA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-GB:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/en-GB/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/en-GB/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/en-GB/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-US:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/en-US/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/en-US/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/en-US/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-ZA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/en-ZA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/en-ZA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/en-ZA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eo:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/eo/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/eo/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/eo/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-AR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/es-AR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/es-AR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/es-AR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-CL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/es-CL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/es-CL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/es-CL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-ES:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/es-ES/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/es-ES/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/es-ES/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-MX:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/es-MX/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/es-MX/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/es-MX/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ et:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/et/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/et/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/et/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/eu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/eu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/eu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fa:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/fa/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/fa/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/fa/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ff:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ff/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ff/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ff/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/fi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/fi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/fi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/fr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/fr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/fr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fy-NL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/fy-NL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/fy-NL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/fy-NL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ga-IE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ga-IE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ga-IE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ga-IE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gd:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/gd/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/gd/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/gd/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/gl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/gl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/gl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/gn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/gn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/gn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gu-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/gu-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/gu-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/gu-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ he:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/he/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/he/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/he/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hi-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hi-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hi-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hi-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hy-AM:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hy-AM/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hy-AM/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hy-AM/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ia:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ia/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ia/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ia/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ id:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/id/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/id/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/id/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ is:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/is/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/is/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/is/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ it:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/it/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/it/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/it/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ja:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ja/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ja/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ja/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ka:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ka/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ka/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ka/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kab:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/kab/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/kab/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/kab/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/kk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/kk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/kk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ km:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/km/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/km/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/km/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/kn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/kn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/kn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ko:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ko/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ko/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ko/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lij:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/lij/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/lij/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/lij/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lt:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/lt/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/lt/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/lt/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lv:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/lv/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/lv/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/lv/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mai:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/mai/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/mai/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/mai/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/mk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/mk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/mk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ml:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ml/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ml/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ml/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/mr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/mr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/mr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ms:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ms/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ms/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ms/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ my:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/my/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/my/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/my/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nb-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/nb-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/nb-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/nb-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ne-NP:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ne-NP/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ne-NP/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ne-NP/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/nl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/nl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/nl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nn-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/nn-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/nn-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/nn-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ oc:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/oc/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/oc/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/oc/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ or:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/or/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/or/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/or/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pa-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/pa-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/pa-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/pa-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/pl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/pl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/pl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-BR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/pt-BR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/pt-BR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/pt-BR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-PT:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/pt-PT/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/pt-PT/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/pt-PT/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ rm:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/rm/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/rm/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/rm/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ro:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ro/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ro/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ro/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ru:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ru/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ru/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ru/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ si:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/si/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/si/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/si/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ son:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/son/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/son/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/son/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sq:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sq/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sq/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sq/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sv-SE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sv-SE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sv-SE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sv-SE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ta:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ta/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ta/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ta/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ te:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/te/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/te/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/te/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ th:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/th/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/th/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/th/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ tr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/tr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/tr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/tr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/uk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/uk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/uk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ur:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ur/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ur/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ur/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uz:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/uz/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/uz/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/uz/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ vi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/vi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/vi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/vi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ xh:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/xh/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/xh/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/xh/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-CN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/zh-CN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/zh-CN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/zh-CN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-TW:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/zh-TW/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/zh-TW/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/zh-TW/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ Linux_x86_64-gcc3:
+ ach:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ach/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ach/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ach/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ af:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/af/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/af/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/af/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ an:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/an/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/an/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/an/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ar:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ar/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ar/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ar/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ as:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/as/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/as/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/as/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ast:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ast/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ast/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ast/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ az:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/az/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/az/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/az/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ be:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/be/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/be/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/be/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bg:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/bg/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/bg/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/bg/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-BD:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/bn-BD/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/bn-BD/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/bn-BD/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/bn-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/bn-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/bn-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ br:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/br/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/br/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/br/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/bs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/bs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/bs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ca:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ca/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ca/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ca/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cak:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/cak/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/cak/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/cak/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/cs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/cs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/cs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cy:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/cy/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/cy/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/cy/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ da:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/da/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/da/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/da/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ de:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/de/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/de/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/de/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ dsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/dsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/dsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/dsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ el:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/el/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/el/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/el/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-CA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/en-CA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/en-CA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/en-CA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-GB:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/en-GB/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/en-GB/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/en-GB/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-US:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/en-US/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/en-US/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/en-US/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-ZA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/en-ZA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/en-ZA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/en-ZA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eo:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/eo/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/eo/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/eo/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-AR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/es-AR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/es-AR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/es-AR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-CL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/es-CL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/es-CL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/es-CL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-ES:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/es-ES/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/es-ES/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/es-ES/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-MX:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/es-MX/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/es-MX/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/es-MX/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ et:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/et/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/et/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/et/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/eu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/eu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/eu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fa:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/fa/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/fa/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/fa/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ff:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ff/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ff/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ff/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/fi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/fi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/fi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/fr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/fr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/fr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fy-NL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/fy-NL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/fy-NL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/fy-NL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ga-IE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ga-IE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ga-IE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ga-IE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gd:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/gd/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/gd/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/gd/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/gl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/gl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/gl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/gn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/gn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/gn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gu-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/gu-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/gu-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/gu-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ he:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/he/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/he/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/he/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hi-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hi-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hi-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hi-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hy-AM:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hy-AM/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hy-AM/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hy-AM/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ia:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ia/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ia/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ia/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ id:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/id/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/id/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/id/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ is:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/is/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/is/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/is/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ it:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/it/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/it/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/it/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ja:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ja/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ja/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ja/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ka:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ka/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ka/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ka/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kab:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/kab/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/kab/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/kab/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/kk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/kk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/kk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ km:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/km/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/km/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/km/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/kn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/kn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/kn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ko:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ko/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ko/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ko/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lij:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/lij/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/lij/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/lij/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lt:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/lt/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/lt/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/lt/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lv:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/lv/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/lv/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/lv/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mai:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/mai/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/mai/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/mai/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/mk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/mk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/mk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ml:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ml/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ml/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ml/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/mr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/mr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/mr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ms:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ms/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ms/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ms/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ my:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/my/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/my/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/my/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nb-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/nb-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/nb-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/nb-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ne-NP:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ne-NP/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ne-NP/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ne-NP/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/nl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/nl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/nl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nn-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/nn-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/nn-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/nn-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ oc:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/oc/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/oc/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/oc/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ or:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/or/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/or/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/or/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pa-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/pa-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/pa-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/pa-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/pl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/pl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/pl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-BR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/pt-BR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/pt-BR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/pt-BR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-PT:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/pt-PT/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/pt-PT/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/pt-PT/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ rm:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/rm/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/rm/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/rm/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ro:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ro/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ro/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ro/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ru:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ru/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ru/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ru/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ si:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/si/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/si/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/si/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ son:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/son/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/son/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/son/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sq:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sq/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sq/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sq/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sv-SE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sv-SE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sv-SE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sv-SE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ta:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ta/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ta/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ta/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ te:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/te/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/te/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/te/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ th:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/th/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/th/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/th/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ tr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/tr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/tr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/tr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/uk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/uk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/uk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ur:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ur/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ur/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ur/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uz:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/uz/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/uz/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/uz/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ vi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/vi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/vi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/vi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ xh:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/xh/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/xh/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/xh/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-CN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/zh-CN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/zh-CN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/zh-CN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-TW:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/zh-TW/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/zh-TW/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/zh-TW/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ WINNT_x86-msvc:
+ ach:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ach/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ach/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ach/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ af:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/af/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/af/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/af/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ an:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/an/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/an/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/an/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ar:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ar/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ar/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ar/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ as:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/as/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/as/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/as/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ast:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ast/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ast/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ast/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ az:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/az/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/az/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/az/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ be:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/be/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/be/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/be/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bg:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/bg/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/bg/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/bg/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-BD:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/bn-BD/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/bn-BD/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/bn-BD/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/bn-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/bn-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/bn-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ br:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/br/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/br/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/br/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/bs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/bs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/bs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ca:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ca/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ca/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ca/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cak:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/cak/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/cak/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/cak/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/cs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/cs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/cs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cy:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/cy/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/cy/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/cy/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ da:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/da/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/da/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/da/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ de:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/de/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/de/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/de/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ dsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/dsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/dsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/dsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ el:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/el/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/el/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/el/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-CA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/en-CA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/en-CA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/en-CA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-GB:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/en-GB/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/en-GB/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/en-GB/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-US:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/en-US/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/en-US/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/en-US/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-ZA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/en-ZA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/en-ZA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/en-ZA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eo:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/eo/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/eo/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/eo/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-AR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/es-AR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/es-AR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/es-AR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-CL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/es-CL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/es-CL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/es-CL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-ES:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/es-ES/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/es-ES/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/es-ES/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-MX:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/es-MX/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/es-MX/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/es-MX/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ et:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/et/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/et/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/et/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/eu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/eu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/eu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fa:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/fa/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/fa/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/fa/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ff:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ff/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ff/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ff/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/fi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/fi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/fi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/fr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/fr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/fr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fy-NL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/fy-NL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/fy-NL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/fy-NL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ga-IE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ga-IE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ga-IE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ga-IE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gd:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/gd/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/gd/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/gd/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/gl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/gl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/gl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/gn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/gn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/gn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gu-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/gu-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/gu-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/gu-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ he:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/he/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/he/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/he/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hi-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hi-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hi-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hi-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hy-AM:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hy-AM/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hy-AM/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hy-AM/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ia:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ia/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ia/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ia/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ id:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/id/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/id/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/id/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ is:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/is/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/is/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/is/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ it:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/it/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/it/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/it/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ja:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ja/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ja/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ja/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ka:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ka/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ka/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ka/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kab:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/kab/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/kab/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/kab/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/kk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/kk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/kk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ km:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/km/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/km/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/km/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/kn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/kn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/kn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ko:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ko/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ko/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ko/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lij:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/lij/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/lij/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/lij/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lt:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/lt/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/lt/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/lt/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lv:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/lv/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/lv/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/lv/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mai:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/mai/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/mai/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/mai/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/mk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/mk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/mk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ml:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ml/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ml/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ml/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/mr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/mr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/mr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ms:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ms/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ms/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ms/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ my:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/my/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/my/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/my/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nb-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/nb-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/nb-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/nb-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ne-NP:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ne-NP/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ne-NP/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ne-NP/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/nl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/nl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/nl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nn-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/nn-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/nn-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/nn-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ oc:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/oc/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/oc/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/oc/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ or:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/or/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/or/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/or/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pa-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/pa-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/pa-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/pa-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/pl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/pl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/pl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-BR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/pt-BR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/pt-BR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/pt-BR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-PT:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/pt-PT/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/pt-PT/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/pt-PT/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ rm:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/rm/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/rm/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/rm/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ro:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ro/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ro/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ro/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ru:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ru/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ru/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ru/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ si:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/si/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/si/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/si/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ son:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/son/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/son/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/son/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sq:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sq/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sq/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sq/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sv-SE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sv-SE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sv-SE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sv-SE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ta:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ta/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ta/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ta/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ te:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/te/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/te/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/te/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ th:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/th/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/th/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/th/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ tr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/tr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/tr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/tr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/uk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/uk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/uk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ur:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ur/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ur/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ur/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uz:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/uz/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/uz/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/uz/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ vi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/vi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/vi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/vi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ xh:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/xh/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/xh/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/xh/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-CN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/zh-CN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/zh-CN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/zh-CN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-TW:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/zh-TW/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/zh-TW/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/zh-TW/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ WINNT_x86_64-msvc:
+ ach:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ach/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ach/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ach/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ af:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/af/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/af/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/af/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ an:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/an/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/an/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/an/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ar:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ar/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ar/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ar/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ as:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/as/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/as/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/as/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ast:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ast/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ast/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ast/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ az:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/az/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/az/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/az/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ be:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/be/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/be/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/be/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bg:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/bg/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/bg/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/bg/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-BD:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/bn-BD/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/bn-BD/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/bn-BD/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/bn-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/bn-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/bn-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ br:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/br/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/br/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/br/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/bs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/bs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/bs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ca:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ca/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ca/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ca/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cak:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/cak/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/cak/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/cak/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/cs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/cs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/cs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cy:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/cy/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/cy/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/cy/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ da:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/da/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/da/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/da/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ de:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/de/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/de/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/de/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ dsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/dsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/dsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/dsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ el:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/el/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/el/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/el/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-CA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/en-CA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/en-CA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/en-CA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-GB:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/en-GB/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/en-GB/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/en-GB/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-US:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/en-US/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/en-US/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/en-US/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-ZA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/en-ZA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/en-ZA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/en-ZA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eo:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/eo/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/eo/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/eo/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-AR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/es-AR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/es-AR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/es-AR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-CL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/es-CL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/es-CL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/es-CL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-ES:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/es-ES/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/es-ES/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/es-ES/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-MX:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/es-MX/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/es-MX/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/es-MX/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ et:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/et/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/et/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/et/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/eu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/eu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/eu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fa:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/fa/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/fa/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/fa/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ff:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ff/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ff/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ff/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/fi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/fi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/fi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/fr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/fr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/fr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fy-NL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/fy-NL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/fy-NL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/fy-NL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ga-IE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ga-IE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ga-IE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ga-IE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gd:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/gd/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/gd/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/gd/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/gl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/gl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/gl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/gn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/gn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/gn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gu-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/gu-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/gu-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/gu-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ he:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/he/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/he/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/he/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hi-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hi-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hi-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hi-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hy-AM:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hy-AM/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hy-AM/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hy-AM/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ia:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ia/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ia/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ia/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ id:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/id/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/id/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/id/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ is:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/is/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/is/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/is/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ it:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/it/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/it/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/it/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ja:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ja/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ja/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ja/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ka:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ka/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ka/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ka/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kab:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/kab/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/kab/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/kab/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/kk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/kk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/kk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ km:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/km/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/km/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/km/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/kn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/kn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/kn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ko:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ko/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ko/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ko/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lij:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/lij/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/lij/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/lij/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lt:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/lt/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/lt/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/lt/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lv:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/lv/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/lv/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/lv/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mai:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/mai/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/mai/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/mai/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/mk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/mk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/mk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ml:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ml/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ml/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ml/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/mr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/mr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/mr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ms:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ms/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ms/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ms/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ my:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/my/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/my/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/my/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nb-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/nb-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/nb-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/nb-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ne-NP:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ne-NP/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ne-NP/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ne-NP/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/nl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/nl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/nl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nn-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/nn-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/nn-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/nn-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ oc:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/oc/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/oc/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/oc/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ or:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/or/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/or/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/or/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pa-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/pa-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/pa-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/pa-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/pl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/pl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/pl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-BR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/pt-BR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/pt-BR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/pt-BR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-PT:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/pt-PT/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/pt-PT/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/pt-PT/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ rm:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/rm/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/rm/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/rm/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ro:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ro/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ro/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ro/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ru:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ru/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ru/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ru/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ si:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/si/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/si/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/si/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ son:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/son/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/son/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/son/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sq:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sq/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sq/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sq/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sv-SE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sv-SE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sv-SE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sv-SE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ta:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ta/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ta/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ta/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ te:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/te/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/te/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/te/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ th:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/th/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/th/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/th/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ tr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/tr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/tr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/tr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/uk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/uk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/uk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ur:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ur/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ur/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ur/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uz:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/uz/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/uz/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/uz/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ vi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/vi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/vi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/vi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ xh:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/xh/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/xh/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/xh/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-CN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/zh-CN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/zh-CN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/zh-CN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-TW:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/zh-TW/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/zh-TW/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/zh-TW/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+release_partner_build_number: 1
+release_partner_config:
+ release-eme-free-repack:
+ mozilla-EME-free:
+ mozilla-EME-free:
+ locales:
+ - ach
+ - af
+ - an
+ - ar
+ - as
+ - ast
+ - az
+ - be
+ - bg
+ - bn-BD
+ - bn-IN
+ - br
+ - bs
+ - ca
+ - cak
+ - cs
+ - cy
+ - da
+ - de
+ - dsb
+ - el
+ - en-GB
+ - en-US
+ - en-ZA
+ - eo
+ - es-AR
+ - es-CL
+ - es-ES
+ - es-MX
+ - et
+ - eu
+ - fa
+ - ff
+ - fi
+ - fr
+ - fy-NL
+ - ga-IE
+ - gd
+ - gl
+ - gn
+ - gu-IN
+ - he
+ - hi-IN
+ - hr
+ - hsb
+ - hu
+ - hy-AM
+ - id
+ - is
+ - it
+ - ja
+ - ja-JP-mac
+ - ka
+ - kab
+ - kk
+ - km
+ - kn
+ - ko
+ - lij
+ - lt
+ - lv
+ - mai
+ - mk
+ - ml
+ - mr
+ - ms
+ - my
+ - nb-NO
+ - nl
+ - nn-NO
+ - or
+ - pa-IN
+ - pl
+ - pt-BR
+ - pt-PT
+ - rm
+ - ro
+ - ru
+ - si
+ - sk
+ - sl
+ - son
+ - sq
+ - sr
+ - sv-SE
+ - ta
+ - te
+ - th
+ - tr
+ - uk
+ - ur
+ - uz
+ - vi
+ - xh
+ - zh-CN
+ - zh-TW
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ release-partner-repack:
+ acer:
+ acer-002:
+ locales:
+ - en-US
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ aol:
+ aol:
+ locales:
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ aol_de:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ aol_desktop:
+ locales:
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ aol_huffington:
+ locales:
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ aol_uk:
+ locales:
+ - en-GB
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ chipde:
+ chipde:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ cliqz:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ cliqz-003:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ cliqz-004:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ cliqz-005:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ cliqz-006:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ cliqz-007:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ cliqz-008:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ cliqz-control:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ firefox:
+ firefox-election-edition:
+ locales:
+ - en-US
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ funnelcake:
+ funnelcake134:
+ locales:
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ funnelcake137:
+ locales:
+ - en-US
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ ironsource:
+ ironsource-google:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - es-ES
+ - fr
+ - id
+ - it
+ - ja
+ - ko
+ - pa-IN
+ - pl
+ - pt-BR
+ - ru
+ - tr
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ ironsource-google-aura:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - es-ES
+ - fr
+ - id
+ - it
+ - ja
+ - ko
+ - pa-IN
+ - pl
+ - pt-BR
+ - ru
+ - tr
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ ironsource-yahoo:
+ locales:
+ - en-US
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ ironsource-yahoo-aura:
+ locales:
+ - en-US
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ ironsource-yandex:
+ locales:
+ - en-US
+ - tr
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ mailru:
+ mailru:
+ locales:
+ - ru
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ okru:
+ locales:
+ - az
+ - en-US
+ - hy-AM
+ - kk
+ - ro
+ - ru
+ - tr
+ - uk
+ - uz
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ mozillaonline:
+ baidu:
+ locales:
+ - zh-CN
+ platforms:
+ - win32-shippable
+ upload_to_candidates: "true"
+ kingsoft:
+ locales:
+ - zh-CN
+ platforms:
+ - win32-shippable
+ upload_to_candidates: "true"
+ mainOther:
+ locales:
+ - en-US
+ - zh-CN
+ platforms:
+ - linux-shippable
+ - linux64-shippable
+ - macosx64-shippable
+ upload_to_candidates: "true"
+ mainWinFull:
+ locales:
+ - en-US
+ - zh-CN
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ mainWinStubFallback:
+ locales:
+ - zh-CN
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ others:
+ locales:
+ - zh-CN
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ qihoo:
+ locales:
+ - zh-CN
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ tencent:
+ locales:
+ - zh-CN
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ xbsafe:
+ locales:
+ - zh-CN
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ zol:
+ locales:
+ - zh-CN
+ platforms:
+ - win32-shippable
+ upload_to_candidates: "true"
+ ntt:
+ ntt:
+ locales:
+ - en-US
+ - ja
+ - ja-JP-mac
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ playanext:
+ playanext-wt:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - es-ES
+ - fr
+ - it
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ playanext-wt-us:
+ locales:
+ - en-US
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ qwant:
+ qwant-001:
+ locales:
+ - ca
+ - cy
+ - de
+ - en-GB
+ - en-US
+ - es-ES
+ - fr
+ - gd
+ - it
+ platforms:
+ - linux-shippable
+ - linux64-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ qwant-002:
+ locales:
+ - ca
+ - cy
+ - de
+ - en-GB
+ - en-US
+ - es-ES
+ - fr
+ - gd
+ - it
+ platforms:
+ - linux-shippable
+ - linux64-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ seznam:
+ seznam:
+ locales:
+ - cs
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ softonic:
+ softonic:
+ locales:
+ - de
+ - en-US
+ - es-ES
+ - fr
+ - it
+ - pl
+ - pt-BR
+ - ru
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ sweetlabs:
+ sweetlabs-b-oem1:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-b-oem2:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-b-oem3:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-b-r-oem1:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-b-r-oem2:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-b-r-oem3:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-oem1:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-oem2:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-r-oem1:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-r-oem2:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ toshiba:
+ toshiba-001-MX:
+ locales:
+ - es-MX
+ platforms:
+ - win32-shippable
+ toshiba-001-US:
+ locales:
+ - en-US
+ platforms:
+ - win32-shippable
+ toshiba-b2b-JP:
+ locales:
+ - en-US
+ platforms:
+ - win32-shippable
+ toshiba-download-B-US:
+ locales:
+ - en-US
+ platforms:
+ - win32-shippable
+ toshiba-download-MX:
+ locales:
+ - es-MX
+ platforms:
+ - win32-shippable
+ toshiba-download-US:
+ locales:
+ - en-US
+ platforms:
+ - win32-shippable
+ unitedinternet:
+ 1und1:
+ locales:
+ - de
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ 1und1_notb:
+ locales:
+ - de
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ gmx:
+ locales:
+ - de
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ gmx_notb:
+ locales:
+ - de
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ mail.com:
+ locales:
+ - de
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ mail.com_notb:
+ locales:
+ - de
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ web.de:
+ locales:
+ - de
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ web.de_notb:
+ locales:
+ - de
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ wildtangent:
+ wildtangent:
+ locales:
+ - en-US
+ platforms:
+ - win32-shippable
+ upload_to_candidates: "true"
+ yandex:
+ yandex-drp:
+ locales:
+ - ru
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ yandex-planB:
+ locales:
+ - ru
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ yandex-portals:
+ locales:
+ - ru
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ yandex-ru:
+ locales:
+ - ru
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ yandex-ru-mz:
+ locales:
+ - ru
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ yandex-tr:
+ locales:
+ - tr
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ yandex-tr-gezginler:
+ locales:
+ - tr
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ yandex-tr-tamindir:
+ locales:
+ - tr
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ yandex-ua:
+ locales:
+ - ru
+ - uk
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+release_partners: null
+release_product: firefox
+release_type: "beta"
+target_tasks_method: push_desktop
+try_mode: null
+try_options: null
+try_task_config: {}
+version: 63.0b14
+required_signoffs: []
+signoff_urls: {}
+phabricator_diff:
+tasks_for: action
+test_manifest_loader: default
diff --git a/taskcluster/test/params/mb-push-firefox.yml b/taskcluster/test/params/mb-push-firefox.yml
new file mode 100644
index 0000000000..84e8b3be7c
--- /dev/null
+++ b/taskcluster/test/params/mb-push-firefox.yml
@@ -0,0 +1,110 @@
+---
+base_repository: https://hg.mozilla.org/mozilla-central
+build_date: 1509164545
+build_number: 1
+app_version: 60.0b3
+version: 60.0b3
+next_version: 60.0b4
+filters:
+ - target_tasks_method
+head_ref: 196059cada7070ab1e35db83a22b60389bd0c794
+head_repository: https://hg.mozilla.org/releases/mozilla-beta
+head_rev: 196059cada7070ab1e35db83a22b60389bd0c794
+hg_branch: default
+level: "3"
+message: " "
+# morph_templates: {}
+moz_build_date: "20171028042225"
+optimize_target_tasks: true
+owner: xquan@mozilla.com
+project: mozilla-beta
+pushdate: 1509164545
+pushlog_id: "8069"
+release_eta: "2018-01-31T00:30:00+00:00"
+release_history: {}
+release_enable_partners: true
+release_partners: null
+release_partner_build_number: 1
+release_partner_config:
+ {
+ "release-eme-free-repack":
+ {
+ "mozilla-EME-free":
+ {
+ "mozilla-EME-free":
+ {
+ "s3cfg": "/builds/release-s3cfg",
+ "dist_version": "1.0",
+ "bucket": "net-mozaws-prod-delivery-firefox",
+ "platforms":
+ [
+ "macosx64-shippable",
+ "win32-shippable",
+ "win64-shippable",
+ ],
+ "aus": "mozilla-EMEfree",
+ "output_dir": "%(platform)s-EME-free/%(locale)s",
+ "upload_to_candidates": "true",
+ "locales": ["de", "en-US"],
+ "dist_id": "mozilla-EMEfree",
+ },
+ },
+ },
+ "release-partner-repack":
+ {
+ "partner2":
+ {
+ "partner2":
+ {
+ "dist_version": "1.0",
+ "bucket": "net-mozaws-prod-delivery-firefox",
+ "platforms":
+ [
+ "macosx64-shippable",
+ "win32-shippable",
+ "win64-shippable",
+ ],
+ "aus": "partner2",
+ "output_dir": "%(platform)s-EME-free/%(locale)s",
+ "locales": ["en-US"],
+ "dist_id": "partner2",
+ },
+ },
+ "partner1":
+ {
+ "partner1":
+ {
+ "dist_version": "1.0",
+ "bucket": "net-mozaws-prod-delivery-firefox",
+ "platforms":
+ [
+ "linux-shippable",
+ "linux64-shippable",
+ "macosx64-shippable",
+ "win32-shippable",
+ "win64-shippable",
+ ],
+ "aus": "partner1",
+ "output_dir": "%(platform)s-EME-free/%(locale)s",
+ "upload_to_candidates": "true",
+ "locales": ["de", "en-US"],
+ "dist_id": "partner1",
+ },
+ },
+ },
+ }
+release_enable_emefree: true
+# target_task_labels: []
+target_tasks_method: push_desktop
+do_not_optimize: []
+try_mode: null
+try_task_config: {}
+existing_tasks: {}
+try_options:
+release_type: "beta"
+release_product: firefox
+required_signoffs: []
+signoff_urls: {}
+phabricator_diff:
+tasks_for: action
+test_manifest_loader: default
diff --git a/taskcluster/test/params/mb-ship-devedition.yml b/taskcluster/test/params/mb-ship-devedition.yml
new file mode 100644
index 0000000000..a1f1e29f1c
--- /dev/null
+++ b/taskcluster/test/params/mb-ship-devedition.yml
@@ -0,0 +1,42 @@
+---
+base_repository: https://hg.mozilla.org/mozilla-central
+build_date: 1509164545
+build_number: 1
+app_version: 60.0b1
+version: 60.0b1
+next_version: 60.0b2
+filters:
+ - target_tasks_method
+head_ref: 196059cada7070ab1e35db83a22b60389bd0c794
+head_repository: https://hg.mozilla.org/releases/mozilla-beta
+head_rev: 196059cada7070ab1e35db83a22b60389bd0c794
+hg_branch: default
+level: "3"
+message: " "
+# morph_templates: {}
+moz_build_date: "20171028042225"
+optimize_target_tasks: true
+owner: xquan@mozilla.com
+project: mozilla-beta
+pushdate: 1509164545
+pushlog_id: "8069"
+release_eta: "2018-01-31T00:30:00+00:00"
+release_history: {}
+release_enable_partners: false
+release_partners: []
+release_partner_build_number: 1
+release_partner_config: null
+release_enable_emefree: false
+# target_task_labels: []
+target_tasks_method: ship_desktop
+do_not_optimize: []
+try_mode: null
+try_task_config: {}
+existing_tasks: {}
+try_options:
+release_type: "beta"
+release_product: devedition
+required_signoffs: []
+signoff_urls: {}
+phabricator_diff:
+tasks_for: action
diff --git a/taskcluster/test/params/mb-ship-firefox-partials.yml b/taskcluster/test/params/mb-ship-firefox-partials.yml
new file mode 100644
index 0000000000..10f8246683
--- /dev/null
+++ b/taskcluster/test/params/mb-ship-firefox-partials.yml
@@ -0,0 +1,19471 @@
+---
+app_version: "63.0"
+base_repository: https://hg.mozilla.org/mozilla-unified
+build_date: 1539288078
+build_number: 1
+do_not_optimize: []
+existing_tasks:
+ balrog-ach-linux-nightly/opt: LNu8vTKaTkKUatSKqg53NA
+ balrog-ach-linux64-nightly/opt: H83upk1ETAyGy8uE9ayNvw
+ balrog-ach-macosx64-nightly/opt: EqWdtWjrQ3WLtXaRdCcK0Q
+ balrog-ach-win32-nightly/opt: J_4r79LoQ6e3Zi3jhHxDtw
+ balrog-ach-win64-nightly/opt: Paz-PNUPRe-yyUVHIAMaXA
+ balrog-af-linux-nightly/opt: AKSL7IXKSSCsC2wN0jkLmA
+ balrog-af-linux64-nightly/opt: FSxFwou4RQeY9gr8jdp_3w
+ balrog-af-macosx64-nightly/opt: Vyf1IDm1RomRG1w5kM5hgQ
+ balrog-af-win32-nightly/opt: XDT728xmSQ64Eesq22G4pA
+ balrog-af-win64-nightly/opt: Q-z62n9CSSOsKR8sE9Iz1w
+ balrog-an-linux-nightly/opt: f0VD7y1XRQGuj9PcZPVZPw
+ balrog-an-linux64-nightly/opt: EWancfiiRTGLLDVE9oKA6g
+ balrog-an-macosx64-nightly/opt: TpTprr9dTkeGfsq2b5hAbQ
+ balrog-an-win32-nightly/opt: ALxjom0AS4uvyPkw8UiS4g
+ balrog-an-win64-nightly/opt: IFDW7L3rSUK3Zfb8s0nU3g
+ balrog-ar-linux-nightly/opt: VkAkpaMpQ1GQtlv5n1r9Xg
+ balrog-ar-linux64-nightly/opt: CquH6b-EQF-xVOBC_Gqt5A
+ balrog-ar-macosx64-nightly/opt: SiMe9VVESC65Ucqq-MwExQ
+ balrog-ar-win32-nightly/opt: MeLiWiReRQuKjp5jF3rGAg
+ balrog-ar-win64-nightly/opt: YzmxtIzXS4qxsATVDaxAtA
+ balrog-as-linux-nightly/opt: IGEIPjCJTLOr_THPNR2Vvw
+ balrog-as-linux64-nightly/opt: DdxNngoyQ0OSG3h-f-mk1Q
+ balrog-as-macosx64-nightly/opt: RSDIkXkhQIuLCdbKBIfFDA
+ balrog-as-win32-nightly/opt: cmK5-_iFT7uw2Bnb-pwVFQ
+ balrog-as-win64-nightly/opt: Mh7pso2FRTCLhrc5cVS8EA
+ balrog-ast-linux-nightly/opt: VPbd1rVGS0Cr817TSB2Acw
+ balrog-ast-linux64-nightly/opt: F_vbFztATk6NuYvthS9K9A
+ balrog-ast-macosx64-nightly/opt: flHMUHuLQ5uWSgkI7k3K6g
+ balrog-ast-win32-nightly/opt: fbJBTQtsQBSaJbDfQRlG3A
+ balrog-ast-win64-nightly/opt: XweFIjNoTjCtyfXTDYxYkA
+ balrog-az-linux-nightly/opt: ObVS45xdQTyxyKEknUUDhA
+ balrog-az-linux64-nightly/opt: DG7FdjiyRMe4cAmeKuLmAA
+ balrog-az-macosx64-nightly/opt: KJuebq7PSICEWKHVue0H6Q
+ balrog-az-win32-nightly/opt: FM3iGtxURLimBnIiz7omfA
+ balrog-az-win64-nightly/opt: YPByA5A6S-SQ3TPmILT46g
+ balrog-be-linux-nightly/opt: YUe8sQFITAyiN3F4BJW6RQ
+ balrog-be-linux64-nightly/opt: ZZ6Am6JGQdG03V-EB85-Lw
+ balrog-be-macosx64-nightly/opt: dQ2P6Z03SleRSBV8rcBftQ
+ balrog-be-win32-nightly/opt: MsMQavymTX-i_9YMohoYag
+ balrog-be-win64-nightly/opt: P3OQ2WFGTBWtJLTKczYoCA
+ balrog-bg-linux-nightly/opt: YL9BKVHySkaa7SvXlYw_Lw
+ balrog-bg-linux64-nightly/opt: Bem4Y-8_S3qUXLRwNu9Ccw
+ balrog-bg-macosx64-nightly/opt: eSTZG7ojQpib4GJvCMCavA
+ balrog-bg-win32-nightly/opt: A1dr5Wb_R-e2LS0djhbyzQ
+ balrog-bg-win64-nightly/opt: BBzti7rVTdKbbaXpRWdzjw
+ balrog-bn-BD-linux-nightly/opt: KnBPYSVoQK2EwMNjb9sqeQ
+ balrog-bn-BD-linux64-nightly/opt: LXQuY8qtSZm6lBhPiCFcuw
+ balrog-bn-BD-macosx64-nightly/opt: R9fLrVpWQQK17HZ5NKZ9sg
+ balrog-bn-BD-win32-nightly/opt: bVHZylUUSkWzAnUHjbe1FA
+ balrog-bn-BD-win64-nightly/opt: JsgRNaPFRPy40Eupo-2_pQ
+ balrog-bn-IN-linux-nightly/opt: cohWquwSQw20CdTgYKmayA
+ balrog-bn-IN-linux64-nightly/opt: LwMy_AYtTEmtnr4MBHcqnA
+ balrog-bn-IN-macosx64-nightly/opt: ZEHDtLoNSR2RUaMgdqM-Iw
+ balrog-bn-IN-win32-nightly/opt: XlqZ5qJESqmAXSAP5ndFzg
+ balrog-bn-IN-win64-nightly/opt: EIqkzRycQnmJVPAlqPjKfg
+ balrog-br-linux-nightly/opt: EACM_yd7Tvy2UgZ33Bhkmw
+ balrog-br-linux64-nightly/opt: PEGdJRfeQ3SG-I5--Ci7kA
+ balrog-br-macosx64-nightly/opt: CDokRQg5QW20_IaDncQt4w
+ balrog-br-win32-nightly/opt: VTecy8LPSOKkj8SZPeX6Uw
+ balrog-br-win64-nightly/opt: aT2uXgFpR2GMq-L6A_ID2w
+ balrog-bs-linux-nightly/opt: ca0zOLgvQgyRxE906ipgPw
+ balrog-bs-linux64-nightly/opt: WfH9fnOUQ2SQZerXtrmXtg
+ balrog-bs-macosx64-nightly/opt: Ge2QCJcSSQ29HvsOsPWM6w
+ balrog-bs-win32-nightly/opt: Gad56wRWRkyhcQHmXpgA6A
+ balrog-bs-win64-nightly/opt: X1EslU07Ra-nqayV6MARIg
+ balrog-ca-linux-nightly/opt: QuSV13-5TW6dPtdgBDblZQ
+ balrog-ca-linux64-nightly/opt: I5T_wzfUQsaJh7qT8O9nLg
+ balrog-ca-macosx64-nightly/opt: L24Qfi_KQk2U9GLh7ZPZXQ
+ balrog-ca-win32-nightly/opt: Ie3kChlxS02kkzqNKRl_5A
+ balrog-ca-win64-nightly/opt: SaM70u6ZRISa5zgrxOZo6A
+ balrog-cak-linux-nightly/opt: ETkl62U1Thq7wymrNDvC9g
+ balrog-cak-linux64-nightly/opt: cH_wjyyzTbyIpD72qWidqw
+ balrog-cak-macosx64-nightly/opt: CXXAbGNqQVa5sbxwweIy0Q
+ balrog-cak-win32-nightly/opt: eOMC4uR8RyyP3Qgjlxr6yA
+ balrog-cak-win64-nightly/opt: EaBvqI--Sq6UD5OGEWgvRA
+ balrog-cs-linux-nightly/opt: GgCpw1LWRiSHKB_DJLkhPA
+ balrog-cs-linux64-nightly/opt: RvMZTkPASqqvppFEZJkzVg
+ balrog-cs-macosx64-nightly/opt: FixtzW-FSXiE0Tk5gJ-Zyg
+ balrog-cs-win32-nightly/opt: BrwLoSEyRWq-rqEGSJkp2g
+ balrog-cs-win64-nightly/opt: RfPXY-eZTjSm9AhxcgZqlw
+ balrog-cy-linux-nightly/opt: aUP97k8aTIi9-_uLeyyY2g
+ balrog-cy-linux64-nightly/opt: DqTNzWbOSROhUbTeaxI2Sg
+ balrog-cy-macosx64-nightly/opt: Kd4bsYbAS9yLQShsxazOzA
+ balrog-cy-win32-nightly/opt: CDVmpXGzQSugetx3bfXR8w
+ balrog-cy-win64-nightly/opt: HMsQi4gXQe2pbEHYi4pIQg
+ balrog-da-linux-nightly/opt: R54GtA5ATum4jPwHajt7Wg
+ balrog-da-linux64-nightly/opt: AxWVb6etQDC1FrIbiER_9A
+ balrog-da-macosx64-nightly/opt: VFEctmKZTS2UPdbPcA__Ew
+ balrog-da-win32-nightly/opt: MhZvnQQOTvePrBarcWhWFQ
+ balrog-da-win64-nightly/opt: GOMIlCmJTnajjrbpSpcZPA
+ balrog-de-linux-nightly/opt: C0Y1ar60QCiuRwcbGlHHnw
+ balrog-de-linux64-nightly/opt: HZfJSWPoRuKFt36bZkjAAQ
+ balrog-de-macosx64-nightly/opt: J0WDms3lTuWjDqFnldqAmg
+ balrog-de-win32-nightly/opt: Kj6QgdLpSUGwIzBDtJl8Zw
+ balrog-de-win64-nightly/opt: CCae-gd5RuG74Oj9fBk-Uw
+ balrog-dsb-linux-nightly/opt: B0wRzBfrQLajgojlwqxEtg
+ balrog-dsb-linux64-nightly/opt: V_pSajCqTxipeKYgyIxtZw
+ balrog-dsb-macosx64-nightly/opt: e3HnIbstR5GuaPYJN3HsYA
+ balrog-dsb-win32-nightly/opt: VDYz1P3-TwCJ5FbmZGGSmQ
+ balrog-dsb-win64-nightly/opt: evTxKmQmQ3m_10PrwCNvvg
+ balrog-el-linux-nightly/opt: fQN4Rw7yQsqA7zp2ywjNJw
+ balrog-el-linux64-nightly/opt: ZyScFNVzSsqlqVI-2wGgOw
+ balrog-el-macosx64-nightly/opt: IhVX9pc7Q8S7fx2oQzfZ5g
+ balrog-el-win32-nightly/opt: XM9cVhanRFiLq4GpnqRSYQ
+ balrog-el-win64-nightly/opt: BajV0YAqTL2olkt3T0bOBg
+ balrog-en-CA-linux-nightly/opt: FZMvRYHwQFebWNiBkndh2A
+ balrog-en-CA-linux64-nightly/opt: IAKEd6a8RPaDp8bxidMkdQ
+ balrog-en-CA-macosx64-nightly/opt: IvnQeCNmSZm7fJacBliPLg
+ balrog-en-CA-win32-nightly/opt: QF5raq-BQd6GGMrwY2IETA
+ balrog-en-CA-win64-nightly/opt: UyhND3nXQryoxqtKHI9ocg
+ balrog-en-GB-linux-nightly/opt: WRf-D5d1QXWk6Bu1C1u1Vg
+ balrog-en-GB-linux64-nightly/opt: RZVoMOVxTgaS3XUME3rlcw
+ balrog-en-GB-macosx64-nightly/opt: cGjVSJK4RC224sTO1PwL_g
+ balrog-en-GB-win32-nightly/opt: D38Setq0QmuqvoDv07bNEg
+ balrog-en-GB-win64-nightly/opt: MKqShCLtSrSaax_djziJBA
+ balrog-en-ZA-linux-nightly/opt: eEjgBWukQTCRp0zATpfZQg
+ balrog-en-ZA-linux64-nightly/opt: Ac5DSI5URxeiPPDSH1LQ_Q
+ balrog-en-ZA-macosx64-nightly/opt: COJXme0NTICngxAXu5cktA
+ balrog-en-ZA-win32-nightly/opt: LEKve5JnQHCevcIWKZvLCw
+ balrog-en-ZA-win64-nightly/opt: N9QcgCiCSK-C2_NuieuBLA
+ balrog-eo-linux-nightly/opt: YG0sGdp4TL-Sb_QvqHhN1w
+ balrog-eo-linux64-nightly/opt: WCHg0D4IRXeaqGbVYJGhhQ
+ balrog-eo-macosx64-nightly/opt: AJ7Cv5vtT0itcmh6M-lpNA
+ balrog-eo-win32-nightly/opt: Gg3aJ5VtSZyQdHeeMh9lDw
+ balrog-eo-win64-nightly/opt: BQzA-kueQ6uxoRSIWMgsSw
+ balrog-es-AR-linux-nightly/opt: DmB0MaynQ2i3PpEnr3ra-g
+ balrog-es-AR-linux64-nightly/opt: XZcsg0wLQnOtH0Ji1ePecQ
+ balrog-es-AR-macosx64-nightly/opt: TAkHOCy6Qayo7dbmts5_8A
+ balrog-es-AR-win32-nightly/opt: MghAacD_RzGU6QhlOEZlkg
+ balrog-es-AR-win64-nightly/opt: HmB-XrGZQm-UzagIwjWKCA
+ balrog-es-CL-linux-nightly/opt: SUnea6TnSH2sPSWuOG9xyA
+ balrog-es-CL-linux64-nightly/opt: WdBM7GOERy2cuCd8mVEYwg
+ balrog-es-CL-macosx64-nightly/opt: QUOwx1kQSNqwaP9MnDXSYw
+ balrog-es-CL-win32-nightly/opt: VFP_l4KBQ1etaRa8jCbRew
+ balrog-es-CL-win64-nightly/opt: Ap7jtdA6ScmzRe7z8yFpQw
+ balrog-es-ES-linux-nightly/opt: PW5Ig7r9ScW9o7NKsRO15A
+ balrog-es-ES-linux64-nightly/opt: GeqeAlM8SvyxkcqVCEBARg
+ balrog-es-ES-macosx64-nightly/opt: Onz1Hs84RMC48pRuYj9u2w
+ balrog-es-ES-win32-nightly/opt: Tiji7cExTz28_xmJseh4zw
+ balrog-es-ES-win64-nightly/opt: B4bXyftST7quXiqBa1h1-Q
+ balrog-es-MX-linux-nightly/opt: UjPDUIrUSxGfYeOxuOZ5cg
+ balrog-es-MX-linux64-nightly/opt: E5wcwfqlQ0GpxW1gzB9r7w
+ balrog-es-MX-macosx64-nightly/opt: bThYGEcnSrCfWOCjXoMCNA
+ balrog-es-MX-win32-nightly/opt: ZD6h9Qf8TtaiQ7ZqgZrd2w
+ balrog-es-MX-win64-nightly/opt: cmsYsgvIRsCzDtgdU4y5Dg
+ balrog-et-linux-nightly/opt: GiBqDlohSnuy6vbY4DwJ5A
+ balrog-et-linux64-nightly/opt: VVNXqBWvRgS8J5NcNfUhrQ
+ balrog-et-macosx64-nightly/opt: Lh-BJgZ0Q5iKOb0t3VtTHA
+ balrog-et-win32-nightly/opt: JDZ1DFwkQzW_Tr9ETbrPUg
+ balrog-et-win64-nightly/opt: cY07Rbh2RIibOrQuKnFwhg
+ balrog-eu-linux-nightly/opt: asIAvkZIRqiXwceEQiTYKg
+ balrog-eu-linux64-nightly/opt: cTJw1iD-SMiSv-dWD3vShQ
+ balrog-eu-macosx64-nightly/opt: BJDdvsUMToKkBpjuzrhBYQ
+ balrog-eu-win32-nightly/opt: aVTtsJwfQLqSz-p9HjMu-g
+ balrog-eu-win64-nightly/opt: NjRzHWQ6SPaABcPV0DXpUg
+ balrog-fa-linux-nightly/opt: RF3DpgiwTiOsA8Rg3OVRUw
+ balrog-fa-linux64-nightly/opt: aWQhSTDzS2OjPb3mMWGTGw
+ balrog-fa-macosx64-nightly/opt: DbDj6S-lTe-xjb8URM6odA
+ balrog-fa-win32-nightly/opt: FqmkVZMYTM2xC162PLx5Qw
+ balrog-fa-win64-nightly/opt: HH1Aki6VQWuOkF6xXgmavQ
+ balrog-ff-linux-nightly/opt: Gjv6dKOXREay6g4LqVTxUw
+ balrog-ff-linux64-nightly/opt: D-DZF90JQti2H-bCq6LNog
+ balrog-ff-macosx64-nightly/opt: ZUMYn_kERtiU4Q7v0ycmOA
+ balrog-ff-win32-nightly/opt: c0qhfQsdR0eroFir2VUdLQ
+ balrog-ff-win64-nightly/opt: JYS-UWkWSeqWps-XvDBK-A
+ balrog-fi-linux-nightly/opt: De4wh-d9ShylGSFDl7jabQ
+ balrog-fi-linux64-nightly/opt: UAxfptrKTRiJSJFKnECUnw
+ balrog-fi-macosx64-nightly/opt: NFQt7gsPTUGHOeFjki6zow
+ balrog-fi-win32-nightly/opt: RBl8SSJUTv-XxVwe_jXOiA
+ balrog-fi-win64-nightly/opt: N7V6EZ34TJeNP7LnO8FthA
+ balrog-fr-linux-nightly/opt: GkqdEEwgRfuxfZsjQOAMxA
+ balrog-fr-linux64-nightly/opt: Rcs4CQ6AQ4qZsElkbugfDg
+ balrog-fr-macosx64-nightly/opt: fPSCu0rmTxm-UyqZBeMelA
+ balrog-fr-win32-nightly/opt: KAkKkgYwTp2x3YlTC-D6nA
+ balrog-fr-win64-nightly/opt: NklDIW2BSnKOhCaMUq86Ww
+ balrog-fy-NL-linux-nightly/opt: CPxDa7ZDShe1_QXFUyy8pw
+ balrog-fy-NL-linux64-nightly/opt: B5ObfqGgQk6FG33KrmW-pA
+ balrog-fy-NL-macosx64-nightly/opt: ISaigasVRZmsfy9T2UOAHw
+ balrog-fy-NL-win32-nightly/opt: UYLXRFg4RgmvgcLLjHUy8w
+ balrog-fy-NL-win64-nightly/opt: frqOilM3SOK5d3JxBvQ2NQ
+ balrog-ga-IE-linux-nightly/opt: QIkcfnFCRCGEyocToe4DxA
+ balrog-ga-IE-linux64-nightly/opt: Ow-J3HdWTBWsJz_HsPi6eQ
+ balrog-ga-IE-macosx64-nightly/opt: IyiOcyUWRgunk0lbRZPuKg
+ balrog-ga-IE-win32-nightly/opt: RwbMzT_nQk26spNhR31ZHQ
+ balrog-ga-IE-win64-nightly/opt: ZzIODxRsS9Otj5_VQHdF4w
+ balrog-gd-linux-nightly/opt: KNge0B5nQeKJKmLDBZiQqg
+ balrog-gd-linux64-nightly/opt: Vk0TF3qwSfm9OcyqKEpMIg
+ balrog-gd-macosx64-nightly/opt: BtBAOrOJT-yx9a7ORzQeXw
+ balrog-gd-win32-nightly/opt: Sv9POXLcSGSmYQrjYLciVw
+ balrog-gd-win64-nightly/opt: c84wOr5fSp6NNZ_kyxnMeg
+ balrog-gl-linux-nightly/opt: b0swLaoBTVabLW5cjt5MzA
+ balrog-gl-linux64-nightly/opt: e0K9tiKERc-6HVF5TjOurg
+ balrog-gl-macosx64-nightly/opt: Az4bqSkCQJWjXk5D_ZBY3g
+ balrog-gl-win32-nightly/opt: U8f-p2jQQdCkvkmd_8XJ0w
+ balrog-gl-win64-nightly/opt: NVKHRVQCQAC3uXWx5KeCaA
+ balrog-gn-linux-nightly/opt: J2BqPR40R2-Re_WZvnEffA
+ balrog-gn-linux64-nightly/opt: ZqdcKPn4QOa6tdr6vbmYPA
+ balrog-gn-macosx64-nightly/opt: RQEoALq7T9OBsBEwuilnXw
+ balrog-gn-win32-nightly/opt: KCXCgOh2Rg23AT1c3rS5oA
+ balrog-gn-win64-nightly/opt: CdayaYyARE2wzSPoUb0FsQ
+ balrog-gu-IN-linux-nightly/opt: BeNmlUPvSRaRNhaK2C3kwQ
+ balrog-gu-IN-linux64-nightly/opt: OIDrOtJlRCe6GiyhVk3-ZQ
+ balrog-gu-IN-macosx64-nightly/opt: DNZuiDw6Stu2XtyIfx5H5A
+ balrog-gu-IN-win32-nightly/opt: Rz7IRp-2RR-jq3LAnJbCIw
+ balrog-gu-IN-win64-nightly/opt: DBzqsYEnTReTInyBlrJi4Q
+ balrog-he-linux-nightly/opt: N1dunI4kRQ-3giVlqNR4nw
+ balrog-he-linux64-nightly/opt: OuT4p4NmSw62FRxk3tsm5g
+ balrog-he-macosx64-nightly/opt: eQupL_WmT6OZcQ1IULqAvg
+ balrog-he-win32-nightly/opt: aJQt5kWdQC6Kc9-giUWpxQ
+ balrog-he-win64-nightly/opt: UFyWo1RITImQ_lLyFg8OMg
+ balrog-hi-IN-linux-nightly/opt: YzVty1J-SK6v0UAD3hH6Cw
+ balrog-hi-IN-linux64-nightly/opt: TT0JMIm9QYeBNWQgHP70xA
+ balrog-hi-IN-macosx64-nightly/opt: Kc8_9xuMQoCEcGVLNGiR4g
+ balrog-hi-IN-win32-nightly/opt: fdtUXfONRnK1xbvEa3aZoQ
+ balrog-hi-IN-win64-nightly/opt: PXgkdoYJQ6KgMTc62BPrZw
+ balrog-hr-linux-nightly/opt: Oq-BK2wOTHq8fJnQIRde_Q
+ balrog-hr-linux64-nightly/opt: NpDY6lIgQqaBBFp9hUosKg
+ balrog-hr-macosx64-nightly/opt: Ubj_rLxOTTuKFkn0tq6RkQ
+ balrog-hr-win32-nightly/opt: TjQpP_ORTI2t1-_CsZHF0Q
+ balrog-hr-win64-nightly/opt: MtGCGicqRcmQRpenIOaUow
+ balrog-hsb-linux-nightly/opt: JBoKxM7qTpmEliqXhjQl_A
+ balrog-hsb-linux64-nightly/opt: YJIi4S1nRcCH2DXdv54vMg
+ balrog-hsb-macosx64-nightly/opt: EXEOULv6RWemVnTOhZBu0w
+ balrog-hsb-win32-nightly/opt: CxNuqN1gT8KGxOIINyQ4RQ
+ balrog-hsb-win64-nightly/opt: BA6EJQnrQfuZOsF4IX_r1g
+ balrog-hu-linux-nightly/opt: GEYFOcFlSiipgLgcI6e_9w
+ balrog-hu-linux64-nightly/opt: X3LSUfqxSBKALAokIPwz_w
+ balrog-hu-macosx64-nightly/opt: QdZ0p1KISNKv_jE-IqEqZg
+ balrog-hu-win32-nightly/opt: WQJhsaZQTU-zI43-kDkinA
+ balrog-hu-win64-nightly/opt: EZIP0vFsTs-YVG2_PIfm7w
+ balrog-hy-AM-linux-nightly/opt: HItXaxfzTyiyr2tfg3uGPQ
+ balrog-hy-AM-linux64-nightly/opt: NkygKTfER8qSPA0nSefknA
+ balrog-hy-AM-macosx64-nightly/opt: c3Qi1PFEQLuyCPtR2UOfdg
+ balrog-hy-AM-win32-nightly/opt: K_jYlugwQ_uC_E09u8YFBQ
+ balrog-hy-AM-win64-nightly/opt: bYtD2x_0TomGvDaKe0Mrmw
+ balrog-ia-linux-nightly/opt: fe_frGwKSrm1Hc8WrMnfUQ
+ balrog-ia-linux64-nightly/opt: eCnoshQdRBSNseG2sGPkCQ
+ balrog-ia-macosx64-nightly/opt: AkGi2sIXR6y0LNkdKszjGw
+ balrog-ia-win32-nightly/opt: a-8FTNniQxCEFToRTDGzcg
+ balrog-ia-win64-nightly/opt: MncyyVJmTtqqLtPSPCablg
+ balrog-id-linux-nightly/opt: Sjr8ZZEATk6UKK9UYH_7ew
+ balrog-id-linux64-nightly/opt: JZ2K9gQ1TMe5jin2zyKr0g
+ balrog-id-macosx64-nightly/opt: X-dCLpigSkCY8S2wtmd7Kg
+ balrog-id-win32-nightly/opt: a6KrTDMJQg2-MntEL_NBFw
+ balrog-id-win64-nightly/opt: VpCJJxaCS3-3mWwSKBFWYw
+ balrog-is-linux-nightly/opt: aaLY4HnwTZaWO_DLwmOXMg
+ balrog-is-linux64-nightly/opt: MMOxvk69RtSlWz4XxvdmTQ
+ balrog-is-macosx64-nightly/opt: RT_gH966TGupSCK_Vv0YsA
+ balrog-is-win32-nightly/opt: XSSN6HHuSsiUxY6lnBellw
+ balrog-is-win64-nightly/opt: DCmPWBkXQriolP6NCUftnQ
+ balrog-it-linux-nightly/opt: O4znVj5xR920jovBZ9wL1A
+ balrog-it-linux64-nightly/opt: eUkNd9i4Ql2gQgM2U1nV3A
+ balrog-it-macosx64-nightly/opt: AhlO8ePHRkC50Rs4k9Fj7A
+ balrog-it-win32-nightly/opt: XGRfcDyITkGpO7mF3ewvKA
+ balrog-it-win64-nightly/opt: deerkNVjQp2tnmM9N25Ghg
+ balrog-ja-JP-mac-macosx64-nightly/opt: dWB6HzFfRs6cMempzZX9AQ
+ balrog-ja-linux-nightly/opt: XEbsI4QKQ_GhjP5_Xkx5ew
+ balrog-ja-linux64-nightly/opt: UvaLW53jS2OCpWnE2zfcqQ
+ balrog-ja-win32-nightly/opt: VIJJXTayQty8ZEna8ovBNw
+ balrog-ja-win64-nightly/opt: Kg50j4_PRzqk3P-nSdW59g
+ balrog-ka-linux-nightly/opt: ZcCN01QaR0muKW54W9izTw
+ balrog-ka-linux64-nightly/opt: TMUUZ_MASB6VSjPME6O1rA
+ balrog-ka-macosx64-nightly/opt: Ck2BGdtaRRuzGBh-cmcnqg
+ balrog-ka-win32-nightly/opt: GNZb24KDR_m4xMae0Bip7w
+ balrog-ka-win64-nightly/opt: DuDYSn2vQ0eJVcB7Bsfhhg
+ balrog-kab-linux-nightly/opt: CFSR5aiaTbqFCG5Yo2-waA
+ balrog-kab-linux64-nightly/opt: FehZS7G2Qjm5QyUZE1UPxQ
+ balrog-kab-macosx64-nightly/opt: fXXJGoVVSFWpwoEJHzAG3A
+ balrog-kab-win32-nightly/opt: ADIAa2bOQ-qJl1NH1m408g
+ balrog-kab-win64-nightly/opt: cKGLyEwCQiqOmnmLyunJDw
+ balrog-kk-linux-nightly/opt: Yb85sYu4SwGoJ4KUd6YwbQ
+ balrog-kk-linux64-nightly/opt: EU9V0GRYQwS4SLxg7mewNg
+ balrog-kk-macosx64-nightly/opt: NXF_GaIbQ3qDVm87vLGOZQ
+ balrog-kk-win32-nightly/opt: b9JwmBEBSruDv6PC2bitfQ
+ balrog-kk-win64-nightly/opt: aGPZndJ5QlisO2kVEPpAnw
+ balrog-km-linux-nightly/opt: cBW_p5DrSUGTbPv0lQ0JvQ
+ balrog-km-linux64-nightly/opt: EkElRlnkQj2LZXwxi8oGvQ
+ balrog-km-macosx64-nightly/opt: B_qE5wKjSpW5oEywKmrn2A
+ balrog-km-win32-nightly/opt: TRuqUDeJQS2-kL0cXvNu2A
+ balrog-km-win64-nightly/opt: F7hyOErTR42Js9uMF1vYwA
+ balrog-kn-linux-nightly/opt: UlVAm9s5R7uqbzuQHYaxSw
+ balrog-kn-linux64-nightly/opt: cDcO-DovST22BmCFd8LUTw
+ balrog-kn-macosx64-nightly/opt: DKe7AR13R6C2Q54m_G7-hg
+ balrog-kn-win32-nightly/opt: G0s1XzBZRmeVd4KEN9lYFg
+ balrog-kn-win64-nightly/opt: RSnbnXhqQMisHbsLtSFdHA
+ balrog-ko-linux-nightly/opt: LAPKLGDxTG62gLRsP3iUSg
+ balrog-ko-linux64-nightly/opt: W1PpJkNdT-e5O2rw_SU1eA
+ balrog-ko-macosx64-nightly/opt: DRwmnyjdT4qHPZUdKsfquA
+ balrog-ko-win32-nightly/opt: OOl9RHViQP2QtceyDP_P8w
+ balrog-ko-win64-nightly/opt: Mk1n6ck2RSCeTY4el5a9FA
+ balrog-lij-linux-nightly/opt: MdE9C56aQqaSmQ37AKeIow
+ balrog-lij-linux64-nightly/opt: Bii84tpVSdG_8u5nQr5MSQ
+ balrog-lij-macosx64-nightly/opt: BWsAOK6dT22n6reG0QVmqw
+ balrog-lij-win32-nightly/opt: dJwWH8bXSxWCNEHdItPlJQ
+ balrog-lij-win64-nightly/opt: MHvj25UaSvmI8AVYkd9Isg
+ balrog-linux-nightly/opt: ekJMhrTOSFmX6YN6Mn2QvA
+ balrog-linux64-nightly/opt: CMZ7-v5IRNmr5LaemE0pEg
+ balrog-lt-linux-nightly/opt: DXMiFxCuSHawkAOq9RFH5w
+ balrog-lt-linux64-nightly/opt: efHE3thYR4unpV5-eP4Ytg
+ balrog-lt-macosx64-nightly/opt: PTfSgjsxRDWDjjYy_ur7gg
+ balrog-lt-win32-nightly/opt: G50N-KBRRH-N2Hp9VQU3nQ
+ balrog-lt-win64-nightly/opt: UGPJO2cdRVCkQUPBPZN8aw
+ balrog-lv-linux-nightly/opt: UVSiri0LRgyO0FQyZwLtng
+ balrog-lv-linux64-nightly/opt: c-cMqOAYRySx4i3c6iEhbg
+ balrog-lv-macosx64-nightly/opt: X9MQa3wiQ-G-bt6YRafkHg
+ balrog-lv-win32-nightly/opt: bGpJWUzsSny9gw4B6UNm7Q
+ balrog-lv-win64-nightly/opt: QcHSzAguSzunClTujUTJAg
+ balrog-macosx64-nightly/opt: KlkVOKDRRmyWotmvlxZdDA
+ balrog-mai-linux-nightly/opt: bLHhHvFESe2akVZEqApiHw
+ balrog-mai-linux64-nightly/opt: GZxuK9pbRxucfZLvq4lHMQ
+ balrog-mai-macosx64-nightly/opt: d3cN9eojT0Kt9DXRHeZYOg
+ balrog-mai-win32-nightly/opt: dCs26597RpiwLvASHzdDBw
+ balrog-mai-win64-nightly/opt: b5c4BZ8FSB6ebJ_DzOZBzA
+ balrog-mk-linux-nightly/opt: Ok_6_DqeRhSd7dJkhx3CIg
+ balrog-mk-linux64-nightly/opt: NoqSdqQ8RfS2QdBMnFAJrw
+ balrog-mk-macosx64-nightly/opt: X2th-6daR0u7lhKOrwJLLg
+ balrog-mk-win32-nightly/opt: Or1wDZbATY2jV1ta1GiAaQ
+ balrog-mk-win64-nightly/opt: SNX98XyfRO6bKfeIbGfAYg
+ balrog-ml-linux-nightly/opt: Zg2yy09NQf-SgWXwwBbBhQ
+ balrog-ml-linux64-nightly/opt: NtIjWgU4RyyuEnLUW6gccw
+ balrog-ml-macosx64-nightly/opt: AlkeoLiuQBKnchgZQeHnpw
+ balrog-ml-win32-nightly/opt: HdDWaHXeR7Slu9eiBWJepw
+ balrog-ml-win64-nightly/opt: NAf9qvylR4ahRLsFTF_8Fg
+ balrog-mr-linux-nightly/opt: WqNbg4SPRzOLt_-IoGDYrA
+ balrog-mr-linux64-nightly/opt: aeCfu6CMT9O6JBrJwY7_FA
+ balrog-mr-macosx64-nightly/opt: J7W_f1cvQDyWS97PbzKkCw
+ balrog-mr-win32-nightly/opt: U6wsLveESKGOOQOB9VdthA
+ balrog-mr-win64-nightly/opt: awF2b-b9TxekOPsrfaIZpQ
+ balrog-ms-linux-nightly/opt: PYXICZ7UTGWVzYmfk67r_w
+ balrog-ms-linux64-nightly/opt: CDuq21JARd2a0xEoxvznog
+ balrog-ms-macosx64-nightly/opt: WPXzWN8kRx6STb49ksnJqQ
+ balrog-ms-win32-nightly/opt: XxotqxMkTwq4PQXsQz-3NQ
+ balrog-ms-win64-nightly/opt: U8F1h9NQSuiN8uPnFqkBYg
+ balrog-my-linux-nightly/opt: H6saTKAgTLyQztqxJOUb3Q
+ balrog-my-linux64-nightly/opt: Tp4aFWdnRsu9b1ZSYggt1g
+ balrog-my-macosx64-nightly/opt: BFE6X54tRkuARy3GHyvw2A
+ balrog-my-win32-nightly/opt: KYXQB8VWSwWr9ia939m8kw
+ balrog-my-win64-nightly/opt: GGflOQw6S9SYtk7k8LB9iA
+ balrog-nb-NO-linux-nightly/opt: YxCzeXZLSWSCj6pOT1IqHw
+ balrog-nb-NO-linux64-nightly/opt: Nw9zHzikScO0ypkdfdCCoQ
+ balrog-nb-NO-macosx64-nightly/opt: WYAdKM0ST7y5wYf71acd1g
+ balrog-nb-NO-win32-nightly/opt: f10oG1qIRpGLm5uuCHsMMg
+ balrog-nb-NO-win64-nightly/opt: bWJmXZEbRlun5yWwOPoXig
+ balrog-ne-NP-linux-nightly/opt: P_Vb58pJRWKL3vjG0lrQdQ
+ balrog-ne-NP-linux64-nightly/opt: F_cFXNvQQXiMRKXOiFSKgQ
+ balrog-ne-NP-macosx64-nightly/opt: RPhoUjfRRxCG4FtJ7of3Ng
+ balrog-ne-NP-win32-nightly/opt: InSCvI2hTWuCPL0Ok76vKg
+ balrog-ne-NP-win64-nightly/opt: JLTndBMdSOyQb3jVa07zSg
+ balrog-nl-linux-nightly/opt: ACVJZ8hxSE6QBZLqhlxHnQ
+ balrog-nl-linux64-nightly/opt: eIzexzIlQumJBaPOaIgkZg
+ balrog-nl-macosx64-nightly/opt: Ccp-kyKFQzasGtChnv5sgA
+ balrog-nl-win32-nightly/opt: Jv6GNwlpQwyFZTFulfyNEQ
+ balrog-nl-win64-nightly/opt: Mq_ElD-lSwSCo1QvpKnhSQ
+ balrog-nn-NO-linux-nightly/opt: DKvg91LCTL2yLUzRXtR5mg
+ balrog-nn-NO-linux64-nightly/opt: CVUYiU3gSpuDlhgS384Ahw
+ balrog-nn-NO-macosx64-nightly/opt: NWFLTukcTSmpopm7SCGv4g
+ balrog-nn-NO-win32-nightly/opt: D-Cnozf6Q7ugdITQhDKrcA
+ balrog-nn-NO-win64-nightly/opt: LrRTNf4oS16r0ZEP_z97IQ
+ balrog-oc-linux-nightly/opt: KJ-Nur8JRyOO7OzOqHM3Qw
+ balrog-oc-linux64-nightly/opt: Pguw6navS3SCoUQJsZnQ7w
+ balrog-oc-macosx64-nightly/opt: MBZJRarrSwmyHxheywr5rg
+ balrog-oc-win32-nightly/opt: W5eLcQ7YQJG1e-PViQ2nOg
+ balrog-oc-win64-nightly/opt: BWj7X42SQaafAzmMd4W3Kg
+ balrog-or-linux-nightly/opt: WJYiK8muQFS0Nye767bQbg
+ balrog-or-linux64-nightly/opt: E90kkjMsRwK75_87LHlRFg
+ balrog-or-macosx64-nightly/opt: WDwOpQgHTdylL1Hknz3_WA
+ balrog-or-win32-nightly/opt: Kf6QNA5aTq-2ZDn56XWXMw
+ balrog-or-win64-nightly/opt: YgVQwvbJS8a0QXCHBsTmlw
+ balrog-pa-IN-linux-nightly/opt: CHg-cEZVTYqe6S9cu3X8eA
+ balrog-pa-IN-linux64-nightly/opt: MuEcWiN3SyypQWeRPteKUg
+ balrog-pa-IN-macosx64-nightly/opt: OoNdw9ikQiWBSeXf6YUkfg
+ balrog-pa-IN-win32-nightly/opt: F2H_siTdT6mddR8Lh2dEOw
+ balrog-pa-IN-win64-nightly/opt: do2_GMiaRC26EXyysNRCUw
+ balrog-pl-linux-nightly/opt: e4gszrZSROuS4F98EhoswA
+ balrog-pl-linux64-nightly/opt: A8dwNOqAQwmkuxsJn1qYdA
+ balrog-pl-macosx64-nightly/opt: MIM481ukQlq4r2fTfIy4Fg
+ balrog-pl-win32-nightly/opt: KgFtivHCQ_WIvna7CTdGdg
+ balrog-pl-win64-nightly/opt: R3p5M73FSdC7BlxYrCJvnw
+ balrog-pt-BR-linux-nightly/opt: OEAyq4tQSFKNKn-GYaH4GQ
+ balrog-pt-BR-linux64-nightly/opt: JTuOo598Rt2ViGlKO33fOQ
+ balrog-pt-BR-macosx64-nightly/opt: BXiTQOYHR7yliUCB3B_rwg
+ balrog-pt-BR-win32-nightly/opt: dVAAOKEQT1WeaItVAHJhbA
+ balrog-pt-BR-win64-nightly/opt: VYsr8HYNQueTAuzhFYPqdw
+ balrog-pt-PT-linux-nightly/opt: e9rATKmXRIyGNEB1eFn0gg
+ balrog-pt-PT-linux64-nightly/opt: AHIkHgmhQy2W4P5Fp_ifKQ
+ balrog-pt-PT-macosx64-nightly/opt: ImZeQ-QaQziQN-WNFY1KiA
+ balrog-pt-PT-win32-nightly/opt: F_GswQh9QxOMZCruIsTXOg
+ balrog-pt-PT-win64-nightly/opt: LCuDACU_RPe-99MTATT4Ew
+ balrog-rm-linux-nightly/opt: VU9c3QhsQWyNvuhtFT2NGg
+ balrog-rm-linux64-nightly/opt: Nwq0bb_hS1WBQqstzXIHwg
+ balrog-rm-macosx64-nightly/opt: TA8lYeGySBCFRsQ3XF8I5Q
+ balrog-rm-win32-nightly/opt: QK3o93rMTkaFTIIoxaHKqA
+ balrog-rm-win64-nightly/opt: AnsIfJWZSryW3cQt1sjE8Q
+ balrog-ro-linux-nightly/opt: TJARjkz9TR-CvkhRvFDUQA
+ balrog-ro-linux64-nightly/opt: DpKjAmBNQ7uwAUsBmGHiAA
+ balrog-ro-macosx64-nightly/opt: F-GoOgIgQBmtTiSANF9MbQ
+ balrog-ro-win32-nightly/opt: H3U18uOVQaGRz7DbnN8JnQ
+ balrog-ro-win64-nightly/opt: HJNhsJkxRNOJhvtm_KXUDg
+ balrog-ru-linux-nightly/opt: aC-pm8lGQdODftkNeY-QNQ
+ balrog-ru-linux64-nightly/opt: ct8Rip9EQoiyhGDFJ_4z1g
+ balrog-ru-macosx64-nightly/opt: DaMom17iT9-oBTKaMsE5Zw
+ balrog-ru-win32-nightly/opt: U8-kh1cQSfqBUqUo8thaFQ
+ balrog-ru-win64-nightly/opt: DdPGAC7qRLSGGE6njzissg
+ balrog-si-linux-nightly/opt: anexiubEQk-ODvWf39L-zw
+ balrog-si-linux64-nightly/opt: WeRZXk4BSXiypE_yjfSogQ
+ balrog-si-macosx64-nightly/opt: O_orFFu7T9erZjjjKMTsDQ
+ balrog-si-win32-nightly/opt: QsRbwTurToS3fXaEWfAhOw
+ balrog-si-win64-nightly/opt: YZR4qyjUTXyhSmWKBdpaZQ
+ balrog-sk-linux-nightly/opt: OFzREkPFT6qwXGam8ZigTQ
+ balrog-sk-linux64-nightly/opt: PE60PAv3TeyhZaLAr3D4OA
+ balrog-sk-macosx64-nightly/opt: UT7WU0v0S_CDqCaLALj8GQ
+ balrog-sk-win32-nightly/opt: HTD-6kxNQX-YN_KcaYfdLQ
+ balrog-sk-win64-nightly/opt: WEoV-Sa0QPWUmiWqTtc7Kw
+ balrog-sl-linux-nightly/opt: CbFzDyuVRre0ZrXouip9UA
+ balrog-sl-linux64-nightly/opt: exCUCPAjTzyBjO2O0_0pzA
+ balrog-sl-macosx64-nightly/opt: YI8FFWlzRxOdJR_-FO4eAg
+ balrog-sl-win32-nightly/opt: GiqhTaLXQh2Bpzd271qCjw
+ balrog-sl-win64-nightly/opt: A5GTLUiGT42cOdyivUtDuw
+ balrog-son-linux-nightly/opt: NhvIhV1t_SeTVpzgtEyA
+ balrog-son-linux64-nightly/opt: bduSzICCQLu6WvHiMaxdzg
+ balrog-son-macosx64-nightly/opt: EJJHjzkDThiwDuAeAh5VNg
+ balrog-son-win32-nightly/opt: ZNbK3a5sTSSbiOECgLNsag
+ balrog-son-win64-nightly/opt: T0oiVwdCTlefGOZVihuwrA
+ balrog-sq-linux-nightly/opt: DoYxWv6QQiGNaCHDNXAthg
+ balrog-sq-linux64-nightly/opt: P0YdE6xwTRiz0UR4uvlW5w
+ balrog-sq-macosx64-nightly/opt: Pkw1ppUyQ-yz5_jTsCenpA
+ balrog-sq-win32-nightly/opt: VBheud2aSnmNL63IUMRCoA
+ balrog-sq-win64-nightly/opt: O2cbWiNuT2SquJ78LQGyCA
+ balrog-sr-linux-nightly/opt: LTKkqyy2RYikeBLCLO5CCQ
+ balrog-sr-linux64-nightly/opt: GZOmoFaeRcKHA254J0zteQ
+ balrog-sr-macosx64-nightly/opt: IXfrYq81Q-OlksTHB-ezew
+ balrog-sr-win32-nightly/opt: Dm5ymAflQPmek-2h3wiijQ
+ balrog-sr-win64-nightly/opt: WxXrmEfMR-qigrDsT7wY9A
+ balrog-sv-SE-linux-nightly/opt: GtXUw4T4TxSD25JOud3DkQ
+ balrog-sv-SE-linux64-nightly/opt: WZG8gd56Q4KM2JudfaUfpQ
+ balrog-sv-SE-macosx64-nightly/opt: XQInyRcFR8y1q37EMxldhw
+ balrog-sv-SE-win32-nightly/opt: X4Uk9hxdQ9GAu0v-lV2R8g
+ balrog-sv-SE-win64-nightly/opt: TkIcSo7-SX2uuNNoathAdg
+ balrog-ta-linux-nightly/opt: FAjXOxsZQXmQ93dLXXjOXA
+ balrog-ta-linux64-nightly/opt: J0__eZNMRC-PH0NM59lyFQ
+ balrog-ta-macosx64-nightly/opt: IHJ451xSQmSZKa_GXDATOQ
+ balrog-ta-win32-nightly/opt: GX4f1vlFRaOz_cvFJWywMw
+ balrog-ta-win64-nightly/opt: GZw1C4GzQh2Y1kNzWkJF-w
+ balrog-te-linux-nightly/opt: JyWAxz81T1aVuTCTPraTTQ
+ balrog-te-linux64-nightly/opt: Aqnb5gDPSuKCBnLs9GmsAA
+ balrog-te-macosx64-nightly/opt: eSQHKhqYSj2JZWUB5UlYiA
+ balrog-te-win32-nightly/opt: GCEyKTkATlKzMJFMUsTtsg
+ balrog-te-win64-nightly/opt: VUnJzuysTlmBghOUoBfdDg
+ balrog-th-linux-nightly/opt: LNCaGGgcR62D27NUFhpBaA
+ balrog-th-linux64-nightly/opt: W1463aBOS_WTNnQB4jghww
+ balrog-th-macosx64-nightly/opt: HY-y8hBzSYGuC2ItQf4eSg
+ balrog-th-win32-nightly/opt: IG_H5nl1Sf64KmhYSu8C8g
+ balrog-th-win64-nightly/opt: YiaKcNTITg2sGu5t4l7-mw
+ balrog-tr-linux-nightly/opt: Z-8L5ROiSJieeQE5G-C7Kw
+ balrog-tr-linux64-nightly/opt: KqmVNY16RLCnPKH1SmCeyQ
+ balrog-tr-macosx64-nightly/opt: GJtwPGGvS1qW60rk_GjCSA
+ balrog-tr-win32-nightly/opt: GFH1dz1xThy5eIVXDM_KZw
+ balrog-tr-win64-nightly/opt: NsRoFsdHSkWt6J_Jx_Co9w
+ balrog-uk-linux-nightly/opt: PVyiC-LLRCOXAaPNaGn5SQ
+ balrog-uk-linux64-nightly/opt: WH8KxoR_TmGjymDYTrX3eg
+ balrog-uk-macosx64-nightly/opt: E-hccrgUQHKEuh1TKVSB3g
+ balrog-uk-win32-nightly/opt: MkKd5DJrRdyiHgBcXb-9kw
+ balrog-uk-win64-nightly/opt: RMRXqKHCSvyk1RHgqaBRkg
+ balrog-ur-linux-nightly/opt: bw7BR_2NQUC3nlqVGXKpYA
+ balrog-ur-linux64-nightly/opt: GeSV-OR6QR6lGarVoxLFqQ
+ balrog-ur-macosx64-nightly/opt: TTXju9kVQvmuDTuiek9gCA
+ balrog-ur-win32-nightly/opt: AAg7nufwTSWtfgw7YQFE3g
+ balrog-ur-win64-nightly/opt: Fnmf4iRzTUu4J7USj_Y5TA
+ balrog-uz-linux-nightly/opt: NBp0rjZMS0CSQJVVJzV8VA
+ balrog-uz-linux64-nightly/opt: Q4lhcQn2T_-qs_ywhmuh-w
+ balrog-uz-macosx64-nightly/opt: N1Pqi9TGQU6PsQtQzof2FA
+ balrog-uz-win32-nightly/opt: JweAJDkeRg6wZm5IRVTN6w
+ balrog-uz-win64-nightly/opt: X9iG8SpxThutsg2EeffXAA
+ balrog-vi-linux-nightly/opt: D8g_QbiWTxy5xtiSL5d-Ow
+ balrog-vi-linux64-nightly/opt: XVmMaUfMQOq-OmgXzVPj3w
+ balrog-vi-macosx64-nightly/opt: b8aKXuFOSP2NDCLn3v_woQ
+ balrog-vi-win32-nightly/opt: PEO78e-ZQmGc2bAyvK1uxA
+ balrog-vi-win64-nightly/opt: ZinD5shzQKetCc0YaZexrQ
+ balrog-win32-nightly/opt: QfNtoSw9Q3CdhbLg4q2-rA
+ balrog-win64-nightly/opt: Mn220ZDRTvWqh866Y9KUoA
+ balrog-xh-linux-nightly/opt: HHOKDOlZS0u9fAcyHF3skA
+ balrog-xh-linux64-nightly/opt: O8eFrG61TQS5JPolPW1Jeg
+ balrog-xh-macosx64-nightly/opt: AfCJ7rbbT9eQS195BdLEfw
+ balrog-xh-win32-nightly/opt: RY6gI8H3R7iRhZTvhB_mMw
+ balrog-xh-win64-nightly/opt: enayoJcnRmqCzPZi325Vew
+ balrog-zh-CN-linux-nightly/opt: fDKXIeHhTP-DRXkrXn2fxQ
+ balrog-zh-CN-linux64-nightly/opt: HFxVAcyISeCGv0bBGpCDxg
+ balrog-zh-CN-macosx64-nightly/opt: PVkmmfRnSaSs9dW36DpKBw
+ balrog-zh-CN-win32-nightly/opt: RE6erpBkRyuVu-1HcymHfQ
+ balrog-zh-CN-win64-nightly/opt: If36cKEUQTSixHdvbW1mHw
+ balrog-zh-TW-linux-nightly/opt: C_U96UTuS1GJZPJs-375Lg
+ balrog-zh-TW-linux64-nightly/opt: Zz78FXZCS8KL6I1fV6qsBw
+ balrog-zh-TW-macosx64-nightly/opt: KkrfoCfpRkm9TxY6swSUgA
+ balrog-zh-TW-win32-nightly/opt: Qu7-dbj-Sey4GagGqYPDiQ
+ balrog-zh-TW-win64-nightly/opt: bb-JQkJtSFOnSKd8rSGavA
+ beetmover-checksums-ach-linux-nightly/opt: Nm77rmLDRtKdJ1DK7nUViw
+ beetmover-checksums-ach-linux64-nightly/opt: Ewvg93KWTde_mINvQYEVxg
+ beetmover-checksums-ach-macosx64-nightly/opt: BrASrufAQoCGrVceWOp2ww
+ beetmover-checksums-ach-win32-nightly/opt: VFIbxagjQ8-fxIiG6gk7SA
+ beetmover-checksums-ach-win64-nightly/opt: Hqa0AToLTbqsoPCwjnB8Gg
+ beetmover-checksums-af-linux-nightly/opt: dBQKDFOURk-zkLUGzv1fzw
+ beetmover-checksums-af-linux64-nightly/opt: EM557doETCGVO5SI19q5xQ
+ beetmover-checksums-af-macosx64-nightly/opt: dCoFnXreSSGnR7C-R6EeVQ
+ beetmover-checksums-af-win32-nightly/opt: FOkd8j87Sa6LpIwLpw6-aw
+ beetmover-checksums-af-win64-nightly/opt: UWdNdNIlQ9emKSiXYnNW7A
+ beetmover-checksums-an-linux-nightly/opt: dMbVvcIAROuIFabxkQw87A
+ beetmover-checksums-an-linux64-nightly/opt: Mn2wYcr2QZyap4FIpkxQ3A
+ beetmover-checksums-an-macosx64-nightly/opt: bubZe4CRSHSlT7CCiE3EIg
+ beetmover-checksums-an-win32-nightly/opt: eJpnZMHdTyeSHAFUCfryJw
+ beetmover-checksums-an-win64-nightly/opt: WxnW8WnGSaal_ClOcRsb7A
+ beetmover-checksums-ar-linux-nightly/opt: M_hdbIIUQUO1pD5ThpNJYA
+ beetmover-checksums-ar-linux64-nightly/opt: S2kNm9viS8Gk0cJ__0NVYQ
+ beetmover-checksums-ar-macosx64-nightly/opt: X72-BB9mQr2bfT89SKBV-w
+ beetmover-checksums-ar-win32-nightly/opt: DoJyePIQTci03-uA2lnR5w
+ beetmover-checksums-ar-win64-nightly/opt: UjYvy2c8TPayNO8KUzwd7Q
+ beetmover-checksums-as-linux-nightly/opt: FUlJZHbCRGOd0hJiVdf79w
+ beetmover-checksums-as-linux64-nightly/opt: QPQ9PAcFRiSFlkJdq8CHwA
+ beetmover-checksums-as-macosx64-nightly/opt: NZck94GQQAG-tJ_T70PO4g
+ beetmover-checksums-as-win32-nightly/opt: e9zDJV97Rcyai-c7h8OqnA
+ beetmover-checksums-as-win64-nightly/opt: azTM5UFQQH2ZagUvGmMT_Q
+ beetmover-checksums-ast-linux-nightly/opt: Qv5nrScaRpSpEe-StlmreQ
+ beetmover-checksums-ast-linux64-nightly/opt: SC-TRDRYRki8tgoVK5IBgg
+ beetmover-checksums-ast-macosx64-nightly/opt: Ysby0MfuTEqcribSYUdJqA
+ beetmover-checksums-ast-win32-nightly/opt: fHYSestFTHiaoVvh9Txw0Q
+ beetmover-checksums-ast-win64-nightly/opt: VhvIBnu0R1W84EpD88n5-w
+ beetmover-checksums-az-linux-nightly/opt: Piw8kRTUQQ-BGPWUNClj7Q
+ beetmover-checksums-az-linux64-nightly/opt: NIG3NecCQVem_N_zNKobLQ
+ beetmover-checksums-az-macosx64-nightly/opt: K5jy73BqTW2MqpNeuIb9EA
+ beetmover-checksums-az-win32-nightly/opt: cqQtCEMQTjGB81T0Yj3yFQ
+ beetmover-checksums-az-win64-nightly/opt: eb_iWnJ7ReKDSKtlv0PdrQ
+ beetmover-checksums-be-linux-nightly/opt: KfV89hg8RHOzZFieuD1CMA
+ beetmover-checksums-be-linux64-nightly/opt: adNuYfN9SyeWy130IVa7ag
+ beetmover-checksums-be-macosx64-nightly/opt: IdjkMmtyTE2BN6YCW3tqDg
+ beetmover-checksums-be-win32-nightly/opt: ZQrM5f1HQWa8u1JRr8v_Cw
+ beetmover-checksums-be-win64-nightly/opt: CAAP0uGgSQCtcUi_K2nhQA
+ beetmover-checksums-bg-linux-nightly/opt: V6Vprr22Rga-y7JbwGfYyw
+ beetmover-checksums-bg-linux64-nightly/opt: eLr9jTfXQlOJwwwzMCW0-w
+ beetmover-checksums-bg-macosx64-nightly/opt: cJpzfQeYSJ6KNx6M8LkJVg
+ beetmover-checksums-bg-win32-nightly/opt: HhFhVmscRISeG5uEz5MsbA
+ beetmover-checksums-bg-win64-nightly/opt: CB8WHIb8QqOncRc7Sk7C3g
+ beetmover-checksums-bn-BD-linux-nightly/opt: RVSDsC5oQU-LNl9puGt9PA
+ beetmover-checksums-bn-BD-linux64-nightly/opt: TF5xEcncQQ6CprQ8DimG7g
+ beetmover-checksums-bn-BD-macosx64-nightly/opt: MV0bw7APSAKMWQuBPPtsVg
+ beetmover-checksums-bn-BD-win32-nightly/opt: eGhCubkWT62hRMH9Z_5W8g
+ beetmover-checksums-bn-BD-win64-nightly/opt: HIcP8OHdQgOVu3e85j8lMg
+ beetmover-checksums-bn-IN-linux-nightly/opt: Pclq36-MS5qxtGAbx9DsaQ
+ beetmover-checksums-bn-IN-linux64-nightly/opt: BeC2_UQyQGqYsn8brBTiig
+ beetmover-checksums-bn-IN-macosx64-nightly/opt: dTSirGwDQxG-nvQIS0s0ZQ
+ beetmover-checksums-bn-IN-win32-nightly/opt: bBV65gB9QEaQrh_woxSFmg
+ beetmover-checksums-bn-IN-win64-nightly/opt: cmFqMMwLTsKG4QdP_VH4qA
+ beetmover-checksums-br-linux-nightly/opt: FUufxAT_T6Cy9iPdNOlb7Q
+ beetmover-checksums-br-linux64-nightly/opt: EcuiwfP6Te2qSoTdK4pGVA
+ beetmover-checksums-br-macosx64-nightly/opt: aomoy8wFSUqDBuBPpTjmdQ
+ beetmover-checksums-br-win32-nightly/opt: FDKQgMO1RnCsrEczXc10EQ
+ beetmover-checksums-br-win64-nightly/opt: caZ8J9FNQ5qz8d0RKf0gxA
+ beetmover-checksums-bs-linux-nightly/opt: axgAa6R_SiSJ0bN71F26Qg
+ beetmover-checksums-bs-linux64-nightly/opt: Z6dozKJLTV6BeQK9DRNVlw
+ beetmover-checksums-bs-macosx64-nightly/opt: egafsI2XQUKqQtMQxGEpVg
+ beetmover-checksums-bs-win32-nightly/opt: ZQMoSL4-T7Wk0y9cZaaHAQ
+ beetmover-checksums-bs-win64-nightly/opt: JVEcuwhMTpicCVp-yy4Mcw
+ beetmover-checksums-ca-linux-nightly/opt: GGuCB7CGT0OyuSGBVYB7Pg
+ beetmover-checksums-ca-linux64-nightly/opt: b7mTJV4FSAyRsyRqaf-xhg
+ beetmover-checksums-ca-macosx64-nightly/opt: czVRc1t2QEG_aJPrjsmicw
+ beetmover-checksums-ca-win32-nightly/opt: d0DtFAVCRqe24Nc7fT5Wfw
+ beetmover-checksums-ca-win64-nightly/opt: ebWkzgYZTB2F473XTVrm-A
+ beetmover-checksums-cak-linux-nightly/opt: UtdW8lTHRAi3qDM7QABriA
+ beetmover-checksums-cak-linux64-nightly/opt: TcyTYs72TjuXWTomFhuwAA
+ beetmover-checksums-cak-macosx64-nightly/opt: dKoeHGwFSUWepI1_KIA9Ow
+ beetmover-checksums-cak-win32-nightly/opt: BtUiXrQuQo6Qpj92h8rXhA
+ beetmover-checksums-cak-win64-nightly/opt: Ahj6tcIRReSgCgUs4UBE8A
+ beetmover-checksums-cs-linux-nightly/opt: KMgZiSI4S_-JjmRiLLoXQA
+ beetmover-checksums-cs-linux64-nightly/opt: DnMF7gDLT0GKPoMpxYMT4g
+ beetmover-checksums-cs-macosx64-nightly/opt: MSuc0dbtR4u7rcHgv5AFCg
+ beetmover-checksums-cs-win32-nightly/opt: Sqx5cpbzRe68prg3cWiUnw
+ beetmover-checksums-cs-win64-nightly/opt: BXfraByPSZG_Wu2-YN6LvA
+ beetmover-checksums-cy-linux-nightly/opt: dGXDKQJcRlegjfwU80X2nw
+ beetmover-checksums-cy-linux64-nightly/opt: ZFe9EnZOQhyFnwrbHCP_fw
+ beetmover-checksums-cy-macosx64-nightly/opt: IN_KS6b3QY-lIOwjjoHWgg
+ beetmover-checksums-cy-win32-nightly/opt: WLA3m7LFSH-keWUFGnFdcA
+ beetmover-checksums-cy-win64-nightly/opt: Czu9cYg_T7-i4k6iqNCpRQ
+ beetmover-checksums-da-linux-nightly/opt: SOnlCCQ2Qd-mhH48tpHHxQ
+ beetmover-checksums-da-linux64-nightly/opt: S14qPsReSHaoZlTriz8xOw
+ beetmover-checksums-da-macosx64-nightly/opt: UkAG7VzdRUOywv5lzPhq-g
+ beetmover-checksums-da-win32-nightly/opt: M8r-01E5RSaYUrPx9mq_Bw
+ beetmover-checksums-da-win64-nightly/opt: Ad4tLGFoRLiuk-ljvxXngw
+ beetmover-checksums-de-linux-nightly/opt: TyLF1xfYRIy1viFXUyLMYg
+ beetmover-checksums-de-linux64-nightly/opt: LabrhGhsRzOF7zk_Zbg4DA
+ beetmover-checksums-de-macosx64-nightly/opt: TrGHw3mRSfO3ERL5p20_Pg
+ beetmover-checksums-de-win32-nightly/opt: anCv6HObS6iopiMPAT1ffg
+ beetmover-checksums-de-win64-nightly/opt: GS0-Xue5T6SibQfgVVZeuw
+ beetmover-checksums-dsb-linux-nightly/opt: IxAlW_OFSuOjvmftjcJoEg
+ beetmover-checksums-dsb-linux64-nightly/opt: aIz3KOIpRbuoTfUGSoUBwQ
+ beetmover-checksums-dsb-macosx64-nightly/opt: To8aqz9aSYus1z5veSKozA
+ beetmover-checksums-dsb-win32-nightly/opt: A482lLazQk698rF3CNIcLw
+ beetmover-checksums-dsb-win64-nightly/opt: HPC7_pxJTre73mZj1ePRwQ
+ beetmover-checksums-el-linux-nightly/opt: Xctf0DGJQJakgCSgxIOd7g
+ beetmover-checksums-el-linux64-nightly/opt: KD9WI3MZReWseDE9goxzVg
+ beetmover-checksums-el-macosx64-nightly/opt: GnMMcu_8SR2FyKUpkuCW7g
+ beetmover-checksums-el-win32-nightly/opt: e2WQfzHmSdicHmnMjsAang
+ beetmover-checksums-el-win64-nightly/opt: GAnsNPTwQ3WnYGVbB9bMlA
+ beetmover-checksums-en-CA-linux-nightly/opt: O0_V5kW2S765-gJPE4gtXw
+ beetmover-checksums-en-CA-linux64-nightly/opt: XphQJtyMTYmlzdtuHru04Q
+ beetmover-checksums-en-CA-macosx64-nightly/opt: FGfCetXRRbO-I1Uqh2THtQ
+ beetmover-checksums-en-CA-win32-nightly/opt: YO7ehwrNSmCEf_FJYjMXeg
+ beetmover-checksums-en-CA-win64-nightly/opt: HTSb1GJLROCRTVZY1-nKbw
+ beetmover-checksums-en-GB-linux-nightly/opt: YAeqw2-TSOCGKuwaQJRp-g
+ beetmover-checksums-en-GB-linux64-nightly/opt: DKps9psqS4qIBszhhT2ulw
+ beetmover-checksums-en-GB-macosx64-nightly/opt: PVsgLnZ1RPmDQt5PXq9taA
+ beetmover-checksums-en-GB-win32-nightly/opt: b6YFSmueRoGVK9n9Zh6pGw
+ beetmover-checksums-en-GB-win64-nightly/opt: Lb9nwud4QGGBg9tCcFlHlA
+ beetmover-checksums-en-ZA-linux-nightly/opt: GB8GdFdFQ0yv2yK5aJOj_g
+ beetmover-checksums-en-ZA-linux64-nightly/opt: VfQC7y1xQu-aT2-JQYo0vg
+ beetmover-checksums-en-ZA-macosx64-nightly/opt: KQ-gEpF3RxSaiT3OUkOW3A
+ beetmover-checksums-en-ZA-win32-nightly/opt: Dp6lw_HhQzq4_LmboyIaeg
+ beetmover-checksums-en-ZA-win64-nightly/opt: HGWHMPqnR1S7s0Awn2nVZQ
+ beetmover-checksums-eo-linux-nightly/opt: bfXI_I27RWGB3SRIJIBLog
+ beetmover-checksums-eo-linux64-nightly/opt: FTljcZryR9ST8IshCDW3hA
+ beetmover-checksums-eo-macosx64-nightly/opt: H5O4Co0PR9CKxRcJkyQnzA
+ beetmover-checksums-eo-win32-nightly/opt: RrayaUjDSrq9arSjXsgBqQ
+ beetmover-checksums-eo-win64-nightly/opt: Kxc15D3-TOingp1QE_H6-A
+ beetmover-checksums-es-AR-linux-nightly/opt: dD62g8ldQESJ8vGXODN9hQ
+ beetmover-checksums-es-AR-linux64-nightly/opt: QnVtkz3HSzuX8MA9rFRNLQ
+ beetmover-checksums-es-AR-macosx64-nightly/opt: KLoO0EeeRZ-Q8LtpMXgcAw
+ beetmover-checksums-es-AR-win32-nightly/opt: Z7PizvEnRj-Cmu34vaGLZw
+ beetmover-checksums-es-AR-win64-nightly/opt: TLBuXY8HTHioaigITtU4GQ
+ beetmover-checksums-es-CL-linux-nightly/opt: Q_a59wkKST-r-RqqzjdVpQ
+ beetmover-checksums-es-CL-linux64-nightly/opt: H7_qpWp6RAq-reqzrmEJRQ
+ beetmover-checksums-es-CL-macosx64-nightly/opt: dQs2yYnHRii8gXIte5L9qA
+ beetmover-checksums-es-CL-win32-nightly/opt: HIX1rHyqTs6A87JYswB6aQ
+ beetmover-checksums-es-CL-win64-nightly/opt: RNlCY5jbRA-jZ0PYdUPHuw
+ beetmover-checksums-es-ES-linux-nightly/opt: eoYR5olxQTWya9ZAB-0imw
+ beetmover-checksums-es-ES-linux64-nightly/opt: Ba1QxagaQtiUszGA_Gsvjw
+ beetmover-checksums-es-ES-macosx64-nightly/opt: Eav7RX_MRHGml-1RzvJB6A
+ beetmover-checksums-es-ES-win32-nightly/opt: FSuk2fMGQHO8xXslSZoTDg
+ beetmover-checksums-es-ES-win64-nightly/opt: JfuhdAEGTneMstmVanAkbg
+ beetmover-checksums-es-MX-linux-nightly/opt: LFjDTFQcST6zT7iWLBkisQ
+ beetmover-checksums-es-MX-linux64-nightly/opt: fk1DtpX1SG2FA5ifaN0G0Q
+ beetmover-checksums-es-MX-macosx64-nightly/opt: UhPsEfkGT2SpEfJK7vz-3w
+ beetmover-checksums-es-MX-win32-nightly/opt: KLvxsF9HQ3KFKIVBpKunSg
+ beetmover-checksums-es-MX-win64-nightly/opt: EMzGQFNcQ8KF2BkmITSwTA
+ beetmover-checksums-et-linux-nightly/opt: E9KbQUChTwOFPfjYGe6LqA
+ beetmover-checksums-et-linux64-nightly/opt: dwT2D3LxQfqpp3FxycQbOA
+ beetmover-checksums-et-macosx64-nightly/opt: EULErNoJShW6vOuqWWIC_g
+ beetmover-checksums-et-win32-nightly/opt: GUjDf_vBSOWQKW8uHwzfbg
+ beetmover-checksums-et-win64-nightly/opt: JssKqMtwTxW35Cv3KlOgWg
+ beetmover-checksums-eu-linux-nightly/opt: T69OKNYERP2ScTb2XdEqVg
+ beetmover-checksums-eu-linux64-nightly/opt: EbPazO7wToGBYNZF2hJV0g
+ beetmover-checksums-eu-macosx64-nightly/opt: UhEnHR4_TNyNCjnT_A7hWg
+ beetmover-checksums-eu-win32-nightly/opt: AfY_TBHCTe-sF0z2HWcYPQ
+ beetmover-checksums-eu-win64-nightly/opt: foZcxPnDTU-BGqyvqR1hpA
+ beetmover-checksums-fa-linux-nightly/opt: SxDnBQJ8TS2gzAP61pVNvQ
+ beetmover-checksums-fa-linux64-nightly/opt: K4nn95fwR0KC5D2vXGDiLQ
+ beetmover-checksums-fa-macosx64-nightly/opt: G5oN9p0GTCmW5Hw0jDmv1w
+ beetmover-checksums-fa-win32-nightly/opt: Otav9wlWQpu7V-8rEP4sMw
+ beetmover-checksums-fa-win64-nightly/opt: YNPl_BOlQNGgUZvQhVUerA
+ beetmover-checksums-ff-linux-nightly/opt: JBplRl6STRa1NPDB45eo3g
+ beetmover-checksums-ff-linux64-nightly/opt: Po_e5diWRAKUPP-ZUjhshQ
+ beetmover-checksums-ff-macosx64-nightly/opt: QbW3IJETRduW8BrRKBNIVA
+ beetmover-checksums-ff-win32-nightly/opt: S_gNEp32TD6ctP0Cs2Vvqw
+ beetmover-checksums-ff-win64-nightly/opt: ZgZ_xEWHQieqnIn67oviRg
+ beetmover-checksums-fi-linux-nightly/opt: Ch_AgOPtTueF5u-YUVEOvw
+ beetmover-checksums-fi-linux64-nightly/opt: YLlcoXARQX2Pqq7h4ikPEg
+ beetmover-checksums-fi-macosx64-nightly/opt: cWTtTVYHQEGPnONEkqPLCw
+ beetmover-checksums-fi-win32-nightly/opt: cfmrujGCSPmFi744h6VF1g
+ beetmover-checksums-fi-win64-nightly/opt: d1xnluF2QS6vgBFYCeOr-g
+ beetmover-checksums-fr-linux-nightly/opt: QP08dXwsRTqr8YbD3gNBBg
+ beetmover-checksums-fr-linux64-nightly/opt: cn6PErvwSp607gwy_cdSdQ
+ beetmover-checksums-fr-macosx64-nightly/opt: dof-HPqaRUe3fI6KWy8RoA
+ beetmover-checksums-fr-win32-nightly/opt: Veuha6J8Rmmedmv69rOBdw
+ beetmover-checksums-fr-win64-nightly/opt: fAT1BQ3gTSGTnn_oD48ABQ
+ beetmover-checksums-fy-NL-linux-nightly/opt: Xcs70OaIQz-4uGFSMoUNNA
+ beetmover-checksums-fy-NL-linux64-nightly/opt: KtWqVk7yTGWrak9v2Klqzg
+ beetmover-checksums-fy-NL-macosx64-nightly/opt: GB43wtxeR1u3YT1lKx75ZA
+ beetmover-checksums-fy-NL-win32-nightly/opt: PfDDhNDTSUWmbKXW_VBweA
+ beetmover-checksums-fy-NL-win64-nightly/opt: LbxGYtsdTmuU1QEuzfDx7Q
+ beetmover-checksums-ga-IE-linux-nightly/opt: Ens_bKhXR0WS3GL4ih2rRA
+ beetmover-checksums-ga-IE-linux64-nightly/opt: IcBq4LQ2TLqKb98vMpupwQ
+ beetmover-checksums-ga-IE-macosx64-nightly/opt: DMG-1b62SEavx8aRbwnGjQ
+ beetmover-checksums-ga-IE-win32-nightly/opt: Pkd2V2X9QHCoIEV3xgfLTQ
+ beetmover-checksums-ga-IE-win64-nightly/opt: L6qPpg4OQH-AhwxqorD5lw
+ beetmover-checksums-gd-linux-nightly/opt: P-RH_2QmRD6EeD0ULDpB5Q
+ beetmover-checksums-gd-linux64-nightly/opt: LRo3UVt0RjOjuKuDaLitRg
+ beetmover-checksums-gd-macosx64-nightly/opt: UKsfemS2TdqR86JQYahxcg
+ beetmover-checksums-gd-win32-nightly/opt: Wde6eQfdSeyaFHowdnY9jw
+ beetmover-checksums-gd-win64-nightly/opt: Aa3dz32zQnebN_7ChjTUyg
+ beetmover-checksums-gl-linux-nightly/opt: eIGXfsiOSo-98xfYN7JsDA
+ beetmover-checksums-gl-linux64-nightly/opt: bBgAcvzaTHWoOr5Y33T4Vw
+ beetmover-checksums-gl-macosx64-nightly/opt: FYnAh5PzTM6ZHdBRxLlFYQ
+ beetmover-checksums-gl-win32-nightly/opt: KfCGyXXbQRqWVXHWv8xW-g
+ beetmover-checksums-gl-win64-nightly/opt: Nn2KSAsNT3aBwYAVuZFbmg
+ beetmover-checksums-gn-linux-nightly/opt: WMTGheiPTsKUf4but2H8Uw
+ beetmover-checksums-gn-linux64-nightly/opt: MjB_ibNYQmGKUfKfsRGezA
+ beetmover-checksums-gn-macosx64-nightly/opt: PZ4WPdq9QxeiQNh37GNK7Q
+ beetmover-checksums-gn-win32-nightly/opt: fJ_vt-oURm6aS7keqPD4tg
+ beetmover-checksums-gn-win64-nightly/opt: ZCHVdjEfT9S1H1wssBSXbg
+ beetmover-checksums-gu-IN-linux-nightly/opt: LDPCYKo_Q_6SVU0pNQCWUA
+ beetmover-checksums-gu-IN-linux64-nightly/opt: QaSWJ0nbS_a-CBlzWAP-KQ
+ beetmover-checksums-gu-IN-macosx64-nightly/opt: EnU25H80S_2pFv0abXUmyQ
+ beetmover-checksums-gu-IN-win32-nightly/opt: c0wBz2qpTqCkDNZIxNfapA
+ beetmover-checksums-gu-IN-win64-nightly/opt: HuQ4lyUSSTOEB3lIjfEaSg
+ beetmover-checksums-he-linux-nightly/opt: MSiprEk_Quq8mNXihdP9Zg
+ beetmover-checksums-he-linux64-nightly/opt: DJTQqojgTNarZ1Id-UoM8Q
+ beetmover-checksums-he-macosx64-nightly/opt: dHMTQZJNRqi43gm56YaM6g
+ beetmover-checksums-he-win32-nightly/opt: KSgUA9-MSIqdjhtihsjPPg
+ beetmover-checksums-he-win64-nightly/opt: Zcr19iEuTFSu57KgLant3Q
+ beetmover-checksums-hi-IN-linux-nightly/opt: IKXkqv__S26xXT-TRd4xhA
+ beetmover-checksums-hi-IN-linux64-nightly/opt: ANDVLYxYQ0mmIySDSsazow
+ beetmover-checksums-hi-IN-macosx64-nightly/opt: f301R4HeRReM54bONFAxhg
+ beetmover-checksums-hi-IN-win32-nightly/opt: ZQPNI3mJRmamJhjx7fxE_w
+ beetmover-checksums-hi-IN-win64-nightly/opt: cWT3RkDfQbGRnA-MCNB0aA
+ beetmover-checksums-hr-linux-nightly/opt: atQj5TemT42EONHc37AUug
+ beetmover-checksums-hr-linux64-nightly/opt: D9k4jq0ZQsSE84BdserxTg
+ beetmover-checksums-hr-macosx64-nightly/opt: OYQQbOVIQJ-NcnuN4F0AKg
+ beetmover-checksums-hr-win32-nightly/opt: QI6qKgnGQNeA3SeceIowzg
+ beetmover-checksums-hr-win64-nightly/opt: Yq51Xx7iS-Cswg3aluf_Iw
+ beetmover-checksums-hsb-linux-nightly/opt: ew_fUB1cT8O2xLB5Y0HI6A
+ beetmover-checksums-hsb-linux64-nightly/opt: J_ixcONuQumY32726MpFqA
+ beetmover-checksums-hsb-macosx64-nightly/opt: PXwc__ERR9uN2coM7PgOeg
+ beetmover-checksums-hsb-win32-nightly/opt: S_-K4FzYQo6fnmrqYC-rnQ
+ beetmover-checksums-hsb-win64-nightly/opt: XoBSMLDTScqmB3EkQw5pOw
+ beetmover-checksums-hu-linux-nightly/opt: QrCrviqnSte1eSupJXD_5Q
+ beetmover-checksums-hu-linux64-nightly/opt: Qo9tRXMNQXK-eyl22RhNHA
+ beetmover-checksums-hu-macosx64-nightly/opt: J0Bud1DTS6q43I3KIw2Dgg
+ beetmover-checksums-hu-win32-nightly/opt: eef34q_PRpG1nXsaV9Jb7g
+ beetmover-checksums-hu-win64-nightly/opt: ADSujkS2R12gFVA4TRWT6w
+ beetmover-checksums-hy-AM-linux-nightly/opt: ZMitjcBrQ2SoBooaOGc0DA
+ beetmover-checksums-hy-AM-linux64-nightly/opt: GI2gMoM7SZy6IZzeorFRAg
+ beetmover-checksums-hy-AM-macosx64-nightly/opt: Vj9ZsK_ZRoWCFJgUVEpy3w
+ beetmover-checksums-hy-AM-win32-nightly/opt: AD5VkOAsQC-AcGt33PHjMQ
+ beetmover-checksums-hy-AM-win64-nightly/opt: Ecr5zOi6T5i3CaUu3qrc1A
+ beetmover-checksums-ia-linux-nightly/opt: fFhNnkAXS3eUurg1CnXcMA
+ beetmover-checksums-ia-linux64-nightly/opt: ZfscRLTrQl2LqzqrfEKF_Q
+ beetmover-checksums-ia-macosx64-nightly/opt: AO2Rw4cRTCGN6I1zwiGfiA
+ beetmover-checksums-ia-win32-nightly/opt: YUcXPDCuQQ6xKOW3wqFEBw
+ beetmover-checksums-ia-win64-nightly/opt: DYT0Oav_RsCZVe2ShGmzKw
+ beetmover-checksums-id-linux-nightly/opt: J0zM9_CaSBuoO1Ly54E13Q
+ beetmover-checksums-id-linux64-nightly/opt: FL_3VwtLRcSRNzptPDowtA
+ beetmover-checksums-id-macosx64-nightly/opt: S55c9Fo6T6qqAmMWQKz6cw
+ beetmover-checksums-id-win32-nightly/opt: fEgFOQg8R4mwNIxvgzTHdg
+ beetmover-checksums-id-win64-nightly/opt: NEKR1q2jRqmRcvzPvDtKUA
+ beetmover-checksums-is-linux-nightly/opt: LAnwBVUFSw2Nm88pGtxfBw
+ beetmover-checksums-is-linux64-nightly/opt: bvIwlitwTZuHq5Swas-1Yw
+ beetmover-checksums-is-macosx64-nightly/opt: WH2QA3SyRQyc5W9ru7hSmw
+ beetmover-checksums-is-win32-nightly/opt: ESvuEizXQBOGaMy-oh8VxA
+ beetmover-checksums-is-win64-nightly/opt: WWhRWIdTSlWbVDl4dm111A
+ beetmover-checksums-it-linux-nightly/opt: Xzc1mk5GS_2kOB7FqRdUmw
+ beetmover-checksums-it-linux64-nightly/opt: OaUkA9qWTNOOIVj3k_5NxA
+ beetmover-checksums-it-macosx64-nightly/opt: EQtXkYjnTuilID94IDqSSw
+ beetmover-checksums-it-win32-nightly/opt: eFu5lXoSRT6b4rJwUGo90Q
+ beetmover-checksums-it-win64-nightly/opt: aAxxxMSDSlaTnyrrpHp_DQ
+ beetmover-checksums-ja-JP-mac-macosx64-nightly/opt: aPpSDgJPS8-Ok5lpHBMkdQ
+ beetmover-checksums-ja-linux-nightly/opt: f_3u2HkbSJqIUSL_KrNIvg
+ beetmover-checksums-ja-linux64-nightly/opt: EYVvTuoJTpuSeiYAMi6Mzg
+ beetmover-checksums-ja-win32-nightly/opt: LffLFKZCQOOtFOW33zmPTA
+ beetmover-checksums-ja-win64-nightly/opt: L-KKZzvrTv-ZpqzUNdz90Q
+ beetmover-checksums-ka-linux-nightly/opt: PhZzwBO1Qeq0zVU9mh6SgA
+ beetmover-checksums-ka-linux64-nightly/opt: OxgxgU3IQeq1wwUi-71g6w
+ beetmover-checksums-ka-macosx64-nightly/opt: El1LiBVbTzCAuJm2aqk7Rw
+ beetmover-checksums-ka-win32-nightly/opt: TNevl5qNQpSInb7nyR9cyw
+ beetmover-checksums-ka-win64-nightly/opt: NFOOrvj7Q6CAoeUjfbZCXQ
+ beetmover-checksums-kab-linux-nightly/opt: VqB6ABwbQtCVxiyU_qyipA
+ beetmover-checksums-kab-linux64-nightly/opt: cIE2mOs1SVuQp61UJLfgdA
+ beetmover-checksums-kab-macosx64-nightly/opt: VJK8DlicTfWbA8pCXSX8mQ
+ beetmover-checksums-kab-win32-nightly/opt: Ky1bhHu1TfuBbyKPdddVew
+ beetmover-checksums-kab-win64-nightly/opt: LIFWFoWpR_qcZH7o8Z3O2A
+ beetmover-checksums-kk-linux-nightly/opt: cgj2dPMfRCGV3B6xfrIQtQ
+ beetmover-checksums-kk-linux64-nightly/opt: Y4w23QNDQxyzCzlczSlpuA
+ beetmover-checksums-kk-macosx64-nightly/opt: LIb-bTMPRDuAzdPpnQ9wgg
+ beetmover-checksums-kk-win32-nightly/opt: MbeDxhK1SW6Fbdz5PryDOg
+ beetmover-checksums-kk-win64-nightly/opt: L-hFoancRGqJQI3IvKJXbA
+ beetmover-checksums-km-linux-nightly/opt: YdXakrj5TGaS8GOeqVVb6A
+ beetmover-checksums-km-linux64-nightly/opt: a2wBMftDRUy7RlHIlWmNRw
+ beetmover-checksums-km-macosx64-nightly/opt: bBvgbPQDREKgGaHru8PCzA
+ beetmover-checksums-km-win32-nightly/opt: NXl1hecrTte5dpobtgR-Bw
+ beetmover-checksums-km-win64-nightly/opt: R9RaUwV9TOqboWIQZIOvkg
+ beetmover-checksums-kn-linux-nightly/opt: YuutwsHTQs-HDu7ni7eoqA
+ beetmover-checksums-kn-linux64-nightly/opt: A6305Sn0S2iI60t1436oqQ
+ beetmover-checksums-kn-macosx64-nightly/opt: GFDDI_yVSvyFN8Zhnz-_RQ
+ beetmover-checksums-kn-win32-nightly/opt: JIBZ9IpQTyGjf2fjm1kt4g
+ beetmover-checksums-kn-win64-nightly/opt: JopKMw75QKOuwGg68c50QA
+ beetmover-checksums-ko-linux-nightly/opt: ZZLCpWhMQ-OyHDz3zJOxsg
+ beetmover-checksums-ko-linux64-nightly/opt: AdWwweuoTZat97HNsmshQg
+ beetmover-checksums-ko-macosx64-nightly/opt: HBWu21ygQjCD7SJEFMTXHA
+ beetmover-checksums-ko-win32-nightly/opt: NTxgSD5KTpK14fmx6rQdQw
+ beetmover-checksums-ko-win64-nightly/opt: DpRbkPBiR0K8MTHu0iqoQA
+ beetmover-checksums-lij-linux-nightly/opt: PBoNb8VBT_mS7Xbkcs0lVg
+ beetmover-checksums-lij-linux64-nightly/opt: avLo4niqS9aPDjdT1VBMIQ
+ beetmover-checksums-lij-macosx64-nightly/opt: Gw8h7VZDTQWlquuhQOd1pA
+ beetmover-checksums-lij-win32-nightly/opt: fg36wu-BQKureYwMHbbLgw
+ beetmover-checksums-lij-win64-nightly/opt: aLneMYsMT6S28RoQ0B3kCQ
+ beetmover-checksums-linux-nightly/opt: RalqpuKoQaag_waj26qobA
+ beetmover-checksums-linux64-nightly/opt: NzVF7Rd7TyK2W7KW8-kQPw
+ beetmover-checksums-lt-linux-nightly/opt: NW3n0F33SUSJBRvElbBGmg
+ beetmover-checksums-lt-linux64-nightly/opt: YpOnNaQ7Tni1hSnMDAD_yQ
+ beetmover-checksums-lt-macosx64-nightly/opt: GPlDN60ZR9KRxRs4dtrQvA
+ beetmover-checksums-lt-win32-nightly/opt: bFvWSy_vTRiZQxQMCnGQYw
+ beetmover-checksums-lt-win64-nightly/opt: SyaijOw-SzKetWRTwHjA_g
+ beetmover-checksums-lv-linux-nightly/opt: Mt0z14esTrqEkbCk_2cNlw
+ beetmover-checksums-lv-linux64-nightly/opt: Ozri4Qb4TsqpqQIgHxikLg
+ beetmover-checksums-lv-macosx64-nightly/opt: T3ymHX50SWSICIy97Y7xaQ
+ beetmover-checksums-lv-win32-nightly/opt: NPD0KN-5TgauFqreOWShlQ
+ beetmover-checksums-lv-win64-nightly/opt: Ps1RtpP_SBSq7p9Jinq05Q
+ beetmover-checksums-macosx64-nightly/opt: alxxs9UWSxW6q5ahE-z3-A
+ beetmover-checksums-mai-linux-nightly/opt: UGjyl7vrTU2Xhc6lCFCEog
+ beetmover-checksums-mai-linux64-nightly/opt: cZMSlN2TT-O8thUURE9IRQ
+ beetmover-checksums-mai-macosx64-nightly/opt: WL8-eXOyS3iVT8r6GUMnAA
+ beetmover-checksums-mai-win32-nightly/opt: NpRjmcbqSYGciAN5BEdrog
+ beetmover-checksums-mai-win64-nightly/opt: ECQs2zHLQreOdXKFl3cRJw
+ beetmover-checksums-mk-linux-nightly/opt: c3PT1wNiRNWBVG4pA4XKtg
+ beetmover-checksums-mk-linux64-nightly/opt: NErtGCv6QTe3Cc1TJuimnw
+ beetmover-checksums-mk-macosx64-nightly/opt: HwtXtKoaTMenwkl6t1Jl_A
+ beetmover-checksums-mk-win32-nightly/opt: HyH2UMN6Sx2RpHUCw-_ryg
+ beetmover-checksums-mk-win64-nightly/opt: K5KJrqrGQ_a5FSr1qc3MyA
+ beetmover-checksums-ml-linux-nightly/opt: QrEsc4wsSvC5JrU71N_puw
+ beetmover-checksums-ml-linux64-nightly/opt: J9JcESfFSgO5-sMvL42JxQ
+ beetmover-checksums-ml-macosx64-nightly/opt: ab1YTx1UQ62pyA8-487Gkg
+ beetmover-checksums-ml-win32-nightly/opt: N3PiZyPzQa-uC3OPoVzg5g
+ beetmover-checksums-ml-win64-nightly/opt: flZgJp_vR_6J3BlKU_cMWQ
+ beetmover-checksums-mr-linux-nightly/opt: GpA3VC_mQAOy3mi0hlbdkQ
+ beetmover-checksums-mr-linux64-nightly/opt: JR6VkotdQ4WisoWd1iijRA
+ beetmover-checksums-mr-macosx64-nightly/opt: JdvTuwYGRJ-mpdoAqgxS8g
+ beetmover-checksums-mr-win32-nightly/opt: NIJzHfxgTqGZY0UO3NZ2DA
+ beetmover-checksums-mr-win64-nightly/opt: OAs5gJ_RQxK7uz4ojB5JEg
+ beetmover-checksums-ms-linux-nightly/opt: e75cs5p6TaCFPtm3-WFUQw
+ beetmover-checksums-ms-linux64-nightly/opt: RVRT648ATdW5PzL9hokfbA
+ beetmover-checksums-ms-macosx64-nightly/opt: Qb6kZ9a8TE-kj2VAQPnDfw
+ beetmover-checksums-ms-win32-nightly/opt: M8-K01oPToa2lMrZ0C29cg
+ beetmover-checksums-ms-win64-nightly/opt: XhwqDPPgTkK_2OjoXqKBQA
+ beetmover-checksums-my-linux-nightly/opt: QDVx5TX-SiGSNy3p7v_PWQ
+ beetmover-checksums-my-linux64-nightly/opt: WIUZFJYqSsu4GvtULLhKUQ
+ beetmover-checksums-my-macosx64-nightly/opt: ImueiT5aQzK5Wrg7Pl-nrw
+ beetmover-checksums-my-win32-nightly/opt: Z8YoKXCqSGCmjG0JcS6s1Q
+ beetmover-checksums-my-win64-nightly/opt: a_n7kem7RhyVHpdYeQLWNA
+ beetmover-checksums-nb-NO-linux-nightly/opt: We_KijuDQMWdYU7bzCrYvQ
+ beetmover-checksums-nb-NO-linux64-nightly/opt: bsgzIdtMSa2vJe0gQYuXmA
+ beetmover-checksums-nb-NO-macosx64-nightly/opt: ab3h2zrETQyCRUyAIa734A
+ beetmover-checksums-nb-NO-win32-nightly/opt: dXxOX8WgSBim0BULz1HM_w
+ beetmover-checksums-nb-NO-win64-nightly/opt: FBSYlXoQQnawTM5_C5OzPg
+ beetmover-checksums-ne-NP-linux-nightly/opt: S-_AVBieRs-GnzCEYwUJig
+ beetmover-checksums-ne-NP-linux64-nightly/opt: M7Vh5iyrSWCq37RioGfYgw
+ beetmover-checksums-ne-NP-macosx64-nightly/opt: NLuC7B6IRwq2WuaZ4hoZ7A
+ beetmover-checksums-ne-NP-win32-nightly/opt: F39VgsRURSeDqvbKWBVsAw
+ beetmover-checksums-ne-NP-win64-nightly/opt: flu-EUASQiKlgydWQegl4w
+ beetmover-checksums-nl-linux-nightly/opt: J-wWyn3UQQqy48zrf2MfVA
+ beetmover-checksums-nl-linux64-nightly/opt: OMooz00yTTKtW5IUjdxzHQ
+ beetmover-checksums-nl-macosx64-nightly/opt: Gm8rluB0QF2ly7aasfCBAQ
+ beetmover-checksums-nl-win32-nightly/opt: UGUmq3n3QpCDKs6y55bwnQ
+ beetmover-checksums-nl-win64-nightly/opt: asieBCuQTlmll6skT9DRAg
+ beetmover-checksums-nn-NO-linux-nightly/opt: QcMT-rCkSuSCBVIaF4fuxw
+ beetmover-checksums-nn-NO-linux64-nightly/opt: BlsUnDkMRHyEI4O50nZeTQ
+ beetmover-checksums-nn-NO-macosx64-nightly/opt: X382m5qURWegjeFyZJDh9A
+ beetmover-checksums-nn-NO-win32-nightly/opt: TAkkKyZBSg6FLMHIailLLA
+ beetmover-checksums-nn-NO-win64-nightly/opt: fi8EQaa3S8yddp0UTrbnnA
+ beetmover-checksums-oc-linux-nightly/opt: BWDg146RSZeKf_eY0UTwIA
+ beetmover-checksums-oc-linux64-nightly/opt: ayn27RK4SiSmplTl8ybC0Q
+ beetmover-checksums-oc-macosx64-nightly/opt: U6r6txoGSBSK8KZpbZDFRg
+ beetmover-checksums-oc-win32-nightly/opt: dggQe6jsQIezPvRWV2LowQ
+ beetmover-checksums-oc-win64-nightly/opt: Ir6vcTtiRUiiGMMx4vU1zw
+ beetmover-checksums-or-linux-nightly/opt: Udrp7McEQr-LFqn8IH4vBA
+ beetmover-checksums-or-linux64-nightly/opt: JMQuW5sXQhqsQ5oSnmvECg
+ beetmover-checksums-or-macosx64-nightly/opt: U70NqjA4S4qo8hhCc1--DA
+ beetmover-checksums-or-win32-nightly/opt: G3IKaFYqRhCMX8O4D50-JA
+ beetmover-checksums-or-win64-nightly/opt: c1lxOaNGT-K0bUmzTjb_7g
+ beetmover-checksums-pa-IN-linux-nightly/opt: WLDXv4ofTWm1z9pbuisjvQ
+ beetmover-checksums-pa-IN-linux64-nightly/opt: X1LMWI0DT_ie8JOat79YWg
+ beetmover-checksums-pa-IN-macosx64-nightly/opt: JdGeT1_BSY-i8OFHZXAHig
+ beetmover-checksums-pa-IN-win32-nightly/opt: Mr-JyAkZSm2adEI16y8wxw
+ beetmover-checksums-pa-IN-win64-nightly/opt: ICdXd_KATMueH846Dli1Cg
+ beetmover-checksums-pl-linux-nightly/opt: QzfNbwZgQ2-4fy44NzbJPQ
+ beetmover-checksums-pl-linux64-nightly/opt: Xki9V98nSwGtJXc7pgm9og
+ beetmover-checksums-pl-macosx64-nightly/opt: btw5e5e4RZi8oCIFOmHhNQ
+ beetmover-checksums-pl-win32-nightly/opt: PWrE9YtRTvmUhJxRf71SSA
+ beetmover-checksums-pl-win64-nightly/opt: TIpJuDT_QP6A6K-9AhKQnA
+ beetmover-checksums-pt-BR-linux-nightly/opt: JobU6RvyRvWd06OAxOCKKA
+ beetmover-checksums-pt-BR-linux64-nightly/opt: SzzgC2clRF-AN5GQF1oMhg
+ beetmover-checksums-pt-BR-macosx64-nightly/opt: RJ4WQokpT7K_8UzlfFaAjA
+ beetmover-checksums-pt-BR-win32-nightly/opt: JnFsjCeXQKG9GNhfYsyhPQ
+ beetmover-checksums-pt-BR-win64-nightly/opt: U5sgUsl7RdWKOR0i4d7Hig
+ beetmover-checksums-pt-PT-linux-nightly/opt: VHzTQo1hRlut1AL3LT0cJQ
+ beetmover-checksums-pt-PT-linux64-nightly/opt: W5sYMVC6QBijmuUd5gELKQ
+ beetmover-checksums-pt-PT-macosx64-nightly/opt: bqJdEOFiS1-KnEJT0E7Fkg
+ beetmover-checksums-pt-PT-win32-nightly/opt: LnCzhRTISr-E94NQnL38hQ
+ beetmover-checksums-pt-PT-win64-nightly/opt: GXeLufuKQem-nRgZMSIqLQ
+ beetmover-checksums-rm-linux-nightly/opt: dnXfRJJbQYinzS4IVFQa6w
+ beetmover-checksums-rm-linux64-nightly/opt: AUqpqHUARs-ww4aHntd7mg
+ beetmover-checksums-rm-macosx64-nightly/opt: XpJoxRgHT_Wof_FZsyxkjw
+ beetmover-checksums-rm-win32-nightly/opt: XIGmok7HTaeaX7jyJlZw8A
+ beetmover-checksums-rm-win64-nightly/opt: ekaNiGvyRxm8EroGgzQYWA
+ beetmover-checksums-ro-linux-nightly/opt: PiDd5SKMQCiH8Bw5Wwlbpw
+ beetmover-checksums-ro-linux64-nightly/opt: SpwqPu6xQvWHj_YEOj5iZw
+ beetmover-checksums-ro-macosx64-nightly/opt: SpuuEVRARWyB0cA9vHIM5A
+ beetmover-checksums-ro-win32-nightly/opt: c2kymHrqTq2Bo4WvKZvzGg
+ beetmover-checksums-ro-win64-nightly/opt: TGIAMuNLRLa9KeS6b7KY1w
+ beetmover-checksums-ru-linux-nightly/opt: F580ngfQRDyzVElHtPMaZg
+ beetmover-checksums-ru-linux64-nightly/opt: BSGQ9OXPT16Sf-8oCPsMVQ
+ beetmover-checksums-ru-macosx64-nightly/opt: EXxus861STe77mtdoSXIyA
+ beetmover-checksums-ru-win32-nightly/opt: D7Eg4kbsRS2GCHiIC2ipNw
+ beetmover-checksums-ru-win64-nightly/opt: b6E0mXbCSDKSBtCMXDakQw
+ beetmover-checksums-si-linux-nightly/opt: VRhmfcaITRalTHPHVxFrtA
+ beetmover-checksums-si-linux64-nightly/opt: HgGMtD7pRPWxPyOgGQAMxQ
+ beetmover-checksums-si-macosx64-nightly/opt: Ih4xJWITQsSXhqraNZG7Xw
+ beetmover-checksums-si-win32-nightly/opt: fBf5nJtnTM2pk3W2Dd665A
+ beetmover-checksums-si-win64-nightly/opt: H5fmbPvVQ9-F0-Ewqhwn2g
+ beetmover-checksums-sk-linux-nightly/opt: SlIiJnIgQGKkvDRrGarKOg
+ beetmover-checksums-sk-linux64-nightly/opt: HX_zSzbSTYWglsINdLmaoQ
+ beetmover-checksums-sk-macosx64-nightly/opt: TlZk49IfQ7CM5LM8K0TPzw
+ beetmover-checksums-sk-win32-nightly/opt: Xkhys5J4QwKuyoW0JShYsQ
+ beetmover-checksums-sk-win64-nightly/opt: X0ATm1G9QfKUX_jZbcDcUQ
+ beetmover-checksums-sl-linux-nightly/opt: W90N6V_hSAObL1HLcEsO0g
+ beetmover-checksums-sl-linux64-nightly/opt: I86kBbw_StC5-rtBf9kpow
+ beetmover-checksums-sl-macosx64-nightly/opt: Xo0PHWuGTA2TmqxL_uCYgA
+ beetmover-checksums-sl-win32-nightly/opt: ckyoUa7MTbCsmVtgLBzDEQ
+ beetmover-checksums-sl-win64-nightly/opt: PgepVp75SpSfrLZiLCTkYA
+ beetmover-checksums-son-linux-nightly/opt: Xu3RZrlASpKfAZbNyA5nXg
+ beetmover-checksums-son-linux64-nightly/opt: eC_jKJr8QRSFOs-OE6Xnug
+ beetmover-checksums-son-macosx64-nightly/opt: Ez8xfGuMSd-pKmUKSKLOCw
+ beetmover-checksums-son-win32-nightly/opt: DgakwJ6cS-OvcKD5PuSDnQ
+ beetmover-checksums-son-win64-nightly/opt: cyucWTfYRlGVHJaarLHTig
+ beetmover-checksums-sq-linux-nightly/opt: OAcCtRW2RbuXXJ_aZr_Jcw
+ beetmover-checksums-sq-linux64-nightly/opt: BQrohtsDS0ylvgYEg1cJQg
+ beetmover-checksums-sq-macosx64-nightly/opt: NStEIH7LQzOEYuJLOy2GMw
+ beetmover-checksums-sq-win32-nightly/opt: EU_L-tBhQtGi8kfPA90nmg
+ beetmover-checksums-sq-win64-nightly/opt: IhWzeRx-Sx6poyRDUoiAgA
+ beetmover-checksums-sr-linux-nightly/opt: YC6bSkjoQu2LgK5N5_mzaA
+ beetmover-checksums-sr-linux64-nightly/opt: Rz4qN5bFRpOxbmVYFwer3A
+ beetmover-checksums-sr-macosx64-nightly/opt: aDYBTl1uS5iBwEor1reCtg
+ beetmover-checksums-sr-win32-nightly/opt: IfrzG_Y8TRufFdVJI46NEg
+ beetmover-checksums-sr-win64-nightly/opt: MMnqcyicTbKWPHJ1d35pag
+ beetmover-checksums-sv-SE-linux-nightly/opt: CjhU50sFTJGo3ijxotALRA
+ beetmover-checksums-sv-SE-linux64-nightly/opt: GNN_AcmkQ2mQlKipVoNe3A
+ beetmover-checksums-sv-SE-macosx64-nightly/opt: CP3LwYY-TjKPm--_KGUQ2g
+ beetmover-checksums-sv-SE-win32-nightly/opt: TmpACjulQ4KyJsOWgzB7Yg
+ beetmover-checksums-sv-SE-win64-nightly/opt: CJKYk_dwSeKSVl082XHrRg
+ beetmover-checksums-ta-linux-nightly/opt: aATIxaO6Qd6uk9PqNub5Ig
+ beetmover-checksums-ta-linux64-nightly/opt: N8IMAik8SMmbWCAHac2nfw
+ beetmover-checksums-ta-macosx64-nightly/opt: IvxRSwvdSfuUXIVDCPTdfA
+ beetmover-checksums-ta-win32-nightly/opt: F9gsD2gEQ4SFNmHilqkhzA
+ beetmover-checksums-ta-win64-nightly/opt: S0W5hxc8S_2OHun1T7tuPg
+ beetmover-checksums-te-linux-nightly/opt: BIH5MAZwQhatXXCoX1kqgA
+ beetmover-checksums-te-linux64-nightly/opt: WpNg7fdyRaG8a8Nrtrbh4Q
+ beetmover-checksums-te-macosx64-nightly/opt: akaJVM2sSMi2OMn9T-fIZg
+ beetmover-checksums-te-win32-nightly/opt: D7MmLxLESjiwhw8rNl-tNw
+ beetmover-checksums-te-win64-nightly/opt: Iuc3v5qJTx-SOPRUxs5sTA
+ beetmover-checksums-th-linux-nightly/opt: HESyv6KnQc-lD1viq-Dnqg
+ beetmover-checksums-th-linux64-nightly/opt: WKPgyZRIQoiNkob7_ShzoA
+ beetmover-checksums-th-macosx64-nightly/opt: APisBl97Q_m3hGXCVrXLZA
+ beetmover-checksums-th-win32-nightly/opt: EOBT_yNbS1-GCsFqJumsrw
+ beetmover-checksums-th-win64-nightly/opt: Gxfkk6IwTVyZVDFR-Iu0LA
+ beetmover-checksums-tr-linux-nightly/opt: RjmBvEygR46UWg5LK7HOww
+ beetmover-checksums-tr-linux64-nightly/opt: PHF2N4ufSEeJS_DK1nB58A
+ beetmover-checksums-tr-macosx64-nightly/opt: UmnnaBvrT8Cfx8tUf9gFAQ
+ beetmover-checksums-tr-win32-nightly/opt: JlWE0TJZSROHq0hRb9kONQ
+ beetmover-checksums-tr-win64-nightly/opt: S-8_FKW5Th2ZnxHll8LQcQ
+ beetmover-checksums-uk-linux-nightly/opt: DbQ_SpIyTdOmfjxdJpBTqw
+ beetmover-checksums-uk-linux64-nightly/opt: OY_tSyxBSB2xXit8WB-HMA
+ beetmover-checksums-uk-macosx64-nightly/opt: R9XPW2J4R6yZ3lD7-i0B6Q
+ beetmover-checksums-uk-win32-nightly/opt: B-antu3qRqS3IYwcK606_g
+ beetmover-checksums-uk-win64-nightly/opt: VSwhFEQNTkW5t2Ldao_CHg
+ beetmover-checksums-ur-linux-nightly/opt: Utahe7OzSri-13cCZa6T9w
+ beetmover-checksums-ur-linux64-nightly/opt: YLjDWVOnSKWlziob_3JSbA
+ beetmover-checksums-ur-macosx64-nightly/opt: L9sUSNTnRiq3uAJUr-Nr_w
+ beetmover-checksums-ur-win32-nightly/opt: f2BfnoDYTDWK4RWDzLL1iQ
+ beetmover-checksums-ur-win64-nightly/opt: BSgNScmPTOu-CqQY8e_zQQ
+ beetmover-checksums-uz-linux-nightly/opt: U00j2dk5QY-O8KjohcWAFA
+ beetmover-checksums-uz-linux64-nightly/opt: Dl3xWcuIQ8CMUk2xI9l4tQ
+ beetmover-checksums-uz-macosx64-nightly/opt: IIAf9pAtRfeLLA9CQlHGXw
+ beetmover-checksums-uz-win32-nightly/opt: br0MIF0PRrWjogLp7hGiZg
+ beetmover-checksums-uz-win64-nightly/opt: avf1lZJPRKa2O1MfmGW9xQ
+ beetmover-checksums-vi-linux-nightly/opt: C-vuSxDlTQGKqexrJV3STA
+ beetmover-checksums-vi-linux64-nightly/opt: MBFC21k9QnSttXrulB4spQ
+ beetmover-checksums-vi-macosx64-nightly/opt: AGFnjA1OTWyotsaRuxrQFw
+ beetmover-checksums-vi-win32-nightly/opt: FO-9bu6BQRqu5yBPlbBpWA
+ beetmover-checksums-vi-win64-nightly/opt: VVFixA13RzSbPO409ppGhQ
+ beetmover-checksums-win32-nightly/opt: N3roPN9GRoOW4ZCVaXteoA
+ beetmover-checksums-win64-nightly/opt: Je0T0VBFRC6_lPDOl2OmYw
+ beetmover-checksums-xh-linux-nightly/opt: EJSiHJLGT72dksMJ6KY7tw
+ beetmover-checksums-xh-linux64-nightly/opt: ZfPHMutYQmiwQYqjniB0IQ
+ beetmover-checksums-xh-macosx64-nightly/opt: DCjtdlWfR1WLcuajiozLsw
+ beetmover-checksums-xh-win32-nightly/opt: X6OBMxqwTS6kM8KnhY8GYQ
+ beetmover-checksums-xh-win64-nightly/opt: FSzOOasxRkKdED8SGDvtFQ
+ beetmover-checksums-zh-CN-linux-nightly/opt: SfdhJImWTfSZsRr25yxM0w
+ beetmover-checksums-zh-CN-linux64-nightly/opt: M3kEp0wpS2S42oF81MBhkA
+ beetmover-checksums-zh-CN-macosx64-nightly/opt: daKa2m-hROGXFE-TIRJ6Xw
+ beetmover-checksums-zh-CN-win32-nightly/opt: JYwQMOI2S_OOGXlmKFkaKg
+ beetmover-checksums-zh-CN-win64-nightly/opt: VAyxa_tAR4WCchLfTA97Og
+ beetmover-checksums-zh-TW-linux-nightly/opt: UGZ_ovbNRFm2LDAp4JhD2A
+ beetmover-checksums-zh-TW-linux64-nightly/opt: dBWqhDRkQBCibNr5xjR0-A
+ beetmover-checksums-zh-TW-macosx64-nightly/opt: D98QimVbQqOxsrHXlNJi7w
+ beetmover-checksums-zh-TW-win32-nightly/opt: e2cG-5CTQqKcwffoRkLFyA
+ beetmover-checksums-zh-TW-win64-nightly/opt: ZpzesNn0R6Gj6mgFpqhBWg
+ beetmover-repackage-ach-linux-nightly/opt: T0TMBosvRCqpmD4aviGeSA
+ beetmover-repackage-ach-linux64-nightly/opt: SMBOLn7oQ9We8EK-8B1vEQ
+ beetmover-repackage-ach-macosx64-nightly/opt: TpYugzhCS1S8N07oDpm1Iw
+ beetmover-repackage-ach-win32-nightly/opt: N6AuE-76RwW_rY2k_hlFLg
+ beetmover-repackage-ach-win64-nightly/opt: K5u4Rr2yS0GfEw1cmyEYvQ
+ beetmover-repackage-af-linux-nightly/opt: E0_TAQ6ERCmJzk4MURDdiw
+ beetmover-repackage-af-linux64-nightly/opt: NWK90IISRK-5jH86a4igqw
+ beetmover-repackage-af-macosx64-nightly/opt: RZ28deERRPGwtMnzGQr20g
+ beetmover-repackage-af-win32-nightly/opt: avl_qJNNRsCPG8COasRQCQ
+ beetmover-repackage-af-win64-nightly/opt: RrJqKLlxQRCxkFklnN7L_w
+ beetmover-repackage-an-linux-nightly/opt: E7JPu99bSHSVOppHZ5eR1A
+ beetmover-repackage-an-linux64-nightly/opt: ZdziLgxpRKqzDfQ_ROYEfg
+ beetmover-repackage-an-macosx64-nightly/opt: ag1oD52eTMOYzBGLeApWMA
+ beetmover-repackage-an-win32-nightly/opt: O4UWhndYQz2MiHacXj4sDQ
+ beetmover-repackage-an-win64-nightly/opt: VxeZ1rivReKUcfHOFYPOVw
+ beetmover-repackage-ar-linux-nightly/opt: FqTnlFa9RwW7eGrmiFoaiw
+ beetmover-repackage-ar-linux64-nightly/opt: MrKdqB37Qo-1iOCwP85bGA
+ beetmover-repackage-ar-macosx64-nightly/opt: dqFHFYIyTuGcWUzSrR5WLw
+ beetmover-repackage-ar-win32-nightly/opt: XZXzihUoRaiXMxTA_AORnA
+ beetmover-repackage-ar-win64-nightly/opt: HtYBksRoSr-GvHEXf7WWYw
+ beetmover-repackage-as-linux-nightly/opt: aWQWZZBaSIeX4rMVHGNMqA
+ beetmover-repackage-as-linux64-nightly/opt: L53DblPpTnGvxAyq8vNsng
+ beetmover-repackage-as-macosx64-nightly/opt: LYfSWCXjTPq2vYRkv8qZnA
+ beetmover-repackage-as-win32-nightly/opt: dDpBXBOORJ6hlkc5FJ7Fsg
+ beetmover-repackage-as-win64-nightly/opt: WbzrVTD5TjGuavrke9Za6A
+ beetmover-repackage-ast-linux-nightly/opt: LdDGHLTwSK6RJPspfJSobQ
+ beetmover-repackage-ast-linux64-nightly/opt: Ld5GC_WpSYmVIPOJgppqOw
+ beetmover-repackage-ast-macosx64-nightly/opt: WZlLLRXBRXe34_Jj4iVKWg
+ beetmover-repackage-ast-win32-nightly/opt: SNZDUw_dTeOLdjoXtcOsdg
+ beetmover-repackage-ast-win64-nightly/opt: E-kjRKAmQXKg77hNBueM3w
+ beetmover-repackage-az-linux-nightly/opt: PPTL6shFRLOx8csCco-zQQ
+ beetmover-repackage-az-linux64-nightly/opt: IE4-H9OvTvGjbHB7fwt1eA
+ beetmover-repackage-az-macosx64-nightly/opt: Xa2pYNLdR-euPYinzN5g_g
+ beetmover-repackage-az-win32-nightly/opt: eZHSrVvESqmtODMiLfwl-Q
+ beetmover-repackage-az-win64-nightly/opt: aWYhHe6MSomon2ldyUQFEQ
+ beetmover-repackage-be-linux-nightly/opt: dplioIgmSOiDG3Zp7WHl_Q
+ beetmover-repackage-be-linux64-nightly/opt: QB3vQVnCRgOlLOdR-PvT5Q
+ beetmover-repackage-be-macosx64-nightly/opt: UICXFoRPRNC3S-DFUGt4ow
+ beetmover-repackage-be-win32-nightly/opt: ASyb8Ap8R2OSgC5sGGZLsQ
+ beetmover-repackage-be-win64-nightly/opt: OHxrtwhUQ62RHaxE44eq3g
+ beetmover-repackage-bg-linux-nightly/opt: Ou2XZvsJRLC08T0JqG6P7A
+ beetmover-repackage-bg-linux64-nightly/opt: dRVqmBD9Qba0BEAD1KWU4A
+ beetmover-repackage-bg-macosx64-nightly/opt: Cg4jHH2nSEytt61CujbxeA
+ beetmover-repackage-bg-win32-nightly/opt: ZfVbqhMaSUqiglS8QuWWjQ
+ beetmover-repackage-bg-win64-nightly/opt: YZK-hW4TRBydjNZe7qDTuQ
+ beetmover-repackage-bn-BD-linux-nightly/opt: S2MKeHWJQRuX4NsLDaeK0w
+ beetmover-repackage-bn-BD-linux64-nightly/opt: CAreRKRHSECR7yoaAC0NeA
+ beetmover-repackage-bn-BD-macosx64-nightly/opt: S08zcgg8QKOTaZsJnfWDYA
+ beetmover-repackage-bn-BD-win32-nightly/opt: Q7Ybo_k1RjC5n6zRgbZzaA
+ beetmover-repackage-bn-BD-win64-nightly/opt: bcP991rKSeKzspDg3qJL2w
+ beetmover-repackage-bn-IN-linux-nightly/opt: bda5WeiVReGdpVN7tPyH-Q
+ beetmover-repackage-bn-IN-linux64-nightly/opt: FEiYOnAmSc-nhxfKzVsmoA
+ beetmover-repackage-bn-IN-macosx64-nightly/opt: Xp2EvBidRmGXt7zvolkWZg
+ beetmover-repackage-bn-IN-win32-nightly/opt: amdxmjZ1QrS1yD6gUe-feQ
+ beetmover-repackage-bn-IN-win64-nightly/opt: CKpV5w1rSiuwuBgg5pHJig
+ beetmover-repackage-br-linux-nightly/opt: C2MZ74sfQi2WslG6lMV_2w
+ beetmover-repackage-br-linux64-nightly/opt: HfDZ4KBKTPSaSkD0eVoDxA
+ beetmover-repackage-br-macosx64-nightly/opt: Bq6D8yuvSYqA4Q1_I6j04A
+ beetmover-repackage-br-win32-nightly/opt: VFigux2XSjq-Xr4fy4Yr_g
+ beetmover-repackage-br-win64-nightly/opt: R2UoQHZTR3myClDcCj1ctg
+ beetmover-repackage-bs-linux-nightly/opt: Axcb736qRmqLeEyYuCKoUA
+ beetmover-repackage-bs-linux64-nightly/opt: C-hci-p4QkSHszi_SrvsSA
+ beetmover-repackage-bs-macosx64-nightly/opt: dJmWmoQVRCGtU9e4oPVP8g
+ beetmover-repackage-bs-win32-nightly/opt: JtxMGV2ESMuHtyJje1Cpgw
+ beetmover-repackage-bs-win64-nightly/opt: LquOOkWiTpyR-GmDlQr3zg
+ beetmover-repackage-ca-linux-nightly/opt: F-IOYRWNTuWEhAkDWdhu7A
+ beetmover-repackage-ca-linux64-nightly/opt: H3SOLS9DRX2SnriZJrypVA
+ beetmover-repackage-ca-macosx64-nightly/opt: PNyvVqm2RfSnYOb144ju4A
+ beetmover-repackage-ca-win32-nightly/opt: Y8V9Lzi5SjiYOtQVVLC1EA
+ beetmover-repackage-ca-win64-nightly/opt: AJdVhSumQAaCaPAhGVzzbQ
+ beetmover-repackage-cak-linux-nightly/opt: b6Yj_IlISoWTy77IW53GDQ
+ beetmover-repackage-cak-linux64-nightly/opt: B0pLeywxQwGOZukGSibzWA
+ beetmover-repackage-cak-macosx64-nightly/opt: AbCq3OIIRmGsuT1ggtn31A
+ beetmover-repackage-cak-win32-nightly/opt: f5UP4tHlQGKt6G3Zo3nPgg
+ beetmover-repackage-cak-win64-nightly/opt: WcNvjPyVTc22DenVmwDzpA
+ beetmover-repackage-cs-linux-nightly/opt: d6hnCwCUSJuUz_mpSczYPg
+ beetmover-repackage-cs-linux64-nightly/opt: Oxh_RUuFQZqBD3n35da4wA
+ beetmover-repackage-cs-macosx64-nightly/opt: FWVp-9QDTRKyM6JRaVC9gw
+ beetmover-repackage-cs-win32-nightly/opt: NCLQJSJnRNW-KoQHA9M-qw
+ beetmover-repackage-cs-win64-nightly/opt: TwJNHkcqR_uJr-Tk7P79Rw
+ beetmover-repackage-cy-linux-nightly/opt: e2dS0rD4TX-inqSrFOlUXg
+ beetmover-repackage-cy-linux64-nightly/opt: WRtqUx53Tze90dv1l2DH9A
+ beetmover-repackage-cy-macosx64-nightly/opt: O6rX30GpTt-IKgUWS1hSSw
+ beetmover-repackage-cy-win32-nightly/opt: KFDMdxsvSjatAXDEEXzymg
+ beetmover-repackage-cy-win64-nightly/opt: WetOqmV_SuyaS2srsIwqOg
+ beetmover-repackage-da-linux-nightly/opt: QSec8ATMSbWlbAAbUi4-YQ
+ beetmover-repackage-da-linux64-nightly/opt: BqjCEDqsTaSDpyv8pGiwUQ
+ beetmover-repackage-da-macosx64-nightly/opt: dHhK0kxZThS9WmKnrvfAOQ
+ beetmover-repackage-da-win32-nightly/opt: NrUPE6sPRxmHDXKUyLj_7Q
+ beetmover-repackage-da-win64-nightly/opt: D7PhB8F_QsSUpaSX5eEqtA
+ beetmover-repackage-de-linux-nightly/opt: B7BCad7YTCqiAbQbmzb4_w
+ beetmover-repackage-de-linux64-nightly/opt: RF-oI_jRQtmnkpbLbIjsTw
+ beetmover-repackage-de-macosx64-nightly/opt: JdvSjqo0QP61AY_PKr6VIA
+ beetmover-repackage-de-win32-nightly/opt: bHe8ErWnTB2g38dHj_AAuA
+ beetmover-repackage-de-win64-nightly/opt: CIa5HsrFQZaks6ArJTv3LA
+ beetmover-repackage-dsb-linux-nightly/opt: DKF9tyH3SFO2_rrAAFefzA
+ beetmover-repackage-dsb-linux64-nightly/opt: VNe8NA6xSQiWSxd6EYtN-Q
+ beetmover-repackage-dsb-macosx64-nightly/opt: NGMiMIfdTnaUHWkNKw7Sxw
+ beetmover-repackage-dsb-win32-nightly/opt: JW7NzbCyTByfO-bEgVOIjg
+ beetmover-repackage-dsb-win64-nightly/opt: KrX-Jf5ESaqJBH57WeyojA
+ beetmover-repackage-el-linux-nightly/opt: VfVbz8qRRV6jaDIo1aneVg
+ beetmover-repackage-el-linux64-nightly/opt: C58pRnjIQSGv-TA3fje0_w
+ beetmover-repackage-el-macosx64-nightly/opt: LzWTGu8kRYmgNJeeDAwt8Q
+ beetmover-repackage-el-win32-nightly/opt: Q1J7Iz1WSZe5JN4Wf4zqSg
+ beetmover-repackage-el-win64-nightly/opt: IEdwqr_9QKCD3wcqyWhYEA
+ beetmover-repackage-en-CA-linux-nightly/opt: IAIkG-7eTKW6oTnAz0H6Fg
+ beetmover-repackage-en-CA-linux64-nightly/opt: NFXWi-O5TBKFObRNHD1Dyw
+ beetmover-repackage-en-CA-macosx64-nightly/opt: IckvqAvBTWOov3Gdvcd6Zg
+ beetmover-repackage-en-CA-win32-nightly/opt: TTZKctYVS62Oal250037QQ
+ beetmover-repackage-en-CA-win64-nightly/opt: AnQm3wzeRG607PNa_fjJPQ
+ beetmover-repackage-en-GB-linux-nightly/opt: GRl_mZHQTFmM1WgYCWpXwA
+ beetmover-repackage-en-GB-linux64-nightly/opt: Vpl9VBy3Q1-oupRgJosz4w
+ beetmover-repackage-en-GB-macosx64-nightly/opt: Fpp1x6CoTZWIh5r_V1Sxlw
+ beetmover-repackage-en-GB-win32-nightly/opt: VNnPqG2GQiOWasSbbQsd1g
+ beetmover-repackage-en-GB-win64-nightly/opt: EW50p_jrSxabYX3IC52gnw
+ beetmover-repackage-en-ZA-linux-nightly/opt: JNuMJqdvTTGfNTPyXYXkkg
+ beetmover-repackage-en-ZA-linux64-nightly/opt: Mh8vEurDQ-Kt8478p_WcPg
+ beetmover-repackage-en-ZA-macosx64-nightly/opt: P_OxKVYdT1OfzBVFdzJjeQ
+ beetmover-repackage-en-ZA-win32-nightly/opt: HSPTjbPETEOEZ0CQ3lTGGw
+ beetmover-repackage-en-ZA-win64-nightly/opt: BCONUj6HQ1awAi46B6e3Uw
+ beetmover-repackage-eo-linux-nightly/opt: NMocu83QSvuPQzitQkyclA
+ beetmover-repackage-eo-linux64-nightly/opt: butTzclsTQGvWKhLJixNHg
+ beetmover-repackage-eo-macosx64-nightly/opt: GAuPMH7HR7Si2dApBxTM6Q
+ beetmover-repackage-eo-win32-nightly/opt: Gk_7RX8UThyt6kkaCpAaUA
+ beetmover-repackage-eo-win64-nightly/opt: ZEWMtXoxQHKKjB5wX3FaZQ
+ beetmover-repackage-es-AR-linux-nightly/opt: QHItbozbRiOsbaXvlAADvA
+ beetmover-repackage-es-AR-linux64-nightly/opt: JiCO9DXpQNG4y-kLMCbPvw
+ beetmover-repackage-es-AR-macosx64-nightly/opt: JJhGu8G-R6ey5HMrt8N7WA
+ beetmover-repackage-es-AR-win32-nightly/opt: d3pvNDsRRRCpIT1huhHPqA
+ beetmover-repackage-es-AR-win64-nightly/opt: Jm4fFZwHQdioDLMzx9GD9Q
+ beetmover-repackage-es-CL-linux-nightly/opt: HlrVp-eCTAGKa2qHjrf90A
+ beetmover-repackage-es-CL-linux64-nightly/opt: CimY8oC2TlubOwGLk2v-ZA
+ beetmover-repackage-es-CL-macosx64-nightly/opt: fBAykKCOQDKQqW7I4mpGXg
+ beetmover-repackage-es-CL-win32-nightly/opt: WypRc2nQTy6klu5lqqiIuA
+ beetmover-repackage-es-CL-win64-nightly/opt: TD-jCgOfTcaxpVmkKVGe2A
+ beetmover-repackage-es-ES-linux-nightly/opt: Brva-VkuR2Wp1FrMlHz1hA
+ beetmover-repackage-es-ES-linux64-nightly/opt: GWEBcq_RRpKrejQlVqc1mQ
+ beetmover-repackage-es-ES-macosx64-nightly/opt: MSzu9QJ4QTGmrd09lMe31w
+ beetmover-repackage-es-ES-win32-nightly/opt: HHlaojwRQaW7N8HDskyzmA
+ beetmover-repackage-es-ES-win64-nightly/opt: cy43GuciQXG97nvDe-6dQA
+ beetmover-repackage-es-MX-linux-nightly/opt: Osts3rvvSAu2zwjKJNDz8g
+ beetmover-repackage-es-MX-linux64-nightly/opt: N_GOxtRxSIyQ1XwLbHQzTQ
+ beetmover-repackage-es-MX-macosx64-nightly/opt: RdwHq7uURx-xyUdFnIKH7g
+ beetmover-repackage-es-MX-win32-nightly/opt: cKpQWdnzQHK5URpITV7t7w
+ beetmover-repackage-es-MX-win64-nightly/opt: fmrv_3DmTRWOxErDAcrNyw
+ beetmover-repackage-et-linux-nightly/opt: c-Awag1KTWGOfg1FyGEl6Q
+ beetmover-repackage-et-linux64-nightly/opt: R5k74SNoSPyfunfnRi1JZA
+ beetmover-repackage-et-macosx64-nightly/opt: W57B_YuvTceh7Neol-UN2w
+ beetmover-repackage-et-win32-nightly/opt: W2oCMAvlT3aI_N_8WyYCMw
+ beetmover-repackage-et-win64-nightly/opt: BB6VI46WQpOTqmL5KBIpnw
+ beetmover-repackage-eu-linux-nightly/opt: Dm7Pl-yITXycabzxuUpFpQ
+ beetmover-repackage-eu-linux64-nightly/opt: Oe7tlJQ9S563-Hl-3Sk_yg
+ beetmover-repackage-eu-macosx64-nightly/opt: Dt4t448kTliszaEj2gUXig
+ beetmover-repackage-eu-win32-nightly/opt: TezOlH5qQFSfDolqCHYnkQ
+ beetmover-repackage-eu-win64-nightly/opt: Pi9a_Q6kSV2bREnSjVT2dw
+ beetmover-repackage-fa-linux-nightly/opt: EdkCIA51RluWp3WXe4sXxA
+ beetmover-repackage-fa-linux64-nightly/opt: WiG-8z8SQAmhM8fuVNgE3g
+ beetmover-repackage-fa-macosx64-nightly/opt: F96eva97Tq6p9Sx0MnKNVw
+ beetmover-repackage-fa-win32-nightly/opt: fntJsAgOTSmoKeeqCLU5oQ
+ beetmover-repackage-fa-win64-nightly/opt: YS9csF60SYGgsenCMotZAw
+ beetmover-repackage-ff-linux-nightly/opt: dOWlHfp-R_SfW2dQ5Tat8Q
+ beetmover-repackage-ff-linux64-nightly/opt: SkxXmkfOT5aPQOO_-9YGiw
+ beetmover-repackage-ff-macosx64-nightly/opt: T8T1hIwfQUm_GsorEnvmug
+ beetmover-repackage-ff-win32-nightly/opt: GmZlf_SyRfiPQ2v-MWhnJQ
+ beetmover-repackage-ff-win64-nightly/opt: f05mB4DGSTCOd5G4fWXxBQ
+ beetmover-repackage-fi-linux-nightly/opt: Z_RBq4ARSgi7ASmRP6sn1A
+ beetmover-repackage-fi-linux64-nightly/opt: ISgrf-WMQXGFnjlZU9JAEA
+ beetmover-repackage-fi-macosx64-nightly/opt: At6Vi3kCQSmwHYSFL4Z1eQ
+ beetmover-repackage-fi-win32-nightly/opt: NywzLPJtQp2aB4eIPocx2g
+ beetmover-repackage-fi-win64-nightly/opt: WF7Ex2OAQWm7Z5Ni8ZVaHQ
+ beetmover-repackage-fr-linux-nightly/opt: EWMNpDQlTqmnx1oOsQnCZA
+ beetmover-repackage-fr-linux64-nightly/opt: O3bAikO5QDa5YItV78UzUA
+ beetmover-repackage-fr-macosx64-nightly/opt: ZWDUa0F6STi-0TDjhQYcsg
+ beetmover-repackage-fr-win32-nightly/opt: SB9auZqJQuugTezOWdMjmQ
+ beetmover-repackage-fr-win64-nightly/opt: LS_t59ItQs-B0X6hIjDY0A
+ beetmover-repackage-fy-NL-linux-nightly/opt: VexwdunSSB22NOSajyx0qw
+ beetmover-repackage-fy-NL-linux64-nightly/opt: Pcx7JRK3QtW2O-3_OdG17A
+ beetmover-repackage-fy-NL-macosx64-nightly/opt: AgR_e1yLR1e5jYa_82-PdQ
+ beetmover-repackage-fy-NL-win32-nightly/opt: GjXo07vRQjOFSbRxT-S_iA
+ beetmover-repackage-fy-NL-win64-nightly/opt: BqW5_HxxSTKi6rFAeggbxg
+ beetmover-repackage-ga-IE-linux-nightly/opt: Cs-PemPORdC1wAldJGJUmA
+ beetmover-repackage-ga-IE-linux64-nightly/opt: anwRhctkQxGPoGr7V9lN_g
+ beetmover-repackage-ga-IE-macosx64-nightly/opt: bYtOPqgAT1m3oaJeu_MK4g
+ beetmover-repackage-ga-IE-win32-nightly/opt: NwS1ExwMR7aEuw1akzG1ug
+ beetmover-repackage-ga-IE-win64-nightly/opt: PAZLsQhwSv-YFNBeZ--oZw
+ beetmover-repackage-gd-linux-nightly/opt: KGCT5EpORd-WJqi4q26fDA
+ beetmover-repackage-gd-linux64-nightly/opt: Tk_LgZLbTM6yoJ_ELnoW0A
+ beetmover-repackage-gd-macosx64-nightly/opt: UOyLHhKJRTubiod6ls2Gtg
+ beetmover-repackage-gd-win32-nightly/opt: fW4ZUoSDSZusn08Syfr2BA
+ beetmover-repackage-gd-win64-nightly/opt: DL4cUiWjQWO7O3wn1r_6qA
+ beetmover-repackage-gl-linux-nightly/opt: FW6PoOi_TCKY5iXTubuvOQ
+ beetmover-repackage-gl-linux64-nightly/opt: b0N9DALdRRmoRCIq62SV9w
+ beetmover-repackage-gl-macosx64-nightly/opt: LaOIsTc6Qxuq0QMjW2IkRw
+ beetmover-repackage-gl-win32-nightly/opt: fhXpQOvRRHuGVsObxQ669Q
+ beetmover-repackage-gl-win64-nightly/opt: Iqpn3BgoT-2iwjQ_hGkH_Q
+ beetmover-repackage-gn-linux-nightly/opt: PnpOCozXT3-fhdoeJQeB4g
+ beetmover-repackage-gn-linux64-nightly/opt: IcB7LmWRTHmy0qiXQuDiow
+ beetmover-repackage-gn-macosx64-nightly/opt: IqB6MsfVT26Kz8jIdogyuA
+ beetmover-repackage-gn-win32-nightly/opt: Jnkr1JjqRIKq5kMLDOjiiQ
+ beetmover-repackage-gn-win64-nightly/opt: MryT0QCMRGS8PeRHYLiaDg
+ beetmover-repackage-gu-IN-linux-nightly/opt: Ylg2TUnPRMm1h21fyYRmbw
+ beetmover-repackage-gu-IN-linux64-nightly/opt: P8n0O-A2SIaKGujWD7VPIQ
+ beetmover-repackage-gu-IN-macosx64-nightly/opt: ML8Z9HAAQ-6R7qfjzd413A
+ beetmover-repackage-gu-IN-win32-nightly/opt: ZNAp2RfBQ8utinrV1u9RRw
+ beetmover-repackage-gu-IN-win64-nightly/opt: NfvhMspdRLqHq1AUYjBBxw
+ beetmover-repackage-he-linux-nightly/opt: H5nTycQuRoerZiFzRKXReg
+ beetmover-repackage-he-linux64-nightly/opt: Gg6xdHCHRJW5rR0VQ1OJPA
+ beetmover-repackage-he-macosx64-nightly/opt: cGITz_8ZTJOEFdR_0oMqqg
+ beetmover-repackage-he-win32-nightly/opt: Cd0chyHTR5WjSpxjpc_SMQ
+ beetmover-repackage-he-win64-nightly/opt: bxQor4tBSMKFHiZXubUvJQ
+ beetmover-repackage-hi-IN-linux-nightly/opt: BS0PzZ1XTCuP41KFS6d-eA
+ beetmover-repackage-hi-IN-linux64-nightly/opt: Bs2LBPx6T6mMzkN1HgiSSw
+ beetmover-repackage-hi-IN-macosx64-nightly/opt: HtJjNZFrQ2qNWS05dyaMUA
+ beetmover-repackage-hi-IN-win32-nightly/opt: dq-WYunJSf2hAi6FoBFS9g
+ beetmover-repackage-hi-IN-win64-nightly/opt: RL36I4i7RMyweQpqP9LTPQ
+ beetmover-repackage-hr-linux-nightly/opt: Hcxr_OTNRbKPPj2wTHYssw
+ beetmover-repackage-hr-linux64-nightly/opt: cd1vLOttT66coEZmlUwVmw
+ beetmover-repackage-hr-macosx64-nightly/opt: CMziF882RW2hoSpjDqUHpA
+ beetmover-repackage-hr-win32-nightly/opt: KO5LlTChQgeNdlTIFQ8SDQ
+ beetmover-repackage-hr-win64-nightly/opt: b1z-Or8lTf-1yhlzGWvWpA
+ beetmover-repackage-hsb-linux-nightly/opt: YMbXbudAR2ew-GxelGpFtg
+ beetmover-repackage-hsb-linux64-nightly/opt: ZX6YsGWsS82FZBnoYPsJEQ
+ beetmover-repackage-hsb-macosx64-nightly/opt: U800fpO_QSSH8QRvUwn_qg
+ beetmover-repackage-hsb-win32-nightly/opt: UwJJSlZaRKKv74xlaOiPQA
+ beetmover-repackage-hsb-win64-nightly/opt: VuPZy77_TI2odFC_4TFc5Q
+ beetmover-repackage-hu-linux-nightly/opt: Pb_7eNeCTVmQaZwka2oG7Q
+ beetmover-repackage-hu-linux64-nightly/opt: QtETo4BFT62G5vCUUGgZYA
+ beetmover-repackage-hu-macosx64-nightly/opt: Fbn-q5JkQFiKIYoJuqg-Xw
+ beetmover-repackage-hu-win32-nightly/opt: Qk2uljhfTUqI0NGVxvAkGg
+ beetmover-repackage-hu-win64-nightly/opt: StsjcF2wQy2c-1oRcvh6Dg
+ beetmover-repackage-hy-AM-linux-nightly/opt: YPFp7-zeSV-fsoAAjvsaig
+ beetmover-repackage-hy-AM-linux64-nightly/opt: CfkG0fjwSFmoxp_BR9fE1w
+ beetmover-repackage-hy-AM-macosx64-nightly/opt: YNn_UQlGTYmmA78HoPDjlQ
+ beetmover-repackage-hy-AM-win32-nightly/opt: RLXO_OIwRV20Sm6E6meprg
+ beetmover-repackage-hy-AM-win64-nightly/opt: UeJegHhVTqqPkSvsV8SDEw
+ beetmover-repackage-ia-linux-nightly/opt: JZxZvNNWRC27uayH1YpJPw
+ beetmover-repackage-ia-linux64-nightly/opt: ZTTG0eBiQFaBffqEvxMlMg
+ beetmover-repackage-ia-macosx64-nightly/opt: F6pR1g1OSeSJsegxn04P0A
+ beetmover-repackage-ia-win32-nightly/opt: KnP8tnqbTwmGX_m3HIjPfA
+ beetmover-repackage-ia-win64-nightly/opt: QYt7460cSLqS7o84rsTsAA
+ beetmover-repackage-id-linux-nightly/opt: EafEPfk4TaOVp36dLdB_rw
+ beetmover-repackage-id-linux64-nightly/opt: KEEAVOlJQkC5MdNJkLYgqA
+ beetmover-repackage-id-macosx64-nightly/opt: F0n1IWfyRiWkrchjeywInw
+ beetmover-repackage-id-win32-nightly/opt: Y14ViEVFQoe5S6Q3JbxLew
+ beetmover-repackage-id-win64-nightly/opt: d8-sY-BYQ1K5xRw1RY2rlQ
+ beetmover-repackage-is-linux-nightly/opt: B3r_x9VgQK200oOKouvXEA
+ beetmover-repackage-is-linux64-nightly/opt: Wlj9Pr1USP2HOINAdoi7aw
+ beetmover-repackage-is-macosx64-nightly/opt: F5JleVV6SHq-U0dWQGaBwg
+ beetmover-repackage-is-win32-nightly/opt: QvpQYqoHThaMghWhySwmuQ
+ beetmover-repackage-is-win64-nightly/opt: FsLYhHHVSg6XwJCovzi-Zw
+ beetmover-repackage-it-linux-nightly/opt: CJvhiWc0TKasyZ1EBEnuRw
+ beetmover-repackage-it-linux64-nightly/opt: GhxdqpQ0QoO9ga8tgcWJ1A
+ beetmover-repackage-it-macosx64-nightly/opt: LNdDVm9fTui3obbtjmGlRg
+ beetmover-repackage-it-win32-nightly/opt: e_pGFdmRSPGX2e4Prrh1Rw
+ beetmover-repackage-it-win64-nightly/opt: GXeT_7_GS-e_WgEsfGdjhw
+ beetmover-repackage-ja-JP-mac-macosx64-nightly/opt: b6opRl6PSS6KUIqOO4_9YA
+ beetmover-repackage-ja-linux-nightly/opt: TRygNdiLSNO20HkQxFNxWg
+ beetmover-repackage-ja-linux64-nightly/opt: XH4tiChMRgSBHWF-NAB0tQ
+ beetmover-repackage-ja-win32-nightly/opt: YR6WXHtXTbuHYQufry8ZCA
+ beetmover-repackage-ja-win64-nightly/opt: MfCIujg8RtSk-H-JCSbtzA
+ beetmover-repackage-ka-linux-nightly/opt: C-YjvdgUSC2fk9OYqVqG3w
+ beetmover-repackage-ka-linux64-nightly/opt: HTW-bqDoRXqNTnleJCNj7A
+ beetmover-repackage-ka-macosx64-nightly/opt: A9K8nrzBQgKQqyGPLOpIdA
+ beetmover-repackage-ka-win32-nightly/opt: JKmWjMTGTrCjLMSXsSXEeg
+ beetmover-repackage-ka-win64-nightly/opt: QEPuLwFkTGWlZsKxjrD0Dw
+ beetmover-repackage-kab-linux-nightly/opt: TCf5t_4_TtOCfKxSQjebfg
+ beetmover-repackage-kab-linux64-nightly/opt: e1IDNIhLShWLPJW9aLj10g
+ beetmover-repackage-kab-macosx64-nightly/opt: JPeCKEacRNGZ3Oa-fLOC4g
+ beetmover-repackage-kab-win32-nightly/opt: YlJt8v4JTnCI5tQkRXPp3w
+ beetmover-repackage-kab-win64-nightly/opt: QxztbZxWSOuEd0nDvGLE0Q
+ beetmover-repackage-kk-linux-nightly/opt: ZjdiltPgSKm3x9g0MpkQ7A
+ beetmover-repackage-kk-linux64-nightly/opt: SFNO0O4QQPe1EZ6aWo0F2w
+ beetmover-repackage-kk-macosx64-nightly/opt: ewpAZknIQK2HpjKkvykCtg
+ beetmover-repackage-kk-win32-nightly/opt: MmeUkaDhQWCy9-bZDPtNjQ
+ beetmover-repackage-kk-win64-nightly/opt: R-ni211MSXKA1iuXDgbK1w
+ beetmover-repackage-km-linux-nightly/opt: cdX-RfXzSkasFVxlFbCrAg
+ beetmover-repackage-km-linux64-nightly/opt: UYK-2knSSwWMEtzpbKp7GQ
+ beetmover-repackage-km-macosx64-nightly/opt: C2OzZK2tSTWy8K-k65-eGA
+ beetmover-repackage-km-win32-nightly/opt: N_McP1auTqymybGQAl-WJA
+ beetmover-repackage-km-win64-nightly/opt: S9rRDUqWR8e3udNmBH_5Nw
+ beetmover-repackage-kn-linux-nightly/opt: BEQl5usRTQKRCsscoW-iDA
+ beetmover-repackage-kn-linux64-nightly/opt: edtYE1mRQAqq1H1O3L52Yg
+ beetmover-repackage-kn-macosx64-nightly/opt: AXGLoQMsQcOk5Vj90fdPyg
+ beetmover-repackage-kn-win32-nightly/opt: VmxFOfpISyihEoHNwfZu6w
+ beetmover-repackage-kn-win64-nightly/opt: JYiWx82BSHW8MWybvQntaA
+ beetmover-repackage-ko-linux-nightly/opt: WgW1LPSjR8u4lbwmO26f2g
+ beetmover-repackage-ko-linux64-nightly/opt: cFAjbJqWTtmcJ_JViFAZ5A
+ beetmover-repackage-ko-macosx64-nightly/opt: HzfyPtQqTbOY-Sr37e0C6g
+ beetmover-repackage-ko-win32-nightly/opt: fT_XLNyMSICeWFNdOmJVEg
+ beetmover-repackage-ko-win64-nightly/opt: MJWmh3DUSEO2Pr-y2EM8aw
+ beetmover-repackage-lij-linux-nightly/opt: fvEN7tJLRia6VFb4HP-G8A
+ beetmover-repackage-lij-linux64-nightly/opt: CqOUKJdIRjGneyE51DE-MA
+ beetmover-repackage-lij-macosx64-nightly/opt: C5JYSXUqTUynTEv7DFWJMQ
+ beetmover-repackage-lij-win32-nightly/opt: Is0HW-j1RBKMCaKg9L2O8A
+ beetmover-repackage-lij-win64-nightly/opt: EyM0yBOPSJ-8BkJQSP7J6g
+ beetmover-repackage-linux-nightly/opt: Me-zHWyySOCwDp_0-S0P6A
+ beetmover-repackage-linux64-nightly/opt: f9hEcIfwQw-4t4CxU3s6rw
+ beetmover-repackage-lt-linux-nightly/opt: bCnhY6yfT36_oNqtQ1vGAw
+ beetmover-repackage-lt-linux64-nightly/opt: HgF0Yg2vQQOaHRG0pMo1yw
+ beetmover-repackage-lt-macosx64-nightly/opt: RMCnnJFCT4uqSVdd2f1OFA
+ beetmover-repackage-lt-win32-nightly/opt: HYU4ghhWQdC0CqiyA0sUrA
+ beetmover-repackage-lt-win64-nightly/opt: R4qldvvST2SP_fPiuTKnSA
+ beetmover-repackage-lv-linux-nightly/opt: emkD4WgxTlqwjgqCXmSeGQ
+ beetmover-repackage-lv-linux64-nightly/opt: UKm84q62TK6IGslrQo6DKw
+ beetmover-repackage-lv-macosx64-nightly/opt: Rgqc7eRzRea0-7yT_wlo2Q
+ beetmover-repackage-lv-win32-nightly/opt: MDkP1lVlSW2BU4xY7m3v_Q
+ beetmover-repackage-lv-win64-nightly/opt: IUd6w6unSaCVySzTpPtNDg
+ beetmover-repackage-macosx64-nightly/opt: U-1KjmHDSfitmIloCZqTmA
+ beetmover-repackage-mai-linux-nightly/opt: fXFGYTUDTLC4W-dBK9B38A
+ beetmover-repackage-mai-linux64-nightly/opt: JretRfOwQUGi415SmM6kKw
+ beetmover-repackage-mai-macosx64-nightly/opt: YOKs3fJjR4alOJDx5WJ42A
+ beetmover-repackage-mai-win32-nightly/opt: VvZ5lsbETQ2T2o7OPCowBA
+ beetmover-repackage-mai-win64-nightly/opt: FX5g1bNOQtyUbezKKRxWnQ
+ beetmover-repackage-mk-linux-nightly/opt: Ro3vajMJTBeYla0S-8AE7A
+ beetmover-repackage-mk-linux64-nightly/opt: BIpBu_Z_Rtyj9DwknxK8Qw
+ beetmover-repackage-mk-macosx64-nightly/opt: MvfNg5JISR2CxChpMrGcVQ
+ beetmover-repackage-mk-win32-nightly/opt: D80Sj1j_TGOKdf0KfyjmUg
+ beetmover-repackage-mk-win64-nightly/opt: Uep4KIwXQyCnD7dF87IGEg
+ beetmover-repackage-ml-linux-nightly/opt: B6sAHufJSTy6MXmNxWJwgg
+ beetmover-repackage-ml-linux64-nightly/opt: IPPsAYyeSUqQ6KL_XZQaWA
+ beetmover-repackage-ml-macosx64-nightly/opt: BemH4RmeTGOyMjDBWjyqXA
+ beetmover-repackage-ml-win32-nightly/opt: J0UzKvakS5KA_vPK1h6kqg
+ beetmover-repackage-ml-win64-nightly/opt: XUlYvDiOSkatP1XDlLmZng
+ beetmover-repackage-mr-linux-nightly/opt: cx0vcDkfS6KQ24aKLBlNLQ
+ beetmover-repackage-mr-linux64-nightly/opt: BmsYgMb7S5uYkd3BI4ct-A
+ beetmover-repackage-mr-macosx64-nightly/opt: XTm97ikkQ6OvAAikNCKkkQ
+ beetmover-repackage-mr-win32-nightly/opt: H1AILI1VRjWpQ_gyZal3YA
+ beetmover-repackage-mr-win64-nightly/opt: GGxzRgx7S1udIsStyoF0NQ
+ beetmover-repackage-ms-linux-nightly/opt: PVgLgKFMQQCVvgnng01pNQ
+ beetmover-repackage-ms-linux64-nightly/opt: KgdyxWNkSSiuUmZEVYDcIQ
+ beetmover-repackage-ms-macosx64-nightly/opt: RZgT-3mKRFqq04YEoKkeBg
+ beetmover-repackage-ms-win32-nightly/opt: UaVPwKBdSdqfGPdQgozobg
+ beetmover-repackage-ms-win64-nightly/opt: SZvYmKTqQBuOs3qxc4nWRw
+ beetmover-repackage-my-linux-nightly/opt: c1G8knuPS5m1MLbwl_kqUw
+ beetmover-repackage-my-linux64-nightly/opt: NdhruHSAQ9uZD2EaRM52xg
+ beetmover-repackage-my-macosx64-nightly/opt: U1z8gBDHQgCSnqUxzDLcYA
+ beetmover-repackage-my-win32-nightly/opt: FPlTcyUZSpq91UA4DpSDEA
+ beetmover-repackage-my-win64-nightly/opt: N5YS7RFERfyU6RFY0RXkFg
+ beetmover-repackage-nb-NO-linux-nightly/opt: JNz9MBhVTkmjD4_G3reRTg
+ beetmover-repackage-nb-NO-linux64-nightly/opt: APW6-pRZSqaHzb9WpglpMA
+ beetmover-repackage-nb-NO-macosx64-nightly/opt: J3ykhHcLQtmgQzg3P2zwLA
+ beetmover-repackage-nb-NO-win32-nightly/opt: VGZDOejmT-WTu_PfYdqIOA
+ beetmover-repackage-nb-NO-win64-nightly/opt: X-TIAN7PTOqCd_4t2KoHUA
+ beetmover-repackage-ne-NP-linux-nightly/opt: GflbzSu7TsWc-rgIXVp1FQ
+ beetmover-repackage-ne-NP-linux64-nightly/opt: b9yE9-3vT7mhcjUKKdG80A
+ beetmover-repackage-ne-NP-macosx64-nightly/opt: NW-O4N-wTJGPGOZFlrcNOQ
+ beetmover-repackage-ne-NP-win32-nightly/opt: B34zzKEFSdaivBcRzXem6g
+ beetmover-repackage-ne-NP-win64-nightly/opt: bWfeYkC6SCOhSpV-UhHlyw
+ beetmover-repackage-nl-linux-nightly/opt: TgYr-u9bT4Skoc7RaNg0zw
+ beetmover-repackage-nl-linux64-nightly/opt: VQNZmoQ4TEK2iXZM-kPK_g
+ beetmover-repackage-nl-macosx64-nightly/opt: N5saas7-T5-TxOuLdpvgdw
+ beetmover-repackage-nl-win32-nightly/opt: SxlnPNIHQyKuzKrUTyVswA
+ beetmover-repackage-nl-win64-nightly/opt: XZFul6aER9yoFeiIzqlzKw
+ beetmover-repackage-nn-NO-linux-nightly/opt: EVEaeA2NSuuOuHK6t_llow
+ beetmover-repackage-nn-NO-linux64-nightly/opt: ebt9r7gpRzG3XyGm9uor8A
+ beetmover-repackage-nn-NO-macosx64-nightly/opt: XsJobL55TV-hrM_dbwaDBQ
+ beetmover-repackage-nn-NO-win32-nightly/opt: M243GtiATEqO9ASMIxN34w
+ beetmover-repackage-nn-NO-win64-nightly/opt: HoW_8LQwRtqWbUR7FFAYfw
+ beetmover-repackage-oc-linux-nightly/opt: MEyzC5qSRAW2N4RzAmeEJw
+ beetmover-repackage-oc-linux64-nightly/opt: BT3ptDLBTqS3f2GgcUFVmw
+ beetmover-repackage-oc-macosx64-nightly/opt: fpcP_UmdTV6OJ0fYtJcGvw
+ beetmover-repackage-oc-win32-nightly/opt: DfWTHOJmQjuijQInA76yhA
+ beetmover-repackage-oc-win64-nightly/opt: QJQzmGmcQ0qFouK3_v4m6A
+ beetmover-repackage-or-linux-nightly/opt: bzheFQObShur7JW7gpXReg
+ beetmover-repackage-or-linux64-nightly/opt: MWHd3t9VSG2NMy91l3KCfA
+ beetmover-repackage-or-macosx64-nightly/opt: MPhSRqRNTA6RadJF--th4Q
+ beetmover-repackage-or-win32-nightly/opt: VeDho8ZuTuSBoPW_-fZ7wg
+ beetmover-repackage-or-win64-nightly/opt: Kvn_zQQQTvywHsI-aB5WGA
+ beetmover-repackage-pa-IN-linux-nightly/opt: MrNrjnScT6C19lBy0Ebsxw
+ beetmover-repackage-pa-IN-linux64-nightly/opt: JQE_ESNmRxC-lKOCHFxlkw
+ beetmover-repackage-pa-IN-macosx64-nightly/opt: E1mexvZiQpKjCun-EwSk2w
+ beetmover-repackage-pa-IN-win32-nightly/opt: ECG4GAG1Ryy_A-Gi5ISBRQ
+ beetmover-repackage-pa-IN-win64-nightly/opt: eJ-9-rkASzW84M0awiYm5Q
+ beetmover-repackage-pl-linux-nightly/opt: dOa0gX5iRna4zPc9JwAW_A
+ beetmover-repackage-pl-linux64-nightly/opt: RJqn-XGJTGm3LwxFQva-0g
+ beetmover-repackage-pl-macosx64-nightly/opt: TZNAPhCgTJuDzapWg4SUwQ
+ beetmover-repackage-pl-win32-nightly/opt: Q-VaPgObSJeTGAdOtVvzMQ
+ beetmover-repackage-pl-win64-nightly/opt: MJaui02-QROqbDue5_XTeQ
+ beetmover-repackage-pt-BR-linux-nightly/opt: cGzoBII-QoCyAWEkagMRpg
+ beetmover-repackage-pt-BR-linux64-nightly/opt: aPy4ojGqRqiP9qZfYA6r2Q
+ beetmover-repackage-pt-BR-macosx64-nightly/opt: YampoF2XTx2KixbCZxb2Dg
+ beetmover-repackage-pt-BR-win32-nightly/opt: Zz2mUu8pTg2Ho82Z6AH0iQ
+ beetmover-repackage-pt-BR-win64-nightly/opt: Z0xSecrRSr22LjJUWwilqw
+ beetmover-repackage-pt-PT-linux-nightly/opt: O1dPSI3DR8SQQsiuhMKxeQ
+ beetmover-repackage-pt-PT-linux64-nightly/opt: cteaZ5-vT5KXsWnILhoTIg
+ beetmover-repackage-pt-PT-macosx64-nightly/opt: fp-MCOCGRJeDYl_LGy46Mg
+ beetmover-repackage-pt-PT-win32-nightly/opt: B0nxsE2pSIOljA2ceB_Q3w
+ beetmover-repackage-pt-PT-win64-nightly/opt: GZk8aRtNTBSWAOP-7umQKQ
+ beetmover-repackage-rm-linux-nightly/opt: c3X7HBUjRiu2i2HBIAS4rA
+ beetmover-repackage-rm-linux64-nightly/opt: BAK_1kX2SauObBedx2fcxQ
+ beetmover-repackage-rm-macosx64-nightly/opt: JYaC9qZPSriUQDfsvzZaRA
+ beetmover-repackage-rm-win32-nightly/opt: WqXpIvKtTp6694RqlcobwA
+ beetmover-repackage-rm-win64-nightly/opt: ZIRmf10GQ0OKbKM3pkscAg
+ beetmover-repackage-ro-linux-nightly/opt: YCI9zXqaQwiHVYQ1bJDJRw
+ beetmover-repackage-ro-linux64-nightly/opt: MuOKoCEuSBCO_ZU59Jc_WA
+ beetmover-repackage-ro-macosx64-nightly/opt: HEBygsKlSFeghU_kcJ94Zw
+ beetmover-repackage-ro-win32-nightly/opt: VG0cb04FQwCH3jNw2hsdJg
+ beetmover-repackage-ro-win64-nightly/opt: IHaxxt69S62poikbx_zWLQ
+ beetmover-repackage-ru-linux-nightly/opt: T5s1hFWAQPajvGXOKzY3ZA
+ beetmover-repackage-ru-linux64-nightly/opt: FyzvGw8aSu-tixhYBHdcOw
+ beetmover-repackage-ru-macosx64-nightly/opt: PN0CpjZ3R1mCLT831Ey1IQ
+ beetmover-repackage-ru-win32-nightly/opt: fPAComkYTiCdLNMbJk4Uzg
+ beetmover-repackage-ru-win64-nightly/opt: P5Zn27QcQ1K2-FD19VxGkQ
+ beetmover-repackage-si-linux-nightly/opt: bT8zRu7RS2ugks47cgInYQ
+ beetmover-repackage-si-linux64-nightly/opt: I-gcz9cTRdukvuXLnfkiTA
+ beetmover-repackage-si-macosx64-nightly/opt: XkChb3EuQUWpwpUTsn4htA
+ beetmover-repackage-si-win32-nightly/opt: CZmRbZ25TDOrH5s0i8YR6Q
+ beetmover-repackage-si-win64-nightly/opt: fdDzyhQdSH6dlTZlwwunCQ
+ beetmover-repackage-sk-linux-nightly/opt: GI1Au7JqSnS3OW8QdY873w
+ beetmover-repackage-sk-linux64-nightly/opt: YNEPHOttS-agBy1BJ31R1g
+ beetmover-repackage-sk-macosx64-nightly/opt: O7wSRTChSCGknGZW3tpi_w
+ beetmover-repackage-sk-win32-nightly/opt: VsqAcp2XRKiM0C7dtIN1wA
+ beetmover-repackage-sk-win64-nightly/opt: WWHe3zPBQ3u4H6gzdauB_w
+ beetmover-repackage-sl-linux-nightly/opt: KqDt7iGXSyqdn0mT6xU7bg
+ beetmover-repackage-sl-linux64-nightly/opt: fCS_TYl9SfOPR7KpgDKMJw
+ beetmover-repackage-sl-macosx64-nightly/opt: PbNO0hmiTs2EvToUEJdzyA
+ beetmover-repackage-sl-win32-nightly/opt: RAOMzvmYQ_i0E5X2MQS-Ag
+ beetmover-repackage-sl-win64-nightly/opt: JV5LtWGrQ9KI5fLSNr7gJQ
+ beetmover-repackage-son-linux-nightly/opt: JiVT_KV9SIC18gQWDr4CbQ
+ beetmover-repackage-son-linux64-nightly/opt: eNANePuKQ9GIrA38O9zZjA
+ beetmover-repackage-son-macosx64-nightly/opt: Z9rk9DKGTtG42rWzneBXvA
+ beetmover-repackage-son-win32-nightly/opt: F4AmQPKsQgehWxYuhjrhsA
+ beetmover-repackage-son-win64-nightly/opt: fY-VdpbsSayXSw8wxHkO4A
+ beetmover-repackage-sq-linux-nightly/opt: PX_81qu5SZ-mFmGHxRMPgg
+ beetmover-repackage-sq-linux64-nightly/opt: FZi7ipQ-TLqQ1utsG5mNKg
+ beetmover-repackage-sq-macosx64-nightly/opt: BcAVDoD4TduHVbEBh9YhWg
+ beetmover-repackage-sq-win32-nightly/opt: PjFeLVezS92ws2YA5shHBw
+ beetmover-repackage-sq-win64-nightly/opt: Fe0V0HPVQ4izzaWEVweR9Q
+ beetmover-repackage-sr-linux-nightly/opt: fz9CiU7GTvyVpsejimbeUQ
+ beetmover-repackage-sr-linux64-nightly/opt: H05nVlkaTjC5vHdoB68M2w
+ beetmover-repackage-sr-macosx64-nightly/opt: UNidIAwNRZiNrp0SNQo0rA
+ beetmover-repackage-sr-win32-nightly/opt: WUnQGWCvT6KEVAsOwo5POQ
+ beetmover-repackage-sr-win64-nightly/opt: Df3UUu4BTI6UHpui7Gtb2A
+ beetmover-repackage-sv-SE-linux-nightly/opt: QngZEldsTPeQG8g8boia3g
+ beetmover-repackage-sv-SE-linux64-nightly/opt: QxWxmChURIeXMlJmOccU6w
+ beetmover-repackage-sv-SE-macosx64-nightly/opt: WLw-TkLkQnqmciPsgStthQ
+ beetmover-repackage-sv-SE-win32-nightly/opt: DDh9T8ntTRmWyETCtlTTQA
+ beetmover-repackage-sv-SE-win64-nightly/opt: UEfsXAOxQOKnT7tKE_xl6g
+ beetmover-repackage-ta-linux-nightly/opt: D6UE8DTZS8amLKtkj2m7_A
+ beetmover-repackage-ta-linux64-nightly/opt: XWiwh1FaSlKOm1QYrLrl7Q
+ beetmover-repackage-ta-macosx64-nightly/opt: TAh4ZYhzTKGLR7JYCA90PQ
+ beetmover-repackage-ta-win32-nightly/opt: b9Xx7o9fSd21MLJGQgjwwg
+ beetmover-repackage-ta-win64-nightly/opt: dfiHqcJFSnaZANv3vpg4EA
+ beetmover-repackage-te-linux-nightly/opt: NHwcQ26KSmirnnlqDH9kiw
+ beetmover-repackage-te-linux64-nightly/opt: WqtlenMJShqHtQW3swGjyg
+ beetmover-repackage-te-macosx64-nightly/opt: fUb8Iu1TRzSNoSin0OkWdQ
+ beetmover-repackage-te-win32-nightly/opt: Rlhj7gNcRUqgFixrksvC6Q
+ beetmover-repackage-te-win64-nightly/opt: YkZMT5SHQ1-nC7c1FHQyDg
+ beetmover-repackage-th-linux-nightly/opt: Tdqaq0eWTyOUENkal7qfdg
+ beetmover-repackage-th-linux64-nightly/opt: EQNZoYRGSI-VcygKNlxnTA
+ beetmover-repackage-th-macosx64-nightly/opt: BZFqbV8rQzGhTHtTfpWCIg
+ beetmover-repackage-th-win32-nightly/opt: ZKLsYmGuRmCxE-CUEOjZcQ
+ beetmover-repackage-th-win64-nightly/opt: PVNnBNfqReyQcmksZeWo2g
+ beetmover-repackage-tr-linux-nightly/opt: dnSUfpZ1R9qy5J-LsJbKFg
+ beetmover-repackage-tr-linux64-nightly/opt: bGl7OUUhT_aB2HxqXFoxqg
+ beetmover-repackage-tr-macosx64-nightly/opt: cxBleeNVSQ-tXusDoYwwsw
+ beetmover-repackage-tr-win32-nightly/opt: HDILTRFQTNC96YflOaMKIw
+ beetmover-repackage-tr-win64-nightly/opt: P-AjUy0oR2ipFRIgBbiB3A
+ beetmover-repackage-uk-linux-nightly/opt: XLKOnuQgT268M7O41MLa6Q
+ beetmover-repackage-uk-linux64-nightly/opt: Y-iTrDx8TqK2M5W4YXyoeg
+ beetmover-repackage-uk-macosx64-nightly/opt: EVMMuGG_R6eyaLawETsvkw
+ beetmover-repackage-uk-win32-nightly/opt: ea-FlI9qReq5ONL-yXSVkg
+ beetmover-repackage-uk-win64-nightly/opt: ZZMEgWKrSzq9qvjL_3ahfA
+ beetmover-repackage-ur-linux-nightly/opt: T3IQwb3wRzC9U6jI-Fj5Vg
+ beetmover-repackage-ur-linux64-nightly/opt: W8GWNO5HQYu1ReCy8gkxBQ
+ beetmover-repackage-ur-macosx64-nightly/opt: Ks9jDBFMTkSBE1RMvCOwzA
+ beetmover-repackage-ur-win32-nightly/opt: G8aCz8_RQS2Y64T2XtdaXA
+ beetmover-repackage-ur-win64-nightly/opt: W1B8gk3YQNW9cxK2px9t9A
+ beetmover-repackage-uz-linux-nightly/opt: YUJ__9UwRYSwKdrEpRDZ1A
+ beetmover-repackage-uz-linux64-nightly/opt: N9zg7Y2IQRS49mZDi5Eamw
+ beetmover-repackage-uz-macosx64-nightly/opt: HMNr8ur1S1emIM7cScrYjg
+ beetmover-repackage-uz-win32-nightly/opt: ACF1YV4rSN-l9Atjc-nNeA
+ beetmover-repackage-uz-win64-nightly/opt: Q08EpvoFRl2tQYmvF9OQGA
+ beetmover-repackage-vi-linux-nightly/opt: cX7xvX22TWm58zfXhmYivQ
+ beetmover-repackage-vi-linux64-nightly/opt: PpZg1ymzRxqrOme6Z1qlAQ
+ beetmover-repackage-vi-macosx64-nightly/opt: S1OqWMsnQO6DTt06zQHUTQ
+ beetmover-repackage-vi-win32-nightly/opt: F6pb2od6TwCTipWcJqj1ag
+ beetmover-repackage-vi-win64-nightly/opt: Mp7XvJD0TROqGDkD4Ab6ug
+ beetmover-repackage-win32-nightly/opt: fgJmEzGmRXKAkCdIn8nnMg
+ beetmover-repackage-win64-nightly/opt: F0WbwTyqTRiNlVGzgFwfQQ
+ beetmover-repackage-xh-linux-nightly/opt: epHgRVelQNK5bBGePnWWeQ
+ beetmover-repackage-xh-linux64-nightly/opt: Oi2h8B0GRH2wX8mwyxtg3Q
+ beetmover-repackage-xh-macosx64-nightly/opt: R-hh5SRJT3q_kiJNbvbBbQ
+ beetmover-repackage-xh-win32-nightly/opt: J3tN1CUQQYGUdQn9L9Bjsg
+ beetmover-repackage-xh-win64-nightly/opt: bP6vG5pVTKmfJdLVrfKfMQ
+ beetmover-repackage-zh-CN-linux-nightly/opt: QTkW1NfEQo2q0z5l3DSOOQ
+ beetmover-repackage-zh-CN-linux64-nightly/opt: IKFKel8jR9CuJoGuYw2W8Q
+ beetmover-repackage-zh-CN-macosx64-nightly/opt: WJfz9N5KSMiH4KjTsz29AA
+ beetmover-repackage-zh-CN-win32-nightly/opt: HKcwO6c6T6qedymgg71ECw
+ beetmover-repackage-zh-CN-win64-nightly/opt: dQYD8vxiSFSId2lPZNRCsQ
+ beetmover-repackage-zh-TW-linux-nightly/opt: XwAWrAFGQOKVsGHWRx7WHA
+ beetmover-repackage-zh-TW-linux64-nightly/opt: CQSQu06WTZ-cbJwQpIRSPQ
+ beetmover-repackage-zh-TW-macosx64-nightly/opt: UzH7TVTVQvOLxmJBkcVk1A
+ beetmover-repackage-zh-TW-win32-nightly/opt: XsFDo3ZKQ4Sg5O50DrrKVw
+ beetmover-repackage-zh-TW-win64-nightly/opt: QXd0FyDPQTSbmSww111liQ
+ beetmover-signed-langpacks-build-linux-nightly/opt: ToqKjwXvR9aRyjtap_-ADQ
+ beetmover-signed-langpacks-build-linux64-nightly/opt: NusBVJ5zQyuXLaUa2NvE1Q
+ beetmover-signed-langpacks-build-macosx64-nightly/opt: NwWDXJhlQDSvRDs35VY9Eg
+ beetmover-signed-langpacks-build-win32-nightly/opt: WPFILzZqR7GfmFyUkHx7jw
+ beetmover-signed-langpacks-build-win64-nightly/opt: PUc0gQPmROW2mFSuu5BX4A
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-1/opt: HgNXpPwzRs-Op9MdkDd_CQ
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-10/opt: L9tno3VuThO2-4_wsP2xEQ
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-11/opt: WxTF0LoyQZWnm6fTda3vvQ
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-12/opt: Nsy-ad-9QR65Ewpx1DZTkw
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-13/opt: BT7EPC9sTfmHtv0m_T8g_w
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-14/opt: aRAkaNV0SPGovE_oIsQZ7Q
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-15/opt: DEUFxH4rRmKlZLmBtJq7Pg
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-16/opt: IsK0yFVnTCG8_V_ENsOsiA
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-17/opt: U63ff7qjTdmVcjtd1JURRQ
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-18/opt: Ynp8LxFrRUarb-QwkJDDyg
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-19/opt: ThBZAcQJRBmY6EkCaxyhMQ
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-2/opt: NTLUB3wTRPq9hlFvcgYk3w
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-20/opt: QJT3mZuFQZiAaLW9WbYflw
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-3/opt: Z04WT45_QO2x0kV7wnCNiw
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-4/opt: I787Fc0yTB-ksr0WvntCGw
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-5/opt: YADlgGJnTriFd7m08kygbw
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-6/opt: JoMTRva9T2uXAB3Mfkh7oQ
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-7/opt: YfiT4rKPSUyRZf5zmcDLvA
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-8/opt: eZvDWMGYQ3WI2D3Ef9oQWA
+ beetmover-signed-langpacks-nightly-l10n-linux-nightly-9/opt: VSG0a7ySSamfjXjUcaPR5g
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-1/opt: azk36HraTXCUVYJ7oku2Yg
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-10/opt: CqI2on3tRUi-doKi5iEaug
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-11/opt: QF7Z3TXHQly7Ihg9jlaqpA
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-12/opt: dhkf1shbSK2JF0MUIHUjEg
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-13/opt: fwNm1xDkRC66yOWLgyNoXw
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-14/opt: WkUWjCy1QBCt0OKdo1fPyQ
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-15/opt: IsyMp_JVT3esfP5yhk7pog
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-16/opt: Kz0WaP_2SvSOYg79Hd3k3A
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-17/opt: N46xAPtrQtGsRgQJLFD4YA
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-18/opt: SRt3pXcXTO6ouhgroL7gZA
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-19/opt: JPPxzh2GQ16fV1gDCwf-aQ
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-2/opt: MlcWxuzsSJODuiqWHwr70A
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-20/opt: JEeRKmspSf6O2sgX_LdOEA
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-3/opt: Pt7DzxvASOGXr8jHhwkgrQ
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-4/opt: VI8-3J09TBO3aeIMe7nxOA
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-5/opt: B3gytGZiTzmtRxonLMgNgA
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-6/opt: Oqq_rW8cSwWuzRV7gE-rOw
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-7/opt: ToBaS7-uR_KRS8rNkRjm5g
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-8/opt: cTW7WGt3QIetIKFSO4ml7w
+ beetmover-signed-langpacks-nightly-l10n-linux64-nightly-9/opt: dIPOCZRYSmioKQwo0olwyQ
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-1/opt: GSu3v6w3Q6iveDrHJU-j-g
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-10/opt: W57uvEYJR_6M2kTqWNiOMQ
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-11/opt: PpXoqzWnRsaWpoXRzX0tXQ
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-12/opt: PeUzRTwwQuylPRMD3RuZ1g
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-13/opt: JbAlC6wQR2K1PG6XMhWRdQ
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-14/opt: LK3GmKsXSUSGF6x3nIdgKw
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-15/opt: YeZPKM1ORKWUgt2wJ_N0GA
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-16/opt: EXQeUHUoSs2RcIoXvPGo5Q
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-17/opt: GGnuZOA8S1abhtZ21ole6w
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-18/opt: SB7f5glwQIqMXaF9x9h9ew
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-19/opt: Zj3_K_fJQXexfJS-cM4MYA
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-2/opt: BOOj0fujTSu_FKXQEbf1iw
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-20/opt: JpdZlli8TjKeEPUdj8xn8w
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-3/opt: C6XTrpsiT7W7sBMCpaFF3A
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-4/opt: Ix7RDCzyTzqyHFmOuYzuHg
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-5/opt: GUaxD_BGQ-2Zc_YqDEhnNQ
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-6/opt: Xm8SjqipRmmIQKv_DMPSoA
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-7/opt: K9JnK5wOSKa_W85AOBijtA
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-8/opt: XLI4UNESRMWHbPGWq38_NA
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-9/opt: PIYfG1KxTW23_j42yIuN8g
+ beetmover-signed-langpacks-nightly-l10n-macosx64-nightly-ja-JP-mac/opt: d4NGW3L8SFSCBncLKDyzmw
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-1/opt: Wr7v4JPrSyaSXCJyHq1LOQ
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-10/opt: LGPu7NFnSui0-NfUb0_jlQ
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-11/opt: DYA23ClHRRmghnDNPzxySA
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-12/opt: GAz96NF6R_qMK50jBkq6-A
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-13/opt: Hsl-rZWoTHiqNLDISXh6Cw
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-14/opt: MSQ4SsDNRIaPn0jnbePNBA
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-15/opt: JAP2mI6YQ9ua1BoLaCiZGQ
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-16/opt: ARw-7OsYQU6TIkKkBaTvzA
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-17/opt: SVcVbiEcQhCJ0QWo_WqiCA
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-18/opt: Ydu7XqYJQKON-IlTCNwLow
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-19/opt: Kzl6iGdoTGmk30bG22vS9g
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-2/opt: Yvb2mAFUSZqzcoQ9noXoGg
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-20/opt: CgASdaSvRQqs7vXwS_LXyg
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-3/opt: CNNN9qIGRw-fF7TvGDJTzA
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-4/opt: Ss6VQfFvS-qv4m5kytFPxw
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-5/opt: YoCdVAGWR56di23avu1Ndg
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-6/opt: fhkSLu3bSzW8Ij1CIQw98g
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-7/opt: ItsKtytQS3WDKzGcIuwBeg
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-8/opt: ehgneIt6RxyAhTy6-LZzwA
+ beetmover-signed-langpacks-nightly-l10n-win32-nightly-9/opt: Y0thOUuWRTCtg6I5zIVMNg
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-1/opt: HfWgTl5gSlyHCAAUE3tYQw
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-10/opt: VgrZcxVnTCmzboAk67Z0kA
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-11/opt: dJYtaTvtS2mDKXBV5IFY4w
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-12/opt: LxPTERvkR0aSY_fBHMoy8Q
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-13/opt: eJwEu0oTSQupUADVlT8xJg
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-14/opt: PF708LP0Q3KRdzOeI8g89A
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-15/opt: LIpBTIW3S3OLT_8WBLsZ7w
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-16/opt: WntNamkYTumijV4iw8gNng
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-17/opt: GnB8SejySNyKC-2q154CSA
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-18/opt: D5EXh-HYRZqis0WY5cBAlw
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-19/opt: ADHRBTyBTfSWNh9ehW1lOg
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-2/opt: NA8XaTL2Tcex1cnZftIfBA
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-20/opt: THGt7LOzRiqj_uuxiG2R0A
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-3/opt: MM4r3QXlSMGc6sjsQu769Q
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-4/opt: Xl8xKPaxQEOfbctl_L24EQ
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-5/opt: XilE8MATT_uQmWzQRNn07Q
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-6/opt: FEMDxp0aQSe7xR08bFNh2w
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-7/opt: IWpg_5u8TEynsl0YcuKXkw
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-8/opt: XhqMvZAFQfOk6c-y3ZOc9w
+ beetmover-signed-langpacks-nightly-l10n-win64-nightly-9/opt: aRD-JqixRnumrtxxx0NVMg
+ beetmover-source-firefox-source/opt: TY6KaixBSiiPL1NWm5eu_w
+ build-android-aarch64/opt: fogDjYSnQFyi9I7OrEUfsg
+ build-android-api-16/debug: QMypHF7cShukITJE_1x2aQ
+ build-android-api-16/opt: A_rSgxP7R_qUBjAjt_O4Og
+ build-android-x86-fuzzing/debug: S6B8vrssRoCvnxIKv87nuw
+ build-android-x86/opt: WiY6-CCWRPC0nHwAFK-SYA
+ build-docker-image-android-build: C1xKlL7LR8qUyXuv9FURaQ
+ build-docker-image-debian7-amd64-build: BktGV7LETO2actnAf9J1eA
+ build-docker-image-debian7-base: SL3YzcJLSUmyDUFjQcyTgA
+ build-docker-image-debian7-i386-build: LN3dF9UySoqv1WLAOSipwg
+ build-docker-image-debian7-mozjs-rust-build: LFSZvO4VRIC2mNkzl15ldg
+ build-docker-image-debian9-base: ZP7UvTh0TuaFVi17NbD3dQ
+ build-docker-image-desktop1604-test: CM-YiLLeSK-51h4UAhOY1g
+ build-docker-image-diffoscope: YWcFmqj6SdaerKpnBRYFPQ
+ build-docker-image-fetch: JB9tPBcBRvSWJkNfnuZatQ
+ build-docker-image-firefox-snap: T5wJ7hxrSRKLKnMEyv40nQ
+ build-docker-image-funsize-update-generator: OOEibPI8T_qjq0g1IcqleA
+ build-docker-image-google-play-strings: RPfWLNmRRaGCJOq132wv8w
+ build-docker-image-image_builder: GGZQxjGMQ76boJd4C8E6cw
+ build-docker-image-index-task: DoElvaMqRIO2TpjbV8QBJg
+ build-docker-image-infer-build: B_uWwDCESQWnHDDHjZA_lg
+ build-docker-image-lint: XGNAECEES72AEPxwbO4jKw
+ build-docker-image-mingw32-build: B6SGsr0uQ_OqF3SesxF2Cg
+ build-docker-image-partner-repack: RPU00aTdQaiLOjmw7izftQ
+ build-docker-image-periodic-updates: WkRRBVweTKuQNkWcjeMLJw
+ build-docker-image-pipfile-updates: KoFd2TnRTbafh1AeJAwHZQ
+ build-docker-image-toolchain-build: UVI9gB2fTSOAbySPwvdr-Q
+ build-docker-image-update-verify: CMbXFR28R8SSwDl0GY6NTw
+ build-docker-image-valgrind-build: VU8KwwjGTQGXGMD4ze6j5Q
+ build-linux-devedition-nightly/opt: Yq1JphpyReeSM9EL68GAMw
+ build-linux-devedition-nightly/opt-upload-symbols: cvaWoW0TQO2g17E0CrwWNQ
+ build-linux-nightly/opt: RDIH_DoRR0SI19OHpYpr9w
+ build-linux-nightly/opt-upload-symbols: fXt-jQ1FQ6qerPOValkclQ
+ build-linux/debug: LhIiq80ZSRyJh5nWgkakaA
+ build-linux/opt: MlJof0yJSViJc5WPOQ_Kzw
+ build-linux64-add-on-devel/opt: cNj-u2qSScydVqQcHxpkbw
+ build-linux64-asan-fuzzing/opt: Yiddv4h-RfelllhIyBVACw
+ build-linux64-asan/debug: DuIstl95SDmXI1hpS4PEFA
+ build-linux64-asan/opt: dDp65nmkTZeZ_JVz6br4OA
+ build-linux64-base-toolchains/debug: Y-OBQKLeR0iy4nRrpUd86w
+ build-linux64-base-toolchains/opt: dabFHxrxQDWPxbRmsibZYw
+ build-linux64-devedition-nightly/opt: Ch7R28xCTtiVD2bNb_Uqhg
+ build-linux64-devedition-nightly/opt-upload-symbols: MrbGhgatTI2ixDQGv_Sk8w
+ build-linux64-fuzzing/debug: B3GBuCV7RWOEzQBGBrb4Jw
+ build-linux64-lto/debug: TyFCAH4TS26bxWgwKQAppg
+ build-linux64-lto/opt: Bn1PTtX9T2KgnjjQCCXtOw
+ build-linux64-nightly/opt: bnKwzqskQqm6ZZCXBdwhkg
+ build-linux64-nightly/opt-upload-symbols: QQs2rb5hQFO-kWTa0Qck4w
+ build-linux64-tup/opt: X7itdf16RZaaYJri6Vi3GA
+ build-linux64/debug: CkbmJ_AaT9-N4npxhcDxEQ
+ build-linux64/opt: LfSB5XZwTAyQ0xlOEpanjw
+ build-macosx64-add-on-devel/opt: XVzjO6u2T7CNZfkv7McHTA
+ build-macosx64-asan-fuzzing/opt: N13R5e0rTUuK26Bv-Y0_WA
+ build-macosx64-devedition-nightly/opt: TmSYLLDqSgmDmWwJz0Q32A
+ build-macosx64-devedition-nightly/opt-upload-symbols: b8xft-h9Tl-9BstKJfLHtQ
+ build-macosx64-nightly/opt: H3lphBDASBu7DfUL7q6nIA
+ build-macosx64-nightly/opt-upload-symbols: d_g9WcFnQV-U_QkNgcjCWA
+ build-macosx64/debug: CibCdzr9QLODly5buEeBvw
+ build-macosx64/opt: QdnI0m8OT0O6RYCr5pQzQg
+ build-signing-linux-devedition-nightly/opt: IDXgzz1YQjqIOUi58fSAXA
+ build-signing-linux-nightly/opt: d6zCQKqYQuGc-NPUfv07cw
+ build-signing-linux/opt: ItpjcNpNSd6bixDEx9C7iw
+ build-signing-linux64-devedition-nightly/opt: YLD4T7GPQ9CSXYpgIZNMdg
+ build-signing-linux64-nightly/opt: XsgCutIJT-m7pInRRvjEng
+ build-signing-linux64/opt: MkUAHEf2TvC9sAQCc85qOQ
+ build-signing-macosx64-devedition-nightly/opt: c48Z1W6SSWej6GKi9y1ulg
+ build-signing-macosx64-nightly/opt: B5ih0IxHQSmNxYFtmRsdZA
+ build-signing-macosx64/opt: KTXMo0baSTajy2uH5I4jeA
+ build-signing-win32-devedition-nightly/opt: YnNsokAcR_-mO9EmSogPAw
+ build-signing-win32-nightly/opt: ZmNlSNCZRCK4USJrdgafYA
+ build-signing-win32/debug: JTB77Z-bTtOFV61D1lj04w
+ build-signing-win32/opt: YeFIGUFzT6qSNHG-MYvcTA
+ build-signing-win64-devedition-nightly/opt: AvJjBhCdSTSpsAhWkZ87OA
+ build-signing-win64-nightly/opt: TM5IXIYEQu67IkiPxjT6rQ
+ build-signing-win64/debug: BQjcIVaUQZWRy4JtxmGa8Q
+ build-signing-win64/opt: fT2vRUXgQoqi0to7OhnyCA
+ build-win32-add-on-devel/opt: BncaAWYtQB6Uv8EUuRIiig
+ build-win32-devedition-nightly/opt: fdpUyZNPSeORyYbagJzruw
+ build-win32-devedition-nightly/opt-upload-symbols: MsKyU4K_T7mrBAhVyH2gqQ
+ build-win32-msvc/opt: YTA1D7lQSC-dyJkOvFcUgQ
+ build-win32-nightly/opt: TsJE0biiSeesrZPT9XfxKA
+ build-win32-nightly/opt-upload-symbols: fWhpZoSrQJ6THcT6AgUziw
+ build-win32/debug: a6WMW7xXRyqSvD_q0OStEQ
+ build-win32/opt: YKC_SzyIQy2y83trQ49WQg
+ build-win64-add-on-devel/opt: QGBVLG4XR52vzov-ijV1Dw
+ build-win64-devedition-nightly/opt: RMjxYqpXSsycGMXaTiAu5g
+ build-win64-devedition-nightly/opt-upload-symbols: EkOTxZ8UTyWX7IZJOFGHpA
+ build-win64-msvc/opt: dEwfuZ3LQCeLFxDm8Urtzg
+ build-win64-nightly/opt: Pq8op_xeQGeJjVEc7fgniA
+ build-win64-nightly/opt-upload-symbols: ZRlLB6KhQRmDqR9skFqatQ
+ build-win64/debug: EDHK4shfRKyhAv5cIZihew
+ build-win64/opt: ZVu7UgN0TD65Ds61R0Fcdw
+ checksums-signing-ach-linux-nightly/opt: HKNStYLrSrKG7DAJykDmrg
+ checksums-signing-ach-linux64-nightly/opt: RtAQh6bWR3q3c1pFqrnWtg
+ checksums-signing-ach-macosx64-nightly/opt: NbFo7NSTTE-oDWhBR5QKtw
+ checksums-signing-ach-win32-nightly/opt: WF4LBNq8QOqjVcrOHkl3Dg
+ checksums-signing-ach-win64-nightly/opt: JoP9tg19QqWa1K_ElhLazQ
+ checksums-signing-af-linux-nightly/opt: eq72aFWlT0mp1TAoUgfhcQ
+ checksums-signing-af-linux64-nightly/opt: A3okjsdmRT6_OZhI5vg9Cg
+ checksums-signing-af-macosx64-nightly/opt: DUQBiRUDRQuIhPM_YxQ0aQ
+ checksums-signing-af-win32-nightly/opt: COPyyFCcSYWmCuuHFMksGw
+ checksums-signing-af-win64-nightly/opt: JKkvpoXwSyu6TvhIn1zUng
+ checksums-signing-an-linux-nightly/opt: KtIkudidTBarJzjhwMPwdw
+ checksums-signing-an-linux64-nightly/opt: IOgIAuPiQPWiF2ET2JFk3w
+ checksums-signing-an-macosx64-nightly/opt: EVVOR45rS2Sj2Aj-SQ0v5w
+ checksums-signing-an-win32-nightly/opt: eXv-TvgTR9KzIkLrd9sPeA
+ checksums-signing-an-win64-nightly/opt: ImXcLJIcRxWa6wM6eyFGxg
+ checksums-signing-ar-linux-nightly/opt: W5lR6DHySHyo5IdpBDyu7g
+ checksums-signing-ar-linux64-nightly/opt: TSuHgBl1Qz682yJL5gNHwg
+ checksums-signing-ar-macosx64-nightly/opt: cqnFA8BISJ-u8sQhR-EruQ
+ checksums-signing-ar-win32-nightly/opt: AvLxmxpSToOvWBfhuHxdlQ
+ checksums-signing-ar-win64-nightly/opt: WIlIxVHvSmCSTiLHouts4w
+ checksums-signing-as-linux-nightly/opt: QQtpBg_lTiSNu9xzZtZhcg
+ checksums-signing-as-linux64-nightly/opt: eEdTGktgSOSUoFSvE-M91A
+ checksums-signing-as-macosx64-nightly/opt: awn8_8MaQ9OuDhJNLDa9Xw
+ checksums-signing-as-win32-nightly/opt: YNC4gixaRBeQ5tW863M8oQ
+ checksums-signing-as-win64-nightly/opt: c1_jdf3LQSqQZX6vGQmnvw
+ checksums-signing-ast-linux-nightly/opt: VVPUzyYcQJiUTVLaZCMU1A
+ checksums-signing-ast-linux64-nightly/opt: UD8GTBQBTaWlZNCk4T-dYg
+ checksums-signing-ast-macosx64-nightly/opt: Vc4WzS7HT_6mUs-Inei_qQ
+ checksums-signing-ast-win32-nightly/opt: AKBxeqaUT1-SGTkztHG8FA
+ checksums-signing-ast-win64-nightly/opt: NRm2m2csRoKwdw-dDfPncQ
+ checksums-signing-az-linux-nightly/opt: Q91tq4ZNRWK-xpe7g5F59Q
+ checksums-signing-az-linux64-nightly/opt: XKh60ZcgQ_ySMUxe91Xywg
+ checksums-signing-az-macosx64-nightly/opt: CiwBakUUS2G6WCYN41DEAg
+ checksums-signing-az-win32-nightly/opt: Zvum4MzBT6K_ujzVOayV4w
+ checksums-signing-az-win64-nightly/opt: EXBs7P_XT5-A6m9O0ql_Lg
+ checksums-signing-be-linux-nightly/opt: ScPWb4eFQ5mV5KHTnDp1Ng
+ checksums-signing-be-linux64-nightly/opt: WrW72HpDQJSnAEqgQeNing
+ checksums-signing-be-macosx64-nightly/opt: Uusr2ioMT769xssJUMyo3w
+ checksums-signing-be-win32-nightly/opt: TgMkgTOkRcig2ZKxHBxJzQ
+ checksums-signing-be-win64-nightly/opt: CE33GDsYSLWS3BUiLC0LlQ
+ checksums-signing-bg-linux-nightly/opt: T-Z2UgvTTyShrKnXqVegkA
+ checksums-signing-bg-linux64-nightly/opt: efQAKe6WT8OGofjzw88AeQ
+ checksums-signing-bg-macosx64-nightly/opt: OAQlMt2DQFioEdOF5DShpA
+ checksums-signing-bg-win32-nightly/opt: F5Mc9-z1RF-kXtaW8Dm6Ug
+ checksums-signing-bg-win64-nightly/opt: PL3-TOwxTbaycwS_dW6f5Q
+ checksums-signing-bn-BD-linux-nightly/opt: X-VEPeikTI2ZKNiP8YdaUg
+ checksums-signing-bn-BD-linux64-nightly/opt: QKliapu0QXiTVDD4EMQTMQ
+ checksums-signing-bn-BD-macosx64-nightly/opt: Eiej4DSNSGi5OXIA0za-Hg
+ checksums-signing-bn-BD-win32-nightly/opt: N2rkQ8FpQ6-fXj4met76RA
+ checksums-signing-bn-BD-win64-nightly/opt: GIVwA6NhSfyAAwZ4WpRypg
+ checksums-signing-bn-IN-linux-nightly/opt: FcJ78cV-SguIPd7rae_UFg
+ checksums-signing-bn-IN-linux64-nightly/opt: Z7pBsPXARmOMuoHInwg-iQ
+ checksums-signing-bn-IN-macosx64-nightly/opt: QfOwm2UXRLyz9MiKSp399A
+ checksums-signing-bn-IN-win32-nightly/opt: GHd6r_DHTK6kNzLzxsY79w
+ checksums-signing-bn-IN-win64-nightly/opt: e3ajCwA1S2mpMYkDf5ivPA
+ checksums-signing-br-linux-nightly/opt: RLrWz8yuTCGQQYRNfTN-Kw
+ checksums-signing-br-linux64-nightly/opt: DJPSuB_ISSaxD-LBobTK7g
+ checksums-signing-br-macosx64-nightly/opt: RJSTVKoORTSOWi0bm_1Azg
+ checksums-signing-br-win32-nightly/opt: R0kT6iOBQ4qmYT09N2vHJA
+ checksums-signing-br-win64-nightly/opt: Vx4R5D7NQZeFF9Hqzko4wQ
+ checksums-signing-bs-linux-nightly/opt: fXY3cYBRQi-_CuQvibxTSQ
+ checksums-signing-bs-linux64-nightly/opt: S6rwDE2cTBqRgkogIaOT2w
+ checksums-signing-bs-macosx64-nightly/opt: MiZpEjWySzCRXABn_WcCxw
+ checksums-signing-bs-win32-nightly/opt: AMb-6EixRku0jB0ya_fO5w
+ checksums-signing-bs-win64-nightly/opt: RRZEJDSaTbmW5HqZqDNing
+ checksums-signing-ca-linux-nightly/opt: ZjMNY6U7TvKMEUsI_OAQcw
+ checksums-signing-ca-linux64-nightly/opt: U5t3NvidQbCpjS_MFrt70Q
+ checksums-signing-ca-macosx64-nightly/opt: GHlm35aKSRqa9PAzmmXjeg
+ checksums-signing-ca-win32-nightly/opt: e_NYwiRkSMKOmP1uCw_FVw
+ checksums-signing-ca-win64-nightly/opt: XaxgjpYqSv6kJYXzrmooTw
+ checksums-signing-cak-linux-nightly/opt: cRzDzoQGRkG5kpHfi7Y9LQ
+ checksums-signing-cak-linux64-nightly/opt: d6jIcAebTRiQLxDa-35UMQ
+ checksums-signing-cak-macosx64-nightly/opt: dHCqQflVQP21hAsDFIt89Q
+ checksums-signing-cak-win32-nightly/opt: Eu7EUDO-R4614fXPyxq_GA
+ checksums-signing-cak-win64-nightly/opt: XJW94ufyRXeZJC4x-ciX3w
+ checksums-signing-cs-linux-nightly/opt: FkROwABnQHuS2Bwop8JwhQ
+ checksums-signing-cs-linux64-nightly/opt: bgO4fCrcTzO2AYrdFUw9FQ
+ checksums-signing-cs-macosx64-nightly/opt: P82rfvHWTN6PGpThNF8GKw
+ checksums-signing-cs-win32-nightly/opt: X_Tg-VwGReejsoal-0kS2w
+ checksums-signing-cs-win64-nightly/opt: Q7HqtOljQcKCLPpCO8iTJA
+ checksums-signing-cy-linux-nightly/opt: VSQE8uV3TGaq0i4uF_JEsw
+ checksums-signing-cy-linux64-nightly/opt: dMt4FG74TrS7hjf9NfK7AA
+ checksums-signing-cy-macosx64-nightly/opt: EeJw6HiVSwy9Cr81-kymwg
+ checksums-signing-cy-win32-nightly/opt: EfqXlJ3HRC6Ybsh61QwqpQ
+ checksums-signing-cy-win64-nightly/opt: Ljm2Bw63QXeae1KlZedHgw
+ checksums-signing-da-linux-nightly/opt: RXRFrvGSSZmiVK0Fg05mWg
+ checksums-signing-da-linux64-nightly/opt: QF0ihb1bTba4Qpfv5r_EiA
+ checksums-signing-da-macosx64-nightly/opt: I1sLL8r3Q_ak4R9geDVWuA
+ checksums-signing-da-win32-nightly/opt: cZ4H4bOWSH-JTpFe_koQQA
+ checksums-signing-da-win64-nightly/opt: W_7x77AtRG-uA9a_WLBx6Q
+ checksums-signing-de-linux-nightly/opt: foK2yPyNQNSt79nY-Hcbrw
+ checksums-signing-de-linux64-nightly/opt: RV1ZSnh1RG2754VSfdqgkQ
+ checksums-signing-de-macosx64-nightly/opt: Jg-2OYNBSX6LXk6rA1Xevw
+ checksums-signing-de-win32-nightly/opt: QG-zwVqDQtyDnUWV-AbIiw
+ checksums-signing-de-win64-nightly/opt: HnRv5rjbQua_NAimpjswZw
+ checksums-signing-dsb-linux-nightly/opt: LEex2aRUQKGQjyD6xCR4-w
+ checksums-signing-dsb-linux64-nightly/opt: BOJu_WJxTeKmnmujvJQ1dg
+ checksums-signing-dsb-macosx64-nightly/opt: CfzEO-T8TRGMP6QCdQu3EA
+ checksums-signing-dsb-win32-nightly/opt: TRrnZh4LRFOSpLHSfahgEQ
+ checksums-signing-dsb-win64-nightly/opt: WEKbazzQRSeuwpIeCJQGrg
+ checksums-signing-el-linux-nightly/opt: M27OL5YbSB-QxYeoh24y0Q
+ checksums-signing-el-linux64-nightly/opt: LDj3tXchQGm7pTgw_V6XrA
+ checksums-signing-el-macosx64-nightly/opt: bBDp0s7zQweE6DIfRC3AsA
+ checksums-signing-el-win32-nightly/opt: ZWNZZoM4QTiaXlwGnXOOKA
+ checksums-signing-el-win64-nightly/opt: GaDb9efbQDG1htYnBu-b8w
+ checksums-signing-en-CA-linux-nightly/opt: JSCGpsFZRt6ytsJqVNW43A
+ checksums-signing-en-CA-linux64-nightly/opt: an3Y4AjVSOGeDdODFZ-POQ
+ checksums-signing-en-CA-macosx64-nightly/opt: Vf1glTFcQfyg3H2bYqfaFg
+ checksums-signing-en-CA-win32-nightly/opt: SpBNmVVYTjS1AcnCiHL98w
+ checksums-signing-en-CA-win64-nightly/opt: IgNNSrWdRsCIb5nbAZI_DA
+ checksums-signing-en-GB-linux-nightly/opt: J0oohZg5QaW2pr7HRwdR1w
+ checksums-signing-en-GB-linux64-nightly/opt: PAH5G6bET7S8fAlGX4AWQg
+ checksums-signing-en-GB-macosx64-nightly/opt: K2TdPlJQTAGQfKzuYKZYpA
+ checksums-signing-en-GB-win32-nightly/opt: H3hsyqm-RqKKPFUWzTQt-A
+ checksums-signing-en-GB-win64-nightly/opt: EjdFYTLiTYqKgdx8vrIXkQ
+ checksums-signing-en-ZA-linux-nightly/opt: E6jdORXhQFSvUvDjgdVYbQ
+ checksums-signing-en-ZA-linux64-nightly/opt: Hh-XFLxyTWa36jLpFUFh7w
+ checksums-signing-en-ZA-macosx64-nightly/opt: DbKdGoE3Tb2K0JZ87xclbQ
+ checksums-signing-en-ZA-win32-nightly/opt: VRSMTafUQUCxVRgZawuKpQ
+ checksums-signing-en-ZA-win64-nightly/opt: d_fYfR_eT--5gLeQr9zCyw
+ checksums-signing-eo-linux-nightly/opt: c10LvwFQRR-lTZ7aSJ0LGg
+ checksums-signing-eo-linux64-nightly/opt: dFBsSWgUQRG1t7aOqUkuCQ
+ checksums-signing-eo-macosx64-nightly/opt: ASMxJqQoQyG8z8J8Is4p-w
+ checksums-signing-eo-win32-nightly/opt: LZSZVsJ1QI--xwufjKTNvw
+ checksums-signing-eo-win64-nightly/opt: GlcfhkFSQ0WorxIqng5CjA
+ checksums-signing-es-AR-linux-nightly/opt: RFHuPGujTfa0Yfermu18rw
+ checksums-signing-es-AR-linux64-nightly/opt: YAf9l8_NRNCpIk0EUQYG2Q
+ checksums-signing-es-AR-macosx64-nightly/opt: OyCUJWeNTC-5wyW-TId1TA
+ checksums-signing-es-AR-win32-nightly/opt: WfR62EDUQxSx-SM_ebMD4w
+ checksums-signing-es-AR-win64-nightly/opt: XKvUwQFbSsywwD0rkIzrJw
+ checksums-signing-es-CL-linux-nightly/opt: Vt7srtVKROOchJ6IcRGXtA
+ checksums-signing-es-CL-linux64-nightly/opt: DQxrnKTfThWI2U2KqZaabA
+ checksums-signing-es-CL-macosx64-nightly/opt: Qa4vJ3VcQuiDVWNCRMeI_Q
+ checksums-signing-es-CL-win32-nightly/opt: Fqdlj67_RzSWPJTqVX0rZA
+ checksums-signing-es-CL-win64-nightly/opt: Tn0ASUCNTQyA3_18Ds-AOg
+ checksums-signing-es-ES-linux-nightly/opt: Ad0dDMr3RQGCMFZz_uREsA
+ checksums-signing-es-ES-linux64-nightly/opt: S-cql5JQQx6J-aC_DuWEqw
+ checksums-signing-es-ES-macosx64-nightly/opt: KLBL_oNZRwyzpp0KsfbiWA
+ checksums-signing-es-ES-win32-nightly/opt: Hyowsj-PTkyeZCntSJDvyw
+ checksums-signing-es-ES-win64-nightly/opt: c7h7eKugR6u9N_qp4ohyiA
+ checksums-signing-es-MX-linux-nightly/opt: Qk2mgwUBSzGBO_D2mWKjSw
+ checksums-signing-es-MX-linux64-nightly/opt: Mqs1AkQiRvW8lUVL9x9RyA
+ checksums-signing-es-MX-macosx64-nightly/opt: Po1rg54ASNmypSBKw6jBhA
+ checksums-signing-es-MX-win32-nightly/opt: ZC3wQumLRjKOwBYgil-Seg
+ checksums-signing-es-MX-win64-nightly/opt: DegMguzVQJKqNSehEom-ZQ
+ checksums-signing-et-linux-nightly/opt: IPpncWOFRCOceH9ggMPnhg
+ checksums-signing-et-linux64-nightly/opt: QhOjcRwDSny3r39dZz8JSw
+ checksums-signing-et-macosx64-nightly/opt: L3kedNJpTiK02PGGAOz7Ng
+ checksums-signing-et-win32-nightly/opt: CyTQCY_lQWOXTFwpVeD7sg
+ checksums-signing-et-win64-nightly/opt: eWJNZfZiSCGwQHMsZg0hkg
+ checksums-signing-eu-linux-nightly/opt: NfhiUBRaT1WKakl5QUTByA
+ checksums-signing-eu-linux64-nightly/opt: PtwtE1z5SuO1VbPn_fB3hQ
+ checksums-signing-eu-macosx64-nightly/opt: Yal6avx4S8mud1X6OFHNSg
+ checksums-signing-eu-win32-nightly/opt: JuPjlt2yQvCoKL4JKaEnkg
+ checksums-signing-eu-win64-nightly/opt: WfOIOTh8TfGvEVhsaRrgPw
+ checksums-signing-fa-linux-nightly/opt: Rsl_R9o_RiWoiafYOHH1UA
+ checksums-signing-fa-linux64-nightly/opt: fvZEpS98RzyqqHbj_tAu1A
+ checksums-signing-fa-macosx64-nightly/opt: NbQDYC91SgS1iNfjLyV5WA
+ checksums-signing-fa-win32-nightly/opt: RhkSL3clQYGffrSqjwff9g
+ checksums-signing-fa-win64-nightly/opt: eOuPZO3lSDyOpT7mQDAe1A
+ checksums-signing-ff-linux-nightly/opt: RHBBQxrYS6ya64I5HMU-Jw
+ checksums-signing-ff-linux64-nightly/opt: LrWWqjBNSxWK7r6ObOyxZQ
+ checksums-signing-ff-macosx64-nightly/opt: JrDGqm_8RpOATDVkk8P1eQ
+ checksums-signing-ff-win32-nightly/opt: JW7BqgBiQguzu1WFDms1tg
+ checksums-signing-ff-win64-nightly/opt: GMiyWWQmSFaEVpStinWtnw
+ checksums-signing-fi-linux-nightly/opt: baabxPAkRn6uMQyS8xDwKg
+ checksums-signing-fi-linux64-nightly/opt: akp5PmrpQdukn0cmIUndqA
+ checksums-signing-fi-macosx64-nightly/opt: cjFwbQRaTBy1p-29H-qqkg
+ checksums-signing-fi-win32-nightly/opt: ahyEujfmQN2TSOsCIiv_Pw
+ checksums-signing-fi-win64-nightly/opt: btO0gMexRJG6LJCwCU9JuA
+ checksums-signing-fr-linux-nightly/opt: B3oD2VqqSCeMX5Y5wiw11g
+ checksums-signing-fr-linux64-nightly/opt: aaNspnKdQ0iIKVSrPsqIZA
+ checksums-signing-fr-macosx64-nightly/opt: O8GTvRpuThyw-dpUas6wVA
+ checksums-signing-fr-win32-nightly/opt: IvrBgZITS16Cu4lC0fZCSw
+ checksums-signing-fr-win64-nightly/opt: eErUM2rVQQKf2qRNKCoe8g
+ checksums-signing-fy-NL-linux-nightly/opt: IETrRjJmR9iF2QFzYZSrAA
+ checksums-signing-fy-NL-linux64-nightly/opt: Qi6GBhnkSkKdKb1n-UA-tg
+ checksums-signing-fy-NL-macosx64-nightly/opt: czrCA3RAQASGsvZ8tsvCNg
+ checksums-signing-fy-NL-win32-nightly/opt: Wg6edmNIRSaqtRLpHNm5Rw
+ checksums-signing-fy-NL-win64-nightly/opt: Qbc9Cmm6TLm4rSC6zStTHw
+ checksums-signing-ga-IE-linux-nightly/opt: YoxjkaWET9mxdpEbzOv3Ug
+ checksums-signing-ga-IE-linux64-nightly/opt: V3XBUwMtTbKHVxnABUER5w
+ checksums-signing-ga-IE-macosx64-nightly/opt: N5n9c8WBRKis42q8E2kdpg
+ checksums-signing-ga-IE-win32-nightly/opt: Uu9RaFBaTD61RbBTKbWsqg
+ checksums-signing-ga-IE-win64-nightly/opt: Uxz7xPSLS_uh24GsbyeOtA
+ checksums-signing-gd-linux-nightly/opt: W_IgAa5DRyO0K3y6_HpNUQ
+ checksums-signing-gd-linux64-nightly/opt: TiI4gPpKQomziDrtdN_7zw
+ checksums-signing-gd-macosx64-nightly/opt: Lkv5O2wIQ9uFaKxpZBuTIQ
+ checksums-signing-gd-win32-nightly/opt: Hzm5DWRnRWKSZsi9cXnM8A
+ checksums-signing-gd-win64-nightly/opt: dlslTCzRTuSC_Xj01mPC4A
+ checksums-signing-gl-linux-nightly/opt: TNh4IVcuR1a_qB_gvCdLGg
+ checksums-signing-gl-linux64-nightly/opt: TGXwDYeIRVOQ95GvhrQeqQ
+ checksums-signing-gl-macosx64-nightly/opt: IvA5oC4BRFeRGOQhrXn5Hw
+ checksums-signing-gl-win32-nightly/opt: CiGDypZhRECqF2fJEaz4vQ
+ checksums-signing-gl-win64-nightly/opt: A3I83guHQ4yOLPrfx2LUrQ
+ checksums-signing-gn-linux-nightly/opt: ZzjMrNPNQvGVykifdgW9QA
+ checksums-signing-gn-linux64-nightly/opt: RW0xXsYEQF6Ml_rDicCj1A
+ checksums-signing-gn-macosx64-nightly/opt: S-9Mqeb5TuOjrG1rBZtKkw
+ checksums-signing-gn-win32-nightly/opt: PXRGMjSyRGqstkCb5qKyCw
+ checksums-signing-gn-win64-nightly/opt: L3LBFD-JRpa0KfKPK_RHFg
+ checksums-signing-gu-IN-linux-nightly/opt: Ic35N_2dRsKE-gjyFoPcSw
+ checksums-signing-gu-IN-linux64-nightly/opt: McJQudM6S8uCFaN-pOROqg
+ checksums-signing-gu-IN-macosx64-nightly/opt: QMzFnnGKTIOadvVqcPczzQ
+ checksums-signing-gu-IN-win32-nightly/opt: d2dM_OjgSKGuks5-u4KUQw
+ checksums-signing-gu-IN-win64-nightly/opt: TApNioviSUCNTLG1-KwL9Q
+ checksums-signing-he-linux-nightly/opt: QSZ73IolTnqRLP9GTMXKmg
+ checksums-signing-he-linux64-nightly/opt: IxNSY1GRShSTSjlrHpViYw
+ checksums-signing-he-macosx64-nightly/opt: BNKUpiMgS6Sr1UZi9fU5Vw
+ checksums-signing-he-win32-nightly/opt: XfvtJWDfS4OXBxjH_UX2Fg
+ checksums-signing-he-win64-nightly/opt: NSEvEVFoRRS4IIQJly4B4w
+ checksums-signing-hi-IN-linux-nightly/opt: ZHup7BhuSf2l1cPzoXdXQg
+ checksums-signing-hi-IN-linux64-nightly/opt: DvJJW3i-TcmtKmaIJ0cGRA
+ checksums-signing-hi-IN-macosx64-nightly/opt: VYaVOE93Sji6D5W6gHbCBw
+ checksums-signing-hi-IN-win32-nightly/opt: eavJwkqBSpK16pG0soN_5w
+ checksums-signing-hi-IN-win64-nightly/opt: Jf_KabZeRcGPZQW2f5NuRQ
+ checksums-signing-hr-linux-nightly/opt: OpJ7xw8XTTK8W4TA4NeIKQ
+ checksums-signing-hr-linux64-nightly/opt: Qx_pkeKcSK2cw_Taxm5ELQ
+ checksums-signing-hr-macosx64-nightly/opt: OCWaK7_ASESnR7CmhKYR3A
+ checksums-signing-hr-win32-nightly/opt: Tw2qP8NyTFKpsap7rixXqQ
+ checksums-signing-hr-win64-nightly/opt: eeq4pqxpR5KYUclCVQopsA
+ checksums-signing-hsb-linux-nightly/opt: QKP8f8pbTNquZDtt6k5Cqw
+ checksums-signing-hsb-linux64-nightly/opt: b4U03dj9TqGU2iHKP7Nfew
+ checksums-signing-hsb-macosx64-nightly/opt: UtqoKpTuT7imBFbo1RfnDQ
+ checksums-signing-hsb-win32-nightly/opt: PRUGLxbiQ0uvWmdXbXHNKg
+ checksums-signing-hsb-win64-nightly/opt: EbnbBdq1RGGgyhyW68Ab2g
+ checksums-signing-hu-linux-nightly/opt: P_Go6lRfRaWpa3mS04mjyg
+ checksums-signing-hu-linux64-nightly/opt: E9GD0_d-SqyynOV-W1WadQ
+ checksums-signing-hu-macosx64-nightly/opt: Z1aPTCx4S7SCqCOBedMTMQ
+ checksums-signing-hu-win32-nightly/opt: WwHXZSuOTKS_U6vbmnZYyw
+ checksums-signing-hu-win64-nightly/opt: NkU7iqd0Rkahao614L1_Hw
+ checksums-signing-hy-AM-linux-nightly/opt: I_0JVZerRvuq8tVQFfFRaw
+ checksums-signing-hy-AM-linux64-nightly/opt: S9zM0MDwRaCNzg3VLpBjCQ
+ checksums-signing-hy-AM-macosx64-nightly/opt: Twlo57PkTvCId4ri1CNR8g
+ checksums-signing-hy-AM-win32-nightly/opt: Yxcyed4qT5q355oe9alU4w
+ checksums-signing-hy-AM-win64-nightly/opt: Z1oghly0QOWtT5kN4eazMw
+ checksums-signing-ia-linux-nightly/opt: Vvtv3x7FQha6QEz0sgLUoQ
+ checksums-signing-ia-linux64-nightly/opt: F_lddlF9T-yqKg6j07BWGA
+ checksums-signing-ia-macosx64-nightly/opt: D079DMR6TSCH2brgto6iKQ
+ checksums-signing-ia-win32-nightly/opt: XwtUlGarSViwJJcpyivHQQ
+ checksums-signing-ia-win64-nightly/opt: D34FQgscSbSGm_Prm--N-A
+ checksums-signing-id-linux-nightly/opt: LO4LvHjoSd-1lVB1rC-_DA
+ checksums-signing-id-linux64-nightly/opt: L_gnnigdQwmMcDq9T62kRA
+ checksums-signing-id-macosx64-nightly/opt: FfQ7asCeSzukB61oIICIaw
+ checksums-signing-id-win32-nightly/opt: b-OKvM_ZRVuwKLHN2cQYGQ
+ checksums-signing-id-win64-nightly/opt: A7kAKxnCRmGxAlOP3GcxhA
+ checksums-signing-is-linux-nightly/opt: PPnocV_ASE-qsfbsSL9nPw
+ checksums-signing-is-linux64-nightly/opt: DT7kEEW8TiqpXb8J6R-Jzg
+ checksums-signing-is-macosx64-nightly/opt: YYd1sPP7Q-Wx0aNxMk_Qrg
+ checksums-signing-is-win32-nightly/opt: dtRSWw7UQ_mlvepotDPyYA
+ checksums-signing-is-win64-nightly/opt: djbxuuohTNe7HQPLjdvC5Q
+ checksums-signing-it-linux-nightly/opt: UXX8LcA0SzqJxr5Lw_9etA
+ checksums-signing-it-linux64-nightly/opt: TXsTnqYoQVyLumHWcKms5w
+ checksums-signing-it-macosx64-nightly/opt: YKJKS-OXQma5tRx7MqP1Tg
+ checksums-signing-it-win32-nightly/opt: ctZYCe5ZT-2EJWnthWlHPw
+ checksums-signing-it-win64-nightly/opt: Erak48gXQwy181KqWpB9Vg
+ checksums-signing-ja-JP-mac-macosx64-nightly/opt: LEImBHArStCIXrqicNptsA
+ checksums-signing-ja-linux-nightly/opt: OFfemLg4QhGPUX4t_BW6LA
+ checksums-signing-ja-linux64-nightly/opt: PTGvOEUFTRqDWjudxZctIA
+ checksums-signing-ja-win32-nightly/opt: ectFzahOT_Kn58-vGBp1_g
+ checksums-signing-ja-win64-nightly/opt: Xd2MnHVyTaqTIvCMXO6koA
+ checksums-signing-ka-linux-nightly/opt: B82Nkxy4T1yW8hZzP89z7A
+ checksums-signing-ka-linux64-nightly/opt: IA4-AYnkTb6p3MG-NHKICA
+ checksums-signing-ka-macosx64-nightly/opt: bqDCQwh1Qsijs39xN9g2iA
+ checksums-signing-ka-win32-nightly/opt: Be59chQfQ_WvefGu277xIQ
+ checksums-signing-ka-win64-nightly/opt: Lqk00aY-RaWz-DyB3qK34A
+ checksums-signing-kab-linux-nightly/opt: bQT9b9p-TLq-PWT1rsgFxw
+ checksums-signing-kab-linux64-nightly/opt: FT88Fsq6S_ehnBj80TWP4Q
+ checksums-signing-kab-macosx64-nightly/opt: MSfyynvvT4OEuk6D5eJpkg
+ checksums-signing-kab-win32-nightly/opt: b1-VpkyCTZyF1uC_-rWF_A
+ checksums-signing-kab-win64-nightly/opt: Fe3wC8HPQF26_s9_ZqGm_A
+ checksums-signing-kk-linux-nightly/opt: JUZYDCfaSxeT-otpPBgzjA
+ checksums-signing-kk-linux64-nightly/opt: fl0VxBoASYOgG8mbJE4xvQ
+ checksums-signing-kk-macosx64-nightly/opt: ChukFzmxQa2bK8Ou0oUoUA
+ checksums-signing-kk-win32-nightly/opt: DLek-u6iSkOOAgiclmEMNg
+ checksums-signing-kk-win64-nightly/opt: btPgn-YzQR-lnZu5B-gzbQ
+ checksums-signing-km-linux-nightly/opt: DohZqgCaRLqNk1CVDryryw
+ checksums-signing-km-linux64-nightly/opt: Yoh5sjQVRCe6K9vl8LCLQQ
+ checksums-signing-km-macosx64-nightly/opt: Lr9R_nInQTmB8QGMUDDgZg
+ checksums-signing-km-win32-nightly/opt: HmU4nDB-R8qkiWP-d5C7ng
+ checksums-signing-km-win64-nightly/opt: EgccQ5E8QFqRefDZ8lKxaA
+ checksums-signing-kn-linux-nightly/opt: EBH3OHf-Q_imHokgbwcyiA
+ checksums-signing-kn-linux64-nightly/opt: QNiirMRcTV6wRYkZG-ZBFg
+ checksums-signing-kn-macosx64-nightly/opt: NvtKdjFTT_W7bMI4sMWNkw
+ checksums-signing-kn-win32-nightly/opt: AEIsbCUETYmk6kjnyKCI6w
+ checksums-signing-kn-win64-nightly/opt: Z-tgRViISF23RP42zVJXcQ
+ checksums-signing-ko-linux-nightly/opt: TFaul3h4Roah0CtTPm6UEg
+ checksums-signing-ko-linux64-nightly/opt: brqqptATQl6k5_OLOXPW6Q
+ checksums-signing-ko-macosx64-nightly/opt: XMcwWUxMSc2t-RFzZVZkTA
+ checksums-signing-ko-win32-nightly/opt: a0k8WsusSt6VqYMrHT4coQ
+ checksums-signing-ko-win64-nightly/opt: IcGpD0u_RxiX8JbuRwx0wA
+ checksums-signing-lij-linux-nightly/opt: d6bFppblQlq1RHA_v-C7fw
+ checksums-signing-lij-linux64-nightly/opt: AepAh7e7RJ2qg6usDnwrWA
+ checksums-signing-lij-macosx64-nightly/opt: PIk2u6DxQyCwfH2wf1oBmw
+ checksums-signing-lij-win32-nightly/opt: OHAW45IjQqaabT78R--xDA
+ checksums-signing-lij-win64-nightly/opt: KHmdowjhSNesLdOZx0wU5g
+ checksums-signing-linux-nightly/opt: ErIbYHZ8QoWVS7hQPmj5ug
+ checksums-signing-linux64-nightly/opt: fcO7yaZSQzC8Y6NqyvisiA
+ checksums-signing-lt-linux-nightly/opt: ECEQWq5DS3aSLJvrwShS2A
+ checksums-signing-lt-linux64-nightly/opt: b6-A3Hr5RkSMLRchc-tpbg
+ checksums-signing-lt-macosx64-nightly/opt: PInLkRoWS4iMsJEF1oQQeg
+ checksums-signing-lt-win32-nightly/opt: d0OrwjsARiyT22gUu8JQYA
+ checksums-signing-lt-win64-nightly/opt: OPnefgP4S6yXRVK15P-C2A
+ checksums-signing-lv-linux-nightly/opt: R2Sf78uJSx68HolrSCqZTQ
+ checksums-signing-lv-linux64-nightly/opt: e6j9bz9ARISpWixxWOCCVA
+ checksums-signing-lv-macosx64-nightly/opt: OLEWYbJYROSBnbHdG0bzdg
+ checksums-signing-lv-win32-nightly/opt: Up7RToh9QnOIgto9Y2sZZA
+ checksums-signing-lv-win64-nightly/opt: AIunuKu_SMqd4tkR-7wCPw
+ checksums-signing-macosx64-nightly/opt: Sm8VOZ2JSNCp2o1vhwFFQA
+ checksums-signing-mai-linux-nightly/opt: EVAVAp-SQ4S2emL8uwQ4mA
+ checksums-signing-mai-linux64-nightly/opt: bqxel9RjTQq3p86OpZFYcA
+ checksums-signing-mai-macosx64-nightly/opt: PilDbahdSUC5MUsnIBr0nA
+ checksums-signing-mai-win32-nightly/opt: SiLErbB_RQ2DxZ06PrsTqA
+ checksums-signing-mai-win64-nightly/opt: MwFuGFb4RGmVllVVKmxSVw
+ checksums-signing-mk-linux-nightly/opt: eNbXgoc0R9CEhdxJ6FeWlQ
+ checksums-signing-mk-linux64-nightly/opt: YfHrLIQQTLCPvwLcBNdrIA
+ checksums-signing-mk-macosx64-nightly/opt: VNmYGwL8QU-tAL8j1o3t3g
+ checksums-signing-mk-win32-nightly/opt: baa3s4v0SnqjYckdM-ctDg
+ checksums-signing-mk-win64-nightly/opt: KXC_bm1cTFqMzS2mvWEq2Q
+ checksums-signing-ml-linux-nightly/opt: bnD9orTPT-eCJvydxexQqQ
+ checksums-signing-ml-linux64-nightly/opt: KhzBf8rVQm2CsRF6deUtNA
+ checksums-signing-ml-macosx64-nightly/opt: PVhErE9aTH-kslU6lOLtQw
+ checksums-signing-ml-win32-nightly/opt: XetSCzEoQ2yfJa5dgeI1Ew
+ checksums-signing-ml-win64-nightly/opt: T0QFX40JTCuZA4TrNpgwaw
+ checksums-signing-mr-linux-nightly/opt: FBamX3M4Rn-Gx-88fTAPoA
+ checksums-signing-mr-linux64-nightly/opt: FeQZarnzRvqCQI-sHkoU0g
+ checksums-signing-mr-macosx64-nightly/opt: Wu4RGQ0wSHWHh1Of60Y4eg
+ checksums-signing-mr-win32-nightly/opt: egalbvcDSsqLZH8lDKFXIA
+ checksums-signing-mr-win64-nightly/opt: CjIPsAGHS86TPsaz2RrZnA
+ checksums-signing-ms-linux-nightly/opt: ZPHS2bI6TS2rcuMcsu1qDQ
+ checksums-signing-ms-linux64-nightly/opt: XxOdkxrxTMyfrBfTD-R0aA
+ checksums-signing-ms-macosx64-nightly/opt: K5nRdk92TlSqmMXO3PxRag
+ checksums-signing-ms-win32-nightly/opt: X_S3WVdHRii3hkmiSycIJw
+ checksums-signing-ms-win64-nightly/opt: Vy6EegfXS1SP0X_U9elSwA
+ checksums-signing-my-linux-nightly/opt: fZWKqHUXTt6h03b6xrjokw
+ checksums-signing-my-linux64-nightly/opt: XMLLsp9aTcmwLoz8aLGD5Q
+ checksums-signing-my-macosx64-nightly/opt: GkhnYuK0REyaNDgNYiA99g
+ checksums-signing-my-win32-nightly/opt: dApz9xjlRY6SVajfU1i7_g
+ checksums-signing-my-win64-nightly/opt: JbeUI4e1Szayj00R5QZndQ
+ checksums-signing-nb-NO-linux-nightly/opt: QpGs_mQUSESXBt0g3DTF3w
+ checksums-signing-nb-NO-linux64-nightly/opt: FXvq940oTSekn-OcYDfcyg
+ checksums-signing-nb-NO-macosx64-nightly/opt: EnkxwtnaSjiPUnbhMtjtzw
+ checksums-signing-nb-NO-win32-nightly/opt: CCWFmVfaQ4Ws7kmLf1OOsQ
+ checksums-signing-nb-NO-win64-nightly/opt: Ex2NcUA_T7OyuYQQcTm8KQ
+ checksums-signing-ne-NP-linux-nightly/opt: PYFihC3kQACQZAfHrExIHw
+ checksums-signing-ne-NP-linux64-nightly/opt: RgGUqLoKQR6Gz9GN3GYh-Q
+ checksums-signing-ne-NP-macosx64-nightly/opt: WLBdLMR2SQ-qh2wqohdDBg
+ checksums-signing-ne-NP-win32-nightly/opt: GDhq81HuR7qFSVWo0qTeAQ
+ checksums-signing-ne-NP-win64-nightly/opt: Xd85hF8aS2O4N9GjUzbHYQ
+ checksums-signing-nl-linux-nightly/opt: Lddh06IpT_KpNYbe0ze1jA
+ checksums-signing-nl-linux64-nightly/opt: ASi0blIqSY6oDVv7A7bmSw
+ checksums-signing-nl-macosx64-nightly/opt: dgwb2O8ISkeHHhoWvNnJvQ
+ checksums-signing-nl-win32-nightly/opt: MAcZIW66R0yBoe70GMe5rA
+ checksums-signing-nl-win64-nightly/opt: YAiFqMiTSuWlYSyBJ6pTZw
+ checksums-signing-nn-NO-linux-nightly/opt: Y80UdLkjQq-6j3pv9a7bJg
+ checksums-signing-nn-NO-linux64-nightly/opt: MetJV7p4S0e41mi5EsEPag
+ checksums-signing-nn-NO-macosx64-nightly/opt: Ianc1Pe-Q_OixYytdM7Yqw
+ checksums-signing-nn-NO-win32-nightly/opt: A7IR1cUuQn2V2s-n9eyYag
+ checksums-signing-nn-NO-win64-nightly/opt: QudO4R4pRLGwQWyEzxpVTg
+ checksums-signing-oc-linux-nightly/opt: byjisNBfT3Czcf9YjttsOA
+ checksums-signing-oc-linux64-nightly/opt: f-jOWr43QE-BZz5yQAHuLQ
+ checksums-signing-oc-macosx64-nightly/opt: Myory5CjQSCX49UHaqVs8Q
+ checksums-signing-oc-win32-nightly/opt: dVLb16lFRRmswWungfnLJQ
+ checksums-signing-oc-win64-nightly/opt: bTXzGIA7SGeg4M6uhhH2pw
+ checksums-signing-or-linux-nightly/opt: NSy-QYvsQ5u6OXPbXzJF7w
+ checksums-signing-or-linux64-nightly/opt: OEH4ithFS1ymYTzg_DGyKQ
+ checksums-signing-or-macosx64-nightly/opt: O_Bcb_mZRxSMsN66HM79Cg
+ checksums-signing-or-win32-nightly/opt: B8KiFOCHR5y6RUZC-YxPBg
+ checksums-signing-or-win64-nightly/opt: AjoUoKtMRM-P0vaT9ouDiA
+ checksums-signing-pa-IN-linux-nightly/opt: Natf6ZrUQYyKCz1Y7-CZoQ
+ checksums-signing-pa-IN-linux64-nightly/opt: V3ssux5mQi-UBJGeMOusYQ
+ checksums-signing-pa-IN-macosx64-nightly/opt: ZHoKhyhqTLedbVX9i-sinw
+ checksums-signing-pa-IN-win32-nightly/opt: KfMUlwEESwmFXJu5yd4cWg
+ checksums-signing-pa-IN-win64-nightly/opt: A8N9_364QVGwfFY-tRXMVQ
+ checksums-signing-pl-linux-nightly/opt: VvXWmRTzTwawGSHtmu2NQw
+ checksums-signing-pl-linux64-nightly/opt: BQxpFLqmSyuzRTFgd3WZ0A
+ checksums-signing-pl-macosx64-nightly/opt: Mbxxh0crTy-YCONNcPbC1Q
+ checksums-signing-pl-win32-nightly/opt: dW1jQLOXQjy66IzjhyXfmA
+ checksums-signing-pl-win64-nightly/opt: H7oiDk7FR2eytEcqCz63Yw
+ checksums-signing-pt-BR-linux-nightly/opt: JBzXcACxSRyFifcz3mRzhA
+ checksums-signing-pt-BR-linux64-nightly/opt: OKmgJytgTreLqih_itHiqA
+ checksums-signing-pt-BR-macosx64-nightly/opt: VCX8yIBSRDWCp5yn9HzDdA
+ checksums-signing-pt-BR-win32-nightly/opt: FXVrbjs3S96AVbvzoJdbkg
+ checksums-signing-pt-BR-win64-nightly/opt: QuHN-i9tQ8O49m_fkSMpcQ
+ checksums-signing-pt-PT-linux-nightly/opt: A-ViJvVtRiKf_3QQtONnVA
+ checksums-signing-pt-PT-linux64-nightly/opt: WQaVJmpURr6BHUrL6DxioA
+ checksums-signing-pt-PT-macosx64-nightly/opt: LVZuxiI7TUytrVtldQh-Nw
+ checksums-signing-pt-PT-win32-nightly/opt: Pmecsok3Q6qtHT4GTZMmcA
+ checksums-signing-pt-PT-win64-nightly/opt: Lj6SLhiUTkmDZoSOyXuUWw
+ checksums-signing-rm-linux-nightly/opt: WM2KVp6-TDqPzaKZ9gbkVg
+ checksums-signing-rm-linux64-nightly/opt: ZH0ELrJGRLepu6XAKQPRrA
+ checksums-signing-rm-macosx64-nightly/opt: dq67QwJtRHOzK4f2z7NAPQ
+ checksums-signing-rm-win32-nightly/opt: Gh8C7tqkSACO1ZMZ2gz9YA
+ checksums-signing-rm-win64-nightly/opt: CG7y67oRTNqHnTIH98O5GQ
+ checksums-signing-ro-linux-nightly/opt: O5CU1Ph5Raq47hAWVkt-cQ
+ checksums-signing-ro-linux64-nightly/opt: aZX1sibtS_-0-VTRaLOqcQ
+ checksums-signing-ro-macosx64-nightly/opt: b6SBkllRQWOyiyjg072ZiQ
+ checksums-signing-ro-win32-nightly/opt: EK1hvRWbScWTP7TUyaMUmg
+ checksums-signing-ro-win64-nightly/opt: bCFtwla9TQazKOs3RziAfg
+ checksums-signing-ru-linux-nightly/opt: VxO55FUQSJey9pzJu8QL1g
+ checksums-signing-ru-linux64-nightly/opt: FJQMDPohTkW4YJTqjXviyQ
+ checksums-signing-ru-macosx64-nightly/opt: Xq44GJ7CTZiuIGle9l-n6A
+ checksums-signing-ru-win32-nightly/opt: F4gU6XhfQ7KvdESdRv659g
+ checksums-signing-ru-win64-nightly/opt: ULgxnLgGQ9yJyJT926AtNQ
+ checksums-signing-si-linux-nightly/opt: AoMuekyCRe2ByH4fZIrvhQ
+ checksums-signing-si-linux64-nightly/opt: Jwmu5vfjQ_KesnQxewpIxg
+ checksums-signing-si-macosx64-nightly/opt: eXDTNq5-QROP5e-3j_UUuw
+ checksums-signing-si-win32-nightly/opt: UicdNE_jQ4-h4oraI3VSkQ
+ checksums-signing-si-win64-nightly/opt: G3K9R1DKQg6f4I_mlJg8pg
+ checksums-signing-sk-linux-nightly/opt: EAtlHjF2SU2TE2DV2dc2jw
+ checksums-signing-sk-linux64-nightly/opt: QsZMxtV8QTKGDIn4HOQ-sQ
+ checksums-signing-sk-macosx64-nightly/opt: NbRFCAXtTE2svKgCwgF0Xw
+ checksums-signing-sk-win32-nightly/opt: U5u-nYjLStmOkE_V8nGXdw
+ checksums-signing-sk-win64-nightly/opt: b2coeibQQOay8ytvlZbpPw
+ checksums-signing-sl-linux-nightly/opt: J3zBhoW1RqGLmIdDRPM3_w
+ checksums-signing-sl-linux64-nightly/opt: DfYgMS0jRbCrO4EVow658A
+ checksums-signing-sl-macosx64-nightly/opt: OvvZ4ze_TQ6OIUai-YxGWQ
+ checksums-signing-sl-win32-nightly/opt: QSkW3PwaQXGzqTCcDSB8gg
+ checksums-signing-sl-win64-nightly/opt: RIT2ZWUeQw60qDe1Slhd7A
+ checksums-signing-son-linux-nightly/opt: EpPk_I9-SJ22vwlNoqKqTA
+ checksums-signing-son-linux64-nightly/opt: XSl7CdPZQeiFx2rwDyvyvA
+ checksums-signing-son-macosx64-nightly/opt: HtU7XbfaR9m4_XzTdk6MIw
+ checksums-signing-son-win32-nightly/opt: aLLdzt7EROuavQHGVJfvXQ
+ checksums-signing-son-win64-nightly/opt: RDLF943VQl2weQC4mxxCbw
+ checksums-signing-sq-linux-nightly/opt: OHBS_XFURF-bHitNKIZGKg
+ checksums-signing-sq-linux64-nightly/opt: EcWrj3TrQASvkI4O7J-0BQ
+ checksums-signing-sq-macosx64-nightly/opt: AQCMYGN2Tlm2DazfcXZaSA
+ checksums-signing-sq-win32-nightly/opt: O3-xmTu4S0urh5FhqEsFkg
+ checksums-signing-sq-win64-nightly/opt: XOqXx3AuQCubqPa-TWkAtQ
+ checksums-signing-sr-linux-nightly/opt: bhIKLEvcT-WhkZGRzW_H2g
+ checksums-signing-sr-linux64-nightly/opt: IMDmNM-TQS-2XFz39xkVGQ
+ checksums-signing-sr-macosx64-nightly/opt: V6PYTPjsTvCwiMkaV1Zx-w
+ checksums-signing-sr-win32-nightly/opt: WIXcUD7GQVyhQCmrq4-VaA
+ checksums-signing-sr-win64-nightly/opt: K_4nbyQrQ9OpeKRePuXgYQ
+ checksums-signing-sv-SE-linux-nightly/opt: CTOVgGKiSKqyXf3iIciFDA
+ checksums-signing-sv-SE-linux64-nightly/opt: OGlfN1ueRX6lQsYrdwWnsg
+ checksums-signing-sv-SE-macosx64-nightly/opt: FdRoEjRLTOqXUjypgBzBYg
+ checksums-signing-sv-SE-win32-nightly/opt: Y3dEl91_R1Svee2y3D5zUA
+ checksums-signing-sv-SE-win64-nightly/opt: ENKZhMaYTuS9cS2OhkgHlA
+ checksums-signing-ta-linux-nightly/opt: WWNBHqHQTdOnPxLyrFbdLA
+ checksums-signing-ta-linux64-nightly/opt: Hnz2QMOORqyQPdG2vFMXlA
+ checksums-signing-ta-macosx64-nightly/opt: aHdgSW3iRIuCEyVadT3ZCA
+ checksums-signing-ta-win32-nightly/opt: aFsMvWxjTl23QhGYPcVeng
+ checksums-signing-ta-win64-nightly/opt: XhVDN63vQEukME6nhSiR8w
+ checksums-signing-te-linux-nightly/opt: O2uOJHQxT-WsEx9GwDN7jw
+ checksums-signing-te-linux64-nightly/opt: G0PoNvo_QF25ru3dkEUOFQ
+ checksums-signing-te-macosx64-nightly/opt: BeRheTqRTKm2AHlqBAwGCA
+ checksums-signing-te-win32-nightly/opt: RK-u3qGASoeG7iVc0pCo4A
+ checksums-signing-te-win64-nightly/opt: P2O0vojNQ6-ycwgiKy2Oew
+ checksums-signing-th-linux-nightly/opt: WbhluOk4TyalFR0LwSuWHQ
+ checksums-signing-th-linux64-nightly/opt: fE07mwO8TvaXVguxWVZZ3g
+ checksums-signing-th-macosx64-nightly/opt: Io7pxd_0Sn-xucFkR3PhMw
+ checksums-signing-th-win32-nightly/opt: MwgXxZjUSNmIXBsNeQFWEw
+ checksums-signing-th-win64-nightly/opt: V53tYswzTbSGksYdIsU3DQ
+ checksums-signing-tr-linux-nightly/opt: e_P25-7tSUO3-aEEZOgG3g
+ checksums-signing-tr-linux64-nightly/opt: FoyNh9kKRTWqbsBuB967vA
+ checksums-signing-tr-macosx64-nightly/opt: QvfGI-5eTkiBwkKpW8XsOQ
+ checksums-signing-tr-win32-nightly/opt: W7Qkgg5_Sp2xtb6LDS_JFg
+ checksums-signing-tr-win64-nightly/opt: VswSIuBYR5uczm0EafH0WA
+ checksums-signing-uk-linux-nightly/opt: NeWlbPKrQdedHnJtzWWOzg
+ checksums-signing-uk-linux64-nightly/opt: cujf16CvSOGrZKw7ZSXG5g
+ checksums-signing-uk-macosx64-nightly/opt: HRsQLOZDRwuO8Ku6ZCpHxA
+ checksums-signing-uk-win32-nightly/opt: YGPJ-GHaSZu5e7aqPf5KVA
+ checksums-signing-uk-win64-nightly/opt: c39hlTnlQQmQvqh5NXVPTg
+ checksums-signing-ur-linux-nightly/opt: Crj5gXEQT6yGrD4TK4STOg
+ checksums-signing-ur-linux64-nightly/opt: KxzDifBuQEyHF-F4C5YRNA
+ checksums-signing-ur-macosx64-nightly/opt: BB6bMlQkSEWMwAcwahFbfw
+ checksums-signing-ur-win32-nightly/opt: Xq1_LsO4T9emfXj4n2vDDg
+ checksums-signing-ur-win64-nightly/opt: DyrTulFlTZiQqaQXjUnsZA
+ checksums-signing-uz-linux-nightly/opt: agxhEAxdSlmfsiguJmz6ZA
+ checksums-signing-uz-linux64-nightly/opt: L1aehcqkR3Oq89GG7d0eiA
+ checksums-signing-uz-macosx64-nightly/opt: T8FbY-3ATkqIM4e_jqRrDA
+ checksums-signing-uz-win32-nightly/opt: d0lVoW6qSkWGxIfoLPxdSA
+ checksums-signing-uz-win64-nightly/opt: dvuZdDJnSjizmInGloBQlw
+ checksums-signing-vi-linux-nightly/opt: T_9_tRRmTfStyFQdAKgF6Q
+ checksums-signing-vi-linux64-nightly/opt: YfcSBf7zRS6PzZzQs1_VsQ
+ checksums-signing-vi-macosx64-nightly/opt: epDQOdGPR5mMj1gXTAgtww
+ checksums-signing-vi-win32-nightly/opt: ZAI8u5x0T-GdPXd1uJMyEA
+ checksums-signing-vi-win64-nightly/opt: dsr4Lr0lRLygmCpHXLBqoQ
+ checksums-signing-win32-nightly/opt: aQfV70drRA-29dhZBxF_DA
+ checksums-signing-win64-nightly/opt: KndlrnjKRL-SHsBwv6Rqvw
+ checksums-signing-xh-linux-nightly/opt: dlLsh7GfQT6x-vO7d_ArLg
+ checksums-signing-xh-linux64-nightly/opt: Bb3HxWOoTRWPbNA21b1NkQ
+ checksums-signing-xh-macosx64-nightly/opt: aK8B_2aDSGaTxHf-5Nd9kw
+ checksums-signing-xh-win32-nightly/opt: QCaNAODgRhW5lAgCO-6oDA
+ checksums-signing-xh-win64-nightly/opt: eHV-Mch4THKStRfViVHM9w
+ checksums-signing-zh-CN-linux-nightly/opt: E4P65q9OTDq_pAv3gunjTg
+ checksums-signing-zh-CN-linux64-nightly/opt: dshNTa2jTnij8tNQa_60Yg
+ checksums-signing-zh-CN-macosx64-nightly/opt: BpbGzNKDTK-DmZCbDPhR3g
+ checksums-signing-zh-CN-win32-nightly/opt: FVkZVTGORzmWw2aTEWssuA
+ checksums-signing-zh-CN-win64-nightly/opt: F1ndgAy4RKWRVUVB7WpYKw
+ checksums-signing-zh-TW-linux-nightly/opt: PqQA1ZcKTJCeZGS9IthBlw
+ checksums-signing-zh-TW-linux64-nightly/opt: XTGG5Ec7Rt2omRMoyIa9fQ
+ checksums-signing-zh-TW-macosx64-nightly/opt: cMGpg-IuST-SwugpvEy2PQ
+ checksums-signing-zh-TW-win32-nightly/opt: di1RM6STTHebfM-AfYRY_g
+ checksums-signing-zh-TW-win64-nightly/opt: YEcRN4TuSm2tkcqsg631Vg
+ fetch-binutils-2.25.1: biYr6jzaS0qLYEdV04VsgQ
+ fetch-binutils-2.28.1: Rr4bme6jR367-RJOtXvnwA
+ fetch-binutils-2.31.1: ZZw7z81LQxa3h3WSQGszdQ
+ fetch-cloog-0.18.1: RBIu79TYS_6XZmBdXjBy5Q
+ fetch-gcc-4.9.4: ONRYKCQyQ0OChAuC0dn7Og
+ fetch-gcc-6.4.0: diW7DE6wRqi4T7_gofMf4Q
+ fetch-gmp-5.1.3: Amvm8R65Spue_kEeE66Qtg
+ fetch-isl-0.12.2: FA01rHTTQdmclndY1p9SWQ
+ fetch-isl-0.15: VeBaKhmaT_ypNgF0ea30WQ
+ fetch-mpc-0.8.2: WoamR_8-SByGgpmQlksP3g
+ fetch-mpfr-3.1.5: ZctJp1yBR5OH6TgTcoHZ9Q
+ firefox-push-to-release: U0qqZPLmSS6e6cTxTRQAbQ
+ hazard-linux64-haz/debug: ZtrJ5vnUQt6yWo5Upy5i9A
+ nightly-l10n-linux-nightly-1/opt: M3fma7PWTSCmn0zpybL8PQ
+ nightly-l10n-linux-nightly-10/opt: fWqGYTd_RP-y-1b8R-B_DA
+ nightly-l10n-linux-nightly-11/opt: e4r7V2bIQGu1Z57m57zn4A
+ nightly-l10n-linux-nightly-12/opt: DpIk6MlOSS2AtO2caKOFeQ
+ nightly-l10n-linux-nightly-13/opt: bwEyoHgwTOW2gCUNIpiAqA
+ nightly-l10n-linux-nightly-14/opt: avKg-GvpTKac7lZhHkrd7Q
+ nightly-l10n-linux-nightly-15/opt: SXEK3Ru9Ry2KVmi-xFJecQ
+ nightly-l10n-linux-nightly-16/opt: ZgENtuuhS_6ZWk-A2d-_UA
+ nightly-l10n-linux-nightly-17/opt: M9kCrsbZSgufZAru0yuIqQ
+ nightly-l10n-linux-nightly-18/opt: Kt4WAULxTaeGV-zPpocCBA
+ nightly-l10n-linux-nightly-19/opt: arRWcxmzRsSSSrTeFD6nwQ
+ nightly-l10n-linux-nightly-2/opt: PU-WMys7SMKbpc7Pb1Gq2g
+ nightly-l10n-linux-nightly-20/opt: TPJ1zVoKSEu0BtbkAvK40A
+ nightly-l10n-linux-nightly-3/opt: B4YtpxKWQtO4nLKmIc8_0w
+ nightly-l10n-linux-nightly-4/opt: bvlqFe21Tp-BqG3wmFtqXw
+ nightly-l10n-linux-nightly-5/opt: N9R3QY6qREiBduEHDbO4bw
+ nightly-l10n-linux-nightly-6/opt: N6tzp0LsTkW5QG-ZilYHuQ
+ nightly-l10n-linux-nightly-7/opt: RCSYfW1dSEmQ9rS6MCZbOg
+ nightly-l10n-linux-nightly-8/opt: HM5erlZiQsKPV3L4KH0K9g
+ nightly-l10n-linux-nightly-9/opt: NCu9reHbSKaKqCJ_M5yd8w
+ nightly-l10n-linux64-nightly-1/opt: ZvyQtn96RxiZyCaDjkqHSw
+ nightly-l10n-linux64-nightly-10/opt: Qh7C2Ra0RM6hcTHGQCCPCA
+ nightly-l10n-linux64-nightly-11/opt: I88Zies5QMiT_aH1V_3y-w
+ nightly-l10n-linux64-nightly-12/opt: JOVwKKjiQmaQEevb1OMKbQ
+ nightly-l10n-linux64-nightly-13/opt: eLSfvfSsT5297kSM0o0J9Q
+ nightly-l10n-linux64-nightly-14/opt: RMjOhFTES5mKjc6RT2zVQg
+ nightly-l10n-linux64-nightly-15/opt: R6dlAkl_QsCLzDjCibIznQ
+ nightly-l10n-linux64-nightly-16/opt: BRsT9HDPSleVJEkBDw0rAw
+ nightly-l10n-linux64-nightly-17/opt: TasNIvJaQ9axS1APzIKVdQ
+ nightly-l10n-linux64-nightly-18/opt: Yl5FUrSwQoq2M1rPsrZvvQ
+ nightly-l10n-linux64-nightly-19/opt: Ak03-49gTM2pu0ZCBZNY3Q
+ nightly-l10n-linux64-nightly-2/opt: KLL5HYCRSfKEboKKkmtI9g
+ nightly-l10n-linux64-nightly-20/opt: afZps1V1RIu31_26GClGQA
+ nightly-l10n-linux64-nightly-3/opt: QUDHc3eDRQaeTCz21FBaYg
+ nightly-l10n-linux64-nightly-4/opt: PzF33T1PQnydTpXmSOngyA
+ nightly-l10n-linux64-nightly-5/opt: IW0a4N-2RN-csUW1HZ685Q
+ nightly-l10n-linux64-nightly-6/opt: Bs2RbuVZSS2iCPoYk51ong
+ nightly-l10n-linux64-nightly-7/opt: NBCtAhEgSvmoogT_ssTLxg
+ nightly-l10n-linux64-nightly-8/opt: AHkfpzMqTkuMxHBE2pIIlg
+ nightly-l10n-linux64-nightly-9/opt: OYRfWE3ITrKbOBkD68888A
+ nightly-l10n-macosx64-nightly-1/opt: MJGU52EETjCqDiXp8_dbLg
+ nightly-l10n-macosx64-nightly-10/opt: aEIj6W9_RRaRQ2juf0XTkQ
+ nightly-l10n-macosx64-nightly-11/opt: ILjTOqt8Ttu7LI0KkjxTGA
+ nightly-l10n-macosx64-nightly-12/opt: L7ERVMblRAqqngH_8gKqQw
+ nightly-l10n-macosx64-nightly-13/opt: U9P36EijQMu7aT5x75Bmvg
+ nightly-l10n-macosx64-nightly-14/opt: Y517BHv5RhmYF-PRUYvbfw
+ nightly-l10n-macosx64-nightly-15/opt: AQsMvwytT6uOnEFVUpsgEg
+ nightly-l10n-macosx64-nightly-16/opt: G4zdtxccQuaxm5PmCvUeLQ
+ nightly-l10n-macosx64-nightly-17/opt: cf7zk29mSP-9BFs2gL_5AA
+ nightly-l10n-macosx64-nightly-18/opt: RlWuvgC_QhqlHtIOthwKiA
+ nightly-l10n-macosx64-nightly-19/opt: doIEdwXDR16m3ttyx4QUZg
+ nightly-l10n-macosx64-nightly-2/opt: OFslDtdUROGLvXql5LAQIQ
+ nightly-l10n-macosx64-nightly-20/opt: fSZY8R3PT525MBTERRtdvA
+ nightly-l10n-macosx64-nightly-3/opt: O8UoAIB5TkCYpWSli4BxjA
+ nightly-l10n-macosx64-nightly-4/opt: Z5oe2o9fQset_AjLOgA5Kw
+ nightly-l10n-macosx64-nightly-5/opt: fuXsM7QMQK6P5j4wcKnpCg
+ nightly-l10n-macosx64-nightly-6/opt: T-aRkoWZT2eMpSF10bWuRA
+ nightly-l10n-macosx64-nightly-7/opt: MpGM-fTmTOSdW2xvdmawrg
+ nightly-l10n-macosx64-nightly-8/opt: OwbqeygvTBOiAv-5hEVW2A
+ nightly-l10n-macosx64-nightly-9/opt: MSPETCeXRpCk3DY65qwSKA
+ nightly-l10n-signing-linux-nightly-1/opt: YTPeRAioSYqYS5ZmqRWn1w
+ nightly-l10n-signing-linux-nightly-10/opt: TH6Pu5yNQyS4pGSUAZd4Tg
+ nightly-l10n-signing-linux-nightly-11/opt: HLxlh0cERwCDOfZrm7UZ-A
+ nightly-l10n-signing-linux-nightly-12/opt: Fp9tFiW5R8a0zS15T62cZw
+ nightly-l10n-signing-linux-nightly-13/opt: df2C4bIEQ12JjpLe_9e2qA
+ nightly-l10n-signing-linux-nightly-14/opt: HYO-xU0NT6-7kH7DMyHsqw
+ nightly-l10n-signing-linux-nightly-15/opt: eUrOPg5wTM2-i2XV-7kWIQ
+ nightly-l10n-signing-linux-nightly-16/opt: Altp_eTQQZa39ZvOQpke3A
+ nightly-l10n-signing-linux-nightly-17/opt: Y2jMDKf0RFW-K4vOiBvOgw
+ nightly-l10n-signing-linux-nightly-18/opt: BHYHgFGHTOa0dU_GAJ1EIg
+ nightly-l10n-signing-linux-nightly-19/opt: DoqO8w14Tda7hYGBKbIWjg
+ nightly-l10n-signing-linux-nightly-2/opt: ckWS5YvxThGGkb0bYZL6vA
+ nightly-l10n-signing-linux-nightly-20/opt: NJ6MiF7DS_i_2BCOPkLKCA
+ nightly-l10n-signing-linux-nightly-3/opt: YzoUdy8pQKK64EWDVT15RQ
+ nightly-l10n-signing-linux-nightly-4/opt: Mlmvz9myRzWxKo23hkc-Vg
+ nightly-l10n-signing-linux-nightly-5/opt: RT_9wjj3RIuZd-JSkPLAuQ
+ nightly-l10n-signing-linux-nightly-6/opt: IGiiOO9xQNuNCSVBWeCU9A
+ nightly-l10n-signing-linux-nightly-7/opt: Q3RiB1ElSkWE1S647UpDxQ
+ nightly-l10n-signing-linux-nightly-8/opt: UkbjtdVITUiKgoAlTapt1g
+ nightly-l10n-signing-linux-nightly-9/opt: JEPxCpqvQyefYYnWJShVoA
+ nightly-l10n-signing-linux64-nightly-1/opt: QiX1Z_dfSRKJwIoBhVPEew
+ nightly-l10n-signing-linux64-nightly-10/opt: arKIYpPhRayi7tEShKNYzQ
+ nightly-l10n-signing-linux64-nightly-11/opt: Xp5izAReTimc1JEyIGAd5Q
+ nightly-l10n-signing-linux64-nightly-12/opt: VjEjI4-YQOmn0Ae0vNnSGg
+ nightly-l10n-signing-linux64-nightly-13/opt: HER6wom7RwG-IiXdJCZvNw
+ nightly-l10n-signing-linux64-nightly-14/opt: HTImDNwpTfa8iZT9B3jpdQ
+ nightly-l10n-signing-linux64-nightly-15/opt: RYg6wfYyQciD9lFymyzW2A
+ nightly-l10n-signing-linux64-nightly-16/opt: NPfaGtzSRF-wb1QuXC9o4A
+ nightly-l10n-signing-linux64-nightly-17/opt: Jlp1OG9jSdyy6WnfVM7Ltw
+ nightly-l10n-signing-linux64-nightly-18/opt: YnXbYss5RUqAdlHjINgonQ
+ nightly-l10n-signing-linux64-nightly-19/opt: ZvsVjupxT8qfPhi7MI1VgQ
+ nightly-l10n-signing-linux64-nightly-2/opt: G0EjmjqrSMiuMOoJF8ewTw
+ nightly-l10n-signing-linux64-nightly-20/opt: AtdEPSilRsqlAiA-BH0oUg
+ nightly-l10n-signing-linux64-nightly-3/opt: RYsmO6sqRuum4WpEnFeeEw
+ nightly-l10n-signing-linux64-nightly-4/opt: b7Cl0JCtTKa8zxOnMAso1Q
+ nightly-l10n-signing-linux64-nightly-5/opt: QXmQ_ut7SpasE0DxElVkPQ
+ nightly-l10n-signing-linux64-nightly-6/opt: Tj2KxHHJTXu21ILYS6qMMA
+ nightly-l10n-signing-linux64-nightly-7/opt: H1nZjKVhSVyAnFffJpZe2A
+ nightly-l10n-signing-linux64-nightly-8/opt: QxXcWPsoQzOJqC_ZnLjYeg
+ nightly-l10n-signing-linux64-nightly-9/opt: DDgSsggASymmhIaOsGEVuQ
+ nightly-l10n-signing-macosx64-nightly-1/opt: CcP1H8gVTRKKhH3BcsHFzw
+ nightly-l10n-signing-macosx64-nightly-10/opt: e6zMbtgLRQyyz9K2LNbJQQ
+ nightly-l10n-signing-macosx64-nightly-11/opt: LzL8X3tUT46ODpZMPGGFSA
+ nightly-l10n-signing-macosx64-nightly-12/opt: ZQe-XukVSNmrniRaFAmgLA
+ nightly-l10n-signing-macosx64-nightly-13/opt: ep9ZuJmjS4K-b0PLBhk4vg
+ nightly-l10n-signing-macosx64-nightly-14/opt: XFFxGBL2Rh2wL_hg96zK0g
+ nightly-l10n-signing-macosx64-nightly-15/opt: ex6ti43HS8KJiRroyVsCDw
+ nightly-l10n-signing-macosx64-nightly-16/opt: coTPE8t2Rtm-GWfk1irJxg
+ nightly-l10n-signing-macosx64-nightly-17/opt: c8FA8Z-cRXGSFd8XRObhtA
+ nightly-l10n-signing-macosx64-nightly-18/opt: MRL0zSKwRlmGkuTZnbML4Q
+ nightly-l10n-signing-macosx64-nightly-19/opt: GUD_A2JtQVSIMGdhwlFTcg
+ nightly-l10n-signing-macosx64-nightly-2/opt: ThMQ1LVoSPmTiv9jGJju-w
+ nightly-l10n-signing-macosx64-nightly-20/opt: Qi-e3_3oRo-dr0PUzWm9uw
+ nightly-l10n-signing-macosx64-nightly-3/opt: YqWtmTiUTRmIKm53SMvVRA
+ nightly-l10n-signing-macosx64-nightly-4/opt: LVUTiAu4TG2Wq1WPjxC6HA
+ nightly-l10n-signing-macosx64-nightly-5/opt: DEOOPPJTR2m9p2mxjf6Sjg
+ nightly-l10n-signing-macosx64-nightly-6/opt: Sy_64pFfQx2sCBGgqj8ceg
+ nightly-l10n-signing-macosx64-nightly-7/opt: IHKBFPS9RcmffkMl2ObX2g
+ nightly-l10n-signing-macosx64-nightly-8/opt: Wv1Ip9BgS5W4RhkJ4rJv9A
+ nightly-l10n-signing-macosx64-nightly-9/opt: WgfG86w8SIKN6TOBBOMnHA
+ nightly-l10n-signing-win32-nightly-1/opt: V9mSUcq3S-qNaRX7bXKnsg
+ nightly-l10n-signing-win32-nightly-10/opt: bibb7fhYSeCjxKNpYXy8qg
+ nightly-l10n-signing-win32-nightly-11/opt: SpwVErJ8TVqbFiBLisMctQ
+ nightly-l10n-signing-win32-nightly-12/opt: MjjQOn2MS9-0hws3o_K1mQ
+ nightly-l10n-signing-win32-nightly-13/opt: Egf9AI7FTym1ofDsssq0qw
+ nightly-l10n-signing-win32-nightly-14/opt: ME5Wx-AORVqpdfsjdqXJ9g
+ nightly-l10n-signing-win32-nightly-15/opt: ApB2MQz1Q-ySKAQMs_6Emg
+ nightly-l10n-signing-win32-nightly-16/opt: GnWoiUDMQAC8GXne_1DNxA
+ nightly-l10n-signing-win32-nightly-17/opt: fHU7HknlRhuE8tuRFXWWKA
+ nightly-l10n-signing-win32-nightly-18/opt: Rfq4ucT3Sg2OfZlR-_TxEQ
+ nightly-l10n-signing-win32-nightly-19/opt: erjQfXN2T2uuKKePUVdg8A
+ nightly-l10n-signing-win32-nightly-2/opt: XwX0RyK0Qi66OVi9S06RJg
+ nightly-l10n-signing-win32-nightly-20/opt: QA4UBut6Qz2PStQzB2oF2A
+ nightly-l10n-signing-win32-nightly-3/opt: Ry8RrzSVT92WFk_PHHPoHg
+ nightly-l10n-signing-win32-nightly-4/opt: DoigKNuHSNyos4Xl9E639g
+ nightly-l10n-signing-win32-nightly-5/opt: G47beA9XRTucSHAa5o9EKw
+ nightly-l10n-signing-win32-nightly-6/opt: DPG3JcmHQESC3qJ5ZFv0oA
+ nightly-l10n-signing-win32-nightly-7/opt: IavYtB1ARKC_IIWrZK7ozA
+ nightly-l10n-signing-win32-nightly-8/opt: d75wfLPRRL-tAmupT6iiiA
+ nightly-l10n-signing-win32-nightly-9/opt: f2guqAoPSjGYlHN4Tnv4Lg
+ nightly-l10n-signing-win64-nightly-1/opt: F2Sis7grRoGVnGii96XAzA
+ nightly-l10n-signing-win64-nightly-10/opt: NvnogtchRoCmTIQbcstj4Q
+ nightly-l10n-signing-win64-nightly-11/opt: aM-gXzXIQjaYaN4rfG_iqQ
+ nightly-l10n-signing-win64-nightly-12/opt: PFLA0G-gQuCs2YlQ2REgEA
+ nightly-l10n-signing-win64-nightly-13/opt: MGH2gMFFRLav6MQZ7Y97Cw
+ nightly-l10n-signing-win64-nightly-14/opt: cFsQneyWQXKhKv7vfaLZWQ
+ nightly-l10n-signing-win64-nightly-15/opt: UvbKxmkWRquNcKwcVVdhig
+ nightly-l10n-signing-win64-nightly-16/opt: a6ShH7FvShaJ2ht27eldmA
+ nightly-l10n-signing-win64-nightly-17/opt: SvNDOn7FSqmLyh_IAnDSQw
+ nightly-l10n-signing-win64-nightly-18/opt: QAKsMsHNQWmKUxPQog5qQA
+ nightly-l10n-signing-win64-nightly-19/opt: adDiWeGBQ66yn_xx13wO1A
+ nightly-l10n-signing-win64-nightly-2/opt: M3crvx6yQcerlysnnVixFw
+ nightly-l10n-signing-win64-nightly-20/opt: PBBgBODjSDyYsXCfadWd7g
+ nightly-l10n-signing-win64-nightly-3/opt: MDc3vCZpTuiM_lwEFrJsng
+ nightly-l10n-signing-win64-nightly-4/opt: Iuk7ENqBTmC_tIvKFE-Vmw
+ nightly-l10n-signing-win64-nightly-5/opt: R0MANCi6RKSLsgDc7LUI6Q
+ nightly-l10n-signing-win64-nightly-6/opt: GV5cOk7RTrKBU6qs2meXTQ
+ nightly-l10n-signing-win64-nightly-7/opt: cX_Byl4WQAySUKhgG1Fzyg
+ nightly-l10n-signing-win64-nightly-8/opt: RXx9bnBXR1es5o4oi9tLHw
+ nightly-l10n-signing-win64-nightly-9/opt: Nwu7D-WfT2uQCU-nAbsB-g
+ nightly-l10n-win32-nightly-1/opt: bHQfmDHvQTa0FJPUGdNizA
+ nightly-l10n-win32-nightly-10/opt: REfC9Dt6RIu5JwK9tSH3kg
+ nightly-l10n-win32-nightly-11/opt: MILCs2hcTfOACt0oQPBLww
+ nightly-l10n-win32-nightly-12/opt: ZrMHYAAQRzuMBkFZl8wgnA
+ nightly-l10n-win32-nightly-13/opt: brP6lNvCR0G9YUnQBl2buw
+ nightly-l10n-win32-nightly-14/opt: DCIsaTvlRLCdBB3EXMJHqg
+ nightly-l10n-win32-nightly-15/opt: NosrKgViQl-inKi8ZBRfqQ
+ nightly-l10n-win32-nightly-16/opt: Qdaxx1t2SBiHwbUsprix-A
+ nightly-l10n-win32-nightly-17/opt: bmsjYCNNRvGtO6qigtXQnA
+ nightly-l10n-win32-nightly-18/opt: D3_cRw0uTeazsZT5H0MJ3A
+ nightly-l10n-win32-nightly-19/opt: cSwWdwg1SgyKz7u_850kjQ
+ nightly-l10n-win32-nightly-2/opt: Hza5vp6eTn2E7xzGngXS0g
+ nightly-l10n-win32-nightly-20/opt: LLN14uOeRYOtM9Gk3gaBYQ
+ nightly-l10n-win32-nightly-3/opt: GVRJMmOpQ2iYRhq3oHidxg
+ nightly-l10n-win32-nightly-4/opt: YqqDUOETRK2gKcuthmV-UA
+ nightly-l10n-win32-nightly-5/opt: b3WtcBHbSHWkCtS1iMAFSA
+ nightly-l10n-win32-nightly-6/opt: X3Wf5TUnR_2B6_VQ5Og82A
+ nightly-l10n-win32-nightly-7/opt: VeDgth29Tqm1jHKx2-p2dw
+ nightly-l10n-win32-nightly-8/opt: atjMNEDtTNS1lokgUEFLbQ
+ nightly-l10n-win32-nightly-9/opt: DT89JvzoS2-C-a7HE_nWuw
+ nightly-l10n-win64-nightly-1/opt: BiPWnYYNT8iFjxWgw9dxSQ
+ nightly-l10n-win64-nightly-10/opt: Zq9AiBwCQFudobGgKMsOvQ
+ nightly-l10n-win64-nightly-11/opt: MRi-qjJxSBuehPYJb2CuKw
+ nightly-l10n-win64-nightly-12/opt: bWwcYKxKRsS4D8Rw1znuRA
+ nightly-l10n-win64-nightly-13/opt: ZZcimVyJRK-wet-gjgiGiQ
+ nightly-l10n-win64-nightly-14/opt: OGdkRsr0T66L3cpmwSTn_g
+ nightly-l10n-win64-nightly-15/opt: UNxfUEXESqWX1i_mU2zFsw
+ nightly-l10n-win64-nightly-16/opt: VDf0hUQnR46WoLmSnamptQ
+ nightly-l10n-win64-nightly-17/opt: XknO8Wv4QpmTozAdq_iTWQ
+ nightly-l10n-win64-nightly-18/opt: fSqjl-qoTk-w8UkrJQRd0A
+ nightly-l10n-win64-nightly-19/opt: ZI2_10s6S5K7G7tvaCRDXg
+ nightly-l10n-win64-nightly-2/opt: JRp86glISJCWYQPNA78zAw
+ nightly-l10n-win64-nightly-20/opt: SgqrHoiJQOuST_c8YxuC7Q
+ nightly-l10n-win64-nightly-3/opt: AIa3e0G3SimeOEq7wj9Gyg
+ nightly-l10n-win64-nightly-4/opt: DI7GL9BBS6u4QkJoMbjjZQ
+ nightly-l10n-win64-nightly-5/opt: HoVh0zHJRV6WpIhdB-hw5g
+ nightly-l10n-win64-nightly-6/opt: d2b3VdJuTLqFJUUhH5Rapg
+ nightly-l10n-win64-nightly-7/opt: T2Cv061_R9ufl54hn4EuTA
+ nightly-l10n-win64-nightly-8/opt: FuC6XWdlQK-L1k50iVxicg
+ nightly-l10n-win64-nightly-9/opt: a4hQWQVATCGJA6cAKyP9eQ
+ packages-deb7-automake-1.14: Jcd0sip9SwyED9OT2lF9vA
+ packages-deb7-cmake: GPEoycKQSlyE1LPUmUqnBA
+ packages-deb7-devscripts-2.14: fm8rcOdZQQ6495GsAXaBjg
+ packages-deb7-dh-python: AdGzX_RoSyGAWv095qCYiQ
+ packages-deb7-dpkg-1.17: NbyaKA-8Q26dE_-ItC7iGA
+ packages-deb7-gdb: He0hh3vgSbCq4yS9umIwuQ
+ packages-deb7-git: AYTUNwpBTq6ergMbTQV2pg
+ packages-deb7-make: YVNkvIqIRyyLaa0xHlxFZw
+ packages-deb7-mercurial: cAD-wzUIQRS3MI99JitNHw
+ packages-deb7-ninja: QCiS8QwVRL6Kv1X9KejV2A
+ packages-deb7-python: JfPMDBk8Q6u6HY0oO-ujJA
+ packages-deb7-python-zstandard: MTUOYeGhSACGyJuehw9ezw
+ packages-deb7-python3-defaults: TLO8SLVJRtCIs-PzEW82eg
+ packages-deb7-python3.5: JDvyzYnXR7yrKJIjPEz1CQ
+ packages-deb7-valgrind: eLzgZ3QXQDenrWk2WrKW7w
+ packages-deb7-xz-utils: aY6_78zuS8iTeOH_jsFQqg
+ packages-deb9-mercurial: PJXYDmeAS5q_08Cu_iCkjQ
+ packages-deb9-python-zstandard: ImhF1BThRTKV1Hm93oFNGg
+ partials-ach-linux-nightly/opt: a5c3DbOUSwudgLPdYUDPqg
+ partials-ach-linux64-nightly/opt: OynTzU6UTcCj2XfsbZF96g
+ partials-ach-macosx64-nightly/opt: G4YJEbSZQZyqPY3IWo5AMw
+ partials-ach-win32-nightly/opt: fpkGXG86QO2WU4PByquw1g
+ partials-ach-win64-nightly/opt: OeOMYad2R9W7yFsHcVhz-A
+ partials-af-linux-nightly/opt: LeeAPFqlSTWNhwOof9A3Lw
+ partials-af-linux64-nightly/opt: Fupfx72oT16276yGbE_hhg
+ partials-af-macosx64-nightly/opt: JHUNty-LS4iGnPLSklz_eA
+ partials-af-win32-nightly/opt: VgrLMB8fSjC1L0nxTVbSqQ
+ partials-af-win64-nightly/opt: EpG-zFWgRnOW3ToQfvvehw
+ partials-an-linux-nightly/opt: S8JXISRYRzyPcPJBX15d9Q
+ partials-an-linux64-nightly/opt: MKGGkNzkSvGR9v3pxAJImg
+ partials-an-macosx64-nightly/opt: BUdg94S8QeG1WpfI0jg4Ag
+ partials-an-win32-nightly/opt: JfDN6Q6rTbSJVEDL6eRndg
+ partials-an-win64-nightly/opt: FL30WNa9TJGMiTZmFo6bkQ
+ partials-ar-linux-nightly/opt: LlPQWS5yR-6uhYc55KmVAw
+ partials-ar-linux64-nightly/opt: RNPFgrW2Qz-cyrB4VXewBA
+ partials-ar-macosx64-nightly/opt: KA4Ez41PSauwDfWD9ljI8w
+ partials-ar-win32-nightly/opt: PBMfCeGkRoqUnmBvOTR0Hw
+ partials-ar-win64-nightly/opt: cmRg5g8oTd2YPPiM5nYb2Q
+ partials-as-linux-nightly/opt: d9DHfPOCTZ67hYif3yU_JQ
+ partials-as-linux64-nightly/opt: cd_qg176To2sNpumZ8OmNQ
+ partials-as-macosx64-nightly/opt: fNC9PHLcSEeC8am5G_yHPQ
+ partials-as-win32-nightly/opt: cg8-OeiCTYCjqPSvcg15hQ
+ partials-as-win64-nightly/opt: Gifef01GQrGKn7VV0Lf8vA
+ partials-ast-linux-nightly/opt: XCxCVpb9TT681TaQrcBijQ
+ partials-ast-linux64-nightly/opt: HhF524hRRTC7apSrPmhahw
+ partials-ast-macosx64-nightly/opt: DQjYqBckQBSe22oy5ILKHg
+ partials-ast-win32-nightly/opt: eL4Qj-Z2QrOsw9OcIlZfYQ
+ partials-ast-win64-nightly/opt: Xl5WhwZAToejTPwKkm1Zug
+ partials-az-linux-nightly/opt: KMT9KjBVSs2UN-12cWRyYQ
+ partials-az-linux64-nightly/opt: UBZp2jgFRQCo2lgG1hMJzg
+ partials-az-macosx64-nightly/opt: SKQIwa6PT_aHH-qNTlmxEw
+ partials-az-win32-nightly/opt: LRdu7VpJSBuJP2NyaIAsxA
+ partials-az-win64-nightly/opt: SksxNImDTqKwczakWwqr7g
+ partials-be-linux-nightly/opt: EyYuvz7VRfeiQTnngWnwoA
+ partials-be-linux64-nightly/opt: ZmYr6tmKTrKRqUYdGPaQoA
+ partials-be-macosx64-nightly/opt: JmhcESQ3R6m06iTjK449TA
+ partials-be-win32-nightly/opt: KmZzuVHXSE6XDsyg7R1X6w
+ partials-be-win64-nightly/opt: dqYPPQmFSRWLG-93iqa2FA
+ partials-bg-linux-nightly/opt: FjF9RK1oRHGLYJpiWHMNPg
+ partials-bg-linux64-nightly/opt: ZpzUl8TOQVSKtL3cQcrezw
+ partials-bg-macosx64-nightly/opt: MGlreuskTZSi6kuHMSD2cQ
+ partials-bg-win32-nightly/opt: JnIg1iwUSquBACmxmjtw1g
+ partials-bg-win64-nightly/opt: SeA8xiBTS8aA7_aPBxJHHw
+ partials-bn-BD-linux-nightly/opt: OozYcUJqTZGY8G7apOIUQA
+ partials-bn-BD-linux64-nightly/opt: Wq-DCntASy-kVFDWnI2Aww
+ partials-bn-BD-macosx64-nightly/opt: IiC3VwAZR6ewrpbDQXmKCg
+ partials-bn-BD-win32-nightly/opt: RuIuY1m2Q7WvjQG2yFpJJQ
+ partials-bn-BD-win64-nightly/opt: IByS0pNPT0Cgp8go4BIm1Q
+ partials-bn-IN-linux-nightly/opt: XPuDT6mnRW6esptS8hlgZQ
+ partials-bn-IN-linux64-nightly/opt: B0Pzm7EPQr-a7OPKKrvPQQ
+ partials-bn-IN-macosx64-nightly/opt: L_Qq6W_jTOWKg0jWqfUY7w
+ partials-bn-IN-win32-nightly/opt: XlQj0g98QHidChLKl-tmjw
+ partials-bn-IN-win64-nightly/opt: FcOuMbwLSUmqYrASomwlEw
+ partials-br-linux-nightly/opt: Bp6TqDRITn2tJSUfdYFoww
+ partials-br-linux64-nightly/opt: RIq8YgugT66ifsZRLuTAew
+ partials-br-macosx64-nightly/opt: Df1tytxkR_WHQaaqZqMJrA
+ partials-br-win32-nightly/opt: AM__AdiWSbu-vGSvid6OLQ
+ partials-br-win64-nightly/opt: Bnc_t0ANQtCnZb6eZd7C1g
+ partials-bs-linux-nightly/opt: LlzMgGnwSFGQF29f0XErFg
+ partials-bs-linux64-nightly/opt: A8kHjPdPT5iio3iipRvoXQ
+ partials-bs-macosx64-nightly/opt: Lwgejfj3Tc2RmLPR6ED6IA
+ partials-bs-win32-nightly/opt: f7zkMLsmTXWnMxZpbCTnHA
+ partials-bs-win64-nightly/opt: F5Fqw4i-SBWyqsYZfZ2blg
+ partials-ca-linux-nightly/opt: MOG_FasbR0ik6WiMlMOQyg
+ partials-ca-linux64-nightly/opt: ZRkkQseWRAKzxzUyviFadw
+ partials-ca-macosx64-nightly/opt: PjQQ7SsYSRGpkhTAnoESpw
+ partials-ca-win32-nightly/opt: GmaioaSAQK6wOOZWNPbHCA
+ partials-ca-win64-nightly/opt: aM1GapkeTuGZpG2nPYPNPw
+ partials-cak-linux-nightly/opt: QxmX7uSsTYKLZ2mJcHygPg
+ partials-cak-linux64-nightly/opt: Qr6EMZnUSTqiUJs-l89WXA
+ partials-cak-macosx64-nightly/opt: R4NP1RqMQW2YA0V5S51XEg
+ partials-cak-win32-nightly/opt: SCyueIGqTKKITTIWVwV08w
+ partials-cak-win64-nightly/opt: CYB4LVcLTIKmv6_MJ3_06w
+ partials-cs-linux-nightly/opt: BG1gCoQ1RbiDWCM-w8Ci2w
+ partials-cs-linux64-nightly/opt: A-jECrTzR_SyNWWWUFpyHw
+ partials-cs-macosx64-nightly/opt: asK9C7BgS7yJ1dECYLFYug
+ partials-cs-win32-nightly/opt: RosbAGc4SpaSvXoZgq_Dwg
+ partials-cs-win64-nightly/opt: RXxRn4aoT3qP8vqUGVdhrg
+ partials-cy-linux-nightly/opt: KQ4K0WWnRLKp_ehExpHpoQ
+ partials-cy-linux64-nightly/opt: bWoM0hO5SVOR_T6jZfEt8g
+ partials-cy-macosx64-nightly/opt: KIv9gLmNSdSv35uTJTPZrA
+ partials-cy-win32-nightly/opt: ICQRRS6LT3CS8lEBDGnEug
+ partials-cy-win64-nightly/opt: JMgieSGwRZ-i2xjyP3ru5A
+ partials-da-linux-nightly/opt: Edelai6xRLq2KjkG6oGvZQ
+ partials-da-linux64-nightly/opt: EEQcVmCIQqGuCPx0GJlHwA
+ partials-da-macosx64-nightly/opt: UAxUsv4ITUCAacHUF8FizQ
+ partials-da-win32-nightly/opt: WU1W2cU7RheESkXEkPy9dg
+ partials-da-win64-nightly/opt: VTnxmZGKQL6UvMs0uFL0GA
+ partials-de-linux-nightly/opt: W_LMXUscRbuRHifUdIDJ0w
+ partials-de-linux64-nightly/opt: KA451D30RgG7ULAYckw04g
+ partials-de-macosx64-nightly/opt: H0kHdUlxRA2saGk-hjSnoQ
+ partials-de-win32-nightly/opt: YBBPPUpTS8WgIXEW3dLn5A
+ partials-de-win64-nightly/opt: RsjQhjo-QneVv-OFwNrlHA
+ partials-dsb-linux-nightly/opt: VOIF3-4CSPyKQHS2hv1MSg
+ partials-dsb-linux64-nightly/opt: YPAGrShJSh-qpD-yTdSZoA
+ partials-dsb-macosx64-nightly/opt: Lba2gI5cT_K9pSHXm2anpA
+ partials-dsb-win32-nightly/opt: dkMHYsGzRD22n-GgY83YiQ
+ partials-dsb-win64-nightly/opt: c8lOg-M6Rty6LWG4d6WzlA
+ partials-el-linux-nightly/opt: f7LdDRLhQQq5yhIWP-tPyA
+ partials-el-linux64-nightly/opt: Lq3m2ep7RXOC1B8PYEo4-A
+ partials-el-macosx64-nightly/opt: I05isFpUTXyrV9hk8nZTZg
+ partials-el-win32-nightly/opt: ILSjnJKPTkanSO37LNiHfg
+ partials-el-win64-nightly/opt: Sr4UYmsyQ9-yzzo27tndlg
+ partials-en-CA-linux-nightly/opt: EBbHBa5ASFixmnTBMzHjOA
+ partials-en-CA-linux64-nightly/opt: TKU-G9jwRSClNzZiVcYoxw
+ partials-en-CA-macosx64-nightly/opt: XyZx_PnqSqO7PyvfepoStw
+ partials-en-CA-win32-nightly/opt: ctQ24ZCcQ3KkDCo_lADw6w
+ partials-en-CA-win64-nightly/opt: aAwsFxpYQdO2IGs_PgPSxg
+ partials-en-GB-linux-nightly/opt: BEuOJHT7Tpij-S0Bin5sYg
+ partials-en-GB-linux64-nightly/opt: AEsAmiANQ-C-WsF2uiG1ZA
+ partials-en-GB-macosx64-nightly/opt: WK2mG6ImTuSTgMVmye6-8w
+ partials-en-GB-win32-nightly/opt: eeAJbUNwS3mMk03N9LcLdw
+ partials-en-GB-win64-nightly/opt: HYZseoccTeKQGs-QcSy5aA
+ partials-en-ZA-linux-nightly/opt: JdtiDyFtSPmXkeT39GzY3g
+ partials-en-ZA-linux64-nightly/opt: f6A0Rd5URRSkz6EAysTyoA
+ partials-en-ZA-macosx64-nightly/opt: MVWEoDtCQm6VomCZ6M2YcA
+ partials-en-ZA-win32-nightly/opt: azTwqDL1QtyrpzDzIevJ0w
+ partials-en-ZA-win64-nightly/opt: TilkEQd8Q9u84d_2m9eXfQ
+ partials-eo-linux-nightly/opt: VHYjIGkORv2Qgkzeotg2Lw
+ partials-eo-linux64-nightly/opt: I6ZXG31YQbOkVRfnbU2HjA
+ partials-eo-macosx64-nightly/opt: Y5Js1-ksRMquCNhzVRYFZA
+ partials-eo-win32-nightly/opt: EjGMVcs5RA-nzu06eNME4g
+ partials-eo-win64-nightly/opt: HfsTsGTkR8WzdkgSG2YPgQ
+ partials-es-AR-linux-nightly/opt: YMs-xFcCT3ymfZl6xLGqiw
+ partials-es-AR-linux64-nightly/opt: R_TRW1ABRKGexbMJ_djr0Q
+ partials-es-AR-macosx64-nightly/opt: UNGzfVR1QI-teqPO4b4XRQ
+ partials-es-AR-win32-nightly/opt: buqyTODxRoKDPgnxazMjbg
+ partials-es-AR-win64-nightly/opt: Ce0zo8S7Rz6cycMA3FUeLw
+ partials-es-CL-linux-nightly/opt: cZ8R3J1bR0KXqMKf6UdfVA
+ partials-es-CL-linux64-nightly/opt: LRXXoYzdQTmX8Ma0gschCw
+ partials-es-CL-macosx64-nightly/opt: UhROY_GzRNKJPYlUM2HvWQ
+ partials-es-CL-win32-nightly/opt: IB60vF58RQ21uLCP2zo5bQ
+ partials-es-CL-win64-nightly/opt: WhX3EYcRTk6SJpq-nkLGpQ
+ partials-es-ES-linux-nightly/opt: N4NmcgfuScC0MCp04_FbKw
+ partials-es-ES-linux64-nightly/opt: ZZtsUSz6RM-E44q2IWL5bg
+ partials-es-ES-macosx64-nightly/opt: EYxBcaFGRoO_oYHM09u5Dg
+ partials-es-ES-win32-nightly/opt: PHzzR2qhSBmLdCCL9hYlxA
+ partials-es-ES-win64-nightly/opt: c7DIwCWbTJ-zzVlEKAsjKw
+ partials-es-MX-linux-nightly/opt: DH6z6cLORdm99qDZIksTYQ
+ partials-es-MX-linux64-nightly/opt: PmDG-HmJToiK5Gwp9RjULw
+ partials-es-MX-macosx64-nightly/opt: PvX-emuSSuuKrsh8pC5eSQ
+ partials-es-MX-win32-nightly/opt: VC1N5wt_Qom7BUGoIfW5og
+ partials-es-MX-win64-nightly/opt: W9EOJKu8QomPfz01JXp97A
+ partials-et-linux-nightly/opt: O-S34ARGSjWpJAACPquteA
+ partials-et-linux64-nightly/opt: Rk9T70OASfumIzo32-hPZQ
+ partials-et-macosx64-nightly/opt: Cu1TJKrDTieWhRTjorlFTg
+ partials-et-win32-nightly/opt: E6tmEv0oRtStHkYIi4Nb4A
+ partials-et-win64-nightly/opt: Ncuah8SBRs2aaHICA_8L6g
+ partials-eu-linux-nightly/opt: AlKQZPigT82OiMhN5Ea_lQ
+ partials-eu-linux64-nightly/opt: YlTxK3D5SX2pq28OvWZcvA
+ partials-eu-macosx64-nightly/opt: JvFNctMGTzSHENwpTHULjw
+ partials-eu-win32-nightly/opt: GFng5mFPShiz1lpY93H0cg
+ partials-eu-win64-nightly/opt: b_v5Sd3TQnGrmwZm3KxUfg
+ partials-fa-linux-nightly/opt: dtyCnCxJSWiutrRVWIORkQ
+ partials-fa-linux64-nightly/opt: TFWT9wGHQjSD7ajkTRXRMQ
+ partials-fa-macosx64-nightly/opt: Hj0KpPy6TpmgKXatWy0Wag
+ partials-fa-win32-nightly/opt: JgxvvnE1TDO3GJ_-320S0w
+ partials-fa-win64-nightly/opt: Ssp3AgEhSIKvkIJcEnvxYQ
+ partials-ff-linux-nightly/opt: WuFmUNaORW6ZKfcuuxRV-g
+ partials-ff-linux64-nightly/opt: PFgrdnuUQ42u-x2ci6berQ
+ partials-ff-macosx64-nightly/opt: VfOTGW9HTvGACCoVgW0uUQ
+ partials-ff-win32-nightly/opt: T6aAhxE4T8iskiKjjiymBA
+ partials-ff-win64-nightly/opt: HN9EIKZ1SFWxFkzar6ktvA
+ partials-fi-linux-nightly/opt: N4KdM-qUT2WbwAh7SjtdRA
+ partials-fi-linux64-nightly/opt: b1-SfkszQEuTGrVPHDBwmw
+ partials-fi-macosx64-nightly/opt: cYB8Kp20SROJz5wmTaZqXA
+ partials-fi-win32-nightly/opt: Fh0VZHIhRVqGEGB4haEgZQ
+ partials-fi-win64-nightly/opt: W-yce0q1RzqtwZi0L5skRg
+ partials-fr-linux-nightly/opt: TxupYI60RJ-SPSsaz5t0zg
+ partials-fr-linux64-nightly/opt: ShEUqqv4QN-phl8c2suj8Q
+ partials-fr-macosx64-nightly/opt: X2XblrhtQpSyuAowxrpgHQ
+ partials-fr-win32-nightly/opt: MJM08x6tQeSr2njdjdlIOQ
+ partials-fr-win64-nightly/opt: UcfGlVXvTuK4lPMs7rAG8Q
+ partials-fy-NL-linux-nightly/opt: fkNYTJ8GQzej2Z-1aLbVXg
+ partials-fy-NL-linux64-nightly/opt: CNw1o8kjT6mojDYFwSnUng
+ partials-fy-NL-macosx64-nightly/opt: b7i-shXvT2qjs0tttnJq-g
+ partials-fy-NL-win32-nightly/opt: ChaZkeaHSgyw0O5TInPCPw
+ partials-fy-NL-win64-nightly/opt: BauDbnksR7K6IVQR6KnrdA
+ partials-ga-IE-linux-nightly/opt: ZLJBZUXARoKjmlVirq1wOA
+ partials-ga-IE-linux64-nightly/opt: KgGV7w99TSWqfJDgotmozA
+ partials-ga-IE-macosx64-nightly/opt: Yh_cmp25RvO77rTjEAqpLw
+ partials-ga-IE-win32-nightly/opt: In-oS7U5R1aBTQ9p0aXpVw
+ partials-ga-IE-win64-nightly/opt: JgsMbymHRoSB7VDhGRYopg
+ partials-gd-linux-nightly/opt: AQRGqvy1S4iGVQaSZgne8A
+ partials-gd-linux64-nightly/opt: R6hMwlfBTTmVTUHe25Ag_Q
+ partials-gd-macosx64-nightly/opt: LF_HwS43SceCHqiU6ZNU6g
+ partials-gd-win32-nightly/opt: XXE4sGooTGKVMwrmKbVjQg
+ partials-gd-win64-nightly/opt: KAIhNubSRZiYK8gj0TNjAA
+ partials-gl-linux-nightly/opt: N_EA6bt3Rkuvk7a2vF9jpg
+ partials-gl-linux64-nightly/opt: dadAvkxWTqG32otHnPh7PA
+ partials-gl-macosx64-nightly/opt: WbV5N17aQQm5M_N1w1fVug
+ partials-gl-win32-nightly/opt: UrSgVPL3THq8CpjYknsUtg
+ partials-gl-win64-nightly/opt: PHajEl5sT0GPQMUoW0zccA
+ partials-gn-linux-nightly/opt: RPAXYS1BTC-MizQyYGEc-Q
+ partials-gn-linux64-nightly/opt: TQ61u9QgTBaUe53frtqLVw
+ partials-gn-macosx64-nightly/opt: ASa9cs6cS_uJI_vJn666mg
+ partials-gn-win32-nightly/opt: PL-prStDS46tsnfY-keUnQ
+ partials-gn-win64-nightly/opt: PSSXKsAyS-i5pOvbONjf7w
+ partials-gu-IN-linux-nightly/opt: Ml-SgX4RRx627Ct4ANETtg
+ partials-gu-IN-linux64-nightly/opt: a7cEojv7T9S2sNw1Ur2XZg
+ partials-gu-IN-macosx64-nightly/opt: Uuy5UHg_StugxNySkGc1DQ
+ partials-gu-IN-win32-nightly/opt: ECsUd0YsSTmTilD27pSAcg
+ partials-gu-IN-win64-nightly/opt: QNCOAZuTQ8C_2hfsHkBIKw
+ partials-he-linux-nightly/opt: K4aqEXeqTUe0uNX47ieYWw
+ partials-he-linux64-nightly/opt: Rb3UOHCpRYu25Or90s4sNw
+ partials-he-macosx64-nightly/opt: GRtxYCSFT1iVQv4BFPO-TQ
+ partials-he-win32-nightly/opt: Aro7MFavTOWQHulzm6mMTw
+ partials-he-win64-nightly/opt: RjQEJT-STTKUsl-RuP7SjA
+ partials-hi-IN-linux-nightly/opt: Bk_VrP6FR_aBCCZwIxQfMg
+ partials-hi-IN-linux64-nightly/opt: DoVmle6aSIShprbtio3SDg
+ partials-hi-IN-macosx64-nightly/opt: VgrN5SFwScW5PvZhJVxhEg
+ partials-hi-IN-win32-nightly/opt: TF1oRBmHTROtF4MGZT_z_Q
+ partials-hi-IN-win64-nightly/opt: TWEDmUEjRfC0gRoeeJTvIw
+ partials-hr-linux-nightly/opt: ZCi8s9FaRMuWJyuiEu_2PQ
+ partials-hr-linux64-nightly/opt: BU8qhJyNSBGDw1zMcw-I7w
+ partials-hr-macosx64-nightly/opt: f5iQ3zNaT9CZpxSa81xJGA
+ partials-hr-win32-nightly/opt: EfkSfWCKS0m8LjhPY5RTSw
+ partials-hr-win64-nightly/opt: AFeS6oYuSEKCT5ZPP3Q9tw
+ partials-hsb-linux-nightly/opt: ORqq5dzWQtiZjbnvk5u_CA
+ partials-hsb-linux64-nightly/opt: d0_NvU7gTCuxayzwMwGLgg
+ partials-hsb-macosx64-nightly/opt: WXbDxGC5QSqSSHaWrwpO5Q
+ partials-hsb-win32-nightly/opt: UNFIqs-HTmaNdASOcOr7xQ
+ partials-hsb-win64-nightly/opt: elDC2DjITtyX4Vr5Eq2pjw
+ partials-hu-linux-nightly/opt: PrdItlPvQKy45Yxid9g6og
+ partials-hu-linux64-nightly/opt: IIF5eE_9RfmHUTSjDm-hQw
+ partials-hu-macosx64-nightly/opt: FYtNHdfHTE6TUR7n-x-hLQ
+ partials-hu-win32-nightly/opt: Mh7Rr_qPSBq7II4hlVr_Ig
+ partials-hu-win64-nightly/opt: VC9GyoHMTlax4q0gWsdQyg
+ partials-hy-AM-linux-nightly/opt: GcbumvRiQfiYJVknF3K5nw
+ partials-hy-AM-linux64-nightly/opt: O4-ve_PFSvScMzagb0QZpg
+ partials-hy-AM-macosx64-nightly/opt: CWiqw2Z8R2a5EuOisMcMBw
+ partials-hy-AM-win32-nightly/opt: T66CFfReQxa0WfmRmwWQWw
+ partials-hy-AM-win64-nightly/opt: efCwzyhCTcWl2qN_Ya00Qw
+ partials-ia-linux-nightly/opt: XK_HaMURRyugPlZFiB36rQ
+ partials-ia-linux64-nightly/opt: IMJBKmhkTRGeXdmCoVDP7g
+ partials-ia-macosx64-nightly/opt: X6D4v_7zSiqaR1XNH-jlwg
+ partials-ia-win32-nightly/opt: eHM_T9hzRsuhvSktcqo2iw
+ partials-ia-win64-nightly/opt: BHKKvCYpS56xX9niHohkJQ
+ partials-id-linux-nightly/opt: BISySZYERSStyimfxEfdjA
+ partials-id-linux64-nightly/opt: Ouy00QNIS-2ccKOSo34QTA
+ partials-id-macosx64-nightly/opt: R3UYh550SBmJ2cRq6Clttw
+ partials-id-win32-nightly/opt: KP5mseKFTRuvLWO58VqPnA
+ partials-id-win64-nightly/opt: fSIPFpdxTkioAymIk3oDfw
+ partials-is-linux-nightly/opt: Q0w4Ys0PSW6FgGwfb-7DVg
+ partials-is-linux64-nightly/opt: V4xZbb24RvCayqYmLe1W9g
+ partials-is-macosx64-nightly/opt: QNKJ3eYYQG2n75d1AjtCJA
+ partials-is-win32-nightly/opt: DXKc7iQjTBG9vRkl5Qk5YQ
+ partials-is-win64-nightly/opt: VEXXiVCtRqGeOVnW-XMm5g
+ partials-it-linux-nightly/opt: UzcAkXigQZmNzXRfbxkveQ
+ partials-it-linux64-nightly/opt: WAAJiZj6THujdjb2_GI3ag
+ partials-it-macosx64-nightly/opt: CnFaayYTQc2EQLm2W4MojQ
+ partials-it-win32-nightly/opt: bOPowrHESgqvfJ9XHxYzJw
+ partials-it-win64-nightly/opt: SJIZOi3sQv6I1Bh8hma-ng
+ partials-ja-JP-mac-macosx64-nightly/opt: egxEG__hTJiMFOwjLunXoQ
+ partials-ja-linux-nightly/opt: P5om5b5WRn-t2dNahTMg1g
+ partials-ja-linux64-nightly/opt: Gf_VJvACQL2T5E2KQcWsfg
+ partials-ja-win32-nightly/opt: TntFsN0qQBWBtBnus5iQRg
+ partials-ja-win64-nightly/opt: d4pbtiEcT5eSu2vcmgW2Nw
+ partials-ka-linux-nightly/opt: PZxEiTCIRWSVBSTnS8mDuQ
+ partials-ka-linux64-nightly/opt: V3HGTIG0TE2Fq4Sq3NY42w
+ partials-ka-macosx64-nightly/opt: LNuB1vbmRVeI9HfyfnPPVg
+ partials-ka-win32-nightly/opt: eKgYCQYbQBKuadN_uIQOMg
+ partials-ka-win64-nightly/opt: C3_NWKzXRCGD25XeiUi0yg
+ partials-kab-linux-nightly/opt: btWM0MeKQ5OWIw7TY6RSGg
+ partials-kab-linux64-nightly/opt: Xu7lR9VlTPqUOtRgzQfLlA
+ partials-kab-macosx64-nightly/opt: FRApc9oYQdmd9qbA97ecZg
+ partials-kab-win32-nightly/opt: fSog6IxKQeyCDgkMGaNQVg
+ partials-kab-win64-nightly/opt: dERn9uWCRaG_26Ztj4R8YA
+ partials-kk-linux-nightly/opt: bOqDTMJNQb-hrG2Lxr7m-w
+ partials-kk-linux64-nightly/opt: LyMj-3-YTZCnJMx6aoFhVQ
+ partials-kk-macosx64-nightly/opt: Vv4PgY71RketAPQ_6LVgug
+ partials-kk-win32-nightly/opt: Bh_v5HvBTmejRfpkm5rO8Q
+ partials-kk-win64-nightly/opt: YEIUuWCDQRy4Rw8WsLedTw
+ partials-km-linux-nightly/opt: A4cMzxbURGCjEXzDpji1Rw
+ partials-km-linux64-nightly/opt: WmkpblKbSKWNbgeRDKHnPA
+ partials-km-macosx64-nightly/opt: Zvmb8r1nRTCnvFPgvWQlMg
+ partials-km-win32-nightly/opt: Xk8CzuU2Q0-Dv5EiolMBYA
+ partials-km-win64-nightly/opt: UKK2cTG4T0akkrKTuppqAQ
+ partials-kn-linux-nightly/opt: ONynqXkESpyIJLdWCtkiSA
+ partials-kn-linux64-nightly/opt: WbKjgTZvSQWza24xRhtUCA
+ partials-kn-macosx64-nightly/opt: FASG2KJnT2WpyRMmwL9XrQ
+ partials-kn-win32-nightly/opt: A4APwXEtQMWsJP-Y844j0g
+ partials-kn-win64-nightly/opt: OxZgVmYfT_yAt7xTENn6cg
+ partials-ko-linux-nightly/opt: TkVFPbqxRmahKnEod2kZKQ
+ partials-ko-linux64-nightly/opt: A5Sto0MlT2q5UM0djhTKkw
+ partials-ko-macosx64-nightly/opt: K2rAdU-GR-2JNFQikuKDyg
+ partials-ko-win32-nightly/opt: Vqp8187nSSilR5djUZU-vw
+ partials-ko-win64-nightly/opt: Jl1S8Xf_TfafMoMxPHSlMA
+ partials-lij-linux-nightly/opt: QTP26wigRjuyfl9VUO_hCA
+ partials-lij-linux64-nightly/opt: DSKe_rCpRBiCE3gdeCevaA
+ partials-lij-macosx64-nightly/opt: AFiaAfoWT5q_dA103pD6Zg
+ partials-lij-win32-nightly/opt: LOLUQN95QlmhbCjqhxfnZw
+ partials-lij-win64-nightly/opt: OP_eILVfRremSBAXY0Orrw
+ partials-linux-nightly/opt: Tl-RP__yRoWm_VKLjq30_w
+ partials-linux64-nightly/opt: cDLHP0MXQ3uNOXIhmh0k9A
+ partials-lt-linux-nightly/opt: P7Ilzm94RaaFbiyPKg3ZcA
+ partials-lt-linux64-nightly/opt: OSxZQso2SZWu7xDW8B4FJg
+ partials-lt-macosx64-nightly/opt: MF_UX8cbQD-P2rRLsofluQ
+ partials-lt-win32-nightly/opt: BgjamP0mTNe1z2-ex6AObQ
+ partials-lt-win64-nightly/opt: Une4IYmvQd6SiabisFIkMg
+ partials-lv-linux-nightly/opt: YMsSm4DBQbebmAGCQTpErg
+ partials-lv-linux64-nightly/opt: ISEa7cAuTeSVYRrmmIijjA
+ partials-lv-macosx64-nightly/opt: TazzAAuZRCi6AMZ132Islg
+ partials-lv-win32-nightly/opt: NYIwcPQPRSijrK5mkS2Whg
+ partials-lv-win64-nightly/opt: WSSn31bdSr-vmqz5210dFw
+ partials-macosx64-nightly/opt: GiiT6ppLQCmi04NGHfXGEg
+ partials-mai-linux-nightly/opt: Lsip79SmS-O8O9c8MEmtcg
+ partials-mai-linux64-nightly/opt: F60giUPBQuWuZsrdLQYJuA
+ partials-mai-macosx64-nightly/opt: OfIBLC1eTqq5qqCirlNWmQ
+ partials-mai-win32-nightly/opt: P0FIn53DTsWEFJKAuIRprw
+ partials-mai-win64-nightly/opt: cYuSDhaCTeGpBwTuNIiCtg
+ partials-mk-linux-nightly/opt: VDHS-iUZR86vl2qBz0tAsw
+ partials-mk-linux64-nightly/opt: aQmzWeMBRVeNICX0AsNuow
+ partials-mk-macosx64-nightly/opt: aOy7-RopS8qLrTbpcHlf_A
+ partials-mk-win32-nightly/opt: ITBrrPYwR36LTQZzDUIflw
+ partials-mk-win64-nightly/opt: PuVohVqURU2kG2PN1s4iIg
+ partials-ml-linux-nightly/opt: Xm8yZHj3RVODqwA4PXxtjw
+ partials-ml-linux64-nightly/opt: AUNb3EOpTYaFkkMSAFKNBw
+ partials-ml-macosx64-nightly/opt: ORyCBP16Sf2fxXtVPtEc5g
+ partials-ml-win32-nightly/opt: WDMUQ_XVTWS00aSA6gfL2A
+ partials-ml-win64-nightly/opt: FuKmEcwHQEKgxjr9Boy4Gw
+ partials-mr-linux-nightly/opt: aCcZ8iY1QXCxkwf4Gv7IaQ
+ partials-mr-linux64-nightly/opt: PGKFbGlcRIWUX5W53YaboQ
+ partials-mr-macosx64-nightly/opt: G-7V-SzGRHSFc-ufBlRQPw
+ partials-mr-win32-nightly/opt: YEoT5bYNSxmgcwgu7NYryA
+ partials-mr-win64-nightly/opt: b-1ZeWVnRwmofhUV6HfXBw
+ partials-ms-linux-nightly/opt: T0Buav8lTKGGcc4D4sggDw
+ partials-ms-linux64-nightly/opt: Y58oLf19SLWLkhRAbcvJbQ
+ partials-ms-macosx64-nightly/opt: aJLb5tflQ120f1zQgCVTjw
+ partials-ms-win32-nightly/opt: RlvVfNlLTqmBmPwnYKeUhg
+ partials-ms-win64-nightly/opt: eYP3d-93RbWJrNyw0pcG-A
+ partials-my-linux-nightly/opt: YCrqmWv3R4yYXs0Lzjcogg
+ partials-my-linux64-nightly/opt: M7ZsSqfyTAK8OLRG3Qedkw
+ partials-my-macosx64-nightly/opt: HJ3wrM0gStKhl5xoJh4pBA
+ partials-my-win32-nightly/opt: GSh-iBOqT0mq8Xr49ShwaQ
+ partials-my-win64-nightly/opt: PViOhvw1SnaIoRXWvFJR2w
+ partials-nb-NO-linux-nightly/opt: H8509MOfQm2a0n0VLPP3xw
+ partials-nb-NO-linux64-nightly/opt: ZxVAwHOYSXCZfrRg6FcMnA
+ partials-nb-NO-macosx64-nightly/opt: aNdv8HnITzydC9b1WSvnew
+ partials-nb-NO-win32-nightly/opt: TNWFzvZ-QS6Z3Pi8C5ebhg
+ partials-nb-NO-win64-nightly/opt: Ml8G8JvLQrK4mnElyJEDvg
+ partials-ne-NP-linux-nightly/opt: UsxcyFksT_2rNfk25VlUWQ
+ partials-ne-NP-linux64-nightly/opt: DRSEhc8VRyKkTPGLkIvqeg
+ partials-ne-NP-macosx64-nightly/opt: KzLnyMA7Ryyl-l_0JtTF0A
+ partials-ne-NP-win32-nightly/opt: HpzvQ5s7TlSLMr1ajbq02Q
+ partials-ne-NP-win64-nightly/opt: IYT0A-PnS8CdTHZa3RU0vQ
+ partials-nl-linux-nightly/opt: ElMB-MLjR3qV7dGK_pg1rg
+ partials-nl-linux64-nightly/opt: DHX068zaRHyCROy8x0lDsw
+ partials-nl-macosx64-nightly/opt: fMaW0JFSRVOIQ-ISt6kWdw
+ partials-nl-win32-nightly/opt: Qhf1Aze-SSOCFwyQKCE98Q
+ partials-nl-win64-nightly/opt: HyjXOdKST7GKX3avCY0Cfw
+ partials-nn-NO-linux-nightly/opt: I9SAOxK5QviqVmR8eX-Jqw
+ partials-nn-NO-linux64-nightly/opt: Hy0ePsUeS8aAZ6vaB8DZfA
+ partials-nn-NO-macosx64-nightly/opt: F1_OVm6ITY-osALxjLvUmA
+ partials-nn-NO-win32-nightly/opt: Mm1eCihkSuSfD0PXX4HmMg
+ partials-nn-NO-win64-nightly/opt: RmYhh7-kQlqYZmPOQoxvxA
+ partials-oc-linux-nightly/opt: DBpbLsUIRBGwssSwzuXKfg
+ partials-oc-linux64-nightly/opt: LKlUrMDXRaqW9aVgsS_oNQ
+ partials-oc-macosx64-nightly/opt: V6Y3x_7ySPqOeqEkNefJbw
+ partials-oc-win32-nightly/opt: BOAA0j7dRNGzRd2S0HS0Ig
+ partials-oc-win64-nightly/opt: GoyQLmhZRG609-cEpJEDDg
+ partials-or-linux-nightly/opt: OQTseTWcQTWTXpn5t0l1hA
+ partials-or-linux64-nightly/opt: W8jxDSgYQK6AoQSgXCL4eQ
+ partials-or-macosx64-nightly/opt: XV0NQpteSQigkxw2WKlfkA
+ partials-or-win32-nightly/opt: YTHK8v9ZS_ijrDRS660KTA
+ partials-or-win64-nightly/opt: POOfpWEiSyaYrLIRkdqiDw
+ partials-pa-IN-linux-nightly/opt: UTxKnWhXSkyNvSESHCPo7w
+ partials-pa-IN-linux64-nightly/opt: D9fWTsTNRZO0Bu84cwa19Q
+ partials-pa-IN-macosx64-nightly/opt: NhCD2LgnR1y__BfXrPOtcw
+ partials-pa-IN-win32-nightly/opt: Sc6D38YDR_COlOBvmHyFlQ
+ partials-pa-IN-win64-nightly/opt: ADYwzMNCTQCc8ZOv3CtJrw
+ partials-pl-linux-nightly/opt: dB3De6NrRKOCxR9P8F3bWQ
+ partials-pl-linux64-nightly/opt: FFXiF26jSr6Kfnkurr0lxQ
+ partials-pl-macosx64-nightly/opt: VeCZXJMRSESCz4zDN-Afxw
+ partials-pl-win32-nightly/opt: JqIBOpcbSbGWhSwE6cc24g
+ partials-pl-win64-nightly/opt: JIM9HUVaQ6-qDPR1XIR2AQ
+ partials-pt-BR-linux-nightly/opt: Woi-TPT8R3210ZlUk9Idrg
+ partials-pt-BR-linux64-nightly/opt: A-6J1DE1QXuzYm89LM16zg
+ partials-pt-BR-macosx64-nightly/opt: Vs3MrpbuSWKRR1kbJb0bOQ
+ partials-pt-BR-win32-nightly/opt: dazTOEvCSG6TB3NDQLk2cA
+ partials-pt-BR-win64-nightly/opt: O7PtroRjRJmbQl1ctXe1hg
+ partials-pt-PT-linux-nightly/opt: GX0bD7tLS82ai5LSX8V_Cg
+ partials-pt-PT-linux64-nightly/opt: etJL1kcHSeCeORI1SYXFjQ
+ partials-pt-PT-macosx64-nightly/opt: d2Htf4xbTzmA-9rZqcEeLQ
+ partials-pt-PT-win32-nightly/opt: KQ1DQukCR8C3Y9z50JxwYA
+ partials-pt-PT-win64-nightly/opt: CKueCp8XSgeXxDXqm_NrRA
+ partials-rm-linux-nightly/opt: Iuty04TaTiKuEMAXukbwqw
+ partials-rm-linux64-nightly/opt: E7nOPvS_Rq6ka9DzPXJJYg
+ partials-rm-macosx64-nightly/opt: LOJBiys0RW2BIYyVmiv5NA
+ partials-rm-win32-nightly/opt: eCWfbAxVQ4-BUTQCqp_BbQ
+ partials-rm-win64-nightly/opt: B2yQmXHLRZKqv_9dlK_f6A
+ partials-ro-linux-nightly/opt: CUZhFilIS_W2uCDmQmPMeQ
+ partials-ro-linux64-nightly/opt: JyiPPZ80RNyMMuELtTkpQg
+ partials-ro-macosx64-nightly/opt: EMGuNP82Tmu0VZFGXT0r-A
+ partials-ro-win32-nightly/opt: DTm8MGtTTm2lhwRIeHK_sw
+ partials-ro-win64-nightly/opt: a4qFw5WNSx2VLNvacihEBQ
+ partials-ru-linux-nightly/opt: cTgBcCdiSQ-tVe3kIM_uXg
+ partials-ru-linux64-nightly/opt: R26YS745TImC8wv1jh1zMQ
+ partials-ru-macosx64-nightly/opt: LUgJPl60RN2AbRYlUcqapw
+ partials-ru-win32-nightly/opt: e42u1h2gTTCDg_3DjbbG1Q
+ partials-ru-win64-nightly/opt: LMqZ7hdAQVGVKU4irCHCTg
+ partials-si-linux-nightly/opt: eYhNIhonT-icoSn7JwyR4g
+ partials-si-linux64-nightly/opt: KM_plii9QZaAMrzuBpc_tg
+ partials-si-macosx64-nightly/opt: UqeVh2X6RB2aeeaueZeUOw
+ partials-si-win32-nightly/opt: ZZpKLBUlSlKw9dXte3d1xg
+ partials-si-win64-nightly/opt: YPQSmk08ScmEuNbspPL2Lw
+ partials-signing-ach-linux-nightly/opt: HFagEw5PRHWko0LcSoNzsw
+ partials-signing-ach-linux64-nightly/opt: EA4Z7LKVRf-oSGUJ2qIo9g
+ partials-signing-ach-macosx64-nightly/opt: cYc-ETRJT-2ifpYolV6RWg
+ partials-signing-ach-win32-nightly/opt: CK6XYlXnTg2ddGOvvQwQ2w
+ partials-signing-ach-win64-nightly/opt: KBtczv6YTdegeegD30FU5w
+ partials-signing-af-linux-nightly/opt: H6_5duA4SquJnxCVSPCAKQ
+ partials-signing-af-linux64-nightly/opt: D6L560D5SJGpwCzRsFBUKQ
+ partials-signing-af-macosx64-nightly/opt: QpfXW3h3RTKVgk0NyDZwhQ
+ partials-signing-af-win32-nightly/opt: GlUhGbiEQhizNjub1v7VxQ
+ partials-signing-af-win64-nightly/opt: FgkXgoDeSdyYwLBliaS9mw
+ partials-signing-an-linux-nightly/opt: LkJsluZdQAmDxL0pt25aGQ
+ partials-signing-an-linux64-nightly/opt: XhRchsuFTv2wM9yKa2NNiQ
+ partials-signing-an-macosx64-nightly/opt: DuqA1rfhRbqvmFPjd7NIjg
+ partials-signing-an-win32-nightly/opt: YVGXtH8YRT6veIz34kWyMA
+ partials-signing-an-win64-nightly/opt: RT4bmOkEQzmJERVzWmzC0A
+ partials-signing-ar-linux-nightly/opt: KXcxo6UPQXiSCDgHaUqyzw
+ partials-signing-ar-linux64-nightly/opt: e_zXs8UiRCeHHutXWfAenQ
+ partials-signing-ar-macosx64-nightly/opt: Obys75-8RyuY6pu0sAbsAQ
+ partials-signing-ar-win32-nightly/opt: a_GJS6KhSWGq1FopDtBUlw
+ partials-signing-ar-win64-nightly/opt: a_WIZC8cSNinUijvPQgpFg
+ partials-signing-as-linux-nightly/opt: YEwEf0ZfTPKdOIe4hpAW8g
+ partials-signing-as-linux64-nightly/opt: KWsbcX_gTWOyrxDswl1Y1Q
+ partials-signing-as-macosx64-nightly/opt: Uk6SVnrlRDWMp6UtTdJ1oQ
+ partials-signing-as-win32-nightly/opt: F6rgRPTyS6efVZQHTr0sXQ
+ partials-signing-as-win64-nightly/opt: SxqzQXFCSp-Sx0PhVfFn0Q
+ partials-signing-ast-linux-nightly/opt: HfkVK97ISYGByQ1Hlio57w
+ partials-signing-ast-linux64-nightly/opt: EEZWFezOSWy5N2h74zpULA
+ partials-signing-ast-macosx64-nightly/opt: XI1QB5WhQTeOCMC-hh-AxQ
+ partials-signing-ast-win32-nightly/opt: L1IVg43UTRmL419hX5_PCw
+ partials-signing-ast-win64-nightly/opt: e7Z6oBnRQYOCfuBK221qNA
+ partials-signing-az-linux-nightly/opt: MQS3QvTSQoGaB5xIMV6vEA
+ partials-signing-az-linux64-nightly/opt: Ha1J4_z8QqSmGdRQxay5RQ
+ partials-signing-az-macosx64-nightly/opt: RBnRVYqeSoKeHb3o1YRLkQ
+ partials-signing-az-win32-nightly/opt: NiGMcATEQM-q0GCYImimXg
+ partials-signing-az-win64-nightly/opt: AON1fwXjT0qRXec4SeINLA
+ partials-signing-be-linux-nightly/opt: O0UIHhJuSkKkcCn6dsx_2Q
+ partials-signing-be-linux64-nightly/opt: QkxIo9bZTxK2Kx7eCxLBOw
+ partials-signing-be-macosx64-nightly/opt: YTVJd7S_S1CO8ika0lrNYA
+ partials-signing-be-win32-nightly/opt: M11M0QkWQzivmPqIycUFxQ
+ partials-signing-be-win64-nightly/opt: RtZpj-kkQOykwwI-FGuQAw
+ partials-signing-bg-linux-nightly/opt: BVAMwcSRS8SICXv-UsFVgQ
+ partials-signing-bg-linux64-nightly/opt: U5X48KjBRbmtz_sO0nVXww
+ partials-signing-bg-macosx64-nightly/opt: A1WVequiT3G1rR4zV_b0dQ
+ partials-signing-bg-win32-nightly/opt: QShPE4XEQbqxDf4oxgI7wQ
+ partials-signing-bg-win64-nightly/opt: Y5xCchOkSwqNCuAQZg_IQQ
+ partials-signing-bn-BD-linux-nightly/opt: GYHH1qzzQNOShwSuMPT_dA
+ partials-signing-bn-BD-linux64-nightly/opt: I8wsKm7dTDWIA644pQ8jIg
+ partials-signing-bn-BD-macosx64-nightly/opt: Y_IKp-vMSZ-IGAaHcMIuiQ
+ partials-signing-bn-BD-win32-nightly/opt: Kr0U-_iyTUubL0HujNwzrA
+ partials-signing-bn-BD-win64-nightly/opt: HM1N7b6BQT-IjC7-4Y6RSA
+ partials-signing-bn-IN-linux-nightly/opt: eLGyl7IpRju1MLbgf96VvQ
+ partials-signing-bn-IN-linux64-nightly/opt: XNHyuOBZTROV7DKzkh_Cfg
+ partials-signing-bn-IN-macosx64-nightly/opt: Hw9aEoUzS2S9cqD7Ky8s4g
+ partials-signing-bn-IN-win32-nightly/opt: ewoQX_S7RbCKcdmLN_n5_w
+ partials-signing-bn-IN-win64-nightly/opt: DVRPhidlQzm-urNjwa36vA
+ partials-signing-br-linux-nightly/opt: Ko4bJKcbSUWEn0NWpr02Qg
+ partials-signing-br-linux64-nightly/opt: LLVobCTFQnWxCkrL1TRpNw
+ partials-signing-br-macosx64-nightly/opt: SodLk-Y3RxmXtlQr37TJOA
+ partials-signing-br-win32-nightly/opt: RArn2yHQSWSBotx3R6_tBw
+ partials-signing-br-win64-nightly/opt: eu4ZKfL2QJGAwFUFBXSd3Q
+ partials-signing-bs-linux-nightly/opt: EPC2N4JyRnOWMYusK5NHIg
+ partials-signing-bs-linux64-nightly/opt: Qmo0WSmlS6m6idyP2xLYUg
+ partials-signing-bs-macosx64-nightly/opt: eWvbs-u-QT-cc8rhCZQytA
+ partials-signing-bs-win32-nightly/opt: BrA99_dwSVKmxyDkYFU2kQ
+ partials-signing-bs-win64-nightly/opt: HEJdG0cRSum5JMTUhQMCOA
+ partials-signing-ca-linux-nightly/opt: ZcVFIKpURKqqxNfdpSjRRw
+ partials-signing-ca-linux64-nightly/opt: TAphjdjiT2G7XLLpeC7kfg
+ partials-signing-ca-macosx64-nightly/opt: LsiLNm6sRuSr0zJYFPJWpQ
+ partials-signing-ca-win32-nightly/opt: GDGSd5lESLuCkIkAYlYRdg
+ partials-signing-ca-win64-nightly/opt: Wpy5EApfSe2bQhuvf_ZOmw
+ partials-signing-cak-linux-nightly/opt: HiHNbu-8QUWe_BUCLF7jkQ
+ partials-signing-cak-linux64-nightly/opt: fHlNwIRQSr2VjN5xexZ2Gg
+ partials-signing-cak-macosx64-nightly/opt: I0gqfrupSdmXR0X2lJXysg
+ partials-signing-cak-win32-nightly/opt: f7aafgJeS9Sdf8qMaMfDow
+ partials-signing-cak-win64-nightly/opt: cxow05HzSviZ-IkGdYO4qA
+ partials-signing-cs-linux-nightly/opt: OO8zctuNRrSdqEVNUWXV9w
+ partials-signing-cs-linux64-nightly/opt: BNr7mSXsTmCYL0MaauQo_w
+ partials-signing-cs-macosx64-nightly/opt: Cf25-AqCRuCiK6_NFtWzEQ
+ partials-signing-cs-win32-nightly/opt: T8FZdsJxTwurlOKi9J7JWg
+ partials-signing-cs-win64-nightly/opt: JEIbFVeAQeKNPNEGe4mJlw
+ partials-signing-cy-linux-nightly/opt: LzWo0-C1Sj6xQ1I9gP5clw
+ partials-signing-cy-linux64-nightly/opt: fbwNi0btTIGvQDLAKsHuiA
+ partials-signing-cy-macosx64-nightly/opt: WCOoDBq2TQaCttDN_6znzA
+ partials-signing-cy-win32-nightly/opt: KQvBxnirTYKG4xNP00VXwQ
+ partials-signing-cy-win64-nightly/opt: AwMafUj-R92xuGdiCkUJFg
+ partials-signing-da-linux-nightly/opt: Bbsdc8FnT2ay9YbRdvM0_g
+ partials-signing-da-linux64-nightly/opt: Hu1zrfBQQ1KF91hKGW9UHg
+ partials-signing-da-macosx64-nightly/opt: JkfUpPYiT4qCz4ttUR65mQ
+ partials-signing-da-win32-nightly/opt: VgMJX9OpRPW89fopuCgcWA
+ partials-signing-da-win64-nightly/opt: GKGjqNjsT6yQyKsyJPZlmg
+ partials-signing-de-linux-nightly/opt: QylCEFarT_ypOPwGOT6LLA
+ partials-signing-de-linux64-nightly/opt: Ud0hPUXHSH2fqpwCUnin5w
+ partials-signing-de-macosx64-nightly/opt: ddGuSWhsQ0i3GFaG9Ymd4Q
+ partials-signing-de-win32-nightly/opt: IVIf__2NRIiuL82xxtEjEg
+ partials-signing-de-win64-nightly/opt: S3c7_TuaTKi8ZvKz_pdHbg
+ partials-signing-dsb-linux-nightly/opt: RxwnY4l6T9CEIl9XEZdnuA
+ partials-signing-dsb-linux64-nightly/opt: ZGgYj0B-Qd2wupmwKr9eww
+ partials-signing-dsb-macosx64-nightly/opt: cgRQU0D6SvSQ6fQKzENk8A
+ partials-signing-dsb-win32-nightly/opt: IMsGQWQkQByq3qDcP9He9g
+ partials-signing-dsb-win64-nightly/opt: LK68qkThTwKaq_4quF1hVA
+ partials-signing-el-linux-nightly/opt: bnI_6HowSuGvuFuMZpe1rQ
+ partials-signing-el-linux64-nightly/opt: VUcnhNvNQmeGlqh-km-WLA
+ partials-signing-el-macosx64-nightly/opt: W_d_xbCRTg6AUQO-DSOZWA
+ partials-signing-el-win32-nightly/opt: dHaKYDumQp-M6JbCxTAJhw
+ partials-signing-el-win64-nightly/opt: ebfX1CUkSy2UaiGUNGbN_w
+ partials-signing-en-CA-linux-nightly/opt: KexqKrU5Tl-7fIDpzrEnzQ
+ partials-signing-en-CA-linux64-nightly/opt: aRoyCOv4RXS6EfN3ZnJsig
+ partials-signing-en-CA-macosx64-nightly/opt: SYabqzqkSJCQW28HrbaUoA
+ partials-signing-en-CA-win32-nightly/opt: fhDr14HNT5SRUDUSC56kQg
+ partials-signing-en-CA-win64-nightly/opt: RdhT8RLbQOyp5JDnB309Cg
+ partials-signing-en-GB-linux-nightly/opt: WcVUrGoQTzKmS9kv6dnHGw
+ partials-signing-en-GB-linux64-nightly/opt: ej0ETBXMRFGIdkkfKSZWxQ
+ partials-signing-en-GB-macosx64-nightly/opt: F10k1RjWQ1SnNjTwSxX6nQ
+ partials-signing-en-GB-win32-nightly/opt: Fbuz-W8SR1irbzPcMwq8tg
+ partials-signing-en-GB-win64-nightly/opt: dAiMHA7PTHqMr3iH3n8t-w
+ partials-signing-en-ZA-linux-nightly/opt: Z92VamhpR2qqmC9VmQ9M6w
+ partials-signing-en-ZA-linux64-nightly/opt: JX_7qmuUTv6z_vPlt_1GTQ
+ partials-signing-en-ZA-macosx64-nightly/opt: JP0BotuQRhSIwdz8C6LoQQ
+ partials-signing-en-ZA-win32-nightly/opt: WRxZDrwsRu2SBNVLLNPJDQ
+ partials-signing-en-ZA-win64-nightly/opt: IzOer88STTmEO5Oq1dsBCA
+ partials-signing-eo-linux-nightly/opt: PF9xUFrYRWamzw8lurLWKA
+ partials-signing-eo-linux64-nightly/opt: FtyStjxyTr60GVnaSMO2OA
+ partials-signing-eo-macosx64-nightly/opt: f3un4mmyQh6oeGAsG36L2Q
+ partials-signing-eo-win32-nightly/opt: BmiMLx6zQ6KFvcWwAP-zcA
+ partials-signing-eo-win64-nightly/opt: RIQ6gSGJTDGjwbRnPXYPYA
+ partials-signing-es-AR-linux-nightly/opt: NGBOGCF9RwKDakTfo-dKQA
+ partials-signing-es-AR-linux64-nightly/opt: UpnapbyJTk2i4HMflP9PFQ
+ partials-signing-es-AR-macosx64-nightly/opt: B5A3dglNTMmv5EoZJH-Bng
+ partials-signing-es-AR-win32-nightly/opt: Io6JVkZVS_KQ6NJRxoG1RA
+ partials-signing-es-AR-win64-nightly/opt: BlqZDY_FS3SEKAVfNSNUfQ
+ partials-signing-es-CL-linux-nightly/opt: bYSIoooTT3eQAb8Civio5Q
+ partials-signing-es-CL-linux64-nightly/opt: Fu3jHQUwR_ugWRD-JdIFgQ
+ partials-signing-es-CL-macosx64-nightly/opt: Z0js_gokTs66aVV1dN8Qbg
+ partials-signing-es-CL-win32-nightly/opt: FSkL5IotSQufAVK5MxEwgw
+ partials-signing-es-CL-win64-nightly/opt: XlaNvQ-PRZGQgHtJcFavHQ
+ partials-signing-es-ES-linux-nightly/opt: ccy56MZHTLCqLzOkkMDGVw
+ partials-signing-es-ES-linux64-nightly/opt: XO8ds6_jT0GkyNSHT9L2_A
+ partials-signing-es-ES-macosx64-nightly/opt: SUA10Z2QRny7XeiWtj0BWQ
+ partials-signing-es-ES-win32-nightly/opt: Xo_N9y8dRFa-lnznwi8nmQ
+ partials-signing-es-ES-win64-nightly/opt: Kx4to7tDQwCGENo2oYcXRg
+ partials-signing-es-MX-linux-nightly/opt: OXCN98JzQrCfx6BZ7UyYiw
+ partials-signing-es-MX-linux64-nightly/opt: bZPQHuMwRVKZHYhxDeWx2g
+ partials-signing-es-MX-macosx64-nightly/opt: fR-rcq_PQ7KVKd8bkg0WwA
+ partials-signing-es-MX-win32-nightly/opt: Mc6i5eT6RSulcMIrTljHKQ
+ partials-signing-es-MX-win64-nightly/opt: Or3pCZKdTUWzwpcNiovRGw
+ partials-signing-et-linux-nightly/opt: A_3SLX3PSRCOAl9_6US87A
+ partials-signing-et-linux64-nightly/opt: TpIe_UPTSySqyzOCEsJbgQ
+ partials-signing-et-macosx64-nightly/opt: LU4C3SNbTC2zJYrfSLco9A
+ partials-signing-et-win32-nightly/opt: Lle8PjP5QWSDBNgRLfklIQ
+ partials-signing-et-win64-nightly/opt: FPLIVD5TQTeo51W-jvSaWA
+ partials-signing-eu-linux-nightly/opt: d2_4rImRRke20XECeM72GA
+ partials-signing-eu-linux64-nightly/opt: BOEaNAmgRAu_MeHvju31uA
+ partials-signing-eu-macosx64-nightly/opt: dSuhCH8GR0KqEnrNlE0B7g
+ partials-signing-eu-win32-nightly/opt: eCx_wgFeRzSpAdLezIlUYg
+ partials-signing-eu-win64-nightly/opt: a1lri6SBQ72NOSHE-EGXCA
+ partials-signing-fa-linux-nightly/opt: VS28G3MyQqyGS2I0s9Lgbg
+ partials-signing-fa-linux64-nightly/opt: Q50vnYp5RY-LutMJO9mHqg
+ partials-signing-fa-macosx64-nightly/opt: GDWsUneZRiuy38w7bPoTlw
+ partials-signing-fa-win32-nightly/opt: fn0JzJJIQQC7_Fxzkb4e7w
+ partials-signing-fa-win64-nightly/opt: TLU4BYF4T-etQCR3Iakd2g
+ partials-signing-ff-linux-nightly/opt: TM1_-JnzSyC6AGrFIcmI7g
+ partials-signing-ff-linux64-nightly/opt: GIUyaFk7TXGdUkCzE5XqSA
+ partials-signing-ff-macosx64-nightly/opt: FRqPmANTQueDELNw0x5RAQ
+ partials-signing-ff-win32-nightly/opt: cScEorCgQamzPzdkTPtoZQ
+ partials-signing-ff-win64-nightly/opt: FGfC0EHAQpq0BzquPUj5vw
+ partials-signing-fi-linux-nightly/opt: R3yGBKNQQFi9xxbLib4ukg
+ partials-signing-fi-linux64-nightly/opt: RsFqty04TZapZbt-s3e1_g
+ partials-signing-fi-macosx64-nightly/opt: RhiB5JCpQAye2g-mxiCTjA
+ partials-signing-fi-win32-nightly/opt: TMXpLGN5S9mr2CRLT9eLpg
+ partials-signing-fi-win64-nightly/opt: ILBBSmBDTA-8KZ_z1opy_g
+ partials-signing-fr-linux-nightly/opt: Ql377gyeRraRWU94shN_UA
+ partials-signing-fr-linux64-nightly/opt: XbS7JlEaQ7agKr4Ek6xjuw
+ partials-signing-fr-macosx64-nightly/opt: UV62X3QiTiKxHbxuGdTv6Q
+ partials-signing-fr-win32-nightly/opt: GlSmvNGUSemonY_BQdh9VA
+ partials-signing-fr-win64-nightly/opt: UB0yL3LETwm2OUdbgaCXwg
+ partials-signing-fy-NL-linux-nightly/opt: dBL1gFIORqa5Uog4-qvE2g
+ partials-signing-fy-NL-linux64-nightly/opt: OcKbh_yvSd-gJT32Txjadw
+ partials-signing-fy-NL-macosx64-nightly/opt: B-gJHqn4RqWwF8DuUgihRw
+ partials-signing-fy-NL-win32-nightly/opt: Sey8SaESSv-c_QWP8MI8qg
+ partials-signing-fy-NL-win64-nightly/opt: YvGghd8PQJKrok5ovA6AfA
+ partials-signing-ga-IE-linux-nightly/opt: fBh51wkvSsOhnu7HkKfYbA
+ partials-signing-ga-IE-linux64-nightly/opt: WmHxZmWTR1unkmpq5cG_hg
+ partials-signing-ga-IE-macosx64-nightly/opt: ZR4DzfcwR52257vhxUSsRA
+ partials-signing-ga-IE-win32-nightly/opt: YiHK6uWORAGD9m2bqkx8QA
+ partials-signing-ga-IE-win64-nightly/opt: eI1MjR05RMmonrB-Mp4hVQ
+ partials-signing-gd-linux-nightly/opt: Tgfo8KPyTQ-Xg6KKgvET5g
+ partials-signing-gd-linux64-nightly/opt: QeFJ8p9KSo-KMztoRmNe_g
+ partials-signing-gd-macosx64-nightly/opt: O3MenUtxTW6ju-Mz0p5d3Q
+ partials-signing-gd-win32-nightly/opt: TNsIc8oKQ9q3q7MB1egYyg
+ partials-signing-gd-win64-nightly/opt: Qk6oNwB9SJCDXWLrwouK6A
+ partials-signing-gl-linux-nightly/opt: X2aksfBRSOKQ7hfCMhLTAg
+ partials-signing-gl-linux64-nightly/opt: ba4B8fRPQc2WMuQNIkaMSw
+ partials-signing-gl-macosx64-nightly/opt: Tb2akjwzQKCYujY_WCg95g
+ partials-signing-gl-win32-nightly/opt: JLajOHWxTaKlVqkgteYcdA
+ partials-signing-gl-win64-nightly/opt: AxChlgBZSl-XtI3e4upSYQ
+ partials-signing-gn-linux-nightly/opt: XPpHiw64RMiXu8qVjG9z7w
+ partials-signing-gn-linux64-nightly/opt: TvUzRCyDSaK3CSEdvXh-ig
+ partials-signing-gn-macosx64-nightly/opt: GxkMB9KpSRKQ_5H_jISE0w
+ partials-signing-gn-win32-nightly/opt: Vbkn7xDJRnWswYeFLhY5dw
+ partials-signing-gn-win64-nightly/opt: D4pMOk63QbGgAsAIOfHO_A
+ partials-signing-gu-IN-linux-nightly/opt: MUcMTwqUTLSb4ZJSBhFpCg
+ partials-signing-gu-IN-linux64-nightly/opt: ML3HWnMFTB-Or1kv2sk9gg
+ partials-signing-gu-IN-macosx64-nightly/opt: MJ1vbV4VT_KoQekXowifQg
+ partials-signing-gu-IN-win32-nightly/opt: T8PfnsuHR4ekjOoD4psn3w
+ partials-signing-gu-IN-win64-nightly/opt: BrgHX4MoRPG2NrE6pcb_Gg
+ partials-signing-he-linux-nightly/opt: PFb3HQGXTweIY3XJ-cau5w
+ partials-signing-he-linux64-nightly/opt: GYqeZYSrQwyOXQ0YUbJdQg
+ partials-signing-he-macosx64-nightly/opt: R0Vnc7FFRa6eZ_4t1L4vlA
+ partials-signing-he-win32-nightly/opt: cZWsMXS1SuWWPpSiYMQv2g
+ partials-signing-he-win64-nightly/opt: CRzdIslfSiaQJtpNgtiMag
+ partials-signing-hi-IN-linux-nightly/opt: bYwOOf6gQpC8XJUxX8I8Eg
+ partials-signing-hi-IN-linux64-nightly/opt: CSaK7ds3ScGSS_sTpRNzkA
+ partials-signing-hi-IN-macosx64-nightly/opt: BWZ86PHLQ2mQCFyBl68EFQ
+ partials-signing-hi-IN-win32-nightly/opt: UaVYC3PRR_yFYDqOllr3HQ
+ partials-signing-hi-IN-win64-nightly/opt: LQByOrgaS_mjjWm1jGvxJg
+ partials-signing-hr-linux-nightly/opt: P6tSPi4xQbinPVF2-aMnYw
+ partials-signing-hr-linux64-nightly/opt: B4JzROXqTYiHPzoD_Z6hSA
+ partials-signing-hr-macosx64-nightly/opt: K06XBPpTSiWdD0qXnzP8lw
+ partials-signing-hr-win32-nightly/opt: N00BdfQsQPyOjh_grOwNvA
+ partials-signing-hr-win64-nightly/opt: TGQUf_AsTDGE0uIh5_tZbw
+ partials-signing-hsb-linux-nightly/opt: Jj9OBJ5yTTySd8MfjtLBPg
+ partials-signing-hsb-linux64-nightly/opt: XcUuO7QRTMSpEehZwbLJbA
+ partials-signing-hsb-macosx64-nightly/opt: VNIpeSCzRCqabHOwTSEKhw
+ partials-signing-hsb-win32-nightly/opt: BhpMcqIsT8mtyzMRA6jHOA
+ partials-signing-hsb-win64-nightly/opt: V4TNu5KvSRuoOkTpoqr37A
+ partials-signing-hu-linux-nightly/opt: cJz-cuSTSgm1Uz3Td34R3A
+ partials-signing-hu-linux64-nightly/opt: KbgqBmS-Q7qzLQv8O0tm9Q
+ partials-signing-hu-macosx64-nightly/opt: EV-7LMn6QLS4n_cTnHl5YA
+ partials-signing-hu-win32-nightly/opt: NE_C5y9lRsihW4OXTUdVdQ
+ partials-signing-hu-win64-nightly/opt: FZqPZgLJTMyauMv4fsWlZg
+ partials-signing-hy-AM-linux-nightly/opt: KnH5x5D0SdOjdaTsONNUiw
+ partials-signing-hy-AM-linux64-nightly/opt: VmtiApuBSVCUejnGpshcUg
+ partials-signing-hy-AM-macosx64-nightly/opt: B08V2jHKR5mQqn8yoj7F5A
+ partials-signing-hy-AM-win32-nightly/opt: YsBzuxSlQca7cq-3vzFBFQ
+ partials-signing-hy-AM-win64-nightly/opt: FQNxPswTT5WfyqX0Igoc9g
+ partials-signing-ia-linux-nightly/opt: GsuIC61ZTJqhqEDOQJcsnQ
+ partials-signing-ia-linux64-nightly/opt: UVMeI2NiT6yDVWeTcyvc6g
+ partials-signing-ia-macosx64-nightly/opt: aTBf6wjIRW2nHKdxQNFLjQ
+ partials-signing-ia-win32-nightly/opt: Jyh9O_9xSrWFxbf3lbVquw
+ partials-signing-ia-win64-nightly/opt: AGuc-JPYSN2Kv0J6co6E5Q
+ partials-signing-id-linux-nightly/opt: Z9GOhgqyQ1ecKXOQ7YG7zA
+ partials-signing-id-linux64-nightly/opt: GIXlEFz0ToS6Tq8IG_m9Ww
+ partials-signing-id-macosx64-nightly/opt: dJ6pTUBrRmK1wCeQgv70jQ
+ partials-signing-id-win32-nightly/opt: U1ERee9iSqeJtrVYlUx6mw
+ partials-signing-id-win64-nightly/opt: ZZxeCI5CQGih9JRSZiA_KQ
+ partials-signing-is-linux-nightly/opt: CNumvUjkQWSzTQvuyMG_Ig
+ partials-signing-is-linux64-nightly/opt: F0nFSsjOQlGY8i0lLK5rpw
+ partials-signing-is-macosx64-nightly/opt: NWoqmB3AQduqMS8JpPCIUg
+ partials-signing-is-win32-nightly/opt: CDkv9y7PTVajXASwmIZA7A
+ partials-signing-is-win64-nightly/opt: PoeEmMQzQMW6j56-RxhMSQ
+ partials-signing-it-linux-nightly/opt: TSQMtMUkTsaUoUKUueFryA
+ partials-signing-it-linux64-nightly/opt: W93E81CoTi-sKwOshDr5yQ
+ partials-signing-it-macosx64-nightly/opt: QqRKOt5lTH2xHoiaaQkR0Q
+ partials-signing-it-win32-nightly/opt: HVVMRKcHQwWMrua7NhR9Dw
+ partials-signing-it-win64-nightly/opt: EyxoDx3vQKyFoD4CZUlUAA
+ partials-signing-ja-JP-mac-macosx64-nightly/opt: DVqhD94iQWe2GckkHGReow
+ partials-signing-ja-linux-nightly/opt: SyvHN7MtSgCx5Vy3HZAGUA
+ partials-signing-ja-linux64-nightly/opt: EVaYGAPeT5anllaYjDb7BA
+ partials-signing-ja-win32-nightly/opt: GYTxKbyoQd-TnqZcFYoZAw
+ partials-signing-ja-win64-nightly/opt: e393S4laRGKKssU0JeLffg
+ partials-signing-ka-linux-nightly/opt: EJ7bX6SGQ3qOq8K6C6f5cQ
+ partials-signing-ka-linux64-nightly/opt: etmvNo6NSy-1gvp5YNLOKA
+ partials-signing-ka-macosx64-nightly/opt: DmeQke20SiygkTDvXkPVBg
+ partials-signing-ka-win32-nightly/opt: bdoYOeNuT7uGvnaydgjndA
+ partials-signing-ka-win64-nightly/opt: eYzOV94qTMC6a7FY3rSO-w
+ partials-signing-kab-linux-nightly/opt: BA_UXBZzTkmhnfaoPAY6Hg
+ partials-signing-kab-linux64-nightly/opt: BA3VFIbsSp21UOuqh9mmIg
+ partials-signing-kab-macosx64-nightly/opt: eGjpT-hlRdGe6pvyYsW_Rw
+ partials-signing-kab-win32-nightly/opt: WWQiUbynRlKMIgCVy-muYg
+ partials-signing-kab-win64-nightly/opt: MuFBw4SyQSKmGy8uBxhGzw
+ partials-signing-kk-linux-nightly/opt: UCmRLEPcQiGD4Wo4RAHczA
+ partials-signing-kk-linux64-nightly/opt: HpyEZS5EQVKJlncwXKSkLQ
+ partials-signing-kk-macosx64-nightly/opt: RT8BYKVgR1SXSWB67G7lFA
+ partials-signing-kk-win32-nightly/opt: BEMAYLXcTjeBwR2p2CW0dQ
+ partials-signing-kk-win64-nightly/opt: GdAZzAXFRRSSSQz6n9tt1w
+ partials-signing-km-linux-nightly/opt: EE9z3RHOT32TM2azvvEAFw
+ partials-signing-km-linux64-nightly/opt: fDZzeYpMTvK02gS-qPiRFw
+ partials-signing-km-macosx64-nightly/opt: fZ9A6gpjQfSlA6zIE9eoJw
+ partials-signing-km-win32-nightly/opt: Ib6mF0QoRiOKiYhAkorleQ
+ partials-signing-km-win64-nightly/opt: N66n0iOPRLeruEheLfRY4A
+ partials-signing-kn-linux-nightly/opt: b3JFNvs2Rf-0X7FvUbHyfw
+ partials-signing-kn-linux64-nightly/opt: BxKGd83cSpOZP24zRQOFlQ
+ partials-signing-kn-macosx64-nightly/opt: Ji_0OqfzRXWjAzRDCDN3tA
+ partials-signing-kn-win32-nightly/opt: QWnDwSeEQg-9ZGXk8G--EA
+ partials-signing-kn-win64-nightly/opt: SKcgSrlaTQ6vNV5dOcguUw
+ partials-signing-ko-linux-nightly/opt: LNCiEW61Tla6tXGayl71Pw
+ partials-signing-ko-linux64-nightly/opt: SpjudpTOTG6qTkugs_657g
+ partials-signing-ko-macosx64-nightly/opt: Sb7QGroSTY2q0Vg5mTOj8w
+ partials-signing-ko-win32-nightly/opt: IB6rqpxIT1ayCwizW1JMkQ
+ partials-signing-ko-win64-nightly/opt: KCoAr5zLTTSJ8N10_UnhBw
+ partials-signing-lij-linux-nightly/opt: W3wPzV44SmKhZMzpL4kM1Q
+ partials-signing-lij-linux64-nightly/opt: Ye2ry2ccTISAoOvntiR7Nw
+ partials-signing-lij-macosx64-nightly/opt: XtijKcB0RT2PJTwSA7_owQ
+ partials-signing-lij-win32-nightly/opt: Y1TF2Cc8TwaCMVdH8sZzwQ
+ partials-signing-lij-win64-nightly/opt: NNMjQvBkSJWrIDK-ryPWUQ
+ partials-signing-linux-nightly/opt: T04aUUVQRzm7wCpc_yQ40Q
+ partials-signing-linux64-nightly/opt: Ifv7an3vS-muF4hExPfaQw
+ partials-signing-lt-linux-nightly/opt: EQaC1DEUQYes1rxWFF1Aeg
+ partials-signing-lt-linux64-nightly/opt: euYZ9At4QFKYwQjrDJrxaA
+ partials-signing-lt-macosx64-nightly/opt: W8CexpabQWu7JVqFDqNPTw
+ partials-signing-lt-win32-nightly/opt: YMORO7zIRHyueFQi51zW_A
+ partials-signing-lt-win64-nightly/opt: ZjBuGRgJQRmhtR-TNrj0EQ
+ partials-signing-lv-linux-nightly/opt: T7Won6gNQ3e3-7TKjoKAYg
+ partials-signing-lv-linux64-nightly/opt: HCMMLbPQR8ySxqtcJiz1hg
+ partials-signing-lv-macosx64-nightly/opt: RZlnc6UnS9-tboxH9fijzw
+ partials-signing-lv-win32-nightly/opt: UBPl3vxvRJaPrKfwyP1DEA
+ partials-signing-lv-win64-nightly/opt: FfXSNkOERc60lraNXu4Miw
+ partials-signing-macosx64-nightly/opt: aQtpOQQrTOmz8iDleFQOZA
+ partials-signing-mai-linux-nightly/opt: aoeCzdrbSPCIXMgz5volCw
+ partials-signing-mai-linux64-nightly/opt: BRkYVqtjQiqeAusA13olXQ
+ partials-signing-mai-macosx64-nightly/opt: XF8RfiOmRuG4hbecCYOl4g
+ partials-signing-mai-win32-nightly/opt: IZyYrboaQLuxbuwB3_IL6g
+ partials-signing-mai-win64-nightly/opt: feVYRJmcSxCmboQgak1xgA
+ partials-signing-mk-linux-nightly/opt: Z2NKBj-nQM-r2-IYQ2dBMg
+ partials-signing-mk-linux64-nightly/opt: Nct5L3XdTf6IV4So-U1jhg
+ partials-signing-mk-macosx64-nightly/opt: RGHFZ5GiR2KV1F-jQse0sg
+ partials-signing-mk-win32-nightly/opt: PRqocepiSpyd1qjvsyALiw
+ partials-signing-mk-win64-nightly/opt: cc33Qs4GSzWZSDE0dKOlnw
+ partials-signing-ml-linux-nightly/opt: Jd-m9dfwT8WIdZhjZn-W4A
+ partials-signing-ml-linux64-nightly/opt: J0fpeVsxT5KGPGzz5hYBKw
+ partials-signing-ml-macosx64-nightly/opt: BMEtJbYHT2iGPlOwU6OdMg
+ partials-signing-ml-win32-nightly/opt: Vwl1S-lqSfeLixyuIYfqzQ
+ partials-signing-ml-win64-nightly/opt: UbEsxIURQu-6oqHwgINzjQ
+ partials-signing-mr-linux-nightly/opt: JnJ8nTFtS-CAd_sqqLo4aQ
+ partials-signing-mr-linux64-nightly/opt: BsBEoTj8TPKM3btIq7hj8A
+ partials-signing-mr-macosx64-nightly/opt: ZybYQZBjRkaok0SuXqNDdw
+ partials-signing-mr-win32-nightly/opt: S6jh5HntRMyiJK10TMniPw
+ partials-signing-mr-win64-nightly/opt: L_0V5SqbSr-uY2V3OI96lA
+ partials-signing-ms-linux-nightly/opt: bXF9NJpoTmG4cQMjWkhfVQ
+ partials-signing-ms-linux64-nightly/opt: M0xh6hV-SeG1LhkHsCFxZA
+ partials-signing-ms-macosx64-nightly/opt: edZY-l6iTt6_81mhh45m8A
+ partials-signing-ms-win32-nightly/opt: BX88Q9ZuQQGVQKPUTA1oxg
+ partials-signing-ms-win64-nightly/opt: UmgzN-onQaWTiByW6ihdxg
+ partials-signing-my-linux-nightly/opt: SfEM2TWcQVSYqJyJREIlWA
+ partials-signing-my-linux64-nightly/opt: VJ7I9jcTRBGzozCecS5c9w
+ partials-signing-my-macosx64-nightly/opt: SRhq7ZCHSweci57uUtOWnQ
+ partials-signing-my-win32-nightly/opt: NgTVn8YkT4GIxXNAo9GzDQ
+ partials-signing-my-win64-nightly/opt: fs4QjnhFQj-v9UBsVQ_tyQ
+ partials-signing-nb-NO-linux-nightly/opt: Pu-iengKT064vQ3oAjbcWg
+ partials-signing-nb-NO-linux64-nightly/opt: dLRpKx4zQDeWaWfu4noPEQ
+ partials-signing-nb-NO-macosx64-nightly/opt: Ec8TX01lSf6xYOJp0j3sSQ
+ partials-signing-nb-NO-win32-nightly/opt: QtnhgzhhQ2iwk334sSfGlg
+ partials-signing-nb-NO-win64-nightly/opt: SHgNslHgSTucJ2c6TxCvsQ
+ partials-signing-ne-NP-linux-nightly/opt: LhvIbKajTui8eulAF0Jd-A
+ partials-signing-ne-NP-linux64-nightly/opt: L761ROZURkeR7aH2kbw25w
+ partials-signing-ne-NP-macosx64-nightly/opt: SV4RPoooTtSyzOXwEAUtog
+ partials-signing-ne-NP-win32-nightly/opt: XNFledIUQ1-IyLu9Ulj11g
+ partials-signing-ne-NP-win64-nightly/opt: KEiNu2alQmO2y8T-9EAtuA
+ partials-signing-nl-linux-nightly/opt: L0m2ZKIMTaWvWV6bmqTwog
+ partials-signing-nl-linux64-nightly/opt: YnadTaRJQeSz4HPPf4yC9Q
+ partials-signing-nl-macosx64-nightly/opt: BttqI6fjRd20cVYuvKDhcA
+ partials-signing-nl-win32-nightly/opt: D_sidXLITWO2qEp5yHRTAw
+ partials-signing-nl-win64-nightly/opt: QdiaGV7pQ1e9svkBnAMkLg
+ partials-signing-nn-NO-linux-nightly/opt: JqMbIfZ3T0SmG6tuQNZPrw
+ partials-signing-nn-NO-linux64-nightly/opt: FCjdyIHyRa-fEL5FpIAfwA
+ partials-signing-nn-NO-macosx64-nightly/opt: GyOyEWVkR1yoja7x9CmnwQ
+ partials-signing-nn-NO-win32-nightly/opt: CLiOhK1hQ-SMEZDTbEjhfg
+ partials-signing-nn-NO-win64-nightly/opt: BpuBXxAMQv6dBp_h9bTesg
+ partials-signing-oc-linux-nightly/opt: GB6wRt7uQwyL0pn6iXFLYQ
+ partials-signing-oc-linux64-nightly/opt: Pg6P2e5iTeS1MLpAYdg6cg
+ partials-signing-oc-macosx64-nightly/opt: U1p7L8x0RguO6Uz4hLEMuA
+ partials-signing-oc-win32-nightly/opt: UFRyNIdCQ1mjjpiLH_fKXg
+ partials-signing-oc-win64-nightly/opt: dFk91jlES52Ck1c5goeAYQ
+ partials-signing-or-linux-nightly/opt: Y0wJXx34TPmfJQpRdT9zAQ
+ partials-signing-or-linux64-nightly/opt: dkMhS2SQQYGG7Ze1fJg5jA
+ partials-signing-or-macosx64-nightly/opt: Bp3QbdkORZufbtO0epQtoA
+ partials-signing-or-win32-nightly/opt: Eoiz49t0Qde1h_6iXmdTCA
+ partials-signing-or-win64-nightly/opt: Va1J_0TEQ_-fbHVp-7aySA
+ partials-signing-pa-IN-linux-nightly/opt: CpgFQuJOSAaCg62XADAc4Q
+ partials-signing-pa-IN-linux64-nightly/opt: QkvSRRvATzKtuemh0Ml5mw
+ partials-signing-pa-IN-macosx64-nightly/opt: JGWUgYaeRd66ea_TJfJ_1Q
+ partials-signing-pa-IN-win32-nightly/opt: Jv4W7KyeQJO0-9CT5F0swQ
+ partials-signing-pa-IN-win64-nightly/opt: OHk6nHj3Rqe8LGm768H4nA
+ partials-signing-pl-linux-nightly/opt: QYF2c3kjS_Wmf97IML8qmg
+ partials-signing-pl-linux64-nightly/opt: cVTeB4tPThWJJqi_zVFVKA
+ partials-signing-pl-macosx64-nightly/opt: KbXhd1W2RhC8-K59NgGkbg
+ partials-signing-pl-win32-nightly/opt: BYfqDhD8RF-3Y3r5o_klNw
+ partials-signing-pl-win64-nightly/opt: epgztiHOSIK11y4MRgrzWA
+ partials-signing-pt-BR-linux-nightly/opt: B6-RpwnKRse2mnX4SJmOcg
+ partials-signing-pt-BR-linux64-nightly/opt: HN8Eu3DrRKOddOmTRjMm1Q
+ partials-signing-pt-BR-macosx64-nightly/opt: EKrezTz3Tx6-ahmnIZelSw
+ partials-signing-pt-BR-win32-nightly/opt: D8NG7b9AQwWrk-R4UuGcbA
+ partials-signing-pt-BR-win64-nightly/opt: Z2A_3I5JRjSvYlZl9Nr-BA
+ partials-signing-pt-PT-linux-nightly/opt: Sp2iFQYERK6otQ6c1lYmFA
+ partials-signing-pt-PT-linux64-nightly/opt: Lv1HPNd7Rei5vRDZtdSqKQ
+ partials-signing-pt-PT-macosx64-nightly/opt: GIVyHAzSToKAgsK2yMj8Nw
+ partials-signing-pt-PT-win32-nightly/opt: F8uOsEcsQvGU4oIsOde8Jw
+ partials-signing-pt-PT-win64-nightly/opt: aTyDHTuhRvWM8RiThQWn3Q
+ partials-signing-rm-linux-nightly/opt: JVpKEBbkSACcarN3dcDaGQ
+ partials-signing-rm-linux64-nightly/opt: QNmMaZYsQNehsxsTH1KIiw
+ partials-signing-rm-macosx64-nightly/opt: BkInLIFwRheTGQChBxD8EA
+ partials-signing-rm-win32-nightly/opt: Zav_MHyqT_utukmTEBDqBw
+ partials-signing-rm-win64-nightly/opt: OZe2lJwDTguiSL6b1rZ6gA
+ partials-signing-ro-linux-nightly/opt: OHiecNX7S2WeHlQ_MjbA7A
+ partials-signing-ro-linux64-nightly/opt: AT2cczbSSuiOd7mQBVaK2g
+ partials-signing-ro-macosx64-nightly/opt: Y5j3og4JRJ6A2t28hY_W6Q
+ partials-signing-ro-win32-nightly/opt: apZpUe6pSh2OHJIMXX3Log
+ partials-signing-ro-win64-nightly/opt: CmlwXdIGQsqqUU3A6Jkbcg
+ partials-signing-ru-linux-nightly/opt: VmQGCDwVQrGiaom-gSF0og
+ partials-signing-ru-linux64-nightly/opt: d114NZkXTdmannRfrrwjUA
+ partials-signing-ru-macosx64-nightly/opt: LYnTyi11TJG23OC9e5Ct7A
+ partials-signing-ru-win32-nightly/opt: dH-Twa89SI2VrieBk5MU3w
+ partials-signing-ru-win64-nightly/opt: E_4t-tMAQdm3r4TnPXUFig
+ partials-signing-si-linux-nightly/opt: RdPFHIYPSeSYImJTCBYb7A
+ partials-signing-si-linux64-nightly/opt: ZsgdEjqNSduisiTukApZ8w
+ partials-signing-si-macosx64-nightly/opt: R-6la3sSTpeknpQBJmlGng
+ partials-signing-si-win32-nightly/opt: N3zsllsbT9SGRcpLRlxIJQ
+ partials-signing-si-win64-nightly/opt: NRg6yFjxSYeaifPrgqfM0w
+ partials-signing-sk-linux-nightly/opt: T4MtDvaSSu-rBzsV4TGkDQ
+ partials-signing-sk-linux64-nightly/opt: CWSR6mMcSdqfhfggDdARKQ
+ partials-signing-sk-macosx64-nightly/opt: JNvrT_0lRxGShu247lQFPQ
+ partials-signing-sk-win32-nightly/opt: CV4OzJP3R2Ca0_opmA5OMw
+ partials-signing-sk-win64-nightly/opt: OTVpBrHRTqatOKAdJpzaIg
+ partials-signing-sl-linux-nightly/opt: EWgPEw0sTROiv9gEaKLidQ
+ partials-signing-sl-linux64-nightly/opt: DB-yjqloQOaTju-day8qbA
+ partials-signing-sl-macosx64-nightly/opt: NUQb9EGZQuSuiWNEJBt6xA
+ partials-signing-sl-win32-nightly/opt: Gxt6eOOUSb-LaD-y2ccGfQ
+ partials-signing-sl-win64-nightly/opt: LYcB8fPGQfmy0q4h7g3vGA
+ partials-signing-son-linux-nightly/opt: YC0jGgEkR4ef5ENvwvAvzA
+ partials-signing-son-linux64-nightly/opt: Yvt3Uq9-SZyabCMJ60vbhg
+ partials-signing-son-macosx64-nightly/opt: NiX99GMxRaewTq63mg2t9Q
+ partials-signing-son-win32-nightly/opt: Nc7n71uuR1-AZnAf8-Pwiw
+ partials-signing-son-win64-nightly/opt: HpRjouzNRuOYg49ha-EeQQ
+ partials-signing-sq-linux-nightly/opt: IhzuV2VFR0GBJIfQKidA1g
+ partials-signing-sq-linux64-nightly/opt: AH5UETeHRpiVMXc1IeFH5Q
+ partials-signing-sq-macosx64-nightly/opt: IuamAc3JTwyQIZ1sxWioVA
+ partials-signing-sq-win32-nightly/opt: cB6VNL0eTjG9kib0VUWzPQ
+ partials-signing-sq-win64-nightly/opt: VJLDyf5KSGCSt_L8_TbNTQ
+ partials-signing-sr-linux-nightly/opt: aODBSmmUQG-Y1eSwnR86ig
+ partials-signing-sr-linux64-nightly/opt: Or4SHpQCR92c2rWvPNliuA
+ partials-signing-sr-macosx64-nightly/opt: MEV9mDjfQpOAcr3BzfOVTg
+ partials-signing-sr-win32-nightly/opt: D44Y1OcYQZqY1t0EmwYG3Q
+ partials-signing-sr-win64-nightly/opt: DD1mKBolTXeLdail6v5nBw
+ partials-signing-sv-SE-linux-nightly/opt: eqSPMOAgQtS-rkTnvY9LEg
+ partials-signing-sv-SE-linux64-nightly/opt: dC8d6eNrSNWUJRTaBNnvTw
+ partials-signing-sv-SE-macosx64-nightly/opt: AuqeE3nTRTCbrQlGw4ey8Q
+ partials-signing-sv-SE-win32-nightly/opt: Kxxo8GVBTjuQZgjxN-rawA
+ partials-signing-sv-SE-win64-nightly/opt: dgoJ77slRvqSbzZOKUujxg
+ partials-signing-ta-linux-nightly/opt: LPE9v8THR-6jz771SwxiiQ
+ partials-signing-ta-linux64-nightly/opt: FwdSJNupQ3qeG8ZVioC3Wg
+ partials-signing-ta-macosx64-nightly/opt: bET7fpbTSa6kk-2cLgkPWA
+ partials-signing-ta-win32-nightly/opt: bpjB8KnGRqmBKohbFRSE-g
+ partials-signing-ta-win64-nightly/opt: Z1Zw-iC4SgiM3rcx5-8YfQ
+ partials-signing-te-linux-nightly/opt: StFezEXAQQWrdbrN-1Bgdg
+ partials-signing-te-linux64-nightly/opt: SSKHLd40SJ2B-_XVsOgIcA
+ partials-signing-te-macosx64-nightly/opt: IbKRgEhnQzSWwltw81pUdA
+ partials-signing-te-win32-nightly/opt: CHIHPBJ0TDm53fMy9jnHyA
+ partials-signing-te-win64-nightly/opt: P8HomZeSSSGW63mTm6qIkw
+ partials-signing-th-linux-nightly/opt: c6232nKdTqG6WldZsUiR3A
+ partials-signing-th-linux64-nightly/opt: Et2Wkk8AQfG0XP_0yXrDPA
+ partials-signing-th-macosx64-nightly/opt: EAtTH3L_Ti2dPLmw931kNA
+ partials-signing-th-win32-nightly/opt: KNARLNm-RKeHLCoewwjNnQ
+ partials-signing-th-win64-nightly/opt: FBjizMtMS1i1GR7vcj72iw
+ partials-signing-tr-linux-nightly/opt: E3U62hJXSGGe-PDyzFEgrw
+ partials-signing-tr-linux64-nightly/opt: Aq5-AhdzQhqAqvSDnPQynw
+ partials-signing-tr-macosx64-nightly/opt: Mpu6pi1oQiCtRZD0pf9rKw
+ partials-signing-tr-win32-nightly/opt: AMHH4hfZSPinGb37kakkxw
+ partials-signing-tr-win64-nightly/opt: RRee5K_jQ2aBImWzicKkog
+ partials-signing-uk-linux-nightly/opt: C6pvWIK0RHqsU6FJfBElzA
+ partials-signing-uk-linux64-nightly/opt: FqjeC0y5QDqwcYXBK2rOrw
+ partials-signing-uk-macosx64-nightly/opt: Y1qMqpkGQOWXdl9VN0l7mQ
+ partials-signing-uk-win32-nightly/opt: fWlBOH-RTm2M8yg4Pc1pCA
+ partials-signing-uk-win64-nightly/opt: MlNjzMO8TrCZw6oQhYARkQ
+ partials-signing-ur-linux-nightly/opt: WVXEdW5HRzawbt-jUUlOGQ
+ partials-signing-ur-linux64-nightly/opt: OUjhskk3TYCRg8u6Jj2eSA
+ partials-signing-ur-macosx64-nightly/opt: NOgN3hZ1TuaGlwQ3mk72sQ
+ partials-signing-ur-win32-nightly/opt: SCd1vdZjRLO8lMhAP-fWZQ
+ partials-signing-ur-win64-nightly/opt: cRmqw9TpSUKQnOYYCFZtcQ
+ partials-signing-uz-linux-nightly/opt: JP4om1FvTKyzRJX0XR6ghg
+ partials-signing-uz-linux64-nightly/opt: G1KLE1EKSYqA4g6gDppzzg
+ partials-signing-uz-macosx64-nightly/opt: FqnI8iINTOKURfvUE-z9Lg
+ partials-signing-uz-win32-nightly/opt: Tl3v6XQdQEa-wtZvdaQhFw
+ partials-signing-uz-win64-nightly/opt: WkCMuPZtS1S0i4gFCymm7Q
+ partials-signing-vi-linux-nightly/opt: awoXvHjdTmWET22pq3Ksrg
+ partials-signing-vi-linux64-nightly/opt: FvqlrJTKTbWeSyFkAviPhg
+ partials-signing-vi-macosx64-nightly/opt: TChQ7dFPSc-luX07hHM4qg
+ partials-signing-vi-win32-nightly/opt: d9G2IpdfRqSp5hAyCiupiQ
+ partials-signing-vi-win64-nightly/opt: TXY6mx1xSWm3DkF1EJzHdw
+ partials-signing-win32-nightly/opt: R0v_rS_KRh295iS4cyWWMw
+ partials-signing-win64-nightly/opt: YZOEGRV1SoW0I1HxEEqRpw
+ partials-signing-xh-linux-nightly/opt: epd-p0krQyuQ-C0A0Bmulw
+ partials-signing-xh-linux64-nightly/opt: GX5vA-XnTsu9Cq5edvm4Fw
+ partials-signing-xh-macosx64-nightly/opt: cSIDU3n2Sx-Ml8XscJDgmQ
+ partials-signing-xh-win32-nightly/opt: MApwHMmQRc-HlQnEcGqDrQ
+ partials-signing-xh-win64-nightly/opt: YQ_YNpGMQMOyoqu-vwrIMg
+ partials-signing-zh-CN-linux-nightly/opt: Qb3NimSDQFSTgcJD2cyZhg
+ partials-signing-zh-CN-linux64-nightly/opt: NjJwrOGRQuCjPTVzxnR_Ng
+ partials-signing-zh-CN-macosx64-nightly/opt: OVy9cU62T1-hdUiSR7CEOA
+ partials-signing-zh-CN-win32-nightly/opt: UiO5ZLpXSfi_dlZcsfJVFw
+ partials-signing-zh-CN-win64-nightly/opt: DPXgDB4_T9a3R61lS_3gnA
+ partials-signing-zh-TW-linux-nightly/opt: VY-4RKyoQAKUZsl7wUxhVA
+ partials-signing-zh-TW-linux64-nightly/opt: IkuTLVIZRSqZ-fNXd2sLfA
+ partials-signing-zh-TW-macosx64-nightly/opt: WRPBJpwgS9-41ID_tIc_NQ
+ partials-signing-zh-TW-win32-nightly/opt: UbKjBPvVQKSqjBNeh-2scw
+ partials-signing-zh-TW-win64-nightly/opt: eLUgAmLXTP2FFzRDCwAgeQ
+ partials-sk-linux-nightly/opt: JWBjz51mSnmOuNvhUBhH9w
+ partials-sk-linux64-nightly/opt: HfwLHZTXRbq-By5_jpHwbQ
+ partials-sk-macosx64-nightly/opt: e0YbExcMQlqfxbmXd37_Ng
+ partials-sk-win32-nightly/opt: Y_rbbkGdRQ2BR5DPifzpkw
+ partials-sk-win64-nightly/opt: CiNh_GC5Q9a1-tqtFeATig
+ partials-sl-linux-nightly/opt: WcxKNHUoSTyXy_INgIe6ZQ
+ partials-sl-linux64-nightly/opt: c6cLMrpURQSnaD60lpfCQw
+ partials-sl-macosx64-nightly/opt: Ptp4n5wdQxSHyUgtk0o_dQ
+ partials-sl-win32-nightly/opt: FKklbhmJSNqolzbavZ85Pw
+ partials-sl-win64-nightly/opt: cbSOtWXzSf-vF2yoxHsy7w
+ partials-son-linux-nightly/opt: DoBEUu91T4m4LBTKzLvIHA
+ partials-son-linux64-nightly/opt: YmH0dF9iSbaxTefJZ5i1FA
+ partials-son-macosx64-nightly/opt: SMFzkXRvQS2mij-P4LOn8w
+ partials-son-win32-nightly/opt: fb82d1Z7Tf-dFAnVDAIVlA
+ partials-son-win64-nightly/opt: aZxmIGLtRPGd_z54-6bznw
+ partials-sq-linux-nightly/opt: ZyjGaJZrS3qDYu51pMCxiQ
+ partials-sq-linux64-nightly/opt: CS1f0M7OS5eo8I8BPzAaaA
+ partials-sq-macosx64-nightly/opt: MF6b3kq7TReESyISL4pyhg
+ partials-sq-win32-nightly/opt: YlasrAVPSUmHKh010CARxQ
+ partials-sq-win64-nightly/opt: YoeX1ntqQGO5ab7jDbydww
+ partials-sr-linux-nightly/opt: OlfVvC6qS1GbpqoB5rWU7A
+ partials-sr-linux64-nightly/opt: Ln7501zLRuuXS8oBV9-h1w
+ partials-sr-macosx64-nightly/opt: ZLQqQGHwQIqw-ywujYTa8g
+ partials-sr-win32-nightly/opt: YMd5e9LFRWWZP6SG2HjJFw
+ partials-sr-win64-nightly/opt: D35NI5_7RY6MtwSX5qQokg
+ partials-sv-SE-linux-nightly/opt: Wq-p2LMzTWeOPUm6O2VadQ
+ partials-sv-SE-linux64-nightly/opt: ZBEvi0IdRo2501eZXHYmKA
+ partials-sv-SE-macosx64-nightly/opt: HhUngiTrTUi2c5OONpjBfw
+ partials-sv-SE-win32-nightly/opt: PZqmARJqT1WuSRiUtk1epg
+ partials-sv-SE-win64-nightly/opt: AlgXg-cEQtCe_T6jxmEBtg
+ partials-ta-linux-nightly/opt: DGWMArITQvuYANCiw4RNOw
+ partials-ta-linux64-nightly/opt: d2fT_R95RpuydwFkKc2Eug
+ partials-ta-macosx64-nightly/opt: NI0D74LaSx2mw9zUAwOxQg
+ partials-ta-win32-nightly/opt: BB97eDpwRgGld7fKXZRwrQ
+ partials-ta-win64-nightly/opt: X2CUJBKhShO5qZ8R4ElScA
+ partials-te-linux-nightly/opt: cxZjV4GcTemo9H3Vj3MvnQ
+ partials-te-linux64-nightly/opt: YR74lHRRRSWuAE9CldZfdg
+ partials-te-macosx64-nightly/opt: ZbuPgm4ARuCbfgYh0Njurw
+ partials-te-win32-nightly/opt: fueEbwe5T_mW3kM_3VbU5A
+ partials-te-win64-nightly/opt: NYpVIi0pRwmVRB1eqN-5Mg
+ partials-th-linux-nightly/opt: QB7vDPmtR46sN9ViTzlMDw
+ partials-th-linux64-nightly/opt: CJMuej4eSg63TDYE_u8y1g
+ partials-th-macosx64-nightly/opt: KzCyOkxDQpm521et3WIF_g
+ partials-th-win32-nightly/opt: Cp7jL98VQ1GFiXTjMlgMOg
+ partials-th-win64-nightly/opt: evG5J6NlQeOja13TmwnouA
+ partials-tr-linux-nightly/opt: R5FgxMjyT5ayP9fh1wUfdA
+ partials-tr-linux64-nightly/opt: AnF3U5HxRw6pRy9hzZBUuw
+ partials-tr-macosx64-nightly/opt: RDnfbO2_Toq3d-m6LHrS8g
+ partials-tr-win32-nightly/opt: SmA8BSCHQai0X3AKz68URQ
+ partials-tr-win64-nightly/opt: YNQzbnCqTkWs_HCAN8VxRA
+ partials-uk-linux-nightly/opt: FS-9hLxdRuiH_9-rVX1tbA
+ partials-uk-linux64-nightly/opt: G7wdY_i8Qca6bMKKpNIcCQ
+ partials-uk-macosx64-nightly/opt: NmDJJ9KCQ3mIYmwwkUmauQ
+ partials-uk-win32-nightly/opt: EP-LW18QQueBfjkGaYM4SQ
+ partials-uk-win64-nightly/opt: GxtSL9YiQhi9fS0Tm-aonw
+ partials-ur-linux-nightly/opt: XLNzvLOYT2CwMrAx81p66g
+ partials-ur-linux64-nightly/opt: MwTNutzZTGmBzbbDhjy1hQ
+ partials-ur-macosx64-nightly/opt: GGd41stbR9OenOwoE5KC5Q
+ partials-ur-win32-nightly/opt: SRM6Bvf5QVWVf8EMc2-erA
+ partials-ur-win64-nightly/opt: XZoxgjRPRQmEpwGama8QTA
+ partials-uz-linux-nightly/opt: ICSwtIM-Tnqx1GZt15GtpQ
+ partials-uz-linux64-nightly/opt: Ce06NWnnTdm7GiRkyt2JeQ
+ partials-uz-macosx64-nightly/opt: e9K1azbuT06J6HmRzmS54Q
+ partials-uz-win32-nightly/opt: fMVBX9kyR3uo7lkCccj73Q
+ partials-uz-win64-nightly/opt: A3JRM_-MSEyngYWzlNQMyQ
+ partials-vi-linux-nightly/opt: L5zkQaepQA6gbWfDuzORYw
+ partials-vi-linux64-nightly/opt: BS2JOn0ARg6p6XdjFG_qtQ
+ partials-vi-macosx64-nightly/opt: eUCnrjRiTFC2URiKfoTsFw
+ partials-vi-win32-nightly/opt: EgcnLZKnR9aruqO8nNTcLw
+ partials-vi-win64-nightly/opt: dERNAo43TfafzoRB6YW8JQ
+ partials-win32-nightly/opt: U2Jlf-c9Qy2d4ffUaWMKtw
+ partials-win64-nightly/opt: Oc13MSXMR8-1MI2UaQQOZg
+ partials-xh-linux-nightly/opt: K-t7E1R5SAatRj4696WS6g
+ partials-xh-linux64-nightly/opt: ckHbWBYxR6azJsbHz3AwWg
+ partials-xh-macosx64-nightly/opt: M0YVQJm7SRe5HxRklz4zBg
+ partials-xh-win32-nightly/opt: F54k6sIHQkujUDh7iPTnAA
+ partials-xh-win64-nightly/opt: QK5GcEC_RZ2BPlQqd-aoow
+ partials-zh-CN-linux-nightly/opt: MByojppzQNqJNO2cxDF-TA
+ partials-zh-CN-linux64-nightly/opt: ZSxGcjlvQ7OSGRJv9AkU7A
+ partials-zh-CN-macosx64-nightly/opt: bliPH5_qQ2qkQo9-K9efjg
+ partials-zh-CN-win32-nightly/opt: PYQkh72_Sz2T45ul5FK-cw
+ partials-zh-CN-win64-nightly/opt: RbtvPiOHTH6sPydxy5EATw
+ partials-zh-TW-linux-nightly/opt: e2meTx-vQQG6yrOFN2Y_tA
+ partials-zh-TW-linux64-nightly/opt: IuVm9JqSSTaWGEDiRfbHTw
+ partials-zh-TW-macosx64-nightly/opt: NizyZm_ZSVySFykPtOxkdw
+ partials-zh-TW-win32-nightly/opt: dV3MpU42StGK2ys01yGGfQ
+ partials-zh-TW-win64-nightly/opt: aCg_H9I-Rs2Iud9Ggm37oQ
+ post-balrog-dummy-firefox-linux-nightly-1: MGqSFisGQsONNpfAthJZtw
+ post-balrog-dummy-firefox-linux64-nightly-1: EkPHkJJsQQiFSuqiZlx4iw
+ post-balrog-dummy-firefox-macosx64-nightly-1: YMnot-NTR-SukLmgZwqJmA
+ post-balrog-dummy-firefox-win32-nightly-1: MSE6DNoiS7Wc-v5CZKJPtw
+ post-balrog-dummy-firefox-win64-nightly-1: KfqM66AWRdWXlp0jvGjnjQ
+ post-beetmover-checksums-dummy-firefox-promote-1: EbHB0OMJQsmhrSjf6VBa1A
+ post-beetmover-checksums-dummy-firefox-promote-2: fXJoKrTJThO-latWN7bt-A
+ post-beetmover-checksums-dummy-firefox-promote-3: AuJIj5WxRY65-XUmn8W8lA
+ post-beetmover-checksums-dummy-firefox-promote-4: CFAwRGVxTHuzxEgx-IJJSQ
+ post-beetmover-checksums-dummy-firefox-promote-5: eQpQAvVmTaCzvC9zVYSoQA
+ post-beetmover-checksums-dummy-firefox-promote-6: BheuQTuWQAix0lf3R81Q0A
+ post-beetmover-checksums-dummy-firefox-promote-7: LGU8P2TJTpCG4YICOmBNLQ
+ post-beetmover-checksums-dummy-firefox-promote-8: Gk3jqWUZS9iDFyyrl2u81g
+ post-beetmover-checksums-dummy-firefox-promote-9: Ciy0YKjyStyJuYCSSA6PPg
+ post-beetmover-dummy-firefox-linux-nightly-1: VKKyqbdlRBKiAbOjKsUHjg
+ post-beetmover-dummy-firefox-linux-nightly-2: TKWnieYcQySGwviNOVyg2g
+ post-beetmover-dummy-firefox-linux64-nightly-1: C8hLe18-QH6mHIgIPT6XTQ
+ post-beetmover-dummy-firefox-linux64-nightly-2: f9GFT5TtRLmFE43WYo8S0Q
+ post-beetmover-dummy-firefox-macosx64-nightly-1: fnmT-MKbRTijEZhh7B7paA
+ post-beetmover-dummy-firefox-macosx64-nightly-2: JQVK6RFWS_yEUQsVZ1EaNA
+ post-beetmover-dummy-firefox-win32-nightly-1: HjMmJZvtSRa8LQVfYaj9Xg
+ post-beetmover-dummy-firefox-win32-nightly-2: IZon-Em4S8O72XvPLLvzIA
+ post-beetmover-dummy-firefox-win64-nightly-1: C0iZ7GACRnSaz4bVpWPVKA
+ post-beetmover-dummy-firefox-win64-nightly-2: BMRyJOQETseq-FVZyDmNrg
+ post-langpack-dummy-firefox-promote-1: Z-ltNiBVR6OtcEvYoGonXA
+ post-langpack-dummy-firefox-promote-2: fUMLTRltTcKzwEHTUgO38w
+ release-balrog-submit-toplevel-firefox: AsmTM6aNTZGz136nc1sicg
+ release-balrog-submit-toplevel-firefox-bz2: Nl3bOXrFRsKXNTAEWGQ_AA
+ release-beetmover-signed-langpacks-checksums-linux-1/opt: R70INVx1SQOuL3c_HQupxg
+ release-beetmover-signed-langpacks-checksums-linux-10/opt: L_9bKU7eTaK74ees9OPsQQ
+ release-beetmover-signed-langpacks-checksums-linux-11/opt: RQmaWu8yQVGatGJKcOukwQ
+ release-beetmover-signed-langpacks-checksums-linux-12/opt: G1HJ8HsETQObBsqEdW4RQw
+ release-beetmover-signed-langpacks-checksums-linux-13/opt: A5CChUOLTc-6sRYKEXOJAw
+ release-beetmover-signed-langpacks-checksums-linux-14/opt: PX0BZE9hSM6xO3FOLqfl2w
+ release-beetmover-signed-langpacks-checksums-linux-15/opt: eX_tcf9VRVG6A3h8iZaTYQ
+ release-beetmover-signed-langpacks-checksums-linux-16/opt: WSQagOrzRGKsCyBwzuwP8g
+ release-beetmover-signed-langpacks-checksums-linux-17/opt: BsRIMsXDQmKA4PbMlY3RdQ
+ release-beetmover-signed-langpacks-checksums-linux-18/opt: e4QgSToQRFmfi3pr3nNP6g
+ release-beetmover-signed-langpacks-checksums-linux-19/opt: Sy19Rt3tTyeD-f9d1p7EfQ
+ release-beetmover-signed-langpacks-checksums-linux-2/opt: XOc4YsTnTjqp8b9OaBIS6Q
+ release-beetmover-signed-langpacks-checksums-linux-20/opt: XO6fl2SmQf6utHPUKxbHeQ
+ release-beetmover-signed-langpacks-checksums-linux-3/opt: D6cVUe91Rl-ujNKd8V9AIQ
+ release-beetmover-signed-langpacks-checksums-linux-4/opt: CiOdCxp3TIqHTItYx0J02g
+ release-beetmover-signed-langpacks-checksums-linux-5/opt: TOlgrlkfR8eGBxvJ3fCnyg
+ release-beetmover-signed-langpacks-checksums-linux-6/opt: YAfx-_KQTny49HBSw5qq3Q
+ release-beetmover-signed-langpacks-checksums-linux-7/opt: aZKj5_ykRhmYHkPR9puFjw
+ release-beetmover-signed-langpacks-checksums-linux-8/opt: Ydypa16JRKKzdA0rRYAvPw
+ release-beetmover-signed-langpacks-checksums-linux-9/opt: X5H_LvuBSsKCekbEZ2bRjw
+ release-beetmover-signed-langpacks-checksums-linux/opt: cZDYaiiDTFO6L57KigFm2w
+ release-beetmover-signed-langpacks-checksums-linux64-1/opt: OuH5lBMHQl620_XL5KVxbA
+ release-beetmover-signed-langpacks-checksums-linux64-10/opt: A2LH1wE6S7Woeiq173VQlQ
+ release-beetmover-signed-langpacks-checksums-linux64-11/opt: b_qxYv5uSKCKwSpOdQk8EA
+ release-beetmover-signed-langpacks-checksums-linux64-12/opt: FTXV0epESqWEgLG8I42QNw
+ release-beetmover-signed-langpacks-checksums-linux64-13/opt: HuTeMIz5ROmSGx0q8yJTtQ
+ release-beetmover-signed-langpacks-checksums-linux64-14/opt: TdwknkVeQpW7An96PtcCuQ
+ release-beetmover-signed-langpacks-checksums-linux64-15/opt: UfP7dbqmR4ugUU41ibPNqg
+ release-beetmover-signed-langpacks-checksums-linux64-16/opt: WHDuKjg9Rzyu0nLiR_JF-g
+ release-beetmover-signed-langpacks-checksums-linux64-17/opt: DaUSzHp6R6WvFvkEBz9soQ
+ release-beetmover-signed-langpacks-checksums-linux64-18/opt: NR98OF2FR2GpRppbPlrjOQ
+ release-beetmover-signed-langpacks-checksums-linux64-19/opt: fFNyMc2LTAiD59n7uI9e4g
+ release-beetmover-signed-langpacks-checksums-linux64-2/opt: NYL17RUPR2W5mwHxFqncuw
+ release-beetmover-signed-langpacks-checksums-linux64-20/opt: J8gWyDBJRoOhylV6EwEqLg
+ release-beetmover-signed-langpacks-checksums-linux64-3/opt: Od66mcUVSdW5qzjET-N7aA
+ release-beetmover-signed-langpacks-checksums-linux64-4/opt: IUrV-KGrRI2jiYdmuH76oQ
+ release-beetmover-signed-langpacks-checksums-linux64-5/opt: S4lP9btRSg6Fzv09M_ADbQ
+ release-beetmover-signed-langpacks-checksums-linux64-6/opt: TTnzkE3fTlK94aON6fOTAQ
+ release-beetmover-signed-langpacks-checksums-linux64-7/opt: IJzTX-9VQxi-z6-o_fMUHA
+ release-beetmover-signed-langpacks-checksums-linux64-8/opt: GrHy0qB4SLCizByHCWzk9w
+ release-beetmover-signed-langpacks-checksums-linux64-9/opt: BkGRkYQYRmKcJ-asc2B19Q
+ release-beetmover-signed-langpacks-checksums-linux64/opt: K6TDWIu9QxSt75TLxA_9Mw
+ release-beetmover-signed-langpacks-checksums-macosx64-1/opt: Xd2W-BS1QoSCWj9MYL-DuA
+ release-beetmover-signed-langpacks-checksums-macosx64-10/opt: Z_DIGGjVTQipBaM-JabD9Q
+ release-beetmover-signed-langpacks-checksums-macosx64-11/opt: V4RijlP4Q6aAtWK5K54tzw
+ release-beetmover-signed-langpacks-checksums-macosx64-12/opt: Sdvn1F_-REeiZzJpC5cH9Q
+ release-beetmover-signed-langpacks-checksums-macosx64-13/opt: K08Zn9atQ0mrgThhNIs77g
+ release-beetmover-signed-langpacks-checksums-macosx64-14/opt: bm5FwMr0RzyUzdsUIK93eQ
+ release-beetmover-signed-langpacks-checksums-macosx64-15/opt: A0aI5N8wQ3ys2KZ8-GZaMw
+ release-beetmover-signed-langpacks-checksums-macosx64-16/opt: RnViq2D1TZepEeNSvnz3JA
+ release-beetmover-signed-langpacks-checksums-macosx64-17/opt: Yy2lGBeYRwCyUnI0XET9zw
+ release-beetmover-signed-langpacks-checksums-macosx64-18/opt: YtDHfhLYSxOUxKvnxBoIOw
+ release-beetmover-signed-langpacks-checksums-macosx64-19/opt: ASOGRPEsTqCz4N4T5sl6lg
+ release-beetmover-signed-langpacks-checksums-macosx64-2/opt: UnlPmgjUQEqc53FBFe5shQ
+ release-beetmover-signed-langpacks-checksums-macosx64-20/opt: YIkiEnXGTsCNd_Lhoj4aiQ
+ release-beetmover-signed-langpacks-checksums-macosx64-3/opt: AgTWGe0lRUOsu8gmQXsTjA
+ release-beetmover-signed-langpacks-checksums-macosx64-4/opt: QOa32xX5R4uIB20yy6S4yw
+ release-beetmover-signed-langpacks-checksums-macosx64-5/opt: E8vg_Yb0Tf2lqT4WZOPrVw
+ release-beetmover-signed-langpacks-checksums-macosx64-6/opt: DcZiLugGTfiBUv12pZp_4w
+ release-beetmover-signed-langpacks-checksums-macosx64-7/opt: TIH_iY2vRri9h52aXik9_w
+ release-beetmover-signed-langpacks-checksums-macosx64-8/opt: ZQorGYbWQEekHE-nl0YBHw
+ release-beetmover-signed-langpacks-checksums-macosx64-9/opt: dYeIXt3UShyNEkGTywKMGA
+ release-beetmover-signed-langpacks-checksums-macosx64-nightly-11/opt: dhYHslNCSZualrXJFabzCg
+ release-beetmover-signed-langpacks-checksums-macosx64/opt: BmAcxd1GST2FTjusrIWaeg
+ release-beetmover-signed-langpacks-checksums-win32-1/opt: US3RHBUPTG-9hQyowgN2Ew
+ release-beetmover-signed-langpacks-checksums-win32-10/opt: YlPaRQmmTrKL8O-QBrQHxQ
+ release-beetmover-signed-langpacks-checksums-win32-11/opt: U7FfqgouQIuCDI6XL-uK9A
+ release-beetmover-signed-langpacks-checksums-win32-12/opt: TG8T7cftRZyc-pAVG8vlHg
+ release-beetmover-signed-langpacks-checksums-win32-13/opt: Una3xeGwTwKLr06bWLK_vg
+ release-beetmover-signed-langpacks-checksums-win32-14/opt: So7N4x-rSuKqFvau7NLqwA
+ release-beetmover-signed-langpacks-checksums-win32-15/opt: GXB626K2QFyB7B2G6_5Dhw
+ release-beetmover-signed-langpacks-checksums-win32-16/opt: c59Vt2npT5qIwA4j7MbD9A
+ release-beetmover-signed-langpacks-checksums-win32-17/opt: DdID_qxASyy7Z2YFcUevAQ
+ release-beetmover-signed-langpacks-checksums-win32-18/opt: FjtKq6afTx--4JfvG0IuQw
+ release-beetmover-signed-langpacks-checksums-win32-19/opt: FhWQdBRUSQKBFZJlLM4n3w
+ release-beetmover-signed-langpacks-checksums-win32-2/opt: ftkaiX1dTFiWYkJ1OqchUA
+ release-beetmover-signed-langpacks-checksums-win32-20/opt: D_sV6M-uSAOVhsoTe_mQxQ
+ release-beetmover-signed-langpacks-checksums-win32-3/opt: GrxSlh_RRuayNnidwK1QAw
+ release-beetmover-signed-langpacks-checksums-win32-4/opt: E-SjMvoJRQ6YaKW41O8Ufw
+ release-beetmover-signed-langpacks-checksums-win32-5/opt: GOCMkzJKREiIZQTqLMaD1Q
+ release-beetmover-signed-langpacks-checksums-win32-6/opt: DNQQqPRrSNCJlBAnuWDsZQ
+ release-beetmover-signed-langpacks-checksums-win32-7/opt: XU47qN0yRmKKZmnSJyqyQw
+ release-beetmover-signed-langpacks-checksums-win32-8/opt: YuMQ_KQRRg267Z1kEqPJQg
+ release-beetmover-signed-langpacks-checksums-win32-9/opt: eIXEboE3TWSK1MDuD-KyoA
+ release-beetmover-signed-langpacks-checksums-win32/opt: FBbsk_sKRo2N_aKBAyr2Jg
+ release-beetmover-signed-langpacks-checksums-win64-1/opt: OghyLqj5TtOokFUxN8MccA
+ release-beetmover-signed-langpacks-checksums-win64-10/opt: cO_DyW-_RMuSQaDJDtsifA
+ release-beetmover-signed-langpacks-checksums-win64-11/opt: Ni1zl90iRlyR-NgDega3yw
+ release-beetmover-signed-langpacks-checksums-win64-12/opt: XX2NXc4jQv2_tgP3_iZXIA
+ release-beetmover-signed-langpacks-checksums-win64-13/opt: EOj7Tt2JR2qb79R-X3M3IA
+ release-beetmover-signed-langpacks-checksums-win64-14/opt: DL7j6E8lRliTACQ__GmDGg
+ release-beetmover-signed-langpacks-checksums-win64-15/opt: dOtqXD8DQ6WdUkyh8RnRcg
+ release-beetmover-signed-langpacks-checksums-win64-16/opt: aY6PUEwCTUys_XmD9CukpA
+ release-beetmover-signed-langpacks-checksums-win64-17/opt: DsCshlOLQ9W9SZB5325oFw
+ release-beetmover-signed-langpacks-checksums-win64-18/opt: InaLfuvwRUGYlBBpuyX2HA
+ release-beetmover-signed-langpacks-checksums-win64-19/opt: SsSimkG3SfiTblM0zyZ0bA
+ release-beetmover-signed-langpacks-checksums-win64-2/opt: cU2Mv82hTSOA019AT2uu9g
+ release-beetmover-signed-langpacks-checksums-win64-20/opt: CNhF2DeESRaCy_Fzm09P7Q
+ release-beetmover-signed-langpacks-checksums-win64-3/opt: aF29QPhJRoumDl0CwSQogg
+ release-beetmover-signed-langpacks-checksums-win64-4/opt: MYER8fj6RoaJxSn78FwjCw
+ release-beetmover-signed-langpacks-checksums-win64-5/opt: H8gz1DX4T9SDU7F0H1RC3g
+ release-beetmover-signed-langpacks-checksums-win64-6/opt: VfhefXMfS26QCT6_slRysQ
+ release-beetmover-signed-langpacks-checksums-win64-7/opt: RvSV3dj0Q4OA1AcqPHMdLw
+ release-beetmover-signed-langpacks-checksums-win64-8/opt: UPb-oZ0vRoqi4pL8xho1_A
+ release-beetmover-signed-langpacks-checksums-win64-9/opt: AmM37dQ6SWSOMdHd-csMsg
+ release-beetmover-signed-langpacks-checksums-win64/opt: CUPP42X3RxWGSz4e0qykVw
+ release-beetmover-source-checksums-firefox-source/opt: auTB-TbaTdiuoPqu9J0JYw
+ release-bouncer-check-firefox: EZSfG69kRR2N_5onbHv4ug
+ release-bouncer-sub-firefox: QZmmT4y6RBevS3_xlodUoQ
+ release-early-tagging-firefox: cTpT5UupQAWb2_r0XDKWww
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ach-public: dY0esueWSFGeVEVu8kpPNA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-af-public: DhboGhloQ7-EhpRDARcUvg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-an-public: Pj-K8H1MQeKUZkHAMsAYXw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ar-public: SkEzez12R3ebC8RKop941w
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-as-public: auo9ALdiT1OxQuotwcn2gw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ast-public: LPCYqTauRPimYMdjV9t1Xg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-az-public: EKwI-DgORtm43k9L7bpxpg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-be-public: Lnw1oL5QSQemyO_aLalg-g
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bg-public: MoQnwjzYQ_GM4j-pKk2b8w
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD-public: SjWwoMRhQUqqaQhG8elF0A
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN-public: NLgOUMR4RwiMztAYiJa29w
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-br-public: Vwk-X7V3Q7-pPDtZdlsn8A
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bs-public: c5269dUKRtilqTlfz-R7jg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ca-public: FP72EgUOSE-jNQIHo5cCRQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cak-public: PPltRXFRRnSFNihcxcbtrA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cs-public: RgnUiCx9QRmq1S0VLwP6gA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cy-public: YC88xwp7RqqxhcbDep3mwQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-da-public: FuIqLClzTkCVYxMiPKrbcQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-de-public: IMBHi3-sQWGXE3ABwT7CRg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-dsb-public: DawGB73sRou73ZB8wGNpZw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-el-public: aAEVQ7_NQXKPbI5gi0eqvg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB-public: EQpQ1GlaT1GXW2ToRw4yTw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-US-public: G67fZa2wRdKk2kOSgK_WNg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA-public: IxJ7Qi1NT-O5GFBEIPBLuw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eo-public: GcAGgm8KSj-crPfqF8Dcfw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR-public: Xb-A_ryMSOa0JJ7KmKfolg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL-public: MuPLX4beSaC_u87bFakorA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES-public: TdDt-A09RcCe09tdXNEpNQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX-public: J5DByMKZQBOF-FriXPWJFA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-et-public: YoGfOuYBRu6eF6IDH1i_OQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eu-public: DGkEAb-1SYiat7cNJMLKXw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fa-public: YftXe7gATeyqDO1Gc73TmQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ff-public: flskCG0WQzCLKcLfu4khtQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fi-public: GCOoGioPRFulQzBBXQE2GA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fr-public: PIp-BNAURRqTqdBSUz9qdg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL-public: RweTPrH7SXa_ClWWgA_1Ug
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE-public: NqB7gnbjQkyRRfQpx45P6A
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gd-public: Zv3XfcbMTxiO14ZhNTZjNQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gl-public: Wx0jWVAHSa-w_ocBk37uvw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gn-public: IDl8L35oS9C3oXuQnMbklA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN-public: G191Czy_Q5qoiQEBIeclbQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-he-public: PL1a_ob9QSOh4JYbQ1ck_A
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN-public: WtAR57KgQgGkANlNoojI0Q
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hr-public: bxlVnm49QzaJWX4KOp3thg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hsb-public: foKTt1grRkmOTbU-YhJBnw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hu-public: esO8hiLrR9ObQ-5sj8wRHg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM-public: bD3-D7DRTHyvTQvjffCjXw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-id-public: fG6eOLUmRuSUEPUXcnKHNg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-is-public: exqf1W0pSNCQcUk9DAoOeA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-it-public: AzLrEqu5Q463lfsAjaFU_Q
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ja-JP-mac-public: UhMTDRS9TRSWkFp1SrnICA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ka-public: S8sH3tOTTHGm0eGiOw-xQg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kab-public: QdGIBr7eRZu8R9sZc0wh2g
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kk-public: PY6VA2txSLCEDmZFxQv8ag
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-km-public: RJ463zVASA6MOtQquP2a4g
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kn-public: C8bYvKeWStGmNt7h8eOsPA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ko-public: CB62snvhQ1e-w6IWiGNDlg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lij-public: Db_jHYswQaOLLZDT3eRfmw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lt-public: EHPLlpyuRieS7T1xyEezHw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lv-public: eG-KO-MbQ1iix5FwFmTuRA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mai-public: X5M_NKJmSYyXZ0-xPQ9XOg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mk-public: UuJdetagT7-F4E5Tuvhv7A
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ml-public: XHW4SAvjQMGE-iBSCQ9d0A
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mr-public: WruD2_myTx-yEXLA2rL1Xw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ms-public: b_4SZhToQbOCIKI7NEOwMA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-my-public: dsYDhTkLSQewHyZcQEF9wg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO-public: Rm0o1H1QTgSb-fbfK6D22A
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nl-public: IRF0yhezTvauEaZojp47qg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO-public: EJOs9_IsRIqdVrXrGT-JOw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-or-public: W2o7Z_-6S_2vrgZgxEHPqQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN-public: UwnbCPBPQKCMugdxpcyvZQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pl-public: I2EdB_L4TlqK2ivPU7qazg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR-public: HFeI808XTgifDrTZ7Vo_yA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT-public: CMf3JuH7Qe6ro29U-eKzhA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-rm-public: YO30yLPURWGBow_NIpXubA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ro-public: LFBxiHHzSZq5JtHgqdD7sg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ru-public: Jh6ys5zRQNK2RHY6YVqZzg
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-si-public: O_pXIuxrR3Kv-lHr2RO6dQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sk-public: a0S3yB7iShiKFHxO69LLpA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sl-public: Gz5N-lI8R8O0zIfiP1a7pA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-son-public: GeBHBTboTqKc4ENIfuosZQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sq-public: RiIjkmxvQO6iAPN3t6i9dw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sr-public: agxfPethSLyFPiIw0dG59w
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE-public: URMFVlJgSPmv0O3SJWGvWw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ta-public: CXWjfWFxSgyefWYIYOrIeA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-te-public: RXB4H57YQTKFl4rMLDKC_A
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-th-public: RXU4eWbvRRaTsRynIJ8Z7w
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-tr-public: QjUJDX3nQWuxyc3doJOTCw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uk-public: YsrVhfmVQ1uluEwJsJ6zIw
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ur-public: a1z6LfwYS7G9earU6vhbKA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uz-public: f3MgUap0Tzi0fdbWsJwu7g
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-vi-public: M3opDjN0Qj-h5WYmSE1AdA
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-xh-public: OgafI7DzQhmsLu0LFNya2w
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN-public: LitlxYlwR6qy20625S7OoQ
+ release-eme-free-repack-beetmover-checksums-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW-public: dxPaUcT-QtKPKwUvwwLukQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ach-public: bmTSmpNjSiuLl8Ced2g_qw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-af-public: dOhqHGIMQneL64BdkSaUrw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-an-public: Scmka-6UQ627pxNtmsxUEQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ar-public: NAIme4FlQm2AIb4oP9o9Ig
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-as-public: Q2MQtX0sSMaoi1nDVpKuGQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ast-public: cDTro4SWSp6MpiUksOC3Xg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-az-public: N0W78Mn0QKaF2G6o73d0dQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-be-public: cd_6M5J1TmetVLD--6oBig
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-bg-public: XcB9PL-tQHOo2LsIzwSaRA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD-public: b1P94sFYTGi0EjmqRjNSvQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN-public: IZOSG4W2SW6us1DujdJaKg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-br-public: dgGeXhtwTC-Vt5e2bYbG-g
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-bs-public: Y852hZ6jS2GluyuWxVe_NA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ca-public: drzlYevrT3CNjhZCBmXzQg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-cak-public: KYZfrVkKRjeftPFkKJbmGw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-cs-public: O4rm1zmXRgStcJcTlfrxPg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-cy-public: LPiaqMRDSgmUZoC8xL-ycQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-da-public: NULUAOX_S7qrljTYzDGeZw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-de-public: NRlbzYIHSkeMzYhDgf9vCw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-dsb-public: A0wKQlHMRvKC4myAuP1ubg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-el-public: G-C76QqSRBO1H6g0R-ZubQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-GB-public: KRFKgU0lTtma83EWbHXakQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-US-public: KaG4YgkeQEaknmWPLr0Kqw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA-public: GkPDzeXBSLSk_XQGVBh3nA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-eo-public: RTppSncRQPyRvg_uG-JGPA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-AR-public: BhTsgyQkQPWTSp0L2_IW4g
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-CL-public: KXWYCQgZShitj6mgS1ebRQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-ES-public: EMSZcxpyTAGVUetW__3kTQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-MX-public: Pc-EuItCTLmXik0e3gnX6A
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-et-public: TJtZAuqqSfiKmfZxQ78vTg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-eu-public: HXIQBy7gS0G47LbaqemUkw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-fa-public: bnT_ySYcS8awRiVd0nXxVg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ff-public: KRiak2eXSPq-XRvb0bBhvg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-fi-public: Fs26qwEiSluTmokmh-JPRQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-fr-public: UuXG6TedTmi2uA2bfPplSQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL-public: QF6JoEwTRlau_U12TBHI7Q
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE-public: F0VJZNsaQEWQkTYcDuGm0g
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-gd-public: HZCSLzHiQcqSpK5zhcgMAw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-gl-public: E7261oTHSTSMHDQhAL62bw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-gn-public: AnZNznBOQmmvlLrq6cx92g
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN-public: csCRlmYpS6OWAE2n_Dwa8A
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-he-public: JacqlK9kStmWGQP7rjimAg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN-public: PHb0vsiSQZy2fxYksPLzAQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-hr-public: c1NwQJFHS-mHnNNZPODJfA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-hsb-public: TYJ1tdGgSBOBiKy5VRtk6g
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-hu-public: XoVgnHQ-TN6IIdKqbkbxJg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM-public: Sa_pdt5CR3SVS7OG1DBxig
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-id-public: JMrge8QzQzWGL0x6l8LqUg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-is-public: WPT0YB_lTlS9_xHUuZ_bVg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-it-public: KEMID7U4SbyRo9zpaNLReA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ja-public: U6XySv1kTvCvOzuluPpabQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ka-public: QQCVSF3ISMSV2Sgv3uB5lQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-kab-public: XPVo0ohVRO-YTtmoDz-85w
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-kk-public: IVMkX91oRC607qoGyj3DCQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-km-public: HgRfwGZhSLGXsgaRQIAZpA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-kn-public: QF2GoKMaReOo-kWExwD3aw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ko-public: e0ICT-pnTWCfE8qrtE9e1A
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-lij-public: c6BHsAJTS6KJh0wySRO1AA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-lt-public: ecbZndZwS3SErbGGdMMRIw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-lv-public: ULzjnEQOTEaw4s9l0-YzOA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-mai-public: F4ZHa9K0Qr6kz57wBKKtNQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-mk-public: f3pkoltxQrG1alFrq4burA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ml-public: JJ5GVeiWR0KyuJ3efZEVCg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-mr-public: HuV3V8AZTHa-kOz89XIqew
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ms-public: CuqRzwsWTlWyJRa_3C3R4w
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-my-public: P-xssrA3TgCkKWZYFZuVdQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO-public: HFyFNWzvRSGNNzEY58Fz4Q
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-nl-public: HLLkIkPOQwOkAp-Akl_xqg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO-public: Y7HH98x2QEab4ZuJNT25Gg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-or-public: K26GhwWjSKOknzh3T6gMBQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN-public: VOjVuOYtQwexK65UTQ8Cbg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-pl-public: dXnZPA4ETTm81Wq4uWJGcA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR-public: Mzf_FoBxSBG-yqkTFXxlag
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT-public: MA4ljm2CQVCnZZsZpShwYg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-rm-public: SbUW2_B0Qiyu7lPWGiQ-mg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ro-public: ctQVAW6eTka9Gpv8jCO0pQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ru-public: d90FttZkRiS9clJYHrl7pg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-si-public: f5j26KJLSa--Vp_4ajaeQw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-sk-public: co6ejij6TbKoISQgTc9yKQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-sl-public: WfsSEP89QJWIuqrgX0HFoQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-son-public: Z594QhVxSh2IiRhkvvwn6g
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-sq-public: P9-C9Md3T7WJhFrYqyknyA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-sr-public: OTIIuRCLQ2CScpnd2JHTfw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE-public: U8bXmjDYR9uj6u4wYWCAQw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ta-public: EB0ROwyGRT6b0oE1aYugdg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-te-public: UdwoDh-NSMq-miIM1Qn5zg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-th-public: O1GaafS4SFOem0SLz1Rb3g
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-tr-public: d7-Fb8fQRrqpkKfP9qOrJQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-uk-public: fchMe6k-SCuOxxpQPCvL5A
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-ur-public: evpm9AClRgGieIN5l1f2SA
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-uz-public: BvCrgY8hQMaID5ipDuyOpQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-vi-public: JmlGQs3KQdygLpDAiGFWyQ
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-xh-public: fUCE2Tg7RvqKzFTteSuqhw
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN-public: Nscv2UbjQVG4Xzk2jF4Gdg
+ release-eme-free-repack-beetmover-checksums-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW-public: PSOVci9EQeifiV4XFvOaGw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ach-public: VxU8hRioTP2ZnI5AczySJg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-af-public: PmxKPMV2QRa2T7t4Etwv4g
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-an-public: EobNsgSUTiWj-N9r7erFiw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ar-public: A3VZFZEFQfWx811skzdIeA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-as-public: OYa92TwqSVWuFGnjWeB0mQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ast-public: BlagTDvdRkSe4BGreY61eA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-az-public: Ctnbo96cRZCb8e0Ul3frxw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-be-public: NYLLZFWPSsOUCIVSTQDkeQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-bg-public: Yw1noVG6QAKjepWevPsMng
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD-public: MRw9YU4KTJ6f9FjkP9Xc4w
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN-public: I5LbYHEgSTKbD-_hWQQBbA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-br-public: O5HAM19YTLyCbsxqJFeXOA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-bs-public: Yv4ydW7jT_ORi301t8gqTg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ca-public: LNZnZgfdSW2cOVxBUfqqtg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-cak-public: S6iKWRgSS6O74500V8pa-g
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-cs-public: FHlDareZRgOEIpDkmyPKTw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-cy-public: bLVWaOBnQtCpfFRasOySZw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-da-public: VeYbreMsTYeBKeo_CwKFmA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-de-public: Ll5gpz6rROy0N3dZuH48TQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-dsb-public: PdOpftjNTRWvdnzmJgbMcw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-el-public: Zz5pxUEcRTKEpA11RfBIMQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB-public: WdxzrTimQpGPwOesFYNrww
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-US-public: e2J84_VKTEWcVEbM27ds_A
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA-public: FYY3sFMoS0CuBLhvprG8iA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-eo-public: UcznsXgqTsWxwWkZkX2Log
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR-public: PMdfmIghS2uki3i38kySLw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL-public: Kood2IGjTfeJEu2rqoFOoA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES-public: MAqIKIOuRJ6EToCtJH5qXw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX-public: AFppzlYIS4O3nj-wjtUT8Q
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-et-public: XnBO5yuDR9eUhrAFRZB4Gw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-eu-public: H4uE03n_TfibMwnEGqBB3g
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-fa-public: XrXRDCpzSfS00WVRIVOeYw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ff-public: e36w8E8TTEyBsmUpYeQfow
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-fi-public: AXDQMSJUTvCWwD-_xm7CsA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-fr-public: Y94gleXXSi-uuezcUPHvbA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL-public: KhrCVs1QS-qzaXAc12Xssw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE-public: Q_glFllpR6Kaz1nhjevL_w
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-gd-public: JbxarqDjTSWcRHXbizqevQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-gl-public: KJ069PaPSdqWnqKMSxoIQw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-gn-public: XGUA9M_IRUGkP2Z60VZMhA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN-public: D6s3U2RSTtGiugqMVcWh5A
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-he-public: MfzsDI2pQd-1C5ENcaCd1w
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN-public: cGNfr2rLSJW9HXIOgjYVAw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-hr-public: WY3lR8BpRAyNTh0M8Tirxg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-hsb-public: Kn_YNY9vRy6Sd15JDAMqPw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-hu-public: IpQfMy4-RgK_KvE0WaEnHg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM-public: ZBkwq8h7SxaPXKl6Mnq-tg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-id-public: NZnzdJ6QQLSUNzF0UdOPLg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-is-public: dIwIFQIVR_6OI7tR09ZzUQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-it-public: KlMY7isETVGrPrW5W3WLUw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ja-public: XmKmt3CfTOe4X8zKCUqjMg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ka-public: Ngiw1yDhQIuYuvOn-xTKDg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-kab-public: Bpixh8TkQmGX2r_5OcOVpg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-kk-public: TwaueRbpToClZHnd7RGq4w
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-km-public: XWeBSF-eTWiYLaV7wo81Jg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-kn-public: PtRQO1ukQWWWKu_0Jq-pMA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ko-public: bI1jYwW4QD6pO0xId5I31Q
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-lij-public: Ca_2l4d9QNyHLlHwYTl8CQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-lt-public: YZ-znrj6RYa1euUNKJv3OQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-lv-public: Ok5NbcBcTYm1DISqJyeJ0Q
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-mai-public: OUUg4S64SsC8o4vxgywyXw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-mk-public: Et163xNSRb2Mb6niHgJGtg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ml-public: SEubLfBiT42cVczIchvxrQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-mr-public: bbo5pXNmTm2XEHqUb4cdPQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ms-public: NQJPc3faS6msEm6ifMHo_g
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-my-public: Nm6Ho5RlS8WD6W-wp5lSqw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO-public: cXz49DGaQh6_WJnBDQsOEA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-nl-public: KJs7olrKQSq_zuu_MXXViA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO-public: b0lEut7uToyly3X7PM5bRg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-or-public: U1I6I4jISW6EKaSMyJIdbw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN-public: BijwbZNRSAufxiA-G-2i9w
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-pl-public: KRDl6NBqQC-EVGlM0iDyOw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR-public: QQM59K4STKa4wxMXzG-YNA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT-public: JI-mNfF0Rw2Q6eQzNBhb8g
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-rm-public: ND57W-HmQkWEeLO8K25wqg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ro-public: LzlAP5RhRMacVcztTkHyzQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ru-public: VyHXAf4vQ3-IEsNjzmBM-A
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-si-public: NkTAE8zaRGq3e3h7ir-G7w
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-sk-public: WuF_bpBgSma951JY4_8SgA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-sl-public: bHhi2C1ARPiXr9rJ9Lvdow
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-son-public: fRHa__NxRxSCoNfLSsx45w
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-sq-public: KAv45tUQQCyyXxECv88BBA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-sr-public: a2wO2tnOS9a0nFwwozaJxg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE-public: KPq-i_w4QkCG2hJowTHpVg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ta-public: Ne-m9_qoT1S3n1eJpsW3wg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-te-public: ZvtjZYyUQEG_nhmUsiEQ6g
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-th-public: En5Y-vDESDqU1zeUkhrbrQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-tr-public: ahiHQxTTTKGmSbtJrRNsvg
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-uk-public: bCVX_xEJS2ClEcLa_ad39A
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-ur-public: NMIly4otTP6knymDu4EM6A
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-uz-public: Pb2uPs-3SzaWpKLyRcm5TA
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-vi-public: fDUY8TqOTV6oiRxH-0gMaQ
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-xh-public: PB6u0L2DRtWtk81ahDB8iw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN-public: LOlQxOLQRiyTFrDDBLMkfw
+ release-eme-free-repack-beetmover-checksums-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW-public: e_EPQ7biRyyKKuA-e0oQDQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ach-public: bdgdeHFWQmiX5su1vopNCQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-af-public: UpsCg8dZS6q76tw4QylJ0A
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-an-public: FLQBgCP2SEOZuUMVXJSIew
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ar-public: MCR6fIE-Ql2xnjAUiXxB7w
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-as-public: BCkdJqXoS0yxEkAylpXZcA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ast-public: fvuQHDyIRImpXwc35-W66Q
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-az-public: TpBFMYbARG6ARk4SME6h_w
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-be-public: MkRiZM1ZQsOF9cQ_6BllYQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bg-public: Ea1UU51gQ82tm34WwFf5XQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD-public: aXrlEKpoSUu9kAspvhcaKQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN-public: Q7tOwo5LT3GDCNjvH60fuQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-br-public: YkJ4lp0eTXWPcFr773IKkA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bs-public: P_Fr6ayxROO8D_tca0vZNA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ca-public: Xt1Gok7JSLmgvoDQwO95-Q
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cak-public: cLV13AbhTeieRhXus0O7CA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cs-public: UkbTBIJdQEGO0udxq8xHyQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cy-public: DDrmGYA3TTChg8t64jZAfQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-da-public: CEM0Ez2qSmSNgY5RI9AGHQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-de-public: B6JowQcTRIK1QO6mgsI4OA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-dsb-public: MF9cfw_ORkm1B5OBtMUGOA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-el-public: PvLAacXeRzyeQNldDGlARg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB-public: aGMOZrvKR8yc7LeP-Orw5A
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-US-public: JbCJGW46RFeNaiHQg5zd6A
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA-public: JhNMXyfjR1K7XP6w6L9PEg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eo-public: RShvdkn3RJyC3v526e2CrA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR-public: LWgA8ZxzQC256kxHArE8Tw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL-public: BKdw4GFrQGCmNKfNUkJKFg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES-public: FkqiMgX_QhS640Yn5Mbaog
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX-public: UySXSsLjR3yvfYdlNH-0Eg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-et-public: aBUOi5HLRW2-reM-UzafpQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eu-public: futYbQJqTj-ukv1d7_23hw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fa-public: ao7__LErR8K_2JQM4tjZPQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ff-public: VFJo_zizT-eHKkwVY4rZ6g
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fi-public: dr_mqZCKRsm7jjAU0u59KA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fr-public: D_hP8Hr-T9aoJqu3yY5yDQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL-public: UmAL6ebpTWa_6GC9g06EZQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE-public: Oy6260nPS5GmQbC9K7zYJg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gd-public: ckDuOPK3TGK7p7qjN4VPIQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gl-public: AWP74qo8R36DJp6A9ev5GQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gn-public: QQ5x0nLGTY6Jss7Fh6IxiQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN-public: etn3D4T3S2ejTOnC4Rj_xQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-he-public: UaUXM0pfTuG1GmIoL-PGZA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN-public: Twe0iyNwRC--Zmd0TfrCbQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hr-public: MbEl4DKhTSO-mmx3OHl3ng
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hsb-public: YzowmadKRPeTAvy2P0dpQg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hu-public: Y-CQfMsnSUChutKUypxVBQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM-public: P6QFlhYvQ2mtEgVEKJX9hQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-id-public: KTUWHj6bRkWzwRkOIP2HmQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-is-public: V3aukMRCQj6jW6IVieyTLA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-it-public: VKVPk1kXQE-lwkCxA5IsfA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ja-JP-mac-public: ShAfiUeTQ56XcNmP0dBNSA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ka-public: Y9hbKGKPQpmXHZ9Hdkgt1A
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kab-public: ATris7DfT3qSJ2P7vGmhmg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kk-public: Pn1y5-_rTTiRC_SoMxjcqg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-km-public: IZSr7LvUTcCbGYGErEqhbw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kn-public: QTulGmYpT4e8P0HHxz-dCQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ko-public: USvqhkYHQyOtwmWj_5n_Hw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lij-public: Ba178gfgTsW4EzNpzJKuDw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lt-public: YlCdenwZRDCeIr250W2TAw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lv-public: eaHlStjyTWeQaiVVBKNOwg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mai-public: DbSLjuk5QV-TB_u7A7QU3Q
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mk-public: KA7LEBFeS4egX174_Emp5Q
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ml-public: XF7CWi0xRh6ZX61dm2fBrw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mr-public: d38HH_hbRjeVOVNMgkQcSw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ms-public: fFRFtBOIS7iPAVLd34go3g
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-my-public: TNDQ9imTQuqAVN90hOBY2Q
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO-public: A8i1pe1_SXCsGlTQo-Ne0Q
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nl-public: H7Xh_mcdSzy0HOdbtbli3A
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO-public: XCWfV9EMSwmtHs_tO2Rkog
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-or-public: AjwcCv7JSOGP3Cy5G3LkdQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN-public: d8G-NmDqTL25um-YsFtg4w
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pl-public: fI-TOLbQTdK3kkBYqELUGQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR-public: N0Pei4IBQN-2HRRyyxq1lw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT-public: KHmGasCHT_6rTt9QorX3Ag
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-rm-public: WGBWtxrBTbmgXZggWToCUw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ro-public: CGEnKtoCSO-M8CMk2mtBXg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ru-public: DTfNCcAYT1GwwlhhjSRRVg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-si-public: dgoKTGnnSHuzNx_R75OnGQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sk-public: ZayJ1FS_T0K4U-ZLOrV5ig
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sl-public: Gv5r_3-ETSCuuZ_C1aEceQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-son-public: bcoRe6HOQjiDKj7wgq7_Lw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sq-public: RGfxIcStS1i4nwmRPMGIlA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sr-public: PBs68FNoRou5mJ8P3yhnxQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE-public: P5Oh3P8AT3uuz9cMkX9OtA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ta-public: SQVfhOxcR4m5RQ8kDtBkJQ
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-te-public: ASQa9BnfRWS4PqdM5RJ3lg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-th-public: X3y_Zf3JTSydm1aFwp3ytA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-tr-public: Kd0jnFSdQkOtWp3shp_Fjw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uk-public: I3rLBcrYRmOwmMagBFO8dw
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ur-public: O5S01xrwTr-a9CEpltKqsg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uz-public: U7RnkYD2TPChiI1iQVJ4zA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-vi-public: KZJJm9JgRfKJthlTU7pF5g
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-xh-public: SI6i9WcHQK2bjjY_-LUCkg
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN-public: VEDdsvgJTnieopWDtj57xA
+ release-eme-free-repack-beetmover-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW-public: XtjJUkZcRqmJo8YI28hlEA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ach-public: KhGTagglRGCN9GH7qpa9Zw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-af-public: S_LFVOxKS-u8ry15a6tDJw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-an-public: Ssa3mxvlQ3KiNBYXUSpH2g
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ar-public: HoZgoY0eStOSoy48gsf3cQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-as-public: XPoTpSNjTI24mhOuYxyS5A
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ast-public: U4_ThJ5cSPq1_zbX1fH-rw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-az-public: UCWq6pmXTRaRj333kB0xxQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-be-public: B0lG7BjHRTSdEw0WkGtRDg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-bg-public: ZnZCy3mXQoSxyYh4ObocXg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD-public: fDC9-zPrTeS9MfI6n631pw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN-public: EpgPpaTNRQKVgH29VhJ9DQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-br-public: D5hxhHlQS06ghjevauHtYg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-bs-public: X0o8P-J9RSmf5F2v-2eNdg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ca-public: W9ppgscaSbCOr2riUK_zkQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-cak-public: EwpXGWSdQkO8QV3M7agmMw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-cs-public: H2r0q6_zRsCNlh51WS0i5A
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-cy-public: NJpBwxaQThOArQC-d5d7JA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-da-public: L-nHHFt1QlOYE8DjHmTbvQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-de-public: AqUAh0e2SGGYcJzw-8XW3g
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-dsb-public: JsgyJseZRWaiNhGgBMUcOA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-el-public: Izkqddl-TTeG69l5LHZUIQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-GB-public: Fl6vOCBVReKU4TQJAzXrjg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-US-public: AO-7wI9OQYm7NxedCuz8Fg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA-public: ceznJ_jNSbekNzpUwnv8wg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-eo-public: e8W6uV7GQ4S7zbphALCnxg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-AR-public: djLbFjkPTPKk-g_dAyfYvQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-CL-public: CVAGbVH7RfaBYZyQCpryxw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-ES-public: YSzpDHeOT9uvz26pb1HLAA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-MX-public: R_MPGB59QeGtk_Okb30f6w
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-et-public: fvu1i1Y4SguP2PMQ7gUK4Q
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-eu-public: aXIW9BVNQnyZZof1AIKHzg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-fa-public: c7t8K0dfSZaIeZVROB_4zA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ff-public: VPl--q9sTaOYBMijwbz2xw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-fi-public: bJuP7weuTTiPWLmYTmYTXw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-fr-public: M0pgDnUIReu3vcT1TnzZxg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL-public: P8BHUK6cTz6t-xlsmhYhlQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE-public: ADQX4ppXQOWHySGKkj8hxQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-gd-public: cpIPi0ywQmmH6zc-bznA0Q
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-gl-public: JB6DExQ-T2mc_ibOvdMyLQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-gn-public: YzJPx47uRyejrvJYyxGZ-g
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN-public: MaYwViQ5QkmCI65dwxXgLA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-he-public: T9Mhkyi3QwWkdDK4flf1PQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN-public: Cetf_3qURDyHqyv3mN021A
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-hr-public: CEd1vCjGS7CKdq_MHHxinw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-hsb-public: LHadRR9MTlO8GCHgc6XizQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-hu-public: DeveDMA3Q8yyU14lermDuA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM-public: I9rUIPFyQkiVduujLpzAsg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-id-public: AftILQYIQ5qtpIabfRL_Sw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-is-public: cMG4h3L9Tti3k5ayH7CtBw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-it-public: UjhpgctdRSOwvYHQJddM4Q
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ja-public: Vsyu_LNYQu2XhgckYUZhCg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ka-public: QZyIT8_fSOu5mLVW89Ey6Q
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-kab-public: dWfaNtxdRUC5VNr-tFwgpA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-kk-public: ZCtTpQMUQoydDCVMQUIV9Q
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-km-public: WqQznDoYSRaow48_X7kCOA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-kn-public: EXlf8le3QdmNmbkphhsklw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ko-public: Aciu5GpxTxWhs9hdhB0F_A
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-lij-public: OqDGxtlDRV6IL9RABjBcHw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-lt-public: HAwOMwrqRYSZnPCcYdOMqw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-lv-public: EDb2sq_nR56Pk8DtRYR79g
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-mai-public: fVNXTIlTQqGKig-n_FBWMA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-mk-public: LaURw3zaRoSvhT8VflLHDg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ml-public: EeYz4BSGSOyhDxwOzduieg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-mr-public: ZIZctQsLTv-aS-YFR5Snkg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ms-public: b8uPXECYRoOe-GYZLWaC_w
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-my-public: OhfUYedWRCKVd3VmGb1T7w
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO-public: RnCKTKEBQjalQ7-zKetSfA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-nl-public: Wpa-YKydQQyF_DQTnEtv9A
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO-public: EXbaFH7RT4OLlTI1UZddDA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-or-public: Up2aok6bT0WsTpcbuVxJRg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN-public: YBOeT9QwTHGDkwuhQa0_yg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-pl-public: IEsxtDWRTy6NvlZkw_F7Dw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR-public: RxOPpiorReqFnIygx4eZ4w
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT-public: eRQkypwuTOWgRksRln7iCA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-rm-public: I-QYmDoZQ9mK80q2iI6ojw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ro-public: NlMGF_FHRaC7XuERQseXPw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ru-public: LFq3MC8fRLGedlwherXWUA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-si-public: XVByGOUaTR2fj0vi2XGP6w
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-sk-public: Bh8EoXmNQJWFX2QVhZwNsA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-sl-public: Vk_FQmi7TRy8u2EeVJhTww
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-son-public: UGesbOH_QcSAOGySXeWkvg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-sq-public: Qm1M0iWfQTmvnZuLLiqTeg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-sr-public: Jjxk0ZZPSSeT2mCg_3RfbA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE-public: SQvBiY9aTVG0EZISsF1kdQ
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ta-public: cL5Q-umXRMecYKAlXZlmQw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-te-public: F8HMLeElQR6pX98lZJWH1w
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-th-public: NOzXhuUYSZ-pHL3nbnf-Dg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-tr-public: JlnIJQ8kTFWPP2l09qn_WA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-uk-public: f-UWSWNYSl6bWzz4zGYg5Q
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-ur-public: NVbNed5eQeupBZq1vGqk_w
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-uz-public: UYUtG_5vRR65GSoddaBheA
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-vi-public: V-5N9xqcTOm7Kss6J3Mysw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-xh-public: KvEGw4nlRquYoJTc6xZ8iw
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN-public: Pz-AqHOqR0Ske7C-oJNDcg
+ release-eme-free-repack-beetmover-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW-public: MXclepKJTBuuidoSviJrCA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ach-public: UlE-_79qTDy6kZOCN1rwzg
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-af-public: SLkwG5gaQUavB3eL4f-n_Q
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-an-public: TXhk8uwLTQabK0c1tV0Auw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ar-public: YBLnpW5FRVWY6XjGcfxXvg
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-as-public: eYOaxIJyQNe9jKsdgaQMYQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ast-public: PosYXfhLQFeHPj-WuWW5QQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-az-public: Cs4eo5UiSGWnzK9EWD4KXw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-be-public: WKgBJa07RxyMkJRkZULG5A
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-bg-public: HFiNr1ogSZy0onDbWw6crg
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD-public: ALSiVOHmRy-F6ko5EzLcyA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN-public: EtqsqUL8Tr-jfql0Bd7LQw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-br-public: a1qa8L8yQbWkVU6Tj4vTyQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-bs-public: aSmIqYsJSRqCrIzVfHwsJQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ca-public: HXP2vzJ-Q--4e_Fi83qfMw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-cak-public: Jh97-ZsMSYe_trHVvWfnaQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-cs-public: f29UzSFLSyS-VTolXMShvw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-cy-public: ThD-9mMASN-0PMseysPJOQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-da-public: Yk4EcxhFQrm2hxRcplHUvw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-de-public: E9srDEVETDWy8RFNUw6b4g
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-dsb-public: X_aAa87wQ9Sz5FZEAJgLyA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-el-public: EWz_fo9wTg-72cbs3ZblEQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB-public: Hb8hGezeQ_220DQaNuHQIw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-US-public: TIgbAeUbTFOKt7SvjZJmQA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA-public: fmyB2IzzR2eguxVG6kPaxQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-eo-public: VZqjsRvARw-CUf9D068keA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR-public: ezMZZ-B_RvGFqYC_p-B4uA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL-public: dO3aZW4cToiu4OQONTW91g
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES-public: HKR-lsYqSZC76HeE6pOrsA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX-public: ILfrQ7gbQCq3DQ8m98EjTA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-et-public: WXQSz7XDRHCnMqx3DHd_lQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-eu-public: b9Jl7O-WQISo7qTybmnHkQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-fa-public: B3mi58vPR0eQAPq895os_A
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ff-public: Cg3xIqz4QJ-V8tqWF221zA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-fi-public: T3_8dFn6SO-iT1HegOt4Ug
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-fr-public: B0dEBV0kStGBdB8jijBgbA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL-public: Xh5XGmbRRmiL5RfCicdxJA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE-public: WoQuItnjQMKlYAJHglpn3A
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-gd-public: TKYzUgpzRbGou5Nlm7saLQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-gl-public: EEteQDmjREKA00tJtgNQPA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-gn-public: eKhY0D_sTuSLN1cgVXghKQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN-public: YlnGCNBpTSKMzOZHijNaYA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-he-public: Py8ZnU89TFq_XS8-8w8ubA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN-public: OOtjGXW5Tba01kF53ehhPw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-hr-public: R5_IImVjQACikGa1hJ6dJQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-hsb-public: JowVLwQgR0qA8jlZlxYwug
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-hu-public: D_eL_fPLQ2y3eQ6IF0xTZg
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM-public: SvbOrlpxRGyb0MkRnUjGbA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-id-public: RX86xznjTF2PEJxPk9vh0A
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-is-public: P-d7QWOmQlibT3cuSM2LZw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-it-public: DjV53xw6SmeWtSP_iNTvFg
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ja-public: aod9P02ZRgO02Em6VIuJ0Q
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ka-public: TpJtD6XFRbqjaup7ViThuA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-kab-public: Ne_-MtnNR4mDpgffYkjxHQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-kk-public: G7JLRq2hTOOkaFNzTYl0RQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-km-public: D9elh1y8R2O89qGF22YLTA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-kn-public: LEONW0wESZydxb1fxfU04w
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ko-public: b5aDZCpvSuarqJ1iVhNOaw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-lij-public: beD-0SAsTnyERfU00149qA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-lt-public: WiFhvKnYRGKX64X_sEdhjg
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-lv-public: NFo39_AiRXWldD5C9zdnOQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-mai-public: deonDFvzTKKj_1eidBsh1w
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-mk-public: X-qV7ONPRVK2zmq-V5BaYw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ml-public: K6ZZni5sQde_9nnBthjDOA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-mr-public: ZwPDThssSASMGu-1pqUlpw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ms-public: Th8H_IZYS4O8Pm3OjV8Tsg
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-my-public: DnmltDpeRbmkP_lRO41zIQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO-public: Wt0lM88JTvqJFW25TfzUAQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-nl-public: Fvudxw_CQRCKiMeWjaqtQQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO-public: MqZo_FmwTt6SF3RR2Zd9zA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-or-public: VOfp7WssSySnyj7ORQ0wWw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN-public: WLix1r5tQ9qzldKiteNutw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-pl-public: LSLyBvNlSKyqIv1YQwzDAg
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR-public: WqY_1nV0SouUdOxEi-N83w
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT-public: A8s5mY7QQDu9CaZi9A3hAA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-rm-public: YEbQwqWgQ0uNw3FtnWIBEw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ro-public: bV0JJGldTmygFKyYPV0FFA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ru-public: XI5b2VaFSc6Ig0gvCZWYGw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-si-public: ba5mqufwS_qk0mIapRkUVA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-sk-public: USNlNty6SL6kHE4eB7XHcQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-sl-public: DUte6fTnTNO9tvSlOjrrug
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-son-public: WfB9X1qmRgyUy3dFUJOwpw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-sq-public: IX5tBOxrSAONm4ER3dmE9w
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-sr-public: a7gob-n1Q3i7XyP31CQCgA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE-public: CimkaNOmTMqcpTwCEOrfqA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ta-public: Hnd393wMTI6it2hB9r5u1A
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-te-public: Ik7f88URRByvY8iNa3WXgw
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-th-public: TdOekF1xRZ-fdvmuL0beUA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-tr-public: LXIdeXkORr2nGhhNyBjlVA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-uk-public: N8s9vdUjTDWwD65wblbrrg
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-ur-public: XgqrlSmPReq89A5LD1iSMg
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-uz-public: VOHCk6AgS6CEFqDdgj6rbQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-vi-public: UumEL4FQSPGCTiRK9xXDPA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-xh-public: GbRcqXcTSN-2Cpc_6Op8pQ
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN-public: DGzlx_D3Q1a-pQvcz1yAxA
+ release-eme-free-repack-beetmover-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW-public: ZDWMIUJ8ROmwpSBc2rsqEg
+ release-eme-free-repack-macosx64-nightly: TtsvYDE2QHWzv7TjPL_lpQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ach: RChsgqxYQguNDafkfL9q0w
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-af: Qvawj1_fSJ2r2CzMTuouiQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-an: Jvt_PJG5RZ-x8IazROOF6Q
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ar: bAXLR3gZS2a1soJt_QmG3g
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-as: VA26fDTpTgamHZ4LP-CG5Q
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ast: KDToiq-aRqmFFOh8z1769w
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-az: HCPLt8C7TWKkZ1FwZYBiJg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-be: JmtwI9qFRoCBw443LBilSA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bg: YK5FCPBQSoe07AeukjrCwQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: AYRNzyKMScCKxKoTHBlISw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: A_VmwgyHTuex2mZXlqrWqw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-br: MNAHQYU1TmCojfgr9Ji_Tw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bs: bS8LHdLaSsaA163CubSfXA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ca: ehu2oJqrRTiwMU6o-3oSMQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cak: Dp2jEf4cQCWC_T29i71f5g
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cs: JqhBG08BSJCkmIgGE6U-eQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cy: O8U_AHp-RHmBrxf7DrwIkw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-da: bNwYoPWkQRmh6-l7VKcFkw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-de: O0HgcHSYS7inP_oy3wTydg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-dsb: CyyVeItETESoIRcPH9Ap6A
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-el: fZHLDm9gRg24-xTMUaPtOw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: PjhzGusOSvSRNX_uvaDqjQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-US: FZbrF9RYSymxxdrTeVvDvg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: bTHwdgKbQBuC3ljVzjfs_g
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eo: ZavhHnX_RN2GhC1Mf31Psg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: feDB1ILZSw-slB1GDrUpeg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: D9zBMxMsRlarsmS9Xf6J2g
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: W0MvB0lAQ2y1LXN38AoKJQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: b2IQDvnJT1ayxSMgx3yDxw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-et: f1kIbvBRTeqqrRC-LmrjaQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eu: aTlnfHLrTw2ysuZaOw2kVQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fa: bcuq-yfFS_mLB9OhWSePOA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ff: HnzvmHCiQY64r-WUGKrlLQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fi: Ww_gGjqYQoCqa2B_uT4wwg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fr: TRvHm_x7TDSfKtMARB_62w
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: KbpXGoTeSB2wfnLTfTTzYw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: da8ocTojTp61vfjNXCzpNw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gd: Nm8-cmONRyKs-CHoxFGr1w
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gl: HrHDE8FmSwi4w3jI2EbrEg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gn: PZJx9PsKQOS3sc6CzuaABA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: NW2mOt7hSC2dfZ6c1wkWAw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-he: R-9WgGw8RaezU6AXo_d8Xw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: M5q04sJySVaYs6ye_uKKfw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hr: GoEUPW0ZREm3GJHrvcdhzg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hsb: Qkej-tmPTRSCSiP7mU_rjA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hu: B6FCLViFQueOrTHpxGFNFg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: Dxcganm9SjmegCUA5Fmj_Q
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-id: FnAPIs5ZT1K0vLvVpisRmA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-is: byk1GutIS0y8ww6bzvvfKw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-it: U8QHrjZAQAiOzdMTiWodEg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ja-JP-mac: G-xtOQfpSsGhYFxDJpApeA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ka: Q3wLQME9TOKaLqIRonHQ5g
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kab: avtSZT8dQlemHd7xUpD0-w
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kk: VO-00tuPSPmahF7ryGkCng
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-km: V7S-kxToTomtgKvoeIXGHg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kn: IuxWJ9ibQjCrhFw6Qti4EQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ko: NjVp1B4gTCuXA9T0_EnPQQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lij: Ve5elrx_QkWCQMG24f0uJg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lt: Ps3PHcwBSGiOlfx6EuY2xw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lv: TnkiyMMRR-mB-Po2VSuh8Q
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mai: HKKQ4DxNTh-Wu57I2G-oWQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mk: f0pewahcRBajx856N1z3OA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ml: JPWIOEl3QCiQPP6XPE-6Lw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mr: frdrD75JTamA5pclBGbqqg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ms: HrAH0pnpTE20Vrr4rtIhyA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-my: V4mj4e0jRdOYhROT_d3o2A
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: LpXnwECmTwaouD-EXraQ5w
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nl: dZt0tlYpT0uYkrd1ZA0Czw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: M4PBNRmmR8SexgyC79n55w
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-or: WnEjrfR7Ro2slnC6L84V8w
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: GtXKQeocR8yZjkbxjtY2zQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pl: fTNPZgRzTHyKP_HG97tDEQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: YldKUA-xTESm2HtIUYnIFQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: KuukaWNKQJ2lmeGjjEH-0Q
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-rm: feRrl426ScOU5N6lWQ_ozA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ro: dywq5ZrWQV6dT2NyWA9SFw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ru: F6DGaEUaRAW-Ek9nm1uoBQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-si: NdsnWVPaQrC6COB3RQRPCQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sk: X5_vtQBNT5KvOZyF2B3zRQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sl: EjSvrMj5RXG77ft9NW7ZgA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-son: Nj-qwVqsQnKrBo5MRZIxUg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sq: bzhkIcKXTN605Bi4fH6B5w
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sr: X-EOVAiTSbam5w3zqNxrMQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: WjP-A3mtSBezdFbYrmOvGg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ta: WJTu_WOBQCihd_aMz-OnIw
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-te: KOiua81hRZmpKlDRVJjHtQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-th: GeCQJB3TQZGZFty4ANCVjA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-tr: YD1eXFMTQkGgwYy6wRUE_Q
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uk: E19cA3V0RPKjxbvKcU0TxQ
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ur: SamqegJ7RbyuCeb-JilvVg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uz: R_ldD7_6TF68wtXLnX7isg
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-vi: G_96vM_3RmieUvTEJVvMjA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-xh: GI0k_4YQSqaGPEh8Gyfnew
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: Nq0yTbkAQMOqs1OEuDVdMA
+ release-eme-free-repack-repackage-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: ZZEFA6obSfWWG9GQFQlvrw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ach: KpCKtGflQka0P03DFHHMOA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-af: d3j8yTneTcqpsbzQoQ6DRg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-an: WioISVpZSeqZ1QWQSm3IlA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ar: Ga-LYxMoTQmdj4sQsHlD6Q
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-as: fS5JF1WJT4-soqmQOnQ9TA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ast: D0yKjNkdRvmjRZ6wvfoX8g
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-az: TjJCdYqcQoa3IuT8_UrzLA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-be: J6j0ozfqTLeadDTQHz6NPQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bg: FVTpRfvhRRyuNPuhTbJSKA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: cHQkIU0lSMOZR_pYRLmEOQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: aQft06SpRja0G4iNjH65Jw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-br: QAzV69l_TcebHwce6mgLgw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bs: PL6bgWFISra_nl-HhQeBeQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ca: QYV5bbvoTleIiZ31xtm6ng
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cak: alR-cZpNSKS4TlrujQOwXw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cs: L0dqR9NHRHSEVJU_KGmbcg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cy: YA775icDSFGYfvqJzjmAsQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-da: SMxu6NU5QZyyLPrfVn2Trg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-de: Cz8M2L_dTbOwWl7h9xS09A
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-dsb: ObCpAHa2T4aOEfhqPWJN0A
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-el: Iu-R1vQhR4yg4-u-XekT_A
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: NMxOLJ2BThiyeREXUCMfjw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-US: dYE12GtsRAiyFcDfjGFL2w
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: FzfPo-shRU25gK4PvAs9zw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eo: MN-J0WvJQX-eQqpMyptTHw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: FxIHLQ38SRSvAwAHM91GIg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: OxP5kOHpQrejUxaux1PvsA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: DX-JYoCtSwWj05Hr4585Zg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: J8F3UZEVR2aYflJaanEXfA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-et: NBO8AkZWRcOXeopc1MjzgQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eu: SJa3RYxDQbiG3VwLoTujEA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fa: F9Ew3iMpS9yRnM_Z0jFjbQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ff: HaHl_sgySIKVBSCUlwdEtg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fi: JN_GxUWqRXW06VhVtWxiOg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fr: aNROH74YQdSuuYuMiW7x9Q
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: Mz9crJtSQvGbCcn4GLO8_A
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: ChHJvJMxT0ypgNCp-P2oBQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gd: caZRuIHwScGDcsJA2lYP3g
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gl: KkgQQKi8RByYpkd4h7VIqA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gn: Yjch3XRGROK4uIcSuCsN6A
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: UJSn3Ud3QOWyxC7e2zUZfQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-he: f5FXBqJfS56VCNCQMMfQzw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: SgNbFeoJSnWQaJtILpHr-w
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hr: Hb5pjVFwTVu67Vz9AC-sPQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hsb: WHYD_17DRcmWfL406YgB-A
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hu: TSxw9cggTzCEFs47hki1eg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: ApyW-43aSa6qG50hD7dqEg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-id: eK8inN_pS4eA-Q0EN2jIew
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-is: J1ZmHm4nQ9G5xCR5gO2I0Q
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-it: N_hkGXsATmyD6vs4Gwb_6g
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ja-JP-mac: OsU7dc0QTBCnyj4JYQtmuw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ka: UcHy1xF_RGi_uwp-HUEHlw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kab: e4_jwPAOQNi-6ItLlSw6Jg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kk: c_fED7l6SvS-tvDPa_k_zQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-km: H99ovAjMROy7La4zJFOMrQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kn: MSQhyrwORQiFM0J4RU2kaQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ko: VRneFe6OTvWbtshLaYjrQg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lij: dgG8nkQPRLCsK4eZiX8tZg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lt: YWX5QqZsRl-AB--7lYgMDQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lv: cVZ7NsuPSK28VGwgG0mEjQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mai: FooUdzKBQ_a2iHnI9TpuNw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mk: JagEddkgR3CC79HiSylW2g
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ml: FMix8PvIRfa6NKLdq8JONA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mr: DQQRskWCS1GjGRfslSyNcw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ms: AhgN5ymRSbKQ8KTfLvxFHg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-my: cxJNmRcZRiq5rDjR8rh41g
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: bon4bte4TlqCevDeBJkuaw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nl: MJDrLKn-QH-M1RIt1QJJQA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: Ezzbb0X5QFWVtvOe_ifdFg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-or: LaLA4PS_Q_yI9AnI3CkGpg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: Ru9A-g_dTQiuXI56nnOCVw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pl: a2VgM4vwSBq6BYgjS9revQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: fb9yzjYCRg67I9emXZOAHg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: Tp-0HuAuRMCEJOaD-fmiIA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-rm: Q1-cnKgBQHeGkcvzp6ntKw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ro: I2R-eU3nRoii1w8mzESJVQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ru: bKLawfrVQhWeZ1JzOmQ0yw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-si: SJrQcpVZSC-MlIzOWA1njA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sk: BR82ivS5RR-GaBlMvFdtbg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sl: ElQFOdf3TsO5yM7ejODNhw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-son: SsMwvVKySzGd9R_MXQOp-g
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sq: NJXHJdCXTW6fF8wjFfzwmQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sr: d1ZAhrOSS2OK6gp92Fo5CQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: SlFRQCKARHmEc4EDiYqzMA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ta: UojSC7jOQR-wmcmnlcz6OA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-te: Vr7BD6E7RRSVS1iSJsh9Mg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-th: Nu6Uu-58SkONsA5LwHmx2w
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-tr: HpT-JvScRcyz-D8w1aTH0A
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uk: ScJdy7SOQjmOcubBeIELyw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ur: QnrR3reHRcSWBTMp7znAiw
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uz: Bpkc9sNQROCaQ0S8P8JhwQ
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-vi: CZkvvLxAQg6O4bpglR7FMg
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-xh: cNlFKuKHSMy5a6uoUJGn4g
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: D2fxKZzGTPShydka_YMhSA
+ release-eme-free-repack-repackage-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: acOIN0IDSXy5-lsjnpiGDw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ach: aWYWzzZzRYiw2d7rIvzMoQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-af: Z7dwy0wBTjCVUcIJDdT0jg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-an: bv_kauxmQemY1ULDI4LBaA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ar: CGeTb45uRfmhW4JZJw2r6Q
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-as: REb2PKPYSOankODh0pwedA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ast: LsfO-nSgTBauylBQRosaww
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-az: ADANO3GTRESuwTOYGRusHQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-be: KAhT9LvxTnqPxxtiPGoOpQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-bg: GbdxC1OOSoSr5SVAfhmjwA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: FLwdv5NqTEKirAFMxG8THA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: EJpGYAKBRk6W8VHGpeNH8w
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-br: Ny8_tidtTlmnoR4X0bRAuA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-bs: YQF99IF8S4Gf26KntWt6nw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ca: YRlZmmDKSoqwZRrd6E8wbw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-cak: fd5Qyz9HTnCYiB4b42whXQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-cs: AS3czye9Rkm56wF7U3KcdQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-cy: Nw1o7k_ySPiZJ2Fa8vaB3g
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-da: cJ3S4BghRbOHTekqgXpDxg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-de: Y1Vg9rCbRIa2Q1IYFTuGmw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-dsb: Zo3T47unR1iLbD_FJhJzEA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-el: emKp3EM-SnGCaQC4O2Q6GA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: UU4BmGLRRSC5MX7Nh5iTzg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-US: Sganw_Z3R7GuKQeQrPJATw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: eix6ohC7Q-CN6zvS3U0mzg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-eo: FnRuBWp2TJqvLMeKIa35RA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: djXTghowSsaZNG3NhyHU6w
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: EvJSx9mJTV6BTwYbKR0W6g
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: eKWY-U3hQKa1Z3xGN5d7Qg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: AcDMukzHSAOvKV_5SfoGSw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-et: J0rvodQ6TVW9k99W7Q99QA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-eu: KEYqUSzMQiy_YPOdFFlvjg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-fa: E2dCIsJjTFK6SfJVqXtk7Q
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ff: Tk7GbzDCRfC57ByieZ1G5Q
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-fi: UQ6Z46KvT8K5NlcTu3LNJA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-fr: fMCTSY5oR3GKNV6bGa3lLg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: XqIHBtWsQRSvIW3MQXkL-g
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: ZMdIIq6VR0KCAQf6Se0jhw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-gd: foz4txNQRVm9cpvaXlIsrQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-gl: SO8RtkL9TDm1ir_cTZbECg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-gn: LAqNny9TTpaZLOvcZXItBg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: ayVKJnFfQlGbXxD7Jnuxww
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-he: OS5zOSAOTsGDOFWn0nA9jQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: RxOl11NbSiWNmZqr2mhc_g
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-hr: dB3CBvicQ5umN5_MKz4Djg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-hsb: D_yjAemjQne3PLq7rpm3uQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-hu: FCAbzakKTI62nuU5MTsAug
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: I1qskSYvR0qsd5BSLRBhyg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-id: PDVBdgyESPGscItQvHt7Cw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-is: cT9dLpbhSGuUK1qFbt9TcQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-it: cTmXeLFrQwSwuxOfDLNT8g
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ja: AUYQzUOAQ6mliu8USUBVdQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ka: PQdK-klnSlicsn5WEs6Z-A
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-kab: e6140sPzRnik_6JhoaI5Tw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-kk: aPZ1tNkWTsCav7WU1iebHA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-km: EZ5HVJ7cSlOu4OtpxCFmaw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-kn: Nb-ggQ9CTKquPsCKLTuXTw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ko: OO_SsN9MStmN8iC9SToj5Q
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-lij: JBs0YRaEQIyn6_UZZ_eCLQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-lt: VupOWu21RQWDLQ4AxUy8Lg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-lv: ZasYoP5ESR6-jsnT0Rvx8g
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-mai: FbAstUw1Qrew-nUb29eS4w
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-mk: UUmGOUmaRLyKEiUZ1DNNMQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ml: HmZ_l9LJSkqdO-kWTIBAqQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-mr: MN_NAyQdQ5Gn7-jLlD2YPA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ms: IGb0gyWvSvm0HSQ3Fz9CRQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-my: E5VMcTtqRHmOqJfo2aY4Zg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: W6QEgbocRC-4iFfoXS2Jig
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-nl: fvRAiDShTFeivkvbrLTC1w
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: Bywt12RIS52xavNYIL0qSg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-or: CAdoIf1GQhWlN_LjXo4NXg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: JGlcXfsyRRuTfmIXXWWjDg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-pl: X0t2LNPmSZKJRUf_RpGbWg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: Wr8qjMnlTkatNAqlAO1DCw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: TRrZK8OlRDeh1VLiOXy9uw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-rm: R5Xh6CQTQZKoOUZTteS7Mw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ro: KqB5Wl_xTban1CWLjwsOTQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ru: DEDKMj1sQaCTpooVJFEA2Q
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-si: YTtsyMF2Qc207irqX5CjEQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-sk: QesJG20KSIy39WW2E49B1Q
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-sl: DkJvccLDTSyVbevpo4LSKA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-son: LcrdSOiAQ_etrJbye4vkqw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-sq: NVQFqenwRCGhLtLYSCt_5w
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-sr: PzT0YRBMTB6DZzYLNgWbOA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: ODSNWHCuQQ6-9W8zXxPhkQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ta: RzzK1Qf1RjWs-pTLDCoPUQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-te: A8K1Rg3xRjW5ylZ9tlKMqw
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-th: GR2LQDPpQdi9feIUT1FnOg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-tr: acFE7dctR6SBeKFoR5C0YQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-uk: WT8Ida4kRmGAXyWi10Zpag
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-ur: TtwkGYFBRnSHHhk1erFWGg
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-uz: EJPRt7XySeSUV5deViIg0Q
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-vi: U7wOiUzcQcazkR2WjZSNEA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-xh: E2regI7RQomDcdyYer2CBQ
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: URGuTTOoQIOmPjt8qMLsQA
+ release-eme-free-repack-repackage-signing-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: JtwQHHcfTxejIycIylK68Q
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ach: RZ94_aJRQ2Cq5Ap5dNZ1PA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-af: ecyMaVXaSXeZEkK_zQEl_A
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-an: P7ZhuJEiSqi7PUD7jWJUcw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ar: bc6thNwgRXu96JtI1q8Ufw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-as: MszMBYjtTUWVBivfp_Vg_A
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ast: dP5bmyziQteyWRRnsOJmmg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-az: VZ-Z_pHMR-qDdzrIUDM4uA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-be: fRBtVKdDRh2PJ7c5NOjYQQ
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-bg: YJyUIeyhRISnydMwzHJ9Bg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: GqcHbHuoSqK0_2vkO1tEGw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: I9zYELwuSjiyMqWxWY2BSw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-br: LWDjaHYVTDqmeWODPVuW7A
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-bs: EUpQuatnQOCMFCCzSFcvoA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ca: c4rr6mVQTROh4wvcTpnTLQ
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-cak: YfHkBFOQQuqHzFecssOLhQ
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-cs: ZD2MfX_sQ_2FFtZMGkBEFQ
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-cy: N2fzCaPZTHKEFx2DufzrcQ
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-da: EMLBdjbuQkKz0LaBvGBkpg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-de: a9AHPMZKRmOOJxCjrmKoRA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-dsb: I5zHEmIfTDS8AJkHSVGs5A
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-el: KnRw2FYgS9SDZnq9XU8H3A
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: bpVd7VLrQo-ub1B7SLupJA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-US: PKvCnQH7Ro6vW-ZMYrOsew
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: cROUusuYT_2v3tKf5oYJpA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-eo: f-rJP6R-TFKQJLJub4O_Xw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: FNyBmdXpQDWqN7TuC92SdA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: Jsz6oPx_SO-ZU2cyrYjijg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: bzEeEmJATLGeKr8ActGn2A
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: G4GphrVeSGmOKJmwNn1EXA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-et: SkACvJc7QzWHvgHdfOX5VA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-eu: N9O2UX4yQKCNaHyxTxZNFw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-fa: E7cMKkhfSvOk4PznBJksGg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ff: fAHTpnTVRK29XggVYbADFA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-fi: fvy0P6aHTxWb8IVaXDWrrg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-fr: c_vbW6U2ROqK1dRLUOfz1Q
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: a6vrsYHMT6-apwOe8cv2uA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: ZgaD0Cn3Tn6usYh7Xswzaw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-gd: ZjDSOIyST2OHAZ9oIBH8Sg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-gl: NuW2YmUGTfSNKCTHOJtAyw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-gn: YQ5yH4lfTPyw49Lscsl6ng
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: Wrb0m3qGTNqyhhsIW6MSkA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-he: BAUve6UeSmqoOBgY71DWcQ
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: IUzoLspHROuNE_VeKRHOVQ
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-hr: RyGkRvkeSDS8DXjJ7lbSxg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-hsb: At25N1NqQI6W_9wlg3KXdA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-hu: TcTFuGnoSIKiydbZXhCGcQ
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: eMq1zDxDT9qEw_B-1QU-5Q
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-id: EGfXzAdjRfGAKwaUixEiFA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-is: AGUOrV0cQruSOx2DVVv-Rw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-it: Bz3YxGXcQY26FRPBu4mx_w
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ja: Y5jGH6VpSQeJAOGkbvMEHQ
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ka: ST0ZCPNcTiih5r0yeflpow
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-kab: J8S8m2ujSoCUzWlB24vwNQ
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-kk: EbeWe-2_QdOPf8LczPLLIg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-km: ac45y03qTY-8MuYvlEViWg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-kn: E-ZeCl7yRyaCXNkHr8BGDw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ko: YXBCtcfISr2y0rgT88VgeA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-lij: DfLkPGl2SNWM845JLvAWrw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-lt: YDet6EHYR-yS3g8q26LK_A
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-lv: Q3kr8P1aT6O621wT252Dbw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-mai: HQ1JDYJqS0SymSpTrnyf_w
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-mk: K58o_g2qREKbPa_0WpaSSA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ml: LiVe4SghTMCDz460cWHoDg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-mr: e8W0dfklTDG9quPcE56sqQ
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ms: Lm1LEE0pQqOMbnMl3-9upg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-my: KG9vhmK0Q7Sd0t3VILP5qw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: a937UbVMSgSp3v7pwP_XvA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-nl: LYbVfOR2QmCcp2thzJxMig
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: OqNDo9TkQhitvggCXkdUsQ
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-or: OxBKg9MZQ76dC9_xlcT7aw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: XSRLOINhQdWemiA4VdCJBA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-pl: bSndblg8R9Kz6nYXzbkWkA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: LjHP6QXSQHyOYqS9lJM8DA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: MHFNzBCgT8WLZKjvfAW0aw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-rm: UVb5BiYgToi-LqWZJRcUUg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ro: WTS8e36yRx2Y6zp3i304Bw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ru: O8HZ-UwbRwO3nc_SId9Ndg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-si: AzgIcmyyTGydXwgibF2LBw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-sk: bSvfzBeASBO8FBr68P5EeA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-sl: JVbYWKnxR3GG9bxuJ1naRg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-son: PW_AK2jzR_WFawvIv7ugcw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-sq: Bt6ZZOiARxacSOHnnbSoTw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-sr: MACQF1FhQI6TvzwjvYluWw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: HnZ5aCGJQ42hEsI7YuBN_w
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ta: PrefJUjhSze7s6Z_0y3_Eg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-te: KUcrcwz-Q4q8HSACpl92Lg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-th: Q1P3UliPSoqFwxw61Lmq2Q
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-tr: XxKMypmvRPi83NCVo9C1ww
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-uk: fyn4Ll7_SY6PvgEcCRMOUw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-ur: QPFMOzedTP2B6lkAiERoBw
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-uz: PgERMFn8QsCKen47SI-AcA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-vi: AJ3EuzQTTLes9uiauatflA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-xh: I4X08ccaSii0t9Jlum75fg
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: IR2xY8p-SfKVKfAaa36wqA
+ release-eme-free-repack-repackage-signing-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: I_Jvj8I5SMSwecMKmett3A
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ach: TGgqj4_DSD6tXCO8MZUWFw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-af: ITRwATXRQSmdyUN7R5UY2g
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-an: KDbdYMPcS5OYPcaO0bM24A
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ar: OmFJ9NUOR7y8QcHdqd-WMg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-as: EHwYHNNXRieZRAemf3w9ag
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ast: Eon7KWZfRaWRxf5VYsTsvw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-az: Z4tBmCB0TbCM-6v8o1Ju7Q
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-be: CY5FpCv6RoqX15Axsr-ewQ
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-bg: W5tbV_b-RRaZCkkySWYNjQ
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: LC56VVMhQdm6kb2ptGHssw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: NixuxkDnSFe0PouGYTUmMg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-br: I5I4843RTfWZnnoiCvWMCw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-bs: A_vmMeq4QbagvGwKCDwVVg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ca: ZyqJwrhuSU-l3do22cCuDg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-cak: a2XAxi7DS32x68TwsXO6uA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-cs: eDABLx9SSQKPzoCoyuT12w
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-cy: CnGHSTsmSMO1nzFlZvbdMA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-da: WfuT77FUTC2RWT4moA0GtA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-de: fXsAoKxnSFGmHA7uXi1OEQ
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-dsb: eZrdOfM1SEioV4XmjeuAPA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-el: JEVFcilFSpixDfcUYT2tWg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: McvpYfPLRYOPKHxHJLn18A
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-US: NSmta1TkRICpaEjJk34MXA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: clnxfY_hS2epAPzYXVPKQw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-eo: JxBM1kxoS3m_hMAhAHBlkg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: cK8ofYt0QQ-XEqoVWaEQgA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: YKz-V_jkQvei69HlNPUfIg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: ONKhqoHUTmmwW8s_pTeeJQ
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: GPZ1u5fuRcyUVZBdfgRyIQ
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-et: Kv6H1ttYTpeuIq0k8Nfrhg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-eu: FpE4qwj7TSenhEWJrB4sMg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-fa: NNyx2YllQ2uQdrQUY-sHlA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ff: Mqff6JPtRz2PQvT2Pesk8w
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-fi: EAErs8fLTnCHD8iP4WGjIg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-fr: ZznjUyXRQq-gOzrcfsAOpQ
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: V908ajZgT8-QKR1rV_pmIA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: Glktw21sQQifVhyJtB6EVw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-gd: UrZgEV94SBeQsPhZeI5gxw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-gl: bEQlASpyRf2-qRLh7_h58w
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-gn: YdGfS6ZsQGmCPRi5mnBcMg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: fCypB4vOTF-8wVB3CMaejw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-he: O0QE75QOQ66u-zJSqsFhxw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: aZOS3aUrSK2cfxNJH4-kpg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-hr: PSAaBO71QOGsXm6J3R4MFA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-hsb: Rt7fer6CQOa5_qitk_ojmA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-hu: Z1pKbNqgS1K6Jp4nSg9Vng
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: IIhVh7lKQUqSpQ2a_sTk8g
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-id: IfCB51gaT-6iMnYQlIRiIw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-is: DqS5ZzqHRa-Qowup6XM3Iw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-it: JlwruV7fSZqt45KFc2Wdmg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ja: CHN_ohUFRPequMGpQFkdVA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ka: eOus9CzPS36GzdXbGp8H1w
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-kab: duGRlDz9TBehIJmz9fagGA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-kk: K1pqu_MWQBS_LgBlnImgBA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-km: U-TY7R_iS0my3_DwYPjM5g
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-kn: UN_2M9fsSr6sswfJHdm9dA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ko: WfGl-8T-QVCU1bV2WD0wgw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-lij: TxTvw3G1TUinpAeMQeaQnA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-lt: AOAQu1O9QnGIPbsGqqeIow
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-lv: IWAJM_s8SA2G0Z1PLenz4A
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-mai: MggoqMeVSCKvFMb1dC0eBw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-mk: OhLGgMZiSc-t691bNKu-ZA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ml: H5cW2IGkRee9lrofdNUM-A
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-mr: GwhNG4-UQlet2TLhzV7AYg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ms: D2GFOrqJStuIrWcuTkvt9g
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-my: S0-HSNK9RMaWKxKv7czUCg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: fW3j3JhXTjiWIDf1LClIrQ
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-nl: Ph_BYX8vRvG8zEnzVmjOaw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: P6U9k9yDT7mnPp8zhSUEtw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-or: VeJk56bmSam6dEm18gyjgw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: ZKzsZtFXSumvIMXVA6EGlw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-pl: BDbu9NX0Q0SQTiCE41ErdA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: OXvfQTRoTUGwX9685acfHQ
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: OgOsow60Qgqzt4ssd4cwqw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-rm: YJnYTaozSwe7US4QzF6l-g
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ro: YT3I0fXUS62Q1LuvEyDiJA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ru: cvh1LGIqTO6dLM6I2luXNw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-si: IK_uwLeuSHiVOYi98DdtLA
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-sk: DhmccWtJTyqABe6no97PYw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-sl: ZeangmmfQwaXMmvhQ2m0yw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-son: HYm5TJHCRW2CUJ3jGwGQGQ
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-sq: Kyrw6LSRT1CbXxMMNQGImQ
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-sr: fED3zlGaRXKtUQRaGio4Bw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: fOqxjmYiSU2H4zTFxcIpng
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ta: dURDlYzRR9GY7-Kn-rWv3A
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-te: K6YdvCGFQ2uRtm2rumMSsw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-th: RXSP92luRSizxhs77gMabw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-tr: KfPzM5oCQ0yv8uIrcnJZhg
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-uk: Id-N8diNTrOTl2G4hmzc3g
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-ur: VLWLclNWSZKXFgp3kBLDRw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-uz: UmjLuROTS_2ia4ZdJfntHw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-vi: Ilv8BHAnQ-6PjCZ0SewzBw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-xh: SaYubREJQW2JGOQBwSf4Dw
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: L1nb9PDOT9umCJj-CjPqHQ
+ release-eme-free-repack-repackage-win32-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: VwDe9SpDTfWaDA3iYm2jeA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ach: FGgr4detRLqTixs6C2qWzg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-af: IbX36xtMQVSiquRqNNU7mQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-an: QLxSQADDQKm4-vNRS7HLjg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ar: IKZ5RKtiRL-_HB8nlf05Tw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-as: Hhw5ylb4RpWFaEvRPqpdYA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ast: FovfX5d3SDiEHk81pZFKsQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-az: Re4HHNMxSgSD7z5I6DkVuQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-be: OQSTx3wgRAO3-oB9dGNQPQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-bg: DQS8nbZZR-iAKzh2A7cg7A
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: A036tfIXRsu4nNryJMc2Sw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: Lfv1giZGQtK5LvUnTC5sZg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-br: d2TyR5c4SUK8G1GzJ3G7tw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-bs: QD0h7HdRRIimNRyvf1FC3Q
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ca: RTb7ilaZTrqfaFVEeAOg2w
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-cak: OPzxKgtiQzKhpd43D-S8EQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-cs: Cq_0S8iySteUlHPC86wHtg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-cy: I09EA4uhQrW0kZzZn_uePA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-da: XmoqiR9gRoCjCSwy4iOrUw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-de: BW5z2EB8TguX2Ad6hpoJPw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-dsb: OMCu-GiRSDip-YxzNPAySA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-el: XxQzjzhVRAq1qoDzsocfFw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: e9Ku0hkLTW2PeDh7V7RZzQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-US: G9mTnzR9TBq3vMP-YkKrnA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: JneoEpECS_mhhIIDZ0HMFw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-eo: Bl5PAPY6RpKEdj7QqmixEQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: FSrcUA-4Rc6qvHfUDVmBvg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: FX_BPSnjT_Ccf5b7U-l6oQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: TW4_uwHCRU2KSZ7Jy_ynQA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: F2_VtQWnSty-8TWCXXRSKQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-et: bUrxCCcGS7uGjj4K3pqj8w
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-eu: FvDLE83-SfuvhUSPE8-ljg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-fa: ZPkT01AaQW6WKUk03g8E0w
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ff: CAcAPm_ZSf2zIivK-J80fQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-fi: RvEKLmX_QdW_Kl-qmv9TXw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-fr: TbD2nv1yRHGw411Yu27XbQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: bGQlaQsMQZu__vDVX9JWeQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: CQog18c8SLW788xqm9aUvA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-gd: c30bNtb2RnSf0f-kYxw7IA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-gl: YBWDrsOeSn-kgdkGC25dBA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-gn: HXeJD8gdSE6eRyCzU5-NKQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: eU6_5alwReet8GAwZDzoCg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-he: evDpOaXjRNuSZBi_apLagA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: SoFcjXt4Q86sUz5m5MBI4Q
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-hr: Bg2P5g2-Q_Sjo16SJ4q0Iw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-hsb: ctex2B8aQ1q1jjRtDTzmEQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-hu: crnSokMoQi6z6mv_h64XIA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: I8B0a2g-TNKqG_NJMUjDHA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-id: Y8-P4iySTH-HGrVeZLxTEg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-is: eAe6UUBqR_KPauOsXQBkRQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-it: asqL9KakTFSDtoI5T1E_Tw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ja: e8ER9nFUSWeAhFxCgdelOg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ka: YqxXSBu0RpK6SVoru4PNbw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-kab: CfZ9bDEiRrewBssXNHcqEg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-kk: Vc0NcROxTbms6T43onJN_Q
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-km: UnmoDqPKT_u-0FXQhZDcbQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-kn: aesIyZUoT8GJeBSGC1Fg5Q
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ko: X8WW0BecSzuKmqjXrrlHhw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-lij: LE08t72rRKuRLgueGf8ZdA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-lt: SyikPmzwRDWOTPmRjMVz8w
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-lv: TrCyVp-NSV2ZDnhEJh-New
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-mai: PpjPGRajSDmyxoqh_5E4Xw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-mk: PEAlVPyUQPeB8B2nTLCRcw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ml: Gv1eMdWpTg2gGlO5PEvk-A
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-mr: DcJcIHpMRnKGFMdRF4P5EA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ms: cHraxJyOTWmIyk5czyavxw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-my: aGEP9OFmQEazt--hOAQL5A
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: Pwswl7bKSPKuWGeTJ29jAw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-nl: ZepYHjMkTuy5C1wqOJ_Qlw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: bvcrLsAtRTm5hT9UIiPpzA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-or: dUmakoXgTImZDRxuHh5e6g
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: WXT8my1vToa8pEikCrkHhQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-pl: QZjha-zLTva0gl98RBXefA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: BWvtiNaRRYSCYtkSydL2JQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: OkpYPccGR6einVSDsjtVHA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-rm: OwZJgDyQRqi2HkVWHGKmug
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ro: Du_dLDr-Sqij_F2ooys-pg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ru: ArJb7GfORX-nNbPRm9NICQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-si: aPVASSZoTAaSWwZoimqQug
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-sk: A1yhrnbxS-OD1vGMKwh1jw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-sl: B-8zzh5KSaatFv1VxrHn5A
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-son: c0BuUNb-SuKmqU-kJs2dVg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-sq: VwIkVGszSOCyjH7Rqf-tUQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-sr: f-Sh2C_gRIWy3osdvxXOnA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: bxx46gIfRRWGVB9eTzpyCw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ta: IKbuaaLuQSqRFKw6c2x1IA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-te: SRUfdkGdT4SoIJJ6qcl-mA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-th: ccJPviUhQqigOsTI4VQPZg
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-tr: MZX7YjhqROmL4RFgBZ3EAA
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-uk: JgyZ8Id8RqePDiaiwcxQwQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-ur: e6nO1wGlQLmzxsFcAlLW-w
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-uz: ava8f3qxT9qniDd2naFzUw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-vi: avRGD37ITm6FeZD_E912QQ
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-xh: JvwFJzglTm6glIwpsPHi1g
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: dcLfLlhXSFiur1sfpxZMnw
+ release-eme-free-repack-repackage-win64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: bSayWXAmQu2YjDSLz_kA5g
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ach: YDXTTcCYT5apz-VbiBYwKw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-af: cwTvDN3tS62Q-4NuxysPgg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-an: a0UdmCCtSSW30Vkvswl7ow
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ar: dudDj-99RreHLMl4GPzRfw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-as: RT8z7mQtRIC7vQi3_5kqQg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ast: UdeLBXYmRn-2YJC-86xA9w
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-az: dlu5vzgkT5ygvmo_3VlA2A
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-be: QPoskV4wS-u0gNhnqnnHbA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bg: dlVUWW-VR1yDrIgats-0VQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-BD: eHPu6xvFQgWhychzcc3xXQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bn-IN: RekQ6nNOR6Sm6l5VLr7SOA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-br: Um0DXKB4TdigJniLK2_iKQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-bs: Z55URMNjStCp5TxBXzNJqA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ca: Wl1XQc0kQPOd7naV6pZlRw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cak: GXwj1LHcTu-8hnw2_ZvGFg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cs: agLK-hGtT2KMr_l4kk5F5w
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-cy: CnU6AXPFTxCSXeYm2gw7wg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-da: W47uW_mmSpefQgfcBVo5Nw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-de: dAPwnJNVTrmoAHdYHvn87A
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-dsb: ViAd71ccRu2K7CS5ALrr-g
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-el: N79Ja2atQQyT0U8ebqN3KQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-GB: Xl1AyetMQiWfz8UMl6SavA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-US: eIFqIE4MQn6wV_q3EBqPig
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-en-ZA: b6GuM4LSSwyZj2J3gKal6A
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eo: ChK_2J_fQqyGqNgrwytdAA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-AR: JPF2vLNtRlCqCe1Rc9hJ7w
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-CL: fByNQl24R8aR7x6ZormXPg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-ES: Kx8GhRUiTyy6a9kc9hBq9w
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-es-MX: L-RXtrixR-6fWCmt7C8ARw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-et: RlO-fTrjR06C9P8jXATGOQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-eu: CMBA14FPSPKUoHOCAsxhtg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fa: QhoySkEtTueb4P537n16Jg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ff: MBv8Lmm6QU6NW-P36coDZA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fi: Gi6Ief8eTKOQl7Fmw71-Ng
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fr: Ywa0BPETTJ6gJbbGJDo_9g
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-fy-NL: ABpbZoMdRvibLS9qqxe4Ug
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ga-IE: Y9IYz3kOS3GgtL6c4H9R1A
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gd: au-3E27OT-i064WPgtmUdg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gl: VGDwlYIsQSawCdVJIY6aug
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gn: e9V63cMYTGGvjyRYeP4FqQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-gu-IN: WRwHlRmCRXiy1vLyQKXXRA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-he: bfoYjUsaQBGI5CGeLV8Fxg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hi-IN: Nk03mtgeSLqU-Lc9MeIBUA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hr: aajsVAWXTImIkII4eRFBaQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hsb: X_7u2iEpSTaOIILozAKiFA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hu: dN1wFoNJR-mugxqdbMGb0w
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-hy-AM: UYQ89_akSFmgr_KdEouAuA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-id: Cb7HpfeeSSuqtol8crVIHQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-is: AUMt0RVDRGCagaQNIwp9QA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-it: aRwkiDMLSkuhnoKpdshmDg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ja-JP-mac: Yu_1ChPTRbuJwKTuyZ0oMg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ka: MMjPFav8SLGHNDt-HR8TQQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kab: BGAGS9-gRq-PZMCuF5Bf3g
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kk: NMdJifgiRtGicHO84hkpHg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-km: ZXniYbnTTgm0ODv4eruAyQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-kn: Lb9hUaKYQVakmh-VIxs2XQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ko: BTOSnRSGTYe31U6hllnRGg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lij: PGc57loPTey-aCBk_5TtPQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lt: Ew-nv0izQfWBHeBcPOaJJA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-lv: YNV9QUCyS-qNzH67-L3SjQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mai: P14Iyf3mTYqyYYztirOgxw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mk: aOBXSuhjREmDQRk0Dzh8Dw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ml: SNcG44-CQpqeerBijd4wXQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-mr: F6SpRRHxQ9-oRZGQxV34Zw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ms: HbjP1IQ7TjO3xkYy6mjlcg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-my: fZyhs6kDRjGlWP6S_uxBTA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nb-NO: aWzlTb9tQR2K4y7-6f5lyQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nl: Bt3iwBieSn6om9_G-ZBV6A
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-nn-NO: YGTkKZMFSjyqHYYfkCURFg
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-or: Y_jy4puERmqtuqOTXgYT4g
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pa-IN: WgM9hp9ZSxKZp5sRjGiJFw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pl: cX7Vcz3BQv-MSiwkw9dZ_g
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-BR: Xn585rx4T4e6Gq-V5iE7og
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-pt-PT: ADugTJ8gRg-bOPOD1Z4I2g
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-rm: CQGJsP0vTRCZ0-n3iaR1YQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ro: L4zkwW7qRlm_7r9BzLsO9A
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ru: b42k6NS-Tnq0oqzoge2_oA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-si: VQC0nsaiRaC1zr3yDWDqxw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sk: F9-d3fkNTBWTCyqOlOrpAA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sl: YlQcqpuDTMq_xFaJwuLTTQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-son: SuZgcnHtRRmN9Sx33zVExA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sq: AM8HH80mTQ2y4B9Pfk1c2w
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sr: YDop8ndNSZCx3hJWGztZbQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-sv-SE: WIjz2CInS0uB0zUv8K4P7Q
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ta: UIfuRO3GQwyHgkiSf4QcSQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-te: R0xEmAQtTiukitwKctGH-w
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-th: UpTr9UAqTyaeJfEyBQYsZA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-tr: ORvR5yPCRTqc2NisSuVVaA
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uk: GlnNQGFgRvatgmdqH1OuRw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-ur: GIQyE8c1Rta7292g3mG5vw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-uz: d-4JH_bvQDifBG-yYMvR8g
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-vi: c_MEYLlVRZiezVSGhIF9uw
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-xh: LQ0JkNXvQ52gyp9r3w1rsQ
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-CN: YmsrimgGTgikWLOjev8T-w
+ release-eme-free-repack-signing-macosx64-nightly-mozilla-EME-free-mozilla-EME-free-zh-TW: SNMqTJ6-TXG4Ntg1-5C4XQ
+ release-eme-free-repack-win32-nightly: cf3mq3trQjSKrixc4SIkPQ
+ release-eme-free-repack-win64-nightly: SOL75cl4T8OhzCTUcb3TBQ
+ release-final-verify-firefox: b-EdN5ljRKSfvfOz6CciSQ
+ release-generate-checksums-firefox: McPLDh8YQXutVQy-Pmfrrg
+ release-generate-checksums-firefox-beetmover: HMwoTKsvTwm7JHxUb0d6cw
+ release-generate-checksums-firefox-signing: e1Hmbt8BRFykxt2JvhUzXA
+ release-mark-as-started-firefox: JvtrEgGESxijh4YloPEyxQ
+ release-notify-promote-firefox: L3KhRz6pQP6R30Q57YIHmQ
+ release-notify-push-firefox: Z2knRVp0RFOQznX1T6jJEA
+ release-partner-repack-beetmover-linux-nightly-aol-aol-en-US: cQHHX0NHSY2l-Yv8Njh39Q
+ release-partner-repack-beetmover-linux-nightly-aol-aol_desktop-en-US: HOTFYq4kTPWFTptoCoa7SA
+ release-partner-repack-beetmover-linux-nightly-aol-aol_huffington-en-US: WNpy1LrTROqczrbILBAUfQ
+ release-partner-repack-beetmover-linux-nightly-aol-aol_uk-en-GB: X82AsffSS2uxRU_ZWo9Gng
+ release-partner-repack-beetmover-linux-nightly-funnelcake-funnelcake134-en-US-public: FChVob7uTd6sS3GAj8J7PA
+ release-partner-repack-beetmover-linux-nightly-mozillaonline-mainOther-en-US-public: OMioDsKPTKaedVU5v3NQtQ
+ release-partner-repack-beetmover-linux-nightly-mozillaonline-mainOther-zh-CN-public: O5fOOqa0RsylV3QI17-g5g
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-ca: OEpdGUNaSAy9vjkEiKF2nA
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-cy: TjacQelIQMq5CyP3VOEaPA
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-de: Ak7j0WJcQam4Raj64acjtg
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-en-GB: B4a-oV1-Q9KVv2pf5-lKLg
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-en-US: RpMfsE1yRFy_WtkTiAZwWQ
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-es-ES: DnkFsRsET3-Ig3lj477e2Q
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-fr: KyZx2chjQMOv7P1-G-tPsA
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-gd: cRt1ahpNRHeR79kZ731dfg
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-001-it: ViIpxCQaQB-BvySpsI21Nw
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-ca: QeLe5gx3TOORReX6VNA-Uw
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-cy: XD_wRDmfQ7WnyD72WV9vfA
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-de: IgKeFHVZRb2W8UAfTX0X6g
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-en-GB: J0eBrV4SR5yDMSUymUeLog
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-en-US: FLVASylYTT6jLD8lrk42uA
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-es-ES: R7ssoRFNTDSj9v4RL9IRuw
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-fr: VKZYChTzSqinL_KqjlOfBw
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-gd: atJPuleoR0GkFfLIJcXjdg
+ release-partner-repack-beetmover-linux-nightly-qwant-qwant-002-it: cPi2wcv2Q9GcaNeWsPL3ww
+ release-partner-repack-beetmover-linux-nightly-seznam-seznam-cs: CgjORzvkR_6gcg9TvTbNYA
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-1und1-de: MMWbieaESW-_g3HZ5aZ-kg
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-1und1-en-US: XZKXZnTzQaiQOI3eVXDCAw
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-1und1_notb-de: LJfeXaDBSDOmSoTuH2rNIw
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-1und1_notb-en-US: Qa2OSIYeRiuV9BAFfYFZPw
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-gmx-de: XeH2wihYQHOBgr-e8LuvjA
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-gmx-en-US: YjYzRNspStmPEZYvlckO6g
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-gmx_notb-de: KR3tof6_Sh--1geQIwF1Ig
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-gmx_notb-en-US: KX6dn6gmSZeS7Dt7ZHXz-Q
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-mail.com-de: Wau2EfQsQyqKoxrlDN0ekA
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-mail.com-en-US: ds20s8qdQm-2h6vGcn4LAQ
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-mail.com_notb-de: AHBXZ8cxS6aELkthmmLIyA
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-mail.com_notb-en-US: Hn6A1b1XTzGpPLdOx2g1tA
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-web.de-de: GBBAmAgORR6yAYCTUew2Gg
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-web.de-en-US: MFX0FA0xQh6JZnSNSS7f-Q
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-web.de_notb-de: T1W1tDcLSk6llsGSbSKY4Q
+ release-partner-repack-beetmover-linux-nightly-unitedinternet-web.de_notb-en-US: dHc1IeKmTU2xNxGjceQEkg
+ release-partner-repack-beetmover-linux-nightly-yandex-yandex-portals-ru: Sx4IlvLDRI6_jHdszDJ0Vw
+ release-partner-repack-beetmover-linux-nightly-yandex-yandex-ru-mz-ru: OwnhmgjoRyuD7ZYQmlZqwQ
+ release-partner-repack-beetmover-linux-nightly-yandex-yandex-ru-ru: XiIUDLjtQKWHLxM2CuVAIg
+ release-partner-repack-beetmover-linux-nightly-yandex-yandex-tr-gezginler-tr: RABS8Eg3TsaPSfaE95EOAg
+ release-partner-repack-beetmover-linux-nightly-yandex-yandex-tr-tamindir-tr: af4Fn2t4Rcmxld6Q3JmpTQ
+ release-partner-repack-beetmover-linux-nightly-yandex-yandex-tr-tr: Xe89ca0USK-powdWoVXZWw
+ release-partner-repack-beetmover-linux-nightly-yandex-yandex-ua-ru: Y3g_ogJQSiCjpdGKGb6fGA
+ release-partner-repack-beetmover-linux-nightly-yandex-yandex-ua-uk: BzSxqvtkRjGXZXYarKB04g
+ release-partner-repack-beetmover-linux64-nightly-mozillaonline-mainOther-en-US-public: P6Ja2uuUQdmtGkxSN9QmAg
+ release-partner-repack-beetmover-linux64-nightly-mozillaonline-mainOther-zh-CN-public: cssKIiPERP2oLRqK176Waw
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-ca: ETVfyAnKQN64oJUXqAbwQg
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-cy: bwh0IcHLSUmZxqnkhmoKbA
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-de: H4QQw-MvQoGbpg25SUg85g
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-en-GB: PqSQ-so2Rxe9sU9X2By0uw
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-en-US: TcAszN23TyKP2TZH8_1vRQ
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-es-ES: FoBwe6ExR9SYHP_OJ3BR9w
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-fr: WbclX02iREymmOB0-MfsDw
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-gd: EKqrfzUCQsSaGSaeTK1fyg
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-001-it: R2E3ZGaOTfm1f6LSAEaAmQ
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-ca: O93xVMGpS4addmApyV61xg
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-cy: O3jHGav9Sri0f1YV8pJz0w
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-de: TK3-YXJbTpSSCNQMHC6pQg
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-en-GB: F1dWSTxETK69B22OJj_bnA
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-en-US: NM76bjS3TbegyztcSIl4LA
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-es-ES: SlmHEv-jSiOvDKeLsTWa0g
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-fr: TvqofSs-SeC4Ee0IOwiplg
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-gd: ADAqSb_jT8WpI0Jqwd76fQ
+ release-partner-repack-beetmover-linux64-nightly-qwant-qwant-002-it: Xzn070FoRlCorrMSe2bFjg
+ release-partner-repack-beetmover-macosx64-nightly-aol-aol-en-US: LGxo37hWR7O7w5vcCm6gUA
+ release-partner-repack-beetmover-macosx64-nightly-aol-aol_de-de: MHgACfA_Rsy_aR1uJRcnOg
+ release-partner-repack-beetmover-macosx64-nightly-aol-aol_desktop-en-US: RYQvanc9RzeJKNQek1Vi4A
+ release-partner-repack-beetmover-macosx64-nightly-aol-aol_huffington-en-US: SPqCCK0rTTmcm6fiba0j3g
+ release-partner-repack-beetmover-macosx64-nightly-aol-aol_uk-en-GB: MNKMGqQ_SwyRlVTe7kYzkA
+ release-partner-repack-beetmover-macosx64-nightly-chipde-chipde-de: JWl50iqySk6K4mS6pPKmxQ
+ release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-003-de: OUoPLe2RTp-gcBC-bsxCxg
+ release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-004-de: bk7RvZCXSjSkJtp5sfYhkw
+ release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-005-de: dfRqoe2ESpiAPQKeeQVROQ
+ release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-006-de: EjK7OxXUS8m_sZMik4Gkew
+ release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-007-de: cD-kLCS8QGKebE5f1AszvA
+ release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-008-de: TKbT0ZiOT2-p3Nqgh5itSw
+ release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-control-de: dugSbKE8QQyI8Kawon4TYA
+ release-partner-repack-beetmover-macosx64-nightly-chipde-cliqz-de: C9wmapcRTsmuUbuwEO91YA
+ release-partner-repack-beetmover-macosx64-nightly-firefox-firefox-election-edition-en-US-public: fLSjQ9-kSM-J8gJOwRUWSw
+ release-partner-repack-beetmover-macosx64-nightly-funnelcake-funnelcake134-en-US-public: YVV8prISTkCdyz0mAmkUFA
+ release-partner-repack-beetmover-macosx64-nightly-funnelcake-funnelcake137-en-US-public: IV6hDCDbTXiVGu0WSmjKtA
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-de-public: GEzdaCmPSruxLLAMPMxPXg
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-en-GB-public: EkJwaTJNSeGPTKfZQ6J_PQ
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-en-US-public: FcG4pDI_RQaliTswbIZ7MQ
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-es-ES-public: Tj4M7qNiR1eomyFLmywmGg
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-fr-public: GRf_S4-hSQqlSOWbblLCsQ
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-id-public: PUrNgQwwTdyLklAh8RvV0w
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-it-public: adp5FBsfQs2s6uqIMmHZ9Q
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-ko-public: Wfme37H4S7aeMNmhRrDTug
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-pa-IN-public: Nlob54CMRy2y_eP8NiwqxA
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-pl-public: fU_cmrBZSjian9dlB9HCLw
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-pt-BR-public: E9g6CqbxSmeAJCzv2OKhSQ
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-ru-public: N_e3sDz2RiiJhXwP0SnJtw
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-aura-tr-public: AgU1rgGhSBGQFOzM_SwEQw
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-de-public: GpwqtZk-T42AsJ6AJF37BA
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-en-GB-public: I_Bb5kSHTyqBh2it7TR-pQ
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-en-US-public: PvS1Fk_qS_mC2oToi184WQ
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-es-ES-public: QFH9FzHHTWyUM9X-eO0xAw
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-fr-public: EPzEi_IOTXSqpk5wC0uwxg
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-id-public: DYhgUU_qSzK1kEVjh3EwVg
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-it-public: EJWdIeR3QbmlFJtHQVTJ6A
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-ko-public: Cb9ToHwtQia3bNs95wraRw
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-pa-IN-public: fT2kj5bxSoORejKvY-CB-w
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-pl-public: WoKMQgcLQhiZdMbtaWG8Iw
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-pt-BR-public: PAJmYqVCQIOCKvgdMO6VxQ
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-ru-public: IR2T9pMjSke3x-TSJOaWxw
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-google-tr-public: F3cbGExmTa28vnO_XE7fGQ
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-yahoo-aura-en-US-public: FRtNkGs9RMqBH7tZHS-KEQ
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-yahoo-en-US-public: UpBWrvLlSXWGxag_CmQ6LQ
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-yandex-en-US-public: WfHipiriRpia2c7Y2Ca2og
+ release-partner-repack-beetmover-macosx64-nightly-ironsource-ironsource-yandex-tr-public: MEkfBnjFREyD_NrjmtdlXg
+ release-partner-repack-beetmover-macosx64-nightly-mozillaonline-mainOther-en-US-public: ZEKwv2hNSxmVUa3VXn3EpQ
+ release-partner-repack-beetmover-macosx64-nightly-mozillaonline-mainOther-zh-CN-public: KHkZwXmhQ7WvDeqTYvbFZw
+ release-partner-repack-beetmover-macosx64-nightly-ntt-ntt-en-US: bsYQIafbQuaPlmEvmoqSrw
+ release-partner-repack-beetmover-macosx64-nightly-ntt-ntt-ja-JP-mac: c0JWK1_rTnOVP8QnAh_SHg
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-ca: KFmryuKNSdeeAqIaPyweTg
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-cy: EXXooUbFTUe5r4w5BUrfJg
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-de: Py3qzuaoSS2OtwMSrbWV5A
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-en-GB: WhwdOdpuQP6BRV_9GCqq1Q
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-en-US: EWo5Kk7VRWWsGc9VLS401Q
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-es-ES: LOdUn8v4T2CRfQp-IrSWkg
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-fr: Fgoag_dGRj6ApUfKLgv4rA
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-gd: OLnmiJLFQBKxEvo28xgDXQ
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-001-it: KPOLNz1JTIySiusQX2CiZw
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-ca: FvgFeWbcToC5fuRd0wTcHw
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-cy: H9DQ5rwFQf-tlHEHnZVTDg
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-de: cDFnYI8qT-KdrRrj8xYwdA
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-en-GB: P96X10efTXSUKQ4LQLgJCQ
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-en-US: DXIboAgmT8CxeRytW8_apw
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-es-ES: ES8iijsCTQ-BczcFC0hUeA
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-fr: FeKQo7e1S26PMAjtCkeF-w
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-gd: DsX0QLixRDCNr4AomSp0AA
+ release-partner-repack-beetmover-macosx64-nightly-qwant-qwant-002-it: Qtix8qmJRfidtlMCsSUr0w
+ release-partner-repack-beetmover-macosx64-nightly-seznam-seznam-cs: DzPiXPrlRKOFAuYbm47log
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-1und1-de: Q1tSs19_RJK_P5Ul_uKMJg
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-1und1-en-US: aK8zIvuHQ_2y-6WmG2bl6w
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-1und1_notb-de: DfIo9MSGR8KBiB38TvlyHw
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-1und1_notb-en-US: J1fhYTKDRF-5uMH92oGsUg
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-gmx-de: Q7b2g-Y6S5O8ZWlX4HKF8w
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-gmx-en-US: LHaeTLNrR8GUYHtY_C6ByA
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-gmx_notb-de: LgpKWrofQuCeL7BomsIs8Q
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-gmx_notb-en-US: NjG6Fon9Qg-fBYQURViT2Q
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-mail.com-de: YmuecbOPTLCw-YcwuTXtEg
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-mail.com-en-US: QG72LA8WSBGxs8FX21io3Q
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-mail.com_notb-de: duTn-30rQRSt7-zvOXA3og
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-mail.com_notb-en-US: bAdgStvzTwei1RP3IpAXRQ
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-web.de-de: SRgodtcLS0yZzmqC2ka-9Q
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-web.de-en-US: G9OVyAaYQSO4HWqcZ0Q2Pg
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-web.de_notb-de: ALKwZFJBRnqdJEWfTpcGIQ
+ release-partner-repack-beetmover-macosx64-nightly-unitedinternet-web.de_notb-en-US: d_co2iEDThCsBvInor46zQ
+ release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-portals-ru: KFE9TP95SomMc5EcnTXNiA
+ release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-ru-mz-ru: BqJIG2dcThuDNToV0BZllQ
+ release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-ru-ru: LUy6LDAsQ5OXXDRD2WJLOA
+ release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-tr-gezginler-tr: VWvWb_kdTWGpJFsc9bOPlQ
+ release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-tr-tamindir-tr: NMEUlwOBQEah57RZLFbKqw
+ release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-tr-tr: SdHfIiSZRQyuDGvSUEEJmg
+ release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-ua-ru: dMXg8-EVSBq-cZ4VXtRM0A
+ release-partner-repack-beetmover-macosx64-nightly-yandex-yandex-ua-uk: T9Ae0ZnpR_WOvvpwVSZHIg
+ release-partner-repack-beetmover-win32-nightly-acer-acer-002-en-US: HnFnERSvTHuAZJrAaa8AZQ
+ release-partner-repack-beetmover-win32-nightly-aol-aol-en-US: TbCl2baUTzS2gIyF1f865A
+ release-partner-repack-beetmover-win32-nightly-aol-aol_de-de: ERd2B3c7Sl2zNsacm8EgRw
+ release-partner-repack-beetmover-win32-nightly-aol-aol_desktop-en-US: S8mumgLESMa_t59Rr4BLnw
+ release-partner-repack-beetmover-win32-nightly-aol-aol_huffington-en-US: TqeIEoalQPaH0E2V53F6kw
+ release-partner-repack-beetmover-win32-nightly-aol-aol_uk-en-GB: CHBFaQyfRAS85P-Cxf9UKQ
+ release-partner-repack-beetmover-win32-nightly-chipde-chipde-de: aGvc_IBqRE-9k55clX2Rxg
+ release-partner-repack-beetmover-win32-nightly-chipde-cliqz-003-de: CoKDg1HAQXeo2KdX4ULVow
+ release-partner-repack-beetmover-win32-nightly-chipde-cliqz-004-de: KvIXWqEcRyeZorY0YmcoCw
+ release-partner-repack-beetmover-win32-nightly-chipde-cliqz-005-de: ROBDcnBfSm-Q9Vyp2Qu5gQ
+ release-partner-repack-beetmover-win32-nightly-chipde-cliqz-006-de: ckybGZWGRrOKXJnbF_wJJQ
+ release-partner-repack-beetmover-win32-nightly-chipde-cliqz-007-de: T92z_tthSxO_A2k0be2wsQ
+ release-partner-repack-beetmover-win32-nightly-chipde-cliqz-008-de: TrTEtzY_SLOVwAh0-AFU1A
+ release-partner-repack-beetmover-win32-nightly-chipde-cliqz-control-de: bck6M4V4QomOPgngmA-uvQ
+ release-partner-repack-beetmover-win32-nightly-chipde-cliqz-de: TlgaFZ3sSG24vzkyYkY51Q
+ release-partner-repack-beetmover-win32-nightly-firefox-firefox-election-edition-en-US-public: VL7JV_U_Sx6IBPia-rmiJQ
+ release-partner-repack-beetmover-win32-nightly-funnelcake-funnelcake134-en-US-public: HBRvEoRXQkC2ZScN2yEtYw
+ release-partner-repack-beetmover-win32-nightly-funnelcake-funnelcake137-en-US-public: RQpFkjGTTzCP3tXtAyrUkg
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-de-public: LKTXjL1zQOKN1kzwv9jObA
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-en-GB-public: EM0PsRw8QOKJLUNIUGRrbQ
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-en-US-public: cTfeFHL2QF-GM6ijYaZRKA
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-es-ES-public: U31JSRguSeuzg6KhOxQDGA
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-fr-public: f006fG2LRbqSL-E2awIABg
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-id-public: Y6HRJxXnTpu-nQakvOKviA
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-it-public: FsVyynooT6WIQtS961ELqA
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-ja-public: Zu3p9qZfTxK0t0VN4IoCng
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-ko-public: bGi_ELhlQNWjZZN87BX64A
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-pa-IN-public: IwvLA9-ASI61f1TlYwntiA
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-pl-public: WwHRoIfuSEWBrl2HQWooTA
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-pt-BR-public: F9uuPBuYQKiYZkfK0Rlm8w
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-ru-public: Lbt204khTz2Qm78-aZVkbA
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-aura-tr-public: XLPiCZXbTdCUkYDu-cjD1Q
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-de-public: Jdes4JjaQb-29v1ZumNO_g
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-en-GB-public: YamlK9gnQW-AwQiCY0ZR7w
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-en-US-public: Pu_4fme1T_6o0dBy2hmY9g
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-es-ES-public: A8mycs11RYWefMI2KfP2LQ
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-fr-public: fUEeolZEQr6DclkJxyEgfw
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-id-public: ASNdzfqMT8yAgR7_6myEjw
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-it-public: KoCxWjzBRcu_wXQ4nUvbRQ
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-ja-public: cNtJKNY6SQ6l-kABg1ps5w
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-ko-public: Aw-qQddhRNysFQ0LK1uJEQ
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-pa-IN-public: DTpZjxuPTH-B5O0k7I9szg
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-pl-public: MARL3XiPTO2rBlu0NumP3Q
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-pt-BR-public: MgPPrPSbQS6Ig-61zOv5-g
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-ru-public: PRkswFE1S_2JJfoKdbhGkw
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-google-tr-public: OYFW36BWSxaxX_elAOljFA
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-yahoo-aura-en-US-public: DopENAjrTQa0aH0TvvsTKg
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-yahoo-en-US-public: XQGT9t-vTCKrILUjY_B6YA
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-yandex-en-US-public: RgCfCiifQ7eBhGsKo1ZlzA
+ release-partner-repack-beetmover-win32-nightly-ironsource-ironsource-yandex-tr-public: S7Ase0-LQ-axtd9Kr-80dg
+ release-partner-repack-beetmover-win32-nightly-mailru-mailru-ru-public: L9In81mRTKWQc0QIurbsJg
+ release-partner-repack-beetmover-win32-nightly-mailru-okru-az-public: batepSucQ3-t_QgdaBDU9Q
+ release-partner-repack-beetmover-win32-nightly-mailru-okru-en-US-public: TWERo8A9RvCpQPMNE8EYNA
+ release-partner-repack-beetmover-win32-nightly-mailru-okru-hy-AM-public: MPSJhc9tQUKMluQvTFDfxw
+ release-partner-repack-beetmover-win32-nightly-mailru-okru-kk-public: NHq-6xTgSr-YJKZbBRtfWA
+ release-partner-repack-beetmover-win32-nightly-mailru-okru-ro-public: PG5A1ISoTVKE-sxhRxfECA
+ release-partner-repack-beetmover-win32-nightly-mailru-okru-ru-public: Reh7uNPGTNKOM1zF5WWekA
+ release-partner-repack-beetmover-win32-nightly-mailru-okru-tr-public: DhGQvy2NRq-2fZvNZKZkeA
+ release-partner-repack-beetmover-win32-nightly-mailru-okru-uk-public: BfJWu17NRm2TWumZ_Zn6vw
+ release-partner-repack-beetmover-win32-nightly-mailru-okru-uz-public: UQWm4_-uTmuE_1UdnfMpyg
+ release-partner-repack-beetmover-win32-nightly-mozillaonline-baidu-zh-CN-public: LcAIKN9uQ4O8p2gjnh3a9A
+ release-partner-repack-beetmover-win32-nightly-mozillaonline-kingsoft-zh-CN-public: WVHtWryiTf2vmU8mjutqUg
+ release-partner-repack-beetmover-win32-nightly-mozillaonline-mainWinFull-en-US-public: SHFroZr9Rkqw0EWEd6WeZQ
+ release-partner-repack-beetmover-win32-nightly-mozillaonline-mainWinFull-zh-CN-public: fNB4p9wiSW6PPRTPiQe2Sw
+ release-partner-repack-beetmover-win32-nightly-mozillaonline-mainWinStubFallback-zh-CN-public: QdD27iZnQKaRsH0kkuCNLQ
+ release-partner-repack-beetmover-win32-nightly-mozillaonline-others-zh-CN-public: aCbNZmydS86hzeT4FgO2hg
+ release-partner-repack-beetmover-win32-nightly-mozillaonline-qihoo-zh-CN-public: LwmLcZuNRtOFY77ZVws_SQ
+ release-partner-repack-beetmover-win32-nightly-mozillaonline-tencent-zh-CN-public: UC6ilBpLTBq3oMY54OFFhQ
+ release-partner-repack-beetmover-win32-nightly-mozillaonline-xbsafe-zh-CN-public: An-gvxe6T5WqKSiFTODQ-w
+ release-partner-repack-beetmover-win32-nightly-mozillaonline-zol-zh-CN-public: XkEDv3o3S9a_l9eJD_uRcA
+ release-partner-repack-beetmover-win32-nightly-ntt-ntt-en-US: R_-VzghBSrC3hmY1mUV70A
+ release-partner-repack-beetmover-win32-nightly-ntt-ntt-ja: RNcZkZTjRDqblMSVxsOXlg
+ release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-de-public: e0O3M1ijT1qCOkvt9pcNeQ
+ release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-en-GB-public: Ar9iKCMkRf2xL3jVi1Spbw
+ release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-en-US-public: Y-x3uqLGQ-WlnqEv3yPHWg
+ release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-es-ES-public: anXH2XO8QH2Pagqi-AlJwA
+ release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-fr-public: b36bYlzMTnCn3mTGqAktbg
+ release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-it-public: RHHXtV8fTZq_L8QxnzTBzg
+ release-partner-repack-beetmover-win32-nightly-playanext-playanext-wt-us-en-US-public: SzJZWPbSTRCW81D8tUEz0Q
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-ca: NOCVY7wITcSW9lofhedxKw
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-cy: XpxntXjgSDKv2Hyg1U_ftg
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-de: YdtdKm-iS_aiLmU5W6KiYg
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-en-GB: KkE0ZRXpSFecbrRijxSkRg
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-en-US: dgw8KQbVQhqTiZ2PGoUP4Q
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-es-ES: NY61HGKKTeWNpk1izw7Igg
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-fr: dUipTfysQHawNop3HX7L4Q
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-gd: LvvRgYmLT1aSExIQkIdPVw
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-001-it: Kbi5pm2yTfK7WjhsuuXE8A
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-ca: c51un2uASoamuzGu-tY0Sw
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-cy: TDIfG1gSS0uiyW4T8gl_MA
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-de: NH4osUe7RBCKsRzGAwjaRw
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-en-GB: ZjQzpfttQoqBAdo5avl0Gg
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-en-US: fhZGjF1bRliKsLan17uDdw
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-es-ES: aXe9VwdcTMqiIj9at7FcLQ
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-fr: S9Jy8ilWQZ-VtbFH9NeQwg
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-gd: B8Njp8VqSvKE4O0xEIGQrg
+ release-partner-repack-beetmover-win32-nightly-qwant-qwant-002-it: SsQp9MzfSx2lf2ciVJc-mg
+ release-partner-repack-beetmover-win32-nightly-seznam-seznam-cs: dKCi1hueRWKYYz9NtUtN4A
+ release-partner-repack-beetmover-win32-nightly-softonic-softonic-de: a4H-gSVURQGKmdBmYMmMDA
+ release-partner-repack-beetmover-win32-nightly-softonic-softonic-en-US: AZ8lXf1lRd6ngCdiagc9Pw
+ release-partner-repack-beetmover-win32-nightly-softonic-softonic-es-ES: Rae6s-K0QeC7HfiikiFb0g
+ release-partner-repack-beetmover-win32-nightly-softonic-softonic-fr: VKoRlQLVTgy-ZKyBdV5WOw
+ release-partner-repack-beetmover-win32-nightly-softonic-softonic-it: Icm9IpkqR1imR1nliI2vMA
+ release-partner-repack-beetmover-win32-nightly-softonic-softonic-pl: BjGd7LPYRBKXEqbRwG00gw
+ release-partner-repack-beetmover-win32-nightly-softonic-softonic-pt-BR: H-plcK4sQha8zkMJ7ektPA
+ release-partner-repack-beetmover-win32-nightly-softonic-softonic-ru: MaJGBVgvQXSjIN5v-jZITw
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem1-de-public: FMO8xxV9SpGr27U7cA3AvA
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem1-en-GB-public: SkIPWe3XROu9kgzIb-J10w
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem1-en-US-public: GyiHuISIRTGeFH5mKLhPkA
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem1-fr-public: EUMAWk29RNSMZWTbLTKlAA
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem2-de-public: axhrW0gySBGHL0uDmfzwRw
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem2-en-GB-public: DrpkNo8SQJqXnj1qVQNUpg
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem2-en-US-public: O_YnhNtGS1ajmt75MOkXOg
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem2-fr-public: Exg3_o3wRHC4Red_yuYi0g
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem3-de-public: YP8R8JdcRqanuePKOfzw7g
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem3-en-GB-public: HRy8urgqQE6UeRG3f4MGyw
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem3-en-US-public: Zi6HMv6CRpKaf_Itz2XkAQ
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-oem3-fr-public: AITGgz9dSw-K4vf-zGDDzQ
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-de-public: RGzIaKdJTJCxWM-8KasH4g
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-en-GB-public: FlVXGtRbTC6mNWP4zUhObw
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-en-US-public: IqUdFkDlRX6B4BsGgPebKg
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-fr-public: fg3z7gs8TBuzmmdq2zPDLg
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-de-public: Gj841P_tQQWEp8OTdyXdCg
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-en-GB-public: Oooe7GlbSxC0qWCTT2kTLg
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-en-US-public: G2ZIsE0ZSqeeFVOoWMQJZw
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-fr-public: S-oEVsoTQlKDEmtaXPFysQ
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-de-public: W3pqeYhPR16CZeRUFdSIXg
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-en-GB-public: RzJOL2fLRzK2GbKOZvD-yw
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-en-US-public: SbIBS_kwS_qU_hLtxOyp1g
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-fr-public: dHylJgeUTG2TXALQ3frzAA
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem1-de-public: Mlfa_zKHQ0CAd3UW_oLviw
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem1-en-GB-public: DUGXU6elQ1KBfS_doA1lxw
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem1-en-US-public: HbYuVDSGTF28ETZIsSElnA
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem1-fr-public: BwRthjc4SBevf2OchAuNWw
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem2-de-public: GaQuMdWKSWerOnSIbQCYvw
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem2-en-GB-public: QbeWsWvJSvKBjonWnBVFug
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem2-en-US-public: arw05s0XTGCs4-UHWhvdyg
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-oem2-fr-public: IydGIES8QK-oEu0ScXX-cg
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem1-de-public: RMMNhUOySRO1H4lj7uuM0g
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem1-en-GB-public: eWN6-QqtQtie_lguiXoLgw
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem1-en-US-public: bZb-PyJeQ0OJ0y8FxTrN8A
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem1-fr-public: Tm3Xw5vfQ7OJk01H2-GG3w
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem2-de-public: DEm0sYL3QmCEWPpQBcNSSQ
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem2-en-GB-public: CwthOZ_XTba-y2p8FrpMPA
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem2-en-US-public: LV58jHQCQPiSo2djTJmw6A
+ release-partner-repack-beetmover-win32-nightly-sweetlabs-sweetlabs-r-oem2-fr-public: e17U1TBATN2SpZipLqY_qQ
+ release-partner-repack-beetmover-win32-nightly-toshiba-toshiba-001-MX-es-MX: ELlNoGY5TNKwDz3i7NH5PA
+ release-partner-repack-beetmover-win32-nightly-toshiba-toshiba-001-US-en-US: GQNUW7oGTtSwBIsuLMcIbA
+ release-partner-repack-beetmover-win32-nightly-toshiba-toshiba-b2b-JP-en-US: CkET61BAQ-ys7QFQqIAnRg
+ release-partner-repack-beetmover-win32-nightly-toshiba-toshiba-download-B-US-en-US: TCOVwiQHTz-roR97EgiWog
+ release-partner-repack-beetmover-win32-nightly-toshiba-toshiba-download-MX-es-MX: DX9wDTmCQqCs1OtHh6d6sA
+ release-partner-repack-beetmover-win32-nightly-toshiba-toshiba-download-US-en-US: Z1WGjIFBSOWTJnHjkO39SA
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-1und1-de: ddEZQA_1SaaLx7w43AYBTg
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-1und1-en-US: BvPjfXNCSdanfa5eBuhhiw
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-1und1_notb-de: GrnXhdYnSBWijvJrxny1Bw
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-1und1_notb-en-US: A6M938oLR8KVTgPeLkYCsg
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-gmx-de: d5r8e-u1TEWv7Il8nU64ig
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-gmx-en-US: EmrjTwtAQu-ep3va8l-BYA
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-gmx_notb-de: bC4nvoPdSWyYFUJyjiehkg
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-gmx_notb-en-US: e3rFFS2NSQ-eEBLf5hzpkg
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-mail.com-de: VMKA694DT8-LjTOJi5ZEHQ
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-mail.com-en-US: Y8Axfz10QxWTYtEbyhnY1A
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-mail.com_notb-de: WYSAxtWhRI2Aly0NV1Pa4g
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-mail.com_notb-en-US: exdF4-X2Ty2tluEqfFfXfA
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-web.de-de: ZGIC_uVvSu-zM5T5sX8JtQ
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-web.de-en-US: ENbofKrjQvqNomETN6VwQQ
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-web.de_notb-de: VtPZzyUrSfe7oJCk-oonYQ
+ release-partner-repack-beetmover-win32-nightly-unitedinternet-web.de_notb-en-US: BmPs6i8tRoqtFv7DA8UO8g
+ release-partner-repack-beetmover-win32-nightly-wildtangent-wildtangent-en-US-public: SxgBS0HMQwewn73Wf9uhKA
+ release-partner-repack-beetmover-win32-nightly-yandex-yandex-drp-ru: f83cTx08SOCAEZ9MtI6BRg
+ release-partner-repack-beetmover-win32-nightly-yandex-yandex-planB-ru: ckMdxeGaTOG0AfSj9sMttA
+ release-partner-repack-beetmover-win32-nightly-yandex-yandex-portals-ru: LE6NZCyiQ8SYWPS_eYl3zQ
+ release-partner-repack-beetmover-win32-nightly-yandex-yandex-ru-mz-ru: FHf-MVGQStunXu5GQ1bDQA
+ release-partner-repack-beetmover-win32-nightly-yandex-yandex-ru-ru: dSHraoq8THa19WQTSCFg3w
+ release-partner-repack-beetmover-win32-nightly-yandex-yandex-tr-gezginler-tr: f9b_elHISlGCAFaovMVCiw
+ release-partner-repack-beetmover-win32-nightly-yandex-yandex-tr-tamindir-tr: Qqh-VmMST7yMbBvwj7aLbQ
+ release-partner-repack-beetmover-win32-nightly-yandex-yandex-tr-tr: Lej8LZ7MQ3OTfxeQHEWkzw
+ release-partner-repack-beetmover-win32-nightly-yandex-yandex-ua-ru: K9o3koH8RTyakuynD5Hibg
+ release-partner-repack-beetmover-win32-nightly-yandex-yandex-ua-uk: Ebv0z7EQQTKqhM8tG4ZIXA
+ release-partner-repack-beetmover-win64-nightly-acer-acer-002-en-US: dMSPPs16SceNIEuKfUtbZg
+ release-partner-repack-beetmover-win64-nightly-aol-aol-en-US: RZI80m2iT06v4JitiFTXXw
+ release-partner-repack-beetmover-win64-nightly-aol-aol_de-de: Pk32T1UHTduslx6WWSa4VQ
+ release-partner-repack-beetmover-win64-nightly-aol-aol_desktop-en-US: cFkKluN0SxOWsP1taxjkYQ
+ release-partner-repack-beetmover-win64-nightly-aol-aol_huffington-en-US: OfHYKwj0TlKJXUijxOrYSg
+ release-partner-repack-beetmover-win64-nightly-aol-aol_uk-en-GB: EctuiYUFRD-rCrOIM8ntEg
+ release-partner-repack-beetmover-win64-nightly-chipde-chipde-de: c40jasziQRy71Qebjf45DA
+ release-partner-repack-beetmover-win64-nightly-chipde-cliqz-003-de: eYroXbJ2TLWOQhO3KmdRmQ
+ release-partner-repack-beetmover-win64-nightly-chipde-cliqz-004-de: Sax-W_iETw-FnXSmqVWNPQ
+ release-partner-repack-beetmover-win64-nightly-chipde-cliqz-005-de: GTNx6IxNSdeJJg_gDAld2g
+ release-partner-repack-beetmover-win64-nightly-chipde-cliqz-006-de: EKEEw0s_TsO6xOWxWTfx3A
+ release-partner-repack-beetmover-win64-nightly-chipde-cliqz-007-de: dvS6cVqoSmmZ-sWK-cNEjw
+ release-partner-repack-beetmover-win64-nightly-chipde-cliqz-008-de: IGz03s2RSzOa81zzSNaVQQ
+ release-partner-repack-beetmover-win64-nightly-chipde-cliqz-control-de: Y2_Cd5UTSlyTz8n_Esi9zw
+ release-partner-repack-beetmover-win64-nightly-chipde-cliqz-de: UpY4Z7boTpiUTBAO9HkI3g
+ release-partner-repack-beetmover-win64-nightly-firefox-firefox-election-edition-en-US-public: IWTgiVM7SjC2CWGMzfy6RQ
+ release-partner-repack-beetmover-win64-nightly-funnelcake-funnelcake134-en-US-public: M6b01YkUTfWhlq6ylzZmBQ
+ release-partner-repack-beetmover-win64-nightly-funnelcake-funnelcake137-en-US-public: TLaQF0bNTbaozjBY4E5y2w
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-de-public: Nj29R1vxR-qa0q7SO2M-IA
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-en-GB-public: Qzkwl8cYR8qQbyprHQugTQ
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-en-US-public: bhe8QICQQpapN6YYf7bpoA
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-es-ES-public: UYapZs9uQL-RpFdJg67WYg
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-fr-public: eS9aHqZhSFK1FcD6P3ovPA
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-id-public: Jy7Y8vdGTQ-aItAdL-PZoA
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-it-public: BkQrYZrQT_SqqHa2kPFbnw
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-ja-public: HbCtfPHqTxezNC4a3jtaUQ
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-ko-public: dJA-bzumTdmc30aUCKgWvA
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-pa-IN-public: IZaU-iuiRjKdrMfstzqsNw
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-pl-public: Sp05Y_ceQHe8WKcd-Lstcg
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-pt-BR-public: RQKBl0d5TESz5A7tBlUSrA
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-ru-public: O0GrdZa8SrSnD156S_eTwA
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-aura-tr-public: RNQWffZVRSqji8kf_3j7TQ
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-de-public: Z20m3p4ETRmJsk2YhwzA8g
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-en-GB-public: dMEAUZ4xRzWLhzn8LXvFug
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-en-US-public: QCV4fi60RSW_d_Ugtd0tzw
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-es-ES-public: Im23RIwESsWkGkYcoUSF1w
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-fr-public: ahvvWMhqSJ2n0uz4AD-w6Q
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-id-public: JbouLxJFTlmwKyw7-rG3Dw
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-it-public: I9gjpH5IT8uN9XfZxR9AZA
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-ja-public: BvYEyiwDTZOacIvaPr7RWA
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-ko-public: C9XMFM9HRyiuG6CSlEiqDg
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-pa-IN-public: S9IpN2ITTlSTgGGj_mSZ6Q
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-pl-public: JoooizHVRx-Zbp1HNECDGw
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-pt-BR-public: WRYOS5n4QWitxNjIK16kiQ
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-ru-public: IyyZTQWDQhOz3oVx9JQ-IA
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-google-tr-public: QdVinVsLRmOl_fSuszOhwg
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-yahoo-aura-en-US-public: L31DKiwqSB-vM2oN6jtLrg
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-yahoo-en-US-public: CkK_p0wwQoqF3sGLyowJmA
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-yandex-en-US-public: fwKMZhhKRSue18s1uIDfLg
+ release-partner-repack-beetmover-win64-nightly-ironsource-ironsource-yandex-tr-public: NdwJZJ_XSI-0kQUyeUdzGQ
+ release-partner-repack-beetmover-win64-nightly-mailru-mailru-ru-public: SEC1Os8NTuO5vvawZYPnuA
+ release-partner-repack-beetmover-win64-nightly-mailru-okru-az-public: V5RxPB4UT_-k864B7XA3cg
+ release-partner-repack-beetmover-win64-nightly-mailru-okru-en-US-public: JrSfNj7VR4aJnZpW0Ql_dg
+ release-partner-repack-beetmover-win64-nightly-mailru-okru-hy-AM-public: d4l66IL4SS-FRHcNwdk-RA
+ release-partner-repack-beetmover-win64-nightly-mailru-okru-kk-public: Pu_qm-6cRNmppXTkmBv__g
+ release-partner-repack-beetmover-win64-nightly-mailru-okru-ro-public: OWmt0XuMQkW5gaxjKAx0Nw
+ release-partner-repack-beetmover-win64-nightly-mailru-okru-ru-public: W6eknarQT6GJSUHoQsT3Tw
+ release-partner-repack-beetmover-win64-nightly-mailru-okru-tr-public: TaKiH74RTOyL4kGcTLTesQ
+ release-partner-repack-beetmover-win64-nightly-mailru-okru-uk-public: ebp_T1LNRLSlENInkvjUEQ
+ release-partner-repack-beetmover-win64-nightly-mailru-okru-uz-public: e6yokAjmRnSMChwWklJR5w
+ release-partner-repack-beetmover-win64-nightly-mozillaonline-mainWinFull-en-US-public: DsH5tr1cQBW2Gx45hxqZhg
+ release-partner-repack-beetmover-win64-nightly-mozillaonline-mainWinFull-zh-CN-public: Z07uGFiCSzG2ZjFS7IwzBA
+ release-partner-repack-beetmover-win64-nightly-mozillaonline-mainWinStubFallback-zh-CN-public: MtF2dFF5TVSXLItr6ajvUw
+ release-partner-repack-beetmover-win64-nightly-mozillaonline-others-zh-CN-public: Q7SWXvJkSLG4-W5MNclHiA
+ release-partner-repack-beetmover-win64-nightly-mozillaonline-qihoo-zh-CN-public: Y7uhFyzhRYGCe1BuEU6XaQ
+ release-partner-repack-beetmover-win64-nightly-mozillaonline-tencent-zh-CN-public: UGg3ZshcSRqM8RI0zgZ9vw
+ release-partner-repack-beetmover-win64-nightly-mozillaonline-xbsafe-zh-CN-public: LFm7bz9hQtqkUs-9aIIJQQ
+ release-partner-repack-beetmover-win64-nightly-ntt-ntt-en-US: XiCIz_87R9GuDIyZNXHxbg
+ release-partner-repack-beetmover-win64-nightly-ntt-ntt-ja: EzFeNEwWQLyJpSic37X9Gw
+ release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-de-public: bl2lb51QQjO-fn-auWRyZQ
+ release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-en-GB-public: PiSKQgS-QEy4NUGipyzB8A
+ release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-en-US-public: HqJt4Vz4R7yyhP1TmrQjJw
+ release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-es-ES-public: DDjaooDEQAqCTWkFAKkYvg
+ release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-fr-public: JOAGwMoGS8y5ldakExfeJw
+ release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-it-public: fqm8GWsAQMuiewOGFNFvNQ
+ release-partner-repack-beetmover-win64-nightly-playanext-playanext-wt-us-en-US-public: CQe5eFbFREq6K5WyMEJWjQ
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-ca: FBBT92_PSySY_NuE6UbzWA
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-cy: ZyGvwyC1RzifKJSVu8dy4g
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-de: Wfy5XUvyTP-CUIJ_BM1riw
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-en-GB: GEKAFz4MSkmuwjZ0ufkqtQ
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-en-US: Nu20aPbdTSOVV-zwzMTrVQ
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-es-ES: BeL-58rLTQmEtzc0E1Ut_Q
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-fr: J3tVEj5MRSSSXZapxqTSCg
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-gd: J3r4Sf9YT46HXL42GsYKqw
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-001-it: N_LIZPKrQpKa_nceOwe1HQ
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-ca: QPAx1VA1ROurbO_7ZEb1nw
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-cy: b-R32c3cTm-TSlMrmScQOg
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-de: MgV-IVoSQwqX_rUWgcWLDA
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-en-GB: WHOm-TttS42okKv8CooiZg
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-en-US: HljGQ4KfTp-52QdcWtqy3w
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-es-ES: LysQsoXITlCVnG2DHzD8Bw
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-fr: Jjr__pAhR5a_xdxelV0duA
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-gd: N8DsMRHWSzOnhGBs7SOSUg
+ release-partner-repack-beetmover-win64-nightly-qwant-qwant-002-it: D_FJcnVeTfCrp_EOVbVGBA
+ release-partner-repack-beetmover-win64-nightly-seznam-seznam-cs: cPMMn4A3RQuWrXBaWKQb0A
+ release-partner-repack-beetmover-win64-nightly-softonic-softonic-de: PzJWCZeNS3ayXdW3gJ8aTw
+ release-partner-repack-beetmover-win64-nightly-softonic-softonic-en-US: aFqMMpzVTeGiQ86Kbz7qsA
+ release-partner-repack-beetmover-win64-nightly-softonic-softonic-es-ES: dfF_kts2R7CRUuNUCAnbzA
+ release-partner-repack-beetmover-win64-nightly-softonic-softonic-fr: BlFDu5yTRL2ACGQqPK_IlA
+ release-partner-repack-beetmover-win64-nightly-softonic-softonic-it: FSKkdTHBTzekJ91ylIs3Pg
+ release-partner-repack-beetmover-win64-nightly-softonic-softonic-pl: ZK_R38msRe-OYjBbSkksEQ
+ release-partner-repack-beetmover-win64-nightly-softonic-softonic-pt-BR: LoBoZEORSx2HoEddWapBXQ
+ release-partner-repack-beetmover-win64-nightly-softonic-softonic-ru: a1Dj7M-QT5Sgwwbiz9q6EQ
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem1-de-public: T3yU8L2kReKrLm_oBTNxuQ
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem1-en-GB-public: f81zlstYS9Sk7eI83drClA
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem1-en-US-public: BuWewCVVSoSqO2oocHqLrQ
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem1-fr-public: dvCYashmTLySbtZbAfM8tw
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem2-de-public: FabBNM9JQWKl38WowdGZpg
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem2-en-GB-public: e0D-A1sHQhKCQD_cVXue4A
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem2-en-US-public: bvRDY0LTRleqg7hsMZD2lw
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem2-fr-public: eNxQA2rSRZyWEDgV9yew7A
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem3-de-public: MgdHif8ZTJm8NDc2j87aCg
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem3-en-GB-public: b1EzO0NpRLq-f-nh6NKMIA
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem3-en-US-public: HM7t_AzKSHSG_fWmBXViwA
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-oem3-fr-public: ClkE0u9dQ5Oi1V4aAg18Dw
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-de-public: NqvYvaYHSaCLqRJlIA-nxg
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-en-GB-public: DX77XEqcTGKaRuF9_iLPTA
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-en-US-public: XkuH5373SK2vmxuPmh7LPA
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-fr-public: ZvGBlB4bRKiCkYEw6dtBXA
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-de-public: FGl9bvODQu2mqtZy49QNvw
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-en-GB-public: Ke4jIgOARsmWGSVWHc6pJg
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-en-US-public: aDkAl2YSTjOL-7WzrZO2hw
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-fr-public: IYiKHxfYTFuWHRUdcDmvJw
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-de-public: DML2EoeXTDOmJIItZ3C76A
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-en-GB-public: Kp-e422FQeGC8ITZikQfXg
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-en-US-public: E0Q02kRFTdas5ziB8_T_2Q
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-fr-public: Zw5uXlJvS3W4J-eKOpRtjw
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem1-de-public: HnuxBaQ3Q4mk1fzic9FiiQ
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem1-en-GB-public: eHxi659ESVyqsnL2TEeEIw
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem1-en-US-public: BmAgJt3QRTWANZ8Pwy0mJA
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem1-fr-public: NJIQ4rBERU6NFh2m67fWBA
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem2-de-public: KqQrefSuQ2mwNWfC5O2zGg
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem2-en-GB-public: FLtLcd1yQqy1vSJIk2osHw
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem2-en-US-public: OKCS5BZESI6xd-vZ_BB0Rg
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-oem2-fr-public: BeqU0L4QSxqE45y5xSbBPg
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem1-de-public: bguKTodhTnu6p7hj_xaIrg
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem1-en-GB-public: BdPsIwSaTHGXWZwgK3P7fg
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem1-en-US-public: Q4Og0UoPThK4Dn3Cufe74g
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem1-fr-public: PJ4a3_HxTHGvVp2D96QN5A
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem2-de-public: czBvsvmHRayMJzh2xJ0IpQ
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem2-en-GB-public: WD8pu55RSgycpKROmSymBg
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem2-en-US-public: UjbKbAJ_R9KRUCnPyIJtNg
+ release-partner-repack-beetmover-win64-nightly-sweetlabs-sweetlabs-r-oem2-fr-public: QporqiJjTPibDjPgd4LxJA
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-1und1-de: bSz-LqvmR9eeVLarDBYk2A
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-1und1-en-US: fMVKsPCPQWOoHkRqoEFSxA
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-1und1_notb-de: LcCJSMvmS3u7WNSnF82Omw
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-1und1_notb-en-US: JmP8Rz_JRNqcS0-n5UrZRA
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-gmx-de: JzvYvXs0QtG8lDq1pwSYZA
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-gmx-en-US: SdVEmNFITwecgpT4nUuzuw
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-gmx_notb-de: eORLffr8TjWBcn5M9hlBew
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-gmx_notb-en-US: SPkDYDmaRQ6b6anE8PGXow
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-mail.com-de: UH_s8qJERumqqD0FIXedhg
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-mail.com-en-US: c5ZQpNFER_ujPETmQ1659A
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-mail.com_notb-de: IsNI9uZKTWa9921dPkk5eg
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-mail.com_notb-en-US: Xbp9vpmRR0KFAgOoHotUpw
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-web.de-de: J9CWv-x0Rd-N1cOBIKIoDw
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-web.de-en-US: DiiMu2t7TbefBT5cQ0uZBQ
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-web.de_notb-de: MgMn4fWmRxq5yWSwEUwkEQ
+ release-partner-repack-beetmover-win64-nightly-unitedinternet-web.de_notb-en-US: CVR3LEZJQXCGHJSSeqKp4g
+ release-partner-repack-beetmover-win64-nightly-yandex-yandex-drp-ru: fw9jGkwtS2mhtdgg8fK-mA
+ release-partner-repack-beetmover-win64-nightly-yandex-yandex-planB-ru: SYhB2A4kQFig4RdXvMxX7g
+ release-partner-repack-beetmover-win64-nightly-yandex-yandex-portals-ru: cmyyg1NtSW2hy8v1x8hCiw
+ release-partner-repack-beetmover-win64-nightly-yandex-yandex-ru-mz-ru: UzIDPvbOQd6izYhTANQ7OA
+ release-partner-repack-beetmover-win64-nightly-yandex-yandex-ru-ru: VWMR2NB1RRSZWbH1zWZQcw
+ release-partner-repack-beetmover-win64-nightly-yandex-yandex-tr-gezginler-tr: WkWfzAT-RSa2eHxMK71AwA
+ release-partner-repack-beetmover-win64-nightly-yandex-yandex-tr-tamindir-tr: HBYQ4YEmRb6yeiWMz2xUKg
+ release-partner-repack-beetmover-win64-nightly-yandex-yandex-tr-tr: LCSe72AoRpy6aPmyR-9ptQ
+ release-partner-repack-beetmover-win64-nightly-yandex-yandex-ua-ru: KBb9BmdnThKJqDPh_XL21g
+ release-partner-repack-beetmover-win64-nightly-yandex-yandex-ua-uk: R6ShpAeMQmeN5f3ta5zRWw
+ release-partner-repack-chunking-dummy-linux-nightly-aol-aol-en-US: Fl4h6BC3SwaKYLiTwhUT1w
+ release-partner-repack-chunking-dummy-linux-nightly-aol-aol_desktop-en-US: WxWdFF_hRjCfX7ellm8AxA
+ release-partner-repack-chunking-dummy-linux-nightly-aol-aol_huffington-en-US: IbZ_9NTnTW-aE0YxnJjmxA
+ release-partner-repack-chunking-dummy-linux-nightly-aol-aol_uk-en-GB: IEn7b9tQQuyMTAt54Iy6yg
+ release-partner-repack-chunking-dummy-linux-nightly-funnelcake-funnelcake134-en-US: YJn6BqduSWCpW2WXhmlM9g
+ release-partner-repack-chunking-dummy-linux-nightly-mozillaonline-mainOther-en-US: cidFWd6oTQK86psDSczbHA
+ release-partner-repack-chunking-dummy-linux-nightly-mozillaonline-mainOther-zh-CN: ASbrmNvdRT-4N5ByXSehWQ
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-ca: G0814a4TQgSU6NjRCjDaVQ
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-cy: Kdy612q1QP-0GdFjDin7rA
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-de: fdZ3PGDwQWO2D0olKp_v9Q
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-en-GB: FEU35DS_StWNEABCAvjCcA
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-en-US: apEUC9YgSVi1rCLhVQbaZA
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-es-ES: PoHzU7j-QRyCJ6riX1-Vow
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-fr: DWsOMlNNRm6g_ZzEs75MeA
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-gd: dFDKzmy3TF2B9dLJqbEBYA
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-001-it: KtN5S2eqSUyOTdpgITg_LA
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-ca: PW-mLeUMRcyVOHE_qkHLSg
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-cy: PNkK9FZuQ223vGyKy-9rJw
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-de: SjyQjBS9QkyJUDSpu2DYrg
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-en-GB: BEQTaMFQQLaGMydwNYUdYQ
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-en-US: WjzfALMdS02PWHaKqRZjIA
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-es-ES: V4Yf6DLQTrSBhj_ZzQ6nrg
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-fr: STa4Vhp8QGqXLb5LpvcogA
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-gd: JZRSsT6ZS7GFHFSP59JkgQ
+ release-partner-repack-chunking-dummy-linux-nightly-qwant-qwant-002-it: PRf-iVugSuKzrVhL6cmaWg
+ release-partner-repack-chunking-dummy-linux-nightly-seznam-seznam-cs: Bvj_EU07TI-rN7MsY0QVUA
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-1und1-de: Vu67oEMTSQS530mVijYvFw
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-1und1-en-US: XWVcZ6zeRWO1xQkcphOy4Q
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-1und1_notb-de: QWaMxE-AQgegwkl59BpBEg
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-1und1_notb-en-US: WB5nB27PQy2gKTTZJWYyQg
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-gmx-de: Yc1jYejGTa-FnZVFu63uMQ
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-gmx-en-US: VEjcR3XIQPGwz_8kTAiVBQ
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-gmx_notb-de: Zbl3lcEjTCaLUPKj7SWqPg
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-gmx_notb-en-US: Iz_Z74DjRP-BTO44sXTQyQ
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-mail.com-de: By3IrHyFQeKLlvAF9Nv9qQ
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-mail.com-en-US: T1vC9oxSQkizoUCMMcDf5A
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-mail.com_notb-de: RScYNwRVSPmwOTgJ2XtGaA
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-mail.com_notb-en-US: QA8uGrNWTY2FkL2ymIXeQQ
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-web.de-de: Jszyh_lvSlSzQy7jU7hQqw
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-web.de-en-US: EzB9tSGWS6mU3HL8nD1CgQ
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-web.de_notb-de: agf3o9pfTpWydU699tgQMA
+ release-partner-repack-chunking-dummy-linux-nightly-unitedinternet-web.de_notb-en-US: KDR0sFYtQmaVIzd9-op2Rg
+ release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-portals-ru: DxwlUCEvR2a3At2e7J6ZXg
+ release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-ru-mz-ru: d0kY5vnoQ1Sqe0z51WT2mA
+ release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-ru-ru: HYY2jNi_T12Yz1zmOKZ2bw
+ release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-tr-gezginler-tr: C4lH3A0gTKi_VS4KQ82ZTw
+ release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-tr-tamindir-tr: KIo9d1qXT8eOjxylNBZBFw
+ release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-tr-tr: Dpe1934eS06dtgjhESmAgQ
+ release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-ua-ru: FaGqpRoRSGOhkOK0UR4RkA
+ release-partner-repack-chunking-dummy-linux-nightly-yandex-yandex-ua-uk: dfSr1x1LTuGHCCDFqt1wGw
+ release-partner-repack-chunking-dummy-linux64-nightly-mozillaonline-mainOther-en-US: FadnvUO4Ti-9OAL7qwRrFw
+ release-partner-repack-chunking-dummy-linux64-nightly-mozillaonline-mainOther-zh-CN: QCh-fvHITk6yqL7NiS00gw
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-ca: TjQvz95wQJWgYnJkFXWS8Q
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-cy: Kl8n-mFCScG5f-fMw5Qq-Q
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-de: DevD7YtSSF-CGWbrYI4Ntw
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-en-GB: PNmRY94JT76Ejl5yYX3HFQ
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-en-US: VhHtTtCPTdGJlyGT-jPsrA
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-es-ES: FMQ-VEm1TuaPtDgyqF7dXw
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-fr: VDIxeefNSnCdBy6N3D8I_Q
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-gd: MYjDhbJ5TgK-38Z--oDKHw
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-001-it: f8tprk0hSf62fEPhqbavLA
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-ca: cDgrdvfRSZCO-2wSGwSqRg
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-cy: UD8pSzkHTH6yH-gRGWL7eQ
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-de: JrprVawUSUKsOL1as3QbWg
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-en-GB: UrPatzeQS4OJf7b2ri7yLA
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-en-US: BWc417QwR5yDSRQ25xUONg
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-es-ES: d-zMXurYTpSjTJhw6laTjA
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-fr: B3OYCWKNQCuIufOuS9QuyA
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-gd: Av0UiDEvQKCmqTLKLXA0zw
+ release-partner-repack-chunking-dummy-linux64-nightly-qwant-qwant-002-it: LUlPCcopScS0asxdkiLRfw
+ release-partner-repack-linux-nightly: UO4uplgdSbap_5QpagWAtg
+ release-partner-repack-linux64-nightly: f8mgMXjSSxad0HG35CnxDQ
+ release-partner-repack-macosx64-nightly: SzpeIMSDTYeSpGWc999qxA
+ release-partner-repack-repackage-macosx64-nightly-aol-aol-en-US: cZW-czE_TMeE6ER-THQHcA
+ release-partner-repack-repackage-macosx64-nightly-aol-aol_de-de: Klx5x9wJQ3Gp4VhzWxllig
+ release-partner-repack-repackage-macosx64-nightly-aol-aol_desktop-en-US: fFIRDguaR9a4yHbPQBxuiA
+ release-partner-repack-repackage-macosx64-nightly-aol-aol_huffington-en-US: HjF5gacFQpaEfbt-xCEytQ
+ release-partner-repack-repackage-macosx64-nightly-aol-aol_uk-en-GB: EluUnY4FTzSNqNlzHXyT2A
+ release-partner-repack-repackage-macosx64-nightly-chipde-chipde-de: FBWI_sOmTuOpM19WMtkTIA
+ release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-003-de: Mnc6tMkyTkCIJUWmqC8Blg
+ release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-004-de: d-ZeGR3xR6mt7Z3E3j6fRQ
+ release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-005-de: cHX5HFTfRCub4eHZt22UXQ
+ release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-006-de: PziUMlaDTNG61yaGRuhe6Q
+ release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-007-de: PwcF0OMjS7KoH9_tCgyIgg
+ release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-008-de: bER4g0jJQKCv1MpeGH_MZw
+ release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-control-de: DCmH5TDbSNiqsvQ0lQ-Exw
+ release-partner-repack-repackage-macosx64-nightly-chipde-cliqz-de: FRXzg4O9Rsa2IktaG7C3Nw
+ release-partner-repack-repackage-macosx64-nightly-firefox-firefox-election-edition-en-US: AeCg8JyYRQawGNKpSzeu8Q
+ release-partner-repack-repackage-macosx64-nightly-funnelcake-funnelcake134-en-US: PKAlXMUKRtWnIwKPXkhRHA
+ release-partner-repack-repackage-macosx64-nightly-funnelcake-funnelcake137-en-US: MNn45cg1T9iGWNOCsi8VsA
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-de: MDgKzekrTn-M0ADySHU2fg
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-en-GB: PqWEHhBAQZG0-jgA50ZeqQ
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-en-US: ZOB6-qVwQD2RLmXc6Tzplg
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-es-ES: BsxSTWS7T9GPDcpbfXTkMA
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-fr: C1WxDhuuQo-a8xRNfkyqrw
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-id: XR-ZTJPqTyKiPZXg2sPkBA
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-it: PpnTB5RfTPSQdUO_S_45Rw
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-ko: GMafq2enTam1vy_4MdLDUg
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-pa-IN: KqGinlJcQEaxW4-6IffNww
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-pl: DGkoViLXQ-aFNdv38nrR9g
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-pt-BR: TXNkI77kTaSO0q63sdTK0w
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-ru: TDhUOknFR_-PBKUEBs18-Q
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-aura-tr: VlFJRofOSVWkWbvmoDXReg
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-de: M3F3eGtzRImPwA-nKbkILQ
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-en-GB: fbDcAZcVT9mcwjKzFeGQPA
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-en-US: CO2XRa5XRIicOn7l_G8JTg
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-es-ES: Lp5SzER7R-2tHixqB5fOUg
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-fr: K6MuyJW4Smqv14H1FtT29A
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-id: asdCp65nR7KyMcDHqN88Bg
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-it: Qip7bL0QQ9OQ01Uk3zZzqg
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-ko: RBIxsdNCTiKpMXq97MGHAQ
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-pa-IN: IkCXosFPT0m6B124I7PDcg
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-pl: N3m-SYN3Qn-02Kyrc_PTAA
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-pt-BR: K-ra1l9LTjuOJkwUOU4exg
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-ru: fvi5Q5wIQ1uWYZvict7Jig
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-google-tr: VvLHNkUUS1SyMrLmnHveDw
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-yahoo-aura-en-US: Gw5a8KNcTluBuJdCvDIibQ
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-yahoo-en-US: X69bdqf_RaiDyjEMYCTyJw
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-yandex-en-US: Ep2J2L9WTAy3Q2e_iCVjQQ
+ release-partner-repack-repackage-macosx64-nightly-ironsource-ironsource-yandex-tr: DbILlvm0T5-fqIccfO_QgQ
+ release-partner-repack-repackage-macosx64-nightly-mozillaonline-mainOther-en-US: N5xwjXTtRtmwfnLj87MdJQ
+ release-partner-repack-repackage-macosx64-nightly-mozillaonline-mainOther-zh-CN: KEv6U2JrRyOxpWGaSvViEA
+ release-partner-repack-repackage-macosx64-nightly-ntt-ntt-en-US: XiRND8a6Q3et0pl7NExR2Q
+ release-partner-repack-repackage-macosx64-nightly-ntt-ntt-ja-JP-mac: NlQ3gqM4RXKPOXTnpbdo9g
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-ca: azxF_70HS7y1mEPeH_lMkw
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-cy: Hm9lQXgsSVuXzbrmk7X0nA
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-de: fBSKtepRSbKQZVOuaEKJPw
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-en-GB: LyWK1ZqkRHqDRQ8nKlL8kg
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-en-US: Su3NtxirSSqBKSPeuwuz6A
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-es-ES: MkTFT8SVSta0RRYNHuTJmg
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-fr: BiR2QFC_Q6ux8jreOM85xg
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-gd: f-3HWh8cSPqjN2IT_MR0IA
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-001-it: TlYxU8AsTxWmFVyJ0tA02Q
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-ca: AQ8Z07ZcTZ-rbqp0HHzfZQ
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-cy: ENVbIUsyRL2A-rPHaGPz5g
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-de: NX6EO8tWRga9XPxV8aerdw
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-en-GB: dtCWtYPnQ_mWdxw-lmyvAg
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-en-US: M60-S97OSdW4AmZ4tCMahw
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-es-ES: TCf6fz7LQXSbkQ5QOy5Uvg
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-fr: Tm7Hp8hDQYKdNTCq55kyDg
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-gd: UhQUm0EUQ6G32mTqmJtpFg
+ release-partner-repack-repackage-macosx64-nightly-qwant-qwant-002-it: PEgJHiuHTymthsW-1-IuHg
+ release-partner-repack-repackage-macosx64-nightly-seznam-seznam-cs: fLe_59oERT2lOFHfcnu-fw
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-1und1-de: VigDGwSkR2y74yUZtSeAqQ
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-1und1-en-US: Nq6ggH_gTZ6QQERWuvp0Mg
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-1und1_notb-de: f_C6tcW2SwSx3pKftcpywQ
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-1und1_notb-en-US: UKhPQR2gQOSz8fcOlkBQkA
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-gmx-de: Mp628RbBSquvNYs9AnxQMQ
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-gmx-en-US: KkEKpaipQRC2Q9Kv5IYvEQ
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-gmx_notb-de: MUqfp1U3Q5WVIsFvoB-ykg
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-gmx_notb-en-US: KsDtTDaLS7eG_pew54nVag
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-mail.com-de: K_Q4ZoinSL2IT2KpNYL1ig
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-mail.com-en-US: e5EwmkVYSDuKtib_DffhOA
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-mail.com_notb-de: RHiKJ_x0Rtiacg6iVDE6Kw
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-mail.com_notb-en-US: Z9-aA8nwR9-_SnRaxKuTHQ
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-web.de-de: LVg61mxsSjiz8qvI-E3Zvw
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-web.de-en-US: YJHJJQaDTA-sjbNTpjZu_Q
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-web.de_notb-de: Rw8-CAlQRXuGH1iTz0Vebw
+ release-partner-repack-repackage-macosx64-nightly-unitedinternet-web.de_notb-en-US: CRc39GuQQb-jU7HqmpvjAQ
+ release-partner-repack-repackage-macosx64-nightly-yandex-yandex-portals-ru: Z1DLLqEyTH2vPiwHIzBl8w
+ release-partner-repack-repackage-macosx64-nightly-yandex-yandex-ru-mz-ru: aYJ1f3sLTru9kRwkm6uVtg
+ release-partner-repack-repackage-macosx64-nightly-yandex-yandex-ru-ru: L7pL8ev6ROqO5jljAsIfUg
+ release-partner-repack-repackage-macosx64-nightly-yandex-yandex-tr-gezginler-tr: DXbZXfLVTky9wvp5ARq2nQ
+ release-partner-repack-repackage-macosx64-nightly-yandex-yandex-tr-tamindir-tr: e_DJ1jl9RkeVqqXXhxa2ag
+ release-partner-repack-repackage-macosx64-nightly-yandex-yandex-tr-tr: ZVZne-avRheffJDwQ7k3_w
+ release-partner-repack-repackage-macosx64-nightly-yandex-yandex-ua-ru: JVgSbvGgRqWVZFiOVs5ZJA
+ release-partner-repack-repackage-macosx64-nightly-yandex-yandex-ua-uk: dpfjrTKsT32j4EBBpMV_kA
+ release-partner-repack-repackage-signing-linux-nightly-aol-aol-en-US: fmfyjBqiSnqgvLhYZjqx7w
+ release-partner-repack-repackage-signing-linux-nightly-aol-aol_desktop-en-US: O0An4cBORUilylitG1L6YA
+ release-partner-repack-repackage-signing-linux-nightly-aol-aol_huffington-en-US: Y_c74uPhQWSKBzbKBVkXSQ
+ release-partner-repack-repackage-signing-linux-nightly-aol-aol_uk-en-GB: BoVGx-5tQ2m0s-j9UQRdlA
+ release-partner-repack-repackage-signing-linux-nightly-funnelcake-funnelcake134-en-US: AzPsfV6AQaWGzVFGZ2P5TA
+ release-partner-repack-repackage-signing-linux-nightly-mozillaonline-mainOther-en-US: YeyjMIm2TuCdUEhjjbhKNA
+ release-partner-repack-repackage-signing-linux-nightly-mozillaonline-mainOther-zh-CN: a38VmAACRKaPpYS9vWG-5Q
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-ca: SFOOeMaAQ-2UXWNYM7_KZQ
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-cy: ZzlAFM5oS6edXV-UxaxKBQ
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-de: EytL054jRI2oEW3iTGXRQw
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-en-GB: e4rKpCU5S9aZp8rLWnYU_w
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-en-US: Yk7eCqZcRHK7aSWZ2xCOZw
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-es-ES: WcCnTaTLRBqTkR3O00R6eQ
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-fr: YQnV8IxTTkCmE3lzl8-EmA
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-gd: V_0p2VRMR7KzUZGBjjnQBA
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-001-it: TzcTkjt6RYu8kvEbrL2QiQ
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-ca: BxVQLYkjSB-El4-cTKD8lg
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-cy: MjnJ91pgTfSYvZKrCVscoQ
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-de: Rz-IIDvXSU24EH-A8eOzMg
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-en-GB: OSVAjo73Tx-h14UpmUVwjg
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-en-US: Ah6AXDiAScyo88iAiwEmkQ
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-es-ES: EU0NJZwmR4m-q4pomOQ4FQ
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-fr: AeTEaXuKS5C5w1cVIgqJtg
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-gd: UiFrAFsBTx6o6zgFcT--Rg
+ release-partner-repack-repackage-signing-linux-nightly-qwant-qwant-002-it: GE8RdeizSHu9l-BXC2oABw
+ release-partner-repack-repackage-signing-linux-nightly-seznam-seznam-cs: NW5PD22dStCB8t21ob9qOw
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-1und1-de: TBcgDrlYR9il0XgoRRtHKg
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-1und1-en-US: Pc7ax-LbQQWlvX7xOUCbHg
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-1und1_notb-de: SEKzGHnvQQqhIVrSwOEB8g
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-1und1_notb-en-US: G3tXqPVYRdWJ2hAlHSbShA
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-gmx-de: FUyPytEsRySewYlpn0yOWg
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-gmx-en-US: DsxE83h0SqGraJH9o_Oa7w
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-gmx_notb-de: DbXPvZu3T9qPsJDBYJUUXA
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-gmx_notb-en-US: Wnc6A8t5R8KTkFMOBYspRw
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-mail.com-de: N4k0PV03QIOkqsyMc52qCg
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-mail.com-en-US: e5W7vrtdRFWfqUFsNwB8IQ
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-mail.com_notb-de: Jd3YmUDxSv-i-Epp06L6Yg
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-mail.com_notb-en-US: E6EpY6T4RdyGMOcjrs5P9g
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-web.de-de: ObYb7ifERg63Mcw9USy4hQ
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-web.de-en-US: FST9apwdT8iZR2an9twKRg
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-web.de_notb-de: LnmcVQsCT_Wf5Lzsu--FMg
+ release-partner-repack-repackage-signing-linux-nightly-unitedinternet-web.de_notb-en-US: Rao96LAlS5acRQ4jbSzYXQ
+ release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-portals-ru: A_OvvKm-ROyr-jKEODPC0A
+ release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-ru-mz-ru: Iq49RR1aThWcQHQn2jXheA
+ release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-ru-ru: O42VEReoR1GszNWdrHEvjA
+ release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-tr-gezginler-tr: OZbH-k-FQbOXLqSbp6OQkQ
+ release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-tr-tamindir-tr: Uydzud-_SLu44paGfS0Cmw
+ release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-tr-tr: KsQaFfjxSJiloIskPy1K5g
+ release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-ua-ru: Gr-6TcvZRryyocxgn_sVhg
+ release-partner-repack-repackage-signing-linux-nightly-yandex-yandex-ua-uk: InEOCDcaRGiRXG_aU1M0GA
+ release-partner-repack-repackage-signing-linux64-nightly-mozillaonline-mainOther-en-US: Pzz8p2gORnmluoRh4pSqmA
+ release-partner-repack-repackage-signing-linux64-nightly-mozillaonline-mainOther-zh-CN: HmG2JrGwSpy62uGlOg96Pg
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-ca: PHYqIoc0SaW_E6PMm7aF_w
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-cy: czBJQXCFQrWuA4OvNgRLOg
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-de: dR1OrHwTQE-DQzsLBGgaiA
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-en-GB: T86oavrITFSJp4eF08W2Kg
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-en-US: Z5YYoRXaSyK4rE9MW05L9A
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-es-ES: bb7BT1j4T_a3u1o8s6aToQ
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-fr: TRulVLTKSgiMArTx2_yARQ
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-gd: c-E9SLTsS2eZwtuvGxY_Pw
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-001-it: O_71sHH1S8iu59_kFKedTw
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-ca: UXqUxcTXSLCwqrujPH_IGQ
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-cy: TlbhPM9lTc2Kfz8rhjm7IA
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-de: NKMkFXfsSES_7J0gpPrClA
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-en-GB: L-gPITEOQQi8PNp3wNzGMw
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-en-US: EiV662PdRVKgM-H2xutXag
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-es-ES: On7yelz7Qk6n_pm98kmzaA
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-fr: YQIqCz7vQmmln0Cxg8REzA
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-gd: I1KEbTqlSCuzOlQidC0mTg
+ release-partner-repack-repackage-signing-linux64-nightly-qwant-qwant-002-it: Zehd9xHbSDCpz6NZueuNSg
+ release-partner-repack-repackage-signing-macosx64-nightly-aol-aol-en-US: JCMoz1ykR-qkqt4-qKv9CQ
+ release-partner-repack-repackage-signing-macosx64-nightly-aol-aol_de-de: fAmbNs9EQbizCoiEW7rgpA
+ release-partner-repack-repackage-signing-macosx64-nightly-aol-aol_desktop-en-US: ShTUrHtjSxmGGYnYNXQPnw
+ release-partner-repack-repackage-signing-macosx64-nightly-aol-aol_huffington-en-US: dXyo_KMaRMeRRxnQY_amJQ
+ release-partner-repack-repackage-signing-macosx64-nightly-aol-aol_uk-en-GB: dzEFFYGlQjCoS5SFzsp95w
+ release-partner-repack-repackage-signing-macosx64-nightly-chipde-chipde-de: B8vvO6FfS1Cu_mZKLvjZVw
+ release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-003-de: L8nt40hQRByTfx6hcDP-Lw
+ release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-004-de: YJzRB7QkT3C8m66SQQxfxQ
+ release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-005-de: Y3_UEwWfTiCAiEDyh3NZ2w
+ release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-006-de: U3spNthoT3u45MsOAYtzVg
+ release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-007-de: JjzcXKqSSee_mS-t_dtxUg
+ release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-008-de: MR7jZNM_QiCs3iy3AF40ag
+ release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-control-de: NaVV-o6KQ7i0PEKHj3adfA
+ release-partner-repack-repackage-signing-macosx64-nightly-chipde-cliqz-de: cTH3z9AXQF2lVL3aCbp0cw
+ release-partner-repack-repackage-signing-macosx64-nightly-firefox-firefox-election-edition-en-US: XBEnPqARRn6A6kvRfkLCUg
+ release-partner-repack-repackage-signing-macosx64-nightly-funnelcake-funnelcake134-en-US: HA5gv1tRQ-aAmKUQHJVUsQ
+ release-partner-repack-repackage-signing-macosx64-nightly-funnelcake-funnelcake137-en-US: cxt4oosvQYSCVfPJzOIXZQ
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-de: YaWE4B_0QUOONj7i85DlRg
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-en-GB: dFXA0fEsTfKC3Ci0WP8MJQ
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-en-US: ZgCOk84KSBmESob7xuv0Fw
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-es-ES: KA9Lm5N9T1yPTM7QTK2boQ
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-fr: XbzZVIQnRPONgrrK9hZalA
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-id: NvQRUiHbRT2aPdkcnb53Sw
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-it: CkA05810SgWZovO6p4rsGg
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-ko: HgorKPdRSFGghJznzBCzyA
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-pa-IN: V4LisnjuTy26NOOPy7P-yg
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-pl: OmHmx7SwS4yWCuSEwAq_VA
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-pt-BR: bfXYwCIKTNSr26EzUHZ85w
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-ru: VDBicfCSQ56ugRvMxLHocg
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-aura-tr: KTWL_XX7S5KacNH-REQZhA
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-de: ZFApNHfzS8GIW1DV-VyN_w
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-en-GB: BBA50gyORL-Edq18_DbR_A
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-en-US: L_4NjItuS6-BLdCdrESEPA
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-es-ES: arSGT9-QRFuRQG6Z44iDrA
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-fr: X0yj2BfCSfOLZFmpV8IhDQ
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-id: WBuqZ4nKRY2je1NzMKA9Cg
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-it: dDjacDNOTZ2KqR0JfuXZQA
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-ko: ZUxTEtJLQ_yc4g5YzwBQ0g
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-pa-IN: PpWwwSplRmGHIaYpf_i-MQ
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-pl: NY4fLUSSRfqp4RTxyWaTLQ
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-pt-BR: dGzEbKk3SqCs4Dzt0aYNmw
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-ru: LGLHnINIQsWANtIGCplhLQ
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-google-tr: PBUT7-mbRCyp3LCUje7wIQ
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-yahoo-aura-en-US: Ld-dUBh4QkyLzQaCLCxgkQ
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-yahoo-en-US: A_k4Y65YTQa8-XpSRinaag
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-yandex-en-US: XzkArif4RUeIsuSG8BC20Q
+ release-partner-repack-repackage-signing-macosx64-nightly-ironsource-ironsource-yandex-tr: KBEuUBGJQqK2iUBLMNtOeA
+ release-partner-repack-repackage-signing-macosx64-nightly-mozillaonline-mainOther-en-US: RLqikoPWQpStFyWe6ka_aA
+ release-partner-repack-repackage-signing-macosx64-nightly-mozillaonline-mainOther-zh-CN: ebyW37wpSme8w1n5yE1T-A
+ release-partner-repack-repackage-signing-macosx64-nightly-ntt-ntt-en-US: P2PVfIwYQxiL2t80u94fEA
+ release-partner-repack-repackage-signing-macosx64-nightly-ntt-ntt-ja-JP-mac: P_w5qrurSra_GRsE_ngwZQ
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-ca: cjCuTLlTQ7eR1oVP1IfqOQ
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-cy: cGDVw7y1Spu3U0C9unUmVA
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-de: GecZv0YrTRmIAEG8RWCTiw
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-en-GB: QHVxE3wkT--AG2PjQU4UKQ
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-en-US: ckT3lbQxQyezwXccn5Srwg
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-es-ES: VMOM0OHESVmAKqPCZQQTUQ
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-fr: bg31l36cSTel27hlofYVfQ
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-gd: HstbSzJkR-6cf9GkEeyGQg
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-001-it: c521Gc69TIa-flGKA9s9Wg
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-ca: MBZYWx5GTaabsutnWGuleQ
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-cy: bNQhtHM_Tb6ZshFrhMXtvA
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-de: DuUlk57VTKajqCMlPIV_fg
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-en-GB: Z_z3xQqnRwKQdFJ4LT32yw
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-en-US: IT1uywfjTKuqrmUKyP8Djg
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-es-ES: B9pRIwZTSHKS4k7Fm8AuvQ
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-fr: dbEuEpl1SPC-i3iMPBWjvQ
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-gd: XeYleDJkRneuxJyp5n9a2Q
+ release-partner-repack-repackage-signing-macosx64-nightly-qwant-qwant-002-it: Sawym0_4QMijlwXKzryWJw
+ release-partner-repack-repackage-signing-macosx64-nightly-seznam-seznam-cs: JA99iJ3URcqn2uL3IEKOww
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-1und1-de: cCfzOT8QTUCQx3nh_1S58w
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-1und1-en-US: IWraWw4XSSmULkYPZYgaqA
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-1und1_notb-de: JAADP_k-TbKYYB5xmp55LQ
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-1und1_notb-en-US: USl8NQfaSTSZF0LAgAeqRg
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-gmx-de: QlOQ6WcsQvynGmWOmL7cwg
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-gmx-en-US: El2mjGwKR0CLdsl_eOko-A
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-gmx_notb-de: PafmIpCCQIez-TCR5-RIWQ
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-gmx_notb-en-US: FCEaj_QvSKy2eOM65SpjSg
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-mail.com-de: LP3dx7_9SEK5I1BnFRwLVg
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-mail.com-en-US: AK5sZPhyTnSkT84FeW5MqQ
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-mail.com_notb-de: evj12_-EQD2CHYvnl_oCLw
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-mail.com_notb-en-US: WlBOg4UXStC_ENbvTJR1_A
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-web.de-de: PXNnofwoSfuAjFZMstDefw
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-web.de-en-US: IeVTvDAQS5-YpRZrEzc5pA
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-web.de_notb-de: Poa4Nn-eSwWM9ZapRx3y3A
+ release-partner-repack-repackage-signing-macosx64-nightly-unitedinternet-web.de_notb-en-US: HBlDrziWSp2Zglg_WQaDRw
+ release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-portals-ru: fYqgLQxcSl65-aBkdUht5g
+ release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-ru-mz-ru: HFhENKq5QV6SQPO9Tg0ZtA
+ release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-ru-ru: PrRxEkWgS3iIcyrl1EbJoQ
+ release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-tr-gezginler-tr: FXReXgZ4TOijQXH2-g_sHw
+ release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-tr-tamindir-tr: Oqqerg7TQtSgMVr81RpVqw
+ release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-tr-tr: emyNdDBVRS-kOm3ktr5FPQ
+ release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-ua-ru: XXmF6_-jSWe5WXRTKhKvrQ
+ release-partner-repack-repackage-signing-macosx64-nightly-yandex-yandex-ua-uk: WHG2lC6sToC914uhICOlpA
+ release-partner-repack-repackage-signing-win32-nightly-acer-acer-002-en-US: S8GF0GZKTk2tEUn48wpo0w
+ release-partner-repack-repackage-signing-win32-nightly-aol-aol-en-US: SJlBZDVnQAyslf29KwuLKA
+ release-partner-repack-repackage-signing-win32-nightly-aol-aol_de-de: SyIa_Iv8SNClwdciqz9CrA
+ release-partner-repack-repackage-signing-win32-nightly-aol-aol_desktop-en-US: IphwJeWWRtG2dF8IQks8Dg
+ release-partner-repack-repackage-signing-win32-nightly-aol-aol_huffington-en-US: chsrz7hLRJCeLd4vm4Bk6A
+ release-partner-repack-repackage-signing-win32-nightly-aol-aol_uk-en-GB: OUulyxHMTRSQHeJcftbo5g
+ release-partner-repack-repackage-signing-win32-nightly-chipde-chipde-de: AWu6urNYQ4qttAxI974wiA
+ release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-003-de: f_wa0GdSSmiqoxjoWtWVrA
+ release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-004-de: dF87-Z6wRW6mWjJUQTaQtA
+ release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-005-de: XzFPD5A4QX6noBkt8KXZbQ
+ release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-006-de: GWOzJ0T9SauKRNxCJjkarg
+ release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-007-de: P1gq2J-0QmO5gWy2528tpA
+ release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-008-de: D-y0D-x-QEyixNT3Y3FOQw
+ release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-control-de: d53HQ7SAThW7XyqpNHUfrw
+ release-partner-repack-repackage-signing-win32-nightly-chipde-cliqz-de: GL1V6Wj1QF2QO5l4FS-iPw
+ release-partner-repack-repackage-signing-win32-nightly-firefox-firefox-election-edition-en-US: PkFmN-9KTo-HtD8C1HPsrQ
+ release-partner-repack-repackage-signing-win32-nightly-funnelcake-funnelcake134-en-US: UeY8n5_PRHyemj5mJCEoFg
+ release-partner-repack-repackage-signing-win32-nightly-funnelcake-funnelcake137-en-US: SqASpEpcQrC-2A65bcx7Hw
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-de: D5ZDmjdbQ5Oe0Ve06TvJ9A
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-en-GB: PO5oCMz2SJ6h93hN1CRhUg
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-en-US: USMuLsWET2GdNPyQx_yoMA
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-es-ES: O6wIY4icRfihRLgsONsGIw
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-fr: bBJSkmI5QT2x0m0-vRrNGQ
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-id: JmIZLIK0TKGvvfg18WWkew
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-it: LeFd7hvlSfm8WVPEpg4x_g
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-ja: fcfKGUs7QBylC0RJ9pNorg
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-ko: Wq1xbFThRIi7sSX6TfI28A
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-pa-IN: FcAkJ60uSU6nJM-NK82Qnw
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-pl: LB8IYutGR5OFsgp_9_Mrfg
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-pt-BR: RBUAKfL-THG0KRp_9Xr1rA
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-ru: KEm_R8ygTsSHvIk6MX4Pxw
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-aura-tr: Z9I2emKQTrKuYtOjyQDaZw
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-de: ApHi7KvlT_-MXoYn2YNcgw
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-en-GB: PX014iroSpGpThXoO7dfHg
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-en-US: PewbAx6cRDeTe1C5-K9BHA
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-es-ES: b4WcVLl8Q-GYsSxdHtnB_g
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-fr: bQbRuuyXRTiRIOUVp4aemQ
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-id: C5zW_aH0Qp2jzdQQNYPlog
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-it: MIVsUT8HS3ewRwqYGdcwsw
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-ja: QVUwEFVISbOST4hgW_eejw
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-ko: adJ5LoziRN-rNEVli03sew
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-pa-IN: Ctq4EIa_QimpjpfOTIDMjg
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-pl: ISrvkLtgSl-oVXNBv_IoKA
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-pt-BR: HYA8b328Qem1_vwa7-WClA
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-ru: JFl_NpRwTJuq0lNv6LWWFg
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-google-tr: XebcZQ_LRnK_nbRtQlv-9A
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-yahoo-aura-en-US: fdZ324DPSYu7DEWBZ-DOJA
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-yahoo-en-US: BCHFqFnvSTeLSfXh_B4Wvg
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-yandex-en-US: X8TarqWiTyyBDkkYNC9MJA
+ release-partner-repack-repackage-signing-win32-nightly-ironsource-ironsource-yandex-tr: VrSJuuI6SEGC0SOMxSE4uQ
+ release-partner-repack-repackage-signing-win32-nightly-mailru-mailru-ru: JvWkXHVPQs-Izj13Q5ufVQ
+ release-partner-repack-repackage-signing-win32-nightly-mailru-okru-az: e7DdmJXnR2KCbozx0q9nbQ
+ release-partner-repack-repackage-signing-win32-nightly-mailru-okru-en-US: BHYhl5fyTTWcLkXYon2YTg
+ release-partner-repack-repackage-signing-win32-nightly-mailru-okru-hy-AM: GKQ8SSSBStih06jHScTFCw
+ release-partner-repack-repackage-signing-win32-nightly-mailru-okru-kk: eXFvdjF_QJOTjcNzsxnAdQ
+ release-partner-repack-repackage-signing-win32-nightly-mailru-okru-ro: RRA95yQ4TxCFlYgdSDnRaw
+ release-partner-repack-repackage-signing-win32-nightly-mailru-okru-ru: Kh7WqcGITKy-kv63xjaAuQ
+ release-partner-repack-repackage-signing-win32-nightly-mailru-okru-tr: LM-EeO6sTZ-Kh5w6rnnT6Q
+ release-partner-repack-repackage-signing-win32-nightly-mailru-okru-uk: PPjnfmQJRhG6jGf4mrnmHA
+ release-partner-repack-repackage-signing-win32-nightly-mailru-okru-uz: c5vNa7ggToO-UzA6jue5Bw
+ release-partner-repack-repackage-signing-win32-nightly-mozillaonline-baidu-zh-CN: EbLB_2nETUqzORb4aLc4Iw
+ release-partner-repack-repackage-signing-win32-nightly-mozillaonline-kingsoft-zh-CN: ffKAN9xEQjyjLyx-TT_pDQ
+ release-partner-repack-repackage-signing-win32-nightly-mozillaonline-mainWinFull-en-US: BqCX6u3RT9SvPhP9z-JQxA
+ release-partner-repack-repackage-signing-win32-nightly-mozillaonline-mainWinFull-zh-CN: U5JQWO-WTFuP_zBLNTCRHg
+ release-partner-repack-repackage-signing-win32-nightly-mozillaonline-mainWinStubFallback-zh-CN: F_4Hkcz5TFKrUevScjbCTQ
+ release-partner-repack-repackage-signing-win32-nightly-mozillaonline-others-zh-CN: UMtojzsPTaKx08wd-6AxHw
+ release-partner-repack-repackage-signing-win32-nightly-mozillaonline-qihoo-zh-CN: KhkTGOreTFCwruJ5z7QV8Q
+ release-partner-repack-repackage-signing-win32-nightly-mozillaonline-tencent-zh-CN: fjxCRlUZSTms_fMBfGiqkA
+ release-partner-repack-repackage-signing-win32-nightly-mozillaonline-xbsafe-zh-CN: Hhn1S8s9R6i2Eu_WhTH4GQ
+ release-partner-repack-repackage-signing-win32-nightly-mozillaonline-zol-zh-CN: TVnHn3lnQGGbZA8ORstgsQ
+ release-partner-repack-repackage-signing-win32-nightly-ntt-ntt-en-US: N4JjMUJdQfuq2_QtR0q18g
+ release-partner-repack-repackage-signing-win32-nightly-ntt-ntt-ja: br9DN3c_T8a1X_JOYcXOYg
+ release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-de: JCfIVyI0QE-fAC8uXakQzw
+ release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-en-GB: RbQXvSnpRnSpw-d7FH0SGA
+ release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-en-US: XpzUDzsyTJ2hRx-yj7d6oQ
+ release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-es-ES: BORMypT5QlWsXUGBsbqmWQ
+ release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-fr: NVv-XX5qSVaIYnzachQN-g
+ release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-it: LzaMjaCMRNGHQ6iX0K7F9w
+ release-partner-repack-repackage-signing-win32-nightly-playanext-playanext-wt-us-en-US: dSMluYdzTxuIYoug4bi6jg
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-ca: AC3vsFPvR5W55m5b6yW0gA
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-cy: VnvM9hQzSsmXX7-S6rrPzg
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-de: EG6_zJUwRpG6zkIV1v2w5w
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-en-GB: FhnPraiSThGrMeIFiIgr7Q
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-en-US: AeMrl5V6TZqIkpbTxSijKA
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-es-ES: IY46LYIrSI-zAOVkipZYtA
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-fr: I5FnPHt3Q6uCrpPEbY50Pw
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-gd: SyZhcQHdT-iZ0of8-fO52g
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-001-it: UBxmmePaR--nVVQf3QGQZg
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-ca: Eo8o7pJHT_CF6KB9cLH6GA
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-cy: OjarzXy8TTGHYwx0QhzSZA
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-de: RmRNBjy7S8qGHAEaqc-CNA
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-en-GB: Kh8ctqqkR2WW4Kz-uV9mjg
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-en-US: bWUiqnI8R7muQRzzNbiLgg
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-es-ES: e8LIpYeSSXSCspiT3BjpIg
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-fr: AIQzFwreTeCMtHthTj7zug
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-gd: Y8OhhGMHR0-s1m2p1GFaqg
+ release-partner-repack-repackage-signing-win32-nightly-qwant-qwant-002-it: XohcXEKAQLupCQHEZ3wdeQ
+ release-partner-repack-repackage-signing-win32-nightly-seznam-seznam-cs: fAHt_YErQRawNNXysCRsww
+ release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-de: d6GmxFx8QxeFH6Kof16cgQ
+ release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-en-US: af0q_B7ZRzic-yzgVimp0w
+ release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-es-ES: UUtD3SF4T7meZXIahxMILA
+ release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-fr: f3dKMJKLRiOg-hLL_K1zZg
+ release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-it: VfMTqhFhTrWR_QU6seIPcg
+ release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-pl: Y92ziwSYT5u3UawNFgf03w
+ release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-pt-BR: WttB_tvCR-eOvVRf_rcSDA
+ release-partner-repack-repackage-signing-win32-nightly-softonic-softonic-ru: UajJBV8WTEadm0pAX5vPpQ
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem1-de: ZzSSAW-AS7KEs4TJlxq9QA
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem1-en-GB: G-hWsyREQFGO7_PwHAoN-w
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem1-en-US: Kg_HnFUCScugObqTno6HWQ
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem1-fr: L_4vXgFZRhSw3OdL-zcvFA
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem2-de: VIS8G5efQ6mjcA30F9YHVg
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem2-en-GB: SsiUenk9Td-RgWjCWRBwyw
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem2-en-US: P2C0VJiwQGCSiOdyRhDS6A
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem2-fr: HmJ6_4FYR4-eeECLf2xyXQ
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem3-de: OGjQziIBR5y7Ic-bGqm2ww
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem3-en-GB: IEhoxBKCRZWE6YsQiHSdJA
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem3-en-US: SYEdQaIXR-G-WXZtbix94g
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-oem3-fr: Io2uTgsTQl2HXoX5o8CpTA
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-de: CuNaDVcwTYe2m8GQ3IDOhQ
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-en-GB: O44cYTwLQv2UXlov7x7_Nw
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-en-US: TOU3T95CTmG5_zaxTlzyMg
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-fr: EWmViGMFRm-iGSQu4L46Eg
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-de: e3G02jM-QBqfkmsdEwx_pA
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-en-GB: GW6pbGuzRXWjUFni8QiFLw
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-en-US: ThzJuQ0GRzSkqVqXv3qk4g
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-fr: c-0CKZruTh6kvnNBHaYYQA
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-de: buJ3jok6SxmndRz6Su2FHQ
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-en-GB: dq1k3gGATWO-MVcXJSzU0w
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-en-US: AdQ8ZfB9SeqeFq5tA0HxDg
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-fr: QM6peJYjQgy46kwhTcd41A
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem1-de: JDzxQ0v2SuuJtNkjy7fmVA
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem1-en-GB: QU6wvL9cQ0ek5oEXps8UBg
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem1-en-US: W2LsVKQqQMu3DtT8F41__Q
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem1-fr: GdBuiki9R927dwfZTTxyRw
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem2-de: WlWy4fBtR5CuHIAU8ZPCow
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem2-en-GB: YxukSsRQTLC3OQS1GnHViQ
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem2-en-US: SWDWe0utTJWUYt3byEJd_Q
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-oem2-fr: LeXS9q05QZOD1zYQy-ZoXA
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem1-de: MXXbi2RJRG2phRSi676dnw
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem1-en-GB: Y6kctChLRIGXPPT_atSpmw
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem1-en-US: Eg6oHExGR-iTbvBYsmGX5A
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem1-fr: KoO7Owp5QEGefAYBi6UD4g
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem2-de: HVbHCKjURsSlPqWdc82JjA
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem2-en-GB: HpVsDhw5Ro6LKqOGWdF7fA
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem2-en-US: Hlb1KoJrR921WC4y2YweRA
+ release-partner-repack-repackage-signing-win32-nightly-sweetlabs-sweetlabs-r-oem2-fr: coY-_1kfTpC5h62XKVnrdw
+ release-partner-repack-repackage-signing-win32-nightly-toshiba-toshiba-001-MX-es-MX: X-f86mHVQkSNMVwWCqgzvw
+ release-partner-repack-repackage-signing-win32-nightly-toshiba-toshiba-001-US-en-US: ZbCETvnzSlClpRhWm3Ampg
+ release-partner-repack-repackage-signing-win32-nightly-toshiba-toshiba-b2b-JP-en-US: Y2SmjK1oTLGS-sJCjKPBsw
+ release-partner-repack-repackage-signing-win32-nightly-toshiba-toshiba-download-B-US-en-US: eWY6gA5JQOS9qZOktd3rCw
+ release-partner-repack-repackage-signing-win32-nightly-toshiba-toshiba-download-MX-es-MX: UEjyHjOgRXeQxtVaQlT3_g
+ release-partner-repack-repackage-signing-win32-nightly-toshiba-toshiba-download-US-en-US: cYFOHWVST66MMdeeSZrDwQ
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-1und1-de: fywqFS2mSVm0-6xwN_6M7Q
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-1und1-en-US: FA_me1f5STeT-3Drb0e5Kw
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-1und1_notb-de: OZxX9H65T5qTBQvGqiDpwg
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-1und1_notb-en-US: Yo5owbAzRKegLzKtx4nP-g
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-gmx-de: XeuAS2RFQi6vmtWIPjtIlA
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-gmx-en-US: PkEjXl13SYyJHuHq_a23vQ
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-gmx_notb-de: RACC8r_nTo6NWj_7OUwehQ
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-gmx_notb-en-US: UZ40Jyx2R_m5bdDMfcHPjg
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-mail.com-de: V4kFd5WHQ_ebN9zl9tN6ww
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-mail.com-en-US: bpy9eWfySwip7cM0-yENIg
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-mail.com_notb-de: bA642o1iR72QNLy7LF4GQQ
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-mail.com_notb-en-US: TDYfSw3FQJqAuWm0ZH2nmw
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-web.de-de: VAmlSof9QviWhF3diI0pzw
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-web.de-en-US: QWqAleDHTsGRQldxsTwZ0w
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-web.de_notb-de: aC5VJz9lR5-kKaXRZrzKkw
+ release-partner-repack-repackage-signing-win32-nightly-unitedinternet-web.de_notb-en-US: TELGPOZDTwq_9hcJcYT0pg
+ release-partner-repack-repackage-signing-win32-nightly-wildtangent-wildtangent-en-US: JdARg7Z2Qu28R0Do18nqdw
+ release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-drp-ru: TohaP2kuTdKv37MaumMXdw
+ release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-planB-ru: MaW0ixuWRq6pXwRXPvVbFw
+ release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-portals-ru: QG42WqWyS6CXB4Id0tcfmQ
+ release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-ru-mz-ru: f45L5q3qRTus0Ge1z-l19Q
+ release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-ru-ru: TScPunQWRZCAQxwPHQsyOw
+ release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-tr-gezginler-tr: e8mfxrVwTOKJStJTpJ2jBQ
+ release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-tr-tamindir-tr: DRgVRvvPS3CwYV8p4bdY2g
+ release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-tr-tr: bpmAxALgT4as1TS0XDUsSA
+ release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-ua-ru: MZypzfCaRZukX4o1Bh6fCA
+ release-partner-repack-repackage-signing-win32-nightly-yandex-yandex-ua-uk: QceLdF4iQPOjPleQAhzAKg
+ release-partner-repack-repackage-signing-win64-nightly-acer-acer-002-en-US: XiLkJwbOTTKH3_f-ra8liw
+ release-partner-repack-repackage-signing-win64-nightly-aol-aol-en-US: C1ENWN2_S0au0cNxXZ83Xw
+ release-partner-repack-repackage-signing-win64-nightly-aol-aol_de-de: PB0GN8cSSc-fsDDS8sGe2A
+ release-partner-repack-repackage-signing-win64-nightly-aol-aol_desktop-en-US: fOft-HAPRMq8F6-J5JOxbA
+ release-partner-repack-repackage-signing-win64-nightly-aol-aol_huffington-en-US: OGMe2wjpTUKdRgMt4_fM-g
+ release-partner-repack-repackage-signing-win64-nightly-aol-aol_uk-en-GB: XJHzkW69Rwq7zOl7jEFMSA
+ release-partner-repack-repackage-signing-win64-nightly-chipde-chipde-de: eGKCEA5_ShajCGqEVfMMjw
+ release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-003-de: WhGOAbPLSLCDpIBTtRs4Lg
+ release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-004-de: DJCj_Mw6RMiv0khQVYfnEA
+ release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-005-de: CJSTRMUeQkC_8Z_TOVj3Gg
+ release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-006-de: D6LpUw0tT7yGRwA9VCkubg
+ release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-007-de: XMBmRudHS1iMfxEIGQ-iFA
+ release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-008-de: PoCX_UJMQTy24IawcCtGjA
+ release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-control-de: HjcEdL0rStaFiN2jM_I8UA
+ release-partner-repack-repackage-signing-win64-nightly-chipde-cliqz-de: Z3VYxzJPQ1Kpx_RBOFt-9A
+ release-partner-repack-repackage-signing-win64-nightly-firefox-firefox-election-edition-en-US: cPIloCcPQl6aQvmoowbNug
+ release-partner-repack-repackage-signing-win64-nightly-funnelcake-funnelcake134-en-US: OZUBAd8RRUyEOcqoTQhPkw
+ release-partner-repack-repackage-signing-win64-nightly-funnelcake-funnelcake137-en-US: O9QQXuWbRBKWP2U9kNTbRw
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-de: EEXiCsXlRYug_UO0nxSWGQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-en-GB: ZnlgFqRmS6mfeeXj0gcriw
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-en-US: Ot-fuyKORXap8gwQiV7qrg
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-es-ES: SkOB5nUqQoGhIay15uOQlQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-fr: YGeDb7hxQAqR7QS4rvqkSQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-id: RgEhe6grSICa9uBBu-YJpQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-it: Cd4SxTbrSvKuZVOR3MGmfQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-ja: MCuxkPiiQZC84oAb803TVg
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-ko: bAhWTNW7R9udr9HgjR3KEQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-pa-IN: Az4kFYdmQYq0nB3MSdWHNw
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-pl: Hha2rbr5Rl61lrJa2MZYlQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-pt-BR: fnVnEbJ8RQq3jp9nEDEcDA
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-ru: HvPnYmEWRtCdKascj10oDg
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-aura-tr: V4uvI1zwRTSY6x1RW10P7g
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-de: ZtcRAOqhRBOHTyarS0Z03w
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-en-GB: Y2pNVU-HR4y8cHuc5CsgzA
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-en-US: HKL7Ou8RR-awKSTdbuF5WQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-es-ES: F8LXzH12T4G9zDztVvAA0A
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-fr: bWbIs-NnRhm_gMZXPHWBkQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-id: Xf_0hh6UTRe7oEUZO1jDxQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-it: Zm3GBGS5Qm6IB-0xxPEIcA
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-ja: UE4DjdvlQPWOLO_DlPDWrg
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-ko: FdPj2LScSo2NGMAZMd2QTA
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-pa-IN: EB0Me2iOTWC3EUCfQOeGtQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-pl: UJXkkqHtSoiG1TsA41AVmQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-pt-BR: f_j54yxhSY-HqtgxA-fvgQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-ru: BrWe7wV3TrG1MJIyfCyFXA
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-google-tr: CpdhBsMjQf-0c9GtSYHUcg
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-yahoo-aura-en-US: ScrgZFziRD-V_NfQLqoF9g
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-yahoo-en-US: DjIkj112SQ2Mxlm-SSxBoA
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-yandex-en-US: NC8fwT0NR72-Q5oXAJT9dQ
+ release-partner-repack-repackage-signing-win64-nightly-ironsource-ironsource-yandex-tr: eeWcNduZSOWczw4HOIFM5g
+ release-partner-repack-repackage-signing-win64-nightly-mailru-mailru-ru: CPOZPomKQtKOW4jcjxS0SA
+ release-partner-repack-repackage-signing-win64-nightly-mailru-okru-az: WTMNaEv1TJKBKWE6JbjX5w
+ release-partner-repack-repackage-signing-win64-nightly-mailru-okru-en-US: AELUVC2uQeKSYrLMYxAzkA
+ release-partner-repack-repackage-signing-win64-nightly-mailru-okru-hy-AM: fjTtAoK8S-62VurIiP2F1w
+ release-partner-repack-repackage-signing-win64-nightly-mailru-okru-kk: ecEJOo0zSqWQEqHUmlQZIg
+ release-partner-repack-repackage-signing-win64-nightly-mailru-okru-ro: GaGrD0SkQE6i9nR6fq60_A
+ release-partner-repack-repackage-signing-win64-nightly-mailru-okru-ru: asIjnZ1iQTKalpGPyAXs1g
+ release-partner-repack-repackage-signing-win64-nightly-mailru-okru-tr: YuK8JM1VQaWoBXu7tc4lyg
+ release-partner-repack-repackage-signing-win64-nightly-mailru-okru-uk: BDFdvSynQ-qU7Zf7km4U-g
+ release-partner-repack-repackage-signing-win64-nightly-mailru-okru-uz: TKY6UahiQ2uCZh2N4u26Tw
+ release-partner-repack-repackage-signing-win64-nightly-mozillaonline-mainWinFull-en-US: T-BriiiASJ6BrI3xx1hRMA
+ release-partner-repack-repackage-signing-win64-nightly-mozillaonline-mainWinFull-zh-CN: Zlz2kqGqTBOdL2gZuCxQSA
+ release-partner-repack-repackage-signing-win64-nightly-mozillaonline-mainWinStubFallback-zh-CN: ElmjXAkbRUu0jG4wahBY3w
+ release-partner-repack-repackage-signing-win64-nightly-mozillaonline-others-zh-CN: DfGtPDmYTFCg41Icb-WBvQ
+ release-partner-repack-repackage-signing-win64-nightly-mozillaonline-qihoo-zh-CN: Bp1rATS-RDmRfiOB3sbUSw
+ release-partner-repack-repackage-signing-win64-nightly-mozillaonline-tencent-zh-CN: BUv-O0euQ_qJibj5VEs5aw
+ release-partner-repack-repackage-signing-win64-nightly-mozillaonline-xbsafe-zh-CN: OGCEeOcYRRW5b1RSAlCU0A
+ release-partner-repack-repackage-signing-win64-nightly-ntt-ntt-en-US: TPmGx8pDTyqG_QNYMA4Q7Q
+ release-partner-repack-repackage-signing-win64-nightly-ntt-ntt-ja: cU3WOS5ZR2yDzrxWEAs8wg
+ release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-de: Sf_OyaHTSlCieWVMh6BENQ
+ release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-en-GB: AA6S25k3RK2wBlWSimWzXQ
+ release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-en-US: QRA2Nq1RTPK0ewEAhBfNHw
+ release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-es-ES: GwQ1y8maTDOKLvv7E6-uTQ
+ release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-fr: Atjbqm-_S1iPBrC5JOkY9g
+ release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-it: ZxScpMhrS7WoSeMKV7U1SA
+ release-partner-repack-repackage-signing-win64-nightly-playanext-playanext-wt-us-en-US: IqgYuAK3QwaVJnCEyFb2_w
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-ca: WIFDnrI4TjaVsDiZ99eGxg
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-cy: XutCmPYMROyICbRO1k9wuw
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-de: POT5qBnVQUumpTbbuNLDkQ
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-en-GB: bv7RZWfbRa-sxTi0WPbLRQ
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-en-US: NLgxCzDzQjK4Xoeu8ufj1A
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-es-ES: UYAis7cpQbG7KIN-y2tIUQ
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-fr: OcBODF-rTO62HX8LSh42qA
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-gd: TMEsuX_ITfGy08FuQeBc4w
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-001-it: FK7omnQRSu6lfNAGQTO52w
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-ca: BJTfRkOBQp6jbcmRQ36Pbw
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-cy: MpKfO80VQnyDVNp1925K7A
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-de: A9dkhnF4R3Gu4ZRDGIQONg
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-en-GB: L1u6lza7RgaqxXR7QJF_Dw
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-en-US: NU73fJewTSq1RC4wBLaF5g
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-es-ES: AmczSEKXQ6SXI6Os9m17Eg
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-fr: AwPb-sfiS2WqukuSsK4oWw
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-gd: Gb4puHwvTRC2X8qip7hZ2A
+ release-partner-repack-repackage-signing-win64-nightly-qwant-qwant-002-it: Zcqg_F8MTHmfxYmR-IuO3w
+ release-partner-repack-repackage-signing-win64-nightly-seznam-seznam-cs: cvunSOESTI2-E5xCvHULug
+ release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-de: d5eswKoVSlyOPL-5kcOjkA
+ release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-en-US: bON5seb1QoqcMpahjlvgrQ
+ release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-es-ES: V4td-KcUTRGaXC8rCptrXw
+ release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-fr: VGw88G-tSmuloZ15v0qJQA
+ release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-it: UgcMTyIXQai50_gg_5JZtg
+ release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-pl: YfIbJC0tSIK7PANsxnowwQ
+ release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-pt-BR: EssGNIg0R9OZHsv_6KY-KQ
+ release-partner-repack-repackage-signing-win64-nightly-softonic-softonic-ru: ANVajloGSgaNwnGetj_XWQ
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem1-de: AzIWuS3eTFu-SuFmjjpIGQ
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem1-en-GB: Ei5QVo_5Rwait1zbI2U2Aw
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem1-en-US: EqWayKh-TUiTa755QBtdNg
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem1-fr: GcCuGpf5RBKpCMWebENQ4A
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem2-de: I5Sk9dhkT2msmzPPR-IBrw
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem2-en-GB: V8Um8YVXQOGb5YbPU89q0Q
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem2-en-US: OipQL8PzQrmQUCHuq25b2A
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem2-fr: DescTqhjQoKAinuhQwC9pA
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem3-de: fsVg3eL0Ro-3duXk33EwCg
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem3-en-GB: eLTcE1WORBCyyOWxA3cebg
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem3-en-US: JCbOfq4MRLigF_ACninNGg
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-oem3-fr: dez2wjmRSJaefABIlFfcHw
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-de: XPyLptUvSk2OXIPjGWHVGA
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-en-GB: fia_iid4THGA3_OhQ1zSQg
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-en-US: eP-HIq7oTOSZHCDfWXSU9Q
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-fr: I2EbbOKuQ1S-ZzTISjqBMA
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-de: NaTz_8n6TFeFU5pFnovIhg
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-en-GB: YxcAjl0YRQ6EjF7Vx3fFDg
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-en-US: BYNf-L9JQIy35KRoTMy1UQ
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-fr: H-dAtdHIS1OTe8K0dqQPuw
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-de: PtQjUY9oSruhuIGzfwnd-A
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-en-GB: T2drYtdCTfOqmDmFcM7Csw
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-en-US: TqboOf8NRlaCiYs2MJfPjQ
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-fr: Bvt1zxneTga3bfoQytEoRA
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem1-de: TcJCsRupTQSXUfA3FfVBEw
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem1-en-GB: HLzAn_lQTOmUg0tDfAw5hw
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem1-en-US: BvAIuEpgSH-l-X7CYcQn2g
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem1-fr: HFCChlNgTiaTHv2ude_JQw
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem2-de: ZvZBXmehSTmX6m9ycuIfHg
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem2-en-GB: IDZNHNm9TZmYutFJG4r5fw
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem2-en-US: U589qFzST1G10r6Vd5q9Ag
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-oem2-fr: LYczc13FSuiCE9q6VCpL5g
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem1-de: Cb9BMMDMTdqU2FnXZ2yYsg
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem1-en-GB: fVP76dbdQ72gHotKQoAGiw
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem1-en-US: Tp9kItHlR2m0B4Y4My4cuA
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem1-fr: NgpflU6FRcOGAx8GY1AFhQ
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem2-de: BdhQmUpdRT6-ngpuLqwxDg
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem2-en-GB: PsvOEBXLRnKwmJdM5HQX1w
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem2-en-US: QytfsfVMRJq9-Ejqydp4JQ
+ release-partner-repack-repackage-signing-win64-nightly-sweetlabs-sweetlabs-r-oem2-fr: FUznCc-eTaqxLaJp0dKd1g
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-1und1-de: NdMPVp5nS6eb31T9cgNo4Q
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-1und1-en-US: RAbvalRiTTG1qBxfwaUnxA
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-1und1_notb-de: YE-Vh1YBRLa7olZGMWCfMw
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-1und1_notb-en-US: ItZwssg6RIukum_Ckm6aHg
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-gmx-de: PwDhHH_fSbmzt-Xv8nQr9w
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-gmx-en-US: BdiRIZSjSIK3wARQWpbFyw
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-gmx_notb-de: ZtSd8DnDQLaP3ZBqBVuBQg
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-gmx_notb-en-US: FW06s7oTTweKwn6yb0KtBA
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-mail.com-de: EVNEV7irTPOyl7KG3WPNJw
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-mail.com-en-US: YaNF-QZQQRKvuP6q6L7tbQ
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-mail.com_notb-de: IT0_W8-2SFahpz8rJw6yKg
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-mail.com_notb-en-US: Vfe3mEK6RvurBIV6MaKjhQ
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-web.de-de: S_RuUl7MSfCDx_Rv24wpFg
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-web.de-en-US: Joqwzyh2RxaPP0sxNJSlpA
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-web.de_notb-de: aAPZ2TowRdida11DeJiF5w
+ release-partner-repack-repackage-signing-win64-nightly-unitedinternet-web.de_notb-en-US: Qoa3634oSJ6uP5BdboIT-Q
+ release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-drp-ru: AQUBCSt7Q9C0rHzb0zcuyA
+ release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-planB-ru: H8EuYAsMR_m5_OajAY_SiA
+ release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-portals-ru: OxgKd2J9QVqO9kWQE5gmnA
+ release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-ru-mz-ru: URa7OQLHSO2JGfREIvuOMA
+ release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-ru-ru: SnnSMoRcRMCiZk6pgwjYlQ
+ release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-tr-gezginler-tr: OrYjkkShTt2cgA2fq2qq9A
+ release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-tr-tamindir-tr: CbTcFG8lRK-qBmpT-xrvTw
+ release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-tr-tr: akJTQt4FRYiFR2Fs1leqMg
+ release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-ua-ru: P5r2WJeZTg2WD_EE3vbgDg
+ release-partner-repack-repackage-signing-win64-nightly-yandex-yandex-ua-uk: DDuV6nmmTi2ITKU_nVZUDQ
+ release-partner-repack-repackage-win32-nightly-acer-acer-002-en-US: N0GVZTR6TY2sl9kudwl9sA
+ release-partner-repack-repackage-win32-nightly-aol-aol-en-US: LHIBrCs1RZaejPhf4pWVsQ
+ release-partner-repack-repackage-win32-nightly-aol-aol_de-de: W_09Pw_zSX6At5kbbR2cxw
+ release-partner-repack-repackage-win32-nightly-aol-aol_desktop-en-US: aEo3QqPcT7uRKDaoQGoG1w
+ release-partner-repack-repackage-win32-nightly-aol-aol_huffington-en-US: af8P-z0pRPeH2TWEpufubQ
+ release-partner-repack-repackage-win32-nightly-aol-aol_uk-en-GB: elwztSZQTa2uLLV_X5sWHw
+ release-partner-repack-repackage-win32-nightly-chipde-chipde-de: bagR4ORJQbOkJhad6G0qHA
+ release-partner-repack-repackage-win32-nightly-chipde-cliqz-003-de: HcyN27CTS6-301q938u9hg
+ release-partner-repack-repackage-win32-nightly-chipde-cliqz-004-de: e1zObD83RgWUw2Yh9WoOwg
+ release-partner-repack-repackage-win32-nightly-chipde-cliqz-005-de: YrvEZABvQCSIFCNFgwe7vQ
+ release-partner-repack-repackage-win32-nightly-chipde-cliqz-006-de: Pz-EsbFCSEKHF3NDF4hTHA
+ release-partner-repack-repackage-win32-nightly-chipde-cliqz-007-de: HWIid5X1QTqJpQ2E0HyQ-w
+ release-partner-repack-repackage-win32-nightly-chipde-cliqz-008-de: FDtNvgvPTUaQXrD487c__Q
+ release-partner-repack-repackage-win32-nightly-chipde-cliqz-control-de: M1aTr9RbQpeaGvDkDPmzGQ
+ release-partner-repack-repackage-win32-nightly-chipde-cliqz-de: L93MikcASniVKMDZqMos_g
+ release-partner-repack-repackage-win32-nightly-firefox-firefox-election-edition-en-US: Htoj2MtRS8ekABG1AZKlJw
+ release-partner-repack-repackage-win32-nightly-funnelcake-funnelcake134-en-US: b5l2KsPxQIeH12BbuAaQBw
+ release-partner-repack-repackage-win32-nightly-funnelcake-funnelcake137-en-US: WxZP_5diRQ6D_Ot26h0cAg
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-de: PO9iM_-XS06M6tVpJdICeg
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-en-GB: W1Sr_dU4QGOyK6cJ_--JNA
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-en-US: ElB-i78TSuWJOdngaHaVNw
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-es-ES: cXEe9quWQXux4wLX8AmVuQ
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-fr: DO5A7FBtQSeDruznxbTNXA
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-id: c3y8MIi-Q5eICY-x5b6fug
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-it: N5EMzG5eSF6Rbm1UXoz82A
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-ja: bkG_Vta-QpSuYFoTkSHxxA
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-ko: R9GsRHRMSg2whmrPaXJHlA
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-pa-IN: VMFJKplFT9eLK0YDgNXLxQ
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-pl: C3eaVmhJQfK4m3zqWqGKqg
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-pt-BR: VMzz4cBKSHCF9XbVV6hTUw
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-ru: csnxPNa3Qju-xj-n_T8qig
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-aura-tr: H3lGoG24T1W6DKdK2lbjBg
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-de: LCEEaisGR5qM-tMTfm1g1w
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-en-GB: dzrFgUe6Ssmt5yOrvpQkcA
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-en-US: MR-6oeS6Sjq8n9Nxwi1SZA
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-es-ES: HkUp_-I_Tb-oNUf5xtGDlw
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-fr: C9wfwd99QnaSlgvKeW5qgw
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-id: EGIS-lyySkqPrnzxIfVYvQ
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-it: DYnNIKkNTIqqUPqGAnfojw
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-ja: DHz_Z7YAQsSpuIRmFQLjEA
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-ko: BUpQuthfQxuX6ZYEwG66-Q
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-pa-IN: a6Df7ylcRAyEVTbOX_d2qw
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-pl: ed_M7HPlQBqHktyVBFEuPA
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-pt-BR: aGS6E7JlQwmsvZvUJWLnlg
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-ru: SW1jZHeVRO6q03Zrj82SHQ
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-google-tr: dLJ1_EuaRQmOH5ub7cpNVA
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-yahoo-aura-en-US: cMHvYCIKSu6j1TQKNTSCZg
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-yahoo-en-US: FhvKIFoaRqunAwSSvJQTww
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-yandex-en-US: EE_iFeWgRdCplLFOMptAzQ
+ release-partner-repack-repackage-win32-nightly-ironsource-ironsource-yandex-tr: blbOdFB5SC6OTkDG0G_F9Q
+ release-partner-repack-repackage-win32-nightly-mailru-mailru-ru: ek036v_QS8i15JL27MWihQ
+ release-partner-repack-repackage-win32-nightly-mailru-okru-az: QV24DA1bQ3KP60kT9FKzVA
+ release-partner-repack-repackage-win32-nightly-mailru-okru-en-US: PV0wphO-QsmESNOu0DgJDA
+ release-partner-repack-repackage-win32-nightly-mailru-okru-hy-AM: ZXSkk351S2ORh5TbzSRsbQ
+ release-partner-repack-repackage-win32-nightly-mailru-okru-kk: Ff32yh7LT4ywS2pu9enEpw
+ release-partner-repack-repackage-win32-nightly-mailru-okru-ro: W_ODP11pSxi9Lt7Zgy4_XQ
+ release-partner-repack-repackage-win32-nightly-mailru-okru-ru: RZmCQbHaRcaZbq34DgKYnw
+ release-partner-repack-repackage-win32-nightly-mailru-okru-tr: W6oTNZb-Q1al33UurO-GtQ
+ release-partner-repack-repackage-win32-nightly-mailru-okru-uk: IbVzJ-pcQUiK3zmwd-DCUA
+ release-partner-repack-repackage-win32-nightly-mailru-okru-uz: Zo1PMxVVT5a5D6fQZLpN7Q
+ release-partner-repack-repackage-win32-nightly-mozillaonline-baidu-zh-CN: HMRdur5vRpCGrljNMTMBzw
+ release-partner-repack-repackage-win32-nightly-mozillaonline-kingsoft-zh-CN: Vtf_vmu3QNCQBisD42UgvA
+ release-partner-repack-repackage-win32-nightly-mozillaonline-mainWinFull-en-US: bqRRvSylRyC5oaN6PcqrEQ
+ release-partner-repack-repackage-win32-nightly-mozillaonline-mainWinFull-zh-CN: f6YwTiCDT3un2GZFGtdO1Q
+ release-partner-repack-repackage-win32-nightly-mozillaonline-mainWinStubFallback-zh-CN: ffdlLBKWSaeEqz8LIh6ZkA
+ release-partner-repack-repackage-win32-nightly-mozillaonline-others-zh-CN: WhBv6u0_SmeZMwQ7QiHAbw
+ release-partner-repack-repackage-win32-nightly-mozillaonline-qihoo-zh-CN: fEf4PQ67Taud6NbZ3KPwIg
+ release-partner-repack-repackage-win32-nightly-mozillaonline-tencent-zh-CN: KAf_sFMdT0iZ1J67sAxs0g
+ release-partner-repack-repackage-win32-nightly-mozillaonline-xbsafe-zh-CN: VdUdqrcxQpGVk4Jb-vCCsA
+ release-partner-repack-repackage-win32-nightly-mozillaonline-zol-zh-CN: Nm0NmFBRR9erCRHorejJlw
+ release-partner-repack-repackage-win32-nightly-ntt-ntt-en-US: NXnLnupoRe2XSBhaZsfRrA
+ release-partner-repack-repackage-win32-nightly-ntt-ntt-ja: EkgYDDVtR3exZGsOve4NRA
+ release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-de: W51uRvqsQd6YGYhxbaXRdw
+ release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-en-GB: GjVz3nMMTlWf9F4cEdoavA
+ release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-en-US: Dve-tjtpTA2782j71qRewg
+ release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-es-ES: FqDw0hTSRJSNWedVoIPICw
+ release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-fr: VXOOm6ieSeu4f6bTlzdAow
+ release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-it: cJeROY_ATny4a52MKyNl2A
+ release-partner-repack-repackage-win32-nightly-playanext-playanext-wt-us-en-US: VlUa4hoIRHWFrhM0ZpYULA
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-001-ca: N1x7XFhWT0yweJ627c5xSA
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-001-cy: fz3KQOY_TEO_VKBx4rabiQ
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-001-de: YiWrxFuKR1OyrvKC9rcNEg
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-001-en-GB: Hzly1TAZS4qoe1RhomMSRA
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-001-en-US: IA1xk1SNSwiKum2tQSib2A
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-001-es-ES: eNQ2DeizRPOcpAMuEXYzuQ
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-001-fr: P144Ez8JTXGqEPgeVBIvnQ
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-001-gd: CGDo-f4FTriA8vYTTblgJA
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-001-it: S1CTzv8bS-OEbTM41ZQNTw
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-002-ca: N9TLDVeuROmXNSlfbpLjtQ
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-002-cy: cqB_oVSfR6a6XZa-hP5vjA
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-002-de: YQtC0BxqSi28XJBsys8pDw
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-002-en-GB: cr0Z7P5gS4KsQj_YfbZjkQ
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-002-en-US: ckjpM0pJS-e314EyR6xFxw
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-002-es-ES: VQvEJ7K-QDGf_Jd9hPus5A
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-002-fr: fT0EZyjgSICV2EO8ocAw1w
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-002-gd: SICVC4-zS9uKk-tOPbRyIA
+ release-partner-repack-repackage-win32-nightly-qwant-qwant-002-it: ZRZgxxNwShm2vLjRKcSFSw
+ release-partner-repack-repackage-win32-nightly-seznam-seznam-cs: FHmui_2QRryLvwwjv8qzSw
+ release-partner-repack-repackage-win32-nightly-softonic-softonic-de: SFTRhyhaTBimqk9BMcsA_g
+ release-partner-repack-repackage-win32-nightly-softonic-softonic-en-US: X8VrHZiQTgyW-C_z20uaXw
+ release-partner-repack-repackage-win32-nightly-softonic-softonic-es-ES: evILFpXASROi2D9uBItLig
+ release-partner-repack-repackage-win32-nightly-softonic-softonic-fr: X5EWtR9HQv65EZbMV9_1JQ
+ release-partner-repack-repackage-win32-nightly-softonic-softonic-it: cb24zrugSvGAHmNcc6wUQw
+ release-partner-repack-repackage-win32-nightly-softonic-softonic-pl: FCdlryzFQWq5bGV08_9tGQ
+ release-partner-repack-repackage-win32-nightly-softonic-softonic-pt-BR: AdTGlirBQFmc2gNiHTYIpg
+ release-partner-repack-repackage-win32-nightly-softonic-softonic-ru: IuuQv-yURfecijOPRtGyVg
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem1-de: RVP3ldcTQRGjGm7KEmpukw
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem1-en-GB: AQ-AtChBSymQn_z9qzMxlA
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem1-en-US: LnIRwibkR0yaVdyXamB0mA
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem1-fr: C9F5ek9uQFWQxxIhxlq7Gw
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem2-de: ekO5I9v9SseQqN5yB835kQ
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem2-en-GB: FvVPwTdpRIiZuPfFtDjB4g
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem2-en-US: eIfnQ1cUSeG1DXZUukDIug
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem2-fr: MG1uXoxaTkm2NjItt63Eyg
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem3-de: MdVJ0TetRqOYhNrCVykktA
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem3-en-GB: boKl2qf8SqShQQivsjhExg
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem3-en-US: Jg65r60AQOOVc70MvlmISQ
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-oem3-fr: V-R0681nQeKwbmlhgioNeA
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-de: dlM-XSgYTO27Xs8rVkc2sQ
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-en-GB: SmMP5ZSXRLqjro1h19xzYw
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-en-US: fXBjKt4xR-273oduIjInZA
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem1-fr: BstZlJRCSaiBwGe-tzpkmw
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-de: JxXT6G1xRr254_yTp3cXHw
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-en-GB: bDcM4YpPSoyjDJcgrC-9qA
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-en-US: Tv2OE5d1RQKsh68JjsMgRg
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem2-fr: EjRC3_obT9yk1_J2BYkHLQ
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-de: KH5GPV0nRUuhoeIU-9h-QA
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-en-GB: XkwOpKMVQWS8BEe080YBxQ
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-en-US: Ov2pGHUlQha2qPtPgA6Uiw
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-b-r-oem3-fr: Cy72BXzqRIeRQQOboJ5JbQ
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem1-de: SNxobrgxSLWjkfxUzqq16A
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem1-en-GB: eHP0wj1YTfyHxi9EHA0-qQ
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem1-en-US: RADlGUuvQiu5RdGNJ1hmnA
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem1-fr: XPTDsHThRzWfqTiTUcGTpw
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem2-de: QW6D9x77R46xw6BmOt_q3Q
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem2-en-GB: d9VmmRj5Qmeq0pWtrcK7Qg
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem2-en-US: KanT4EmiSxWt_PXFFnHhug
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-oem2-fr: XKwNtpJQTNi3WY0_mgbgYA
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem1-de: RIq99qhyR1OUr6oedsNyzw
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem1-en-GB: exqP39TUSySyY6XlXQFI3Q
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem1-en-US: ZCKJGDBWQGO6V1ewQWLdzA
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem1-fr: YGBI6vQtScqKDxAGnQzZaw
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem2-de: Iwj7DUd2SLeObijED9Kalg
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem2-en-GB: VCI4RWCoQIOXGLdkgbPFBA
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem2-en-US: B1BIBSxcRp2JwrWwKF6oXg
+ release-partner-repack-repackage-win32-nightly-sweetlabs-sweetlabs-r-oem2-fr: Y0lf2aFjQHWzbfqYxt-3tg
+ release-partner-repack-repackage-win32-nightly-toshiba-toshiba-001-MX-es-MX: BbKSHTrNR9a-i_xefcb90w
+ release-partner-repack-repackage-win32-nightly-toshiba-toshiba-001-US-en-US: Rjoz5KpSTeCvSKmjKLM8fg
+ release-partner-repack-repackage-win32-nightly-toshiba-toshiba-b2b-JP-en-US: E9Do2gUZQuq1hppHQc_KtQ
+ release-partner-repack-repackage-win32-nightly-toshiba-toshiba-download-B-US-en-US: A65WJPa-Qs6P1s36Z2Qhtw
+ release-partner-repack-repackage-win32-nightly-toshiba-toshiba-download-MX-es-MX: HHOddPojRyGtgqoQzx8p1A
+ release-partner-repack-repackage-win32-nightly-toshiba-toshiba-download-US-en-US: LJd2kFtaRey2tQtKsCb-5g
+ release-partner-repack-repackage-win32-nightly-unitedinternet-1und1-de: Mye60mWJT36h-kN7mePI0w
+ release-partner-repack-repackage-win32-nightly-unitedinternet-1und1-en-US: Atew1fCCSX2Ze4-VFoqjFw
+ release-partner-repack-repackage-win32-nightly-unitedinternet-1und1_notb-de: Du6Qsp04Tgi4XHJ2-V8A6Q
+ release-partner-repack-repackage-win32-nightly-unitedinternet-1und1_notb-en-US: TRluSh6JRxGd0bba0QALig
+ release-partner-repack-repackage-win32-nightly-unitedinternet-gmx-de: PpHKU2GrQ0ORrYEO4Tx3Sw
+ release-partner-repack-repackage-win32-nightly-unitedinternet-gmx-en-US: G2hdpH2FTlu691NgDOIWSg
+ release-partner-repack-repackage-win32-nightly-unitedinternet-gmx_notb-de: Ov2G662SRUW2bLYWrdKdow
+ release-partner-repack-repackage-win32-nightly-unitedinternet-gmx_notb-en-US: WZcUWdH1SRGV5-5WllU-nw
+ release-partner-repack-repackage-win32-nightly-unitedinternet-mail.com-de: PKQK0Qp3RoWi_kfXsJ7MjQ
+ release-partner-repack-repackage-win32-nightly-unitedinternet-mail.com-en-US: D39amj5YSbepD2Mef-HQSg
+ release-partner-repack-repackage-win32-nightly-unitedinternet-mail.com_notb-de: VHDevsOySP6OyVY4o0pvvg
+ release-partner-repack-repackage-win32-nightly-unitedinternet-mail.com_notb-en-US: S1nhtn1tSVOWz0KDQPckmg
+ release-partner-repack-repackage-win32-nightly-unitedinternet-web.de-de: Q0-q5B7RRRKcv5mPk4YSTQ
+ release-partner-repack-repackage-win32-nightly-unitedinternet-web.de-en-US: LY6UX4uhQvm2GG13sIYL_A
+ release-partner-repack-repackage-win32-nightly-unitedinternet-web.de_notb-de: baGi8FY-RdKn-LMnwM5M-Q
+ release-partner-repack-repackage-win32-nightly-unitedinternet-web.de_notb-en-US: bA9hzUjuTSKI5rjB7I6J5w
+ release-partner-repack-repackage-win32-nightly-wildtangent-wildtangent-en-US: e5jXIU7USrq8FBhhaw6rXQ
+ release-partner-repack-repackage-win32-nightly-yandex-yandex-drp-ru: exfRz_NpT3mRbWAIbofKCQ
+ release-partner-repack-repackage-win32-nightly-yandex-yandex-planB-ru: LCMw7VijTW62FcvmkT_7QQ
+ release-partner-repack-repackage-win32-nightly-yandex-yandex-portals-ru: AmJVzwmmQS-kOH57cefg7w
+ release-partner-repack-repackage-win32-nightly-yandex-yandex-ru-mz-ru: MwgzxXNzQh-Hh6A3j5p7Tw
+ release-partner-repack-repackage-win32-nightly-yandex-yandex-ru-ru: Y3JA0lAVSDiY8V_PWSI2wg
+ release-partner-repack-repackage-win32-nightly-yandex-yandex-tr-gezginler-tr: SNCgVmDQR3G6vdVeTYmKuQ
+ release-partner-repack-repackage-win32-nightly-yandex-yandex-tr-tamindir-tr: G3mycDCQTUKzHJqqQHaZ7w
+ release-partner-repack-repackage-win32-nightly-yandex-yandex-tr-tr: TBhZKnmATcCvKoUb-sj6bQ
+ release-partner-repack-repackage-win32-nightly-yandex-yandex-ua-ru: U-qi811dSfGYxKrk3Ebvow
+ release-partner-repack-repackage-win32-nightly-yandex-yandex-ua-uk: Cfz2DZRRSUi-axyLqvEsRw
+ release-partner-repack-repackage-win64-nightly-acer-acer-002-en-US: YeSlBZB3SGmhkexMgHMPTQ
+ release-partner-repack-repackage-win64-nightly-aol-aol-en-US: IEuKI_OjT8GJoDuRfheE9Q
+ release-partner-repack-repackage-win64-nightly-aol-aol_de-de: ft9NUZ9tTHiAIW1S8t-RlA
+ release-partner-repack-repackage-win64-nightly-aol-aol_desktop-en-US: MeZvAhf2T9GRVeEuH3DyPQ
+ release-partner-repack-repackage-win64-nightly-aol-aol_huffington-en-US: Y8ZGBeugTdSCJujhFZPU0Q
+ release-partner-repack-repackage-win64-nightly-aol-aol_uk-en-GB: Nv_W78CGQnKah_8uY97_qw
+ release-partner-repack-repackage-win64-nightly-chipde-chipde-de: aOHqPG3YRZCtmyhPoPnAjQ
+ release-partner-repack-repackage-win64-nightly-chipde-cliqz-003-de: JsJzPtl6QRO8hap9Bnm0vQ
+ release-partner-repack-repackage-win64-nightly-chipde-cliqz-004-de: WylMm-GbRDKndFFC3qzvlg
+ release-partner-repack-repackage-win64-nightly-chipde-cliqz-005-de: Bgj-xcjDSYqLUT-ckRWwWg
+ release-partner-repack-repackage-win64-nightly-chipde-cliqz-006-de: P9m87OM-TJC-mPd03eGE6Q
+ release-partner-repack-repackage-win64-nightly-chipde-cliqz-007-de: JUANGkdzRLmXBrDo1k376Q
+ release-partner-repack-repackage-win64-nightly-chipde-cliqz-008-de: EpovcoD8QAWR4kp36zU5fA
+ release-partner-repack-repackage-win64-nightly-chipde-cliqz-control-de: M1dJljdOS5egZFBzDMEIEw
+ release-partner-repack-repackage-win64-nightly-chipde-cliqz-de: QQY1nBPYT9GuIaOVSwFj5w
+ release-partner-repack-repackage-win64-nightly-firefox-firefox-election-edition-en-US: EFW-a_eZTpi3CXvJ2QeMAQ
+ release-partner-repack-repackage-win64-nightly-funnelcake-funnelcake134-en-US: TDA-ohu_SdCwyYDcro7OyQ
+ release-partner-repack-repackage-win64-nightly-funnelcake-funnelcake137-en-US: XnuUiKAbR9qBISbdPgUUEA
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-de: QuOUcvv5QqKgQRw06NDJFg
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-en-GB: fTH5hDf2SGqcotWTp5tfbg
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-en-US: SmFZw7NvR122j02MBy--2A
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-es-ES: J4ugsatbQzeASM3fEXPbQA
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-fr: fEW_SnPVSPmXlPaKMG-b_g
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-id: DqaOEmYJQZyvPrPg36zTfQ
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-it: LqEixu4QR1W5RlbskO1BWA
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-ja: Xu6QlLbyTPuo0GMKerIfUg
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-ko: H8A0qzCjThCYC5FFVhtt1Q
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-pa-IN: Z_KAK0GGSfu_r-etz5Z9xg
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-pl: LuNmOwwSQIiSLBlEQeKtzQ
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-pt-BR: ALN_GTZ6T5iFkcq8mZJz5Q
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-ru: KPWqM5KfRvekOUQhiRyrTw
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-aura-tr: UvGvdmSrTNWJpIqeAYlgIg
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-de: FprQNQXKRHGVRtZibMpkug
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-en-GB: cTNIcwgQSz6fCY1seslhUw
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-en-US: c5xqN2mWRjujUfQQFtl6FA
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-es-ES: Apj3zPtTRD6HRAy-NTF54g
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-fr: J4d14z3tSa2DRQUjqOqBMw
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-id: DcTfYMKyRGOiYpmSBVFFgA
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-it: DqkTId8VSmyOBtdS2-Hnlw
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-ja: BWIxO_MvRqulimYMFl87RQ
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-ko: F-s9DJQKSSWd-EckMoMNQQ
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-pa-IN: GAT5OnIGRkWMWNvpB7PsgA
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-pl: XRM14nw_S0OiKbNF12KNTw
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-pt-BR: WElGrtVHTVuAo3oOWLUD5A
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-ru: Y1l29LARSguqjrcyrfZ_Hw
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-google-tr: QqwTkQwkRkeZG3qQZXsy4A
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-yahoo-aura-en-US: e4lCFfFeTDe7osZWxJUErw
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-yahoo-en-US: erjqvW0KR6q6868D-akSaA
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-yandex-en-US: fsZ01vMlTRuPcovKGSG6Hw
+ release-partner-repack-repackage-win64-nightly-ironsource-ironsource-yandex-tr: QCeMVexaSASfyHCzh_aTCA
+ release-partner-repack-repackage-win64-nightly-mailru-mailru-ru: MmcxWJP1QUWc_p9AQXqp5g
+ release-partner-repack-repackage-win64-nightly-mailru-okru-az: MYRCjHdHQVuo1CoSXvS6kA
+ release-partner-repack-repackage-win64-nightly-mailru-okru-en-US: GuZHICnORQKQAoXlYC1cuQ
+ release-partner-repack-repackage-win64-nightly-mailru-okru-hy-AM: FxJkCLhXQo6wYOqamVJdoA
+ release-partner-repack-repackage-win64-nightly-mailru-okru-kk: PpOcvRySRnqUXFQkRhVqPA
+ release-partner-repack-repackage-win64-nightly-mailru-okru-ro: Pg2mwD5CTxKSXV5BHJnFGg
+ release-partner-repack-repackage-win64-nightly-mailru-okru-ru: Q9Z-31u0S_i-VCKHd9U7Zw
+ release-partner-repack-repackage-win64-nightly-mailru-okru-tr: O6r3x0MYQ5ydkPBHW-uncw
+ release-partner-repack-repackage-win64-nightly-mailru-okru-uk: EYtppbXXRE2aJMoxDa5phg
+ release-partner-repack-repackage-win64-nightly-mailru-okru-uz: Fe5Z5g2cTBa__YEZlvkEKQ
+ release-partner-repack-repackage-win64-nightly-mozillaonline-mainWinFull-en-US: bVJI3h0QT8KNgHrLFoVJJQ
+ release-partner-repack-repackage-win64-nightly-mozillaonline-mainWinFull-zh-CN: bt_q-tkkQxusnHsV75ZWYA
+ release-partner-repack-repackage-win64-nightly-mozillaonline-mainWinStubFallback-zh-CN: Ugo6usVtSHKP4YIHOTYIpA
+ release-partner-repack-repackage-win64-nightly-mozillaonline-others-zh-CN: aRjZPvZpR1y9oC6jA04law
+ release-partner-repack-repackage-win64-nightly-mozillaonline-qihoo-zh-CN: NPRl45ohStW7Lm8oGcxDGQ
+ release-partner-repack-repackage-win64-nightly-mozillaonline-tencent-zh-CN: fE_-b4dRSVONMG9gLIl7AQ
+ release-partner-repack-repackage-win64-nightly-mozillaonline-xbsafe-zh-CN: J48UStasRLSXNrcJNMQrPA
+ release-partner-repack-repackage-win64-nightly-ntt-ntt-en-US: cO7csiSPSIqcTtt8Ioozlg
+ release-partner-repack-repackage-win64-nightly-ntt-ntt-ja: VkXiyXEXQoOtcw6MK8Ic7w
+ release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-de: ACNpEeYFQXyw34ued0WmUA
+ release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-en-GB: MPtUVZ-kRSmc2ViWnyRi0w
+ release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-en-US: Kh1n0YTqQ6m6s8-b36z7-Q
+ release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-es-ES: CzkvGintQ1uiknxc_kWCtQ
+ release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-fr: VLFknhL3Rc6mpPdSyxC_uQ
+ release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-it: NcqBtxSCQN6Yxy3IS1uOzw
+ release-partner-repack-repackage-win64-nightly-playanext-playanext-wt-us-en-US: EY3IQucUSZqHuf0_K_gRbw
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-001-ca: XNHRVjyLR5itm1E8BmJkIA
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-001-cy: Z37kngz0RP2y5_i6s1a-rA
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-001-de: VEFQYZvNSu6f9004pjwwLQ
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-001-en-GB: DuB-14ebRGqMin3RNcVIXA
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-001-en-US: fHpc5fikQpGFP3b4AimdKQ
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-001-es-ES: E4YjKxSPR_--6zvSmO2ueA
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-001-fr: UgREzlOxQi2phtbUsJQBDg
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-001-gd: Oo0lnutyTvOLDW8xJK75vg
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-001-it: Cso66dw0QjupmkGtX4ZHTw
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-002-ca: BeaAQwPTStWHHdlczJ0roA
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-002-cy: ZQHceiD3R36cMhi9Hx7L7g
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-002-de: U0EfA2W_SfKbmSSjASJeWg
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-002-en-GB: D8Oe0KMYRoaxkgoqmJ2EFQ
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-002-en-US: ej5MlnWjSbS2NVkUi8Op_A
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-002-es-ES: e37uE19CQESgyPvXyifWWw
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-002-fr: RNoW9lGjTUKNDC8GWJnypQ
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-002-gd: YjTslyxTToWZc1xaIH0rKQ
+ release-partner-repack-repackage-win64-nightly-qwant-qwant-002-it: XAMwgeJRRhGhhuEuGq6nmA
+ release-partner-repack-repackage-win64-nightly-seznam-seznam-cs: Qa2kHaR7S4OLOSdmxJxPSg
+ release-partner-repack-repackage-win64-nightly-softonic-softonic-de: T_gG-ufiRB-gmsJNLUcZwA
+ release-partner-repack-repackage-win64-nightly-softonic-softonic-en-US: O_DX6Y8RRbOiAgM6AfA5VQ
+ release-partner-repack-repackage-win64-nightly-softonic-softonic-es-ES: EuENXRUmR9CbFU-y7vcKFA
+ release-partner-repack-repackage-win64-nightly-softonic-softonic-fr: Iex0lQc_SJiWXPp__tt1Tw
+ release-partner-repack-repackage-win64-nightly-softonic-softonic-it: EUc-gZybRPGCDhmB2qAFzg
+ release-partner-repack-repackage-win64-nightly-softonic-softonic-pl: VZUVWOzPTjOuBFIoyWM_Lw
+ release-partner-repack-repackage-win64-nightly-softonic-softonic-pt-BR: S2lup30eRH6OqDrRk_iweg
+ release-partner-repack-repackage-win64-nightly-softonic-softonic-ru: b6zroKF2Rq6sM113Dd7_BQ
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem1-de: CdnzGiG6QhiQi7o0iVp-Hg
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem1-en-GB: J9SdKikYTr6-VoTnMLic_A
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem1-en-US: Es1hCiyNTvKTtixDJx48iw
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem1-fr: cJg9LR-RQZ-rm6278IgGhg
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem2-de: QLbykZ3NQu-hc4yxosxepA
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem2-en-GB: fOQ6Mdx3TeWzqLXXC1sicA
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem2-en-US: LdEkTGacRs2ZzO1Xez7xtg
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem2-fr: a0JTJaKWR1SYqJPkxulOUQ
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem3-de: JqMIDRWtSw-j7TvEV02a5g
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem3-en-GB: bUKWE87QTou7mec2ohn5EA
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem3-en-US: BvYadYwSSQOicAOOKfYsdA
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-oem3-fr: IbyZkig7QCKcDK85Sk4vfA
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-de: GTH8RvipRx6T_P5SIaC-7Q
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-en-GB: TzLC3c7qTwOKRR2Bv3yiCA
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-en-US: S-3TDDmqTNyrgJxmjQGqZg
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem1-fr: E-gK6QQxSY6bOb8fsrEy8Q
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-de: GCYpGh3_RsuDf3sm3cftkQ
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-en-GB: Frxf6zUlS5CN6AxHB1wT-g
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-en-US: brtMY60TQVW9Gm9BZ5zaVQ
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem2-fr: Fg_PB8BHRHuPUR3efdrBwA
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-de: e-MAIzFDQ9WeDxwYeuHH7Q
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-en-GB: CzFBWxoiQt67ne6l1DWT7w
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-en-US: deM7K7vMRiigx_yRIIqXiw
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-b-r-oem3-fr: X9IfgCo_RfWI1hGoDtVeFA
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem1-de: V2rYgfVFQAiOO5ZAcMSNjQ
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem1-en-GB: NZ44B18mRt2iLV8XJMXp6w
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem1-en-US: eIt1et-tQfC2XM0UUHpJ0A
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem1-fr: b7mujLDoRD-xbVvpoeyaKw
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem2-de: IbHOwRe3Tdmzt5xtLdqUgw
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem2-en-GB: EbX4WQHRTdWLigqlN5hhWw
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem2-en-US: GRuko-5OSm-zpEgzsIFDlg
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-oem2-fr: U9Jmus0tShWAXHPj6CJmLQ
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem1-de: dqN9lXS5SrSG-dfC4HpwtA
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem1-en-GB: aTwbVl-VS4mcJwBUmYSMWg
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem1-en-US: Njw6Pv_JRGKUV6jY7OJIdw
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem1-fr: fWVce1_8TFW-Qj41F4KzsA
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem2-de: V8WPCZGKQiqzuxXASaEORQ
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem2-en-GB: ewsuiRh9TOOlst0jZUQTsA
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem2-en-US: ec7BVNQhQOKe_VFpHbeT7w
+ release-partner-repack-repackage-win64-nightly-sweetlabs-sweetlabs-r-oem2-fr: cqQJ4Bn6SiuNy0P7GcDvQg
+ release-partner-repack-repackage-win64-nightly-unitedinternet-1und1-de: Trb3Gl7JQWeS9nD4sWH7wg
+ release-partner-repack-repackage-win64-nightly-unitedinternet-1und1-en-US: S7A_nBH7QDmdwLN1yic0JA
+ release-partner-repack-repackage-win64-nightly-unitedinternet-1und1_notb-de: cB_7dRHpSdCutMk2Dao6Sw
+ release-partner-repack-repackage-win64-nightly-unitedinternet-1und1_notb-en-US: ZDFNUVqJSemGRV-GcPfl7A
+ release-partner-repack-repackage-win64-nightly-unitedinternet-gmx-de: ZfJKnmvlQVy3RhZNGaizQg
+ release-partner-repack-repackage-win64-nightly-unitedinternet-gmx-en-US: ENvE9b0bTmmpXZb3kXvK3A
+ release-partner-repack-repackage-win64-nightly-unitedinternet-gmx_notb-de: NFfPKFAmQo27c_97Wi0pbQ
+ release-partner-repack-repackage-win64-nightly-unitedinternet-gmx_notb-en-US: eCoOv5C1QAutxfD96KBd-g
+ release-partner-repack-repackage-win64-nightly-unitedinternet-mail.com-de: CHLSWVCZScSsz93Z_YEylg
+ release-partner-repack-repackage-win64-nightly-unitedinternet-mail.com-en-US: TR3jRWVQTeK1BVnIZ7sxcg
+ release-partner-repack-repackage-win64-nightly-unitedinternet-mail.com_notb-de: ExFGqNLcTs2fPlS-tfnLbA
+ release-partner-repack-repackage-win64-nightly-unitedinternet-mail.com_notb-en-US: Kxq5nF58QjWXP11TYzGtHQ
+ release-partner-repack-repackage-win64-nightly-unitedinternet-web.de-de: atKV-0H7TpyTxYlbjmyXPA
+ release-partner-repack-repackage-win64-nightly-unitedinternet-web.de-en-US: dX_6iMSWQlSaPTOuMHmqlg
+ release-partner-repack-repackage-win64-nightly-unitedinternet-web.de_notb-de: WslGWYz1ThqGPw_RzLMW-Q
+ release-partner-repack-repackage-win64-nightly-unitedinternet-web.de_notb-en-US: VwUogMdfSW-QdTufFIPEcw
+ release-partner-repack-repackage-win64-nightly-yandex-yandex-drp-ru: alpNVhKITcO_LUS1nF6ezA
+ release-partner-repack-repackage-win64-nightly-yandex-yandex-planB-ru: BL6PRm3JRTaGRwEhBF1MsQ
+ release-partner-repack-repackage-win64-nightly-yandex-yandex-portals-ru: XZJStNe7TV2bQiiFBgJ-4g
+ release-partner-repack-repackage-win64-nightly-yandex-yandex-ru-mz-ru: W0vqvjPJR0C-tHGQOH_fhg
+ release-partner-repack-repackage-win64-nightly-yandex-yandex-ru-ru: Fx26yAH0Q_a4oysqmGtSnw
+ release-partner-repack-repackage-win64-nightly-yandex-yandex-tr-gezginler-tr: fafg2Ah7TfCf4lRR3jNIcA
+ release-partner-repack-repackage-win64-nightly-yandex-yandex-tr-tamindir-tr: Ghjy1OcfSeKxqq1T46DPVQ
+ release-partner-repack-repackage-win64-nightly-yandex-yandex-tr-tr: LZ5ICIzWT0i43lzcAO3gkw
+ release-partner-repack-repackage-win64-nightly-yandex-yandex-ua-ru: VA3zk1qkQBGJ-SoVy_aNjg
+ release-partner-repack-repackage-win64-nightly-yandex-yandex-ua-uk: LzWbkscgTXiyDMuk5pHQaQ
+ release-partner-repack-signing-macosx64-nightly-aol-aol-en-US: bT8yXA8OTbG0ljyaXJvzWA
+ release-partner-repack-signing-macosx64-nightly-aol-aol_de-de: HjlnJkDUSOq-JyIwwSgWcg
+ release-partner-repack-signing-macosx64-nightly-aol-aol_desktop-en-US: YuSYUb0SRqW2lItNKbcoEg
+ release-partner-repack-signing-macosx64-nightly-aol-aol_huffington-en-US: RmDzk1gcQDGoDcoNrwDQnA
+ release-partner-repack-signing-macosx64-nightly-aol-aol_uk-en-GB: KTb0R-feQ5-sF2PVLY7h1Q
+ release-partner-repack-signing-macosx64-nightly-chipde-chipde-de: Tti16V0zTUurNgeEVyR0sA
+ release-partner-repack-signing-macosx64-nightly-chipde-cliqz-003-de: FZbY3P_PRKyS_0MSTEa1xw
+ release-partner-repack-signing-macosx64-nightly-chipde-cliqz-004-de: Nlpi1gz3TjuzokVemJ4zYg
+ release-partner-repack-signing-macosx64-nightly-chipde-cliqz-005-de: ITA6vOTbTqCwwQCK7Wwoag
+ release-partner-repack-signing-macosx64-nightly-chipde-cliqz-006-de: Hyc5zWuKQQOp7NCJPxeEjg
+ release-partner-repack-signing-macosx64-nightly-chipde-cliqz-007-de: cAQOg-MsQoyZHE6fWFColQ
+ release-partner-repack-signing-macosx64-nightly-chipde-cliqz-008-de: U_5RarFoQD6b_Ny56nuPug
+ release-partner-repack-signing-macosx64-nightly-chipde-cliqz-control-de: X-eLIXjMSROES-XC0fbc0Q
+ release-partner-repack-signing-macosx64-nightly-chipde-cliqz-de: PXVdBSTWQ--nPyvR72WcnQ
+ release-partner-repack-signing-macosx64-nightly-firefox-firefox-election-edition-en-US: PJahkc4URvmMSIc0wBHOWg
+ release-partner-repack-signing-macosx64-nightly-funnelcake-funnelcake134-en-US: AKZC6zJ6Sf23-ajcK7tteg
+ release-partner-repack-signing-macosx64-nightly-funnelcake-funnelcake137-en-US: WgW0LxBgRB64COq5zaLoZA
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-de: OGL6miIyQl6ejstRyYbZYg
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-en-GB: DeO_QlylRjWYOySyLsgP0g
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-en-US: NL_9kqjCT-SV2tDKSQbMoA
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-es-ES: V5MFtJUYQ2CtGQwWEhzpoA
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-fr: De5zAXkHRdy6VPIEIHJLkg
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-id: CYWHPXFaSeGjzCTAujiacw
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-it: DizQdvWOQFe7NB-p5IGNOQ
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-ko: dFDNpvsOTMKNF7her5lcbQ
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-pa-IN: JhggfF7uSvmfsoqqqWsUVQ
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-pl: QJRcOuGfQemj80a5shQ9hQ
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-pt-BR: TcadWvfuSTGEhcBTUJHrGQ
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-ru: eRhVPrZ_TBWJ7JS5rY7M0w
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-aura-tr: eQy_T52XTLmmSvrHvGsePA
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-de: ejz1aMgWQKCRTU89D0Yzog
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-en-GB: CMUbtc3ATXibTRY3JtR_IA
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-en-US: GypnOXlRT56pYSrutbNyyA
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-es-ES: I4FK4yv1QGuzuaIuQ5fCfg
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-fr: O3g8gp6vS26jiV518PcqLw
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-id: N1tidPfgRWCvDTJITK67SQ
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-it: eVM1OXfmSiSvblqX3u5lMA
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-ko: a5GiRYLvT0uQlQ8sL-YZWw
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-pa-IN: I7V1kEgqSlq2Mr-fq3Bvlw
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-pl: E4nl5id6T5OU9ZrOwU7rLw
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-pt-BR: P8ZRf-QKSAiaGgxuv_uJbQ
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-ru: dtt-NOTDTR6aZVFZ7UxwAw
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-google-tr: VefrozaiTLm6xZchLIgMiw
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-yahoo-aura-en-US: LOf_HHjHTh6jfbY1scsRMw
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-yahoo-en-US: B79WTRwSSOC7G_o56IWyOg
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-yandex-en-US: QXL4HP1SSKChDf-eNaha0g
+ release-partner-repack-signing-macosx64-nightly-ironsource-ironsource-yandex-tr: HLkCgCv9RcqYyqANWMM77A
+ release-partner-repack-signing-macosx64-nightly-mozillaonline-mainOther-en-US: UWvqY5OTROWGaAlFhaks5w
+ release-partner-repack-signing-macosx64-nightly-mozillaonline-mainOther-zh-CN: Niif9xtzRtSha7kKio--Hw
+ release-partner-repack-signing-macosx64-nightly-ntt-ntt-en-US: BeeEJr_pQ02_p6W3A2gIVg
+ release-partner-repack-signing-macosx64-nightly-ntt-ntt-ja-JP-mac: UiIX3-wSTie6PjxUsGqvcw
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-ca: cGOecsznTcuFlrFfi3jTiA
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-cy: aE1odJDOSgyrKzArV9uo9Q
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-de: Vm894j09TEqN0wXQC_Tgaw
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-en-GB: Faq16OtNT0CcPcWrKjwiZQ
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-en-US: TOxEAdKCQKq4WQUonidaLQ
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-es-ES: MTU06JWKQrif2Z-TZYp_IA
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-fr: LF-tWKw8RwCrUJkJ-z3W0Q
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-gd: VQH4gnIARjy-ZOFZYnGBCQ
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-001-it: R44v2MZ0S2KEEehAhk8t0A
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-ca: Xed4qqZ_TTC8G1KYJI5gOg
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-cy: YrGQ5HDyQpuiCtj8XdhMRw
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-de: X5-Pt6F2RuWrDji-QAOePA
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-en-GB: cI1Yn1yJQgehetWlZ00h7g
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-en-US: NTdI9rQSTSK6b9qZmXsg-Q
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-es-ES: HHywXvcxRPSMgDDv_Tcpow
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-fr: d7z68L2aQNG8D3fkvnyg-g
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-gd: OAGT7eiCSr6Dn305U-NtZQ
+ release-partner-repack-signing-macosx64-nightly-qwant-qwant-002-it: dO-mH5mnQ1ynZhcYsDO7Dg
+ release-partner-repack-signing-macosx64-nightly-seznam-seznam-cs: BQz46WaxT--OPG0RstNmsA
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-1und1-de: R9sFKzQwQtiAzS63SgMgug
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-1und1-en-US: YV2v7kStTZeAKl20cucm3Q
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-1und1_notb-de: Iz80VQhWQQGLgDFhFXe9BQ
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-1und1_notb-en-US: RX8fyEksRNSvJz_b58R8Kw
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-gmx-de: XKgiCksYSxGXMY45_UYfNA
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-gmx-en-US: NGFvaGQwSf-u2ir4HoeOCg
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-gmx_notb-de: BfccjqTpSXSoUWhb9s0X_w
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-gmx_notb-en-US: YZ3m2cr8Spm-OuS7Sjm7nQ
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-mail.com-de: HmR9pWedQTOhHHEHr4dHUQ
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-mail.com-en-US: JVgTpY68S4CkbF3DCJZDJQ
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-mail.com_notb-de: EVHlFvhjQ7iHVGXkJa6miw
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-mail.com_notb-en-US: X_xQQ6PeRLyTaZLeRY7vuw
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-web.de-de: JPoz-NwySiOk6b4ZTuIMDg
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-web.de-en-US: Fw2zO4KNTLunbE3tRnvuHw
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-web.de_notb-de: Z5_96ISeRmicdlgexU1aSg
+ release-partner-repack-signing-macosx64-nightly-unitedinternet-web.de_notb-en-US: Wq608zqiQQCyJke0ueoTYw
+ release-partner-repack-signing-macosx64-nightly-yandex-yandex-portals-ru: besdKUczTsGAx7VIi6vgxw
+ release-partner-repack-signing-macosx64-nightly-yandex-yandex-ru-mz-ru: CyAeWHPGQ7CMK3-IWijo0Q
+ release-partner-repack-signing-macosx64-nightly-yandex-yandex-ru-ru: StqQciJJQWqG4LczK3BS8g
+ release-partner-repack-signing-macosx64-nightly-yandex-yandex-tr-gezginler-tr: Zv8jpEZyQbOscnaOdDjdfg
+ release-partner-repack-signing-macosx64-nightly-yandex-yandex-tr-tamindir-tr: DfJx4g9MR8eTShBTKkexEQ
+ release-partner-repack-signing-macosx64-nightly-yandex-yandex-tr-tr: OPt9p01kTvm9EvviFu_kRA
+ release-partner-repack-signing-macosx64-nightly-yandex-yandex-ua-ru: eT5UzT9zT-uQla57siMjVA
+ release-partner-repack-signing-macosx64-nightly-yandex-yandex-ua-uk: ZF26uloLTa6ZMzYKR09j-Q
+ release-partner-repack-win32-nightly: Q2j3JmrhReShd2aIRSSGsA
+ release-partner-repack-win64-nightly: A5KcGJIETCqIWgbYLuAJ-Q
+ release-snap-push-firefox: M1WO0_B5RLSiPjw9dpcZ7w
+ release-snap-repackage-firefox: NR5c8ichS_CCJeFzorjVCQ
+ release-source-checksums-signing-firefox-source/opt: JIcVwohsThmr2gFT68astg
+ release-source-firefox-source/opt: SO9LvB6YR_a9IhtnPui2Fw
+ release-source-signing-firefox-source/opt: QMzngmz6S_S4aJyLNOa3Ew
+ release-update-verify-config-firefox-linux: Gk7hT2U4QmuDnJSIiVT5ng
+ release-update-verify-config-firefox-linux64: YJieFTJ4R_KHcrz5j682Iw
+ release-update-verify-config-firefox-macosx64: Uo1TbpxGR4aADK_Y2pjpvw
+ release-update-verify-config-firefox-win32: YLV4XV64TOG2I2B9hp1Tdg
+ release-update-verify-config-firefox-win64: ceNzEVh_Qyu5GpVdV1nwOQ
+ release-update-verify-firefox-linux-1/12: KeZPVc_JQQ6DZz0rhh3Wew
+ release-update-verify-firefox-linux-10/12: OCpDzWzdSfeyuZv4YUh_pA
+ release-update-verify-firefox-linux-11/12: G0PTyvNwSh6955VwsidCZg
+ release-update-verify-firefox-linux-12/12: Ic-o1815Q5GjyEuie6-F8A
+ release-update-verify-firefox-linux-2/12: cliJiYh-R86wONFxHUyDuw
+ release-update-verify-firefox-linux-3/12: dhYQZiXhR-qhV_CYBmm5rw
+ release-update-verify-firefox-linux-4/12: epNDNn1-SdKyGyHtFwXXkw
+ release-update-verify-firefox-linux-5/12: NA57z1B2QoeP5bst2D8B9g
+ release-update-verify-firefox-linux-6/12: Q8JpVcNgSjqYTmC4YoKbaw
+ release-update-verify-firefox-linux-7/12: d4S97_aoTZGNTv_RmAxkyw
+ release-update-verify-firefox-linux-8/12: H7-UBOvrT2i_qxoT0wj3bQ
+ release-update-verify-firefox-linux-9/12: HUxWXBs8QGybX8GyADFaVw
+ release-update-verify-firefox-linux64-1/12: HSfUXuLETyGagjDpXMjpFQ
+ release-update-verify-firefox-linux64-10/12: QmQFsInAREKyeCF1h1iIHg
+ release-update-verify-firefox-linux64-11/12: WzrNxY35QQaWAwiNl3WWAA
+ release-update-verify-firefox-linux64-12/12: d05NAVzIRaOYed2ry2LbLQ
+ release-update-verify-firefox-linux64-2/12: TNphRsScRQ-d_4piRHMzPg
+ release-update-verify-firefox-linux64-3/12: QZGi-n2nQay3iVUzZ824Sw
+ release-update-verify-firefox-linux64-4/12: DkKLHEm1RQ6afg5asVO8xA
+ release-update-verify-firefox-linux64-5/12: NZNQy90EToSfM5i4jbjL2w
+ release-update-verify-firefox-linux64-6/12: Hxe0dFveQa-DOqdz3JBZrg
+ release-update-verify-firefox-linux64-7/12: FSPmKU6dTzSVNuz6Lty5Og
+ release-update-verify-firefox-linux64-8/12: FCe_UwVOSlaOauBX6pqKKg
+ release-update-verify-firefox-linux64-9/12: f87W-YfIT8Cul52FPpS8_w
+ release-update-verify-firefox-macosx64-1/12: aDR05DSeQtC3Ga3aroy4Xw
+ release-update-verify-firefox-macosx64-10/12: V-64IW93SEOMm6gJQN2AlQ
+ release-update-verify-firefox-macosx64-11/12: IIHf7GJCSDC-zluT2sfv1w
+ release-update-verify-firefox-macosx64-12/12: dbImgTthQqC08PYfgSkYdw
+ release-update-verify-firefox-macosx64-2/12: fV3FkRr1ToKbq1vxDBf-CA
+ release-update-verify-firefox-macosx64-3/12: R2YI8NnGSVKdIpAhzyirHw
+ release-update-verify-firefox-macosx64-4/12: DI6zuJcqT9aOsiw0pzY68A
+ release-update-verify-firefox-macosx64-5/12: H6-IrY1oRoWRONcdWStWwg
+ release-update-verify-firefox-macosx64-6/12: dJ-jl4-lR2i5yL8sEnXmcg
+ release-update-verify-firefox-macosx64-7/12: LCGLW9rDTt2lhQ_kMtC2fg
+ release-update-verify-firefox-macosx64-8/12: LgjfS9NdQ2CQ-GBSEqlh0w
+ release-update-verify-firefox-macosx64-9/12: OAS8WQAiTj23ENdpUz2Akg
+ release-update-verify-firefox-win32-1/12: YaQv2wBZR2iirDqWwuuP1w
+ release-update-verify-firefox-win32-10/12: FVHQU_WIRtO4_W0ieGXMGQ
+ release-update-verify-firefox-win32-11/12: e78ielxLSPybE5pSgEhqcg
+ release-update-verify-firefox-win32-12/12: B-4uLMGkTYOH3XDA9aDSpA
+ release-update-verify-firefox-win32-2/12: SF-_AGHATMmxiloUC16d7w
+ release-update-verify-firefox-win32-3/12: OBABm9sZTOOeGkUSmo7CWQ
+ release-update-verify-firefox-win32-4/12: dHcaB4k9RnW2hfNOrhZtJA
+ release-update-verify-firefox-win32-5/12: DiSRxYaHR76Chb7xc_dOxg
+ release-update-verify-firefox-win32-6/12: edUjcdfqQiyOhe5WaCHMXg
+ release-update-verify-firefox-win32-7/12: DqBZfu4vRoiQWzyfF-bOMQ
+ release-update-verify-firefox-win32-8/12: UR1T7w3LR1y_88Lm3w_LFg
+ release-update-verify-firefox-win32-9/12: WS-TE4KfRXShAa0AO2bPPA
+ release-update-verify-firefox-win64-1/12: ff2jw9FGQky6X7SNi929Yw
+ release-update-verify-firefox-win64-10/12: Hr-hYh5IS_aAlXyOsQpvwg
+ release-update-verify-firefox-win64-11/12: F8trJPI3T8GJR3aUWB1qLg
+ release-update-verify-firefox-win64-12/12: HgCFjs6zSNaJXffamvz7dw
+ release-update-verify-firefox-win64-2/12: WEgA4tB1Rh6ba93GW0UmJQ
+ release-update-verify-firefox-win64-3/12: X_aWUw1KShK1ZZ88YPM93Q
+ release-update-verify-firefox-win64-4/12: dJlRrwgbS0idC_tw3uWrgA
+ release-update-verify-firefox-win64-5/12: eGBzw5QSTDevIf6fKNMDgg
+ release-update-verify-firefox-win64-6/12: SKX8eJ4ERomCtG-CNbCpDw
+ release-update-verify-firefox-win64-7/12: cDLdqOXsRAC8ILD_pac0Xg
+ release-update-verify-firefox-win64-8/12: VdWR75VlR1-84PuGFaPuwA
+ release-update-verify-firefox-win64-9/12: OQwy7IqSTOm32NVXn_Wpxw
+ repackage-l10n-ach-linux-nightly/opt: X_dCq3IATvWTts4vFpiKvw
+ repackage-l10n-ach-linux64-nightly/opt: BjV47tinRw6RKRJLmOkhVg
+ repackage-l10n-ach-macosx64-nightly/opt: VtiwYS1IQ4-KTB5uBqUDdg
+ repackage-l10n-ach-win32-nightly/opt: Y0s-H8AlSKeXwwih_X6MHQ
+ repackage-l10n-ach-win64-nightly/opt: K9dYgwVSTaOnlvmY5uF4Iw
+ repackage-l10n-af-linux-nightly/opt: QuvvYbPITDusMh5NM3uqWA
+ repackage-l10n-af-linux64-nightly/opt: fjOpFEGnSsWj0EBMerzydA
+ repackage-l10n-af-macosx64-nightly/opt: EyjWmTuTRWCg3nS2J13Dow
+ repackage-l10n-af-win32-nightly/opt: L4nc7wdITbKYHrY8MeoGWQ
+ repackage-l10n-af-win64-nightly/opt: TfuIJO3SQVC8eYAdKQ7yvw
+ repackage-l10n-an-linux-nightly/opt: SlVK8RUxQgexIVKFsLdZ5w
+ repackage-l10n-an-linux64-nightly/opt: NYCxlB-SSreKnQ0pW2IZ7g
+ repackage-l10n-an-macosx64-nightly/opt: N-zDaE6VSz6FaBT5v2G9Qw
+ repackage-l10n-an-win32-nightly/opt: XAfftAF8QMye0KJChF0qXQ
+ repackage-l10n-an-win64-nightly/opt: S0-u4EurQLiy2CxFa3vrqQ
+ repackage-l10n-ar-linux-nightly/opt: ALzyUr_aRoCSi3Qn30AmBA
+ repackage-l10n-ar-linux64-nightly/opt: B_-Qwi_eSayPXs-lNFqmUA
+ repackage-l10n-ar-macosx64-nightly/opt: TO3j6xgbSiKOw5YL1oXI-w
+ repackage-l10n-ar-win32-nightly/opt: TtQeCz31ShuAScrFs2WqQw
+ repackage-l10n-ar-win64-nightly/opt: TfY_MC6_T3aCoiqaybiyNQ
+ repackage-l10n-as-linux-nightly/opt: Me19EtmeS1SaOC1lQGJx-Q
+ repackage-l10n-as-linux64-nightly/opt: SJW6-vTnSq-yVLVFYIWCHQ
+ repackage-l10n-as-macosx64-nightly/opt: ASmlqxFvRRyVYa0L23yqcw
+ repackage-l10n-as-win32-nightly/opt: UjohhO37SCCFOEpKHntilw
+ repackage-l10n-as-win64-nightly/opt: VHFj0TVMRQqSDlkKz-Lopg
+ repackage-l10n-ast-linux-nightly/opt: UMn3rVI6TjaR3MeHKPPcZQ
+ repackage-l10n-ast-linux64-nightly/opt: UwvcC3ncQTW6iupsln1GgA
+ repackage-l10n-ast-macosx64-nightly/opt: QuFJW7pgTg-YAY89xSb8Qg
+ repackage-l10n-ast-win32-nightly/opt: QW8H3MywRwCi7BR7LznxZA
+ repackage-l10n-ast-win64-nightly/opt: UpHB1fE_TJWZPkbsPIIOYg
+ repackage-l10n-az-linux-nightly/opt: W9V34gJcT4C1SZUfKqZK1Q
+ repackage-l10n-az-linux64-nightly/opt: JOszAMgARvCqtxNCnDDqFQ
+ repackage-l10n-az-macosx64-nightly/opt: DEkDEtSASY2bFtLKa4A2xw
+ repackage-l10n-az-win32-nightly/opt: T2OLtmLVRSWlEMPZKEAJ8A
+ repackage-l10n-az-win64-nightly/opt: E8OsEFzgSNO1mLiylHxYqQ
+ repackage-l10n-be-linux-nightly/opt: ehChRV4HQqmg6bSI5kkySw
+ repackage-l10n-be-linux64-nightly/opt: cbEL-MAsS3OrjGw3YZOs5g
+ repackage-l10n-be-macosx64-nightly/opt: K0FYej7bTzeJGF0wz_8rwg
+ repackage-l10n-be-win32-nightly/opt: IAypLFOSQ2OKgBOowJtvDg
+ repackage-l10n-be-win64-nightly/opt: IhdlTLY0TVWJobkdN2NDVg
+ repackage-l10n-bg-linux-nightly/opt: EWLggAibQ3mGL5EOKF7Dig
+ repackage-l10n-bg-linux64-nightly/opt: E6gDS7CmQBuyHHPqil3nsw
+ repackage-l10n-bg-macosx64-nightly/opt: QcHz61IfStKMkFFgawzV5Q
+ repackage-l10n-bg-win32-nightly/opt: F76yjGx-SqiOADsUTUWqbw
+ repackage-l10n-bg-win64-nightly/opt: KycXXp_AQ5G-VLwpSMt3Mw
+ repackage-l10n-bn-BD-linux-nightly/opt: J08jAPC_Qq-9mAgeQu3jiA
+ repackage-l10n-bn-BD-linux64-nightly/opt: ZCh4JWwGSA-F1VP3Qn69Mw
+ repackage-l10n-bn-BD-macosx64-nightly/opt: YN5ogj6eQDKShzIfjdKyKw
+ repackage-l10n-bn-BD-win32-nightly/opt: Q7TR9jwaSmqU4UzGrlR8PA
+ repackage-l10n-bn-BD-win64-nightly/opt: YC_tfgLjRMKHAP4giBQOPQ
+ repackage-l10n-bn-IN-linux-nightly/opt: d8Mw0BxvRQyKq7K3oY4_bw
+ repackage-l10n-bn-IN-linux64-nightly/opt: BCNxZWrMS_22_i29--8bNA
+ repackage-l10n-bn-IN-macosx64-nightly/opt: aLrCWBdlTFqipqjAS1Lo5Q
+ repackage-l10n-bn-IN-win32-nightly/opt: XGJ0ftKSQC6swSVJY4YVFw
+ repackage-l10n-bn-IN-win64-nightly/opt: Dm7HCGXXRXSXCKJXUXs7IQ
+ repackage-l10n-br-linux-nightly/opt: c6i7gvzGRDGh5lEwgIQsnA
+ repackage-l10n-br-linux64-nightly/opt: VRkWJ3C_QPOaK529thIIpA
+ repackage-l10n-br-macosx64-nightly/opt: GnP0xnT9QbaKRPeiivYzSw
+ repackage-l10n-br-win32-nightly/opt: GT3fr8dcSvSE80X56unNYg
+ repackage-l10n-br-win64-nightly/opt: cWbHbIiGSNqQO7LRcGSVqA
+ repackage-l10n-bs-linux-nightly/opt: O_Ti4LrkTZ2Q6jCUI__imw
+ repackage-l10n-bs-linux64-nightly/opt: L6pDqX-JQQ6c3c9EtuD8Ew
+ repackage-l10n-bs-macosx64-nightly/opt: DpGNpG4wScuujYTuV62U7A
+ repackage-l10n-bs-win32-nightly/opt: S88zC66VQbWeo_JzsHlJKQ
+ repackage-l10n-bs-win64-nightly/opt: NHDIAzWIS8aECl1K_FayAA
+ repackage-l10n-ca-linux-nightly/opt: PuCSLKzNQ76nDo1Wt04JHQ
+ repackage-l10n-ca-linux64-nightly/opt: P75THLYiTk6lBHg8CcvE0Q
+ repackage-l10n-ca-macosx64-nightly/opt: fr8z-mToTi2XdptPXTD4mQ
+ repackage-l10n-ca-win32-nightly/opt: EhJ7wmykQZWkdrxW7y73lQ
+ repackage-l10n-ca-win64-nightly/opt: AKI14rTHQ-uvjN0geu4rrQ
+ repackage-l10n-cak-linux-nightly/opt: KfFcUXTHQYOCrzpkG7WvSg
+ repackage-l10n-cak-linux64-nightly/opt: MfsG05qhRsmgAlmbhg2O8g
+ repackage-l10n-cak-macosx64-nightly/opt: DoqZDK43QAmCGqBfFv-PkA
+ repackage-l10n-cak-win32-nightly/opt: Aqa9ZGIxQWKzKVjmk0FCgA
+ repackage-l10n-cak-win64-nightly/opt: Y9w11m6mSfyNoeVW3y89yg
+ repackage-l10n-cs-linux-nightly/opt: XfDp08tySk2m0XxrVB9LbA
+ repackage-l10n-cs-linux64-nightly/opt: PWoOVoaRRku_yOtwy0-11Q
+ repackage-l10n-cs-macosx64-nightly/opt: RYTguRoHRXaDoqpgCBVkvA
+ repackage-l10n-cs-win32-nightly/opt: eGc7RQkESxetIrTkGLnA5Q
+ repackage-l10n-cs-win64-nightly/opt: MaK5m5akSiKTvMgS5COisQ
+ repackage-l10n-cy-linux-nightly/opt: MMXRhIMfSn-jtaxalFwywA
+ repackage-l10n-cy-linux64-nightly/opt: WxoNskaySoWuf3JdBYJcOw
+ repackage-l10n-cy-macosx64-nightly/opt: RrzTnM33T4iTeQqky2HgJQ
+ repackage-l10n-cy-win32-nightly/opt: H5a4CGP3RIaNkMxDJVLN-g
+ repackage-l10n-cy-win64-nightly/opt: FQgwyR8mScCdAEs8TP4QIA
+ repackage-l10n-da-linux-nightly/opt: LF9lJhWrRU--hGGO9cCy1Q
+ repackage-l10n-da-linux64-nightly/opt: O6OHPZuuQm-9_G_5R44jvw
+ repackage-l10n-da-macosx64-nightly/opt: YswzIJpXSi6-B7y0-ZBtIg
+ repackage-l10n-da-win32-nightly/opt: OP2FEQ4gRXCYIWGaHfCYeA
+ repackage-l10n-da-win64-nightly/opt: ceL9h9UHQVKM1I69JYBJdQ
+ repackage-l10n-de-linux-nightly/opt: A92o9QDMR_GMPp5tlxGLMg
+ repackage-l10n-de-linux64-nightly/opt: T-lIOpozSDeHvT32dNnpoQ
+ repackage-l10n-de-macosx64-nightly/opt: PaJTczTcSoiiLYu2QPtTjA
+ repackage-l10n-de-win32-nightly/opt: FmqQok4kRgGn2hfGuGrhug
+ repackage-l10n-de-win64-nightly/opt: Tr6qa8P1QXme0-xuuXMgWw
+ repackage-l10n-dsb-linux-nightly/opt: Zld8k105TtqqJJTsUqXkHA
+ repackage-l10n-dsb-linux64-nightly/opt: ZUvt8V9jQ8uYVW-aZJeXYw
+ repackage-l10n-dsb-macosx64-nightly/opt: GHc47jAMQWKrNPV1OBwo9w
+ repackage-l10n-dsb-win32-nightly/opt: cpImhCbsRsOfjWhNEHB0WA
+ repackage-l10n-dsb-win64-nightly/opt: YKs4Hl8tQeGUM3odUbyYvw
+ repackage-l10n-el-linux-nightly/opt: GNKtKFo1Sj6bMjYTKBo_pw
+ repackage-l10n-el-linux64-nightly/opt: I-rpP_sKTY2dBy-0Fq4G4Q
+ repackage-l10n-el-macosx64-nightly/opt: VjCdtkNeTRaGDd105qZPjg
+ repackage-l10n-el-win32-nightly/opt: IQf5EguNQIe4XQBJTH8Nkg
+ repackage-l10n-el-win64-nightly/opt: ZYZqYJvrSmWrnkUYosZIwQ
+ repackage-l10n-en-CA-linux-nightly/opt: RO2hng9HSSmkLDqVdRwkmg
+ repackage-l10n-en-CA-linux64-nightly/opt: S8ItT_NrT46_bwW8kopHvg
+ repackage-l10n-en-CA-macosx64-nightly/opt: W_jvCH29T2qdCQL4EQV2CQ
+ repackage-l10n-en-CA-win32-nightly/opt: b7FmPW5_Rfm3WGB3wRE4QQ
+ repackage-l10n-en-CA-win64-nightly/opt: GupW3UV8TFOh2IzByX498Q
+ repackage-l10n-en-GB-linux-nightly/opt: Dq-kqy77RG6vIIigTFiJow
+ repackage-l10n-en-GB-linux64-nightly/opt: CVZFytZXQ0GVxhz3k02TVQ
+ repackage-l10n-en-GB-macosx64-nightly/opt: MGas6hP8QFOmdBXoPss8Xw
+ repackage-l10n-en-GB-win32-nightly/opt: dguTVzBpTtCX9gfojo8nyA
+ repackage-l10n-en-GB-win64-nightly/opt: fZzjov6YSPWokzgmSOpReg
+ repackage-l10n-en-ZA-linux-nightly/opt: KJ2cCdxXRv-TkxYjtxDaVg
+ repackage-l10n-en-ZA-linux64-nightly/opt: Yk-FV1ZSQPuywvTi6WQa1g
+ repackage-l10n-en-ZA-macosx64-nightly/opt: Gu91jYH7QfeoX3KCvQzF5g
+ repackage-l10n-en-ZA-win32-nightly/opt: AmGY-ORMROyqBJkoD9imgQ
+ repackage-l10n-en-ZA-win64-nightly/opt: c0Oy_K_ESaWoaaGIBizU7g
+ repackage-l10n-eo-linux-nightly/opt: CwTCkmaLRiGZG1cWqtr8mg
+ repackage-l10n-eo-linux64-nightly/opt: G9SXSN0SSq6BO9Pa044_kg
+ repackage-l10n-eo-macosx64-nightly/opt: ezBNLgrZR0yQ8R-BS0U23Q
+ repackage-l10n-eo-win32-nightly/opt: NUJlScuAS7uPeGgVFSkRgQ
+ repackage-l10n-eo-win64-nightly/opt: COKF8SNFRZaNKwUS0_lRAw
+ repackage-l10n-es-AR-linux-nightly/opt: bgImvIYrQ0WLvwMdXnM4gg
+ repackage-l10n-es-AR-linux64-nightly/opt: DkGC2CKVTt2o-fZI7Yx0TA
+ repackage-l10n-es-AR-macosx64-nightly/opt: bbi8upTvT-u14G8kDO9uZg
+ repackage-l10n-es-AR-win32-nightly/opt: KoqkENbqRuKe0xe0D0N8Kg
+ repackage-l10n-es-AR-win64-nightly/opt: Ikswh3u4RyOWP2bzcrYIMg
+ repackage-l10n-es-CL-linux-nightly/opt: JWSmcpglSx2C2HwgBNP27Q
+ repackage-l10n-es-CL-linux64-nightly/opt: NmyR0rzKRkKg2W3PSb8QYQ
+ repackage-l10n-es-CL-macosx64-nightly/opt: E1G4WJbNR0WivXVZfVyBLg
+ repackage-l10n-es-CL-win32-nightly/opt: PdyqNQRQT2-aEKmTxRM5tA
+ repackage-l10n-es-CL-win64-nightly/opt: MOBCru2nR_q7vPA4DHStAQ
+ repackage-l10n-es-ES-linux-nightly/opt: dDndQQ2ZS--ZT8QN4w8-4w
+ repackage-l10n-es-ES-linux64-nightly/opt: GVs4HNSVTiOn8TWlGoPCPQ
+ repackage-l10n-es-ES-macosx64-nightly/opt: WiU5MFN-S4mKJvItIW8mBA
+ repackage-l10n-es-ES-win32-nightly/opt: UoG3BxAoQgqhQtLLdsYDQw
+ repackage-l10n-es-ES-win64-nightly/opt: F4jpif1WSCi9QzQuLsJ7aA
+ repackage-l10n-es-MX-linux-nightly/opt: ZtI_Vyh6TRKieOLHnVIFsA
+ repackage-l10n-es-MX-linux64-nightly/opt: FYrRlK72SkmjTLRCimu0fg
+ repackage-l10n-es-MX-macosx64-nightly/opt: IIoP1F7mSvC-ptSUO1eq-g
+ repackage-l10n-es-MX-win32-nightly/opt: Fk_1fqkPRIiJneHmXiVJNA
+ repackage-l10n-es-MX-win64-nightly/opt: cUp2QlU3TIuqAfNXLijpUA
+ repackage-l10n-et-linux-nightly/opt: ChUvzCWnTAqp6j3_RNhLow
+ repackage-l10n-et-linux64-nightly/opt: fET6B3cEQg25Yg9v_Mzhxg
+ repackage-l10n-et-macosx64-nightly/opt: LI4aOCIMSNK4pct7nAe3Vg
+ repackage-l10n-et-win32-nightly/opt: cSMaQXeMSr6kU_IECr_lFA
+ repackage-l10n-et-win64-nightly/opt: NMY6uN17SIOypJSEIwbM8Q
+ repackage-l10n-eu-linux-nightly/opt: D3iUIsf2Sk-BuVRjIc8p1w
+ repackage-l10n-eu-linux64-nightly/opt: JBnGk7xHQGS175oI09QxsA
+ repackage-l10n-eu-macosx64-nightly/opt: cAtYORc6SvSyFqavNP8gmw
+ repackage-l10n-eu-win32-nightly/opt: HyV8p7A1QW62cdLhzwSQ7g
+ repackage-l10n-eu-win64-nightly/opt: JMZfsItARN2l02Ncg7T7sw
+ repackage-l10n-fa-linux-nightly/opt: EYihBtCwQbmTx1PmwDFGLA
+ repackage-l10n-fa-linux64-nightly/opt: TpLbxyJEQUuGO6VwqYAlaw
+ repackage-l10n-fa-macosx64-nightly/opt: JPwCyPjjR0S-dyAuCMsYAg
+ repackage-l10n-fa-win32-nightly/opt: TzCchZHlQ9GpsErijwtWXw
+ repackage-l10n-fa-win64-nightly/opt: O5uZYdQ_TNuVB19swleNNQ
+ repackage-l10n-ff-linux-nightly/opt: Nlcy8Vg-ST-Mbq7ZdBRA8g
+ repackage-l10n-ff-linux64-nightly/opt: ILl2BWuoSXi1qpfeOE0A9g
+ repackage-l10n-ff-macosx64-nightly/opt: IJi_wTpIRMaIbx5JvjZogg
+ repackage-l10n-ff-win32-nightly/opt: C73m675jQE-gOqiq1FuBxA
+ repackage-l10n-ff-win64-nightly/opt: WagGyt7XQE65r_DD0vkYjw
+ repackage-l10n-fi-linux-nightly/opt: N04kLsTgQfiV-Vxz6GOCZQ
+ repackage-l10n-fi-linux64-nightly/opt: NIVLyHvARSuM1UP1DLnLmw
+ repackage-l10n-fi-macosx64-nightly/opt: KTJUJ6rzQf2FPU1Q6t4jzw
+ repackage-l10n-fi-win32-nightly/opt: W2-b5DuFQLWHQQYMk1zqug
+ repackage-l10n-fi-win64-nightly/opt: D13g_q_sTQeRhHfBE58r-A
+ repackage-l10n-fr-linux-nightly/opt: FbHy8bRfQZa2GMlbyC1D-Q
+ repackage-l10n-fr-linux64-nightly/opt: LvRquCmISBKHNT2VdGfNYQ
+ repackage-l10n-fr-macosx64-nightly/opt: VxCyyTI1S7O1dhGtI8sFWw
+ repackage-l10n-fr-win32-nightly/opt: bkDJcw4wRBidcFvDWGeh7Q
+ repackage-l10n-fr-win64-nightly/opt: WyXjchpUTXiphvF9z_XtaA
+ repackage-l10n-fy-NL-linux-nightly/opt: UBwEdm4yTlGMK0yzzlp-eg
+ repackage-l10n-fy-NL-linux64-nightly/opt: CCH18ef6QcyA-Ed1dPudBw
+ repackage-l10n-fy-NL-macosx64-nightly/opt: djZ1O9cvSg2OBkhdzbu7PQ
+ repackage-l10n-fy-NL-win32-nightly/opt: bRPNUU0oScGR6KM6QniVcg
+ repackage-l10n-fy-NL-win64-nightly/opt: G5VEGKpqTr6hYFDhuut9kA
+ repackage-l10n-ga-IE-linux-nightly/opt: KqI4_VuESam6cFj9c20K9A
+ repackage-l10n-ga-IE-linux64-nightly/opt: Tvlv2ScDTAOTsnjuN1OUDw
+ repackage-l10n-ga-IE-macosx64-nightly/opt: NxguYT2KRAu7oLt09GBDZg
+ repackage-l10n-ga-IE-win32-nightly/opt: dfGUvELjQ4mKaiN17b9jzw
+ repackage-l10n-ga-IE-win64-nightly/opt: D-JP0ck4QLSBLjie7gHiKg
+ repackage-l10n-gd-linux-nightly/opt: XIfQRrSKRLeNXhb2MPnclQ
+ repackage-l10n-gd-linux64-nightly/opt: OVfoZ4TUTba2mZOlBqKZ7w
+ repackage-l10n-gd-macosx64-nightly/opt: ar4BWqcLR8W9Eok-EuF-6w
+ repackage-l10n-gd-win32-nightly/opt: SuV4TBXrS3OudG-Qkqedgw
+ repackage-l10n-gd-win64-nightly/opt: QRVcaPrtRtWSVILDsjR6CA
+ repackage-l10n-gl-linux-nightly/opt: NRKe-_ezQBCVZtoIDcypQg
+ repackage-l10n-gl-linux64-nightly/opt: W4aRzxtCTWeTUG6MBSi7jg
+ repackage-l10n-gl-macosx64-nightly/opt: BovXfvvJQDSp07mbfqQq3g
+ repackage-l10n-gl-win32-nightly/opt: Som4AUNuTCSYnpD-kWEVeg
+ repackage-l10n-gl-win64-nightly/opt: EuQoWvCdTpejdsJXKKw57Q
+ repackage-l10n-gn-linux-nightly/opt: YzDa1YqjSUKCrQbLS8uGjA
+ repackage-l10n-gn-linux64-nightly/opt: RA3FNaekRaSzmryaRaZQSg
+ repackage-l10n-gn-macosx64-nightly/opt: M8Uog5bsQLOxVJWdQxdd3A
+ repackage-l10n-gn-win32-nightly/opt: XpjgkzadRlyf9qqk6ZuPsQ
+ repackage-l10n-gn-win64-nightly/opt: buShETCwS8mKiygN0u7DxQ
+ repackage-l10n-gu-IN-linux-nightly/opt: HerJYHB0TNeChFe6n3QkcA
+ repackage-l10n-gu-IN-linux64-nightly/opt: dbCT_cX7SYWkD7KHPNexeA
+ repackage-l10n-gu-IN-macosx64-nightly/opt: P8sTgN54TzufPYnhlzDU4A
+ repackage-l10n-gu-IN-win32-nightly/opt: Aa1NWhouRISrkqy8KNOpEg
+ repackage-l10n-gu-IN-win64-nightly/opt: E3llJ_QxTvOQPb3NW5NMJA
+ repackage-l10n-he-linux-nightly/opt: dDUyzraJSFC0EpQWLkqSXg
+ repackage-l10n-he-linux64-nightly/opt: KGx_mFUgSeSS0NCMHJwzEw
+ repackage-l10n-he-macosx64-nightly/opt: ZdQqpj7SRpGCcwW8TWu-8w
+ repackage-l10n-he-win32-nightly/opt: ay4pdRduSruJAp17B8qxvw
+ repackage-l10n-he-win64-nightly/opt: EDOTOXnwTrqIg_su5zQD7w
+ repackage-l10n-hi-IN-linux-nightly/opt: Li-dDxMjQSOsbU5So7FB5Q
+ repackage-l10n-hi-IN-linux64-nightly/opt: CTrGQcjjROi6TSBdGTE_JQ
+ repackage-l10n-hi-IN-macosx64-nightly/opt: T8jhSlVFRAmUOjDpBojMiw
+ repackage-l10n-hi-IN-win32-nightly/opt: T4bK8FauQOu054sUE657-g
+ repackage-l10n-hi-IN-win64-nightly/opt: Lxe8dskSSoiGDyRZQjnNgQ
+ repackage-l10n-hr-linux-nightly/opt: HfTjp97pR5-Q8KJrvjbKiA
+ repackage-l10n-hr-linux64-nightly/opt: GJmK34IQRIugEuqVmO06YQ
+ repackage-l10n-hr-macosx64-nightly/opt: X7SiA3GqSnGrM05OofErZQ
+ repackage-l10n-hr-win32-nightly/opt: bl8m7YBdQSedrfgsbQGzHA
+ repackage-l10n-hr-win64-nightly/opt: ayyeeUejSme1mmNOgtATfg
+ repackage-l10n-hsb-linux-nightly/opt: e8fpZptWQJuqrZSbIGi-Gw
+ repackage-l10n-hsb-linux64-nightly/opt: fP99sIBXTBaQdbi39HOhYw
+ repackage-l10n-hsb-macosx64-nightly/opt: IRSV88MBToyN1kkwoV-GIA
+ repackage-l10n-hsb-win32-nightly/opt: OTX-JxPmRLWxCAJ4Vs8ReQ
+ repackage-l10n-hsb-win64-nightly/opt: PBm9Fne1QF-sG5WRLlUetA
+ repackage-l10n-hu-linux-nightly/opt: VvT_7qPSSnG8PlNv1WbZ0w
+ repackage-l10n-hu-linux64-nightly/opt: S35M9lKqTt2StmJ1dLQD9w
+ repackage-l10n-hu-macosx64-nightly/opt: Atm7cEEqQFGSVjAs-wvs4Q
+ repackage-l10n-hu-win32-nightly/opt: A7gFbJSGSNSC8lot94Q-Pw
+ repackage-l10n-hu-win64-nightly/opt: WDjLgwYdQ_OGiPFvvSxlKA
+ repackage-l10n-hy-AM-linux-nightly/opt: YnEgGz7DSjiQD_2azaRUDw
+ repackage-l10n-hy-AM-linux64-nightly/opt: EL27o_rfRuqD54M76lXKOg
+ repackage-l10n-hy-AM-macosx64-nightly/opt: YJmtHf_7RcilxeC481NPhQ
+ repackage-l10n-hy-AM-win32-nightly/opt: eTlE_u5yR7eR6S2SDDCeUQ
+ repackage-l10n-hy-AM-win64-nightly/opt: WNjU1zsdQ7O2wgTZoiDqrQ
+ repackage-l10n-ia-linux-nightly/opt: WqrpxiX-REGU3I96XkO8IQ
+ repackage-l10n-ia-linux64-nightly/opt: P2zZyIEgRtWJ-xPS1_SluA
+ repackage-l10n-ia-macosx64-nightly/opt: VYEBVdDiQPufxIPFQ8gM4g
+ repackage-l10n-ia-win32-nightly/opt: JkDvhGE3QjGQZ8FxC9-6eQ
+ repackage-l10n-ia-win64-nightly/opt: UB97NWa5ToqxGAGBQkNQDQ
+ repackage-l10n-id-linux-nightly/opt: Aeahgf_7RBKTM46VDx1vfA
+ repackage-l10n-id-linux64-nightly/opt: JUbN84Z9TAqgqmhFySiHGQ
+ repackage-l10n-id-macosx64-nightly/opt: RswHlXRbQ7qiymYMhD3kug
+ repackage-l10n-id-win32-nightly/opt: fdTSsrbCR0uC4U89Rn0hQw
+ repackage-l10n-id-win64-nightly/opt: TPNWeZHIT2-UtjJpMdo6gg
+ repackage-l10n-is-linux-nightly/opt: Ye8dCdcHSharN0rkGdyOVQ
+ repackage-l10n-is-linux64-nightly/opt: QjkBs73MQGOv4KPv0nCPxQ
+ repackage-l10n-is-macosx64-nightly/opt: cFnFKiScR5uKvqAtwaPbYg
+ repackage-l10n-is-win32-nightly/opt: N56VRfojSmWioHKczLKbgg
+ repackage-l10n-is-win64-nightly/opt: ZoGeD24bTFKiS_efoSP8eA
+ repackage-l10n-it-linux-nightly/opt: Fr_kN5DqR2GnU5jF5dxp6Q
+ repackage-l10n-it-linux64-nightly/opt: NrLsuSrUSIWvKdDWklGCKQ
+ repackage-l10n-it-macosx64-nightly/opt: dsGoWvviSeyWfxNPWAGWzw
+ repackage-l10n-it-win32-nightly/opt: LEdmTOgvQ22Wd6aCfJTaPA
+ repackage-l10n-it-win64-nightly/opt: TJGAHaIIT82W5xLMMD1BQw
+ repackage-l10n-ja-JP-mac-macosx64-nightly/opt: HWRSUJ85RPqZJPNtI_0OJQ
+ repackage-l10n-ja-linux-nightly/opt: FJZeyHb-Sx2Wfe4E5G0FOg
+ repackage-l10n-ja-linux64-nightly/opt: W3yklSh4Qua7DXoehwq9qw
+ repackage-l10n-ja-win32-nightly/opt: cW_Sg9lYTMqvEkFqRX8uNQ
+ repackage-l10n-ja-win64-nightly/opt: MypX9zniT6aoJm98B9gHhw
+ repackage-l10n-ka-linux-nightly/opt: KhFfJ7KCS9C0n0JGRQIOBQ
+ repackage-l10n-ka-linux64-nightly/opt: UkTbeplUSr-qCQH6CjCGLw
+ repackage-l10n-ka-macosx64-nightly/opt: L98oZXV7TcW3ImsnzqGSBA
+ repackage-l10n-ka-win32-nightly/opt: IVS4K7plQsatHxvyDr4HOw
+ repackage-l10n-ka-win64-nightly/opt: FfYgzqsCQ9OhhHt1Iru7Wg
+ repackage-l10n-kab-linux-nightly/opt: Fl5vxGWfSo6mvrRwhrwvNQ
+ repackage-l10n-kab-linux64-nightly/opt: b4vXRNtKSTmNDLOuSCwdNA
+ repackage-l10n-kab-macosx64-nightly/opt: ECTTMt9ZRjC0Z_vA99goGQ
+ repackage-l10n-kab-win32-nightly/opt: KxtqMoPORzKvQfvxEQZX7g
+ repackage-l10n-kab-win64-nightly/opt: Gn3DU7vFTP6IGakpITCP3A
+ repackage-l10n-kk-linux-nightly/opt: GBJ7GmoLQhmVYK9e4-K5zA
+ repackage-l10n-kk-linux64-nightly/opt: b9QUorz5SYWVkRuNFZR8qw
+ repackage-l10n-kk-macosx64-nightly/opt: f7mWJVelQHqbYYPUNNg_QQ
+ repackage-l10n-kk-win32-nightly/opt: LwDE5j-ZSJ6ktqJ8-ASUuQ
+ repackage-l10n-kk-win64-nightly/opt: HbPObXUGSKK2XHChybaiQQ
+ repackage-l10n-km-linux-nightly/opt: M7GMEAF2TVajj4kHmca7UQ
+ repackage-l10n-km-linux64-nightly/opt: OsFJThNBReC4hT70G3WcNg
+ repackage-l10n-km-macosx64-nightly/opt: N9vqDGZQSQ6cR0vC67RYOA
+ repackage-l10n-km-win32-nightly/opt: dOLnMdDCRimKJWJhM14dOg
+ repackage-l10n-km-win64-nightly/opt: RVKTVdwITHma6HRNQIPsfg
+ repackage-l10n-kn-linux-nightly/opt: Aaea_KxeSuaevEDkR7Agiw
+ repackage-l10n-kn-linux64-nightly/opt: aCfE20MdTYyDfdN7PfEOXg
+ repackage-l10n-kn-macosx64-nightly/opt: Dwcz3UeJTMyeB8LmVHo9lg
+ repackage-l10n-kn-win32-nightly/opt: QxIY2WVHQsSiKZ8u9lIq9g
+ repackage-l10n-kn-win64-nightly/opt: dnlkyZbxSIeqPhVOFSWopQ
+ repackage-l10n-ko-linux-nightly/opt: f5eOpJWpQA-5mWYhXn05SA
+ repackage-l10n-ko-linux64-nightly/opt: EeSalDrkQUiGpzDScrfB7g
+ repackage-l10n-ko-macosx64-nightly/opt: NEqii-yXTo-J8WwzTTFaXg
+ repackage-l10n-ko-win32-nightly/opt: A9KF6wBJREmPL5euv9dHTA
+ repackage-l10n-ko-win64-nightly/opt: EorADmyKSf-cBTfvaVuLhA
+ repackage-l10n-lij-linux-nightly/opt: VTPTlDBkQiSJfcFCZbq2ng
+ repackage-l10n-lij-linux64-nightly/opt: WqZGbNwJRPaVFGv-nlco_A
+ repackage-l10n-lij-macosx64-nightly/opt: cZBjYaDATlaPshNKUTQ62Q
+ repackage-l10n-lij-win32-nightly/opt: QKBmFfkLSE2FF1QPLe47kA
+ repackage-l10n-lij-win64-nightly/opt: HNWydAavTN-CWXmuMh_PYQ
+ repackage-l10n-lt-linux-nightly/opt: IgeC1vZoRWaw0pdLojGLig
+ repackage-l10n-lt-linux64-nightly/opt: JlOv51ahQq24bh3jBPNc0A
+ repackage-l10n-lt-macosx64-nightly/opt: BMvTT-T3SSCsPjTP8I_3ww
+ repackage-l10n-lt-win32-nightly/opt: FRxEP5zYQVScciciqHi2Dw
+ repackage-l10n-lt-win64-nightly/opt: BRl-c7R9Qky0fWe8kAxeSQ
+ repackage-l10n-lv-linux-nightly/opt: RCJNFSYjRkywnqCmILpBPQ
+ repackage-l10n-lv-linux64-nightly/opt: YlZZWpxgRPG2EaHPeX5PZw
+ repackage-l10n-lv-macosx64-nightly/opt: SmMnWkEeSWqkNcJgFj6ZHw
+ repackage-l10n-lv-win32-nightly/opt: dmeLsTq5RVayST2DroeLww
+ repackage-l10n-lv-win64-nightly/opt: BupVR3UHQHuTJa56GUqv9w
+ repackage-l10n-mai-linux-nightly/opt: F2WbLUjBRQmbir-Ro9Sgkg
+ repackage-l10n-mai-linux64-nightly/opt: LE9YRY_CSDaA4YHw0tnQcA
+ repackage-l10n-mai-macosx64-nightly/opt: d0N1Y3UwSHyce_BJZg9lYg
+ repackage-l10n-mai-win32-nightly/opt: EEeb8aNjQq-L-SBZasRofA
+ repackage-l10n-mai-win64-nightly/opt: PaNvPZCXRoqjnRhCm3CjjA
+ repackage-l10n-mk-linux-nightly/opt: N6LvHid9QaOeU6EF-KDghg
+ repackage-l10n-mk-linux64-nightly/opt: fkKhy2e3Rtuh4L970B3TRQ
+ repackage-l10n-mk-macosx64-nightly/opt: ZUN_K612Qg2nOOZRndOPAQ
+ repackage-l10n-mk-win32-nightly/opt: J6ejcgdyRQSryOpxBG9fUg
+ repackage-l10n-mk-win64-nightly/opt: OJjYB8SVSEuj7gxPSoF_Og
+ repackage-l10n-ml-linux-nightly/opt: BjCmftxLRsS6rsm0T_SMuw
+ repackage-l10n-ml-linux64-nightly/opt: MVlT7Fy8QuuBZr3Ez1UYXw
+ repackage-l10n-ml-macosx64-nightly/opt: WVxeoggyR8K-QlOEuyndWw
+ repackage-l10n-ml-win32-nightly/opt: XdVEgSK-T6CqxXeguhb6FQ
+ repackage-l10n-ml-win64-nightly/opt: M4eBaLwtSfiOX-mUH9e85A
+ repackage-l10n-mr-linux-nightly/opt: YyBauZj0TW6BvgDmX5N4_w
+ repackage-l10n-mr-linux64-nightly/opt: ftzIaYVRQSePoWmC_1ZZ6A
+ repackage-l10n-mr-macosx64-nightly/opt: BpWcaQNpTpqi2M02EId72Q
+ repackage-l10n-mr-win32-nightly/opt: DceeRZrITj2vaxfWJtXyUA
+ repackage-l10n-mr-win64-nightly/opt: NcJ7v4OIS9asY92iUgISww
+ repackage-l10n-ms-linux-nightly/opt: KvF4Uf3sRoC3ndcTlDCq0Q
+ repackage-l10n-ms-linux64-nightly/opt: Rg5lx8h1SsiDcIAlgnNJ8g
+ repackage-l10n-ms-macosx64-nightly/opt: MfOcbnFqS1upre2Z4agwEQ
+ repackage-l10n-ms-win32-nightly/opt: OkVDCrNNQ_qbBTCkbQ_NjQ
+ repackage-l10n-ms-win64-nightly/opt: Hz5B48qzTFOFDkRp38nqmA
+ repackage-l10n-my-linux-nightly/opt: YL17OwlhTwu3xbZ79TBZjg
+ repackage-l10n-my-linux64-nightly/opt: LuDWcpQjRR-HYOdkSor7bg
+ repackage-l10n-my-macosx64-nightly/opt: KNbvYT5dSM6LfkyV0_Bkkg
+ repackage-l10n-my-win32-nightly/opt: Ro9VJpdAT8aC3JmTfCvpWw
+ repackage-l10n-my-win64-nightly/opt: dqEYijiSRPaLBL0iRUCayQ
+ repackage-l10n-nb-NO-linux-nightly/opt: OVMbwXoiRxiczYnho2AC4g
+ repackage-l10n-nb-NO-linux64-nightly/opt: dMlMfl2pT0W4J844uxxjUQ
+ repackage-l10n-nb-NO-macosx64-nightly/opt: axmkh8kLRtOY_3gdZI_Pjg
+ repackage-l10n-nb-NO-win32-nightly/opt: WKjr9IL8QwGRJCdoKiGdlg
+ repackage-l10n-nb-NO-win64-nightly/opt: AmjTR2sGRqWR2Bcpr8mSxw
+ repackage-l10n-ne-NP-linux-nightly/opt: GzkoVhd5RP--nqw9GdXN2w
+ repackage-l10n-ne-NP-linux64-nightly/opt: YnMFAQwuTMORbfctoIiPpg
+ repackage-l10n-ne-NP-macosx64-nightly/opt: ae2tGGyVRJGHVFV1JxLlGQ
+ repackage-l10n-ne-NP-win32-nightly/opt: eoUGTVRjRHy58YDu4dGKiA
+ repackage-l10n-ne-NP-win64-nightly/opt: QoSrC6YBQYOLVEzRJOpsMA
+ repackage-l10n-nl-linux-nightly/opt: cv2K4ELWRxK4Us1U02dVmg
+ repackage-l10n-nl-linux64-nightly/opt: Uok_JW_4SXWKKGshzXWtGg
+ repackage-l10n-nl-macosx64-nightly/opt: Yb4uVuTvQm6BV8y84I47iQ
+ repackage-l10n-nl-win32-nightly/opt: LKOZWCopR2Wi0yS4sqPQCw
+ repackage-l10n-nl-win64-nightly/opt: cDA2zSsdRJWDLCZutCfaRg
+ repackage-l10n-nn-NO-linux-nightly/opt: AbME5EJmRp2smau6aqTJVQ
+ repackage-l10n-nn-NO-linux64-nightly/opt: O1h7vs1NSW659-FT7dJ6_A
+ repackage-l10n-nn-NO-macosx64-nightly/opt: eZoqTdn_SHuDldKcR72Ppg
+ repackage-l10n-nn-NO-win32-nightly/opt: OYiWivG7RJybhTDpxxEZKg
+ repackage-l10n-nn-NO-win64-nightly/opt: aGc1xo5GSyCqISiRjJTV8w
+ repackage-l10n-oc-linux-nightly/opt: CSrSF_4yRY-DsdH2GL-fyA
+ repackage-l10n-oc-linux64-nightly/opt: QW9045zlQ6WYwNSxZLConA
+ repackage-l10n-oc-macosx64-nightly/opt: cR_m6L_qRzeDQEDn0S1PGg
+ repackage-l10n-oc-win32-nightly/opt: XF5cPuQWT_-4GwmOAIPY0w
+ repackage-l10n-oc-win64-nightly/opt: YbhQ-bezQaSD8y3Pobu6kA
+ repackage-l10n-or-linux-nightly/opt: ZBWXcEx_RNWCaBlR05o2TA
+ repackage-l10n-or-linux64-nightly/opt: eQCUACcXQiC-6btbGAwlqQ
+ repackage-l10n-or-macosx64-nightly/opt: TdDrwu7DSqy7LmgZ7QYebA
+ repackage-l10n-or-win32-nightly/opt: Ak8KFrG5TXiFmpVVaHtwHA
+ repackage-l10n-or-win64-nightly/opt: KKFqFUXqSkio5Kg_2L7H5g
+ repackage-l10n-pa-IN-linux-nightly/opt: e129_f6tT-2XIHbfmKNncA
+ repackage-l10n-pa-IN-linux64-nightly/opt: HNSL3KH2TZagkfJ8TsvYQw
+ repackage-l10n-pa-IN-macosx64-nightly/opt: SfIoh5xqT_e3oBVdjrbBzA
+ repackage-l10n-pa-IN-win32-nightly/opt: MEK3RPR4Tfa6Okg2CDqHOw
+ repackage-l10n-pa-IN-win64-nightly/opt: IYlg76WVRcqCbbcVpolJrA
+ repackage-l10n-pl-linux-nightly/opt: R7IyWmKTR8S_UUvakjK8Vw
+ repackage-l10n-pl-linux64-nightly/opt: YoIMyeH-Qh6A_7wy92er7w
+ repackage-l10n-pl-macosx64-nightly/opt: GO_UKlybQA-7gQzSIYyBPw
+ repackage-l10n-pl-win32-nightly/opt: e9LB_TaUQb26eBkYdQHi7A
+ repackage-l10n-pl-win64-nightly/opt: MqTkCPK9QjmXHgA63HCh7A
+ repackage-l10n-pt-BR-linux-nightly/opt: OO4bxyenQRyXbTV08LbL-A
+ repackage-l10n-pt-BR-linux64-nightly/opt: cQMmGNIITliO3gf8jsik3g
+ repackage-l10n-pt-BR-macosx64-nightly/opt: d_jhpGRZQA-oo4VeRK2jcQ
+ repackage-l10n-pt-BR-win32-nightly/opt: ZIgF4jeETqOiNwlw6500Jw
+ repackage-l10n-pt-BR-win64-nightly/opt: dwzicSkETzmnLciGZskPag
+ repackage-l10n-pt-PT-linux-nightly/opt: eH7_zUoZRuqeIzLovtIyeQ
+ repackage-l10n-pt-PT-linux64-nightly/opt: DICuRm5LQoOI9oknKbcpSg
+ repackage-l10n-pt-PT-macosx64-nightly/opt: Sxwwh50JSm2fRPfk_bhpVA
+ repackage-l10n-pt-PT-win32-nightly/opt: U0slPcj9TLOWk0dH_PcL2g
+ repackage-l10n-pt-PT-win64-nightly/opt: Co-uZyo9RS-6QKz10RwKfw
+ repackage-l10n-rm-linux-nightly/opt: Mw0z0B-iSt6EEh9dDmK1XA
+ repackage-l10n-rm-linux64-nightly/opt: HyZ4CA1gSES2kRfk9EQ1sg
+ repackage-l10n-rm-macosx64-nightly/opt: XQ36ofUdSrOaiP1CIWYU7g
+ repackage-l10n-rm-win32-nightly/opt: ENxorfjHSbeRc5ICV5akhQ
+ repackage-l10n-rm-win64-nightly/opt: Xo_lyazhTUeUigkI8OhTAw
+ repackage-l10n-ro-linux-nightly/opt: Rnee1W2_S9-fsvotWULwtA
+ repackage-l10n-ro-linux64-nightly/opt: Ia2EsaxfSG2Va5HqH_2JtA
+ repackage-l10n-ro-macosx64-nightly/opt: K66TNRdqTaqVJb22upqulg
+ repackage-l10n-ro-win32-nightly/opt: VLbpoIS1TV61zE21SKQbxw
+ repackage-l10n-ro-win64-nightly/opt: ZzV6qCY2QiSPfLjy1W0SMw
+ repackage-l10n-ru-linux-nightly/opt: LsFRtS3HQ4GzTeFqPULRpw
+ repackage-l10n-ru-linux64-nightly/opt: aZjpOd72RpmtGVkwHmJmyw
+ repackage-l10n-ru-macosx64-nightly/opt: PrX4pOtIRsGjTomIhMlAag
+ repackage-l10n-ru-win32-nightly/opt: B7KGW6zQRIa9m2Ilp2J3pQ
+ repackage-l10n-ru-win64-nightly/opt: XocHKkiJSv-kRUDk9Niakw
+ repackage-l10n-si-linux-nightly/opt: C9HZpuFBQhqdttyEFN01Iw
+ repackage-l10n-si-linux64-nightly/opt: DF_9EDVKQxCn5qaPLYuw9Q
+ repackage-l10n-si-macosx64-nightly/opt: fouYtqEMQlKvoRbGNSk9DA
+ repackage-l10n-si-win32-nightly/opt: F0LKyNFPR32bmL5G6vZxPg
+ repackage-l10n-si-win64-nightly/opt: GR_hQHOzRhOGKXYH0nz-pw
+ repackage-l10n-sk-linux-nightly/opt: SVLLpvKbRzKC4EpLdPB1rw
+ repackage-l10n-sk-linux64-nightly/opt: d95A59XISgm4cL8uQpu8lA
+ repackage-l10n-sk-macosx64-nightly/opt: ZyU486mYSAqoRGpXVr5DKA
+ repackage-l10n-sk-win32-nightly/opt: HFkIgsx9RmGgFcENqxlupQ
+ repackage-l10n-sk-win64-nightly/opt: LMJYnWSlTjirXjNvMryf1g
+ repackage-l10n-sl-linux-nightly/opt: XdYu83JNS6u2h7-KQnEISw
+ repackage-l10n-sl-linux64-nightly/opt: FKgGV9vnS8i-cyrOvu0nwg
+ repackage-l10n-sl-macosx64-nightly/opt: fplnbzMZRZORGkXtRAEijA
+ repackage-l10n-sl-win32-nightly/opt: HPvCtE1mQpKZNzM5Yodd0Q
+ repackage-l10n-sl-win64-nightly/opt: KjWrkT5vRLKyKxlJOdCG3w
+ repackage-l10n-son-linux-nightly/opt: SGOaQxQFQS6MzipCGMb1Fg
+ repackage-l10n-son-linux64-nightly/opt: bF4UTJLtTVeE2rLBb2OuFw
+ repackage-l10n-son-macosx64-nightly/opt: ewi198RnQdKry6X4qzdRuQ
+ repackage-l10n-son-win32-nightly/opt: bfqz1QWJQFSs9Im_oZURKA
+ repackage-l10n-son-win64-nightly/opt: XSw8QOGsTgOQ3JYQ8PRzCA
+ repackage-l10n-sq-linux-nightly/opt: S-2NblTdTp-JNRDm9DPlOQ
+ repackage-l10n-sq-linux64-nightly/opt: H9FsolZ3RR-OepCGiM8fDw
+ repackage-l10n-sq-macosx64-nightly/opt: JptCj9e6TwqCQ0-cvTk0nQ
+ repackage-l10n-sq-win32-nightly/opt: bFsf02LfSFWqk5rpkzYNCg
+ repackage-l10n-sq-win64-nightly/opt: dG5o_8p4Tcm2Sk1_wUFLOw
+ repackage-l10n-sr-linux-nightly/opt: DuLjnX6xTA-M1bh2SS_ptA
+ repackage-l10n-sr-linux64-nightly/opt: XQnmb-DjQHGEr7Xp42N54g
+ repackage-l10n-sr-macosx64-nightly/opt: WijMJD9bTJCvT0ftpOkHgQ
+ repackage-l10n-sr-win32-nightly/opt: HLiVMchHTiSWZC9l318X4g
+ repackage-l10n-sr-win64-nightly/opt: OL8oGxMCQ6qJNR0UzhNa3A
+ repackage-l10n-sv-SE-linux-nightly/opt: bIIItrogSU6pGhHkp9qb_Q
+ repackage-l10n-sv-SE-linux64-nightly/opt: BfzeNFLDRSCJmXQ1kMVKaw
+ repackage-l10n-sv-SE-macosx64-nightly/opt: Qc7i2OWFS0Kgj3Z7_SkNGA
+ repackage-l10n-sv-SE-win32-nightly/opt: OCUCZwPxR62YAOhRJ08zTw
+ repackage-l10n-sv-SE-win64-nightly/opt: Bo28uvBXRCOvciMUjkTa4Q
+ repackage-l10n-ta-linux-nightly/opt: FOBMy2dtS5afzNpx05-rYg
+ repackage-l10n-ta-linux64-nightly/opt: WkriWroZRNKE-NKfZFlMbQ
+ repackage-l10n-ta-macosx64-nightly/opt: QnbqiWEeTzOWKw9ShUdl8w
+ repackage-l10n-ta-win32-nightly/opt: QfaIfTegR5yfjw4ENJG5GA
+ repackage-l10n-ta-win64-nightly/opt: BfOSe7rpSn6JHJ4lRfnx5A
+ repackage-l10n-te-linux-nightly/opt: SnYbb3bWRWWksAPshcxUjQ
+ repackage-l10n-te-linux64-nightly/opt: U58C4Iv8Sx-Y9Aq2IXsYuQ
+ repackage-l10n-te-macosx64-nightly/opt: G_1EELSYQuyAzB9A3csvBw
+ repackage-l10n-te-win32-nightly/opt: fuUBPagwSw2UPjZWSqOxSA
+ repackage-l10n-te-win64-nightly/opt: aIyA8RSfTGW7XnFME6Xa5g
+ repackage-l10n-th-linux-nightly/opt: C6mWyhtkTe6jXIH_OJ1H-Q
+ repackage-l10n-th-linux64-nightly/opt: eyIrx-izRlWKffl85wIY7Q
+ repackage-l10n-th-macosx64-nightly/opt: LTwIuk3wQLqxtM7CBsH-Rw
+ repackage-l10n-th-win32-nightly/opt: NP8JuvFTTsiTBOtrgPhGbA
+ repackage-l10n-th-win64-nightly/opt: JrG7QlobSACd5-WW2FQdZA
+ repackage-l10n-tr-linux-nightly/opt: DJQpajaBTIi59c0zQUq2RA
+ repackage-l10n-tr-linux64-nightly/opt: SNBo9hNjR6CrW1_vMrJdig
+ repackage-l10n-tr-macosx64-nightly/opt: eHjj6UNEScOzV61G_eTKTQ
+ repackage-l10n-tr-win32-nightly/opt: XlxnDEXURhS_pCxqkRiVNw
+ repackage-l10n-tr-win64-nightly/opt: D-9aQDIyR8Wn0gKgMPGtYw
+ repackage-l10n-uk-linux-nightly/opt: Bo1J_7DMQDWUJCN1bBFZHg
+ repackage-l10n-uk-linux64-nightly/opt: DB-kHZjFR3GvYjeas_KHVw
+ repackage-l10n-uk-macosx64-nightly/opt: P3QhLSIxTDqgBP6PD9_KcQ
+ repackage-l10n-uk-win32-nightly/opt: WsBYsgIZSJiOX674U0Bgmw
+ repackage-l10n-uk-win64-nightly/opt: efaaKwJJTFGBeIlNhiCUHg
+ repackage-l10n-ur-linux-nightly/opt: a7_zVi-YSmq_rrw8_ZlR3Q
+ repackage-l10n-ur-linux64-nightly/opt: DX0rWZzwTPWOxqHrhHyrqA
+ repackage-l10n-ur-macosx64-nightly/opt: FH4jUbKySiW09eaFIvAm7g
+ repackage-l10n-ur-win32-nightly/opt: LWNTpMo-SIaQyKF2qmaatw
+ repackage-l10n-ur-win64-nightly/opt: WXcij_gSTimuGtkpoey0Ng
+ repackage-l10n-uz-linux-nightly/opt: Vm6Io74HTru5b8nOt19Aqw
+ repackage-l10n-uz-linux64-nightly/opt: ALG1qR27Q_yrW18FHqPRsw
+ repackage-l10n-uz-macosx64-nightly/opt: VwCNROBVSAaxkSxfC73jyw
+ repackage-l10n-uz-win32-nightly/opt: LknEL-m3TIuZEsSURWwCCw
+ repackage-l10n-uz-win64-nightly/opt: MGtV4GVCScW6J86bDn1MWg
+ repackage-l10n-vi-linux-nightly/opt: Rm1u8Iw4TbKYiFP3vJUsSA
+ repackage-l10n-vi-linux64-nightly/opt: Z_PbU86CSE6DYSDS0RTJGA
+ repackage-l10n-vi-macosx64-nightly/opt: W96ZZcUCS0aDdCb9-0OIhA
+ repackage-l10n-vi-win32-nightly/opt: Ca9SIhbNQlq6pnPBciC_Cg
+ repackage-l10n-vi-win64-nightly/opt: SpQJijEJTaWtM93Cb5JhQQ
+ repackage-l10n-xh-linux-nightly/opt: GZ8UYoYBS6WET3CiMtknLQ
+ repackage-l10n-xh-linux64-nightly/opt: IDl51PskQV-2Vu8Ax-4j7g
+ repackage-l10n-xh-macosx64-nightly/opt: OnIF72tQTR-AvO8LIsf6Rg
+ repackage-l10n-xh-win32-nightly/opt: O__L4JOOQmG7fQiAxUPn1g
+ repackage-l10n-xh-win64-nightly/opt: HfFRHqcuT86B_kSaXwOdQQ
+ repackage-l10n-zh-CN-linux-nightly/opt: NLNucfn3QOG6HP-hmZokew
+ repackage-l10n-zh-CN-linux64-nightly/opt: NIyH_N8lQxG4KBrtI-0C5g
+ repackage-l10n-zh-CN-macosx64-nightly/opt: KUNwvU8ZTVKVDtx804zCDQ
+ repackage-l10n-zh-CN-win32-nightly/opt: ZoWfzdicQtuW6Avo8tqkCw
+ repackage-l10n-zh-CN-win64-nightly/opt: crhHxmCSQd-4JHRZ8w4Fdw
+ repackage-l10n-zh-TW-linux-nightly/opt: ZdJDq5K1Tu2MW_oU2mDlnA
+ repackage-l10n-zh-TW-linux64-nightly/opt: HBCE8wT4QAmx7_PzMQC81A
+ repackage-l10n-zh-TW-macosx64-nightly/opt: ZYBrjx30S2OwzfWJKIzTdw
+ repackage-l10n-zh-TW-win32-nightly/opt: fUVNVY9ASXWh0jpeQFYWfw
+ repackage-l10n-zh-TW-win64-nightly/opt: YOiSIDw4S8aYT85CNFs4qA
+ repackage-linux-devedition-nightly/opt: Arj7FKKCQW69e48VzE_vmw
+ repackage-linux-nightly/opt: CyKdoPy8TsaMVctX6_fhgw
+ repackage-linux64-devedition-nightly/opt: JID74w9CRiOs9Jk3NWNjlg
+ repackage-linux64-nightly/opt: MnMQ3XqRTxCc7hbVLDKM0A
+ repackage-macosx64-devedition-nightly/opt: UU0aFcX7RFeeaOpr5XCtnw
+ repackage-macosx64-nightly/opt: G_aqbUCETm21mqoo7ytJVg
+ repackage-macosx64/opt: ZCv5yl_xRpinnb5yYHG6pQ
+ repackage-signing-l10n-ach-linux-nightly/opt: fAvC9v-XSLyJcrcpfwqZOw
+ repackage-signing-l10n-ach-linux64-nightly/opt: Vcv9E2lhSiGG2Cegj8KIew
+ repackage-signing-l10n-ach-macosx64-nightly/opt: AA89SyuTQLiwKmX489DQxA
+ repackage-signing-l10n-ach-win32-nightly/opt: EYCn4a0TQnyi2c7yc46ihQ
+ repackage-signing-l10n-ach-win64-nightly/opt: QS7WN3xeQ12urQGD3osz7w
+ repackage-signing-l10n-af-linux-nightly/opt: am-JImE0S0-r4C2-Ts37xQ
+ repackage-signing-l10n-af-linux64-nightly/opt: LVf3uAZ_SgegHwoqqsCwyA
+ repackage-signing-l10n-af-macosx64-nightly/opt: B4mc2R9YTECcx744jT5ZxA
+ repackage-signing-l10n-af-win32-nightly/opt: Q60fyODjRJWDkfVGtSGIaQ
+ repackage-signing-l10n-af-win64-nightly/opt: J4zfRenYQ_Ccvq7Pr4MfPw
+ repackage-signing-l10n-an-linux-nightly/opt: Ee2Br43vRjGEx-twKoqkVA
+ repackage-signing-l10n-an-linux64-nightly/opt: JiCbK76xS0KBXFTGM2Ikrg
+ repackage-signing-l10n-an-macosx64-nightly/opt: HY1J0vxQQvq8dD73IkgLDg
+ repackage-signing-l10n-an-win32-nightly/opt: LPid3B9tT_q18kCLR2ETuQ
+ repackage-signing-l10n-an-win64-nightly/opt: KL-EnxJcT8GJFwTkhnGE3g
+ repackage-signing-l10n-ar-linux-nightly/opt: IsMNN8fYSeuAwaPC-NBjNg
+ repackage-signing-l10n-ar-linux64-nightly/opt: YdAaaCeESzeOZJZhoU_FMA
+ repackage-signing-l10n-ar-macosx64-nightly/opt: FIWG4K0eRbmQqA09uzNkeg
+ repackage-signing-l10n-ar-win32-nightly/opt: c0OH4GtXSf6_a-_L1dmZDw
+ repackage-signing-l10n-ar-win64-nightly/opt: BLoCiPjISSuUPdCW4YWuhQ
+ repackage-signing-l10n-as-linux-nightly/opt: YEN4hgMlTwSH_xANAnCjEg
+ repackage-signing-l10n-as-linux64-nightly/opt: AY5cQf4hQJ2buzFOAKr87w
+ repackage-signing-l10n-as-macosx64-nightly/opt: P5dzdyn0SVK1vS5ZtG6pQw
+ repackage-signing-l10n-as-win32-nightly/opt: MSOAHn9VQ8yH2KUIarrDHg
+ repackage-signing-l10n-as-win64-nightly/opt: E3wSJw5BRnqSiHCWOtFxmw
+ repackage-signing-l10n-ast-linux-nightly/opt: Tnnfb3z1SDS4wlF8JkN3fA
+ repackage-signing-l10n-ast-linux64-nightly/opt: BJ-oW97DTXuIHYrtzUtEEQ
+ repackage-signing-l10n-ast-macosx64-nightly/opt: DdKMOQanTX6zibN387KZ8Q
+ repackage-signing-l10n-ast-win32-nightly/opt: Tr1FBxJHThaXQQCoYOYH0A
+ repackage-signing-l10n-ast-win64-nightly/opt: OJBRpZLkS8S_8uc00_7e6w
+ repackage-signing-l10n-az-linux-nightly/opt: CoA7XOfVQU-1aqtCxLkqfw
+ repackage-signing-l10n-az-linux64-nightly/opt: EA2HpsZZQ9qS4SGARaT3UA
+ repackage-signing-l10n-az-macosx64-nightly/opt: Etw7XdNPQU-bP0kmDMxHmQ
+ repackage-signing-l10n-az-win32-nightly/opt: DTAqU-5YRGScHpN5juWfDA
+ repackage-signing-l10n-az-win64-nightly/opt: T6BhjVuKRieM25d2Gp6-Ag
+ repackage-signing-l10n-be-linux-nightly/opt: bG09MC_ZRBeNm4cZDGMCEA
+ repackage-signing-l10n-be-linux64-nightly/opt: BXJpzNn0Qn2OU_KUM123VA
+ repackage-signing-l10n-be-macosx64-nightly/opt: AZCO-pbSR467nQBP8fxB1w
+ repackage-signing-l10n-be-win32-nightly/opt: V9LMRU3jR_6_YyBew8uo2Q
+ repackage-signing-l10n-be-win64-nightly/opt: UrmTQF0mTfq5LZlI8ntpYQ
+ repackage-signing-l10n-bg-linux-nightly/opt: EIM5cazgQOiGup2RVXkyTw
+ repackage-signing-l10n-bg-linux64-nightly/opt: bdiESmd2Tjy93v55aan7Sw
+ repackage-signing-l10n-bg-macosx64-nightly/opt: BvStobqwT3qZgpufMtiERw
+ repackage-signing-l10n-bg-win32-nightly/opt: fmn3N2msTuuvBOZ0xxJVuA
+ repackage-signing-l10n-bg-win64-nightly/opt: MwcrOu9ARumsoVjAa8SlGg
+ repackage-signing-l10n-bn-BD-linux-nightly/opt: cQ8DXc09QGaUuOR3OCTEVA
+ repackage-signing-l10n-bn-BD-linux64-nightly/opt: G9w4aKFRQOyqsdwY2Rxjmg
+ repackage-signing-l10n-bn-BD-macosx64-nightly/opt: SqjfJktvSeGPIFKENqg2hQ
+ repackage-signing-l10n-bn-BD-win32-nightly/opt: QUb2yI39TimxwOU_aWZsTQ
+ repackage-signing-l10n-bn-BD-win64-nightly/opt: YSg_a7PlRnmwjWNne90pZw
+ repackage-signing-l10n-bn-IN-linux-nightly/opt: WhJdTMn2Qc61S1IvTu9Wng
+ repackage-signing-l10n-bn-IN-linux64-nightly/opt: DeLYDeU4TTSdeCylUJX2lQ
+ repackage-signing-l10n-bn-IN-macosx64-nightly/opt: DV1Up2k2ROCkQOCvQ5sucQ
+ repackage-signing-l10n-bn-IN-win32-nightly/opt: ZWX7zun9Q3a8kCFXq_FGvw
+ repackage-signing-l10n-bn-IN-win64-nightly/opt: U8NFK_lWSUuosP3B0ZbVUA
+ repackage-signing-l10n-br-linux-nightly/opt: KG0SECCmRVGr1GIb_mseOQ
+ repackage-signing-l10n-br-linux64-nightly/opt: cIBNTZd_QEC2N6KYobb37A
+ repackage-signing-l10n-br-macosx64-nightly/opt: fBZp28bkTiG-rr2Nmdj9AA
+ repackage-signing-l10n-br-win32-nightly/opt: Pr_a2YYUST6y0tRqFKyfng
+ repackage-signing-l10n-br-win64-nightly/opt: Dp7uF75QTNSOgmm17dtMKg
+ repackage-signing-l10n-bs-linux-nightly/opt: GIY29le4RiqeaX4G33f6TA
+ repackage-signing-l10n-bs-linux64-nightly/opt: WgV6jv9yRJuBsxTPPQxd8Q
+ repackage-signing-l10n-bs-macosx64-nightly/opt: AQ0XYLyqQZmXU1mIFdTqgA
+ repackage-signing-l10n-bs-win32-nightly/opt: WLwkPj1wSJC1SyB_R4xmoQ
+ repackage-signing-l10n-bs-win64-nightly/opt: WHiqY6RHQSi8ZMhPvoGZLw
+ repackage-signing-l10n-ca-linux-nightly/opt: B7ETXAzbSP-pJU43PcsbPg
+ repackage-signing-l10n-ca-linux64-nightly/opt: ffj7REmzQFuTy5R48N3k5A
+ repackage-signing-l10n-ca-macosx64-nightly/opt: YQ0WddjLTSylYD-LN_J4Fw
+ repackage-signing-l10n-ca-win32-nightly/opt: eJZbY0VURN6iQZGvesJOtQ
+ repackage-signing-l10n-ca-win64-nightly/opt: FBzSCExGT1qGyYbuGznZdw
+ repackage-signing-l10n-cak-linux-nightly/opt: FECCg6xLQ3mCqifZljkjsA
+ repackage-signing-l10n-cak-linux64-nightly/opt: HXgAGOoWRWuR7lSDc1Stkg
+ repackage-signing-l10n-cak-macosx64-nightly/opt: EvIwe9S8SGSb42r4yVcXJA
+ repackage-signing-l10n-cak-win32-nightly/opt: Vax7C0UCRtGUfn284rqTZw
+ repackage-signing-l10n-cak-win64-nightly/opt: Q7W_ZDIgS4my0__KkIdycA
+ repackage-signing-l10n-cs-linux-nightly/opt: bFvM7CqXTXKBKcZePllGKQ
+ repackage-signing-l10n-cs-linux64-nightly/opt: GGdTDqvISnqKYHQuvxyTqA
+ repackage-signing-l10n-cs-macosx64-nightly/opt: exBXNztTSEGVluUGAPdUKw
+ repackage-signing-l10n-cs-win32-nightly/opt: Z_SSTQd9ToyIz7dh7L18_Q
+ repackage-signing-l10n-cs-win64-nightly/opt: FkT6jPX8R9KsRiN_qjbTvw
+ repackage-signing-l10n-cy-linux-nightly/opt: WDDoqBpZRx-hs2iIE5f1-A
+ repackage-signing-l10n-cy-linux64-nightly/opt: LZhIpSpRQVigRYby42F3aA
+ repackage-signing-l10n-cy-macosx64-nightly/opt: NZIO5NmXSv2rjcd5evXP_w
+ repackage-signing-l10n-cy-win32-nightly/opt: HKQck4vvR6aXWvrMzo-Mvg
+ repackage-signing-l10n-cy-win64-nightly/opt: AmVP2IJKS-SwqmCEP2DMeA
+ repackage-signing-l10n-da-linux-nightly/opt: embDNZtsR3-JZ0RxMvMZ4A
+ repackage-signing-l10n-da-linux64-nightly/opt: LEi5UmnoTUqTxgd3iIdUXw
+ repackage-signing-l10n-da-macosx64-nightly/opt: db1XS0qAQZ-HsGbgHc4PcQ
+ repackage-signing-l10n-da-win32-nightly/opt: VImlIRhBQ02G1Lf39liZXw
+ repackage-signing-l10n-da-win64-nightly/opt: YpyLBV8YQnS3mCfVa2UPRg
+ repackage-signing-l10n-de-linux-nightly/opt: OxMz2JgoS9uDmMvJoL_S9g
+ repackage-signing-l10n-de-linux64-nightly/opt: Bjf09fNwTteVe9HWaQdnlg
+ repackage-signing-l10n-de-macosx64-nightly/opt: JZ3X8RaXTNycGkgn1qXCiw
+ repackage-signing-l10n-de-win32-nightly/opt: UyQT6n5XQX-jcvp7SfI8RQ
+ repackage-signing-l10n-de-win64-nightly/opt: XI-EZLPnTBuFOthiIqEHKg
+ repackage-signing-l10n-dsb-linux-nightly/opt: cUbgJn7XRlaFkUzkr17FHQ
+ repackage-signing-l10n-dsb-linux64-nightly/opt: LZLYVtj6TVmmZgN2Z3uYCA
+ repackage-signing-l10n-dsb-macosx64-nightly/opt: LCO5Qr9HTtWj5P6FGWt9PA
+ repackage-signing-l10n-dsb-win32-nightly/opt: Kz7qIhSJQZC04Ss5AEvs3Q
+ repackage-signing-l10n-dsb-win64-nightly/opt: JLN5qdpIQKyEIXdHo7505Q
+ repackage-signing-l10n-el-linux-nightly/opt: HmjG_VhHQkO5kzkUaNdNRA
+ repackage-signing-l10n-el-linux64-nightly/opt: ZEfJdp6rRuW07gwNsELLvw
+ repackage-signing-l10n-el-macosx64-nightly/opt: em9DWRAvQOajAGy-syRAMA
+ repackage-signing-l10n-el-win32-nightly/opt: Dd0c5MPkRi64jaNdRHKcag
+ repackage-signing-l10n-el-win64-nightly/opt: MpN5_ySXR7SnEByPHRW7bQ
+ repackage-signing-l10n-en-CA-linux-nightly/opt: Y1RfVA46Q02RZlZAPcmuYA
+ repackage-signing-l10n-en-CA-linux64-nightly/opt: VC_Nipc9QpyRmVoCE6uBAg
+ repackage-signing-l10n-en-CA-macosx64-nightly/opt: de5nIASeRiSYuW9nn4su_g
+ repackage-signing-l10n-en-CA-win32-nightly/opt: WSusudwCTu2pgDfSpuoYNA
+ repackage-signing-l10n-en-CA-win64-nightly/opt: MpkzRo1TRL2G1GYNMTLhaA
+ repackage-signing-l10n-en-GB-linux-nightly/opt: XZrS8CPMQNKmYIIZMuVbAA
+ repackage-signing-l10n-en-GB-linux64-nightly/opt: Cvyc0ynEQciXutAejjvhQw
+ repackage-signing-l10n-en-GB-macosx64-nightly/opt: LI0GpvJ8T3S0Xua8xz1ATA
+ repackage-signing-l10n-en-GB-win32-nightly/opt: XcHCSDXXQCirDnGtGeEJlw
+ repackage-signing-l10n-en-GB-win64-nightly/opt: M-YRLPY4Q7SoUqCrMKzQFw
+ repackage-signing-l10n-en-ZA-linux-nightly/opt: eGZ3U8d_SkenPcNQ9M014g
+ repackage-signing-l10n-en-ZA-linux64-nightly/opt: E3QS042sRQS-CYm-0Rpykg
+ repackage-signing-l10n-en-ZA-macosx64-nightly/opt: YJEQ0J8wTxuxj1sPui6bjg
+ repackage-signing-l10n-en-ZA-win32-nightly/opt: PLpJM7lGTWG7gV5vrW-cFQ
+ repackage-signing-l10n-en-ZA-win64-nightly/opt: B_rzzxB4RpCzlzHlMGQ-iw
+ repackage-signing-l10n-eo-linux-nightly/opt: CVObj2zmQrSRQMLkuuMfFw
+ repackage-signing-l10n-eo-linux64-nightly/opt: N6yCt-x5RV2XWKWgNoCBkg
+ repackage-signing-l10n-eo-macosx64-nightly/opt: SIbU2KqQRFS9IesNFvn_8g
+ repackage-signing-l10n-eo-win32-nightly/opt: JUQqgb0QTZKaVNIm0Y-DfQ
+ repackage-signing-l10n-eo-win64-nightly/opt: VpPvf5B_TISpJykd72lE6w
+ repackage-signing-l10n-es-AR-linux-nightly/opt: QV5OAEc1QLyAo_H5q6Wa3g
+ repackage-signing-l10n-es-AR-linux64-nightly/opt: M_3_NBgiQCGiVOAJ2FMH4g
+ repackage-signing-l10n-es-AR-macosx64-nightly/opt: SRdYphzuRoG-8xRashlx8Q
+ repackage-signing-l10n-es-AR-win32-nightly/opt: Y05ckJtyRIufoiB-MfYm6g
+ repackage-signing-l10n-es-AR-win64-nightly/opt: URyztnYsSqq437UCCdeaVg
+ repackage-signing-l10n-es-CL-linux-nightly/opt: awFRPvBJSNC9epBZfMpSqw
+ repackage-signing-l10n-es-CL-linux64-nightly/opt: b0GI8a7rRuiZKwjHeNN6sw
+ repackage-signing-l10n-es-CL-macosx64-nightly/opt: NnLRv4iURJiT5WdymzjuVQ
+ repackage-signing-l10n-es-CL-win32-nightly/opt: Wp1NUM4hTHm2LKYEz-U3SQ
+ repackage-signing-l10n-es-CL-win64-nightly/opt: QtJWINsKRwCJ8zC1f_HPWw
+ repackage-signing-l10n-es-ES-linux-nightly/opt: BeiV8Ul2SoKtF7fckfqQPw
+ repackage-signing-l10n-es-ES-linux64-nightly/opt: WRskua4xQWawGoxS0NcViw
+ repackage-signing-l10n-es-ES-macosx64-nightly/opt: Jj8e62MXRWmYoKhshNM7_w
+ repackage-signing-l10n-es-ES-win32-nightly/opt: WJN6IKEkSSybnhWGvOO2Uw
+ repackage-signing-l10n-es-ES-win64-nightly/opt: SqUjd8tLQyW_gi1Om2ZjSA
+ repackage-signing-l10n-es-MX-linux-nightly/opt: YNBM3nbYQ5eu3qHW4VSSJQ
+ repackage-signing-l10n-es-MX-linux64-nightly/opt: VWR-e74tSo6Q4cA8vZY_pQ
+ repackage-signing-l10n-es-MX-macosx64-nightly/opt: PGxjjAkdRsqsxsbYJxv7kQ
+ repackage-signing-l10n-es-MX-win32-nightly/opt: VGnjDEE3Qaaqm7jhDO-t6Q
+ repackage-signing-l10n-es-MX-win64-nightly/opt: OmZSD6U5R-qweT7Uq1ViUA
+ repackage-signing-l10n-et-linux-nightly/opt: FR6X0YsCTvWC5g_NQcRUfw
+ repackage-signing-l10n-et-linux64-nightly/opt: bFMIGH9-SceXyaMyFVLnKg
+ repackage-signing-l10n-et-macosx64-nightly/opt: SjOCZW-eT6qNUX3--D3dpQ
+ repackage-signing-l10n-et-win32-nightly/opt: P1g6resMTU-f3e_5NE4G4A
+ repackage-signing-l10n-et-win64-nightly/opt: PNlOhZKnTYCAnKE-t9fUvA
+ repackage-signing-l10n-eu-linux-nightly/opt: Ur0dWGxKQamf725kzr0rPw
+ repackage-signing-l10n-eu-linux64-nightly/opt: PiLm411hRcu5uSTaYOPKGA
+ repackage-signing-l10n-eu-macosx64-nightly/opt: ZffeYcdRTjivgW9y_-fwqA
+ repackage-signing-l10n-eu-win32-nightly/opt: PZRfXzZbSqq6zTupcqcS1g
+ repackage-signing-l10n-eu-win64-nightly/opt: KDTOj9jPRneGVTsFFZ_fhQ
+ repackage-signing-l10n-fa-linux-nightly/opt: EnHWGU5vQHqAoi6CLm5MJA
+ repackage-signing-l10n-fa-linux64-nightly/opt: EXaPMxJERbG8rLnMj7ThMw
+ repackage-signing-l10n-fa-macosx64-nightly/opt: ZrDcqkOuSMC8jc86y83wBw
+ repackage-signing-l10n-fa-win32-nightly/opt: C70bd2c7QeOgl3sUwqajLg
+ repackage-signing-l10n-fa-win64-nightly/opt: H3gz0-W_S_OE4bDTgxn4aA
+ repackage-signing-l10n-ff-linux-nightly/opt: aFU5yQ0xQTOG3C6EqA2DnA
+ repackage-signing-l10n-ff-linux64-nightly/opt: D9LlLSK3Taq6aR7EFa3xJQ
+ repackage-signing-l10n-ff-macosx64-nightly/opt: ExMqoOc7RfOgynLUhefLvw
+ repackage-signing-l10n-ff-win32-nightly/opt: FBKUBTZTT6GJ5l76W5Wpqg
+ repackage-signing-l10n-ff-win64-nightly/opt: TQzZdsF0SDSqcYDcg7VF0Q
+ repackage-signing-l10n-fi-linux-nightly/opt: Im2MELuDS3ypYY4nhutNGQ
+ repackage-signing-l10n-fi-linux64-nightly/opt: Ybz5zYAHSICG7i1JEBrI0w
+ repackage-signing-l10n-fi-macosx64-nightly/opt: XKpTN4_WS56-a5uelNkk8g
+ repackage-signing-l10n-fi-win32-nightly/opt: FXL9FoFiSgCjJt_piKo3HA
+ repackage-signing-l10n-fi-win64-nightly/opt: H_n59Q1rRWWl2JrbpRiVPQ
+ repackage-signing-l10n-fr-linux-nightly/opt: dCsXvhruTiy_VVEGaO_g7Q
+ repackage-signing-l10n-fr-linux64-nightly/opt: Rf1GF6RSQi24jeXT1sng2A
+ repackage-signing-l10n-fr-macosx64-nightly/opt: Ov7BC2oGRqa2DN6Z1fqVUw
+ repackage-signing-l10n-fr-win32-nightly/opt: YvZQM4GbTmaWl2o8BwFNFA
+ repackage-signing-l10n-fr-win64-nightly/opt: ZcgljIn3RjSX7tzWDh0Wlg
+ repackage-signing-l10n-fy-NL-linux-nightly/opt: NaYI1w5FRvSYs9mzf69oOQ
+ repackage-signing-l10n-fy-NL-linux64-nightly/opt: WEGszjqcQraQzOohZHYBVA
+ repackage-signing-l10n-fy-NL-macosx64-nightly/opt: GXsPEBdfTMecJlY4uzHMfw
+ repackage-signing-l10n-fy-NL-win32-nightly/opt: WQ6Lc7_AR6ePWC_8OrfFWQ
+ repackage-signing-l10n-fy-NL-win64-nightly/opt: UnKjsArXSnuycIWOwICk5g
+ repackage-signing-l10n-ga-IE-linux-nightly/opt: HlanSStoSQisCfYjFJ304g
+ repackage-signing-l10n-ga-IE-linux64-nightly/opt: emJNUPLuTGiq1P1YsZqSow
+ repackage-signing-l10n-ga-IE-macosx64-nightly/opt: KB60jyxCRs2SgTuUXxIE7g
+ repackage-signing-l10n-ga-IE-win32-nightly/opt: cm-Zun5ORkS7nCnG-CF7xQ
+ repackage-signing-l10n-ga-IE-win64-nightly/opt: Oi8xiCkdTWixeQ83D5XQeQ
+ repackage-signing-l10n-gd-linux-nightly/opt: H0QhEvPSQQGqlPQ8mF3yiQ
+ repackage-signing-l10n-gd-linux64-nightly/opt: Vkoj_gZ6Rmm9Sfgj4GE-RQ
+ repackage-signing-l10n-gd-macosx64-nightly/opt: ZisYh3toT16YOhA_QO4JsQ
+ repackage-signing-l10n-gd-win32-nightly/opt: aSMT3jnGQkqRliES6VipGA
+ repackage-signing-l10n-gd-win64-nightly/opt: aD7k8NsBT3iUOntSvK-zyA
+ repackage-signing-l10n-gl-linux-nightly/opt: Nxl_JpQNQUyF_7XUmAVyag
+ repackage-signing-l10n-gl-linux64-nightly/opt: RmPK1DHwSCmOpD4NDqgC3g
+ repackage-signing-l10n-gl-macosx64-nightly/opt: LdAgA4mySNy_jDHSwg7l0Q
+ repackage-signing-l10n-gl-win32-nightly/opt: WrdPt7TDQI6SnHG0XN5RSA
+ repackage-signing-l10n-gl-win64-nightly/opt: FDM7nGsjSgCZdtV8zgVm2Q
+ repackage-signing-l10n-gn-linux-nightly/opt: daoVzRF-QtidceCwo3Ildw
+ repackage-signing-l10n-gn-linux64-nightly/opt: HTwz9neqS4CLb1ZPsep5nw
+ repackage-signing-l10n-gn-macosx64-nightly/opt: RMNQJDbGRomnhbrytM8h4w
+ repackage-signing-l10n-gn-win32-nightly/opt: c7etVvl_SfaNl1G-RahYiQ
+ repackage-signing-l10n-gn-win64-nightly/opt: N1k023rbRaOdZ7I3s5VUhg
+ repackage-signing-l10n-gu-IN-linux-nightly/opt: XA3ODce5TpiCL7nszUPHFg
+ repackage-signing-l10n-gu-IN-linux64-nightly/opt: FtH9c_t2QvijJJD5y81hsg
+ repackage-signing-l10n-gu-IN-macosx64-nightly/opt: bYgbrsS4QjqDPywcSFbRYQ
+ repackage-signing-l10n-gu-IN-win32-nightly/opt: Z0mwKLloRzO80Q8Ez4-ijg
+ repackage-signing-l10n-gu-IN-win64-nightly/opt: OOVftXGjQGut9YSahD72MA
+ repackage-signing-l10n-he-linux-nightly/opt: YnSRwyf_QF2AZG9mSR2x7w
+ repackage-signing-l10n-he-linux64-nightly/opt: RaraTuqjRsOrugv-xzcd3Q
+ repackage-signing-l10n-he-macosx64-nightly/opt: FR28kPGCRu-loL8jpnxzWw
+ repackage-signing-l10n-he-win32-nightly/opt: OprharuUT3C0Fjv0rPhoLQ
+ repackage-signing-l10n-he-win64-nightly/opt: avgh6K0JSdSkGlxxt_KZWA
+ repackage-signing-l10n-hi-IN-linux-nightly/opt: J-M7jKG4QTagxl5ZK0g4yQ
+ repackage-signing-l10n-hi-IN-linux64-nightly/opt: XMub522mTO6-Xmj0IVIiLQ
+ repackage-signing-l10n-hi-IN-macosx64-nightly/opt: RrfExwOoRbOwP9Y8e4kDYA
+ repackage-signing-l10n-hi-IN-win32-nightly/opt: Ehhwq7AnTkOtRxO8Cx6-qg
+ repackage-signing-l10n-hi-IN-win64-nightly/opt: ctz6JptjRmiw1iuzgVvdDQ
+ repackage-signing-l10n-hr-linux-nightly/opt: MCiBdnY7R0SmtvnqyuRjiQ
+ repackage-signing-l10n-hr-linux64-nightly/opt: RODaLKWFQyimVEi8Jr9cTA
+ repackage-signing-l10n-hr-macosx64-nightly/opt: ZhR3MPSsTT68DtibswW3Vg
+ repackage-signing-l10n-hr-win32-nightly/opt: FApws6mGR2u2n7Nk6pYk3A
+ repackage-signing-l10n-hr-win64-nightly/opt: WJv1dE3BRzqSyjNLZ9wlng
+ repackage-signing-l10n-hsb-linux-nightly/opt: LxSvJJVLTgOPDOVJ__zpMA
+ repackage-signing-l10n-hsb-linux64-nightly/opt: dmgFcrKZSVmr_hu6tdJFbQ
+ repackage-signing-l10n-hsb-macosx64-nightly/opt: Sk5VdTY3SPibeHQMrka8cg
+ repackage-signing-l10n-hsb-win32-nightly/opt: H9gHOd9qRTi1mbsPz06rkQ
+ repackage-signing-l10n-hsb-win64-nightly/opt: d8S8ciaqRA2BXi-7FrcC2w
+ repackage-signing-l10n-hu-linux-nightly/opt: FUs1-u4JQcSeUEB294DE8g
+ repackage-signing-l10n-hu-linux64-nightly/opt: Gs2Aq0oIRpmXhJKH7Wh_ag
+ repackage-signing-l10n-hu-macosx64-nightly/opt: Ko7ncwVXQueQBeE1nR8djw
+ repackage-signing-l10n-hu-win32-nightly/opt: Zvv_PpWsRgqT75xQm6HUkQ
+ repackage-signing-l10n-hu-win64-nightly/opt: NQAZfm7ZQ3Ozon7FKY1SHg
+ repackage-signing-l10n-hy-AM-linux-nightly/opt: bDFMzBiiTqusE5YoZEeG7Q
+ repackage-signing-l10n-hy-AM-linux64-nightly/opt: P8ZxpWIjSnWONhSu8hdXaw
+ repackage-signing-l10n-hy-AM-macosx64-nightly/opt: dMh3GbSXQl2Brg7w5FsQ_Q
+ repackage-signing-l10n-hy-AM-win32-nightly/opt: c3U4wan4QQCxWhFNkUvMsg
+ repackage-signing-l10n-hy-AM-win64-nightly/opt: U5XKWNmURee2K-z12INTIQ
+ repackage-signing-l10n-ia-linux-nightly/opt: fZ-J3BtuQcaGQYSsIUeUsg
+ repackage-signing-l10n-ia-linux64-nightly/opt: OEc0vEJAQp6xzfads9W7aQ
+ repackage-signing-l10n-ia-macosx64-nightly/opt: GHKsHFH4RNKK0aUmK-_05Q
+ repackage-signing-l10n-ia-win32-nightly/opt: MEpxKmvKS2Wmccm2MApy7g
+ repackage-signing-l10n-ia-win64-nightly/opt: O4LglEFKQWCkFZGydQIEEg
+ repackage-signing-l10n-id-linux-nightly/opt: EG6zXOfjRie1AEarZqjOTw
+ repackage-signing-l10n-id-linux64-nightly/opt: FlNqV5sVRV2eInASttHinA
+ repackage-signing-l10n-id-macosx64-nightly/opt: FE6TGYbMSRSxK0K8R06Fxw
+ repackage-signing-l10n-id-win32-nightly/opt: IgwsoU7aTy2d_FsSTMpozw
+ repackage-signing-l10n-id-win64-nightly/opt: MwA-kd-aSoqK0ZIoM2YhMg
+ repackage-signing-l10n-is-linux-nightly/opt: dUZDBfbmTBq-rG5xhGb5Lg
+ repackage-signing-l10n-is-linux64-nightly/opt: G37ZmO4GT32gaJbtA-_QZA
+ repackage-signing-l10n-is-macosx64-nightly/opt: EAdYQypDRK2BTg0aW1uOiQ
+ repackage-signing-l10n-is-win32-nightly/opt: fysAq2OeS22LTAIXIN9Zuw
+ repackage-signing-l10n-is-win64-nightly/opt: fu_f5jMIToOI-oPRsoB-0Q
+ repackage-signing-l10n-it-linux-nightly/opt: GQOCqNOKRc6vwLBd8PjOJA
+ repackage-signing-l10n-it-linux64-nightly/opt: GF3JJRvtQXeEcSAYq2xG3w
+ repackage-signing-l10n-it-macosx64-nightly/opt: HhdDHXvRSOqm0Nxuq7_JUQ
+ repackage-signing-l10n-it-win32-nightly/opt: Y6KQGGPvQVybpo8oMkmiEw
+ repackage-signing-l10n-it-win64-nightly/opt: Fy3zc0nATdqvxWpfEsnj4w
+ repackage-signing-l10n-ja-JP-mac-macosx64-nightly/opt: C9PxyYU0TZejPA-zkPtyyQ
+ repackage-signing-l10n-ja-linux-nightly/opt: YBFw-qXUSdqBScRoUjse5A
+ repackage-signing-l10n-ja-linux64-nightly/opt: UogzCsibT9i5aq3sIDNgXQ
+ repackage-signing-l10n-ja-win32-nightly/opt: BROb3yrVR6665AUY3kFGKw
+ repackage-signing-l10n-ja-win64-nightly/opt: dkPU_BRbQB2z3q7bsLYJpw
+ repackage-signing-l10n-ka-linux-nightly/opt: IR9A3T3RTHClzxaMFM-9LQ
+ repackage-signing-l10n-ka-linux64-nightly/opt: cnEq3S7yRCSwInRR7eLAGw
+ repackage-signing-l10n-ka-macosx64-nightly/opt: R12QoLAaRDyLVM1L6HQTLA
+ repackage-signing-l10n-ka-win32-nightly/opt: RIIsC0fwQVy4w3ttCMsqyw
+ repackage-signing-l10n-ka-win64-nightly/opt: aZaHxAtdSoeHjsUIDCuoow
+ repackage-signing-l10n-kab-linux-nightly/opt: HBrf8xdIQQWdZ3e2SU9xJg
+ repackage-signing-l10n-kab-linux64-nightly/opt: ElH_7MHaTRyo8nPqJai7YA
+ repackage-signing-l10n-kab-macosx64-nightly/opt: RdC6ancLTSyH7HCcNWJlEQ
+ repackage-signing-l10n-kab-win32-nightly/opt: J1xfdHNqQbCLAL4ZtcObrQ
+ repackage-signing-l10n-kab-win64-nightly/opt: HSjm2HRdQk2Uf1cFBIz7Ag
+ repackage-signing-l10n-kk-linux-nightly/opt: O4R_hSD0RzSiSPdMoVXXxw
+ repackage-signing-l10n-kk-linux64-nightly/opt: YGmROL5FT5OI2IZPsQIbmw
+ repackage-signing-l10n-kk-macosx64-nightly/opt: SOgODyUATyySLB9FROr-_A
+ repackage-signing-l10n-kk-win32-nightly/opt: NwUgx1BNSoKJVQ2V-b6Deg
+ repackage-signing-l10n-kk-win64-nightly/opt: Hb9mKZzCS9uqnsQMIMbO5g
+ repackage-signing-l10n-km-linux-nightly/opt: aJDL1w16RcKL4tsZy96T_w
+ repackage-signing-l10n-km-linux64-nightly/opt: Fr4n-E_IQ3uV3AWAmFGDAg
+ repackage-signing-l10n-km-macosx64-nightly/opt: G89rnmgmSVm5_uUvVCk9LA
+ repackage-signing-l10n-km-win32-nightly/opt: HyL31tMiSeih88t6FR0twA
+ repackage-signing-l10n-km-win64-nightly/opt: I67Qsyb1RQOGuD_Nx3I39Q
+ repackage-signing-l10n-kn-linux-nightly/opt: Xvuf79n4R2-9l-nNREzLjg
+ repackage-signing-l10n-kn-linux64-nightly/opt: dBhHzmYPReufVdMHsy0PMA
+ repackage-signing-l10n-kn-macosx64-nightly/opt: V5aojOzQTDeXRH-xvwr7vg
+ repackage-signing-l10n-kn-win32-nightly/opt: bOxK5FMgRnii_WYmu03fHQ
+ repackage-signing-l10n-kn-win64-nightly/opt: T8tOcuK8TSSZjztG0AICZA
+ repackage-signing-l10n-ko-linux-nightly/opt: TgHxOUXpQtmVTAfKoJ2dXQ
+ repackage-signing-l10n-ko-linux64-nightly/opt: I3QCE3X3Sai0WeJVmlrRxw
+ repackage-signing-l10n-ko-macosx64-nightly/opt: CsOevdopQIKWqcRyZgmnPA
+ repackage-signing-l10n-ko-win32-nightly/opt: NllCbxDIQvCf8Wh_PrP3Qw
+ repackage-signing-l10n-ko-win64-nightly/opt: XiIsCmx3RoGYumt4r5eWqQ
+ repackage-signing-l10n-lij-linux-nightly/opt: cgyD5HpbQuGmSmkSbNaqew
+ repackage-signing-l10n-lij-linux64-nightly/opt: IVxhNsWeRB-MXusTX4Flfw
+ repackage-signing-l10n-lij-macosx64-nightly/opt: OIOEaN_rTs-DmhXl8kYgRA
+ repackage-signing-l10n-lij-win32-nightly/opt: HgjL4yaQSASey25wLeIPZg
+ repackage-signing-l10n-lij-win64-nightly/opt: Fwh8HMxzRPuIu39mu350sA
+ repackage-signing-l10n-lt-linux-nightly/opt: JqiPIufKSKOAtTbpy_xVVQ
+ repackage-signing-l10n-lt-linux64-nightly/opt: LsldhnzvStWK9L5zfGZRwg
+ repackage-signing-l10n-lt-macosx64-nightly/opt: XYiyiueMRr2qT6rrxqZaWA
+ repackage-signing-l10n-lt-win32-nightly/opt: c64_384bShGmTegcFeSiJw
+ repackage-signing-l10n-lt-win64-nightly/opt: Q8EnRWg_SNe6uMR8ay8l4Q
+ repackage-signing-l10n-lv-linux-nightly/opt: Mp7TIGVlRqyuT56pirDSEw
+ repackage-signing-l10n-lv-linux64-nightly/opt: Pjgt6wL0RAmhWBoCMefK9Q
+ repackage-signing-l10n-lv-macosx64-nightly/opt: X0xSuZtpTwyZ0A9LjSdXvw
+ repackage-signing-l10n-lv-win32-nightly/opt: Cy9Ml8QmSDaEf61EDNT2PQ
+ repackage-signing-l10n-lv-win64-nightly/opt: ag89pZ48QZK-Nq8c1fNKxg
+ repackage-signing-l10n-mai-linux-nightly/opt: FoY6yMkHRjWeu6Yf5SrLTA
+ repackage-signing-l10n-mai-linux64-nightly/opt: SSFTQQBNSsOwH1WIDNBkaA
+ repackage-signing-l10n-mai-macosx64-nightly/opt: ZWaAw49qRmqx_M_QFrsh5Q
+ repackage-signing-l10n-mai-win32-nightly/opt: B9QkiVHZQdeGt2Y0yeoOIQ
+ repackage-signing-l10n-mai-win64-nightly/opt: docw-cfLSbmXISzSemCjfA
+ repackage-signing-l10n-mk-linux-nightly/opt: E1Lobwu6Qj-TK7vUEBieWQ
+ repackage-signing-l10n-mk-linux64-nightly/opt: asLQLhdeSnqIfA0poK9XmQ
+ repackage-signing-l10n-mk-macosx64-nightly/opt: agGtxVazTH2LZLFymhl5pQ
+ repackage-signing-l10n-mk-win32-nightly/opt: TwCxFBwVR5ms5HTPT8ZWbQ
+ repackage-signing-l10n-mk-win64-nightly/opt: KotWI6a-T9aJQWDhc-BNLw
+ repackage-signing-l10n-ml-linux-nightly/opt: eybshgJlThC8PlZninbjIA
+ repackage-signing-l10n-ml-linux64-nightly/opt: Byf2NlYsT8WclMUd4QBqSA
+ repackage-signing-l10n-ml-macosx64-nightly/opt: J4Zhgb29QwykOW1IERgB_w
+ repackage-signing-l10n-ml-win32-nightly/opt: PaS33ty9RrW4FfiEg45RMQ
+ repackage-signing-l10n-ml-win64-nightly/opt: QukXemWNShCQbAl_wCRnBQ
+ repackage-signing-l10n-mr-linux-nightly/opt: NlV_mAieSJKnDyz9ndEwbQ
+ repackage-signing-l10n-mr-linux64-nightly/opt: RuOvEb1VTi-ml6aI-sfYMQ
+ repackage-signing-l10n-mr-macosx64-nightly/opt: XjOrznhURPW1Y1d3HniA1Q
+ repackage-signing-l10n-mr-win32-nightly/opt: FiS93983QReWU0yoqCzSjA
+ repackage-signing-l10n-mr-win64-nightly/opt: Ra6jpjO6SVysSHQQyRKKxw
+ repackage-signing-l10n-ms-linux-nightly/opt: IkWCAqSATn6KzCiCIO_MQg
+ repackage-signing-l10n-ms-linux64-nightly/opt: DEhEX_U3SxaZf66XbbGgvQ
+ repackage-signing-l10n-ms-macosx64-nightly/opt: URhAyN6yQKiUDgiRIgWjmg
+ repackage-signing-l10n-ms-win32-nightly/opt: UBbEOxtVQ-K3z8-lXB-LAQ
+ repackage-signing-l10n-ms-win64-nightly/opt: N8PHng_dSgKrnjESg8zcmQ
+ repackage-signing-l10n-my-linux-nightly/opt: czIstd1zQ5inAy5MDdeUKg
+ repackage-signing-l10n-my-linux64-nightly/opt: fSZ9mLLOQbWBGt-wS3YKag
+ repackage-signing-l10n-my-macosx64-nightly/opt: GmNYP5D5T4-ocMuxQMX_HA
+ repackage-signing-l10n-my-win32-nightly/opt: KDmjFn_NT0Gf829rWCnl-w
+ repackage-signing-l10n-my-win64-nightly/opt: P2Q6eNOPRpqLXG3izXTaOw
+ repackage-signing-l10n-nb-NO-linux-nightly/opt: Uz451_GpSZSI-nsyhckHvw
+ repackage-signing-l10n-nb-NO-linux64-nightly/opt: aLv6kEmRQEumaI8kGqF--Q
+ repackage-signing-l10n-nb-NO-macosx64-nightly/opt: Uv4gzu0tReirE9Aa4DSQ_Q
+ repackage-signing-l10n-nb-NO-win32-nightly/opt: YGskM4vPS92AXUu45aK5Pg
+ repackage-signing-l10n-nb-NO-win64-nightly/opt: KUT6k1J7TV2bzx9Z0PuCug
+ repackage-signing-l10n-ne-NP-linux-nightly/opt: ToQXXFHCR1KmTIVuwrbm8w
+ repackage-signing-l10n-ne-NP-linux64-nightly/opt: PE6tUHWtQYKjLxwfnR033g
+ repackage-signing-l10n-ne-NP-macosx64-nightly/opt: TgjQS8qeRc2L4nzXqrOewg
+ repackage-signing-l10n-ne-NP-win32-nightly/opt: Ycbh2N3nRJup1fPR_KiN-Q
+ repackage-signing-l10n-ne-NP-win64-nightly/opt: OPyxr0ngTWCLCLs9KOA7jA
+ repackage-signing-l10n-nl-linux-nightly/opt: aIfsv17ySvy_zaIzSQYwuQ
+ repackage-signing-l10n-nl-linux64-nightly/opt: Hm9pHNSWQ-C5LBpDAA1E7g
+ repackage-signing-l10n-nl-macosx64-nightly/opt: FktJwfyeQ3isilDuTGYnfw
+ repackage-signing-l10n-nl-win32-nightly/opt: F0WtnMzXTD6U5pzqh9UOjw
+ repackage-signing-l10n-nl-win64-nightly/opt: GDe6TQImSBijxzKgJfKnkA
+ repackage-signing-l10n-nn-NO-linux-nightly/opt: BF2TKc91TU-ZVpeEE2tQIw
+ repackage-signing-l10n-nn-NO-linux64-nightly/opt: VWnaXteHQpmCzstqxSlAGQ
+ repackage-signing-l10n-nn-NO-macosx64-nightly/opt: LQ6dUVuHSiGHoYFW2aUPxA
+ repackage-signing-l10n-nn-NO-win32-nightly/opt: U2uAP2SDR9C88tnuODqqyA
+ repackage-signing-l10n-nn-NO-win64-nightly/opt: Q8ni759hSJqNGGI4Xji9FA
+ repackage-signing-l10n-oc-linux-nightly/opt: RzLr8Kz1SHOLRO7SXZHBkQ
+ repackage-signing-l10n-oc-linux64-nightly/opt: BCLHhPfETEm3BwXec23hbg
+ repackage-signing-l10n-oc-macosx64-nightly/opt: NtDyw74WT6iWrp9jAECTyQ
+ repackage-signing-l10n-oc-win32-nightly/opt: WTDZqWmOQTq2xWLWpN2EDg
+ repackage-signing-l10n-oc-win64-nightly/opt: L5qQyYi3TIuZknI_bFdeNQ
+ repackage-signing-l10n-or-linux-nightly/opt: XWNk5lJ2R4iZsomI3EIR5Q
+ repackage-signing-l10n-or-linux64-nightly/opt: NVP3TNXgSze8Hhw7Jyk9Lg
+ repackage-signing-l10n-or-macosx64-nightly/opt: OKMmnNWPQuiwV19oZkRRPg
+ repackage-signing-l10n-or-win32-nightly/opt: DzWbsKXuQmupdRPwQH-1JQ
+ repackage-signing-l10n-or-win64-nightly/opt: Pp0kV909SkyT-fzeuiyzrw
+ repackage-signing-l10n-pa-IN-linux-nightly/opt: Mdon0UCKQJitX6iAJYeyWA
+ repackage-signing-l10n-pa-IN-linux64-nightly/opt: ZmTqI_SIQeufS3J5e9SpuA
+ repackage-signing-l10n-pa-IN-macosx64-nightly/opt: G4NtfQxQRYyKqrJFe0iJ3g
+ repackage-signing-l10n-pa-IN-win32-nightly/opt: ALOeqG8HRwOwLrJ6blERsQ
+ repackage-signing-l10n-pa-IN-win64-nightly/opt: LEV2YxQiRvubB8L8rTX58Q
+ repackage-signing-l10n-pl-linux-nightly/opt: J01EqjQgTzSg1nDyit2XCQ
+ repackage-signing-l10n-pl-linux64-nightly/opt: Z7K1EVzOQsuhoVslGNKpyQ
+ repackage-signing-l10n-pl-macosx64-nightly/opt: M4CO4ZXZTui_kULw0A5gtw
+ repackage-signing-l10n-pl-win32-nightly/opt: Lbc1UXP8S02e5ECJOyqhUw
+ repackage-signing-l10n-pl-win64-nightly/opt: GPukNjHoTGO2xtzlvkUyXg
+ repackage-signing-l10n-pt-BR-linux-nightly/opt: VCGfn_WgRxCaMYkt2BBWMg
+ repackage-signing-l10n-pt-BR-linux64-nightly/opt: U5zbN9l6R62HMDzien3yFQ
+ repackage-signing-l10n-pt-BR-macosx64-nightly/opt: Ce1_BqusQJGgEy50VsI-9w
+ repackage-signing-l10n-pt-BR-win32-nightly/opt: LSNp0olKRqSh-MfsXMgEoQ
+ repackage-signing-l10n-pt-BR-win64-nightly/opt: L3KtGwigRumAqHIKffyt8g
+ repackage-signing-l10n-pt-PT-linux-nightly/opt: MHVhHbpAQ3uFAThZGD87IQ
+ repackage-signing-l10n-pt-PT-linux64-nightly/opt: cebUSNArTRm_XKysnAlrGQ
+ repackage-signing-l10n-pt-PT-macosx64-nightly/opt: FqivsVu8TO-IlmcvV4Jx-w
+ repackage-signing-l10n-pt-PT-win32-nightly/opt: LvdCpEuQTWq4ec-sVo7gXQ
+ repackage-signing-l10n-pt-PT-win64-nightly/opt: ZgMBksMqRMe_WeWhFWj_qA
+ repackage-signing-l10n-rm-linux-nightly/opt: BPshY3BXTmSC_aaaMSQpDQ
+ repackage-signing-l10n-rm-linux64-nightly/opt: PtiYBGGPRXeA82FdLOgiTg
+ repackage-signing-l10n-rm-macosx64-nightly/opt: HbABCQT1TWSry_IY5xyFqw
+ repackage-signing-l10n-rm-win32-nightly/opt: e75INMJCRzSlFYIEtc6RTQ
+ repackage-signing-l10n-rm-win64-nightly/opt: SDD7N3RDRSSDGkuWUtj1ug
+ repackage-signing-l10n-ro-linux-nightly/opt: BMkD1FdQTV6dKZYjKSZd0Q
+ repackage-signing-l10n-ro-linux64-nightly/opt: GoVt7km5SrGXatroWD13HA
+ repackage-signing-l10n-ro-macosx64-nightly/opt: XWuogkFhR4WHNVSMsL1EkA
+ repackage-signing-l10n-ro-win32-nightly/opt: Vu-GcguRSlm4FvNvAMECmQ
+ repackage-signing-l10n-ro-win64-nightly/opt: FByAvd_vSl-U_nJFybknIg
+ repackage-signing-l10n-ru-linux-nightly/opt: dsTYv72eTmaI2t9x1OtKjQ
+ repackage-signing-l10n-ru-linux64-nightly/opt: OSWy94YKQ1qhmSuh3B9BZA
+ repackage-signing-l10n-ru-macosx64-nightly/opt: MwFsHXQzRtKuMlDxyxoZaA
+ repackage-signing-l10n-ru-win32-nightly/opt: fKW6v-JoSNOnXp8bzFgMvA
+ repackage-signing-l10n-ru-win64-nightly/opt: Z2Ho3ejeQ8CTtO_2eVmnUw
+ repackage-signing-l10n-si-linux-nightly/opt: PaksFHgeSv2LZYQ0YhVUyw
+ repackage-signing-l10n-si-linux64-nightly/opt: S4-FC9FTRGeGAotq5_glvg
+ repackage-signing-l10n-si-macosx64-nightly/opt: G9VFPjEfTESGR3AT_XyHjA
+ repackage-signing-l10n-si-win32-nightly/opt: OnY6eoabT8eIp5Row3r9ig
+ repackage-signing-l10n-si-win64-nightly/opt: Cl7o0DCPSSq7kYBhDkkuyg
+ repackage-signing-l10n-sk-linux-nightly/opt: IlMxj92ZTJO3LE902Zh4Og
+ repackage-signing-l10n-sk-linux64-nightly/opt: FG4SfiAiRVef4pqv68rxrw
+ repackage-signing-l10n-sk-macosx64-nightly/opt: b-j1KNGMSE-Y70SoxIYdyQ
+ repackage-signing-l10n-sk-win32-nightly/opt: ZuXtme5kTLi5a_oJ6Lq9tg
+ repackage-signing-l10n-sk-win64-nightly/opt: ORLqNhKZTVmcIbGRJufb-Q
+ repackage-signing-l10n-sl-linux-nightly/opt: UZImpl0sRcSjiQ3jB0Ha3w
+ repackage-signing-l10n-sl-linux64-nightly/opt: CB0gqr-FTLiLwIFfYeq4TA
+ repackage-signing-l10n-sl-macosx64-nightly/opt: KKgxkMk9Rfi0RmSdjgfH1Q
+ repackage-signing-l10n-sl-win32-nightly/opt: cRthbStnSsysXqmuYIHbcw
+ repackage-signing-l10n-sl-win64-nightly/opt: BcdA2qP6TF2B5P5aV7OgDg
+ repackage-signing-l10n-son-linux-nightly/opt: e4iMtl1TQkakm83goL1tfQ
+ repackage-signing-l10n-son-linux64-nightly/opt: Pd58HHvJS2O4G0486Kqd7Q
+ repackage-signing-l10n-son-macosx64-nightly/opt: Aug81CVyQIyQQAHXvUZPpA
+ repackage-signing-l10n-son-win32-nightly/opt: aC-ve3ZUQkiPz_hwpJaboA
+ repackage-signing-l10n-son-win64-nightly/opt: RI-9o39QRfCRR8szkUlfVg
+ repackage-signing-l10n-sq-linux-nightly/opt: MLx3FTboTviFaqk1cw-jLQ
+ repackage-signing-l10n-sq-linux64-nightly/opt: HAcbdb_qSkm0hRJ8BnG1sQ
+ repackage-signing-l10n-sq-macosx64-nightly/opt: dqdQNHXXRxuVLGIKkxJLkw
+ repackage-signing-l10n-sq-win32-nightly/opt: XuEGjvNGSqiGPcM-DDE6dg
+ repackage-signing-l10n-sq-win64-nightly/opt: fbM3JchbRUmJw2dIZTXpxA
+ repackage-signing-l10n-sr-linux-nightly/opt: IQserNFITOyzXGKqhIXr3g
+ repackage-signing-l10n-sr-linux64-nightly/opt: RaNHvZ9TRTOOvZEo5N0orw
+ repackage-signing-l10n-sr-macosx64-nightly/opt: er_hc5gWSYq_DGbTLoSl4A
+ repackage-signing-l10n-sr-win32-nightly/opt: EPwJGLqjScyFPTy5M4PWSg
+ repackage-signing-l10n-sr-win64-nightly/opt: CgVXhU0pSOuZs0Cw4xYF-A
+ repackage-signing-l10n-sv-SE-linux-nightly/opt: Qj23vdxRTJ6H9Wj5jE3H7g
+ repackage-signing-l10n-sv-SE-linux64-nightly/opt: JQHXtHaMR_G3LgvO_vXnyA
+ repackage-signing-l10n-sv-SE-macosx64-nightly/opt: aexDsKYfRkuy_m54BJGJjQ
+ repackage-signing-l10n-sv-SE-win32-nightly/opt: fGQWB7TBRzWAYrTxCwGu9g
+ repackage-signing-l10n-sv-SE-win64-nightly/opt: aON70cR-QaSDFr8NZbo2LQ
+ repackage-signing-l10n-ta-linux-nightly/opt: VwwL-qsQTHWaNNxQoM5tGw
+ repackage-signing-l10n-ta-linux64-nightly/opt: OohKPshiT4WalOOF5HmNoQ
+ repackage-signing-l10n-ta-macosx64-nightly/opt: e18y95xwRNmG7m3O69I1OA
+ repackage-signing-l10n-ta-win32-nightly/opt: fCbrPmsKQ-25D4xgWyxgAw
+ repackage-signing-l10n-ta-win64-nightly/opt: QbNe3s1DR9aGOK8yc8WSCw
+ repackage-signing-l10n-te-linux-nightly/opt: ONIGk6PsRfKA2VA3pXBwZg
+ repackage-signing-l10n-te-linux64-nightly/opt: EpI_Vuz_Rcyyq0Rb6kFF5w
+ repackage-signing-l10n-te-macosx64-nightly/opt: IaTXFijUQNiZkCVHc3f_Tw
+ repackage-signing-l10n-te-win32-nightly/opt: a2fPHiHzTwCEU4wSRYclVQ
+ repackage-signing-l10n-te-win64-nightly/opt: MF5AajKMSRylw6phV7WE1g
+ repackage-signing-l10n-th-linux-nightly/opt: P3X9HvNmRja_ZYc8gtqg1Q
+ repackage-signing-l10n-th-linux64-nightly/opt: ffihSgezS9-ISkssvI2iew
+ repackage-signing-l10n-th-macosx64-nightly/opt: MPsEEWgKTo-zS-o4sxpG4Q
+ repackage-signing-l10n-th-win32-nightly/opt: K2qf3zKPQ1mdapLK5_DAbw
+ repackage-signing-l10n-th-win64-nightly/opt: CyC0JD95TXm26806U27b1A
+ repackage-signing-l10n-tr-linux-nightly/opt: HR9Fl2LGRa-0W_P24T6fRw
+ repackage-signing-l10n-tr-linux64-nightly/opt: SD13YpX3TUG3Lw1gsjb8zQ
+ repackage-signing-l10n-tr-macosx64-nightly/opt: QUb0MdbkTpyahsH1slF-DQ
+ repackage-signing-l10n-tr-win32-nightly/opt: VpUaHXCETO-DOW3Y-vkNyg
+ repackage-signing-l10n-tr-win64-nightly/opt: dLHPdVp7QmCU-jKlqZd3Hg
+ repackage-signing-l10n-uk-linux-nightly/opt: V2vDmIK-S8GgjSXMR6YbzQ
+ repackage-signing-l10n-uk-linux64-nightly/opt: Dav8-GQHTqiFV3aSZ9sMCg
+ repackage-signing-l10n-uk-macosx64-nightly/opt: Lnvq6TVoQA63u_aLCQ93zw
+ repackage-signing-l10n-uk-win32-nightly/opt: TEqTzmZUQbi1W6tVkloVsA
+ repackage-signing-l10n-uk-win64-nightly/opt: Ash05TvXQCqBgdx19un9gw
+ repackage-signing-l10n-ur-linux-nightly/opt: OvpD5KfFSF-qpk4m4aLmoA
+ repackage-signing-l10n-ur-linux64-nightly/opt: DUgCh61WSvy0DGFfHSkhLw
+ repackage-signing-l10n-ur-macosx64-nightly/opt: SlvzjZlsQgm_LvXCVVnUxw
+ repackage-signing-l10n-ur-win32-nightly/opt: VirVsGi2RKq128rWrvqqcA
+ repackage-signing-l10n-ur-win64-nightly/opt: KZE9oP_ARECt_pU9Q2pSyQ
+ repackage-signing-l10n-uz-linux-nightly/opt: NHaDTIGWQZqeUE1LrRaQDg
+ repackage-signing-l10n-uz-linux64-nightly/opt: Kq9XVvc_RwW0NetwehWDBg
+ repackage-signing-l10n-uz-macosx64-nightly/opt: ZfTiJQksTmyoXl0vDB8blg
+ repackage-signing-l10n-uz-win32-nightly/opt: SsNjefr8RJqViE_dbyFYdA
+ repackage-signing-l10n-uz-win64-nightly/opt: HCOlO3s-QOGysmnC48Q9UQ
+ repackage-signing-l10n-vi-linux-nightly/opt: N4-T5TruSzG5q3EcRglUCg
+ repackage-signing-l10n-vi-linux64-nightly/opt: fhUonR6GRkCwQgbCcbDH3w
+ repackage-signing-l10n-vi-macosx64-nightly/opt: Q3SD4lTZTzami965wJCO5Q
+ repackage-signing-l10n-vi-win32-nightly/opt: NRX5qZWrR_2KxjGXD0VGEQ
+ repackage-signing-l10n-vi-win64-nightly/opt: OpcvBdhZSoGBemViPKcJ1A
+ repackage-signing-l10n-xh-linux-nightly/opt: UN4MADOSTMqaox1_H0_a8A
+ repackage-signing-l10n-xh-linux64-nightly/opt: JtzE-iVGRJSwGhPNad3odg
+ repackage-signing-l10n-xh-macosx64-nightly/opt: AmKafOKCQOaw9PqKVXohKg
+ repackage-signing-l10n-xh-win32-nightly/opt: CXwPEeK3TUqt0fd3cd409g
+ repackage-signing-l10n-xh-win64-nightly/opt: dEVC2BDgTAy8-fYNk6yM9w
+ repackage-signing-l10n-zh-CN-linux-nightly/opt: WKcWbFPQQIy3twadRiIqdQ
+ repackage-signing-l10n-zh-CN-linux64-nightly/opt: SP56bmc3TuCvKDj7h4DMmA
+ repackage-signing-l10n-zh-CN-macosx64-nightly/opt: OjpGG6IlR7mU12jE_gVg7A
+ repackage-signing-l10n-zh-CN-win32-nightly/opt: b8ZMM5XfQkqusBjZTdjLCg
+ repackage-signing-l10n-zh-CN-win64-nightly/opt: G8tCfMYORW2qfTQ06aDt0Q
+ repackage-signing-l10n-zh-TW-linux-nightly/opt: LXr2D7loStyP0BYA3tdw4w
+ repackage-signing-l10n-zh-TW-linux64-nightly/opt: eI9lnZGWRGekEfmfOACYaQ
+ repackage-signing-l10n-zh-TW-macosx64-nightly/opt: E012hTBQSeOGE0eLxkGXXA
+ repackage-signing-l10n-zh-TW-win32-nightly/opt: SOqmmY0RSKm4_siOzGkfiQ
+ repackage-signing-l10n-zh-TW-win64-nightly/opt: Kg9aPh0-SbGebCvimwkobA
+ repackage-signing-linux-devedition-nightly/opt: R7N3rhWzTcqbdTtKgy-mFA
+ repackage-signing-linux-nightly/opt: ci0SN3DxSamIIh_R5KYV9w
+ repackage-signing-linux64-devedition-nightly/opt: LBphglW6TwC7ENtcXp8I7g
+ repackage-signing-linux64-nightly/opt: ZnhonCZFSfqLQVyZCdjcYg
+ repackage-signing-macosx64-devedition-nightly/opt: FclGIgG7Rb6-hR8HaMHnDA
+ repackage-signing-macosx64-nightly/opt: d5yH2HdKTz2s541waxG3Vg
+ repackage-signing-win32-devedition-nightly/opt: OiFfGlUHSXik2oq48wkbrQ
+ repackage-signing-win32-nightly/opt: BxL3Isq9RaOPswxyDBOEeQ
+ repackage-signing-win32/opt: Omn1p9kTQC-pt8jOExFqbg
+ repackage-signing-win64-devedition-nightly/opt: U3UdZ-uiTzCykY94pE9Sqw
+ repackage-signing-win64-nightly/opt: FkKt_e88T4OGUugZg5JRng
+ repackage-signing-win64/opt: bKapAXdoT0CiP0NpVJQqYQ
+ repackage-win32-devedition-nightly/opt: ZFH9-EwHTyafs5HsRmPbWQ
+ repackage-win32-nightly/opt: HGGANUKtTEi93_cw--xKew
+ repackage-win32/opt: VU5F21bERVmzXOAWnvJlzA
+ repackage-win64-devedition-nightly/opt: P2Gv1UxKTkmzTOgVwRKfqA
+ repackage-win64-nightly/opt: LIFN33kmSr2MKiKWQz1PNg
+ repackage-win64/opt: b5NUT0nWT-m4wtns4IVr8g
+ sign-and-push-langpacks-build-linux64-nightly/opt: eaD9V5rGTPWzcuSEZ3bLPA
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-1/opt: a24KhywDQ6mh9QU4UDk4Rg
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-10/opt: fFqVBOrCTkipeq5M8TtSAw
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-11/opt: cKQHrbwFSqqpkz416tWVaw
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-12/opt: Gn_npyL0Qf2QU4Xhg839qQ
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-13/opt: cimO5c1EQeu4KwyYCZqJwA
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-14/opt: Khtkrd61SUSkPgRk4ZQ4yA
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-15/opt: CJtVogO-Qfq8ChnctKfn9Q
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-16/opt: R2BR6es_SxKvWYPccHiv6Q
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-17/opt: F4N2Sp4QT4y5fqMlYOCxOw
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-18/opt: AZNVXcQIRMy4FlhnjzV2wg
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-19/opt: J_VsRHwTQ5qynYWQSFIYKA
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-2/opt: eTj_XfimQGKOz5fmoRSGPA
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-20/opt: HdsfXxN4Rg2-tQnQaJDJKQ
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-3/opt: Uk8sjpwhStq4lN9ggzH2ug
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-4/opt: HI35ki7VRzelLpUkeGU_Ww
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-5/opt: NCk4vTypQ6SKbfCdZckSAg
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-6/opt: Wktbx4SfQOeokiqZ9vr7LA
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-7/opt: PUC6Jc87QXGdbLJ9TlUpiw
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-8/opt: Nw7kDGAfTd6fFSELoqE91w
+ sign-and-push-langpacks-nightly-l10n-linux64-nightly-9/opt: C8P_CfWoSVGZe22KodyEYw
+ sign-and-push-langpacks-nightly-l10n-macosx64-nightly-ja-JP-mac/opt: BM2fI2BeTFehU3TZVqbM8g
+ source-test-file-metadata-bugzilla-components: bv-o3Az2SZa_69Hyq2GrkA
+ source-test-mozlint-codespell: B-_BUSD_S0qQ_U5iQFX0PA
+ source-test-mozlint-eslint: dgVfSnaqT0mn9S2ZvNNE8A
+ static-analysis-autotest-linux64-st-autotest/debug: GrdSsjQIS4KTTrDLaFbZAQ
+ static-analysis-autotest-win64-st-autotest/debug: OyJJ-zqOQJ6H9XWpedL1PQ
+ static-analysis-win32-st-an/debug: BE8-Owp5Q9a5ztb7jbl4aQ
+ static-analysis-win32-st-an/opt: cZI86Mt6SF2sKF6g1uNfZg
+ static-analysis-win64-st-an/debug: Yzwx8zOhRZ6mrmeAdcX19g
+ static-analysis-win64-st-an/opt: YS3DYOIJQ02YDHRXmhvV1A
+ test-android-em-4.2-x86/opt-geckoview: bt7JC81XSYGsRHo1VjtL2A
+ test-android-em-4.2-x86/opt-mochitest-chrome-1: TyMRg9yMT7iO32zC62tPqQ
+ test-android-em-4.2-x86/opt-mochitest-chrome-2: Yi4plPNHSTaVj9wZvJNG5A
+ test-android-em-4.2-x86/opt-mochitest-chrome-3: IO5Bld_QRmCBiSCU_CKMyA
+ test-android-em-4.2-x86/opt-mochitest-chrome-4: OjpaYRolRtCloJwhcGiNVA
+ test-android-em-4.2-x86/opt-xpcshell-1: GyIozDUXS5S5q6Cqd6WKiA
+ test-android-em-4.2-x86/opt-xpcshell-2: R-xFzvAvQDC5CZivb4_gog
+ test-android-em-4.2-x86/opt-xpcshell-3: RyoI0Y5XRDKFKyrIIt3R4A
+ test-android-em-4.2-x86/opt-xpcshell-4: DAcjXDKPTyqzmKE3yHiZGg
+ test-android-em-4.2-x86/opt-xpcshell-5: EuhaCnYZR4CT5rY49LPX2w
+ test-android-em-4.2-x86/opt-xpcshell-6: M2SXOD0CSsapIc7CwCeqrQ
+ test-android-em-4.3-arm7-api-16/debug-cppunit: fPljoG9RSEqUl6FQbMZKZA
+ test-android-em-4.3-arm7-api-16/debug-crashtest-1: XmCQGs_SQfyPPHhn7L4zaQ
+ test-android-em-4.3-arm7-api-16/debug-crashtest-10: Yn8ZgOoEQw6hHPqmXruFVw
+ test-android-em-4.3-arm7-api-16/debug-crashtest-2: O1kiabW2SMCG4qYkzCmToQ
+ test-android-em-4.3-arm7-api-16/debug-crashtest-3: flsQgOvrQFGJjuH57OMv-w
+ test-android-em-4.3-arm7-api-16/debug-crashtest-4: Xfiiq_bNT9uYAjqQLq7f_A
+ test-android-em-4.3-arm7-api-16/debug-crashtest-5: Naj59Fr_QMqL9kgmrQG0Cg
+ test-android-em-4.3-arm7-api-16/debug-crashtest-6: BhJmz1VgTDagUUIS0NgXOA
+ test-android-em-4.3-arm7-api-16/debug-crashtest-7: Ozbxu4QITzGmIsDvQvdsvA
+ test-android-em-4.3-arm7-api-16/debug-crashtest-8: N-DxXThsTmGo8SoHK7xA1g
+ test-android-em-4.3-arm7-api-16/debug-crashtest-9: My8M8kteT2at6tb3NhfRow
+ test-android-em-4.3-arm7-api-16/debug-geckoview: CwHm24B0T3q8-dw5jBoUcA
+ test-android-em-4.3-arm7-api-16/debug-geckoview-junit-1: FCxWzTpaQleI6hwRlq9ZOQ
+ test-android-em-4.3-arm7-api-16/debug-geckoview-junit-2: HjVfNpFySXOeRWPKeCg3kg
+ test-android-em-4.3-arm7-api-16/debug-geckoview-junit-3: JcP4jXVqT4-osnZCjhWwXg
+ test-android-em-4.3-arm7-api-16/debug-geckoview-junit-4: B49Fq__jR9q19utb9ZJasQ
+ test-android-em-4.3-arm7-api-16/debug-marionette-1: IMpxNh5oQNq-Faw9hHSV_Q
+ test-android-em-4.3-arm7-api-16/debug-marionette-10: drX95LHsR36xcRmPv1cluQ
+ test-android-em-4.3-arm7-api-16/debug-marionette-2: MpffmvghQ3-KSCz3FR00-w
+ test-android-em-4.3-arm7-api-16/debug-marionette-3: ecDJoA3nTFOsQX5sN7KAGQ
+ test-android-em-4.3-arm7-api-16/debug-marionette-4: f0rCbaU1TESZ_9ZrNGGK6w
+ test-android-em-4.3-arm7-api-16/debug-marionette-5: EZgmOl-eS7mapCj0Ii8JcA
+ test-android-em-4.3-arm7-api-16/debug-marionette-6: VslW3oF_QKePC8_y9vkDqA
+ test-android-em-4.3-arm7-api-16/debug-marionette-7: NtTbeg6XQsSRjGqPOlHb9Q
+ test-android-em-4.3-arm7-api-16/debug-marionette-8: Db0TxraSSgy9F218wyYepA
+ test-android-em-4.3-arm7-api-16/debug-marionette-9: EhTOjUv6S-KoF297RIIoSw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-1: eTIzwY7rTSS6TF6mVH3kXA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-10: Ozy_Mr4_TZ2ap-jgl7tMiA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-11: CUEMFO9QTd6v35_IEZ0NzA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-12: CR71wuubRjG1udqvVZGTig
+ test-android-em-4.3-arm7-api-16/debug-mochitest-13: WsPOLhbwR5Ke4RwFQW3Dfw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-14: YXI_eF6sTaaT8LgM61SIcw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-15: edK5725EQpiwkh1HLYciBA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-16: PHkUjfYDRXmmkXtBAr3cwQ
+ test-android-em-4.3-arm7-api-16/debug-mochitest-17: NKdptCiDRPKf9Mx0G6hI6g
+ test-android-em-4.3-arm7-api-16/debug-mochitest-18: VMGlKlYrRpKMlF-sCGC_Zg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-19: EA_xrjItQWyuJL89VMw1Xw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-2: Vh-Bnh6JQsShU1uX5d7utA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-20: H9No-bgHS_26pqt0Gp8aLA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-21: JYvWeMD-Rwa4knhYrikmOQ
+ test-android-em-4.3-arm7-api-16/debug-mochitest-22: InSTyW6ERJW_qXN5Qbk9Sw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-23: Sjr_v7j3TVakRovyjmx7rw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-24: Re2siL9EQbyap6EcQoDBow
+ test-android-em-4.3-arm7-api-16/debug-mochitest-25: fAjMkBehR2-FiDMQtHt1HA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-26: c5mVh02fQLm-kvD076pQaw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-27: J8Am6BM-Q5iP-GX3vyA63w
+ test-android-em-4.3-arm7-api-16/debug-mochitest-28: bvHnB01FRDO5fqWjnDgsHg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-29: TwMi3gmSTS6SwMWEb5poig
+ test-android-em-4.3-arm7-api-16/debug-mochitest-3: ZOiufvETRXa-b6Jf5_23Iw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-30: Kmn1h0G6SuilPkXq8W8_FA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-31: aA4BeIv3S5GmDHqMlhVWSg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-32: TNlXovSJSsy7tyvC-EzBzA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-33: MT4zffOPQcqcl8rqI9rhwg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-34: XXbpX-0QS-ufziBOIYeGgA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-35: Oxr9AEsTSTeBTOSSm0lW0Q
+ test-android-em-4.3-arm7-api-16/debug-mochitest-36: Jomc7qsUTkeoa0tWD1y4MA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-37: EPe49qw5RvCCewx5VVaFrg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-38: ePnqty90STOWYhyqiRaeiw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-39: LaDm2LKUQqqq8DoTwcQ3mA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-4: AHq4R7XwRD29eiIEcRwOLQ
+ test-android-em-4.3-arm7-api-16/debug-mochitest-40: ISpHNq-nSZe0K4M5YtrUDw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-41: CqtPOANTScS7ffznpftdkg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-42: QehInfQmSJiY6UDKH2mKVg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-43: N4hskPKxRee4TvxvpjAJUQ
+ test-android-em-4.3-arm7-api-16/debug-mochitest-44: S91YjgibSpCM__RdZLqU5g
+ test-android-em-4.3-arm7-api-16/debug-mochitest-45: Ms97MsFnT3-1q5FO7-bq3g
+ test-android-em-4.3-arm7-api-16/debug-mochitest-46: XudPe-jVTT6H_dT2UBfUsg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-47: blJVIqnqTlW0gwacCVFt2A
+ test-android-em-4.3-arm7-api-16/debug-mochitest-48: Chb9yDptQYm19uqz0754ew
+ test-android-em-4.3-arm7-api-16/debug-mochitest-5: Zc5EZyUgQ8Gq4OmGwwF1yw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-6: PvNoLqmGSmmYYKM_Nl4oCQ
+ test-android-em-4.3-arm7-api-16/debug-mochitest-7: YcP3D3eATZ64tCcxApMJRg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-8: Cuc7ZVV8QH2R4COyZYTWZg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-9: ZtrqFq-STqeyHmvn6ar9Zg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-1: eKOGklhqSWmwhercUOreuw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-2: aKPxsCZhTVKn-wF7yY2EWQ
+ test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-3: D1-WEQVoRuGfVHqvdlJFaw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-4: BMrP4x89SK608JAHLHePSA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-5: Ecw2WeH3Rm-ROesrS0pdtg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-6: WOGk5kzKRuilIwtP4SRHtw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-7: GUFeXonER-SV1kIXbQNDnw
+ test-android-em-4.3-arm7-api-16/debug-mochitest-chrome-8: ZtYgTEDWRoSSed4jbjmQbg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-clipboard: ElKsDuw1SJm12zQgGFwp1A
+ test-android-em-4.3-arm7-api-16/debug-mochitest-gpu: W5z3CDOpQ9KFs1VRU95hHg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-media-1: H4N9KtiQS0yiw8BlH26GMg
+ test-android-em-4.3-arm7-api-16/debug-mochitest-media-2: XT9M72d0T-Go-l3J0tOOhA
+ test-android-em-4.3-arm7-api-16/debug-mochitest-media-3: U1AUcaddQWm3ymf5hxDqaQ
+ test-android-em-4.3-arm7-api-16/debug-reftest-1: TL7Z7kqTRraM43fVhrMQRw
+ test-android-em-4.3-arm7-api-16/debug-reftest-10: F9Nk080ESoWcRVkuQ5tzSg
+ test-android-em-4.3-arm7-api-16/debug-reftest-11: HrbvBkt2T82ZlSUVti6epw
+ test-android-em-4.3-arm7-api-16/debug-reftest-12: KmJfYL6pSe61Dcx0XWNrdg
+ test-android-em-4.3-arm7-api-16/debug-reftest-13: fFhIbnGFTU-OyXCLbqLqDg
+ test-android-em-4.3-arm7-api-16/debug-reftest-14: Ml4DFHuKQ_OUXgI-CBihRA
+ test-android-em-4.3-arm7-api-16/debug-reftest-15: Vyy5kLKDSwSmHMgVRHGSFg
+ test-android-em-4.3-arm7-api-16/debug-reftest-16: Dje-xF6YSvStKuqtNfXwJg
+ test-android-em-4.3-arm7-api-16/debug-reftest-17: D-zqNKf3QWGxg9Fz7LzPlA
+ test-android-em-4.3-arm7-api-16/debug-reftest-18: Ats3FH0rTuez3UN-tJV9aQ
+ test-android-em-4.3-arm7-api-16/debug-reftest-19: H1q0FFTXS3q0mKpMmn18qA
+ test-android-em-4.3-arm7-api-16/debug-reftest-2: RqfJs17lQ0ee0sc7jzKwag
+ test-android-em-4.3-arm7-api-16/debug-reftest-20: JwB9TcviRPC6IoH7fPnzWg
+ test-android-em-4.3-arm7-api-16/debug-reftest-21: XwRY-9mXT0SvFJXVApYipg
+ test-android-em-4.3-arm7-api-16/debug-reftest-22: WjkJ8dYRQO-ai0BKW5Y9Tg
+ test-android-em-4.3-arm7-api-16/debug-reftest-23: Zoo3wfzaQj2AE2HYifhI3Q
+ test-android-em-4.3-arm7-api-16/debug-reftest-24: ENYZSkWWTJidm1SSstXVIg
+ test-android-em-4.3-arm7-api-16/debug-reftest-25: fm2jc-eyRoWgMXxWNw6Krw
+ test-android-em-4.3-arm7-api-16/debug-reftest-26: R-J6TEqeQ82V6EF-sF0zUw
+ test-android-em-4.3-arm7-api-16/debug-reftest-27: HH7FrlgyRqSuJYW5JNS81Q
+ test-android-em-4.3-arm7-api-16/debug-reftest-28: Nkcav-gTQU-TgSl2_kDZBA
+ test-android-em-4.3-arm7-api-16/debug-reftest-29: GWXQPzN1T223iei3okF23Q
+ test-android-em-4.3-arm7-api-16/debug-reftest-3: dsknR4yBQn6pUBAO_RgQMg
+ test-android-em-4.3-arm7-api-16/debug-reftest-30: D-I-1Kl-QQGOWJOJdwDffQ
+ test-android-em-4.3-arm7-api-16/debug-reftest-31: CU4wh5dZR6qbDDj4tNxh_A
+ test-android-em-4.3-arm7-api-16/debug-reftest-32: UzxcdY7aQxOUf0GVe4q-Cw
+ test-android-em-4.3-arm7-api-16/debug-reftest-33: UycdLX4pR9WJGxreNITkPg
+ test-android-em-4.3-arm7-api-16/debug-reftest-34: ds38ad_7S1ylinW7vhiX9g
+ test-android-em-4.3-arm7-api-16/debug-reftest-35: RVCqBIUVRrK4MJXA5SYCFA
+ test-android-em-4.3-arm7-api-16/debug-reftest-36: aFSvcM4XQ3OPVesMEn0xMg
+ test-android-em-4.3-arm7-api-16/debug-reftest-37: Ls7Ev7i8Rc-bG1elpaqneA
+ test-android-em-4.3-arm7-api-16/debug-reftest-38: HsEgLHLvQtOfIkfby1LTkw
+ test-android-em-4.3-arm7-api-16/debug-reftest-39: NPaXzBO7S5iXemcu_cjBEg
+ test-android-em-4.3-arm7-api-16/debug-reftest-4: HzEJ-fNaRYejzcl3r7RF_w
+ test-android-em-4.3-arm7-api-16/debug-reftest-40: EJ5ZvL1JSaOs7TNDaGT44Q
+ test-android-em-4.3-arm7-api-16/debug-reftest-41: IfrZHhxcRhukExXnuCHTiA
+ test-android-em-4.3-arm7-api-16/debug-reftest-42: es6S1vtmTiOzVoSzJZtdhw
+ test-android-em-4.3-arm7-api-16/debug-reftest-43: YbUI5rKCSJe-JHKmps2hfA
+ test-android-em-4.3-arm7-api-16/debug-reftest-44: d4GCugbXRxqAaogzjrWmOA
+ test-android-em-4.3-arm7-api-16/debug-reftest-45: UFpnw7YGQGyEsStxcnPU6A
+ test-android-em-4.3-arm7-api-16/debug-reftest-46: QKzZ5mXaQei6eckdcpxcCw
+ test-android-em-4.3-arm7-api-16/debug-reftest-47: YeQHqXf3QgqILZRw3xI-qA
+ test-android-em-4.3-arm7-api-16/debug-reftest-48: U2mk0aAuRDawxk3Y8RgH8g
+ test-android-em-4.3-arm7-api-16/debug-reftest-49: eGvipfJ3SZyjiLKEKgxdmQ
+ test-android-em-4.3-arm7-api-16/debug-reftest-5: UXXetLg7SVqTeNwM-dIETQ
+ test-android-em-4.3-arm7-api-16/debug-reftest-50: PcIhOcxQT0Cf7x1Sco2KSg
+ test-android-em-4.3-arm7-api-16/debug-reftest-51: INNF1jzCQCGKQJycHZztUw
+ test-android-em-4.3-arm7-api-16/debug-reftest-52: UBMyK8PESVCbjKIBVcp1zw
+ test-android-em-4.3-arm7-api-16/debug-reftest-53: OCWG-iuITQeaBRmZy6BSkA
+ test-android-em-4.3-arm7-api-16/debug-reftest-54: DCKJw4yLSG-5tIpY7LQ1hg
+ test-android-em-4.3-arm7-api-16/debug-reftest-55: We6OpU7qTFWODN44iUMWTg
+ test-android-em-4.3-arm7-api-16/debug-reftest-56: Ld6Exp95R_yUDFe7rrz6Lg
+ test-android-em-4.3-arm7-api-16/debug-reftest-6: K6_K8OVnRJCfBJz8H84CMQ
+ test-android-em-4.3-arm7-api-16/debug-reftest-7: GP337AenRaybM5Gs5Qy-Gw
+ test-android-em-4.3-arm7-api-16/debug-reftest-8: ARPchXwqTTeY04A9DhSwsw
+ test-android-em-4.3-arm7-api-16/debug-reftest-9: dlEYmSuNTRKZV0tD9YxaMg
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-1: Sq4z7qpqSQyOBi47EiX9Bw
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-10: DjUP74vRQBCX5cYTRS-tCw
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-11: NftUUSXoQWWp6NaG-0nUpw
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-12: XRcryb3TSCmqb0YthvCYgA
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-2: LymZ9-SHRgO7ZRhabW8q4w
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-3: Ed9W13zPTla-ndOAOWvLBA
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-4: EOhl2JeARuGjHjSUGZunOA
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-5: TlBTec55RUmI_XV6xkoZgA
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-6: U-X4ALKzTLKXpkycymWZEQ
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-7: B4qHes0OTxy7nXtp4sItZg
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-8: agQ9NWOlRCCoLhUWGKJ9lA
+ test-android-em-4.3-arm7-api-16/debug-xpcshell-9: HAnwMgw_RJOv60E5M-tAcQ
+ test-android-em-4.3-arm7-api-16/opt-cppunit: RoaedTd8Rs-F72pWQal1MA
+ test-android-em-4.3-arm7-api-16/opt-crashtest-1: eKr52-t3T7ypxSKTKMDSPQ
+ test-android-em-4.3-arm7-api-16/opt-crashtest-2: TXHXx37dRBWA7GbYyRip9A
+ test-android-em-4.3-arm7-api-16/opt-crashtest-3: EeuyjYEjRt6kbjpQk-699A
+ test-android-em-4.3-arm7-api-16/opt-crashtest-4: aAggyqZESk6Q6fEbO4GM0g
+ test-android-em-4.3-arm7-api-16/opt-geckoview: cv51sWxAQeyDEHb1hi0c8Q
+ test-android-em-4.3-arm7-api-16/opt-geckoview-junit-1: NYgKGM2YR2aIAHl8qpgdog
+ test-android-em-4.3-arm7-api-16/opt-geckoview-junit-2: MIkBrEJpTq2K8MkB6siuBg
+ test-android-em-4.3-arm7-api-16/opt-marionette-1: XRivG9WmS1O1mffCUqZKNg
+ test-android-em-4.3-arm7-api-16/opt-marionette-10: O7itLGRRRpWPYqLY7ltzOQ
+ test-android-em-4.3-arm7-api-16/opt-marionette-2: SA8bosxvS_2P1bBVlpBpaQ
+ test-android-em-4.3-arm7-api-16/opt-marionette-3: GExci6RUTKuxxD32A6u7dw
+ test-android-em-4.3-arm7-api-16/opt-marionette-4: YEF0rReuTv2yDl0XafRRfg
+ test-android-em-4.3-arm7-api-16/opt-marionette-5: VIsimfQKS32iZAutSfz2ew
+ test-android-em-4.3-arm7-api-16/opt-marionette-6: NKIerQ_TRkms-bgW88OoAg
+ test-android-em-4.3-arm7-api-16/opt-marionette-7: HlyG2a5sQB25YBnX5kUDrA
+ test-android-em-4.3-arm7-api-16/opt-marionette-8: KRTiFTe5QZeuJRbO5e8bLw
+ test-android-em-4.3-arm7-api-16/opt-marionette-9: bEJkSm1WTGedlOQLEt2yeg
+ test-android-em-4.3-arm7-api-16/opt-mochitest-1: MK6CcKF6QXyQ7DiuWh3QAg
+ test-android-em-4.3-arm7-api-16/opt-mochitest-10: L-PRM1J7QFiX6p7XW_4tug
+ test-android-em-4.3-arm7-api-16/opt-mochitest-11: O07LRmB6RSiSyHqFJOyP0Q
+ test-android-em-4.3-arm7-api-16/opt-mochitest-12: ZF-cUYutS1SqTMz47Q6pOQ
+ test-android-em-4.3-arm7-api-16/opt-mochitest-13: SsL-zEs_QqOnd2UwbNiRnQ
+ test-android-em-4.3-arm7-api-16/opt-mochitest-14: ZMXmu-CzTVO16cRrZRDo4Q
+ test-android-em-4.3-arm7-api-16/opt-mochitest-15: ETCY0rCwS8eMeYfzDGpF1Q
+ test-android-em-4.3-arm7-api-16/opt-mochitest-16: I1oN_pRYThGbYFQ9wHewQw
+ test-android-em-4.3-arm7-api-16/opt-mochitest-17: OUqmNaBOR02ASqvHKh-AlA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-18: CfgLwtF4Rg2r1ZJJLQaAVA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-19: VAeY2pcZSyqL8foVIq-VCw
+ test-android-em-4.3-arm7-api-16/opt-mochitest-2: PeYelk8bQQy1IYnPuujNHg
+ test-android-em-4.3-arm7-api-16/opt-mochitest-20: fyv-SrK1ScyDwBKm73uXfA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-21: bnSWS6WKQz-Rl4_kpx9m-w
+ test-android-em-4.3-arm7-api-16/opt-mochitest-22: bfs91FhpTA6qhsPVpr4tmw
+ test-android-em-4.3-arm7-api-16/opt-mochitest-23: XDqzM7xKSBC5MSl2482dTw
+ test-android-em-4.3-arm7-api-16/opt-mochitest-24: OwVcUDsWSYChHGwMrVtfnA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-3: MsUx--g3QE6fHzv5UjruCQ
+ test-android-em-4.3-arm7-api-16/opt-mochitest-4: Bi9oURDqT5uMrf667qGoHg
+ test-android-em-4.3-arm7-api-16/opt-mochitest-5: UbRPa3UMTXWMo-fi_kHyYA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-6: OwqmQjxfS9OfgheUJwqu-g
+ test-android-em-4.3-arm7-api-16/opt-mochitest-7: Szn1QoUoQdSU3Yzbt5kJiA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-8: SNXKXw7tQ5moMhrujAtUPQ
+ test-android-em-4.3-arm7-api-16/opt-mochitest-9: a7PSLMMVSuGS4D6LIr_IoQ
+ test-android-em-4.3-arm7-api-16/opt-mochitest-chrome-1: dHXi61bET0Cm9Wtdsg1cCg
+ test-android-em-4.3-arm7-api-16/opt-mochitest-chrome-2: fjhMrrthSLK6Khw-4o99nQ
+ test-android-em-4.3-arm7-api-16/opt-mochitest-chrome-3: GPpYZKN0TZyWNDUn0lEKpw
+ test-android-em-4.3-arm7-api-16/opt-mochitest-chrome-4: CCyensv-TTGZF5-NKlYygw
+ test-android-em-4.3-arm7-api-16/opt-mochitest-clipboard: Zia-vDn2RW6POB4HKXCK3w
+ test-android-em-4.3-arm7-api-16/opt-mochitest-gpu: Xs87BsxGQZioCgEdA3ParA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-media-1: eaP2BYdHQSyZydkKk9n9JA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-media-2: GZdDdVSJTVuigIyL9mHrnA
+ test-android-em-4.3-arm7-api-16/opt-mochitest-media-3: XXjs7SBPSRKE6h7MArRh5g
+ test-android-em-4.3-arm7-api-16/opt-reftest-1: d60W_yUHRdimXnMYhLtFnA
+ test-android-em-4.3-arm7-api-16/opt-reftest-10: Ft01z0NWSFmpH8-fG0ZBBg
+ test-android-em-4.3-arm7-api-16/opt-reftest-11: Qw3NpFfYTei3rBzeqBPRMg
+ test-android-em-4.3-arm7-api-16/opt-reftest-12: JI2tP-dlQim6vfNHA0DLdA
+ test-android-em-4.3-arm7-api-16/opt-reftest-13: IQxy_hYLTKOzRGiok3Cbrg
+ test-android-em-4.3-arm7-api-16/opt-reftest-14: f5QjOcDzR1q0harn6haKig
+ test-android-em-4.3-arm7-api-16/opt-reftest-15: TqjYzrXeTKmGYsKeSIoUGQ
+ test-android-em-4.3-arm7-api-16/opt-reftest-16: H4vNXfwAT36z1HWJY6td7A
+ test-android-em-4.3-arm7-api-16/opt-reftest-17: Uixl2ydiQr2T5IrxXJh0NQ
+ test-android-em-4.3-arm7-api-16/opt-reftest-18: GMq38vgsQPWGQe54TC8FoA
+ test-android-em-4.3-arm7-api-16/opt-reftest-19: avSYj3YNQjWLKzEL5cWrIA
+ test-android-em-4.3-arm7-api-16/opt-reftest-2: EOJeDBcAT9OAOY1bIjG-cg
+ test-android-em-4.3-arm7-api-16/opt-reftest-20: EpIGjMXiRhqpCDlo6e9Jow
+ test-android-em-4.3-arm7-api-16/opt-reftest-21: F3stEWLjSm-VneOK2usOww
+ test-android-em-4.3-arm7-api-16/opt-reftest-22: H21rHqnUR9Gp1B6XFXA0WA
+ test-android-em-4.3-arm7-api-16/opt-reftest-23: aOCIWVtXSP6OlerklxNLjQ
+ test-android-em-4.3-arm7-api-16/opt-reftest-24: NsREmwVsQWKz396-Hfm8ug
+ test-android-em-4.3-arm7-api-16/opt-reftest-25: VZixEWAwS1q8eWkWechJRQ
+ test-android-em-4.3-arm7-api-16/opt-reftest-26: Es2ZPhiGQ5asQyBWNXa0Iw
+ test-android-em-4.3-arm7-api-16/opt-reftest-27: HEvtNjsHREOOfO5n2d4Smw
+ test-android-em-4.3-arm7-api-16/opt-reftest-28: IOBnM00tQHuiN-EagQG5mg
+ test-android-em-4.3-arm7-api-16/opt-reftest-3: T41cIz9ISy2i86EvbZoFhg
+ test-android-em-4.3-arm7-api-16/opt-reftest-4: fCOC9aoHQ0WlFfZCc0BA7A
+ test-android-em-4.3-arm7-api-16/opt-reftest-5: EJDGoofrRDCOdabocQhuEw
+ test-android-em-4.3-arm7-api-16/opt-reftest-6: Y2CsIUdqRbO_eFCrUQPJJA
+ test-android-em-4.3-arm7-api-16/opt-reftest-7: ID7B7fFVRdyYeuAlY0eEhQ
+ test-android-em-4.3-arm7-api-16/opt-reftest-8: A1IJriQMTOC_TLYu19o4lA
+ test-android-em-4.3-arm7-api-16/opt-reftest-9: J9u846cETsuceFw7cUZa8g
+ test-android-em-4.3-arm7-api-16/opt-robocop-1: Jb6qN24dSsONT7EqQhBrWw
+ test-android-em-4.3-arm7-api-16/opt-robocop-2: IcKGa_vhTXWOX-uWmBo2KQ
+ test-android-em-4.3-arm7-api-16/opt-robocop-3: X2hEhlT5SdGca-uiWUK6Jg
+ test-android-em-4.3-arm7-api-16/opt-robocop-4: HZQ-Z5PkSZ-n80SuQhUvfg
+ test-android-em-4.3-arm7-api-16/opt-xpcshell-1: S4j8uGwbRZaLP96gzsIl5g
+ test-android-em-4.3-arm7-api-16/opt-xpcshell-2: JD4ta2dnSQyy-NhcpXjf1Q
+ test-android-em-4.3-arm7-api-16/opt-xpcshell-3: CEzp0c8IQRyrXpVG9m9Mqw
+ test-android-em-4.3-arm7-api-16/opt-xpcshell-4: ECZ06_-MTkqhUI1S615i6Q
+ test-android-em-4.3-arm7-api-16/opt-xpcshell-5: b3pJkN-RRyS8usVO3hsa6A
+ test-android-em-4.3-arm7-api-16/opt-xpcshell-6: GsOZXKxtRjK85yNh12Nk4A
+ test-android-em-4.3-arm7-api-16/opt-xpcshell-7: SQJ8DI0EQoqHmPU-Drl83A
+ test-android-em-4.3-arm7-api-16/opt-xpcshell-8: cMsEdnX4R1eKkU9laXzeNQ
+ test-linux32-devedition/opt-cppunit: MCkyRWeRTrGIBt2X8TghHQ
+ test-linux32-devedition/opt-crashtest-e10s: HHJAJsUQSVOICH3YLwNhDQ
+ test-linux32-devedition/opt-firefox-ui-functional-local-e10s: fLR7IfykT9qbqZew4WxpqQ
+ test-linux32-devedition/opt-firefox-ui-functional-remote-e10s: YarXRjIzQUeE1oqs8XPnlg
+ test-linux32-devedition/opt-marionette-e10s: bzJUadZSSrimjR9T1moqeA
+ test-linux32-devedition/opt-mochitest-a11y: EH2dAnMAQxKr3oHk_32F0g
+ test-linux32-devedition/opt-mochitest-browser-chrome-e10s-1: N-Pn_aIsTEqKSx8kiIyN-w
+ test-linux32-devedition/opt-mochitest-browser-chrome-e10s-2: Ru4KwoHtTZmfUccQ3b9ObA
+ test-linux32-devedition/opt-mochitest-browser-chrome-e10s-3: f7TyhSscQceXRfjZSx0jwQ
+ test-linux32-devedition/opt-mochitest-browser-chrome-e10s-4: HrNVx0MQRNKxY6VNYypJSg
+ test-linux32-devedition/opt-mochitest-browser-chrome-e10s-5: Nvs-q-ogQGO3sQi_AbPTxQ
+ test-linux32-devedition/opt-mochitest-browser-chrome-e10s-6: YA2CUK_2TqudjbTGpQRGGQ
+ test-linux32-devedition/opt-mochitest-browser-chrome-e10s-7: X_wTGuJoRx23UmLI_xQyDw
+ test-linux32-devedition/opt-mochitest-chrome-1: En53pYeMTfyo-d5DXP9a2w
+ test-linux32-devedition/opt-mochitest-chrome-2: NPjKws8QRjuP5D0i8OZIZQ
+ test-linux32-devedition/opt-mochitest-chrome-3: CopeEq-lQQezek-xHjscJQ
+ test-linux32-devedition/opt-mochitest-clipboard-e10s: XkGS8U0jSuulv8mtoIL4AA
+ test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-1: ND9OweoWQPmw_69E9wt-yg
+ test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-2: MeqnASaMSPm_k5qqZTa1yw
+ test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-3: EVYJqIX-T3SC_PWf8-S9sg
+ test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-4: KeaSPWa6SWakV732dXRPKw
+ test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-5: JssGHWFdRL2sdoQjYZ1e4A
+ test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-6: JJeyHIyJQZiz5kQ9tJ75fw
+ test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-7: aPDwKQE-TKi1SmayoxPAHg
+ test-linux32-devedition/opt-mochitest-devtools-chrome-e10s-8: I7Y-0jrxR4a7VW2XwSBfCw
+ test-linux32-devedition/opt-mochitest-e10s-1: OrtwabIMSGabsoSkClJFXQ
+ test-linux32-devedition/opt-mochitest-e10s-2: Ku5m4NfyQVuenkWCB5cTnA
+ test-linux32-devedition/opt-mochitest-e10s-3: d3ZG4RmXRNem0ARFn6zo6Q
+ test-linux32-devedition/opt-mochitest-e10s-4: HR_tZqshQ82_sYYsRmCZHw
+ test-linux32-devedition/opt-mochitest-e10s-5: AGahZrthSL-Zba-KE-O9Ww
+ test-linux32-devedition/opt-mochitest-gpu-e10s: IMPHoAncR_iJdnKZgpBxzA
+ test-linux32-devedition/opt-mochitest-media-e10s-1: KNEHmb4fSR28Hpvff9ZnYw
+ test-linux32-devedition/opt-mochitest-media-e10s-2: K3Qb0M6ETgiDnP4QRX3qAw
+ test-linux32-devedition/opt-mochitest-media-e10s-3: bac5kNsiRKWXP-nxkH-htQ
+ test-linux32-devedition/opt-mochitest-webgl1-core-e10s: cBtHr3ngRV2k6D8JIyM61Q
+ test-linux32-devedition/opt-reftest-e10s-1: NGDpOr_7SVeCFbKuPc3nVg
+ test-linux32-devedition/opt-reftest-e10s-2: U2dPWC7GQgqwXCCtvwYrAQ
+ test-linux32-devedition/opt-reftest-e10s-3: chZ1l6xNR3O6UK-pX1g0_Q
+ test-linux32-devedition/opt-reftest-e10s-4: KStk_1daQNuXmLZLU048qA
+ test-linux32-devedition/opt-reftest-e10s-5: WLNon20OSIaLN7qes9-oBQ
+ test-linux32-devedition/opt-reftest-e10s-6: QQNQIJhqTRCRY87ZHy5ujA
+ test-linux32-devedition/opt-reftest-e10s-7: IVzMWdCwRDy51MPRmSb2Gw
+ test-linux32-devedition/opt-reftest-e10s-8: O0zvL0tPSX6fHx7BkzbwoQ
+ test-linux32-devedition/opt-reftest-no-accel-e10s-1: Yn8zBM-rTJ2tlEN1dzVg6A
+ test-linux32-devedition/opt-reftest-no-accel-e10s-2: BVjna_OMQuWnRKrdl-pRjw
+ test-linux32-devedition/opt-reftest-no-accel-e10s-3: brOSR-SBTD2cbUvt9CNesA
+ test-linux32-devedition/opt-reftest-no-accel-e10s-4: S1wHVnxxQs6_AkxZiwMZMQ
+ test-linux32-devedition/opt-reftest-no-accel-e10s-5: bIhEs-v9Sk6Fb9k_yReXbg
+ test-linux32-devedition/opt-reftest-no-accel-e10s-6: W4-rWeb1TYibMJs91pOUhA
+ test-linux32-devedition/opt-reftest-no-accel-e10s-7: E7fZUv6IT7qFdgFLvLh72g
+ test-linux32-devedition/opt-reftest-no-accel-e10s-8: L7YVjWpSSUONMFNJOhCswg
+ test-linux32-devedition/opt-web-platform-tests-e10s-1: QD4qxY7JT3OHTu1CzC7eig
+ test-linux32-devedition/opt-web-platform-tests-e10s-10: caFiKNizT8eZNeRdDvj9HA
+ test-linux32-devedition/opt-web-platform-tests-e10s-11: P9ESdajVRHmOkJjHbEyvPg
+ test-linux32-devedition/opt-web-platform-tests-e10s-12: WjrGNcJ7SuWx7ziX32yxjQ
+ test-linux32-devedition/opt-web-platform-tests-e10s-2: H3UIbDi9Q_-L0ykO82rMVw
+ test-linux32-devedition/opt-web-platform-tests-e10s-3: W-RLq7coQF-myUW2ziHM-w
+ test-linux32-devedition/opt-web-platform-tests-e10s-4: DpRg4auwSnWR05SCdnni3Q
+ test-linux32-devedition/opt-web-platform-tests-e10s-5: Kii5FpMfRriKUqm-kalQhQ
+ test-linux32-devedition/opt-web-platform-tests-e10s-6: Ie_yzwNfT8SXIiSnf8zTgg
+ test-linux32-devedition/opt-web-platform-tests-e10s-7: bOAmOOelQ5i1LAZid-HIPQ
+ test-linux32-devedition/opt-web-platform-tests-e10s-8: W1lcMObGRlyIPQCt-irsiQ
+ test-linux32-devedition/opt-web-platform-tests-e10s-9: Kqd0ztT8QQiSl-RvBc3hSw
+ test-linux32-devedition/opt-web-platform-tests-reftests-e10s-1: B_iK45U1R4edEthj6XTPsw
+ test-linux32-devedition/opt-web-platform-tests-reftests-e10s-2: SLv4Ji90QUCgoTvqlgdKWw
+ test-linux32-devedition/opt-web-platform-tests-reftests-e10s-3: StDTmQiISgGx_J4zRv83uA
+ test-linux32-devedition/opt-web-platform-tests-reftests-e10s-4: e0UA4lCoS_WQv-9B0WySWg
+ test-linux32-devedition/opt-web-platform-tests-reftests-e10s-5: Cr1I57xxQ9W6UhP7G3XM1w
+ test-linux32-devedition/opt-web-platform-tests-reftests-e10s-6: XqBrHaQjSnOX-c7WFNJJJg
+ test-linux32-devedition/opt-web-platform-tests-wdspec-e10s: L8s_LXdOR_a9nN4jeOp_PQ
+ test-linux32-devedition/opt-xpcshell-1: HxBDANLlQ5iyOFUJ73d2gA
+ test-linux32-devedition/opt-xpcshell-2: LLq3ozdvS_apCRZs96iuZg
+ test-linux32-devedition/opt-xpcshell-3: VyKtls4tTzKUgdx5cQT2Gw
+ test-linux32-devedition/opt-xpcshell-4: ZH1ztj77RyCwTyF-vKud6w
+ test-linux32-devedition/opt-xpcshell-5: T0q4pdKCR-iHFc5FKrrSmg
+ test-linux32-devedition/opt-xpcshell-6: U6oeD8oiQ4GbcFvyt7mvHg
+ test-linux32-devedition/opt-xpcshell-7: MIhfaGbCTS2EtoDDcxTiYg
+ test-linux32-devedition/opt-xpcshell-8: Tr0d73CYSLaBYkEpEBpFIQ
+ test-linux32-nightly/opt-cppunit: PPYEQP_GTjqdGFAdjlKj5Q
+ test-linux32-nightly/opt-crashtest-e10s: Om_Y7m8RSZWUCc9Si2p_Ow
+ test-linux32-nightly/opt-firefox-ui-functional-local-e10s: TX-lr7MnRAi10Jg9KlMV1A
+ test-linux32-nightly/opt-firefox-ui-functional-remote-e10s: LXrvwiIwSU-LZKae0Lb8tw
+ test-linux32-nightly/opt-gtest: JukTBPnoSrSJNFqWUOvagw
+ test-linux32-nightly/opt-marionette-e10s: HGb4Y4uzRGC3-3TRI9xMMw
+ test-linux32-nightly/opt-mochitest-a11y: DzjXwxHLSCyjSZW1k_Ji-A
+ test-linux32-nightly/opt-mochitest-browser-chrome-e10s-1: Vn4MAt4GQTC9ksQtx-l6VA
+ test-linux32-nightly/opt-mochitest-browser-chrome-e10s-2: P8xjtpHbTNaS-dcpya1WXA
+ test-linux32-nightly/opt-mochitest-browser-chrome-e10s-3: W5JYHUgyQ7G9hYIH8y_r8Q
+ test-linux32-nightly/opt-mochitest-browser-chrome-e10s-4: fed-G_IoTeGfb0aK5PKHSw
+ test-linux32-nightly/opt-mochitest-browser-chrome-e10s-5: TPeYJWLQSnyYNF-Ar4mrpg
+ test-linux32-nightly/opt-mochitest-browser-chrome-e10s-6: I-6-fkX0TqypKwR7ZF72sw
+ test-linux32-nightly/opt-mochitest-browser-chrome-e10s-7: ETNum2VcQlmbxuzEdqoXdg
+ test-linux32-nightly/opt-mochitest-chrome-1: RI5Qc5deTAyfhXB34kFovQ
+ test-linux32-nightly/opt-mochitest-chrome-2: DObIRcEkR-SQOv_0IuegsQ
+ test-linux32-nightly/opt-mochitest-chrome-3: E08Q0JVHREOWLrb3PIRaBQ
+ test-linux32-nightly/opt-mochitest-clipboard-e10s: LVqarKFsSdOsqTWPDIdgrA
+ test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-1: M4sg_0ePQxy3r3LIKG-twg
+ test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-2: IBvvodG5SYCD_JABS3C7TA
+ test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-3: Mma-zNoYSO2Rj1IPaDhZFQ
+ test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-4: MGHKUkjWT_-TrDhpUv82wQ
+ test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-5: CnspVVyTT6CUSBWX7xNkJw
+ test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-6: PfIKFcpaTXaTFc8K9YQlwQ
+ test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-7: BEHqqb4BSZutqvSeHs_18g
+ test-linux32-nightly/opt-mochitest-devtools-chrome-e10s-8: P0M4cIehS7C4o1P-pC6SIA
+ test-linux32-nightly/opt-mochitest-e10s-1: SNEWfW3qQb2P77Um1CCCAQ
+ test-linux32-nightly/opt-mochitest-e10s-2: Dk6kSwqyQrqKLkZZcQDnNw
+ test-linux32-nightly/opt-mochitest-e10s-3: df63Sxm3Rna7cYGgigcWkA
+ test-linux32-nightly/opt-mochitest-e10s-4: crFp7gOATo-UxtQGTs-urg
+ test-linux32-nightly/opt-mochitest-e10s-5: Jz_kLW_wSoyFgOyVDArzcw
+ test-linux32-nightly/opt-mochitest-gpu-e10s: apppS9fNTVKeOcu1y8JOBw
+ test-linux32-nightly/opt-mochitest-media-e10s-1: Db6LilkZTNqq89gsA0bRpA
+ test-linux32-nightly/opt-mochitest-media-e10s-2: XpCkuk3FTxqNebLWQxTftQ
+ test-linux32-nightly/opt-mochitest-media-e10s-3: OV0OnxnUQ12_cM1VJyQlKQ
+ test-linux32-nightly/opt-mochitest-webgl1-core-e10s: O4tPc1rBRFSOPmi5x3Hm8Q
+ test-linux32-nightly/opt-reftest-e10s-1: Ts5wkkfoQnm4v-z5kYBy3g
+ test-linux32-nightly/opt-reftest-e10s-2: LTrolNj2RO264GNe3I97oQ
+ test-linux32-nightly/opt-reftest-e10s-3: KIJdfqqHROemmCkdPxrBJw
+ test-linux32-nightly/opt-reftest-e10s-4: HEF6L0beRu6Rdj-_7LRGMw
+ test-linux32-nightly/opt-reftest-e10s-5: dP3sPG5sRcyO5koXpbo_4A
+ test-linux32-nightly/opt-reftest-e10s-6: Lcp8qmZaSi-ziCtBMD4zyQ
+ test-linux32-nightly/opt-reftest-e10s-7: LEH7D21TTImzaKcdq5kYCA
+ test-linux32-nightly/opt-reftest-e10s-8: GGDrh3u8QrmMPbwfv04KgA
+ test-linux32-nightly/opt-reftest-no-accel-e10s-1: DAhqB4SCQ2y0PmYGuM8A4w
+ test-linux32-nightly/opt-reftest-no-accel-e10s-2: abpHeo36TRmMougGwEJLdw
+ test-linux32-nightly/opt-reftest-no-accel-e10s-3: LbcCpNATRkmT_A18ysjwbg
+ test-linux32-nightly/opt-reftest-no-accel-e10s-4: Zf3uxBgkRzuKUajodsdFWw
+ test-linux32-nightly/opt-reftest-no-accel-e10s-5: eUwg4ySyQHy9xmD-u63hNw
+ test-linux32-nightly/opt-reftest-no-accel-e10s-6: AmX3tHgKSIGEU9bR3kJQ2w
+ test-linux32-nightly/opt-reftest-no-accel-e10s-7: T6wNztvYS5WfHjdswmf__Q
+ test-linux32-nightly/opt-reftest-no-accel-e10s-8: MUayms7FRh6CjSVcp3FW-A
+ test-linux32-nightly/opt-web-platform-tests-e10s-1: eRC9J1oNSQSGa0jTIB0nLQ
+ test-linux32-nightly/opt-web-platform-tests-e10s-10: WQxQIasbT7OmhK-9JHgBFA
+ test-linux32-nightly/opt-web-platform-tests-e10s-11: P4WJkiBZSHyji2aK9kKE3A
+ test-linux32-nightly/opt-web-platform-tests-e10s-12: VKDR4nUFSeCuNJ_SburCbg
+ test-linux32-nightly/opt-web-platform-tests-e10s-2: RQXxOfRPTOaUMxh2At9O5Q
+ test-linux32-nightly/opt-web-platform-tests-e10s-3: XXN8UGf1RSCs2SmTpke7jQ
+ test-linux32-nightly/opt-web-platform-tests-e10s-4: MijSfbGNSjygPlyNvDQ7jQ
+ test-linux32-nightly/opt-web-platform-tests-e10s-5: bRQhBEcASKKlLc5ktOxjIw
+ test-linux32-nightly/opt-web-platform-tests-e10s-6: H2LKl26xQBGk22u2nJmZyA
+ test-linux32-nightly/opt-web-platform-tests-e10s-7: D2AtE-7BRM6nkozpUpBmGQ
+ test-linux32-nightly/opt-web-platform-tests-e10s-8: aIXXkjNoQEGqluBOfVfHDg
+ test-linux32-nightly/opt-web-platform-tests-e10s-9: RLjdhK-qSVi8JhLOgBcI6Q
+ test-linux32-nightly/opt-web-platform-tests-reftests-e10s-1: cDTB_RPIQH2BI-1A1LtrDA
+ test-linux32-nightly/opt-web-platform-tests-reftests-e10s-2: KI9FS1rZRwSW_jix4oIk2w
+ test-linux32-nightly/opt-web-platform-tests-reftests-e10s-3: FnsPx5WCSxKWrdqAn6P_Og
+ test-linux32-nightly/opt-web-platform-tests-reftests-e10s-4: U04lHLLtR3aO1wM1kpEQVg
+ test-linux32-nightly/opt-web-platform-tests-reftests-e10s-5: KrnFTvukQcSSjUVdP4MTWw
+ test-linux32-nightly/opt-web-platform-tests-reftests-e10s-6: LkrzioEkSGe0ZlkkN7EYmA
+ test-linux32-nightly/opt-web-platform-tests-wdspec-e10s: Z6et_4CzRq-ZUO5AKqPoXQ
+ test-linux32-nightly/opt-xpcshell-1: SmV8Z0RYS6OJDyjTc87qhA
+ test-linux32-nightly/opt-xpcshell-2: UGIucizpRoq34qrR_7lDhg
+ test-linux32-nightly/opt-xpcshell-3: DYjlV-iETi2BqmDrzGyYgQ
+ test-linux32-nightly/opt-xpcshell-4: e69SjRl_T7e0Opm-dRnUyw
+ test-linux32-nightly/opt-xpcshell-5: EuzXV2-xS8eOz8H8J60nTw
+ test-linux32-nightly/opt-xpcshell-6: TpSS4GOjStmEYAchmYhGzA
+ test-linux32-nightly/opt-xpcshell-7: XEPWUpuLRtm_PD0nuharhQ
+ test-linux32-nightly/opt-xpcshell-8: UduDPE6LQoSxJPrFbh34Bg
+ test-linux32/debug-cppunit: OLHk3GAUTC2h5-racGOOJw
+ test-linux32/debug-crashtest: Dn6ldoWGTEyG4UBG2BqGig
+ test-linux32/debug-crashtest-e10s: fnhPQ7gxT-WfY3Aq3m_5jA
+ test-linux32/debug-firefox-ui-functional-local-e10s: YclvI4EpQMu4dpYV1Zjo2A
+ test-linux32/debug-firefox-ui-functional-remote-e10s: RZFTRYG_Qvi9mUbUo44G6Q
+ test-linux32/debug-gtest: CCyyLcQxRZisBuhh_iXRYQ
+ test-linux32/debug-marionette-e10s: IrgjKlyNRgGhrgRJh9a_-Q
+ test-linux32/debug-mochitest-1: KhIaxmxxSIihCWQOz37rPQ
+ test-linux32/debug-mochitest-10: EslHuVBdR8qIQ06Ju96agg
+ test-linux32/debug-mochitest-11: BeF-2svjSGKg0X-H1bGteg
+ test-linux32/debug-mochitest-12: ZCuxOeYFRiqV-n-6n35f4g
+ test-linux32/debug-mochitest-13: S53REvSDQlusx5eTKGwwdw
+ test-linux32/debug-mochitest-14: BlgZhRhGTC2u5rIKifCdnQ
+ test-linux32/debug-mochitest-15: EGm08UUoTMumMCPOInk0_A
+ test-linux32/debug-mochitest-16: EKfcPabSRNOH34V1CpCO3g
+ test-linux32/debug-mochitest-2: ObQUr1TWTiCUO_X_ONXKEg
+ test-linux32/debug-mochitest-3: JDBKvrYCTLOmYfCGflqbdA
+ test-linux32/debug-mochitest-4: VL6AK40ERse_QmQYGZ9bQQ
+ test-linux32/debug-mochitest-5: Y8e5uZ9QRsiqwI5KrqQ1aQ
+ test-linux32/debug-mochitest-6: FYQuk0IZR1S_FnWOv0ZY9A
+ test-linux32/debug-mochitest-7: ddBn-QJiQV2rlBwB2Y7wug
+ test-linux32/debug-mochitest-8: Xbp_gABmTv6pM3sT8Hf5rw
+ test-linux32/debug-mochitest-9: Td7nyZUkRlad9EwHHsYaVw
+ test-linux32/debug-mochitest-a11y: YDB6nybdQjOt2ZcofSrl7A
+ test-linux32/debug-mochitest-browser-chrome-e10s-1: VCkMNtDVTXm46ThwZDv4uA
+ test-linux32/debug-mochitest-browser-chrome-e10s-10: Ht8KOsWrQ9ixqMF8q1ueQQ
+ test-linux32/debug-mochitest-browser-chrome-e10s-11: I_gd95f1Q6m2oU3WxzbkCw
+ test-linux32/debug-mochitest-browser-chrome-e10s-12: bEz7sUBfS9qWQBpDDg-Wcw
+ test-linux32/debug-mochitest-browser-chrome-e10s-13: bNDh7t-VSIqvf8pLPzItWw
+ test-linux32/debug-mochitest-browser-chrome-e10s-14: WkJ0AK7qQReULMAqoFlmKQ
+ test-linux32/debug-mochitest-browser-chrome-e10s-15: AiXY3mI3T_6edRtxZIu71w
+ test-linux32/debug-mochitest-browser-chrome-e10s-16: Z2kvdN-KSfKkKRmzY0r_gg
+ test-linux32/debug-mochitest-browser-chrome-e10s-2: SukZJ2rnQ0W5vdqLK3a08g
+ test-linux32/debug-mochitest-browser-chrome-e10s-3: EGNm3AiQTP6df7rXOQhbdg
+ test-linux32/debug-mochitest-browser-chrome-e10s-4: YRqegZyeTfudcpzBEiGypA
+ test-linux32/debug-mochitest-browser-chrome-e10s-5: Y0oxOn9AQpqSwopHuocc7A
+ test-linux32/debug-mochitest-browser-chrome-e10s-6: Pr-VOROcRL6uO_uslc0t_w
+ test-linux32/debug-mochitest-browser-chrome-e10s-7: DwzJhDoRSve2PAH5qWsmHA
+ test-linux32/debug-mochitest-browser-chrome-e10s-8: cy3ufCR0TZep6Dzf7UdKVg
+ test-linux32/debug-mochitest-browser-chrome-e10s-9: T68yzrGtSy-uq5eXmbj5zg
+ test-linux32/debug-mochitest-chrome-1: d76Y5GF8SlGFPUICmiMNlQ
+ test-linux32/debug-mochitest-chrome-2: Q96WpnV2QyKwkQ0j_19dNA
+ test-linux32/debug-mochitest-chrome-3: VpQcUCZfQRuKK8bK2X0fbA
+ test-linux32/debug-mochitest-clipboard: dcI-4o95RJGw5wJhp1Zn6g
+ test-linux32/debug-mochitest-clipboard-e10s: BmRrkczrSia24-gdMu76fg
+ test-linux32/debug-mochitest-e10s-1: HjMXe2hlTeupGIiC0cJjQw
+ test-linux32/debug-mochitest-e10s-10: KLMG5vJjQ5eS3UEUH_R_Jg
+ test-linux32/debug-mochitest-e10s-11: Xdb2OCmaSlGKuRp1KhJ2Bw
+ test-linux32/debug-mochitest-e10s-12: YZ0uaQoiRi6rKUXw1grWuw
+ test-linux32/debug-mochitest-e10s-13: dm46hAU_R92n7X_v1FaBvA
+ test-linux32/debug-mochitest-e10s-14: UPwStxKeQbWhAG64X5Mg0A
+ test-linux32/debug-mochitest-e10s-15: eQYrwtTmRw29xxremSP_uQ
+ test-linux32/debug-mochitest-e10s-16: DqgL-wI9RUS0qccAFeCe1g
+ test-linux32/debug-mochitest-e10s-2: OTLUVRlLQ3qm56la1LXB5A
+ test-linux32/debug-mochitest-e10s-3: L_YOr8M6TvW-DZwUBTp2-Q
+ test-linux32/debug-mochitest-e10s-4: eF18rMLcRsGWfJfsNLcyJg
+ test-linux32/debug-mochitest-e10s-5: dliHVW9NSPaRDcvFZIJjjA
+ test-linux32/debug-mochitest-e10s-6: UYWaHz22RNCJbR8swesMJg
+ test-linux32/debug-mochitest-e10s-7: PzOxi8X4R2aEKFWMI9m9-g
+ test-linux32/debug-mochitest-e10s-8: cvcyN2lkSYOY7qpGylplGw
+ test-linux32/debug-mochitest-e10s-9: D3cZrYsKRuKkteZchkgwsg
+ test-linux32/debug-mochitest-gpu: R1xuGApaTmONarvsERGn5g
+ test-linux32/debug-mochitest-gpu-e10s: NPpva8CuSKKufLw3yB7pmg
+ test-linux32/debug-mochitest-media-e10s-1: Gj6OVTzBR2-54bsVtPBKbA
+ test-linux32/debug-mochitest-media-e10s-2: APXKeP8CSYyg7FeEYHsqGg
+ test-linux32/debug-mochitest-media-e10s-3: YNO1DkogSf2e1sWYB1oFAQ
+ test-linux32/debug-mochitest-webgl1-core: aULT36fYShCGxlfgdoFGAA
+ test-linux32/debug-mochitest-webgl1-core-e10s: RdxSzRabRlWmEWlPRr_icg
+ test-linux32/debug-reftest-1: e6Qr16ApSvWzOZn58tzJnQ
+ test-linux32/debug-reftest-2: eTeDlJKZQtqq2xSwlXcVlQ
+ test-linux32/debug-reftest-3: Osrs6Xa4T8aXi5vrYXS4yA
+ test-linux32/debug-reftest-4: ZRLCQf0cQmuJM5BtbVbT9A
+ test-linux32/debug-reftest-5: aCcmdsctRiGKuRkFhrkq3w
+ test-linux32/debug-reftest-6: XIggZ48aSTS4pmd_2ZUAGg
+ test-linux32/debug-reftest-7: OP2D9VrkR_ONTLrvkjlkCQ
+ test-linux32/debug-reftest-8: G40VWcsmSgy_KqaF3vuwCA
+ test-linux32/debug-reftest-e10s-1: KD9VDLPATpS1zCY1twJ3Ag
+ test-linux32/debug-reftest-e10s-2: FeZ_rmZSRmiwj3BLFqxArQ
+ test-linux32/debug-reftest-e10s-3: fp62BNSLR3-JqBYe2c21nA
+ test-linux32/debug-reftest-e10s-4: GZNYplqlQRO5Am9s_fM6YQ
+ test-linux32/debug-reftest-e10s-5: dCTk9lxtTyaceO1f3VbQgQ
+ test-linux32/debug-reftest-e10s-6: C6xd7S6HRGCp-8fw352U4Q
+ test-linux32/debug-reftest-e10s-7: b3g926OLSdKOS65erDpfXg
+ test-linux32/debug-reftest-e10s-8: L4Sg8dinSmev3VEl1j6ZqA
+ test-linux32/debug-reftest-no-accel-e10s-1: VjFF6TVYSFeGcoIN8fNWkw
+ test-linux32/debug-reftest-no-accel-e10s-2: ak9fVlpxTxS-3PvrOIGznA
+ test-linux32/debug-reftest-no-accel-e10s-3: YXK1i7H6Qd2jfq0jc-k-Rw
+ test-linux32/debug-reftest-no-accel-e10s-4: F59NX2p-Q-aJKE-zOa7j7g
+ test-linux32/debug-reftest-no-accel-e10s-5: aQoCO4k3TDCnCF-Nu92eAg
+ test-linux32/debug-reftest-no-accel-e10s-6: eo-sEirXTbqpgiJEzr3x3w
+ test-linux32/debug-reftest-no-accel-e10s-7: f657XHw9SJKtMbiVIjg0RA
+ test-linux32/debug-reftest-no-accel-e10s-8: IpNjp3waTzmjXF4Zw3oT5w
+ test-linux32/debug-web-platform-tests-1: eGilAUheSBeiKBa3XkMXqw
+ test-linux32/debug-web-platform-tests-10: eX-y6-K_Sh-dHy5lfxeaLQ
+ test-linux32/debug-web-platform-tests-11: OvuxHl-gQ5mJiu-WSl8Maw
+ test-linux32/debug-web-platform-tests-12: Vnk2Liw6SleQ_u9TiVfpRw
+ test-linux32/debug-web-platform-tests-13: Px1cebmKRki9c8j1kYPp2Q
+ test-linux32/debug-web-platform-tests-14: Q5iFFv6VT3mrTmQI--1tEg
+ test-linux32/debug-web-platform-tests-15: OTFAjys5TDuG6u-LmaXk1A
+ test-linux32/debug-web-platform-tests-16: WwgOq0qyTbGUIH5Vh6RNbQ
+ test-linux32/debug-web-platform-tests-17: GGSjYSBBQHGNemdMMM0qag
+ test-linux32/debug-web-platform-tests-18: FuQTRGSdT4uSd8rVKDKuWg
+ test-linux32/debug-web-platform-tests-2: T0WvG37oTzO_MsWDQIGakg
+ test-linux32/debug-web-platform-tests-3: Z72CFXpoRnqFmZ3eOrKqRQ
+ test-linux32/debug-web-platform-tests-4: TB5sEQ_iRnWPbOy28aR18Q
+ test-linux32/debug-web-platform-tests-5: TxVoIUzsRjCR8v1wMTGP-g
+ test-linux32/debug-web-platform-tests-6: KAedvH8lT9OF0NU26z8DLA
+ test-linux32/debug-web-platform-tests-7: GsKIIlJuQYqAkER2iz2RtQ
+ test-linux32/debug-web-platform-tests-8: Iv4hnMqHQuqoehQZguyssg
+ test-linux32/debug-web-platform-tests-9: RCJjL4C3T-GgC_Qx6nmUyw
+ test-linux32/debug-web-platform-tests-e10s-1: DDmY5SZDQMq75XENjoQu4Q
+ test-linux32/debug-web-platform-tests-e10s-10: IszBPSNgRw6TEcz6_RbgBA
+ test-linux32/debug-web-platform-tests-e10s-11: D15a8fAcRJ6_qGa4JCnKtg
+ test-linux32/debug-web-platform-tests-e10s-12: TQvyx-YaSme6VEnLse-VQw
+ test-linux32/debug-web-platform-tests-e10s-13: IriGxjSXTISzVtVJR6cQ3A
+ test-linux32/debug-web-platform-tests-e10s-14: WCJLM1QIQS6-9c_yi5PaRg
+ test-linux32/debug-web-platform-tests-e10s-15: CBkKwkBcTQita5Wvj12Aog
+ test-linux32/debug-web-platform-tests-e10s-16: Ilmd94l8QPuH1thfId94mw
+ test-linux32/debug-web-platform-tests-e10s-17: AHwBwBvoTmyMHAaRvC21SQ
+ test-linux32/debug-web-platform-tests-e10s-18: KxYD1UdhRCKEISsnVD-aaA
+ test-linux32/debug-web-platform-tests-e10s-2: Q-Ogz37KQWKtSavBrNgjUw
+ test-linux32/debug-web-platform-tests-e10s-3: e-1Hxx9eS12NBBAJ9f5OeA
+ test-linux32/debug-web-platform-tests-e10s-4: QjDGCJ_HSwq0cIyxeqiRuQ
+ test-linux32/debug-web-platform-tests-e10s-5: J9r2oJHNSlSS_qTFkYBrZw
+ test-linux32/debug-web-platform-tests-e10s-6: IUxO6-4uTOic0iyaz2jlrw
+ test-linux32/debug-web-platform-tests-e10s-7: AZviKb77RFu1s-ieP5tbWw
+ test-linux32/debug-web-platform-tests-e10s-8: TsECj-DNQTurMXs6CNfViA
+ test-linux32/debug-web-platform-tests-e10s-9: DQnQ_pdqSZmU7tS-4MAQog
+ test-linux32/debug-web-platform-tests-reftests-1: I0jyrWg9RzCqPldc_-ClQA
+ test-linux32/debug-web-platform-tests-reftests-2: QUiepn5uSoy2wms3IHmBTA
+ test-linux32/debug-web-platform-tests-reftests-3: dghY6AL3Rxy8UrRN7_pBbw
+ test-linux32/debug-web-platform-tests-reftests-4: aPlXWXcWQL6K3MLoPyyR4w
+ test-linux32/debug-web-platform-tests-reftests-5: SEXuBd1pStuaHp1uw5RK0w
+ test-linux32/debug-web-platform-tests-reftests-6: WB9e6EXlTOKQXBrXlW5BoQ
+ test-linux32/debug-web-platform-tests-reftests-e10s-1: ZOcale_1R7a_x2K23g31Vw
+ test-linux32/debug-web-platform-tests-reftests-e10s-2: Yk2pggQjSyiswWBMaHxPiQ
+ test-linux32/debug-web-platform-tests-reftests-e10s-3: K3YNrVxaTjWlKVgRaRCfLQ
+ test-linux32/debug-web-platform-tests-reftests-e10s-4: M8AnSaY0ToyJvVClYvyTPA
+ test-linux32/debug-web-platform-tests-reftests-e10s-5: YDMMfixBQCKFVp4xAxsQ9A
+ test-linux32/debug-web-platform-tests-reftests-e10s-6: ZXydNs6tTIuUFSJ8NSuRiw
+ test-linux32/debug-web-platform-tests-wdspec-e10s: KeoGsDXXRI2MlbEUrk0HKw
+ test-linux32/debug-xpcshell-1: DropJjywROKl1EnwUKpvZw
+ test-linux32/debug-xpcshell-10: OWit4m86Rieeun_9J_Z6_A
+ test-linux32/debug-xpcshell-11: K6sbcpORSTWJLMFvhkLG-w
+ test-linux32/debug-xpcshell-12: SuTPv7CfTbOhPHxSdiFD7g
+ test-linux32/debug-xpcshell-2: PIq_9SB3SUarLEjX7Nju7Q
+ test-linux32/debug-xpcshell-3: KVZ6kE-FQMSaSyeRKeHgXg
+ test-linux32/debug-xpcshell-4: Qun9hsT1TYyUTJydO9XuDg
+ test-linux32/debug-xpcshell-5: e5ICZEaKQZySLNbunjb2lA
+ test-linux32/debug-xpcshell-6: KTKPjq3nTiasQti_3Hi7ag
+ test-linux32/debug-xpcshell-7: YFuJr9UQQ9ae_FvoZtbEPA
+ test-linux32/debug-xpcshell-8: LYBkafx-THWcT-O7zmjDRA
+ test-linux32/debug-xpcshell-9: Fre3PYxIQjqRiwhfWHXx2Q
+ test-linux64-asan/opt-cppunit: aAcpV4iZTtuYwWdcOesW9w
+ test-linux64-asan/opt-crashtest-e10s: dD7tMnRJQg27zpT2y2nwEQ
+ test-linux64-asan/opt-firefox-ui-functional-local-e10s: DMkDPcMpRhiDx7FddbNKrg
+ test-linux64-asan/opt-firefox-ui-functional-remote-e10s: djGcA7ZXQ72Oolbtivik7Q
+ test-linux64-asan/opt-gtest: Om4JwJm8RpiycwIWUItMoA
+ test-linux64-asan/opt-marionette-e10s: DL1pKx-BTs6lmX1w7Z3OOg
+ test-linux64-asan/opt-marionette-headless-e10s: XeTRPbSQQ-eu1mfFAAOXqw
+ test-linux64-asan/opt-mochitest-a11y: TH3iGsCFQS-S_heQ4eZVoA
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-1: V8J4TK0ZQaqGfZ-00AtVTg
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-10: dNwgG-jPQHuo1fgCnCx9Nw
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-11: F1NHPCQaQqGP_f4bHscMYQ
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-12: PKgy6vibQeidPDp97MdtkA
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-13: LsM9ZDngSye22udXSurIpA
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-14: TLRf5VmARvaWT7k4NndAqQ
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-15: SiEr9B_eRSuFx3PA6edCwg
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-16: OuOe9_ACTJWesEAlknUOaA
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-2: b6KcipG4TQ-fdXasthcpoQ
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-3: SedD8Mv3Tt6b_LP8EmDa_A
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-4: AIY8xqU7TuaPXnXndUzgCQ
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-5: GPLu8tdxSbi_mCaLTJfCTQ
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-6: FmxiU2EnQ-aLP0NCgQ5_8Q
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-7: ew-B5wQOTnSGglykyOWYfw
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-8: YSsf3dWUQliAzGH_IaQZsw
+ test-linux64-asan/opt-mochitest-browser-chrome-e10s-9: HBT68uolR0-pOywpNVbeGQ
+ test-linux64-asan/opt-mochitest-chrome-1: LfuIWnQDSKGanb--MFa-jA
+ test-linux64-asan/opt-mochitest-chrome-2: QDqUVT5zRj6NaE4DdBIogw
+ test-linux64-asan/opt-mochitest-chrome-3: FPCMVLIjQ1K3q7xEjrNzlw
+ test-linux64-asan/opt-mochitest-clipboard-e10s: ecyh-iVpS42O8NYcC9QUSg
+ test-linux64-asan/opt-mochitest-devtools-chrome-e10s-1: KdkAMvfgSr-EW_uUfpomUQ
+ test-linux64-asan/opt-mochitest-devtools-chrome-e10s-2: JnWFVVQaRZSO17HfB96jXQ
+ test-linux64-asan/opt-mochitest-devtools-chrome-e10s-3: YOhxF82lTWiEX-Fi9SIX8w
+ test-linux64-asan/opt-mochitest-devtools-chrome-e10s-4: YSw-rDY4Q0KM5KGXTh_MFA
+ test-linux64-asan/opt-mochitest-devtools-chrome-e10s-5: PZpHhMfKQYyM-V5IggtwDg
+ test-linux64-asan/opt-mochitest-devtools-chrome-e10s-6: PxvW_b9DRlKdkBeDZ6mH7g
+ test-linux64-asan/opt-mochitest-devtools-chrome-e10s-7: b_AqXTDsTY2ppYzmDoHgbw
+ test-linux64-asan/opt-mochitest-devtools-chrome-e10s-8: H0gIxPD9RI6k_G2yL1TsMw
+ test-linux64-asan/opt-mochitest-e10s-1: cLKNkGfOQ4iebczTcUNVeQ
+ test-linux64-asan/opt-mochitest-e10s-10: My1C2HZYRXOwH3LtajnMZQ
+ test-linux64-asan/opt-mochitest-e10s-2: d_vxROhlT6WaY-4kuQ8GNA
+ test-linux64-asan/opt-mochitest-e10s-3: axIvuFstQ6ytPSRbRmS4fQ
+ test-linux64-asan/opt-mochitest-e10s-4: FgMtJP5FR5KyNVaZCF_HFA
+ test-linux64-asan/opt-mochitest-e10s-5: DyGGbdN-Qh2BTch0mMAf-g
+ test-linux64-asan/opt-mochitest-e10s-6: QBwyAwGVRNidmQAu22TA4g
+ test-linux64-asan/opt-mochitest-e10s-7: BEPa_302RmK5vvS62VOLrw
+ test-linux64-asan/opt-mochitest-e10s-8: G29NpvqoQQGSbHSkjs3HYw
+ test-linux64-asan/opt-mochitest-e10s-9: DHsDPpv6SN6Mwp9jZ6pBBw
+ test-linux64-asan/opt-mochitest-gpu-e10s: CU0CsfaxT7arvzzXTqBa9w
+ test-linux64-asan/opt-mochitest-media-e10s-1: e5JJlV-VSXSERLviLF70hA
+ test-linux64-asan/opt-mochitest-media-e10s-2: QYs1ivl_QWGesGO_TyBZyg
+ test-linux64-asan/opt-mochitest-media-e10s-3: UtdNnYOlTDaWR_NYIsQVZQ
+ test-linux64-asan/opt-mochitest-webgl1-core-e10s: HkPrHO2HQ9GAP6XRkpkAPQ
+ test-linux64-asan/opt-mochitest-webgl1-ext-e10s: IOBAOF4GSnmsklVIhAT_VQ
+ test-linux64-asan/opt-reftest-e10s-1: Ih7_O2f5Rze7WzxhAU7yIw
+ test-linux64-asan/opt-reftest-e10s-2: LhIrSa1ZSWuMqoaHSj06IA
+ test-linux64-asan/opt-reftest-e10s-3: TYT1vtRmQKiatixvnouNCg
+ test-linux64-asan/opt-reftest-e10s-4: XjL03xMQR1Gz9Svs4750-w
+ test-linux64-asan/opt-reftest-e10s-5: MQRFNMk5Rtau_6c2zEKcJg
+ test-linux64-asan/opt-reftest-e10s-6: Jw7c7mAuQSWnFklPEP5MhQ
+ test-linux64-asan/opt-reftest-e10s-7: SMBrUtaSQ66tc7rzXgjuFw
+ test-linux64-asan/opt-reftest-e10s-8: fn7sxlCiQ4aJuTaqM0gEAQ
+ test-linux64-asan/opt-reftest-no-accel-e10s-1: bbPUTmO-QT2-7mYoFyAcOg
+ test-linux64-asan/opt-reftest-no-accel-e10s-2: LGVe1WM6SsO0xmpFNHAEnA
+ test-linux64-asan/opt-reftest-no-accel-e10s-3: bPPwnCK0Q5O583QNIgOOsQ
+ test-linux64-asan/opt-reftest-no-accel-e10s-4: XdXlnGpzTDulEFmObD8oCg
+ test-linux64-asan/opt-reftest-no-accel-e10s-5: aK6g4etMTqeZXwvMK3vgOA
+ test-linux64-asan/opt-reftest-no-accel-e10s-6: c1CUF8G0Sx-NIBot_fcr-g
+ test-linux64-asan/opt-reftest-no-accel-e10s-7: AC9MWe3CSmiIywLyhv-2Cw
+ test-linux64-asan/opt-reftest-no-accel-e10s-8: YjCEqabIRK2MxRwYrAi9IQ
+ test-linux64-asan/opt-telemetry-tests-client-e10s: AleNPXuETn-CG8HBE09nxw
+ test-linux64-asan/opt-web-platform-tests-e10s-1: ImyA-70MSJyL6caHkRQkkw
+ test-linux64-asan/opt-web-platform-tests-e10s-10: Gl_L4ZaiTUW5a7oBq-Nlzg
+ test-linux64-asan/opt-web-platform-tests-e10s-11: QETh5-t0T7Oxsk99xsVtXw
+ test-linux64-asan/opt-web-platform-tests-e10s-12: fn6E9rFrSv-T8qz3uNrIMw
+ test-linux64-asan/opt-web-platform-tests-e10s-2: ZzHbZfo6SPqskJx7eA0n1A
+ test-linux64-asan/opt-web-platform-tests-e10s-3: LZUqKFBoR6WK3Od_0z924A
+ test-linux64-asan/opt-web-platform-tests-e10s-4: YMhQyd51SpWMzlH-wCAGfQ
+ test-linux64-asan/opt-web-platform-tests-e10s-5: DuLygXDNT_WT-S2sh7Qijg
+ test-linux64-asan/opt-web-platform-tests-e10s-6: Wyoin6VxQLGKngtIkl_Shg
+ test-linux64-asan/opt-web-platform-tests-e10s-7: dkmcbEnMQ6yjs_pVuqlsjw
+ test-linux64-asan/opt-web-platform-tests-e10s-8: cRnQPSv5T4SD4iFL4WeBqg
+ test-linux64-asan/opt-web-platform-tests-e10s-9: Ebc-X-5zRWGm49ZuXgjXYw
+ test-linux64-asan/opt-web-platform-tests-reftests-e10s-1: EkpA7sb_SnOCGtFovSRYAA
+ test-linux64-asan/opt-web-platform-tests-reftests-e10s-2: THKMsmAmQ0K06Of_-9kqxw
+ test-linux64-asan/opt-web-platform-tests-reftests-e10s-3: I_CoyKApTfGbQWHymcRcow
+ test-linux64-asan/opt-web-platform-tests-reftests-e10s-4: XCcxaOivS8i30XFV_R6iKQ
+ test-linux64-asan/opt-web-platform-tests-reftests-e10s-5: UxSwRLdtTiOTzbR5wua70g
+ test-linux64-asan/opt-web-platform-tests-reftests-e10s-6: NZXTomp7TH6CoAJFyBwTQA
+ test-linux64-asan/opt-web-platform-tests-wdspec-e10s: ClXgzy9MTZCdEucG2oUhlA
+ test-linux64-asan/opt-xpcshell-1: YTsOlqYnRpyNxC5I0LiIIw
+ test-linux64-asan/opt-xpcshell-2: UIqGH5zOSsOeX-nhymXazg
+ test-linux64-asan/opt-xpcshell-3: Y_salFF1QnGPDOsmkVbsxg
+ test-linux64-asan/opt-xpcshell-4: X1h0v5RAQyeKiSHg2LfbYQ
+ test-linux64-asan/opt-xpcshell-5: btl6bJOfRsOqS-Vwac8DVw
+ test-linux64-asan/opt-xpcshell-6: IfaHB_haTPqoMACQdGqF-A
+ test-linux64-asan/opt-xpcshell-7: Z6zEBor1RQ6L0OQkGd1DoQ
+ test-linux64-asan/opt-xpcshell-8: Lt7IyA1lQqClWRGI0iDGsg
+ test-linux64-devedition/opt-cppunit: NWf3sxBxQRasRZImqM2kkw
+ test-linux64-devedition/opt-crashtest-e10s: feLvaH10Rlu5huP9o5Xbjw
+ test-linux64-devedition/opt-firefox-ui-functional-local-e10s: Y3eHI7T6Qz2i7yEGTrXTIQ
+ test-linux64-devedition/opt-firefox-ui-functional-remote-e10s: NUU7BgJUQPOdlixTCVkjTQ
+ test-linux64-devedition/opt-marionette-e10s: Ao-N-Fw4Tt2USc7TRGnbhA
+ test-linux64-devedition/opt-marionette-headless-e10s: RzZ48exOQmasYdcvY6-MQA
+ test-linux64-devedition/opt-mochitest-a11y: YEC3d0B-TqWfp6MNwAmvJQ
+ test-linux64-devedition/opt-mochitest-browser-chrome-e10s-1: AjwMDvg0RGGw59T_6M6zpw
+ test-linux64-devedition/opt-mochitest-browser-chrome-e10s-2: Hg3YmSJXRSmqFG1UiAU_1w
+ test-linux64-devedition/opt-mochitest-browser-chrome-e10s-3: I16zdVUlQ-uN8ET_QRv-Zg
+ test-linux64-devedition/opt-mochitest-browser-chrome-e10s-4: fqcbkK7FTz2kAkt35UlTrQ
+ test-linux64-devedition/opt-mochitest-browser-chrome-e10s-5: LWKFT-1CR5yp21ZH69z6lA
+ test-linux64-devedition/opt-mochitest-browser-chrome-e10s-6: Ai00MlbcQwilnldlxUugDg
+ test-linux64-devedition/opt-mochitest-browser-chrome-e10s-7: SKFEAsO8QjaBTJgoXxp51g
+ test-linux64-devedition/opt-mochitest-chrome-1: WxGJUsrJQi6ZTsAIRlMZeA
+ test-linux64-devedition/opt-mochitest-chrome-2: G1A-bavGTAGK0etUo9aJZg
+ test-linux64-devedition/opt-mochitest-chrome-3: KXo5YpILS6eOWzEgL4S8DA
+ test-linux64-devedition/opt-mochitest-clipboard-e10s: A1K3RNw3S7irHLttZzJPeA
+ test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-1: FrU9eb9bRgeqFpgJJJGmdg
+ test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-2: ZWTurwk-R6qqjDY8dCYXSg
+ test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-3: LXoxvXULTXaE4w1cw_zPuw
+ test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-4: JVkhzKuwQSKRLEUmDYm-OQ
+ test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-5: JWu3CooGRA6dJbibMTl-_g
+ test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-6: FVw1GO_ST0q-LLjEaGYydQ
+ test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-7: Uc4G436kTKa6wX5NtegAOA
+ test-linux64-devedition/opt-mochitest-devtools-chrome-e10s-8: LAiP0yylTOi1W-JRzsVjuQ
+ test-linux64-devedition/opt-mochitest-e10s-1: MWDhWVwVTjeV_31_NvmTEw
+ test-linux64-devedition/opt-mochitest-e10s-2: K6pnD7fkSwCIJUt-1v-e4A
+ test-linux64-devedition/opt-mochitest-e10s-3: SJbPGY93Q0O8c0kvMSpMEg
+ test-linux64-devedition/opt-mochitest-e10s-4: NESFg-OaRhewQtC9rsJwag
+ test-linux64-devedition/opt-mochitest-e10s-5: Z7DUAKL5RwWFl2B3EEkXrw
+ test-linux64-devedition/opt-mochitest-gpu-e10s: buQ_ig4lRqC6JaSPvozDlw
+ test-linux64-devedition/opt-mochitest-media-e10s-1: SXENcF9aRFGEU8WWa2gfSQ
+ test-linux64-devedition/opt-mochitest-media-e10s-2: QX7tZgVFRRWdbPi4UNvg_Q
+ test-linux64-devedition/opt-mochitest-media-e10s-3: Ies5_U7eRPOF1osla7RcVg
+ test-linux64-devedition/opt-mochitest-webgl1-core-e10s: TTl5QntNSEGsbNRTrhJOsA
+ test-linux64-devedition/opt-mochitest-webgl1-ext-e10s: Lo8Qb0j7Qzu8fgzvMlD3-g
+ test-linux64-devedition/opt-reftest-e10s-1: IzYLiGq1TJKpWTYVyDMViw
+ test-linux64-devedition/opt-reftest-e10s-2: Cvz8OnO3TOelJPmA5kFjvA
+ test-linux64-devedition/opt-reftest-e10s-3: Cf49y0pNQiirLz0a2ZfZ-g
+ test-linux64-devedition/opt-reftest-e10s-4: NzJhA7bXQpmFB0tB7REZLg
+ test-linux64-devedition/opt-reftest-e10s-5: G7tlvFI8R9W65Qk1JLq2mw
+ test-linux64-devedition/opt-reftest-e10s-6: I_CSfAbTRdy06PV2g6ECqA
+ test-linux64-devedition/opt-reftest-e10s-7: YyZi7i0eSWCy1SKW569D6w
+ test-linux64-devedition/opt-reftest-e10s-8: V9r9q6GsSV-DkfWvdO4taw
+ test-linux64-devedition/opt-reftest-no-accel-e10s-1: LpHF--9RShuLnOm3bpU_DA
+ test-linux64-devedition/opt-reftest-no-accel-e10s-2: R86YKKVFTPCpJ6r0PVReuw
+ test-linux64-devedition/opt-reftest-no-accel-e10s-3: ZLBpzOHYTqi129RnpFgUTQ
+ test-linux64-devedition/opt-reftest-no-accel-e10s-4: Iux_at0bS76kJH1LMuupYQ
+ test-linux64-devedition/opt-reftest-no-accel-e10s-5: IvqZqGD1QDmY0WSqvItYJQ
+ test-linux64-devedition/opt-reftest-no-accel-e10s-6: BwHJlF4oQ6e9oNQYKu7aeA
+ test-linux64-devedition/opt-reftest-no-accel-e10s-7: DE-ckDCHQfGqd9P0a1-Chg
+ test-linux64-devedition/opt-reftest-no-accel-e10s-8: L7QBVkUcTfmn4C7o4wTJvg
+ test-linux64-devedition/opt-telemetry-tests-client-e10s: StXCVCCeTOmAw7_j4uK0_A
+ test-linux64-devedition/opt-web-platform-tests-e10s-1: QGEz0YMrQlyVdWl3k5Jr7A
+ test-linux64-devedition/opt-web-platform-tests-e10s-10: H2DfLTDzSvqiHE2m-3Pqgg
+ test-linux64-devedition/opt-web-platform-tests-e10s-11: bYGh21ImRUif6_Xzfcuhyw
+ test-linux64-devedition/opt-web-platform-tests-e10s-12: T9UsGttBSPqQ7JuEn2m49w
+ test-linux64-devedition/opt-web-platform-tests-e10s-2: aSdkxmnORZamTkPYxC3E8g
+ test-linux64-devedition/opt-web-platform-tests-e10s-3: TWDxDzWPSu-IIhQcN0MDBQ
+ test-linux64-devedition/opt-web-platform-tests-e10s-4: TGIztwZ4SDqEnqwsLHXLBA
+ test-linux64-devedition/opt-web-platform-tests-e10s-5: Ztt1hEGeTnm43iNOrK3q2A
+ test-linux64-devedition/opt-web-platform-tests-e10s-6: XQ3Q44Z5RueZfNXVaEL9dA
+ test-linux64-devedition/opt-web-platform-tests-e10s-7: I8pMSDNKTYW33m4k3UtVyw
+ test-linux64-devedition/opt-web-platform-tests-e10s-8: cLbOaHkoSUKlp2bExeNrcA
+ test-linux64-devedition/opt-web-platform-tests-e10s-9: XFLTitlIQRiyaCVYujh19Q
+ test-linux64-devedition/opt-web-platform-tests-reftests-e10s-1: ZlT-pJjSTIS-BXU8lqXPPg
+ test-linux64-devedition/opt-web-platform-tests-reftests-e10s-2: bArVlGXZQGqYOg6M4fcokQ
+ test-linux64-devedition/opt-web-platform-tests-reftests-e10s-3: BbwP26qMQS6U7S-GN8Ocgw
+ test-linux64-devedition/opt-web-platform-tests-reftests-e10s-4: ZgApl3mmS1CACds1cZyxxg
+ test-linux64-devedition/opt-web-platform-tests-reftests-e10s-5: IhfhWLV7Rj6SsnuKVYe4eA
+ test-linux64-devedition/opt-web-platform-tests-reftests-e10s-6: bZbgEtxJT228Odwbk3WDmA
+ test-linux64-devedition/opt-web-platform-tests-wdspec-e10s: E_0p5e5dRgGfBlJcYZfv4A
+ test-linux64-devedition/opt-xpcshell-1: Ej0nQ0g0QCCaUPv71VJk9w
+ test-linux64-devedition/opt-xpcshell-2: I0jhNN46S4mVrK1msK3WAw
+ test-linux64-devedition/opt-xpcshell-3: GGN5Ot0BQ2Wzf5hrcyGACA
+ test-linux64-devedition/opt-xpcshell-4: Ru7ZELnaQsCdSsbLNGkFjg
+ test-linux64-devedition/opt-xpcshell-5: FiCNmmX-SL-YE3GUX5hwtA
+ test-linux64-devedition/opt-xpcshell-6: H2Vuk4uyTU6blNzh4es80Q
+ test-linux64-devedition/opt-xpcshell-7: KpylruJPQlWbFWnWsui63w
+ test-linux64-devedition/opt-xpcshell-8: Pzu5kmodTCWPfvrvFHJ94Q
+ test-linux64-nightly/opt-awsy-base-e10s: X2lyIjSNTWCJpVXnog94LA
+ test-linux64-nightly/opt-awsy-e10s: JusiIc6dSBe3GNiq3MjaXw
+ test-linux64-nightly/opt-cppunit: BqfL3Z3ZSdGaaVKZ2w13Tg
+ test-linux64-nightly/opt-crashtest-e10s: HBadm75jQXCSSI4plw3iug
+ test-linux64-nightly/opt-firefox-ui-functional-local-e10s: baXnArzCTlK8uuVqeIxQ4g
+ test-linux64-nightly/opt-firefox-ui-functional-remote-e10s: OEbTUmS9RcubiXFRAodIvw
+ test-linux64-nightly/opt-gtest: A9NXDwIBSQm2PlpHUjrIPg
+ test-linux64-nightly/opt-marionette-e10s: OpZcYkJNRi28CY4YoKUe6w
+ test-linux64-nightly/opt-marionette-headless-e10s: JLxEWdFJTYSqne1T5Q6VXw
+ test-linux64-nightly/opt-mochitest-a11y: P3px5dvVQFmRHRVeyKnarg
+ test-linux64-nightly/opt-mochitest-browser-chrome-e10s-1: KPQgJCfmRVW-7QAxupi2Xg
+ test-linux64-nightly/opt-mochitest-browser-chrome-e10s-2: H4CkuwR1RfmURmf8YbHfLg
+ test-linux64-nightly/opt-mochitest-browser-chrome-e10s-3: P9NEkwQSSWmun_ifToYT0g
+ test-linux64-nightly/opt-mochitest-browser-chrome-e10s-4: E3xfg5BqS-GHPZoIBLkP5Q
+ test-linux64-nightly/opt-mochitest-browser-chrome-e10s-5: AEeLCp7YTp-jso9NNWb2GQ
+ test-linux64-nightly/opt-mochitest-browser-chrome-e10s-6: XWYs0oy5S5e-9NLCaY06AQ
+ test-linux64-nightly/opt-mochitest-browser-chrome-e10s-7: dw28TRLqT4W55pXvF0XTDg
+ test-linux64-nightly/opt-mochitest-chrome-1: KIh3NAp0RL6599-aG_zLEg
+ test-linux64-nightly/opt-mochitest-chrome-2: XOsXyCJ4Q7i0R_N1eUX8WA
+ test-linux64-nightly/opt-mochitest-chrome-3: aOuYrPLUSzCcaCp6APtjzQ
+ test-linux64-nightly/opt-mochitest-clipboard-e10s: Y_Q3pvuMR9qV4lGyHzorTg
+ test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-1: XeeU4q5aSMm5dxXYY116UQ
+ test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-2: JOyw4y4FTHKJWhluAW3nLA
+ test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-3: PgQjG6sxQcap-vzNgq1ZuQ
+ test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-4: bAk1SzNYS6SLW_gsJZYy4g
+ test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-5: ZJ0J5RpITY2GFv6L_lyKew
+ test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-6: aeLuc5a8RsWeppFv2GX-Xg
+ test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-7: b5MNRVadQvCsHGglBN336Q
+ test-linux64-nightly/opt-mochitest-devtools-chrome-e10s-8: CEGyVgTgRROi6XlFCr5elg
+ test-linux64-nightly/opt-mochitest-e10s-1: QWtnM5A-Stmv0LnRjjfDFA
+ test-linux64-nightly/opt-mochitest-e10s-2: bLz5lCBBQ9-LRkmPA0d4KQ
+ test-linux64-nightly/opt-mochitest-e10s-3: fH5-GRtRSZq3i-fMsj48aw
+ test-linux64-nightly/opt-mochitest-e10s-4: BHsAWq2vTOeBVhHSb_9VCg
+ test-linux64-nightly/opt-mochitest-e10s-5: SrCN4p3HTTawxuqRwJ_W6w
+ test-linux64-nightly/opt-mochitest-gpu-e10s: Z3zMjT_DTguhyzbczyh_kw
+ test-linux64-nightly/opt-mochitest-media-e10s-1: DrF46eTrRguMQQlB86TZ3w
+ test-linux64-nightly/opt-mochitest-media-e10s-2: LCC1DHJ9RYOqRuoDlo7Pkg
+ test-linux64-nightly/opt-mochitest-media-e10s-3: dOks1GgjTaCpvt1tYYMD-Q
+ test-linux64-nightly/opt-mochitest-webgl1-core-e10s: KpHEzVtCR6OEWVKBgVsvNA
+ test-linux64-nightly/opt-mochitest-webgl1-ext-e10s: KmTSDArZS-qADjBS8ufQRw
+ test-linux64-nightly/opt-reftest-e10s-1: Kq1hkf3pSHudVyshKaLCqQ
+ test-linux64-nightly/opt-reftest-e10s-2: YyWDtH0rTC6B4eMJTlyG1Q
+ test-linux64-nightly/opt-reftest-e10s-3: CkZw8Sa0QiGo7G1cKA2GAg
+ test-linux64-nightly/opt-reftest-e10s-4: VoJ0PSoOR7-elfrZxva3xQ
+ test-linux64-nightly/opt-reftest-e10s-5: Aodb4N5zRUKadMz74bxiVA
+ test-linux64-nightly/opt-reftest-e10s-6: LQzt9T3hQHu2z3qfYAHGyw
+ test-linux64-nightly/opt-reftest-e10s-7: aslttJezRW-C_HENido8SA
+ test-linux64-nightly/opt-reftest-e10s-8: ImgnRYO5QNeAp4Zfp8aKOQ
+ test-linux64-nightly/opt-reftest-no-accel-e10s-1: RoQu0VO0Q2qElIvHSXfYpw
+ test-linux64-nightly/opt-reftest-no-accel-e10s-2: M4ZemfhhTKW8NSsnl9wywQ
+ test-linux64-nightly/opt-reftest-no-accel-e10s-3: KSmj5VuvQrWQvLk-E5lr-Q
+ test-linux64-nightly/opt-reftest-no-accel-e10s-4: Ch0MiX4LTEuBJb4Yv9SQVA
+ test-linux64-nightly/opt-reftest-no-accel-e10s-5: aXmKbkSwSUOceTIK3tHNeQ
+ test-linux64-nightly/opt-reftest-no-accel-e10s-6: EhCoGQERQMOXE_QgnqhBNQ
+ test-linux64-nightly/opt-reftest-no-accel-e10s-7: OAh0RkQwQHizxIMLaHl3hw
+ test-linux64-nightly/opt-reftest-no-accel-e10s-8: dFU4Kp0RRbmwC6--7mgfFA
+ test-linux64-nightly/opt-telemetry-tests-client-e10s: b-3UrY2JTDGOB3qkNVmfhQ
+ test-linux64-nightly/opt-web-platform-tests-e10s-1: G7wN36a_TOWZgx8eVKww1A
+ test-linux64-nightly/opt-web-platform-tests-e10s-10: S7fTzE9rR1WgLeZnlRWZXw
+ test-linux64-nightly/opt-web-platform-tests-e10s-11: HgOAWw0dThuwKZvQr9rfHQ
+ test-linux64-nightly/opt-web-platform-tests-e10s-12: Kg7grIx-R_GQRL8dnnO_zg
+ test-linux64-nightly/opt-web-platform-tests-e10s-2: H1Z1eZUQR6eoqB1olPIFSw
+ test-linux64-nightly/opt-web-platform-tests-e10s-3: TNHjbNzvRpmh8_V_Iud7yg
+ test-linux64-nightly/opt-web-platform-tests-e10s-4: YudF7VrORFOW0vwkv6Efmg
+ test-linux64-nightly/opt-web-platform-tests-e10s-5: IOMWnSM3QUq_MgAPDHKThQ
+ test-linux64-nightly/opt-web-platform-tests-e10s-6: Wrk6q0FFSXO720oN_u1SyQ
+ test-linux64-nightly/opt-web-platform-tests-e10s-7: Bqp7MkMKRqmAxm30bVvcHQ
+ test-linux64-nightly/opt-web-platform-tests-e10s-8: EuEjeG--QyOUVa6NSQ8ZPg
+ test-linux64-nightly/opt-web-platform-tests-e10s-9: SuGV_CbMTgOuvMY62Ctykg
+ test-linux64-nightly/opt-web-platform-tests-reftests-e10s-1: ERbDEc-ySRWpX4Sf5iKBHQ
+ test-linux64-nightly/opt-web-platform-tests-reftests-e10s-2: Tbdx2D_ySwSXWjKd9JmFqQ
+ test-linux64-nightly/opt-web-platform-tests-reftests-e10s-3: cW4fTd5mTN-IgTaQz7Ae6Q
+ test-linux64-nightly/opt-web-platform-tests-reftests-e10s-4: YZXto297T4uGMsAsh3ISpQ
+ test-linux64-nightly/opt-web-platform-tests-reftests-e10s-5: TkTcxoXXQHWOL3hL_PoLBw
+ test-linux64-nightly/opt-web-platform-tests-reftests-e10s-6: SdUub9ZSQrOgK9RDhZbVCA
+ test-linux64-nightly/opt-web-platform-tests-wdspec-e10s: eWsZ4LblS9aVUxhfC31o-A
+ test-linux64-nightly/opt-xpcshell-1: QgfTSkbnRpSOxKdxM0phAQ
+ test-linux64-nightly/opt-xpcshell-2: G8LkYr4vSNK6UJ7ld5mb7w
+ test-linux64-nightly/opt-xpcshell-3: U6Rwyi2gQeutdXre12ZElw
+ test-linux64-nightly/opt-xpcshell-4: V2VAwcC5RZuyxiddKprTTg
+ test-linux64-nightly/opt-xpcshell-5: R7Gpq792SNq7hDuEsCLdkg
+ test-linux64-nightly/opt-xpcshell-6: XM9B1hNKRqOMl6mwWm92BQ
+ test-linux64-nightly/opt-xpcshell-7: d7JdOBlDR7K7-11mNGMGLw
+ test-linux64-nightly/opt-xpcshell-8: I2D7xySKTBCIQb5_NpJkFA
+ test-linux64-qr/debug-cppunit: YZYZrC1KS2ag6h5CpBKa5A
+ test-linux64-qr/debug-crashtest-e10s: XTpnKCy8RA6WEdc8uDebTg
+ test-linux64-qr/debug-gtest: fAGExFoyRJuBSe2qS3Oj5w
+ test-linux64-qr/debug-mochitest-a11y: Ez--vwjVQAqo9fCnYLwdhw
+ test-linux64-qr/debug-mochitest-e10s-1: c4lLb4bjScKyhKMkeLkrxw
+ test-linux64-qr/debug-mochitest-e10s-10: fn4m02xtQwKSzB422KzrQw
+ test-linux64-qr/debug-mochitest-e10s-11: dPM6Qm0ySBeDwQDY5ZeEWQ
+ test-linux64-qr/debug-mochitest-e10s-12: G0QdtSn0T16PBv23dHMc9Q
+ test-linux64-qr/debug-mochitest-e10s-13: eb0TXR-WQu67-QXIwsGQ9w
+ test-linux64-qr/debug-mochitest-e10s-14: MCrTXwOWSN-dfQ8FlDY7Vg
+ test-linux64-qr/debug-mochitest-e10s-15: Qy-5WCEaSUu1Rgkctsj5bA
+ test-linux64-qr/debug-mochitest-e10s-16: dhqt8ZCXTrCSZWe9qZ8rHQ
+ test-linux64-qr/debug-mochitest-e10s-2: d7OOzBfsQ2CYxaac6PaAHg
+ test-linux64-qr/debug-mochitest-e10s-3: cl044nfoQFmTRrndQHE4AQ
+ test-linux64-qr/debug-mochitest-e10s-4: cFnrT8MuRS-tK94Ib6KnOQ
+ test-linux64-qr/debug-mochitest-e10s-5: NxpWvceWS4KI3D3Bt237iA
+ test-linux64-qr/debug-mochitest-e10s-6: JrbyuAuQRaq4_Vkw-g7tmQ
+ test-linux64-qr/debug-mochitest-e10s-7: U5YYV2jJQvCu8tI2mHC4tw
+ test-linux64-qr/debug-mochitest-e10s-8: DKgCTpNgTHqJ2BafheFn3w
+ test-linux64-qr/debug-mochitest-e10s-9: CHlf63qIQ1GWjHL45kBwxA
+ test-linux64-qr/debug-mochitest-gpu-e10s: HJeahdnlS3OvCQfSVwi7Bg
+ test-linux64-qr/debug-mochitest-media-e10s-1: X9KZ-iAGTImMzZIG6PChYw
+ test-linux64-qr/debug-mochitest-media-e10s-2: KzFjSZF_SRyblwAfKr1vgw
+ test-linux64-qr/debug-mochitest-media-e10s-3: HUw9xn3SR8ib3G0d3zFMAQ
+ test-linux64-qr/debug-mochitest-webgl1-core-e10s: GvF9L16CTTmiUXtaozVYKw
+ test-linux64-qr/debug-reftest-e10s-1: fmnRLnUySQ6Wkf6NcqNh5w
+ test-linux64-qr/debug-reftest-e10s-2: Y9GqJhcISoeQmKwuKXPI1g
+ test-linux64-qr/debug-reftest-e10s-3: J2aL8gMSTWWdt5h_7dSxEg
+ test-linux64-qr/debug-reftest-e10s-4: A-UG5fRlROWq3wEes4p9IA
+ test-linux64-qr/debug-reftest-e10s-5: HJOn7jYxS32IL8L9TdO8WA
+ test-linux64-qr/debug-reftest-e10s-6: RTNQw456QxmFeMyG_ElQrA
+ test-linux64-qr/debug-reftest-e10s-7: LbCQTffnTra-gbZHOCkDgA
+ test-linux64-qr/debug-reftest-e10s-8: dZU-y2xHQO2QAANtrtN3ng
+ test-linux64-qr/debug-web-platform-tests-e10s-1: fX-UQuB2SCiWSNR_59BTvw
+ test-linux64-qr/debug-web-platform-tests-e10s-10: Ah8wxCEFTAG1queOeKG8eg
+ test-linux64-qr/debug-web-platform-tests-e10s-11: Qos9C9TARTCYEos0uerqSw
+ test-linux64-qr/debug-web-platform-tests-e10s-12: VMop8XwmQ52jldeERSI2ow
+ test-linux64-qr/debug-web-platform-tests-e10s-13: Ul8FQ-N5Q4O1iTgXiOHJIQ
+ test-linux64-qr/debug-web-platform-tests-e10s-14: IMR0ykw_RR-OEQPqq8GH0A
+ test-linux64-qr/debug-web-platform-tests-e10s-15: VQEFk-jPRw6dFFsRK7DyIg
+ test-linux64-qr/debug-web-platform-tests-e10s-16: DDdHWmmlTqK3VVsl2IXykw
+ test-linux64-qr/debug-web-platform-tests-e10s-17: NsuWJAo8ROKZCr7prkvc2Q
+ test-linux64-qr/debug-web-platform-tests-e10s-18: QoWdFiA-TH-bp8d6wicvKw
+ test-linux64-qr/debug-web-platform-tests-e10s-2: XI9yAxKPQ_WJljSiBGcyrA
+ test-linux64-qr/debug-web-platform-tests-e10s-3: LTxGSzbAQwGKTL5D4LFdjw
+ test-linux64-qr/debug-web-platform-tests-e10s-4: Qb7V9FlUQaeRVEfK77VdLQ
+ test-linux64-qr/debug-web-platform-tests-e10s-5: f5hGQdWfS7yOhpQm3wuzsw
+ test-linux64-qr/debug-web-platform-tests-e10s-6: Kx4sbvNuR5uAcQMomUrVGw
+ test-linux64-qr/debug-web-platform-tests-e10s-7: RBUTkVC3TLKuV8O4YWI16Q
+ test-linux64-qr/debug-web-platform-tests-e10s-8: Mp75pz5hRu6IsuMx2t3ylQ
+ test-linux64-qr/debug-web-platform-tests-e10s-9: B_KaezjpSySXRYF3xmkfmA
+ test-linux64-qr/debug-web-platform-tests-reftests-e10s-1: eVel8RwbQ8GRA0ki7WD2UQ
+ test-linux64-qr/debug-web-platform-tests-reftests-e10s-2: ahUKodQlRr-039iDEoz1Aw
+ test-linux64-qr/debug-web-platform-tests-reftests-e10s-3: IC7Jr-G2QOC1ZJbUXTE9xA
+ test-linux64-qr/debug-web-platform-tests-reftests-e10s-4: fprCNKD-TQiiasK9JIo7NA
+ test-linux64-qr/debug-web-platform-tests-reftests-e10s-5: cNXp8VUdT0uYsKtgqavMnQ
+ test-linux64-qr/debug-web-platform-tests-reftests-e10s-6: BC75lKytRRCinrpOx9XC6w
+ test-linux64-qr/debug-web-platform-tests-wdspec-e10s: GTpAlnF2TZGZOt_8WU5I1g
+ test-linux64-qr/debug-xpcshell-1: HQBaVQvyRJWafny32sgQvw
+ test-linux64-qr/debug-xpcshell-2: Su6aXhPMSWasMLkqZYpSjg
+ test-linux64-qr/debug-xpcshell-3: Ylql6wOyShek-m9KkPQ4sA
+ test-linux64-qr/debug-xpcshell-4: BXQ1lWhzSDKpMO-R_wxl2A
+ test-linux64-qr/debug-xpcshell-5: EJkaMufWRY6QJY2M-rSbAQ
+ test-linux64-qr/debug-xpcshell-6: D9MmZCZvQpW-89XOAc7nBA
+ test-linux64-qr/debug-xpcshell-7: WlveA1tbR1mpeydWKbCFrA
+ test-linux64-qr/debug-xpcshell-8: BGQCSurHS7SdQeSQ4DIJ3w
+ test-linux64-qr/opt-talos-chrome-e10s: Fur_SgEeQb2QiiAmKDTlUA
+ test-linux64-qr/opt-talos-damp-e10s: Ldr0T87VTTGOarOBBLplwA
+ test-linux64-qr/opt-talos-dromaeojs-e10s: JKaMqMOLSIG92xaJ5E54Pg
+ test-linux64-qr/opt-talos-g1-e10s: ISYeOgRaRoWf7xs7JhLp3g
+ test-linux64-qr/opt-talos-g3-e10s: NjKsY1zSSaC-iXXsiQRMog
+ test-linux64-qr/opt-talos-g4-e10s: NnOmj7RjSnyqyQzfc0YRew
+ test-linux64-qr/opt-talos-g5-e10s: HPGiOGBjSt22PTckSl1Vfg
+ test-linux64-qr/opt-talos-other-e10s: f6IUO3sRT--dvu3RCRKqEw
+ test-linux64-qr/opt-talos-speedometer-e10s: BtFjOIxySkmQQ9o-AnAk5w
+ test-linux64-qr/opt-talos-svgr-e10s: WkrHblrRTiOaYhU3dSZ34g
+ test-linux64-qr/opt-talos-tp5o-e10s: R7VFIdtwQai7-6vB4_J-ug
+ test-linux64-qr/opt-talos-tp6-e10s: C3Riq7liSaGbZ9IIourcQw
+ test-linux64-qr/opt-talos-tp6-stylo-threads-e10s: CIGvgNXkS9WHVnn8rMYd3w
+ test-linux64-qr/opt-talos-tps-e10s: eLNQ_PscQlqVyQA1O5rXBQ
+ test-linux64/debug-cppunit: B-WfpMvbTbSDOJNvf8Pj6w
+ test-linux64/debug-crashtest-e10s: DO5ucnbrSCaQ_0ua0e-CKA
+ test-linux64/debug-firefox-ui-functional-local-e10s: XonpKjuKQam943XB14FfqQ
+ test-linux64/debug-firefox-ui-functional-remote-e10s: GMaBJpSBRX-c4eVBME_hoQ
+ test-linux64/debug-gtest: BWg31UwMSNiNrKJqN5sK7Q
+ test-linux64/debug-marionette-e10s: OpmjiqfQTfSVSwTsGNuB8Q
+ test-linux64/debug-marionette-headless-e10s: AL9tNhMoSjm7jgmlNYZexA
+ test-linux64/debug-mochitest-a11y: MmHswxfaQoCXgWmTToiarQ
+ test-linux64/debug-mochitest-browser-chrome-e10s-1: BdpYysqvQa6JGmMAEzBAHw
+ test-linux64/debug-mochitest-browser-chrome-e10s-10: Bb20wc6nSMGi2KLQSg75fg
+ test-linux64/debug-mochitest-browser-chrome-e10s-11: UjAue-eMSvKPdmK9Ie243w
+ test-linux64/debug-mochitest-browser-chrome-e10s-12: EbV-CU06StSsLO5DTM5zAQ
+ test-linux64/debug-mochitest-browser-chrome-e10s-13: dpGiRGUwSeiPmpsvThVXmg
+ test-linux64/debug-mochitest-browser-chrome-e10s-14: Av3_nPUURfu5kahMbt-Pgw
+ test-linux64/debug-mochitest-browser-chrome-e10s-15: RnwUH3ZHRT6D_9vDK0CitQ
+ test-linux64/debug-mochitest-browser-chrome-e10s-16: NQX-_UQuQCCSW4EbrMdiqw
+ test-linux64/debug-mochitest-browser-chrome-e10s-2: UBIt2_EwStGjwMm-Yu3IKA
+ test-linux64/debug-mochitest-browser-chrome-e10s-3: e1r9C_DrS-6fDC1fHFpNyw
+ test-linux64/debug-mochitest-browser-chrome-e10s-4: AR9WjIOWSGC1Z0uH4iaL2Q
+ test-linux64/debug-mochitest-browser-chrome-e10s-5: JWxYpGYVS3aHCnf29pkRCA
+ test-linux64/debug-mochitest-browser-chrome-e10s-6: Pzmlwfx5R1yWMYM1G9tjpw
+ test-linux64/debug-mochitest-browser-chrome-e10s-7: eZTCUavMQieQGGkZLUfBJA
+ test-linux64/debug-mochitest-browser-chrome-e10s-8: MBN1uxm6T8-arWFT1jsz8g
+ test-linux64/debug-mochitest-browser-chrome-e10s-9: Id7lK26RQ6e0yijED32M0Q
+ test-linux64/debug-mochitest-chrome-1: BCExwmyYSBGs4Hk_rF3KRA
+ test-linux64/debug-mochitest-chrome-2: YZ-zU7TdTEOSORBA-4hgng
+ test-linux64/debug-mochitest-chrome-3: Y_l4OCRcR4yFWiC7iSmJmA
+ test-linux64/debug-mochitest-clipboard-e10s: Cepx4EW1SR2RtMM5CmvlbQ
+ test-linux64/debug-mochitest-devtools-chrome-e10s-1: ZdnQxHk_T_S120PvWDrvhg
+ test-linux64/debug-mochitest-devtools-chrome-e10s-2: TarA1cOFT5aUCQb9F3lrPQ
+ test-linux64/debug-mochitest-devtools-chrome-e10s-3: GQ6lmI9AS7aBTuT801zbpg
+ test-linux64/debug-mochitest-devtools-chrome-e10s-4: K7F6YOmHRpyUG4gDfzFHaQ
+ test-linux64/debug-mochitest-devtools-chrome-e10s-5: XEsuVhQ_SluJVDYVK_bDTw
+ test-linux64/debug-mochitest-devtools-chrome-e10s-6: SDb0zk4eTau0Oqh1hyMyDQ
+ test-linux64/debug-mochitest-devtools-chrome-e10s-7: RO6guGjMRMqTD7D7mQPuMQ
+ test-linux64/debug-mochitest-devtools-chrome-e10s-8: O-15Fqf0R46yq1shz6BcUQ
+ test-linux64/debug-mochitest-e10s-1: V4V2_oKqTGGpkk5mMQZEIg
+ test-linux64/debug-mochitest-e10s-10: LPbOIOhxQUGhglUkdAHngw
+ test-linux64/debug-mochitest-e10s-11: fuxufVp9TleUjiuJVp-4Tg
+ test-linux64/debug-mochitest-e10s-12: Uw1U5DclRNWjuvIDGCfNzw
+ test-linux64/debug-mochitest-e10s-13: Er0DrAdOTCKq6Cx0wZg-9g
+ test-linux64/debug-mochitest-e10s-14: czlLZyGcQ4izI1HsYgLCMg
+ test-linux64/debug-mochitest-e10s-15: Vnr8CrUfT225eq7qr21B4g
+ test-linux64/debug-mochitest-e10s-16: ck7v41ZWQTWFmPkUelVgUQ
+ test-linux64/debug-mochitest-e10s-2: PgF5GNSwQkGYbshSvx4xNA
+ test-linux64/debug-mochitest-e10s-3: TMrGijFeSSuXxeSzp8xthg
+ test-linux64/debug-mochitest-e10s-4: MV8XIgrsQXupj9t7_lNpZg
+ test-linux64/debug-mochitest-e10s-5: B1mWNcaETaC-H7V2b12DOg
+ test-linux64/debug-mochitest-e10s-6: TuAcRogDTQClOx3MCwLHUQ
+ test-linux64/debug-mochitest-e10s-7: G78XKZQvRnu6a1Aw_SWJSg
+ test-linux64/debug-mochitest-e10s-8: btYJfmqORUSx8_C_RhmIYQ
+ test-linux64/debug-mochitest-e10s-9: QM2yY5GyTgWRdJbcjYnvzw
+ test-linux64/debug-mochitest-gpu-e10s: SxjGhyYMTb-K3sOFA_b2Jw
+ test-linux64/debug-mochitest-media-e10s-1: akZAfk5ZS7C-OPDWQzM04g
+ test-linux64/debug-mochitest-media-e10s-2: RPOSpq5ERm2tANwP13rIiA
+ test-linux64/debug-mochitest-media-e10s-3: dsCfjIBET4KN4jliga2dZg
+ test-linux64/debug-mochitest-plain-headless-e10s-1: BOO32BmxR2mTE5Hr0I-FhA
+ test-linux64/debug-mochitest-plain-headless-e10s-10: B2VHVGIPRLWEkm-RBCslyg
+ test-linux64/debug-mochitest-plain-headless-e10s-11: WLVgSMGTQP62Nnha56NAJA
+ test-linux64/debug-mochitest-plain-headless-e10s-12: H4jnb0kRTEy-0WSsoYkk3Q
+ test-linux64/debug-mochitest-plain-headless-e10s-13: RL0hzklPSVmN23aa-GB_nQ
+ test-linux64/debug-mochitest-plain-headless-e10s-14: QnnRBzJmRnapBp32TwgQXw
+ test-linux64/debug-mochitest-plain-headless-e10s-15: DoWIhvdUSt2w0i1kmZX4XA
+ test-linux64/debug-mochitest-plain-headless-e10s-16: G6tJp7ccTAmoUhIpIC5IcA
+ test-linux64/debug-mochitest-plain-headless-e10s-2: ZU1ye4QwQH2RhK_UPBKqmQ
+ test-linux64/debug-mochitest-plain-headless-e10s-3: WyE5i3iTQEWw86folUGl1Q
+ test-linux64/debug-mochitest-plain-headless-e10s-4: L-qPP1pwTRiYjlhk8xQ33w
+ test-linux64/debug-mochitest-plain-headless-e10s-5: V61e-QgCRCSLH99kWHQuug
+ test-linux64/debug-mochitest-plain-headless-e10s-6: VU-VmnaeRTucNW71QoTDfw
+ test-linux64/debug-mochitest-plain-headless-e10s-7: WZWCQq7iSW2NeUTcTWrZvQ
+ test-linux64/debug-mochitest-plain-headless-e10s-8: ZZ2v4-EXTI-bv9LXsytvRQ
+ test-linux64/debug-mochitest-plain-headless-e10s-9: fCPnXH5-Qga2Mpl0I1AhLg
+ test-linux64/debug-mochitest-webgl1-core-e10s: MSJq1bLXSdyNyPAwYlDTBw
+ test-linux64/debug-mochitest-webgl1-ext-e10s: GgwWlpw6T_Sv6yfGYhMvRg
+ test-linux64/debug-reftest-e10s-1: C2uIAIY2Qj2RYzyTqQ1foQ
+ test-linux64/debug-reftest-e10s-2: E9adm1zBT1eyu7ai4N8S8w
+ test-linux64/debug-reftest-e10s-3: K4VFA6pHRxmdqEOkgYo6_g
+ test-linux64/debug-reftest-e10s-4: DspLRh0fR-ihihSLMSy7Sg
+ test-linux64/debug-reftest-e10s-5: F5K-j4HYQ_yG6rwu3B-xOQ
+ test-linux64/debug-reftest-e10s-6: bnWeTLZ-T-SUT6Bq2-16YA
+ test-linux64/debug-reftest-e10s-7: aJrwyAXHRiiE6zUUAvUiig
+ test-linux64/debug-reftest-e10s-8: N1zbNcwOQn6nC0PFOVz-kQ
+ test-linux64/debug-reftest-no-accel-e10s-1: e59DYKmQRdGUXYTy3PekKg
+ test-linux64/debug-reftest-no-accel-e10s-2: D8dPvPfISZ65fLMd1xosLw
+ test-linux64/debug-reftest-no-accel-e10s-3: DnzIVMnhRW2ZipL_fHxGIg
+ test-linux64/debug-reftest-no-accel-e10s-4: bpP-5B0wRGSzmY5C98pu7A
+ test-linux64/debug-reftest-no-accel-e10s-5: a1mUu2ZiToukXOXKWW5YmQ
+ test-linux64/debug-reftest-no-accel-e10s-6: N02OkpFVQCisdCCQzvo12A
+ test-linux64/debug-reftest-no-accel-e10s-7: DOH0x2dHQEucpsHTLIuHjg
+ test-linux64/debug-reftest-no-accel-e10s-8: Jz5lWnHdTjmPQbbIgMvujg
+ test-linux64/debug-telemetry-tests-client-e10s: budM4XXJTJuhBvclzA83qA
+ test-linux64/debug-web-platform-tests-e10s-1: Qr-urUZpSpKmR0WT_wSaSw
+ test-linux64/debug-web-platform-tests-e10s-10: UohYkNZNSt2FnH2QzHII-g
+ test-linux64/debug-web-platform-tests-e10s-11: EUTla8GTQne-K51AV_A11Q
+ test-linux64/debug-web-platform-tests-e10s-12: FE4SLyv8ShGJD566EYFm5A
+ test-linux64/debug-web-platform-tests-e10s-13: PSDhOVXVTvCil_x1GbWPPg
+ test-linux64/debug-web-platform-tests-e10s-14: LjyKpRg4Td-koqdKtv8twQ
+ test-linux64/debug-web-platform-tests-e10s-15: J7c-RWPISiq2ElvCV-32Og
+ test-linux64/debug-web-platform-tests-e10s-16: amyRmVlvT82WhTnN4ga0Zg
+ test-linux64/debug-web-platform-tests-e10s-17: Chz6Eid5RAa1qmZsPtXmwA
+ test-linux64/debug-web-platform-tests-e10s-18: Ah8S1AxwR6e0Ggt3T1W8aA
+ test-linux64/debug-web-platform-tests-e10s-2: GifBUk6ySbuGKITge7Tz0w
+ test-linux64/debug-web-platform-tests-e10s-3: fObR9hfdSOeuEAHNVI04RA
+ test-linux64/debug-web-platform-tests-e10s-4: LhpA1H_3Sk6Tha-NuoHHAw
+ test-linux64/debug-web-platform-tests-e10s-5: IatDrfpMSFenH1eAIPxv0w
+ test-linux64/debug-web-platform-tests-e10s-6: KJ1x-RJYTueLreNsoWgqXQ
+ test-linux64/debug-web-platform-tests-e10s-7: el5b-0eYSXWVCkTbtHRpWw
+ test-linux64/debug-web-platform-tests-e10s-8: eR8ixQdASJ2q8VVq8Lg6ow
+ test-linux64/debug-web-platform-tests-e10s-9: NETwJXVOTVyAM7h0tkpSPQ
+ test-linux64/debug-web-platform-tests-reftests-e10s-1: fpn7K00hRW-9ybGa970_oA
+ test-linux64/debug-web-platform-tests-reftests-e10s-2: UISHPhcBR3SJY_BK8TcoIw
+ test-linux64/debug-web-platform-tests-reftests-e10s-3: ReipojbjQCyXtWE0n-kSUQ
+ test-linux64/debug-web-platform-tests-reftests-e10s-4: Zux91BksQGawSAG7OKp3tQ
+ test-linux64/debug-web-platform-tests-reftests-e10s-5: dUv6teyCSX-0qsgTMytMRw
+ test-linux64/debug-web-platform-tests-reftests-e10s-6: b_YmMFInTLuG6bWIJLDc-g
+ test-linux64/debug-web-platform-tests-wdspec-e10s: GqnKAFisR7OE-USyuJCDAg
+ test-linux64/debug-xpcshell-1: ZYhBSORgQ5W_6NXi38nQQw
+ test-linux64/debug-xpcshell-10: T_QO6H0mRh6i2wJ0E1nl3A
+ test-linux64/debug-xpcshell-2: VCDk0yYASuKd8hHPsTj5Uw
+ test-linux64/debug-xpcshell-3: JgpfV-k2Td6Wu5S1ivvwuA
+ test-linux64/debug-xpcshell-4: dpmjr6bbTIWlw-76PDMTgQ
+ test-linux64/debug-xpcshell-5: ACE8EB6XS1aNzHJxw-1hlQ
+ test-linux64/debug-xpcshell-6: fYmXolLKRLSzVFyKR4HhzQ
+ test-linux64/debug-xpcshell-7: RRpudI8vS2u2GGJZwhh03A
+ test-linux64/debug-xpcshell-8: GsdwexBhQu2peAJT2skJvQ
+ test-linux64/debug-xpcshell-9: NJfPYcjgRCmPnuUdbigr3g
+ test-linux64/opt-talos-bcv-e10s: PH-BSe3rTiOqTOWV0KYnxA
+ test-linux64/opt-talos-chrome-e10s: TgdEV2bAT9KH6N2ihf8vZQ
+ test-linux64/opt-talos-damp-e10s: RPiK1dHTSY696JGtkWGHog
+ test-linux64/opt-talos-dromaeojs-e10s: aek-6X8PTgWY0_JHJpFv0Q
+ test-linux64/opt-talos-g1-e10s: Pugr_6q2R9WYedGPtfdRtQ
+ test-linux64/opt-talos-g3-e10s: HnZb--FpTx2IBPrlcw7pfg
+ test-linux64/opt-talos-g4-e10s: YCT6EoUES-OIN9Ht-0JD8Q
+ test-linux64/opt-talos-g5-e10s: AZkWoSwQQ8qQD1kqYwwPdw
+ test-linux64/opt-talos-other-e10s: SIRKklygS-uGl3r826eeSA
+ test-linux64/opt-talos-speedometer-e10s: dSwbZOgqQ3-CIv2cUEidYQ
+ test-linux64/opt-talos-svgr-e10s: DMNsJPhAQOy6fEVfmByxHw
+ test-linux64/opt-talos-tp5o-e10s: TOmnqoy6QcOrS2x9i4z2Yg
+ test-linux64/opt-talos-tp6-e10s: Bp6QgNTDRW-9HUctOge6YA
+ test-linux64/opt-talos-tp6-stylo-threads-e10s: Z4-YNtHPQRGj3tT6o-BTZw
+ test-linux64/opt-talos-tps-e10s: KzPayftaR5-Q81BLVmXvLQ
+ test-macosx64-devedition/opt-cppunit: UAZB1TytQsCN7l3MleyIfQ
+ test-macosx64-devedition/opt-crashtest-e10s: F4e1Z-3IRYSxtRa_g2aF6Q
+ test-macosx64-devedition/opt-firefox-ui-functional-local-e10s: Oky5zxonRVKP14QcdUDoIw
+ test-macosx64-devedition/opt-firefox-ui-functional-remote-e10s: BEnDvpogTeuwK2EFqgO_NQ
+ test-macosx64-devedition/opt-marionette-e10s: HCGzF8iDSOK_RL1TaXHt2w
+ test-macosx64-devedition/opt-marionette-headless-e10s: bAYKLQHES-Ww31Xi2kzDQg
+ test-macosx64-devedition/opt-mochitest-a11y: HB1PgQGzSd-x4B5fEQpHLA
+ test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-1: NgEOyv3lSqWY9piETTN_ig
+ test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-2: VSgIBd2nS5CeIYgPrvuV-w
+ test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-3: QgXCXgliQwqCSbpEqkHSVw
+ test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-4: GCJSeCkyRleSDu7tfQa9fw
+ test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-5: RC124PQnS227hpbBa3K23w
+ test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-6: ZVXiSwXvSmCYLKaBIx2rJg
+ test-macosx64-devedition/opt-mochitest-browser-chrome-e10s-7: cAuJ4U1pQR6ucKCCKEb4gw
+ test-macosx64-devedition/opt-mochitest-chrome-1: Pa97ai7eQiuWINK4_6DMSA
+ test-macosx64-devedition/opt-mochitest-chrome-2: W9ZZt5c_SQm2wgD82QM4cw
+ test-macosx64-devedition/opt-mochitest-chrome-3: TGsIRcG9QbGea8JyYn0uUQ
+ test-macosx64-devedition/opt-mochitest-clipboard-e10s: c19vI6LOTQ6Qdxrsx-qCLA
+ test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-1: BSMiEdSHR4eREMb3hgi5sQ
+ test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-2: CdS4t8fjSeCSWQeP9UWPPA
+ test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-3: cGmVwHR0TnyAUHaMRIHrgA
+ test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-4: C5pfJBqbS8CvNLkSsv5yzw
+ test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-5: EyK0HZnhTaqjlxj48qXccA
+ test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-6: L3HlEsQOQ7Kto9rLdC4rbw
+ test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-7: JxE5i8GjRiWgaMSJJsx9kw
+ test-macosx64-devedition/opt-mochitest-devtools-chrome-e10s-8: ITv_MZnARUa7eLkCnjK9-w
+ test-macosx64-devedition/opt-mochitest-e10s-1: fGZPMm0cQP2sZG4rzBL40g
+ test-macosx64-devedition/opt-mochitest-e10s-2: cH5kPLi9Sd6ggFfnunCMew
+ test-macosx64-devedition/opt-mochitest-e10s-3: fU9mi153TxySDFBaUU_FnA
+ test-macosx64-devedition/opt-mochitest-e10s-4: StmZ4TVhTRiUDsDeSyZ5_Q
+ test-macosx64-devedition/opt-mochitest-e10s-5: aNuRQZkwQeyVSME39CDLNQ
+ test-macosx64-devedition/opt-mochitest-gpu-e10s: LieLKIpZR6uuY315fnDayA
+ test-macosx64-devedition/opt-mochitest-media-e10s: WcmPVNkaTPydv6VUt3AHQg
+ test-macosx64-devedition/opt-mochitest-webgl1-core-e10s: WKxNOuaqQGWMuFXKEYr4ug
+ test-macosx64-devedition/opt-mochitest-webgl1-ext-e10s: GKBdGNX2R5OHwZN0l17mBA
+ test-macosx64-devedition/opt-mochitest-webgl2-core-e10s: Ty7U3-WaTmS3Jjgg_jaHTg
+ test-macosx64-devedition/opt-reftest-e10s-1: YNA5V7VtRfucyCv0mgiRzQ
+ test-macosx64-devedition/opt-reftest-e10s-2: RIe4j3EpSO2i9wobHw8MzA
+ test-macosx64-devedition/opt-web-platform-tests-e10s-1: I8K4JuJ3SiSFfpMGE3xvpQ
+ test-macosx64-devedition/opt-web-platform-tests-e10s-10: EAxXfmRCRvy6filtsNXLkg
+ test-macosx64-devedition/opt-web-platform-tests-e10s-11: Pn2zVdw7R4qSEnF2KjLmyg
+ test-macosx64-devedition/opt-web-platform-tests-e10s-12: Pa5C6neSQDKnVZoEGB21-w
+ test-macosx64-devedition/opt-web-platform-tests-e10s-2: VaHHBxiTSbWrlW-jA9t_lA
+ test-macosx64-devedition/opt-web-platform-tests-e10s-3: c7zqXjQXRtqa0CxldUPLFA
+ test-macosx64-devedition/opt-web-platform-tests-e10s-4: EoK_Gkk8QaW7GSpX44zESA
+ test-macosx64-devedition/opt-web-platform-tests-e10s-5: WYVDAYoSTy6UM30aAAuH7Q
+ test-macosx64-devedition/opt-web-platform-tests-e10s-6: WTivgXckSsWMJMOkmGxHMQ
+ test-macosx64-devedition/opt-web-platform-tests-e10s-7: a9-_p3AbTiWkA0OA_ktKdQ
+ test-macosx64-devedition/opt-web-platform-tests-e10s-8: W_qEvTwrQ2yHb_IQ1WTLIA
+ test-macosx64-devedition/opt-web-platform-tests-e10s-9: FQ_81g7WRyiJUi1ZKSwDvQ
+ test-macosx64-devedition/opt-web-platform-tests-reftests-e10s: MmOWzfPPQXWABZ0Cb1-C9g
+ test-macosx64-devedition/opt-xpcshell: diUK-RMoS0STOdotcIcDnA
+ test-macosx64-nightly/opt-awsy-base-e10s: QwZ3KGvbTneJ48mYpAENFQ
+ test-macosx64-nightly/opt-awsy-e10s: M6ptPfUiS9ezlD5_b7wGmw
+ test-macosx64-nightly/opt-cppunit: P_RKRMWGRYCeOwIKpzBSgw
+ test-macosx64-nightly/opt-crashtest-e10s: Y2eNwyhkQpeD00Mg8jAC9A
+ test-macosx64-nightly/opt-firefox-ui-functional-local-e10s: DNfGVhDSQtGAbLINxeoUfQ
+ test-macosx64-nightly/opt-firefox-ui-functional-remote-e10s: BtFXSZuES3-fj3LTiJucpA
+ test-macosx64-nightly/opt-gtest: W6FchIQIT8eBO3SHSJAXyw
+ test-macosx64-nightly/opt-marionette-e10s: UQNVIugLThqD1W7rashuEw
+ test-macosx64-nightly/opt-marionette-headless-e10s: S9g8ZAaeTRSVKA9he0kRlQ
+ test-macosx64-nightly/opt-mochitest-a11y: DyqtEQZcQ2qJK6De9z8zqg
+ test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-1: XGrc0bllRZGuI_A1MCD2jw
+ test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-2: Qg64Fz6qRMG-BpYOJFeaYg
+ test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-3: enRPjfIySlKQNysor5WnkQ
+ test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-4: MwHhZQ6pQlu1LlW4BDDdlg
+ test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-5: Gz4W_SnLRqiP8HwtDDLWCg
+ test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-6: eGxOBUXZQkCd3a0wKt60cw
+ test-macosx64-nightly/opt-mochitest-browser-chrome-e10s-7: GiHmQ2ZDQX2a1Zvs_d739w
+ test-macosx64-nightly/opt-mochitest-chrome-1: UMv1rx3ITou_RTHbAFfqVA
+ test-macosx64-nightly/opt-mochitest-chrome-2: Ks_kqKzQQY6Oge4DPAo_XQ
+ test-macosx64-nightly/opt-mochitest-chrome-3: BRdKLeqOSwuiMXFYUSr7Sw
+ test-macosx64-nightly/opt-mochitest-clipboard-e10s: cfJ0cd5xRZ--O0LBj0bV7Q
+ test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-1: b_StsMbFTgqoqIi69D4BRw
+ test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-2: JyQPZqFnQn62G6oibH94Sw
+ test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-3: StK0c9FtR5Gqf35WrMbZcg
+ test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-4: ILcR371aQNe11A-HicfUKA
+ test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-5: FVz-ikw8RGeyX_Hs8AqE8w
+ test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-6: JgQO5DqWRW--bYtZORy1vw
+ test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-7: SsSAUDncQ1yIt_3vpHColQ
+ test-macosx64-nightly/opt-mochitest-devtools-chrome-e10s-8: cH5YF3PETXajKwrzjBsHlg
+ test-macosx64-nightly/opt-mochitest-e10s-1: EHJlhYfiSY-07c_5VR3_Bw
+ test-macosx64-nightly/opt-mochitest-e10s-2: N7gDVoRzSYmdB5S36t_ktA
+ test-macosx64-nightly/opt-mochitest-e10s-3: C7TmZGwJTGi8RSOJId7vCA
+ test-macosx64-nightly/opt-mochitest-e10s-4: ZzFFCVLrQzWKWFMss-gG7Q
+ test-macosx64-nightly/opt-mochitest-e10s-5: H973rxToRryWwTCT6Yw54Q
+ test-macosx64-nightly/opt-mochitest-gpu-e10s: MucVF97XQGGcx9tF2eM9yg
+ test-macosx64-nightly/opt-mochitest-media-e10s: MqLQGSwvQBybKS01rtDlUA
+ test-macosx64-nightly/opt-mochitest-webgl1-core-e10s: RyUpcLyWRFO_6oz0D0Nf6A
+ test-macosx64-nightly/opt-mochitest-webgl1-ext-e10s: AYlCnP3yTnqbsXKq26pCzg
+ test-macosx64-nightly/opt-mochitest-webgl2-core-e10s: OsqMM9bmS7Oc6JhvGAI15A
+ test-macosx64-nightly/opt-reftest-e10s-1: UHtsE2xsS8WyLLoLk_4KjQ
+ test-macosx64-nightly/opt-reftest-e10s-2: TB8KE7qWQRejBbta_lR-0Q
+ test-macosx64-nightly/opt-web-platform-tests-e10s-1: ddENma46R02XVcvsHGnr9w
+ test-macosx64-nightly/opt-web-platform-tests-e10s-10: GkHwqnowS7y1IM537_o-uw
+ test-macosx64-nightly/opt-web-platform-tests-e10s-11: aRjElPCGTGuEyGFSQEw7NA
+ test-macosx64-nightly/opt-web-platform-tests-e10s-12: J4JeNAszQqa1S_O8a5sYvw
+ test-macosx64-nightly/opt-web-platform-tests-e10s-2: ai3vpiTZRNKg1M9GYuCXcQ
+ test-macosx64-nightly/opt-web-platform-tests-e10s-3: PKo_v7egSfimbWbKQv5iSQ
+ test-macosx64-nightly/opt-web-platform-tests-e10s-4: Q5Z2t_EfTZGaPsZqspEjHQ
+ test-macosx64-nightly/opt-web-platform-tests-e10s-5: MUCwhZw1RGS9GCwcjJPY_w
+ test-macosx64-nightly/opt-web-platform-tests-e10s-6: dwD82CepTL2oU-Enic-Y1w
+ test-macosx64-nightly/opt-web-platform-tests-e10s-7: NcHGf4tNQNSrc0JyaRTBUQ
+ test-macosx64-nightly/opt-web-platform-tests-e10s-8: KHtvc5bqR_-rAFJXCExQiQ
+ test-macosx64-nightly/opt-web-platform-tests-e10s-9: M2uH8xLlToWmhCvMbHTPcg
+ test-macosx64-nightly/opt-web-platform-tests-reftests-e10s: Yxk6e_WfSnadRM7983XAyw
+ test-macosx64-nightly/opt-xpcshell: KxLaSBLpSsywGZdEiJqdbQ
+ test-macosx64-qr/debug-crashtest-e10s: Qy4aeSVyTTyf4_jLLdG7yQ
+ test-macosx64-qr/debug-reftest-e10s-1: OcAWWpr2Rd21keJh7-EX5w
+ test-macosx64-qr/debug-reftest-e10s-2: Op5dTDfgS5mc2RAgkGC4Eg
+ test-macosx64-qr/debug-reftest-e10s-3: Ph2dJaqIRAWJGU6NXzyUZA
+ test-macosx64/debug-cppunit: SeEk0x7KS0OPkzhs6cgbmA
+ test-macosx64/debug-crashtest-e10s: HXfUuyE1RpCQR_2gx_GPgQ
+ test-macosx64/debug-firefox-ui-functional-local-e10s: dEUBhGhSQOqeDDC-gYCysg
+ test-macosx64/debug-firefox-ui-functional-remote-e10s: EgpNt9JnRFG0ksAFqthAZA
+ test-macosx64/debug-gtest: J21esFQuRR6EXMuBfZ1qkA
+ test-macosx64/debug-marionette-e10s: ADqcSC_hRiWgoqvdvM8pUA
+ test-macosx64/debug-marionette-headless-e10s: ARduI3SISSWGFrvgX0z0iQ
+ test-macosx64/debug-mochitest-a11y: ELtfMX2KR0uYOPJpPRNssQ
+ test-macosx64/debug-mochitest-browser-chrome-e10s-1: P_fNEVpfRXyC2_NEJCPOzA
+ test-macosx64/debug-mochitest-browser-chrome-e10s-2: LXn2LM9cTiWo3T-YPZsmFQ
+ test-macosx64/debug-mochitest-browser-chrome-e10s-3: AYBF7S1pS6C4AfzV8v1ExA
+ test-macosx64/debug-mochitest-browser-chrome-e10s-4: L94oX3a3SyOhevx_cXmkmw
+ test-macosx64/debug-mochitest-browser-chrome-e10s-5: Nxtaf7iMSButtuC238LoVg
+ test-macosx64/debug-mochitest-browser-chrome-e10s-6: AOQKJ-LiRAipVsxCAkTDrw
+ test-macosx64/debug-mochitest-browser-chrome-e10s-7: VggVU2EKRDGIdrljF72JDA
+ test-macosx64/debug-mochitest-chrome-1: SxRSJLJzTku1ns0nCaUMvw
+ test-macosx64/debug-mochitest-chrome-2: SJOeMpP1TomsHNTjzZarYA
+ test-macosx64/debug-mochitest-chrome-3: VJy6ghvxRqOsyY-BdAlR7A
+ test-macosx64/debug-mochitest-clipboard-e10s: ALDTIfhFT5q495EjxlCZLg
+ test-macosx64/debug-mochitest-devtools-chrome-e10s-1: TBZTECRLTc6SpULVUQtDzA
+ test-macosx64/debug-mochitest-devtools-chrome-e10s-2: egmx1RWzQimSexz2y-nYJg
+ test-macosx64/debug-mochitest-devtools-chrome-e10s-3: IcH_3NWySPeAHfGeFoKkuA
+ test-macosx64/debug-mochitest-devtools-chrome-e10s-4: Q954dJaVSQq2ZvMoHVB89w
+ test-macosx64/debug-mochitest-devtools-chrome-e10s-5: Z-amE-bVQ2K_CoLbz7hQMw
+ test-macosx64/debug-mochitest-devtools-chrome-e10s-6: CzUvreS-S_KM5ZurYvESkA
+ test-macosx64/debug-mochitest-devtools-chrome-e10s-7: O6EhO_DORFiz9r-lqZt2HA
+ test-macosx64/debug-mochitest-devtools-chrome-e10s-8: X2FAzch9SV-0tWfw7OJaFA
+ test-macosx64/debug-mochitest-e10s-1: ChybOSmZTSOgONnUk0U0CA
+ test-macosx64/debug-mochitest-e10s-2: fV0PrFBZSmK9kkO9MhwCJQ
+ test-macosx64/debug-mochitest-e10s-3: E4J4WbORQLycHyVo-fxfXA
+ test-macosx64/debug-mochitest-e10s-4: aGGZEpc6SZWIWJkOBeVdCw
+ test-macosx64/debug-mochitest-e10s-5: bhM-ZOizSIyLv6C3ixu_iw
+ test-macosx64/debug-mochitest-gpu-e10s: Dm7ZFK3ETX6IAP8dLmdWPg
+ test-macosx64/debug-mochitest-media-e10s: JKQFbqXET0iGLeixzeNJgQ
+ test-macosx64/debug-mochitest-webgl1-core-e10s: UnGhUwKxQJu6LWImLS1bHQ
+ test-macosx64/debug-mochitest-webgl1-ext-e10s: PR_efO1WQHW_4HfZnrmjZA
+ test-macosx64/debug-mochitest-webgl2-core-e10s: TBjTBy5PSAyP7_Kj8U4TRA
+ test-macosx64/debug-reftest-e10s-1: LpogbWbQS_SBeFkcjJYUNQ
+ test-macosx64/debug-reftest-e10s-2: DIl5dU7-Ra-mbYvnKPZaIA
+ test-macosx64/debug-reftest-e10s-3: ZbvHp7krT5iqYBxtN-GvTg
+ test-macosx64/debug-web-platform-tests-e10s-1: DnfOULj_QoqjUT2i7CZ6dg
+ test-macosx64/debug-web-platform-tests-e10s-10: Egvi2BCLSG-67M-MVF5M8w
+ test-macosx64/debug-web-platform-tests-e10s-2: eAH5t3zuR2mQRLgV5WYbMA
+ test-macosx64/debug-web-platform-tests-e10s-3: ferHdFWnTdW_JOCOKLcLmg
+ test-macosx64/debug-web-platform-tests-e10s-4: GAR3cjCXRuqf-mDwojCyrw
+ test-macosx64/debug-web-platform-tests-e10s-5: UclJk4u3RKe_y6u3aPSFRw
+ test-macosx64/debug-web-platform-tests-e10s-6: PjDS5BZATk2Puf1TlYHkfQ
+ test-macosx64/debug-web-platform-tests-e10s-7: Ct0PortLRzaJEzkN-rhH_g
+ test-macosx64/debug-web-platform-tests-e10s-8: IkLzQyOVTGySCs_ul5FFcw
+ test-macosx64/debug-web-platform-tests-e10s-9: cQVPT2_WRkaisPphm-1pyA
+ test-macosx64/debug-web-platform-tests-reftests-e10s: Rulmk2fMTZmbaB34Ez9ItA
+ test-macosx64/debug-xpcshell: aw_dKWSmRUe7ah3ZLm5Sgw
+ test-macosx64/opt-talos-bcv-e10s: Mkc2sBuRSmCk7M9QArPxXg
+ test-macosx64/opt-talos-chrome-e10s: FDDLvU8HSqCBqMxkZ-khYg
+ test-macosx64/opt-talos-damp-e10s: TVrKS9SNTtiruaRhAn6q-Q
+ test-macosx64/opt-talos-dromaeojs-e10s: XAVKLdwSRMGeqbmMfaj1Mg
+ test-macosx64/opt-talos-g1-e10s: GTiQ6dxJTvy7js3M_VOD6Q
+ test-macosx64/opt-talos-g4-e10s: Dnc_1zEzTkG8ILqJEJXK9A
+ test-macosx64/opt-talos-g5-e10s: RX5cKf4NRh6Bkqe74iHrsw
+ test-macosx64/opt-talos-other-e10s: ATrjShNkR9aeuqOtcDih9Q
+ test-macosx64/opt-talos-speedometer-e10s: ZelTPDpTR0erCsWK5NB5Hw
+ test-macosx64/opt-talos-svgr-e10s: P8kbt8M5RPqS7vS8zIrJzg
+ test-macosx64/opt-talos-tp5o-e10s: HiDm8Bg7Qc6_GFk0X9Sh9A
+ test-macosx64/opt-talos-tp6-e10s: ZeW57LJjT5O-D0BTVaqsLA
+ test-macosx64/opt-talos-tp6-stylo-threads-e10s: CBfRgTb7QtOvdGtMzcau5Q
+ test-windows10-64-devedition/opt-cppunit: KoN5Sgo1QX6-2bxEx1nLxg
+ test-windows10-64-devedition/opt-crashtest-e10s: ABsSnyVHTfOvB0qWI8v6sA
+ test-windows10-64-devedition/opt-firefox-ui-functional-local-e10s: Ui7sfJgNR2O0RWXCt0R2Og
+ test-windows10-64-devedition/opt-firefox-ui-functional-remote-e10s: fgym_uEfRp27Z1LUTwr4Bg
+ test-windows10-64-devedition/opt-marionette-e10s: XUTlvhCeTOOf2i3uDgCijQ
+ test-windows10-64-devedition/opt-marionette-headless-e10s: UdVntFU1SuqPrzIt8NB2kw
+ test-windows10-64-devedition/opt-mochitest-a11y: OKYNS3gWTmiwFq-GnvWQKA
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-1: PxTasAPIS9OQ2PylO1DqQg
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-2: Wj0vK-7UT_qQHmEF8VQ24g
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-3: V47SF-ZBRCaivsCcYZMvVA
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-4: b7J833_LRfWv37-E7l-TtQ
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-5: bwmzYMdtSyysvypGHtkcOQ
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-6: P8JPPQmjRHGZ3Vm70tfOzQ
+ test-windows10-64-devedition/opt-mochitest-browser-chrome-e10s-7: MIAPTRd7Q5uviDDSUgyjGg
+ test-windows10-64-devedition/opt-mochitest-chrome-1: NlwxQg51RqWmklo5fkrowg
+ test-windows10-64-devedition/opt-mochitest-chrome-2: MY6xkHuRQIODy2T9BO0WkA
+ test-windows10-64-devedition/opt-mochitest-chrome-3: Fjk9RKFZQQ6rfQH_BV0H-Q
+ test-windows10-64-devedition/opt-mochitest-clipboard-e10s: Z3gwR6x2TvWRJ2bjoX0yVA
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-1: aZUGqnFCTOW99sfRcmvBZg
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-2: NCqv49uTTEeMOt4LRCQEyw
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-3: S62K0NDaSkiLW-Wh9RvBWA
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-4: Fts2h0gwRlSq969c7THpRA
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-5: ZFcX8mS9RJG17t74ZR6Otg
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-6: UEHkvnVlSEOcKmTizyXULA
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-7: HHJbfSd1QYmO5QmxhPqu6g
+ test-windows10-64-devedition/opt-mochitest-devtools-chrome-e10s-8: I5rTqfEFSl26I2oPptCaAA
+ test-windows10-64-devedition/opt-mochitest-e10s-1: bsXDjdnlSne_Q54A_uVUhg
+ test-windows10-64-devedition/opt-mochitest-e10s-2: JLfVynSvS4qwBpN3hrjUDQ
+ test-windows10-64-devedition/opt-mochitest-e10s-3: JuDucs7JT4KE2NvrqkFdmw
+ test-windows10-64-devedition/opt-mochitest-e10s-4: agPJLGAHSSSBkV85JE3nxA
+ test-windows10-64-devedition/opt-mochitest-e10s-5: IXvtVUL5SSefJOk23wGJ-Q
+ test-windows10-64-devedition/opt-mochitest-gpu-e10s: AVVOo1RPQKyduhimjGTLeg
+ test-windows10-64-devedition/opt-mochitest-media-e10s: BHMKRmpFQ06xrWQhHuKc6w
+ test-windows10-64-devedition/opt-mochitest-webgl1-core-e10s: V0q_RuSvQpWC6jSSHpy1uA
+ test-windows10-64-devedition/opt-mochitest-webgl1-ext-e10s: Vul6uDYJQDekoSYNX-bgRQ
+ test-windows10-64-devedition/opt-mochitest-webgl2-core-e10s: QiX9JrZ0SWeQUoZsXbrtHQ
+ test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-1: ILki9ThyTs6Vl6C4hVHLWA
+ test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-2: UaWz_lRKQb6swZ9xbuDpJQ
+ test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-3: QSnxPccYRFqBfoVlu9tA2g
+ test-windows10-64-devedition/opt-mochitest-webgl2-ext-e10s-4: fpO79lxdQZyjdIT271JW7w
+ test-windows10-64-devedition/opt-reftest-e10s-1: RGDEkNghRZ-JDH8ofbEF3A
+ test-windows10-64-devedition/opt-reftest-e10s-2: DiK9v4cBRzK6705pigLsbA
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-1: Ro7r858uQEyfsij5dwXVZg
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-10: e4FX7g_uSuaepwtjI4_6jQ
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-11: RTvy_I4BQiSaEc1B6T8EUg
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-12: aleo0UawQY-iDVpg5Eeicg
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-2: J9S_oAwxTx27Afwh6SwKbA
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-3: OO87OHsLRbqeZqCq5qUMTQ
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-4: OWi1kXIQQLi9bxfXglJW5Q
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-5: BQNRdy6hTJKaBmygr_RkTw
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-6: VhJcLNziQrOxe-8gmKWlEg
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-7: ECqsC4amRC68rk0j9NPXjw
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-8: dkaDASkLQZ2FfXro8fjIeA
+ test-windows10-64-devedition/opt-web-platform-tests-e10s-9: AR5HA0-lSF-1RfQYUwxcWg
+ test-windows10-64-devedition/opt-web-platform-tests-reftests-e10s: drMiq3VVS7CNWWSdjvfqJg
+ test-windows10-64-devedition/opt-xpcshell: TNGSOpHWSD-_jEmp2K4BEQ
+ test-windows10-64-msvc/opt-talos-bcv-e10s: ad5yeuj0S8e8FMSRe1XlBg
+ test-windows10-64-msvc/opt-talos-chrome-e10s: MODrd_oAQP-L3JNXgCaoHg
+ test-windows10-64-msvc/opt-talos-damp-e10s: EfWI3_qNRFCB9DosqzRm3w
+ test-windows10-64-msvc/opt-talos-dromaeojs-e10s: e0haqzCCTVebqq9V-2LHAw
+ test-windows10-64-msvc/opt-talos-g1-e10s: aT00QIMVRF6SvcUrnzPfVA
+ test-windows10-64-msvc/opt-talos-g4-e10s: QYEDxUAdSWmtP1qcbrni1w
+ test-windows10-64-msvc/opt-talos-g5-e10s: JZV3KDeQQD-9c-70Q1Fdzw
+ test-windows10-64-msvc/opt-talos-other-e10s: Pg36ZRxPQfiwfLkYNNpL0Q
+ test-windows10-64-msvc/opt-talos-speedometer-e10s: QUECAQBeQl2WjjEfejRleA
+ test-windows10-64-msvc/opt-talos-svgr-e10s: cdActXyvRkuWd0RIUEuMgQ
+ test-windows10-64-msvc/opt-talos-tp5o-e10s: NCaa6iLGSH6qzxjq9SAKJg
+ test-windows10-64-msvc/opt-talos-tp6-e10s: IWDuEuK0TAG19qVQ5U8bZQ
+ test-windows10-64-msvc/opt-talos-tps-e10s: ea7JfHj-Sqyk9CiJAG5gqg
+ test-windows10-64-nightly/opt-awsy-base-e10s: N2NEswF2TJqxgdRpi9-9_g
+ test-windows10-64-nightly/opt-awsy-e10s: FBEN7oYWSAe7WLfvdl880g
+ test-windows10-64-nightly/opt-cppunit: X67MdELCSgWJfxYQ0Cel6w
+ test-windows10-64-nightly/opt-crashtest-e10s: aYuX9hcbRRqa5SupW1FoKw
+ test-windows10-64-nightly/opt-firefox-ui-functional-local-e10s: Ea3uCnPoR2ixx8QuUf1pkw
+ test-windows10-64-nightly/opt-firefox-ui-functional-remote-e10s: LeEv91MQT9u0F6Go5X9w4g
+ test-windows10-64-nightly/opt-marionette-e10s: YOtOwiaGTFORjUMfmnK6Uw
+ test-windows10-64-nightly/opt-marionette-headless-e10s: W9u-yr7FSKuyV6qwhkyxrw
+ test-windows10-64-nightly/opt-mochitest-a11y: QBxMfAimR1yDmyEId5NkJA
+ test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-1: E_dB7MRRReq1DV8I2kwKPg
+ test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-2: QOTAlmPMStWg2rtQiKSz6Q
+ test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-3: N9c-cBdeQq6LrelZMlFZiQ
+ test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-4: WpNbVdNjSl6UjbynfbXr9A
+ test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-5: ZPJP1bnrTsm3psZMu4SLfQ
+ test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-6: EXlYJ2MnRTyjLYvOGmMcQA
+ test-windows10-64-nightly/opt-mochitest-browser-chrome-e10s-7: Mus-xpCcRkK9Qjhmpk46Vg
+ test-windows10-64-nightly/opt-mochitest-chrome-1: D3Sq3LIJSiuO3nFCsR8vxQ
+ test-windows10-64-nightly/opt-mochitest-chrome-2: QyRpMoTUSrS9c-p-Y4ut6A
+ test-windows10-64-nightly/opt-mochitest-chrome-3: CD9WbzOFTkGPc32vblTirg
+ test-windows10-64-nightly/opt-mochitest-clipboard-e10s: MiFWNxgKSYOnVONTOnE2zw
+ test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-1: HamAS6CzTnGnajX73mygpg
+ test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-2: DCsir_d6QmS1yZryGpfBeg
+ test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-3: JOyfWqpORHmDyG39NKNCNg
+ test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-4: diQh_YGERqKBLPfUarh5uQ
+ test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-5: M8OZYHoBTWKIfjOujDHehQ
+ test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-6: RhKKhch6RjKlde6qC3L2WQ
+ test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-7: ULbtH7-LS5CT7Vx9Ojq7nA
+ test-windows10-64-nightly/opt-mochitest-devtools-chrome-e10s-8: Wwok1dqLSKeVDpCLtcgihQ
+ test-windows10-64-nightly/opt-mochitest-e10s-1: RAupkoz9TZ2ObM5LYRO1tw
+ test-windows10-64-nightly/opt-mochitest-e10s-2: IsrGJe11T_Kv0kG15lEwWw
+ test-windows10-64-nightly/opt-mochitest-e10s-3: V349QccLQc2qX4Eq8Fgymw
+ test-windows10-64-nightly/opt-mochitest-e10s-4: MWE8eEW6TFqc5ZZagJek_g
+ test-windows10-64-nightly/opt-mochitest-e10s-5: E3_sMJ1WTFi3c6H17WcthQ
+ test-windows10-64-nightly/opt-mochitest-gpu-e10s: Cpaj0FD9QCiiEk060YfhlA
+ test-windows10-64-nightly/opt-mochitest-media-e10s: MwcXiAGORIKP67zT8FecRw
+ test-windows10-64-nightly/opt-mochitest-webgl1-core-e10s: NmP_SjDfRym6Hczr2dPmGw
+ test-windows10-64-nightly/opt-mochitest-webgl1-ext-e10s: H7oeSiX2R8ib7w4dXSF9Ww
+ test-windows10-64-nightly/opt-mochitest-webgl2-core-e10s: a7tbELbcSp2HtNqRirQYwQ
+ test-windows10-64-nightly/opt-mochitest-webgl2-ext-e10s-1: ToNakT3PSBu859X7ZC7kUg
+ test-windows10-64-nightly/opt-mochitest-webgl2-ext-e10s-2: Ju4ddogMR7GjKQznevFb6A
+ test-windows10-64-nightly/opt-mochitest-webgl2-ext-e10s-3: CEsuOtMfRLaClGjy62QaxA
+ test-windows10-64-nightly/opt-mochitest-webgl2-ext-e10s-4: Osebfof-TJ-O3qjAAFId9w
+ test-windows10-64-nightly/opt-reftest-e10s-1: TSl71yHIQDWhcwIEQ1ds5A
+ test-windows10-64-nightly/opt-reftest-e10s-2: WW3TpvWGQdyW2n43MATydA
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-1: B8R0PXYcR8SZst13mBiyLQ
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-10: OuXXLPTVRpa_freaxG5rXQ
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-11: dOyi0VWeT-qhsuhbor0hjg
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-12: IW_kcn2PQ3C_s6LuEedPcg
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-2: R__1PgCIT5aDsDf9ZA5nPg
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-3: boTbD4w5QG2Upg_97rb1jQ
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-4: Z60d-OJyR1W_J3pgwbRgdA
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-5: VVVX7J7GRfm7_VpPA0E6Pg
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-6: TbLXS4ebTVeklyK-drFjUQ
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-7: QoRUtD1dS9aid5fhdmEAOw
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-8: Huywop4CRi2OdfjHBY00Hw
+ test-windows10-64-nightly/opt-web-platform-tests-e10s-9: BI-KyJYhTsSIQxTSaEJ2EQ
+ test-windows10-64-nightly/opt-web-platform-tests-reftests-e10s: V_PZ_XO3T6-UUcnedbDjYA
+ test-windows10-64-nightly/opt-xpcshell: c-yw9DRRRZu9oJREmsMTWA
+ test-windows10-64-qr/debug-crashtest-e10s: Vq_oHsqRTNy7fTgFV5PEoA
+ test-windows10-64-qr/debug-mochitest-gpu-e10s: aq2-nw0iQi2yKz8GUAW27A
+ test-windows10-64-qr/debug-mochitest-media-e10s: ZfjQoOxpQji0IiETrbF7pw
+ test-windows10-64-qr/debug-mochitest-webgl1-core-e10s: OJZ3FvXnSEOk5EqHo62j8w
+ test-windows10-64-qr/debug-reftest-e10s-1: HFAIn8fxR0mQwrU3FwoNjA
+ test-windows10-64-qr/debug-reftest-e10s-2: ZjzzaHS0TiOs_m3x7SGZyA
+ test-windows10-64-qr/debug-reftest-e10s-3: HPFIXndNSwCbk1oC2hG-hA
+ test-windows10-64-qr/debug-reftest-e10s-4: ZhTMWsN8Rfq7fSAlLhM-KQ
+ test-windows10-64-qr/opt-talos-chrome-e10s: A2nrfY89SuuEalMvU2RmXw
+ test-windows10-64-qr/opt-talos-damp-e10s: eqL95epzTp-S5o_8UoJmDQ
+ test-windows10-64-qr/opt-talos-dromaeojs-e10s: UIMfQqS9QU2R_QO_L2b1pQ
+ test-windows10-64-qr/opt-talos-g1-e10s: Z8rOrQo0Qcit1ahsVW9x9Q
+ test-windows10-64-qr/opt-talos-g4-e10s: OlDE94AETwClIlR-4IlMuA
+ test-windows10-64-qr/opt-talos-g5-e10s: XQvHIEM6QterHUC4vTmulw
+ test-windows10-64-qr/opt-talos-other-e10s: RpEZ4GIuTOWW_jto8sOsfA
+ test-windows10-64-qr/opt-talos-speedometer-e10s: IScwK1UESMWO1K7ihRnXLw
+ test-windows10-64-qr/opt-talos-svgr-e10s: JFUW2EulRxm099DzpEmyjg
+ test-windows10-64-qr/opt-talos-tp5o-e10s: EB76dkJcR-idm3M72yDDDg
+ test-windows10-64-qr/opt-talos-tp6-e10s: aY3NrorwSxqZX1yLSMMSXg
+ test-windows10-64-qr/opt-talos-tps-e10s: Xd39snH6Te6_GBvCfUnxog
+ test-windows10-64/debug-cppunit: dcXoU9H2QU-jsC84EuJOvQ
+ test-windows10-64/debug-crashtest-e10s: DcnPKr76SyWlNWziBra3_A
+ test-windows10-64/debug-firefox-ui-functional-local-e10s: DaADnxFESuyaJLYgwsQEpg
+ test-windows10-64/debug-firefox-ui-functional-remote-e10s: ar3sMMCZQWmWA_mfSpdpng
+ test-windows10-64/debug-gtest: c2hf2S5nSdeDvI6PIhjqyA
+ test-windows10-64/debug-marionette-e10s: Wg8tOqH5SRemRlOygb2PjA
+ test-windows10-64/debug-marionette-headless-e10s: BD_5RSidTVOAh8oQiGDvZw
+ test-windows10-64/debug-mochitest-a11y: FDyz2xdlQuCLJ4MdjVJ1WA
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-1: beugRyqWQTy-iISJZ5vqXA
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-2: SrUDHK7FQXCNrrRfCHNGww
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-3: N6ZUJIdRSj6gj1KzIFyMcA
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-4: D56zLDIJSq-q-sFNlhrZmw
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-5: acDOLY_WQNmTrYIesclVCw
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-6: BqaZ5dEsR--ohxAMkhr4yA
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-7: LFbal7JDS0mr1TmhqdsJZw
+ test-windows10-64/debug-mochitest-chrome-1: LoXcpZy5Sze01qVmnxKdlg
+ test-windows10-64/debug-mochitest-chrome-2: Sh_ArCdRQ_yvaiqDc2sPVw
+ test-windows10-64/debug-mochitest-chrome-3: ZBFxySS0RcO0nG5sqXvtpg
+ test-windows10-64/debug-mochitest-clipboard-e10s: T4gJx7lFTBC6BFhdjNEmeA
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-1: WCAOfm-STzy6KLR3hgs-vA
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-2: BGeN1Pi9QoC1pS9KAC3HNQ
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-3: LgF_PaKkTs2cBKUaEFyoJg
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-4: WfoBJJLXSS2jAWrZ64yWog
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-5: NcNcVPVrQDS5KuIeADlIIw
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-6: cswGzBTsTcG_LSKet40qZQ
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-7: Ua7zSn_IQ_uRHmULcNlTwg
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-8: NkbkCELNRnGbj9yuYpBEtw
+ test-windows10-64/debug-mochitest-e10s-1: VfwqjoClRLaLKsqRBcH9Qw
+ test-windows10-64/debug-mochitest-e10s-2: f_rWd0TxQPC89r8V0zi9EA
+ test-windows10-64/debug-mochitest-e10s-3: YFxsgIerRtaFBGnGdZsGPA
+ test-windows10-64/debug-mochitest-e10s-4: RTPqH8RwSU-L6AYIDZ4ljw
+ test-windows10-64/debug-mochitest-e10s-5: P8sh1YjZRk6hakvjSYNvpg
+ test-windows10-64/debug-mochitest-gpu-e10s: HNNHAq-7S7CThzcSzdd7xQ
+ test-windows10-64/debug-mochitest-media-e10s: KyTjdkP2RU2WsgUK1C6wXw
+ test-windows10-64/debug-mochitest-plain-headless-e10s-1: N3t3_DwYSDmBeAE6V0n8Jg
+ test-windows10-64/debug-mochitest-plain-headless-e10s-2: ZzWyJzYtQNyA3TXQGxmP3w
+ test-windows10-64/debug-mochitest-plain-headless-e10s-3: b8m69rP7RueSo9Lc913hkA
+ test-windows10-64/debug-mochitest-plain-headless-e10s-4: Vw2pFe0XTtW6Io1qjsEadQ
+ test-windows10-64/debug-mochitest-plain-headless-e10s-5: J7lhTlrFTz-bd2oQ6DeesA
+ test-windows10-64/debug-mochitest-webgl1-core-e10s: LBpbxbB_RmWdZZ0brqPWzQ
+ test-windows10-64/debug-mochitest-webgl1-ext-e10s: Aw4ij6yASf-OD9OWN2SmDA
+ test-windows10-64/debug-mochitest-webgl2-core-e10s: QlY4yiUeTpKSeSwUPWL2lw
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-1: CXkeRK43SaerG8BE-dmM8g
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-2: RYAPe2UsSvaEIC-oX7ARAQ
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-3: LbkwInuYSJOFQ-TLbDdvqQ
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-4: YBxH4uvJSp28WlwGPKlV7Q
+ test-windows10-64/debug-reftest-e10s-1: SrKOQKOHSl-aa_GpdtvL9Q
+ test-windows10-64/debug-reftest-e10s-2: ce4BBh2SRK6oUVyz-iiaiw
+ test-windows10-64/debug-reftest-e10s-3: VOFP6k1WQSexUCmUEzUSRQ
+ test-windows10-64/debug-reftest-e10s-4: JnE2kQcvRKaU-4LMw1MFxg
+ test-windows10-64/debug-web-platform-tests-e10s-1: WBgSZbwQRPC9E_U_yu_rTQ
+ test-windows10-64/debug-web-platform-tests-e10s-10: TXpnxrpURjOXOlGY61zJmQ
+ test-windows10-64/debug-web-platform-tests-e10s-11: T8FM5pwQSIGqa5ybja5WSA
+ test-windows10-64/debug-web-platform-tests-e10s-12: UvLE3lXpRd6rJQw2fhsDcA
+ test-windows10-64/debug-web-platform-tests-e10s-2: boJN9UUQSgu9yF4HNbrzEg
+ test-windows10-64/debug-web-platform-tests-e10s-3: S5ogR_9JRz6apzh2E4IHoQ
+ test-windows10-64/debug-web-platform-tests-e10s-4: QV862XybROGYYXA2AapRIw
+ test-windows10-64/debug-web-platform-tests-e10s-5: YbsWw4H6TwmooIxH3wCuvA
+ test-windows10-64/debug-web-platform-tests-e10s-6: RH5xayQ3QiyZJ43XpPvX1w
+ test-windows10-64/debug-web-platform-tests-e10s-7: bYsGQx76Q4ise3k1SSo3CA
+ test-windows10-64/debug-web-platform-tests-e10s-8: C_jhpsyxRPCbsQd_hWKqvA
+ test-windows10-64/debug-web-platform-tests-e10s-9: YoC97kwWTMmBwqr2r2FOlw
+ test-windows10-64/debug-web-platform-tests-reftests-e10s: OsmTL-dHQWmigOV4f6vwFQ
+ test-windows10-64/debug-xpcshell: dzLDl5VrSzW5bqiuSbN0DA
+ test-windows10-64/opt-talos-bcv-e10s: Z-Z-iOD5SfSkuI-JSvOLgQ
+ test-windows10-64/opt-talos-chrome-e10s: P4rK_IUQS-yWeNdGYo8C7A
+ test-windows10-64/opt-talos-damp-e10s: Z0ORgjuPQ42ainod0hMfRw
+ test-windows10-64/opt-talos-dromaeojs-e10s: YRyaigWbRqmCbWs1tUcrTQ
+ test-windows10-64/opt-talos-g1-e10s: VYn1Gi4xSzGBxkw_GCygSQ
+ test-windows10-64/opt-talos-g4-e10s: Rducpu0UQ72-8o7-MgERcA
+ test-windows10-64/opt-talos-g5-e10s: LrOOz3ePRXmZy9KWfq0ISw
+ test-windows10-64/opt-talos-other-e10s: Q987z-ehS3ystkvpK5QQIQ
+ test-windows10-64/opt-talos-speedometer-e10s: BV3qoZhyRqWPt3T4TGRcbA
+ test-windows10-64/opt-talos-svgr-e10s: PjDfftwvQZSioAXltSCXng
+ test-windows10-64/opt-talos-tp5o-e10s: K6jnpaWiSg2POTNqpfHpRg
+ test-windows10-64/opt-talos-tp6-e10s: C1JOkLYZS8KutTXi4otrKg
+ test-windows10-64/opt-talos-tps-e10s: bYPJgPY2Rvu8YGyZAfsKBw
+ test-windows7-32-devedition/opt-cppunit: KwKfAp-tQXuKQ8YUjDPqiw
+ test-windows7-32-devedition/opt-crashtest-e10s: SVZF7QOmRqygcYMXbyl24g
+ test-windows7-32-devedition/opt-firefox-ui-functional-local-e10s: XW__mIhpQv6Zy8Am6ELaRA
+ test-windows7-32-devedition/opt-firefox-ui-functional-remote-e10s: Urh4kf_qQaa0LbVtuZE9xg
+ test-windows7-32-devedition/opt-marionette-e10s: PR1978RgQQukTCJi73wkJA
+ test-windows7-32-devedition/opt-marionette-headless-e10s: FbH6mEqyQHOisyz_gPw_Ew
+ test-windows7-32-devedition/opt-mochitest-a11y: C5TTmuUkQpqJHLkhdO6umA
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-1: OFbY20j2Ri2xRdNqF5WyBw
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-2: T4j4fQFNSq6aONzt82U1XQ
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-3: BSNxYR_VRi-uFf2SFhmHLg
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-4: Y_zFEam9Rxy5zBoUyqoAbA
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-5: L_BVSdwnRG23TniLhEkCtA
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-6: KGfpQbuETJaoKWnWF83r7Q
+ test-windows7-32-devedition/opt-mochitest-browser-chrome-e10s-7: LuOhp-RaR0OnACOzU4queA
+ test-windows7-32-devedition/opt-mochitest-chrome-1: Iage7zvFR96X7tS4PQ5qRQ
+ test-windows7-32-devedition/opt-mochitest-chrome-2: X-r4-xotRUiReP5bs-lBpQ
+ test-windows7-32-devedition/opt-mochitest-chrome-3: MMICfr2tQcq8vrgWpWvwVQ
+ test-windows7-32-devedition/opt-mochitest-clipboard-e10s: LYQ-sWo5T3OCULkPE1wxbw
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-1: a0d02VNXRraEbNH466Y6Xg
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-2: bm7uuxraT6mzkWSDNZiJjA
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-3: DZapZ6OJQluY4yooIhoJVw
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-4: CUrzMX1RTR61AYA6b5s6TQ
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-5: GbDC3tqFT7KhNBl5_D8lxA
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-6: UjEeSAbfQju2QwD6ZrLM_w
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-7: W2tqAzxwRqi6iQIAfU9lyw
+ test-windows7-32-devedition/opt-mochitest-devtools-chrome-e10s-8: LEPlS8Z-Q6iNV8sZpSHBng
+ test-windows7-32-devedition/opt-mochitest-e10s-1: bnJe_8Y_RbmWKEMK9fAR4Q
+ test-windows7-32-devedition/opt-mochitest-e10s-2: IqL5nmasQtSvTu5G0BuIfA
+ test-windows7-32-devedition/opt-mochitest-e10s-3: NAWAF-UlR1y4_elSmKVCpw
+ test-windows7-32-devedition/opt-mochitest-e10s-4: LxFJd340S-mZfhVHl60yyQ
+ test-windows7-32-devedition/opt-mochitest-e10s-5: Xhw5d-zxRS-bKtI_4CBU1g
+ test-windows7-32-devedition/opt-mochitest-gpu-e10s: b0V4zfOhTCe-_LLaBvdnlw
+ test-windows7-32-devedition/opt-mochitest-media-e10s-1: Qp4EYYsWQlmaZbGm6AKLag
+ test-windows7-32-devedition/opt-mochitest-media-e10s-2: NUJWLSQoRWyBwqDlY_B4Qw
+ test-windows7-32-devedition/opt-mochitest-media-e10s-3: DRGAFUdCR_W7RygTSl9kEQ
+ test-windows7-32-devedition/opt-mochitest-webgl1-core-e10s: A8nYb6LzT6mkYcZEM72e9w
+ test-windows7-32-devedition/opt-mochitest-webgl1-ext-e10s: bhAt77UmStWRqiZaqDQzXQ
+ test-windows7-32-devedition/opt-mochitest-webgl2-core-e10s: fpFmIMBRSNCegDkGE-79OA
+ test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-1: Mgh5pTNDT0eASjJoZ_M19w
+ test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-2: LyFiwww6SgWUOw62QfFGcQ
+ test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-3: P77AwXuFS4ylnXMw2UE6ng
+ test-windows7-32-devedition/opt-mochitest-webgl2-ext-e10s-4: euhPD3bhT1up15btNKCd8w
+ test-windows7-32-devedition/opt-reftest-e10s-1: FMoqrUUTQlOQMIftXCw5uQ
+ test-windows7-32-devedition/opt-reftest-e10s-2: JN8KPcHBQAicKB3BQ3goCg
+ test-windows7-32-devedition/opt-reftest-gpu-e10s-1: W03lwO8vTp2w7dhYotoBcQ
+ test-windows7-32-devedition/opt-reftest-gpu-e10s-2: YU8ls94gQX6tyIYOZLKJzQ
+ test-windows7-32-devedition/opt-reftest-no-accel-e10s-1: Cg0YpbjdSSKix2eCpPHfPQ
+ test-windows7-32-devedition/opt-reftest-no-accel-e10s-2: Y4SlCq63Rfeisueq1XlNlg
+ test-windows7-32-devedition/opt-reftest-no-accel-e10s-3: Bvy32h0cR-GGmloqHqSKbA
+ test-windows7-32-devedition/opt-reftest-no-accel-e10s-4: KKQf0UqbQ4KswjbxGsxN9w
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-1: OlR0_7e-R_-cFZuVLhxIKw
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-10: Hiw9RBcaQcmK3KRz0u4Gpw
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-11: dmLw_Vi7TEORJlmS2iM8UA
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-12: efgxrbg6RHiDKmOPnQKZuQ
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-2: EyKpqtFtSmWo3FNz5lSRYA
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-3: QfuQDqtyR-u_Qhyh3JwxIA
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-4: JJys2iYdSFe3ePEW760dpw
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-5: WW_mw761RW-FKtK7TZZPMA
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-6: Xc7MIQdoRjSuheWLIiwU0A
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-7: JkopvXjlT7qmbC6kTf_hdQ
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-8: f_wj0bDcTtO1FKVPtUgeRA
+ test-windows7-32-devedition/opt-web-platform-tests-e10s-9: RFrAiWCSQ--9tZ1PrtfI2Q
+ test-windows7-32-devedition/opt-web-platform-tests-reftests-e10s: DVfM5hOzTWCCaAuniAjC9g
+ test-windows7-32-devedition/opt-xpcshell: StrGf1lTQq2DX3J26AgYHA
+ test-windows7-32-msvc/opt-talos-bcv-e10s: DgncjKDWSHKj_G6cAGfpjQ
+ test-windows7-32-msvc/opt-talos-chrome-e10s: fBVeJGajQ9WTrnmJONQQ6A
+ test-windows7-32-msvc/opt-talos-damp-e10s: DKiSq5mwTmCkHaqSKJtskA
+ test-windows7-32-msvc/opt-talos-dromaeojs-e10s: YcdgW-QoSJODZH81cfe1VQ
+ test-windows7-32-msvc/opt-talos-g1-e10s: Oa25OrYTSO2w6zR9yaUMYw
+ test-windows7-32-msvc/opt-talos-g4-e10s: Up3JjZChQw6CJRpHbgmU6w
+ test-windows7-32-msvc/opt-talos-g5-e10s: NckMuodzSBaZ2hYppHMNyw
+ test-windows7-32-msvc/opt-talos-other-e10s: TwyMOIBqSN6l53k-93bgAg
+ test-windows7-32-msvc/opt-talos-speedometer-e10s: A8z7BGelTrKfXo9bmr6S3A
+ test-windows7-32-msvc/opt-talos-svgr-e10s: Rpebbr5NSmO5z4opM-nJtA
+ test-windows7-32-msvc/opt-talos-tp5o-e10s: SBW1s9vFSZyliRTjzDeWPw
+ test-windows7-32-msvc/opt-talos-tp6-e10s: TOxkOPSRTm6Rj9vufZep-A
+ test-windows7-32-msvc/opt-talos-tps-e10s: V_qKt-9GTJq8KVTOUepcNQ
+ test-windows7-32-msvc/opt-talos-xperf-e10s: VgFJUOHbSfOxBnhhSQa97Q
+ test-windows7-32-nightly/opt-awsy-base-e10s: HV7jfPRXTdmtL9qbHG9NAg
+ test-windows7-32-nightly/opt-awsy-e10s: TUg7cuVbSwuD80AOHvPV-Q
+ test-windows7-32-nightly/opt-cppunit: BO722ioQQ5irIYDAR2FXVA
+ test-windows7-32-nightly/opt-crashtest-e10s: LoVUJYHqSD2-GsTdLywbFw
+ test-windows7-32-nightly/opt-firefox-ui-functional-local-e10s: PonrDDt1TF-oDSS2XuW9Gg
+ test-windows7-32-nightly/opt-firefox-ui-functional-remote-e10s: OejDfksBQaGNtBJ816zLAA
+ test-windows7-32-nightly/opt-marionette-e10s: Nb1JQhw3QXyRp_eg20iLqg
+ test-windows7-32-nightly/opt-marionette-headless-e10s: RK5d3vVFTza2o1DVTi2txA
+ test-windows7-32-nightly/opt-mochitest-a11y: fo2u5FpxRdKnzTWyxiLm2w
+ test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-1: fBlfTpEQSJu53YrJQsQC1w
+ test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-2: fIe2hSXPTB-268Dc8t5ZUA
+ test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-3: QgAPu9dUQReO949vie_ArQ
+ test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-4: ZEg9TfpSSESW-FgaDfSpjA
+ test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-5: VljfU8kMTgiTm3bbVvb6CQ
+ test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-6: LyjycC6_SBSb7Ua81H32jw
+ test-windows7-32-nightly/opt-mochitest-browser-chrome-e10s-7: fMOwIA_QTOS8ZiKRlAGgCQ
+ test-windows7-32-nightly/opt-mochitest-chrome-1: Tnuiw55nSVeAEH6wPUmYIw
+ test-windows7-32-nightly/opt-mochitest-chrome-2: IPbxje_MRtyUIiZ6zkfJ9Q
+ test-windows7-32-nightly/opt-mochitest-chrome-3: IK2mdnxzREqTtJLvmY4jlA
+ test-windows7-32-nightly/opt-mochitest-clipboard-e10s: Q67ndtymQ_SP9DmD3wF-mg
+ test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-1: VtPh6Yk8TP6k1U6UZSFlBw
+ test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-2: aQhM26S1QXigkJE4bKcsuw
+ test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-3: DHHVSKHETLSsFnZdaNmA6A
+ test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-4: Y7gdCvQFS5mMB_Lw2r4uyQ
+ test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-5: W6Zs8tDGT4G6_ZbRVd6kZA
+ test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-6: LGLvFNBiSqCC-KVUXWeEUA
+ test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-7: Bv-WR9jTTvKBd22kshXw9g
+ test-windows7-32-nightly/opt-mochitest-devtools-chrome-e10s-8: SAIXkoJhTOWEdK9UIwfKTQ
+ test-windows7-32-nightly/opt-mochitest-e10s-1: Pfwlbo2ORG6TycIXnnEghA
+ test-windows7-32-nightly/opt-mochitest-e10s-2: BLs5W1QeTS24Ar65zFMBUw
+ test-windows7-32-nightly/opt-mochitest-e10s-3: aM9iVakkQfiaMioDlpckew
+ test-windows7-32-nightly/opt-mochitest-e10s-4: csiLPz2SQUiVcHh4d_qtJQ
+ test-windows7-32-nightly/opt-mochitest-e10s-5: HqIXSw8KS62QM5jO5-7o6w
+ test-windows7-32-nightly/opt-mochitest-gpu-e10s: CcFWYlL7S1y4EwvxsoMzWw
+ test-windows7-32-nightly/opt-mochitest-media-e10s-1: ExxKdQyTSeWnzzdPC49s7Q
+ test-windows7-32-nightly/opt-mochitest-media-e10s-2: St-RTAZVQ9ev12d3qAxOiA
+ test-windows7-32-nightly/opt-mochitest-media-e10s-3: bhod472FT62wdlHPcjtT9g
+ test-windows7-32-nightly/opt-mochitest-webgl1-core-e10s: aB99GpcSQ5usbLG6NE50wg
+ test-windows7-32-nightly/opt-mochitest-webgl1-ext-e10s: MBuloNosTZC2F-WgV6CXdQ
+ test-windows7-32-nightly/opt-mochitest-webgl2-core-e10s: Vv5HU1cvRgWKMnnsuzuRlg
+ test-windows7-32-nightly/opt-mochitest-webgl2-ext-e10s-1: LRS_uuddQOy3o41ERcIk9g
+ test-windows7-32-nightly/opt-mochitest-webgl2-ext-e10s-2: VYZaAXCIQviaOnh5cPk3ag
+ test-windows7-32-nightly/opt-mochitest-webgl2-ext-e10s-3: QpHNnu6OR9qdSI2PxOQUsg
+ test-windows7-32-nightly/opt-mochitest-webgl2-ext-e10s-4: AuE6-fopQ3GYBcze9ELbOQ
+ test-windows7-32-nightly/opt-reftest-e10s-1: NLenXZ7TTRecdNAXjWgnDg
+ test-windows7-32-nightly/opt-reftest-e10s-2: CpNKGntmS0ekRM8EDyWUYg
+ test-windows7-32-nightly/opt-reftest-gpu-e10s-1: YlM95Vf3RMSb-W_nIOFuNg
+ test-windows7-32-nightly/opt-reftest-gpu-e10s-2: QxcwyDwbRluI4d9MHWWoyg
+ test-windows7-32-nightly/opt-reftest-no-accel-e10s-1: cel2S3r6QteR14vBomSgwg
+ test-windows7-32-nightly/opt-reftest-no-accel-e10s-2: RVpOchBXR4Gm4hQvauGwCQ
+ test-windows7-32-nightly/opt-reftest-no-accel-e10s-3: dPmPo6l8RVuxoNL_9wkBGQ
+ test-windows7-32-nightly/opt-reftest-no-accel-e10s-4: DG_PgXxvQnG7t7YspSngkA
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-1: dT3LAUXSRtqVLIEXvgfmYg
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-10: cgwfYiVLSLKLbpRDpvVdhQ
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-11: KjimZRU1TDirC-YZB8IDQQ
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-12: fKrbqba1TKKkfW2t9XaMyQ
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-2: UjJVMojAT2yRTNdSIKMQwA
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-3: VEuCvZdTTt-ekBRNXSMHpQ
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-4: av6AkvQtTQKRiCL2A3GoxQ
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-5: feoa_LC9Sm6w1WIMselx_g
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-6: TYShh8PVSOK9CM-15oscXg
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-7: IRPODajnTI2bG6uwRaLt2g
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-8: O-kXnzwlQnepj7_JAvoGjQ
+ test-windows7-32-nightly/opt-web-platform-tests-e10s-9: DU8ni1K1QqOj-_35L5SeCg
+ test-windows7-32-nightly/opt-web-platform-tests-reftests-e10s: En6vKJMCSQGboXlA3P7Dsg
+ test-windows7-32-nightly/opt-xpcshell: HV8t9V5JRNWLzPfPvioYnw
+ test-windows7-32/debug-cppunit: JJSwTf7sTGap6bV7myAMYw
+ test-windows7-32/debug-crashtest-e10s: bteeRuEdSfGcV9gqpfzXoA
+ test-windows7-32/debug-firefox-ui-functional-local-e10s: OiPUvXC8SSGji_R26javuQ
+ test-windows7-32/debug-firefox-ui-functional-remote-e10s: MQ_uwHC8RHS8SUsKAYjHIQ
+ test-windows7-32/debug-gtest: YkVzkQ4KSKy-C4bbb0teUA
+ test-windows7-32/debug-marionette-e10s: abZVJwHjRYSXd4VfO4zyOQ
+ test-windows7-32/debug-marionette-headless-e10s: Nboz_JrxRDevotY1KjQcoA
+ test-windows7-32/debug-mochitest-a11y: ObPWHiT4QQ6jMBdd9TagEA
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-1: BNHRc0r1R76bPwbj2D0SNQ
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-2: aMCqLB37Q9Csw6q-PRLlvg
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-3: CuyMAz2HTMmy3mK3DQxWSg
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-4: LP_eKeLiT66a8Ass1gDFjA
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-5: PxhRUrEpSIqbuCWLOCGuaw
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-6: UtY3eSGbT06RwfDeyNu7_Q
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-7: XsImJ0e-RP2AqUkb3MlruA
+ test-windows7-32/debug-mochitest-chrome-1: Cekuf5xkQey3wpapZnFVqA
+ test-windows7-32/debug-mochitest-chrome-2: PQkcbXcPQ36W-slIHTVV6Q
+ test-windows7-32/debug-mochitest-chrome-3: E9F9noBhTAaXf0Xw-fjRTQ
+ test-windows7-32/debug-mochitest-clipboard-e10s: CesIGLpXR-qMcOppbEaYIA
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-1: PcAJiRB4RXOCjf65x_siwg
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-2: f3PSM7cgR0S64j6UlCrdMw
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-3: QSdBKmxORoe1Zk6nm6dxWA
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-4: XRYhMCd1SDiv8Rr2x2F-DA
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-5: WcBbW7R8S7WIFXvaNF4PbQ
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-6: f9TyGBVBQmSQj7J85QWHvA
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-7: VAocR7p0RVSZMUaWcGQBXw
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-8: VtqKh-9ARCGM-Hyic7CTbA
+ test-windows7-32/debug-mochitest-e10s-1: d3ijBs9BSVmPQuwXluWa7Q
+ test-windows7-32/debug-mochitest-e10s-2: blEOU6B1QSeN8nKPsTjHVw
+ test-windows7-32/debug-mochitest-e10s-3: MhqkHExqTKW94bbWkN0FMw
+ test-windows7-32/debug-mochitest-e10s-4: Xt8QVoOMSXmOrUf14YgMbg
+ test-windows7-32/debug-mochitest-e10s-5: HNgbbIJoTB65KVShFzcnEQ
+ test-windows7-32/debug-mochitest-gpu-e10s: XclNYD1iTvO7cRpeiy7HhA
+ test-windows7-32/debug-mochitest-media-e10s-1: BLOhAaeUQaWOatACJflQ2Q
+ test-windows7-32/debug-mochitest-media-e10s-2: HcDpkzplRa-jgE91xtmtfw
+ test-windows7-32/debug-mochitest-media-e10s-3: XfrNjIL3TpO7BeP9FdJuSg
+ test-windows7-32/debug-mochitest-webgl1-core-e10s: EPXjeZr_RaSoqImyg6nxhQ
+ test-windows7-32/debug-mochitest-webgl1-ext-e10s: A-bEKONCRPyJ84stIeVKdg
+ test-windows7-32/debug-mochitest-webgl2-core-e10s: Me93X-W6Rr2l8k9e9EX1dA
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-1: bYO9b5noSXGd4FQyetEviA
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-2: cJzSz2LBRa2eEVT9RZ5KxA
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-3: TFWp2Lp4RCWtMsYn_zhHzQ
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-4: Yaxq7y3rRc2PYikdQNlzwQ
+ test-windows7-32/debug-reftest-e10s-1: A-z5Mjq8Qw-xyPyhMjr3qA
+ test-windows7-32/debug-reftest-e10s-2: dlBPWLtBT868DrvIrE5gOg
+ test-windows7-32/debug-reftest-e10s-3: VkbOhr6bQv2Zrbkir-Tc7w
+ test-windows7-32/debug-reftest-e10s-4: JnSEpzdvQ0CelidfMpcCOQ
+ test-windows7-32/debug-reftest-gpu-e10s-1: Hkx6LOv0Txanm3P8Addv2g
+ test-windows7-32/debug-reftest-gpu-e10s-2: e8BrPWFcS0Cd5PMOIS2-Yg
+ test-windows7-32/debug-reftest-gpu-e10s-3: YtTeu9WURTqlLOLjdA7JKA
+ test-windows7-32/debug-reftest-gpu-e10s-4: WqG2S7LvRf24eklvBw-v8w
+ test-windows7-32/debug-reftest-no-accel-e10s-1: OqjWmqC4SXWgWuDF4vCwLw
+ test-windows7-32/debug-reftest-no-accel-e10s-2: T6RpBHMmTI2TVnl05IOV4w
+ test-windows7-32/debug-reftest-no-accel-e10s-3: fz4LEI-AToe_PfVN28uTsg
+ test-windows7-32/debug-reftest-no-accel-e10s-4: azLHq_7ITnuRR9NsMXVpvw
+ test-windows7-32/debug-web-platform-tests-e10s-1: dFsmr-MNRHCk3qkTu7xo4g
+ test-windows7-32/debug-web-platform-tests-e10s-10: ccGSV9IETIO2U9N7dF428w
+ test-windows7-32/debug-web-platform-tests-e10s-11: UoqOHKU1SRSVp4F_eGb0Dw
+ test-windows7-32/debug-web-platform-tests-e10s-12: YtIYhaLCTsuBuQdpA8k3cQ
+ test-windows7-32/debug-web-platform-tests-e10s-2: KE1XSuhcR-SB0R4VhGM67Q
+ test-windows7-32/debug-web-platform-tests-e10s-3: BDsOi4nMRo6H7YIgV1DN_w
+ test-windows7-32/debug-web-platform-tests-e10s-4: bnsymjp_SQieaem_xOw9oQ
+ test-windows7-32/debug-web-platform-tests-e10s-5: TBmZAeCvRLuI90XZqsMq6A
+ test-windows7-32/debug-web-platform-tests-e10s-6: FqW949QyTjKpK0KRmSmG7w
+ test-windows7-32/debug-web-platform-tests-e10s-7: UaXLZjTERiyX6XhWdkkydg
+ test-windows7-32/debug-web-platform-tests-e10s-8: AvLjU0EtT_CLYv-3F6soUQ
+ test-windows7-32/debug-web-platform-tests-e10s-9: JQIP6skOQ9-PsBNEYOmJ9Q
+ test-windows7-32/debug-web-platform-tests-reftests-e10s: f7s8_unhQjG3oJLKPq06rg
+ test-windows7-32/debug-xpcshell: SmSPIZytRte65OUrqPSU6g
+ test-windows7-32/opt-talos-bcv-e10s: TCz2dSRLTemtcbFwOYtbWQ
+ test-windows7-32/opt-talos-chrome-e10s: bVw1FtZKSnqzyId1s0VOWg
+ test-windows7-32/opt-talos-damp-e10s: RdeUvE9OQaamWbwQU_koIQ
+ test-windows7-32/opt-talos-dromaeojs-e10s: X5LuD6UpTWW3Ld9YiBDspg
+ test-windows7-32/opt-talos-g1-e10s: BHD70D2fS3y5fg6mGt1IFg
+ test-windows7-32/opt-talos-g4-e10s: ScddyTXyQa6omsTaMpGOZw
+ test-windows7-32/opt-talos-g5-e10s: frf1vBhtRT-hS19o9yE0Ig
+ test-windows7-32/opt-talos-other-e10s: HlF_IG5_TRKknj0Yc-6qhQ
+ test-windows7-32/opt-talos-speedometer-e10s: RHL5POymR4aJ2-OB5oFL8Q
+ test-windows7-32/opt-talos-svgr-e10s: Xs7562SMSQ-bKOquIbG9Wg
+ test-windows7-32/opt-talos-tp5o-e10s: XPAmoCr3RMKvg5eGJEm9Jg
+ test-windows7-32/opt-talos-tp6-e10s: L5x1L5OOQv6tCI-CdCFO0w
+ test-windows7-32/opt-talos-tps-e10s: BDZpu3BCTiKjUH-c7m1MXg
+ test-windows7-32/opt-talos-xperf-e10s: MvExFTIETRSlN7y1K318Og
+ toolchain-linux64-android-gradle-dependencies: Ejx3j_TFQF6ue4ICBAm50w
+ toolchain-linux64-android-ndk-linux-repack: TbJ7aQCASTW7_ZOcFDITGw
+ toolchain-linux64-android-sdk-linux-repack: ZZardaJfRta2f6XTzAoNRA
+ toolchain-linux64-binutils: bQz0dpauTvSwvo_blA8iwQ
+ toolchain-linux64-cbindgen: WV9xRXQMToKhsF6cxDqCBA
+ toolchain-linux64-cctools-port: L9nDqulJQxKjvsTsURbDlw
+ toolchain-linux64-clang-3.9: R8-r8ookSiCfYbJYejpNWA
+ toolchain-linux64-clang-6: E-pAZ4gVQVCkX4gzYF3WfA
+ toolchain-linux64-clang-6-macosx-cross: fhVH_vwjRe-WRCEPcXiw2Q
+ toolchain-linux64-clang-tidy: a6v0ws6ARROjJ0WFqziX-w
+ toolchain-linux64-gcc-4.9: EdeVA6VwQqe3xzBjj1JVYw
+ toolchain-linux64-gcc-6: A7qVVBdbQoOSxVR7sshafw
+ toolchain-linux64-gcc-sixgill: JKEtKWFxRSGE2oGWpn-jSA
+ toolchain-linux64-hfsplus: e5QX1QaxQqidqKMqekvFOQ
+ toolchain-linux64-infer: OGiz92M7T1Kdysxtokyu3w
+ toolchain-linux64-libdmg: EO8XTk2rTuOB5Ku4JrPrFg
+ toolchain-linux64-llvm-dsymutil: VfDslyQ8TASVZ9LWmStnkQ
+ toolchain-linux64-node: Wi27Y0kZTHyy6JSuiSGz0w
+ toolchain-linux64-rust-1.28: et3673o9QUiFyQk-hccQBw
+ toolchain-linux64-rust-android-1.28: O7oG2edzRwuU8vRUUdMRqQ
+ toolchain-linux64-rust-macos-1.28: ORDZULTuQOCAL8uIraFbHw
+ toolchain-linux64-rust-nightly: NsBOpFzpT82sfq9Sxa6MdQ
+ toolchain-linux64-rust-size: e0_TP74QTFGV3Gwp0oZm7w
+ toolchain-linux64-sccache: fYJWAj-YTCm1qZGbGKvFFA
+ toolchain-linux64-tup: B8bIAVl9Q6u4Sq1kDg9sjQ
+ toolchain-win32-clang-cl-st-an: YJ8sBjtBSSa2r-GNuXwjTA
+ toolchain-win32-rust-1.28: USW_A4OqS2a9ADJ1UQfhCw
+ toolchain-win64-cbindgen: Dh47x4tbQ3eTfT9E9-BFIA
+ toolchain-win64-clang-cl: TRcMRJbxREiO6DfXvmf4SA
+ toolchain-win64-clang-cl-st-an: U5LpO6b3RXGge1eSMvErjg
+ toolchain-win64-clang-tidy: ElrbzUy2ThWDIVGxps9Ewg
+ toolchain-win64-node: YiZyuAI_TvySNF523_VdNQ
+ toolchain-win64-rust-1.28: LtSP0Uo0QTaN9ka4PppP7A
+ toolchain-win64-rust-size: bhXklMe_SB2E-lnqKKoHFA
+ toolchain-win64-sccache: f8ETToxiSpSYEJSozHdcFg
+ upload-generated-sources-linux-devedition-nightly/opt: bFzUdYJAQRe0G5t8u8KTOg
+ upload-generated-sources-linux-nightly/opt: PTjMFha-RiyRGlMJA9nbMg
+ upload-generated-sources-linux64-devedition-nightly/opt: RJ7giipQStyxI9vPNMBfZA
+ upload-generated-sources-linux64-nightly/opt: Eo7DTN7kTDqhvZjFnw5JBA
+ upload-generated-sources-macosx64-devedition-nightly/opt: PzaXu4jPQ4it9LtH8qYjzA
+ upload-generated-sources-macosx64-nightly/opt: Hriy5o4aRA294yak12FPhg
+ upload-generated-sources-win32-devedition-nightly/opt: Lpq7FF3DTHmJ2TqS-cV_cQ
+ upload-generated-sources-win32-nightly/opt: cSmblNMQQKyyfsLL8RcwrA
+ upload-generated-sources-win64-devedition-nightly/opt: ckp7YSkvTmue_snYs_plhA
+ upload-generated-sources-win64-nightly/opt: eaLzYIJvSfmZNfX5ZfGA7w
+ valgrind-linux64-valgrind/opt: Fbla0BDxQ0y77eyPwOSLbg
+filters:
+ - target_tasks_method
+head_ref: 91955baf362bcd432efd89fd8a247bb93e197e91
+head_repository: https://hg.mozilla.org/releases/mozilla-beta
+head_rev: 91955baf362bcd432efd89fd8a247bb93e197e91
+hg_branch: default
+level: "3"
+message: " "
+moz_build_date: "20181011200118"
+next_version: 63.0b15
+optimize_target_tasks: true
+owner: ryanvm@gmail.com
+project: mozilla-beta
+pushdate: 1539288078
+pushlog_id: "9972"
+release_enable_emefree: true
+release_enable_partners: true
+release_eta: null
+release_history:
+ Darwin_x86_64-gcc3-u-i386-x86_64:
+ ach:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ach/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ach/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ach/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ af:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/af/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/af/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/af/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ an:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/an/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/an/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/an/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ar:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ar/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ar/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ar/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ as:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/as/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/as/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/as/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ast:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ast/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ast/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ast/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ az:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/az/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/az/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/az/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ be:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/be/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/be/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/be/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bg:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/bg/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/bg/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/bg/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-BD:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/bn-BD/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/bn-BD/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/bn-BD/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/bn-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/bn-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/bn-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ br:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/br/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/br/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/br/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/bs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/bs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/bs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ca:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ca/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ca/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ca/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cak:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/cak/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/cak/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/cak/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/cs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/cs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/cs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cy:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/cy/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/cy/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/cy/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ da:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/da/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/da/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/da/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ de:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/de/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/de/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/de/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ dsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/dsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/dsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/dsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ el:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/el/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/el/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/el/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-CA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/en-CA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/en-CA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/en-CA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-GB:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/en-GB/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/en-GB/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/en-GB/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-US:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/en-US/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/en-US/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/en-US/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-ZA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/en-ZA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/en-ZA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/en-ZA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eo:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/eo/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/eo/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/eo/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-AR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/es-AR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/es-AR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/es-AR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-CL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/es-CL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/es-CL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/es-CL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-ES:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/es-ES/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/es-ES/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/es-ES/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-MX:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/es-MX/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/es-MX/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/es-MX/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ et:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/et/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/et/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/et/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/eu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/eu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/eu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fa:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/fa/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/fa/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/fa/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ff:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ff/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ff/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ff/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/fi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/fi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/fi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/fr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/fr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/fr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fy-NL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/fy-NL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/fy-NL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/fy-NL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ga-IE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ga-IE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ga-IE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ga-IE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gd:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/gd/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/gd/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/gd/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/gl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/gl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/gl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/gn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/gn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/gn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gu-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/gu-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/gu-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/gu-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ he:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/he/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/he/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/he/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hi-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hi-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hi-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hi-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hy-AM:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/hy-AM/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/hy-AM/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/hy-AM/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ia:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ia/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ia/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ia/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ id:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/id/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/id/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/id/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ is:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/is/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/is/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/is/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ it:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/it/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/it/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/it/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ja-JP-mac:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ja-JP-mac/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ja-JP-mac/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ja-JP-mac/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ka:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ka/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ka/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ka/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kab:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/kab/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/kab/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/kab/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/kk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/kk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/kk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ km:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/km/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/km/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/km/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/kn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/kn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/kn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ko:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ko/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ko/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ko/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lij:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/lij/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/lij/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/lij/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lt:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/lt/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/lt/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/lt/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lv:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/lv/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/lv/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/lv/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mai:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/mai/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/mai/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/mai/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/mk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/mk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/mk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ml:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ml/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ml/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ml/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/mr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/mr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/mr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ms:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ms/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ms/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ms/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ my:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/my/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/my/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/my/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nb-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/nb-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/nb-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/nb-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ne-NP:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ne-NP/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ne-NP/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ne-NP/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/nl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/nl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/nl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nn-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/nn-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/nn-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/nn-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ oc:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/oc/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/oc/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/oc/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ or:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/or/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/or/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/or/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pa-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/pa-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/pa-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/pa-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/pl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/pl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/pl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-BR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/pt-BR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/pt-BR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/pt-BR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-PT:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/pt-PT/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/pt-PT/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/pt-PT/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ rm:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/rm/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/rm/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/rm/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ro:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ro/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ro/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ro/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ru:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ru/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ru/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ru/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ si:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/si/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/si/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/si/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ son:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/son/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/son/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/son/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sq:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sq/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sq/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sq/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sv-SE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/sv-SE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/sv-SE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/sv-SE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ta:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ta/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ta/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ta/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ te:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/te/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/te/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/te/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ th:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/th/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/th/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/th/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ tr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/tr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/tr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/tr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/uk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/uk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/uk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ur:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/ur/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/ur/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/ur/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uz:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/uz/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/uz/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/uz/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ vi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/vi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/vi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/vi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ xh:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/xh/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/xh/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/xh/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-CN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/zh-CN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/zh-CN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/zh-CN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-TW:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/mac/zh-TW/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/mac/zh-TW/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/mac/zh-TW/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ Linux_x86-gcc3:
+ ach:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ach/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ach/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ach/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ af:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/af/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/af/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/af/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ an:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/an/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/an/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/an/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ar:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ar/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ar/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ar/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ as:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/as/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/as/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/as/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ast:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ast/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ast/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ast/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ az:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/az/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/az/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/az/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ be:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/be/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/be/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/be/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bg:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/bg/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/bg/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/bg/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-BD:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/bn-BD/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/bn-BD/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/bn-BD/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/bn-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/bn-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/bn-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ br:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/br/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/br/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/br/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/bs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/bs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/bs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ca:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ca/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ca/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ca/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cak:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/cak/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/cak/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/cak/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/cs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/cs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/cs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cy:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/cy/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/cy/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/cy/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ da:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/da/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/da/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/da/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ de:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/de/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/de/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/de/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ dsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/dsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/dsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/dsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ el:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/el/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/el/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/el/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-CA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/en-CA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/en-CA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/en-CA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-GB:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/en-GB/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/en-GB/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/en-GB/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-US:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/en-US/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/en-US/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/en-US/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-ZA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/en-ZA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/en-ZA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/en-ZA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eo:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/eo/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/eo/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/eo/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-AR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/es-AR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/es-AR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/es-AR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-CL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/es-CL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/es-CL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/es-CL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-ES:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/es-ES/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/es-ES/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/es-ES/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-MX:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/es-MX/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/es-MX/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/es-MX/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ et:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/et/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/et/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/et/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/eu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/eu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/eu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fa:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/fa/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/fa/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/fa/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ff:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ff/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ff/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ff/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/fi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/fi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/fi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/fr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/fr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/fr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fy-NL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/fy-NL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/fy-NL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/fy-NL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ga-IE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ga-IE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ga-IE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ga-IE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gd:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/gd/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/gd/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/gd/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/gl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/gl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/gl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/gn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/gn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/gn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gu-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/gu-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/gu-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/gu-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ he:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/he/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/he/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/he/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hi-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hi-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hi-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hi-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hy-AM:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/hy-AM/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/hy-AM/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/hy-AM/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ia:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ia/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ia/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ia/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ id:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/id/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/id/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/id/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ is:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/is/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/is/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/is/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ it:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/it/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/it/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/it/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ja:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ja/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ja/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ja/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ka:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ka/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ka/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ka/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kab:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/kab/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/kab/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/kab/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/kk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/kk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/kk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ km:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/km/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/km/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/km/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/kn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/kn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/kn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ko:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ko/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ko/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ko/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lij:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/lij/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/lij/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/lij/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lt:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/lt/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/lt/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/lt/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lv:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/lv/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/lv/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/lv/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mai:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/mai/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/mai/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/mai/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/mk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/mk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/mk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ml:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ml/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ml/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ml/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/mr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/mr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/mr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ms:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ms/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ms/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ms/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ my:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/my/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/my/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/my/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nb-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/nb-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/nb-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/nb-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ne-NP:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ne-NP/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ne-NP/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ne-NP/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/nl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/nl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/nl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nn-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/nn-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/nn-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/nn-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ oc:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/oc/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/oc/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/oc/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ or:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/or/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/or/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/or/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pa-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/pa-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/pa-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/pa-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/pl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/pl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/pl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-BR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/pt-BR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/pt-BR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/pt-BR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-PT:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/pt-PT/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/pt-PT/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/pt-PT/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ rm:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/rm/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/rm/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/rm/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ro:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ro/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ro/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ro/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ru:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ru/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ru/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ru/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ si:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/si/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/si/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/si/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ son:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/son/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/son/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/son/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sq:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sq/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sq/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sq/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sv-SE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/sv-SE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/sv-SE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/sv-SE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ta:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ta/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ta/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ta/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ te:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/te/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/te/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/te/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ th:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/th/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/th/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/th/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ tr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/tr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/tr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/tr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/uk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/uk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/uk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ur:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/ur/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/ur/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/ur/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uz:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/uz/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/uz/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/uz/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ vi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/vi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/vi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/vi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ xh:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/xh/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/xh/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/xh/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-CN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/zh-CN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/zh-CN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/zh-CN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-TW:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-i686/zh-TW/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-i686/zh-TW/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-i686/zh-TW/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ Linux_x86_64-gcc3:
+ ach:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ach/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ach/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ach/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ af:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/af/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/af/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/af/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ an:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/an/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/an/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/an/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ar:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ar/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ar/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ar/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ as:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/as/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/as/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/as/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ast:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ast/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ast/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ast/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ az:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/az/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/az/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/az/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ be:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/be/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/be/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/be/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bg:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/bg/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/bg/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/bg/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-BD:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/bn-BD/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/bn-BD/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/bn-BD/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/bn-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/bn-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/bn-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ br:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/br/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/br/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/br/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/bs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/bs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/bs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ca:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ca/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ca/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ca/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cak:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/cak/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/cak/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/cak/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/cs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/cs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/cs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cy:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/cy/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/cy/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/cy/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ da:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/da/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/da/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/da/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ de:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/de/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/de/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/de/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ dsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/dsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/dsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/dsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ el:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/el/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/el/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/el/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-CA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/en-CA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/en-CA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/en-CA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-GB:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/en-GB/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/en-GB/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/en-GB/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-US:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/en-US/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/en-US/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/en-US/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-ZA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/en-ZA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/en-ZA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/en-ZA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eo:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/eo/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/eo/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/eo/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-AR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/es-AR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/es-AR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/es-AR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-CL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/es-CL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/es-CL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/es-CL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-ES:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/es-ES/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/es-ES/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/es-ES/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-MX:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/es-MX/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/es-MX/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/es-MX/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ et:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/et/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/et/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/et/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/eu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/eu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/eu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fa:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/fa/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/fa/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/fa/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ff:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ff/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ff/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ff/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/fi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/fi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/fi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/fr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/fr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/fr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fy-NL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/fy-NL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/fy-NL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/fy-NL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ga-IE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ga-IE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ga-IE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ga-IE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gd:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/gd/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/gd/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/gd/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/gl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/gl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/gl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/gn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/gn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/gn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gu-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/gu-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/gu-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/gu-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ he:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/he/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/he/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/he/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hi-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hi-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hi-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hi-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hy-AM:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/hy-AM/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/hy-AM/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/hy-AM/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ia:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ia/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ia/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ia/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ id:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/id/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/id/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/id/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ is:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/is/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/is/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/is/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ it:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/it/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/it/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/it/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ja:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ja/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ja/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ja/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ka:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ka/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ka/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ka/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kab:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/kab/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/kab/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/kab/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/kk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/kk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/kk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ km:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/km/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/km/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/km/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/kn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/kn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/kn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ko:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ko/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ko/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ko/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lij:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/lij/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/lij/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/lij/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lt:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/lt/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/lt/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/lt/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lv:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/lv/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/lv/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/lv/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mai:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/mai/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/mai/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/mai/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/mk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/mk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/mk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ml:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ml/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ml/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ml/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/mr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/mr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/mr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ms:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ms/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ms/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ms/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ my:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/my/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/my/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/my/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nb-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/nb-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/nb-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/nb-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ne-NP:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ne-NP/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ne-NP/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ne-NP/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/nl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/nl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/nl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nn-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/nn-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/nn-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/nn-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ oc:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/oc/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/oc/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/oc/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ or:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/or/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/or/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/or/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pa-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/pa-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/pa-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/pa-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/pl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/pl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/pl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-BR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/pt-BR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/pt-BR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/pt-BR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-PT:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/pt-PT/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/pt-PT/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/pt-PT/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ rm:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/rm/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/rm/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/rm/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ro:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ro/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ro/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ro/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ru:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ru/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ru/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ru/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ si:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/si/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/si/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/si/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ son:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/son/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/son/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/son/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sq:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sq/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sq/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sq/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sv-SE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/sv-SE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/sv-SE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/sv-SE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ta:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ta/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ta/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ta/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ te:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/te/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/te/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/te/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ th:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/th/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/th/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/th/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ tr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/tr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/tr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/tr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/uk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/uk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/uk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ur:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/ur/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/ur/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/ur/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uz:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/uz/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/uz/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/uz/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ vi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/vi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/vi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/vi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ xh:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/xh/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/xh/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/xh/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-CN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/zh-CN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/zh-CN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/zh-CN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-TW:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/linux-x86_64/zh-TW/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/linux-x86_64/zh-TW/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/linux-x86_64/zh-TW/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ WINNT_x86-msvc:
+ ach:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ach/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ach/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ach/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ af:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/af/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/af/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/af/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ an:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/an/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/an/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/an/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ar:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ar/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ar/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ar/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ as:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/as/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/as/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/as/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ast:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ast/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ast/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ast/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ az:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/az/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/az/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/az/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ be:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/be/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/be/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/be/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bg:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/bg/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/bg/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/bg/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-BD:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/bn-BD/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/bn-BD/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/bn-BD/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/bn-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/bn-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/bn-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ br:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/br/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/br/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/br/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/bs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/bs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/bs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ca:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ca/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ca/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ca/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cak:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/cak/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/cak/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/cak/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/cs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/cs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/cs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cy:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/cy/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/cy/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/cy/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ da:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/da/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/da/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/da/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ de:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/de/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/de/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/de/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ dsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/dsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/dsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/dsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ el:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/el/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/el/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/el/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-CA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/en-CA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/en-CA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/en-CA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-GB:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/en-GB/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/en-GB/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/en-GB/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-US:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/en-US/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/en-US/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/en-US/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-ZA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/en-ZA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/en-ZA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/en-ZA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eo:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/eo/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/eo/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/eo/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-AR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/es-AR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/es-AR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/es-AR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-CL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/es-CL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/es-CL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/es-CL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-ES:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/es-ES/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/es-ES/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/es-ES/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-MX:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/es-MX/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/es-MX/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/es-MX/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ et:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/et/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/et/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/et/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/eu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/eu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/eu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fa:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/fa/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/fa/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/fa/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ff:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ff/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ff/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ff/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/fi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/fi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/fi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/fr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/fr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/fr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fy-NL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/fy-NL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/fy-NL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/fy-NL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ga-IE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ga-IE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ga-IE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ga-IE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gd:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/gd/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/gd/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/gd/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/gl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/gl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/gl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/gn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/gn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/gn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gu-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/gu-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/gu-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/gu-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ he:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/he/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/he/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/he/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hi-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hi-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hi-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hi-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hy-AM:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/hy-AM/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/hy-AM/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/hy-AM/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ia:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ia/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ia/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ia/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ id:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/id/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/id/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/id/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ is:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/is/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/is/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/is/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ it:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/it/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/it/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/it/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ja:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ja/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ja/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ja/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ka:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ka/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ka/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ka/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kab:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/kab/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/kab/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/kab/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/kk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/kk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/kk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ km:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/km/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/km/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/km/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/kn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/kn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/kn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ko:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ko/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ko/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ko/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lij:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/lij/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/lij/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/lij/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lt:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/lt/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/lt/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/lt/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lv:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/lv/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/lv/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/lv/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mai:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/mai/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/mai/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/mai/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/mk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/mk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/mk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ml:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ml/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ml/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ml/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/mr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/mr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/mr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ms:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ms/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ms/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ms/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ my:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/my/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/my/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/my/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nb-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/nb-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/nb-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/nb-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ne-NP:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ne-NP/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ne-NP/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ne-NP/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/nl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/nl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/nl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nn-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/nn-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/nn-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/nn-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ oc:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/oc/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/oc/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/oc/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ or:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/or/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/or/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/or/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pa-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/pa-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/pa-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/pa-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/pl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/pl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/pl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-BR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/pt-BR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/pt-BR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/pt-BR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-PT:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/pt-PT/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/pt-PT/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/pt-PT/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ rm:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/rm/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/rm/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/rm/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ro:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ro/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ro/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ro/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ru:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ru/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ru/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ru/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ si:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/si/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/si/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/si/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ son:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/son/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/son/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/son/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sq:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sq/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sq/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sq/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sv-SE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/sv-SE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/sv-SE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/sv-SE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ta:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ta/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ta/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ta/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ te:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/te/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/te/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/te/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ th:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/th/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/th/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/th/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ tr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/tr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/tr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/tr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/uk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/uk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/uk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ur:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/ur/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/ur/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/ur/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uz:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/uz/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/uz/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/uz/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ vi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/vi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/vi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/vi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ xh:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/xh/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/xh/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/xh/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-CN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/zh-CN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/zh-CN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/zh-CN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-TW:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win32/zh-TW/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win32/zh-TW/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win32/zh-TW/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ WINNT_x86_64-msvc:
+ ach:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ach/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ach/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ach/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ af:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/af/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/af/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/af/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ an:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/an/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/an/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/an/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ar:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ar/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ar/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ar/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ as:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/as/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/as/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/as/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ast:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ast/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ast/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ast/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ az:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/az/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/az/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/az/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ be:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/be/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/be/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/be/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bg:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/bg/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/bg/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/bg/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-BD:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/bn-BD/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/bn-BD/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/bn-BD/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bn-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/bn-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/bn-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/bn-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ br:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/br/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/br/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/br/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ bs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/bs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/bs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/bs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ca:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ca/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ca/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ca/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cak:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/cak/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/cak/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/cak/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cs:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/cs/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/cs/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/cs/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ cy:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/cy/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/cy/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/cy/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ da:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/da/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/da/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/da/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ de:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/de/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/de/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/de/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ dsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/dsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/dsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/dsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ el:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/el/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/el/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/el/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-CA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/en-CA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/en-CA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/en-CA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-GB:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/en-GB/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/en-GB/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/en-GB/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-US:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/en-US/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/en-US/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/en-US/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ en-ZA:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/en-ZA/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/en-ZA/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/en-ZA/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eo:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/eo/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/eo/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/eo/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-AR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/es-AR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/es-AR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/es-AR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-CL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/es-CL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/es-CL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/es-CL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-ES:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/es-ES/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/es-ES/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/es-ES/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ es-MX:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/es-MX/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/es-MX/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/es-MX/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ et:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/et/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/et/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/et/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ eu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/eu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/eu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/eu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fa:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/fa/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/fa/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/fa/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ff:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ff/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ff/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ff/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/fi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/fi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/fi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/fr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/fr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/fr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ fy-NL:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/fy-NL/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/fy-NL/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/fy-NL/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ga-IE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ga-IE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ga-IE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ga-IE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gd:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/gd/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/gd/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/gd/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/gl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/gl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/gl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/gn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/gn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/gn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ gu-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/gu-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/gu-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/gu-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ he:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/he/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/he/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/he/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hi-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hi-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hi-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hi-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hsb:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hsb/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hsb/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hsb/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hu:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hu/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hu/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hu/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ hy-AM:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/hy-AM/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/hy-AM/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/hy-AM/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ia:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ia/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ia/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ia/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ id:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/id/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/id/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/id/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ is:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/is/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/is/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/is/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ it:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/it/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/it/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/it/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ja:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ja/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ja/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ja/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ka:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ka/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ka/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ka/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kab:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/kab/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/kab/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/kab/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/kk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/kk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/kk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ km:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/km/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/km/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/km/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ kn:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/kn/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/kn/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/kn/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ko:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ko/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ko/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ko/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lij:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/lij/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/lij/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/lij/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lt:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/lt/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/lt/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/lt/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ lv:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/lv/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/lv/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/lv/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mai:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/mai/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/mai/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/mai/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/mk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/mk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/mk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ml:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ml/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ml/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ml/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ mr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/mr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/mr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/mr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ms:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ms/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ms/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ms/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ my:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/my/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/my/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/my/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nb-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/nb-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/nb-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/nb-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ne-NP:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ne-NP/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ne-NP/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ne-NP/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/nl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/nl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/nl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ nn-NO:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/nn-NO/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/nn-NO/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/nn-NO/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ oc:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/oc/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/oc/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/oc/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ or:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/or/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/or/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/or/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pa-IN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/pa-IN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/pa-IN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/pa-IN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/pl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/pl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/pl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-BR:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/pt-BR/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/pt-BR/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/pt-BR/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ pt-PT:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/pt-PT/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/pt-PT/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/pt-PT/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ rm:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/rm/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/rm/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/rm/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ro:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ro/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ro/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ro/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ru:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ru/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ru/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ru/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ si:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/si/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/si/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/si/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sl:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sl/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sl/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sl/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ son:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/son/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/son/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/son/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sq:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sq/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sq/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sq/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ sv-SE:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/sv-SE/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/sv-SE/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/sv-SE/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ta:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ta/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ta/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ta/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ te:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/te/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/te/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/te/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ th:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/th/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/th/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/th/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ tr:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/tr/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/tr/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/tr/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uk:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/uk/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/uk/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/uk/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ ur:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/ur/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/ur/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/ur/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ uz:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/uz/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/uz/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/uz/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ vi:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/vi/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/vi/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/vi/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ xh:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/xh/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/xh/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/xh/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-CN:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/zh-CN/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/zh-CN/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/zh-CN/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+ zh-TW:
+ target-63.0b11.partial.mar:
+ buildid: "20181001131022"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b11-candidates/build1/update/win64/zh-TW/firefox-63.0b11.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b11
+ product: Firefox
+ target-63.0b12.partial.mar:
+ buildid: "20181004174654"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b12-candidates/build2/update/win64/zh-TW/firefox-63.0b12.complete.mar
+ previousBuildNumber: "2"
+ previousVersion: 63.0b12
+ product: Firefox
+ target-63.0b13.partial.mar:
+ buildid: "20181008155858"
+ mar_url: http://archive.mozilla.org/pub/firefox/candidates/63.0b13-candidates/build1/update/win64/zh-TW/firefox-63.0b13.complete.mar
+ previousBuildNumber: "1"
+ previousVersion: 63.0b13
+ product: Firefox
+release_partner_build_number: 1
+release_partner_config:
+ release-eme-free-repack:
+ mozilla-EME-free:
+ mozilla-EME-free:
+ locales:
+ - ach
+ - af
+ - an
+ - ar
+ - as
+ - ast
+ - az
+ - be
+ - bg
+ - bn-BD
+ - bn-IN
+ - br
+ - bs
+ - ca
+ - cak
+ - cs
+ - cy
+ - da
+ - de
+ - dsb
+ - el
+ - en-GB
+ - en-US
+ - en-ZA
+ - eo
+ - es-AR
+ - es-CL
+ - es-ES
+ - es-MX
+ - et
+ - eu
+ - fa
+ - ff
+ - fi
+ - fr
+ - fy-NL
+ - ga-IE
+ - gd
+ - gl
+ - gn
+ - gu-IN
+ - he
+ - hi-IN
+ - hr
+ - hsb
+ - hu
+ - hy-AM
+ - id
+ - is
+ - it
+ - ja
+ - ja-JP-mac
+ - ka
+ - kab
+ - kk
+ - km
+ - kn
+ - ko
+ - lij
+ - lt
+ - lv
+ - mai
+ - mk
+ - ml
+ - mr
+ - ms
+ - my
+ - nb-NO
+ - nl
+ - nn-NO
+ - or
+ - pa-IN
+ - pl
+ - pt-BR
+ - pt-PT
+ - rm
+ - ro
+ - ru
+ - si
+ - sk
+ - sl
+ - son
+ - sq
+ - sr
+ - sv-SE
+ - ta
+ - te
+ - th
+ - tr
+ - uk
+ - ur
+ - uz
+ - vi
+ - xh
+ - zh-CN
+ - zh-TW
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ release-partner-repack:
+ acer:
+ acer-002:
+ locales:
+ - en-US
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ aol:
+ aol:
+ locales:
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ aol_de:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ aol_desktop:
+ locales:
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ aol_huffington:
+ locales:
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ aol_uk:
+ locales:
+ - en-GB
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ chipde:
+ chipde:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ cliqz:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ cliqz-003:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ cliqz-004:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ cliqz-005:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ cliqz-006:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ cliqz-007:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ cliqz-008:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ cliqz-control:
+ locales:
+ - de
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ firefox:
+ firefox-election-edition:
+ locales:
+ - en-US
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ funnelcake:
+ funnelcake134:
+ locales:
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ funnelcake137:
+ locales:
+ - en-US
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ ironsource:
+ ironsource-google:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - es-ES
+ - fr
+ - id
+ - it
+ - ja
+ - ko
+ - pa-IN
+ - pl
+ - pt-BR
+ - ru
+ - tr
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ ironsource-google-aura:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - es-ES
+ - fr
+ - id
+ - it
+ - ja
+ - ko
+ - pa-IN
+ - pl
+ - pt-BR
+ - ru
+ - tr
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ ironsource-yahoo:
+ locales:
+ - en-US
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ ironsource-yahoo-aura:
+ locales:
+ - en-US
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ ironsource-yandex:
+ locales:
+ - en-US
+ - tr
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ mailru:
+ mailru:
+ locales:
+ - ru
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ okru:
+ locales:
+ - az
+ - en-US
+ - hy-AM
+ - kk
+ - ro
+ - ru
+ - tr
+ - uk
+ - uz
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ mozillaonline:
+ baidu:
+ locales:
+ - zh-CN
+ platforms:
+ - win32-shippable
+ upload_to_candidates: "true"
+ kingsoft:
+ locales:
+ - zh-CN
+ platforms:
+ - win32-shippable
+ upload_to_candidates: "true"
+ mainOther:
+ locales:
+ - en-US
+ - zh-CN
+ platforms:
+ - linux-shippable
+ - linux64-shippable
+ - macosx64-shippable
+ upload_to_candidates: "true"
+ mainWinFull:
+ locales:
+ - en-US
+ - zh-CN
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ mainWinStubFallback:
+ locales:
+ - zh-CN
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ others:
+ locales:
+ - zh-CN
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ qihoo:
+ locales:
+ - zh-CN
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ tencent:
+ locales:
+ - zh-CN
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ xbsafe:
+ locales:
+ - zh-CN
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ zol:
+ locales:
+ - zh-CN
+ platforms:
+ - win32-shippable
+ upload_to_candidates: "true"
+ ntt:
+ ntt:
+ locales:
+ - en-US
+ - ja
+ - ja-JP-mac
+ platforms:
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ playanext:
+ playanext-wt:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - es-ES
+ - fr
+ - it
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ playanext-wt-us:
+ locales:
+ - en-US
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ qwant:
+ qwant-001:
+ locales:
+ - ca
+ - cy
+ - de
+ - en-GB
+ - en-US
+ - es-ES
+ - fr
+ - gd
+ - it
+ platforms:
+ - linux-shippable
+ - linux64-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ qwant-002:
+ locales:
+ - ca
+ - cy
+ - de
+ - en-GB
+ - en-US
+ - es-ES
+ - fr
+ - gd
+ - it
+ platforms:
+ - linux-shippable
+ - linux64-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ seznam:
+ seznam:
+ locales:
+ - cs
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ softonic:
+ softonic:
+ locales:
+ - de
+ - en-US
+ - es-ES
+ - fr
+ - it
+ - pl
+ - pt-BR
+ - ru
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ sweetlabs:
+ sweetlabs-b-oem1:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-b-oem2:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-b-oem3:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-b-r-oem1:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-b-r-oem2:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-b-r-oem3:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-oem1:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-oem2:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-r-oem1:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ sweetlabs-r-oem2:
+ locales:
+ - de
+ - en-GB
+ - en-US
+ - fr
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ upload_to_candidates: "true"
+ toshiba:
+ toshiba-001-MX:
+ locales:
+ - es-MX
+ platforms:
+ - win32-shippable
+ toshiba-001-US:
+ locales:
+ - en-US
+ platforms:
+ - win32-shippable
+ toshiba-b2b-JP:
+ locales:
+ - en-US
+ platforms:
+ - win32-shippable
+ toshiba-download-B-US:
+ locales:
+ - en-US
+ platforms:
+ - win32-shippable
+ toshiba-download-MX:
+ locales:
+ - es-MX
+ platforms:
+ - win32-shippable
+ toshiba-download-US:
+ locales:
+ - en-US
+ platforms:
+ - win32-shippable
+ unitedinternet:
+ 1und1:
+ locales:
+ - de
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ 1und1_notb:
+ locales:
+ - de
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ gmx:
+ locales:
+ - de
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ gmx_notb:
+ locales:
+ - de
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ mail.com:
+ locales:
+ - de
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ mail.com_notb:
+ locales:
+ - de
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ web.de:
+ locales:
+ - de
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ web.de_notb:
+ locales:
+ - de
+ - en-US
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ wildtangent:
+ wildtangent:
+ locales:
+ - en-US
+ platforms:
+ - win32-shippable
+ upload_to_candidates: "true"
+ yandex:
+ yandex-drp:
+ locales:
+ - ru
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ yandex-planB:
+ locales:
+ - ru
+ platforms:
+ - win32-shippable
+ - win64-shippable
+ yandex-portals:
+ locales:
+ - ru
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ yandex-ru:
+ locales:
+ - ru
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ yandex-ru-mz:
+ locales:
+ - ru
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ yandex-tr:
+ locales:
+ - tr
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ yandex-tr-gezginler:
+ locales:
+ - tr
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ yandex-tr-tamindir:
+ locales:
+ - tr
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+ yandex-ua:
+ locales:
+ - ru
+ - uk
+ platforms:
+ - linux-shippable
+ - macosx64-shippable
+ - win32-shippable
+ - win64-shippable
+release_partners: null
+release_product: firefox
+release_type: "beta"
+target_tasks_method: ship_desktop
+try_mode: null
+try_options: null
+try_task_config: {}
+version: 63.0b14
+required_signoffs: []
+signoff_urls: {}
+phabricator_diff:
+tasks_for: action
diff --git a/taskcluster/test/params/mb-ship-firefox.yml b/taskcluster/test/params/mb-ship-firefox.yml
new file mode 100644
index 0000000000..f2b47bf8fd
--- /dev/null
+++ b/taskcluster/test/params/mb-ship-firefox.yml
@@ -0,0 +1,109 @@
+---
+base_repository: https://hg.mozilla.org/mozilla-central
+build_date: 1509164545
+build_number: 1
+app_version: 60.0b1
+version: 60.0b1
+next_version: 60.0b2
+filters:
+ - target_tasks_method
+head_ref: 196059cada7070ab1e35db83a22b60389bd0c794
+head_repository: https://hg.mozilla.org/releases/mozilla-beta
+head_rev: 196059cada7070ab1e35db83a22b60389bd0c794
+hg_branch: default
+level: "3"
+message: " "
+# morph_templates: {}
+moz_build_date: "20171028042225"
+optimize_target_tasks: true
+owner: xquan@mozilla.com
+project: mozilla-beta
+pushdate: 1509164545
+pushlog_id: "8069"
+release_eta: "2018-01-31T00:30:00+00:00"
+release_history: {}
+release_enable_partners: true
+release_partners: null
+release_partner_build_number: 1
+release_partner_config:
+ {
+ "release-eme-free-repack":
+ {
+ "mozilla-EME-free":
+ {
+ "mozilla-EME-free":
+ {
+ "s3cfg": "/builds/release-s3cfg",
+ "dist_version": "1.0",
+ "bucket": "net-mozaws-prod-delivery-firefox",
+ "platforms":
+ [
+ "macosx64-shippable",
+ "win32-shippable",
+ "win64-shippable",
+ ],
+ "aus": "mozilla-EMEfree",
+ "output_dir": "%(platform)s-EME-free/%(locale)s",
+ "upload_to_candidates": "true",
+ "locales": ["de", "en-US"],
+ "dist_id": "mozilla-EMEfree",
+ },
+ },
+ },
+ "release-partner-repack":
+ {
+ "partner2":
+ {
+ "partner2":
+ {
+ "dist_version": "1.0",
+ "bucket": "net-mozaws-prod-delivery-firefox",
+ "platforms":
+ [
+ "macosx64-shippable",
+ "win32-shippable",
+ "win64-shippable",
+ ],
+ "aus": "partner2",
+ "output_dir": "%(platform)s-EME-free/%(locale)s",
+ "locales": ["en-US"],
+ "dist_id": "partner2",
+ },
+ },
+ "partner1":
+ {
+ "partner1":
+ {
+ "dist_version": "1.0",
+ "bucket": "net-mozaws-prod-delivery-firefox",
+ "platforms":
+ [
+ "linux-shippable",
+ "linux64-shippable",
+ "macosx64-shippable",
+ "win32-shippable",
+ "win64-shippable",
+ ],
+ "aus": "partner1",
+ "output_dir": "%(platform)s-EME-free/%(locale)s",
+ "upload_to_candidates": "true",
+ "locales": ["de", "en-US"],
+ "dist_id": "partner1",
+ },
+ },
+ },
+ }
+release_enable_emefree: true
+# target_task_labels: []
+target_tasks_method: ship_desktop
+do_not_optimize: []
+try_mode: null
+try_task_config: {}
+existing_tasks: {}
+try_options:
+release_type: "beta"
+release_product: firefox
+required_signoffs: []
+signoff_urls: {}
+phabricator_diff:
+tasks_for: action
diff --git a/taskcluster/test/params/mb-ship-geckoview.yml b/taskcluster/test/params/mb-ship-geckoview.yml
new file mode 100644
index 0000000000..4640bf611e
--- /dev/null
+++ b/taskcluster/test/params/mb-ship-geckoview.yml
@@ -0,0 +1,3822 @@
+---
+app_version: 75.0b1
+base_repository: https://hg.mozilla.org/mozilla-unified
+build_date: 1582796996
+build_number: 1
+do_not_optimize: []
+existing_tasks:
+ artifact-build-linux64-artifact/opt: P_IsAyPITzuXsmZOvP2LIA
+ build-android-aarch64-gcp/debug: JZuEhLIpRuaxpQ81kPlEzA
+ build-android-aarch64-gcp/opt: BjSF-tEeSBmpjMMy8dlz5Q
+ build-android-aarch64/debug: AzCnLhS5TG63X1TtSLN8Zw
+ build-android-aarch64/opt: BZYCYLuqRk2Y9FuxDHcQQA
+ build-android-aarch64/pgo: OUxM9dVET12aawe7NEhzHw
+ build-android-api-16-gcp/debug: ZHbjdppbRbuRgRochX5MzA
+ build-android-api-16-gcp/opt: SSUvfaMFQVymV9pFHRqYWg
+ build-android-api-16/debug: JtWzTgdkRVy0uohQPkVdFg
+ build-android-api-16/opt: M5qSN82KTm--V3TrDJponw
+ build-android-api-16/pgo: Vh6K5kuHRDKgeOc8wnPGfg
+ build-android-geckoview-docs/opt: aBfbhXzYSxu4KNObzsBLKA
+ build-android-x86-fuzzing/debug: X9kImocJT2a4Ba0Z-gvgww
+ build-android-x86-gcp/opt: TLrDFhgnQYuTINyPnWGoJQ
+ build-android-x86/opt: EWr2P3LRSfOwPzs0cOCFxA
+ build-android-x86_64-asan-fuzzing/opt: P8w9ZQi8QzSf3tF9q8hy_Q
+ build-android-x86_64-gcp/debug: YRsJOHnORcKSk_DRCYdbLQ
+ build-android-x86_64-gcp/opt: b2T1JIZNRxK7kAzsPJsI3A
+ build-android-x86_64/debug: BUGo2DFDQ02j73GENoDxGQ
+ build-android-x86_64/opt: NAlj76XiRziaUXtf6xQ4DA
+ build-docker-image-android-build: ato_32n2RDOL14IW1fFQ_A
+ build-docker-image-condprof: d7hq_hacRnm6UmtFHi6_rA
+ build-docker-image-custom-v8: bPi-QafwRFqm_x_jyDqAHA
+ build-docker-image-debian10-amd64-build: Zc1-X6g4To2DasSgQcANMA
+ build-docker-image-debian10-arm64-build: VaNeOjDnSSG7Q8sL6eC7GQ
+ build-docker-image-debian10-base: EQUcZ-k3Rd-cRPjItvhNqQ
+ build-docker-image-debian10-packages: GWpsUMu5RI6gbqMHumOKJg
+ build-docker-image-debian10-raw: Qs5XdxsRTTeQGjKcVmi43A
+ build-docker-image-debian10-test: CyDMHR0DRc-ne3nI8Wgktg
+ build-docker-image-debian10-test-iris: dOE4SBCuQmGvu3B7IVdDhQ
+ build-docker-image-debian7-amd64-build: IIEnKGrFS36vh4xj9p_DqQ
+ build-docker-image-debian7-amd64-build-base: UBPBa4ZGRFus5dOPnKcu0g
+ build-docker-image-debian7-base: OAJPeInCT8y-LmUhmwZHLg
+ build-docker-image-debian7-i386-build: ATRybbY-QtCDtr62SRvp2A
+ build-docker-image-debian7-i386-packages: IuZ_5SRIQHSGdUadyX2FkQ
+ build-docker-image-debian7-i386-raw: f-6sR9nFSryzACrIJ0DarQ
+ build-docker-image-debian7-mozjs-rust-build: cLBUVx_mSbufJfO-9aqZXQ
+ build-docker-image-debian7-packages: KN1swzULR5C6XN8lNpAMGg
+ build-docker-image-debian7-raw: ULgNyhP4QOi89bdL2MRAbQ
+ build-docker-image-debian9-amd64-build: Kumob80mS1aanoQaihMaEg
+ build-docker-image-debian9-base: ALK_wnCMR3qob9mSxrgvgA
+ build-docker-image-debian9-packages: Axa1ka2BS4i0y67Btnsgiw
+ build-docker-image-debian9-raw: TGIcdv0tSHGQpGfY8DibgQ
+ build-docker-image-desktop1604-test: JflqYDdRRlGgFITaxf8SOw
+ build-docker-image-diffoscope: RBWk6AUZSMqw5TvWEjiiWQ
+ build-docker-image-fetch: G3KvjWkoS2ym-lrahCb-Zw
+ build-docker-image-firefox-snap: LQsRfQtMREW0kkDKBy-CNQ
+ build-docker-image-funsize-update-generator: VkcV9D-vRyuKDWhnzlA1Mw
+ build-docker-image-gdb-test: LEr2pG42RSK4el6nvpzCew
+ build-docker-image-github-sync: SOAFmzQOQtOXNEPLwSyaYg
+ build-docker-image-image_builder: Qc1jybi4TFC0VSCNvcRJ4g
+ build-docker-image-index-task: EE5E1m5ESReaNAxXOz8lNA
+ build-docker-image-lint: WnOYkBODRXmLjdEePfhI0g
+ build-docker-image-mingw32-build: NL6eklFCQNShDFYQQ6Sd5A
+ build-docker-image-mozapkpublisher: JOWIgQadRJimoAuFwI7Nkg
+ build-docker-image-partner-repack: Rcml9IrtT5iARRcC5VHDOg
+ build-docker-image-periodic-updates: YkONahVKT36Az2YEIOZKCQ
+ build-docker-image-pipfile-updates: H_A43Kk2QD-YgbZ_VDZp4g
+ build-docker-image-static-analysis-build: fkd53EKQTjaJmduIrYxxcw
+ build-docker-image-system-symbols-mac: B1pzNRyRTduh0nXgJ1tWgQ
+ build-docker-image-system-symbols-win: fKYdzvJgQ_KcWIeduXDvWA
+ build-docker-image-toolchain-arm64-build: VQIiuCuxSM-JbDoZ0kCFPA
+ build-docker-image-toolchain-build: Fq72uSJoT8mGHnIhNP-zKw
+ build-docker-image-ubuntu1804-test: eVDwdUKqRWunV0SXY10-5g
+ build-docker-image-update-verify: SZRoRsV3S4iVqLqNw8CIUA
+ build-docker-image-valgrind-build: Va8AbF5wR6GzH5UjvqrRRA
+ build-docker-image-visual-metrics: PAHWYQnLSpisQv6VwFWybA
+ build-docker-image-webrender: PzNqXj9LTj-XasP-LugElg
+ build-docker-image-wgpu: a0nDaR_jRtmTz99QALOWnw
+ build-fat-aar-android-geckoview-fat-aar/opt: HCJljo7FSpK3gT_LAeTWZA
+ build-linux-gcp/debug: cf-Y0SwyTcOFf--UHFOloQ
+ build-linux-gcp/opt: eavFZiUtTUOHKfLsGufe0w
+ build-linux-reproduced/opt: cMWm9b3LQ72xwxfasFA3PQ
+ build-linux-rusttests/debug: JaHvX37JSDuUB0ntxBU6lg
+ build-linux-rusttests/opt: fq0Z8Wj4Qom8ARevqADT7A
+ build-linux-shippable/opt: AXTjtDr0Tb-M_kAqPBFyKw
+ build-linux-shippable/opt-upload-symbols: XqgtKEvqTS-HFTix41nkFA
+ build-linux/debug: ZNiqISx1RDiLrF-a1hq-wA
+ build-linux/opt: BdawADUPSemriSIoDXxsog
+ build-linux64-aarch64/opt: Pcxw_8wlTyaWJDyZ5xrw-Q
+ build-linux64-asan-fuzzing-ccov/opt: HUYgNOZARJqmPQrtk4iqzg
+ build-linux64-asan-fuzzing/opt: bZFh_OUjRySkvj83LLamJg
+ build-linux64-asan/debug: FSlgd5H4T0iVYTUhvbDOWw
+ build-linux64-asan/opt: ZqqBHJNZTem3ZkHExb0mCQ
+ build-linux64-base-toolchains-clang/debug: Y8FE1eqHR66QDeZVDQ3Uyg
+ build-linux64-base-toolchains-clang/opt: SayzoS31SKuBwyHjpQETBQ
+ build-linux64-base-toolchains/debug: S-4cLzdIR96EgrLbkMnXhA
+ build-linux64-base-toolchains/opt: U5bh2PPDSDizcB0BFdIYYA
+ build-linux64-ccov/opt: S9pIOAraTOev-nwtxutsKg
+ build-linux64-fuzzing-ccov/opt: VpIxWb_6TleNgYixAfcl0A
+ build-linux64-fuzzing/debug: WeTsICwFTyeeZlTGV28Hqw
+ build-linux64-gcp/debug: Por1xntcQbiW-RDlJtSmLQ
+ build-linux64-gcp/opt: DX3_oUV2RwymjAbmUXCs9Q
+ build-linux64-noopt/debug: Y5ovxTjWTXuUSDPNnZ2u-g
+ build-linux64-plain/debug: Ebzemw49Qoqk94u9SYSmaQ
+ build-linux64-plain/opt: W4xC9FTlRlqUxEIh3tBlcg
+ build-linux64-rusttests/debug: awS20pyaRiSYzp28PMeljw
+ build-linux64-rusttests/opt: P8wMv0EGQqq4LOOxDEwZCA
+ build-linux64-shippable/opt: e09A6IgOSnOJNTcojWgaYg
+ build-linux64-shippable/opt-upload-symbols: Zos_PPr9Tsm73V5f0eY8ag
+ build-linux64-tsan-fuzzing/opt: IX6vbwr7QdGxcSXVA42yyA
+ build-linux64-tsan/opt: IunEJ8BdTEebbw4hvhCTiQ
+ build-linux64/debug: YyjeFTVeRrOuEX5oXGXLFQ
+ build-linux64/opt: CnU_i566R5K7uv3abLX7Lg
+ build-macosx64-asan-fuzzing/opt: Z_58dz9MRjyXb3MMlmty6w
+ build-macosx64-ccov/opt: CnX59bW2QNKwj5aR6T1Ieg
+ build-macosx64-fuzzing/debug: YLnlTIgCQlG9-DvMoj2Yzw
+ build-macosx64-gcp/debug: Lnyld42ISM6LZ-sUv6j63A
+ build-macosx64-gcp/opt: DnExfHB0QZmrSZvDY21KLA
+ build-macosx64-noopt/debug: D8zwO54iQiaPU6wnkKqZnw
+ build-macosx64-shippable/opt: UVIhzjB3SWSKUxihzm0MhQ
+ build-macosx64-shippable/opt-upload-symbols: EQ1LBdXsSNG_tSTNwuvffg
+ build-macosx64/debug: Q2ymr-hQRTaLFBtCgnpFVQ
+ build-macosx64/opt: cvDxNoAQSomchCCS8gkORA
+ build-notarization-part-1-macosx64-shippable/opt: JN2fiqdUQtKetdMWJndvcQ
+ build-notarization-poller-macosx64-shippable/opt: D69R3VcXTJSUL-6uTAM1fw
+ build-signing-linux-shippable/opt: EVTgz3EtSwyPpeRRb5w4OQ
+ build-signing-linux/opt: F60Gwm8LRcWmUfagfO6DQw
+ build-signing-linux64-shippable/opt: ayCiynMXT0u8GfVL56K0dg
+ build-signing-linux64/opt: JkGzlpG4SyWzu92UznCtdg
+ build-signing-macosx64-shippable/opt: Hc8VMjd_T9OED14HFBNm4w
+ build-signing-macosx64/opt: XxzDJsrQQFOab2_R9xN4uA
+ build-signing-win32-shippable/opt: ZZbgcTC3SeyHdGiZv3Uirg
+ build-signing-win32/debug: YmEvmWUlTNq337FkJ1JdxQ
+ build-signing-win32/opt: GOn2HGxfTCS1ULnURBPbnQ
+ build-signing-win64-aarch64-shippable/opt: OBcoF-rGSKm_hocIsWs7Iw
+ build-signing-win64-aarch64/opt: VrGN5Hc9RtKiVw-fG-urtA
+ build-signing-win64-ccov/opt: W-GuzPU5RKSNkriJkSM53Q
+ build-signing-win64-shippable/opt: NbcU6voHSm-T3TfaPFMJAw
+ build-signing-win64/debug: OQRac3KYTkKs1GOG5CLG5w
+ build-signing-win64/opt: WbTvEfltQgK3W6JH0_psgw
+ build-win32-mingwclang/debug: DRak_TsqTEGYzjeOBkVbAg
+ build-win32-mingwclang/opt: HvZmhSPeQjSSKlapdqtVeQ
+ build-win32-noopt/debug: En0TzIFVQmWDiEgYq_l3-A
+ build-win32-rusttests/debug: TLxHynHyRnqAl9Zl9aDZ8w
+ build-win32-rusttests/opt: binOIsipT42WqdegPgkM4A
+ build-win32-shippable/opt: QAgFASBKSxaQ-sn25r7a6w
+ build-win32-shippable/opt-upload-symbols: C6mIyE1QSW2pRO916YpyNQ
+ build-win32/debug: Bio2vS3rRzezBVNLjRFXXQ
+ build-win32/opt: bH1IItXnRei0TXIIwdSdYA
+ build-win64-aarch64-eme/opt: UObqkBExSNOLzmDFM9DSXw
+ build-win64-aarch64-shippable-no-eme/opt: LPNH62f-QcuabjX7WcGvWw
+ build-win64-aarch64-shippable/opt: UOmkcit7Taq9BWZbTWGLEQ
+ build-win64-aarch64-shippable/opt-upload-symbols: dcXwDStFSQi6QoSbhO9R5w
+ build-win64-aarch64/debug: IGCr0eOYRb61dLmPIRe6zg
+ build-win64-aarch64/opt: UGtGEjUkQzGDsoQ4W1rSKQ
+ build-win64-asan-fuzzing/opt: dEvSfxvgT8SvxWnYdfQ-ew
+ build-win64-asan/debug: CAwL-VROSDS6EhcsYCeH3Q
+ build-win64-asan/opt: L4fgslBuSpqoD0oFlqAUAw
+ build-win64-ccov/opt: Htmz08-GSvWwoPJsbx3D8Q
+ build-win64-fuzzing/debug: YaIMWSVsRzSe4ZT_-pY3mw
+ build-win64-mingwclang/debug: dOsT4wOwQ0CKJAsKlwz4XA
+ build-win64-mingwclang/opt: DYnIWBZaQea_zGsHZLpJJg
+ build-win64-noopt/debug: Ti5QdMjHSFK_8bsAGhYlBw
+ build-win64-plain/debug: UI5nG2oVQSamq-kGm42AAg
+ build-win64-plain/opt: EQF-mS5RRpa8yyRkM25_7w
+ build-win64-rusttests/debug: MsltZPJcQReOjEaVsP7ZiQ
+ build-win64-rusttests/opt: SBiqfZJnQKmDu9TwE1mRhg
+ build-win64-shippable/opt: SI0AfIdNSQOB5szDfQcNYA
+ build-win64-shippable/opt-upload-symbols: PHLPOmkJTKGkM8VPs07Aag
+ build-win64/debug: M6NAJyEbTdWnWikR0Bok8w
+ build-win64/opt: O1vuo0zzRRmEs6qAB8VluA
+ condprof-android-hw-g5-7-0-arm7-api-16-fenix: Nqml6-7NR3COhgrLUe69YQ
+ condprof-android-hw-g5-7-0-arm7-api-16-geckoview: XOCi5JSgTayrGs4pS9cHzg
+ condprof-android-hw-p2-8-0-aarch64-fenix: IbZATNyURg-8fseeRdo_bA
+ condprof-android-hw-p2-8-0-aarch64-fennec: dzvQZ107Qi2p1yJnj6ZNGw
+ condprof-android-hw-p2-8-0-android-aarch64-geckoview: Mr6r5ET6SROsPaTs20Ml8g
+ condprof-linux64-firefox: J18PTsE8S0iBIk8N39mg4Q
+ condprof-macosx64-firefox: IENCNOpnRr2eULPW08N-2A
+ condprof-windows2012-64-firefox: F-r0fOceSXOtQa7TjLJmJw
+ diff-artifact-win64-aarch64-eme-validation: OpYOdJN2R3CuewBKsMQDqg
+ diff-reproducible-linux32: aaHF2CzqQNGO_VK4X73PYQ
+ fetch-android-rs-glue: GQOBvwnWRviPk8Q00UNVJg
+ fetch-assorted-dom: HTqezXEKSomU4QLP-SW6EQ
+ fetch-binutils-2.27: ZuQ-OYWMR0SA4E0y3RAzxA
+ fetch-binutils-2.31.1: RFr-0cBRQbquyN4T2UM4_A
+ fetch-cbindgen-0.13.1: S_MQrrcqTUGEmtLaHOQfVQ
+ fetch-cctools-port: EpYZgzq0SiqNsUJh9Kz9ew
+ fetch-clang-5.0: Xl_wNA_wTZmYe20FIlCb-Q
+ fetch-clang-7: aICY-_TxQGOnACgyiwrpVQ
+ fetch-clang-9: aDYZ7PEMREWw_ETOW1wKHw
+ fetch-cmake: F5kmkERhSiCqvcUDtQCb6A
+ fetch-dump-syms: Jj4qN2inQECPAURoQhLoYg
+ fetch-fix-stacks: G606hoRUSxqohchf64oJBw
+ fetch-fxc2: L7O0CeNGQneMCVIIT1MGeg
+ fetch-gcc-6.4.0: V_zhaxj-S5eQbrwdnGHN_w
+ fetch-gcc-7.4.0: MHhBcXRLR4K3CRWMvtguOg
+ fetch-gcc-8.3.0: AjTMdAkuSwidURpNDjbt2A
+ fetch-gcc-9.1.0: bWTT-dWDSFqU5XY8gIiZWw
+ fetch-gmp-5.1.3: aWjmEFfJQaK7PB9-rZHFnQ
+ fetch-gmp-6.1.0: OgpH6_APQ2-95aUarAx2Qw
+ fetch-gn: VIGlZlbtSDu78Y4ZMXwGvg
+ fetch-grcov: A0MSx_QCTUGUJCZ-JZ4z5Q
+ fetch-hfsplus-tools: EEF3Zhk7QH6KkSHYiIl_ww
+ fetch-isl-0.15: ZSGQ7qLRSG-s_VDTjCY0PA
+ fetch-isl-0.16.1: d1MLHY1OQNGpwyFxeqN-Wg
+ fetch-jetstream2: TaHMxREfTgGsqL5NPPa3qA
+ fetch-libdmg-hfsplus: DJov6brKR02i2j_gKKGRcQ
+ fetch-libtapi: dqa6qRBYTnOGIVy3Qz0sOA
+ fetch-libunwind: Ue0dHXBiRM2jnMw3RBzuXA
+ fetch-linux64-chromedriver: MZGmTLK2SBOGAyrec1uesA
+ fetch-linux64-chromedriver-78: BKbR1uZwRmyqaiYEw-EmMQ
+ fetch-linux64-chromedriver-79: b1-w_JlOT9qBFCptaM6Hlw
+ fetch-linux64-chromedriver-80: E4BUkNnWQKe_LyTyICv4jA
+ fetch-linux64-ffmpeg-4.1.4: auvPfChsRXa3uP3p-LbTXA
+ fetch-llvm-for-dsymutil: e4DNytWuTYCK1kqLOI8nYw
+ fetch-llvm-mingw: RqRq2sRIR92y6nNPOXTjww
+ fetch-lucetc-source: N5lVeJmiT5Ss2FLCkgwMTA
+ fetch-mac64-chromedriver-78: MVRabu9ZTVW33h6mfjnX-w
+ fetch-mac64-chromedriver-79: eN7BwEa1TqyEtwWSXAkJew
+ fetch-mac64-chromedriver-80: HIRfb2xRR6ezVOlhpmkrog
+ fetch-mac64-ffmpeg-4.1.1: bcUVZhrXTXiiU6JwFzINBA
+ fetch-mingw-w64: Jc1iNViqR_2vmlXgcNDT6A
+ fetch-mpc-0.8.2: eNICetjsRNOBZb9E8HZnWA
+ fetch-mpc-1.0.3: IKo4nHFkQPKit_orPdjPfA
+ fetch-mpfr-3.1.4: LqALqMKURVi2iZbju0G08g
+ fetch-mpfr-3.1.5: OTlAFX-2S-22PaKrgJFDXQ
+ fetch-nasm-2.13.02: J-IJzsIxSRqh03mtIvPILA
+ fetch-nasm-2.14.02: FW7gAij7Q1ahgyAmLb4Y2A
+ fetch-ninja: cuJolDCYQ3uinL2CwlQviQ
+ fetch-nsis-3.01: CivGoPJcSxmu1xL2bqmBFA
+ fetch-octane: dLW609SGSAaOz15ShsFIpw
+ fetch-rust-size: ObCsLVPySBCo8LAJlkuSgw
+ fetch-sccache: PhgFFm0_SCC9r0BW_VE9OA
+ fetch-tup: dMdjMYuLQ5e-2r0piAVT9A
+ fetch-unity-webgl: LFeH0mDMSueAIa-bAEFtrg
+ fetch-visual-metrics: DR49t9eGQHu2qS0oKskeCg
+ fetch-wasi-sdk: IkAWBua6SzmoeHSv_vVP5w
+ fetch-wasm-misc: HgEQJSa7RfCcWtGlwxiL7Q
+ fetch-web-tooling-benchmark: OQF9hLdNRmODdgbZctLmLw
+ fetch-win32-chromedriver-78: a7edwUT3TKSi9fSTp9Hc7A
+ fetch-win32-chromedriver-79: CbtgzFtDTVS3GcYlNzn5ZA
+ fetch-win32-chromedriver-80: LK5PaW0MSmCVy5IQ1hN8rg
+ fetch-win64-ffmpeg-4.1.1: Z44OxJeHSceXgZrIhldV1Q
+ fetch-wine-3.0.3: bTuHuG3xSUGiAHzcdHEl1Q
+ fetch-wix-3.14.0: GPFpK3_lTEWzUPGOI__Ubw
+ fetch-zlib-1.2.11: S-kbYJJ0QE257ZYDW-ukKQ
+ generate-profile-android-api-16/pgo: UIqitLDJQZ-f1HJtOOkq8A
+ generate-profile-linux-shippable/opt: en6wO9MJRqybdLH7Bub1GA
+ generate-profile-linux64-shippable/opt: G1cgW30rRg-wxJ4tee-BuQ
+ generate-profile-macosx64-shippable/opt: dykU6mCBTnWigDXIC5YF5g
+ generate-profile-win32-shippable/opt: Ljn9uVQ1QxWnbyGxELkeWA
+ generate-profile-win64-shippable/opt: DbVpxpY8SWe0VKS9sxFaIg
+ github-sync-webrender: Z9vMh8YdRwezFx172iZ3lQ
+ hazard-linux64-haz/debug: foOBt6KTRy6jB73ei4zkqg
+ hazard-linux64-shell-haz/debug: c6x_0U1RRIKb5RMHaZr1AA
+ instrumented-build-android-api-16/pgo: L5BFVMbzS1C-CeaOTAB4LQ
+ instrumented-build-linux-shippable/opt: LB2xjMA_QuyQjYutdn8isg
+ instrumented-build-linux64-shippable/opt: ZjqC2SqtT-udLNoHlvUXGw
+ instrumented-build-macosx64-shippable/opt: Sum0lQYDQRCMj8lhMHMhgQ
+ instrumented-build-win32-shippable/opt: eEexJoDnTQ6pYQL4K9uiaw
+ instrumented-build-win64-shippable/opt: Mu4t_dyVTJ-xSDXOuXU5_g
+ l10n-linux-shippable/opt: I0uD3iB3QW6J5ytmmFFAvQ
+ l10n-linux64-shippable/opt: cRqcK1JIR3WE-1x5pwGtiw
+ l10n-macosx64-shippable/opt: c5ScCkbnQ5iZGm-fXcK93Q
+ l10n-win32-shippable/opt: blqZWeY9RpCErjbIjhBw2w
+ l10n-win64-shippable/opt: RU1v6nQNSgm2FMH5qIaogQ
+ packages-deb10-mercurial: B8z2oLEET5eEGAoLNaYFkg
+ packages-deb10-python-zstandard: RhTeb03MTR-kXu3z-l4ipQ
+ packages-deb7-32-atk: FJyyzgGuSvOkurKV9B4kZA
+ packages-deb7-32-gdk-pixbuf: eDR9O9TCSBWV45uKZK_RVw
+ packages-deb7-32-glib: PYqFdwUgTjGxIhiv3MeB-A
+ packages-deb7-32-gtk3: c-9j4QlNSvSfVzYs_smx5w
+ packages-deb7-32-harfbuzz: TQqZ6AfIQmOiHDylVhkRRA
+ packages-deb7-32-libxkbcommon: HL3k4JSNSAqyx_oeIm1NJg
+ packages-deb7-32-pango: byaFmfm-TP2KQCFm70KxSg
+ packages-deb7-32-pcre3: JZt_JGNYSuKrlLm-3sP9iQ
+ packages-deb7-32-wayland: eQGw3-D7T0O8jw-AQrq79Q
+ packages-deb7-32-xkeyboard-config: ZtgbFaOYRne6lGQxbs5reg
+ packages-deb7-apt: Ls1LTS4NSH2GPlVVxmnLrw
+ packages-deb7-atk: SHQacTunSMePv5M0Hbho9g
+ packages-deb7-automake-1.14: c_xA0dYPRw-hT2M-VVnsoQ
+ packages-deb7-cmake: QhoqEmMBQb2jIuN_mq2pAA
+ packages-deb7-devscripts-2.14: V0V94sOkRN2df3bR1P_FMQ
+ packages-deb7-dh-python: d_qeJ9KHTtqIIOWvaQlbhg
+ packages-deb7-dpkg-1.17: Nnz54AtmQaaGRg_M8EXgZA
+ packages-deb7-gdb: Hl9YLZzLRsqbHKjezc1oxw
+ packages-deb7-gdk-pixbuf: V0U8tROvS2q2094FaerQfw
+ packages-deb7-git: EE2WtGanS-Oiqiuln372lA
+ packages-deb7-glib: C1hT15J9QDKxiD3lawlWXg
+ packages-deb7-gtk3: UfJNlps3TDWPd4tI8Oi0SA
+ packages-deb7-harfbuzz: KBPtvAiaQAidFmt3FiU3dQ
+ packages-deb7-libxkbcommon: Ys4EbL7MSGy3bPTzekh-oQ
+ packages-deb7-make: e3LCwZaBS0SyoJ5-czN19A
+ packages-deb7-mercurial: aJz3xNkERzu2chgikmC_Pg
+ packages-deb7-ninja: XKI7wPC_RYOiUb3TkYxrrA
+ packages-deb7-pango: YiHs4EOAQN6BmKh_7HOYPw
+ packages-deb7-pcre3: OSE3gXiKR3uU1-5eziLNqQ
+ packages-deb7-python: ak0xUmrhTgyU5q5IhFYC5A
+ packages-deb7-python-defaults: C1K_xSZoQqG-f4AVgiPOIw
+ packages-deb7-python-zstandard: OFIYyWkVTL-g2DIeR1VJ7A
+ packages-deb7-python3-defaults: JStIdOfgSgScbXQU5ggCLA
+ packages-deb7-python3.5: bK37HfHYQJK3Lmv2-QDOAg
+ packages-deb7-sqlite3: UNDdpCqTQbuCX8sijPDLvA
+ packages-deb7-valgrind: GO4Qa8onS9agWelxB4Na5A
+ packages-deb7-wayland: KFVn9kckRqWu4zYNgFITiQ
+ packages-deb7-xz-utils: ZEa-J7WaQeucxdPM-48TjQ
+ packages-deb9-mercurial: Jp27EvsLQFObATxEOrsLlQ
+ packages-deb9-python-zstandard: YoAV-BgcSh-QCTd7-0H6Sg
+ repackage-linux-shippable/opt: BrJ8PYSnQU6psAsD0T-MJw
+ repackage-linux/opt: fbZvVyYXThy2xRlaRSZyUg
+ repackage-linux64-shippable/opt: Fy72M6YLRD6g6IxiAaL9mA
+ repackage-linux64/opt: JBjHCaL6TNWej-riozHffg
+ repackage-macosx64-shippable/opt: My4zbQ3aSKm52T-tCH78dA
+ repackage-macosx64/opt: f3HPuP70RcCSZFsodhOwjw
+ repackage-msi-win32-shippable/opt: bT7pmhc4TtmDL592tk2Jgg
+ repackage-msi-win64-shippable/opt: cy8gQkAYRXOYUrZ53r76Ig
+ repackage-signing-msi-win32-shippable/opt: W1KlA1TqQ22SkNZMUUPfhg
+ repackage-signing-msi-win64-shippable/opt: MzbZD7M_RDilIeecXikitg
+ repackage-signing-win32-shippable/opt: CHtjrzKkQbGy2-FKrQDbYg
+ repackage-signing-win64-aarch64-shippable/opt: LedVkfoNRmKcF98Q0Olpmw
+ repackage-signing-win64-shippable/opt: BYJMI96JRTm-wVeLh5Qp_w
+ repackage-win32-shippable/opt: Ii8pPVnPR4iDVateizkCPw
+ repackage-win32/opt: cGFA0orpTCibP6cwsr06lA
+ repackage-win64-aarch64-shippable/opt: RZt60XnmTEm8JBynQrWoGg
+ repackage-win64-shippable/opt: ayebXFy3TC6fCkEYxVGrYg
+ repackage-win64/opt: LdT9A0MbTg64R2GizaNr0w
+ source-test-coverity-coverity-full-analysis: F6T9MZkGS7OKKdejjNmpQA
+ source-test-cram-tryselect: OxKVA4tpSZ6-itHcxHj40g
+ source-test-doc-generate: atnQNEOCRrW9diFfjykfmw
+ source-test-doc-upload: aKAHwYouSKep7qp9YRaDNQ
+ source-test-file-metadata-bugzilla-components: UTGpaXvjSMuFZi7jnQEqIQ
+ source-test-file-metadata-test-info-all: BArGRxSrSYKBFUzos0hbgg
+ source-test-file-metadata-test-info-disabled-by-os: RMTDlfHMSjS5L7KwEAXz3g
+ source-test-file-metadata-test-info-fission: SfQ6cMvkQj2HgbSi6wnQow
+ source-test-jsshell-bench-ares6-sm: BBKzD9vwRuGLvyfP5KB3xA
+ source-test-jsshell-bench-ares6-v8: LRZKos7KR8Cl6E15Ti_p9g
+ source-test-jsshell-bench-octane-sm: U27xet1MQk-PEyQKIlo_mQ
+ source-test-jsshell-bench-octane-v8: HC4E-ZbVTj-mZ2p03QAC3Q
+ source-test-jsshell-bench-sixspeed-sm: BTM3NcgVRlmQWIMW_fL7-A
+ source-test-jsshell-bench-sixspeed-v8: HoQo2nyaRRCO-bpRcsd1TA
+ source-test-jsshell-bench-sunspider-sm: e9EqwNv_QvuXDToA9M5R8A
+ source-test-jsshell-bench-web-tooling-sm: U-XNlJiMSyaYMROuc2KMaQ
+ source-test-jsshell-bench-web-tooling-v8: BM5jay7hTy-vbh0UqRAqMQ
+ source-test-mozlint-android-lints: VD_PgkC1Q6qJeH1uPLAsjA
+ source-test-mozlint-clippy: aNh7FWCNRwS6pWXUHarX_g
+ source-test-mozlint-codespell: RU3VkeDaTSuwb6mxScgySQ
+ source-test-mozlint-eslint: RElFH_NuRIaPeAmiI51M5A
+ source-test-mozlint-file-perm: T-KF4y82TvSn3LGymzNKDQ
+ source-test-mozlint-file-whitespace: FLIKkIX0Te6fahJdLAx_Qg
+ source-test-mozlint-license: fXdgDPfDQzWZLrlZiwmq-g
+ source-test-mozlint-lintpref: fuX9H_LGQbePrFFAu3Pv0A
+ source-test-mozlint-mingw-cap: L8FXn3rsTaeZfw6LP_OJ1g
+ source-test-mozlint-perfdocs-verify: D2lP9-cRQLOrzHzicGEmIg
+ source-test-mozlint-py-compat: Mamsi9diRgyHxyQ4Np9v8g
+ source-test-mozlint-py-flake8: AL7WEvniS2yh4mLhQT7Azw
+ source-test-mozlint-rustfmt: Rw4ZYlHlTuC5cMCEcorUzw
+ source-test-mozlint-test-manifest: Efld3wxQSOidq7UShzQfow
+ source-test-mozlint-wptlint-gecko: V8HQgM6ZQc2DKTC5QLsETw
+ source-test-mozlint-yaml: Hn6CxtAJSfCcjS75yueJVA
+ source-test-node-devtools-tests: HvLbUJnZTheq97-hH8RGPQ
+ source-test-python-mochitest-harness-linux64-asan/opt: ahY1SxetSNS3DkggwS0cHA
+ source-test-python-mochitest-harness-linux64/debug: MrWCc_FbQaC-R7LW3X0bdQ
+ source-test-python-mochitest-harness-linux64/opt: cvQuj_RvRaeUauMFpVdixQ
+ source-test-python-mozbuild-linux64/opt-py2: Hq1cXhPwRm2LTDfB43aT9Q
+ source-test-python-mozbuild-linux64/opt-py3: XX5jZhcJSwC490WCuXAxuw
+ source-test-python-mozbuild-macosx1014-64/opt-py2: Av1ar9vASQ2PZJeiu6v8tw
+ source-test-python-mozbuild-macosx1014-64/opt-py3: ApJjnLOfQgyxwTmmhu4pzA
+ source-test-python-mozbuild-windows10-64/opt-py2: WQNgUo25TsaD5qo7Uyjsaw
+ source-test-python-mozbuild-windows10-64/opt-py3: J7vCspxJTKSQ-whahGSHMw
+ source-test-python-mozharness: YvX8Pz7kT12rkB-owoNedw
+ source-test-python-mozharness-py3: RbwIM8z0TrKGhrxiAy4c5g
+ source-test-python-tryselect-linux64/opt-py2: Wit8IVrsQOeKjGEC7L-4Qw
+ source-test-python-tryselect-windows10-64/opt-py2: dvT1hY3iRg6Gq02O2yVcDQ
+ source-test-wpt-manifest-upload: BxL6nGz5QIeDm6vQpLqERg
+ source-test-wpt-metadata-summary: Z4oqYgpcRieOejaVM-FsSA
+ spidermonkey-sm-arm-sim-linux32/debug: JdtJtrPURcu9SXZvceEjDw
+ spidermonkey-sm-arm64-sim-linux64/debug: DIY_zlUVQtaNUaINcGKohw
+ spidermonkey-sm-asan-linux64/opt: WlCN2XKPRM6t8PIxKLqzlQ
+ spidermonkey-sm-compacting-linux64/debug: FJ0h1j-6ROWbNrmTnxb0HA
+ spidermonkey-sm-compacting-win64/debug: L1CJvUj2T-KKrLCROh7r-w
+ spidermonkey-sm-fuzzing-linux64/opt: S_mtNKgFSESh2kHGOLIjMg
+ spidermonkey-sm-gdb-linux64/debug: TMJTPmamSQGavknheZWxUg
+ spidermonkey-sm-mozjs-sys-linux64/debug: PeD15fEIT_St8vhAQ0x1CQ
+ spidermonkey-sm-nojit-linux64/opt: JN8ObW2PRQq1CrSpphxLtQ
+ spidermonkey-sm-nonunified-linux64/debug: V3VuGnjcSnaHguJ2KHqPcw
+ spidermonkey-sm-package-linux64/opt: SUA390PASHWKAWr5X1WSRA
+ spidermonkey-sm-plain-linux64/debug: Skrot78GS6aDkRijRHWnJw
+ spidermonkey-sm-plain-linux64/opt: LdHV2xeSRiaPP5QJTo7RgA
+ spidermonkey-sm-plain-win32/debug: AyCEFzlaSFGYM8Q0ftd6qQ
+ spidermonkey-sm-plain-win32/opt: LPVfTrIASVeI6Y4KNiXeIA
+ spidermonkey-sm-plain-win64-aarch64/opt: G3dKgyRATdirzW_oYazWvw
+ spidermonkey-sm-plain-win64/debug: PuKfs3_MTr-5tR4wLlu_Eg
+ spidermonkey-sm-plain-win64/opt: KAyNK3iOTZqPpgAZoLD-NA
+ spidermonkey-sm-rootanalysis-linux64/debug: DkGEA_LrS26fNDCYEaTacQ
+ spidermonkey-sm-rust-bindings-linux64/debug: IIt8uU7OSP24i-FUQQbElw
+ spidermonkey-sm-tsan-linux64/opt: Pc8IhS1kR5G0m-m7OI-Udw
+ static-analysis-autotest-linux64-st-autotest/debug: FUsguAoLQ8O47iO3rw_cBA
+ static-analysis-autotest-win64-st-autotest/debug: ca7gNb6QTZCkl8kHz8agLQ
+ test-android-em-7.0-x86_64-qr/debug-geckoview-crashtest-e10s: PRqsCVZ4RMi7p57LvMl_KQ
+ test-android-em-7.0-x86_64-qr/debug-geckoview-reftest-e10s-1: ZeAOWJXQScqnr6Z-4tD9ZA
+ test-android-em-7.0-x86_64-qr/debug-geckoview-reftest-e10s-2: b346tX1gTKWzUs7ilRLqCg
+ test-android-em-7.0-x86_64-qr/opt-geckoview-crashtest-e10s: JQrqm2ZgQEKrAs81_IKnjA
+ test-android-em-7.0-x86_64-qr/opt-geckoview-reftest-e10s-1: NWpdcjXcRcGjWGZNeDeeKQ
+ test-android-em-7.0-x86_64-qr/opt-geckoview-reftest-e10s-2: UzlUYVHXTpaAPlGkztcIUw
+ test-android-em-7.0-x86_64/debug-geckoview-cppunit-1proc: f2OaOp2aT6amNhXwbzuyQw
+ test-android-em-7.0-x86_64/debug-geckoview-crashtest-e10s: CdazuBMtR-yJapNc23hsVQ
+ test-android-em-7.0-x86_64/debug-geckoview-gtest-1proc: XN2B_ztkRPKGcFQtg8I2_w
+ test-android-em-7.0-x86_64/debug-geckoview-junit-e10s: YAseKtBfSMmjmJTs6m-qAw
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-e10s-1: WsjOuVj1T8OB_Nr7jPzY9A
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-e10s-2: GtUAyORfROuBFFI0l2RXmA
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-e10s-3: TZ7BeAyDRi-WGFBB14kRgw
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-e10s-4: OjdfH5bDSmCzhfwkE8E5EQ
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-gpu-e10s: MFZ4PdmTRTWH7hw-hUou4A
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-media-e10s: UhWkISt6ReCT-yXXkKLnYA
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-media-spi-e10s: NNaqFHtpQPqSF26DT467ag
+ test-android-em-7.0-x86_64/debug-geckoview-reftest-e10s-1: TbcsakUuQXekWkmMp9b_zQ
+ test-android-em-7.0-x86_64/debug-geckoview-reftest-e10s-2: Qb3SPNoETHizxeKAeUcZKg
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-crashtests-e10s: cUkfpMjSSnarngHIzIACvA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-1: SNgvGpbZSIOtK6d_78jPKw
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-10: ObBJ6SbURZigjT1dgE7BNw
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-11: V-RtUARnQkSGOlj5wrdKPg
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-12: NGdcaybuRQ-nMruESfvUjA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-13: DFx7KHh9RyCmDkVlqpvt7A
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-14: L7VXleXOSi6PCVnRTZYyoQ
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-15: Dqq--lHvT8m1T7TRGiWB8g
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-16: W11gkJ-aS_ah-3arHvMHQA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-17: OB5AqqAUTJCcY-tZIBHfZQ
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-18: Vsn4-iDYQVW0HHYAmplhSA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-2: b5EqbE-3TwS572AKthV5dA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-3: GOqNO4sVQC-dP3OQOkD3-g
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-4: GlMkzRLXTlektYpwoWaHSg
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-5: SXCfF6nnR7eornt7tx6Mig
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-6: bdJ2OFJ3Q6OAs9k3T6ZkHA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-7: Lsq4PsvlT9CVydgdBYVzdQ
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-8: M--sBgRxQ9mcocA3A0m85w
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-9: bSc4qFwqRkSclDiZfTqqrA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-1: AjEHidcnQmSwMGoaoMx17g
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-2: BfWfNOeATw-vXQSIPVuTLw
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-3: SFMuHTmEQvehf0ojrSYeXg
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-4: Y6ycUuyqT7eDcPg9SID47w
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-5: YQtPztyiTD29DPinet6PHg
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-6: C7lFdJ_kRQ--DUvanSEY3w
+ test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-1: Uwqrv23tSOiIW4AXSXKL4w
+ test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-2: OEHuM-f3Sfu8aU8zrV7wrQ
+ test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-3: UjWc3f2IQFuuHcs8-HS5ww
+ test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-4: RnPA3Kw8Sk2jQFBKjjDR_w
+ test-android-em-7.0-x86_64/opt-geckoview-cppunit-1proc: Km3usYroQM2hLznxKnjYNw
+ test-android-em-7.0-x86_64/opt-geckoview-crashtest-e10s: Ybrif7FfQWKa19itYYtsMQ
+ test-android-em-7.0-x86_64/opt-geckoview-gtest-1proc: UtK4U92fRrezl5FvOcEFZQ
+ test-android-em-7.0-x86_64/opt-geckoview-junit-e10s: G73J253ISFmhx7I6fIzmnw
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-e10s-1: YVUgvN5uTtWoUasPGMuxPg
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-e10s-2: DVRjJaJoSrqc7mmu1mwXsQ
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-e10s-3: K_GcLmF5SIS7ghBPLAlgGQ
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-e10s-4: UjQak-P0QwakLTKzIsUQ0g
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-gpu-e10s: YY7EtS2nTkqQ1ngAIUlvtA
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-media-e10s: FipO3cb5Rp22Eb9jEXoLtg
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-media-spi-e10s: Nwdub7VgQ1W9xoqgtKuSoA
+ test-android-em-7.0-x86_64/opt-geckoview-reftest-e10s-1: IjjQBDLASTOIy7lOJyytsw
+ test-android-em-7.0-x86_64/opt-geckoview-reftest-e10s-2: cSRgGTnERpOTl_ccva2oJg
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-crashtests-e10s: drKuJkaXQV26rfce4KAr-g
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-1: c1JzbGUAQ8qvuYdO3vZm3A
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-10: PuGwqYnnTZe_GovQMRAmCg
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-11: L_brLgajTYKayTHBUGwuKA
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-12: brAEBswRR0msijswvQ57tw
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-13: M2omGi6MSga9M7KhURCB7g
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-14: IBqWqEFTT7GdY5DX-_0QzA
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-15: GreU5_kpTAmHftDAYAgwcA
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-16: GfiLNlPRTmmO9KAgMhRIxw
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-17: ZDi2gETrSxy9wfv0im7iVQ
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-18: O4FHhjs5RYmNXyntA2WAhw
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-2: CswlrZEITzCCVcH1hEl12w
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-3: FKXgIUQ1RyiCh0Jw1wL-SQ
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-4: UwHqlNgKQ6qyV0zPWaY-yg
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-5: Nh7zeIEhRUSQgWLiCwmKKw
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-6: fXyF2AJGSuipel14IBX7HA
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-7: RY5zvdFMTL-1XEBKyUvwPg
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-8: IhAkjg0UQg6LbChQ6jrwEg
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-9: Tle7s-23T-6vOQxM8X6yMQ
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-1: WmRAQgu2RUWIPpYEJcQk6A
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-2: eLOYCc4ZRKSvFGejnyGUaQ
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-3: Q2EYcZ3VRdGjPhMtzia7eQ
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-4: N1DsCzxkTpqVvIw6E15aeg
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-5: fkQrR7t_RiS_i3EA9ou0Tw
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-6: ex_6ByxJT52vxW7V80v50Q
+ test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-1: EFn4QjtXTHafqSCrG0V4Cg
+ test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-2: GZI1aYUURLejlzW_unqOPg
+ test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-3: FabSoSwcTYagMm_R6wRkRQ
+ test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-4: ZBBHz0hSSkyXsq-OMIGjnA
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-1-geckoview-e10s: U603aKeBT3aUoHafqPCmbg
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-10-geckoview-e10s: ZdAtvKOuRT2cDeaScca_WQ
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-16-geckoview-cold-e10s: QGCPCdpNRHejUHNaQEV33Q
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-2-geckoview-e10s: DKMEBJfvTTSqnjaRFygfFw
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-3-geckoview-e10s: RheMjOdSTg6e7it99Sl76Q
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-4-geckoview-e10s: F8rGhnBARG2oVxCNTWV0MQ
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-5-geckoview-e10s: RRGD1kGpTHaPJFBIiiq7nA
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-6-geckoview-e10s: SMrUpbgQQiKdLVZLENKCdA
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-7-geckoview-e10s: dC-PJ0EHRCSzd4ju3iq2Yw
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-8-geckoview-e10s: L4613kBkTB-RjEe1cVHThQ
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-9-geckoview-e10s: G09bSMc9T0qiGgXzDtDiCA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-speedometer-geckoview-e10s: WUGuqnAxSBOqUqmrTN0vfQ
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-1-geckoview-cold-e10s: VfJFADtMSh6LG7WFwRZ1HQ
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-1-geckoview-e10s: J9e5CX6ySbOFHTT19h6ufw
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-10-geckoview-cold-e10s: LwFvFd_RSk-wDGsoYIwrvg
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-10-geckoview-e10s: bu7vZy8SSQGHt4J0kNQ0eg
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-11-geckoview-cold-e10s: Rigrg5XQQk6Om0ugnUo-ng
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-12-geckoview-cold-e10s: XDKUGISYRL2tJ_f5h1fjFw
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-13-geckoview-cold-e10s: BFXZh1J5SOalY_8JIyvGGQ
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-14-geckoview-cold-e10s: VhqkH38ET4CSnF3n6QXuCg
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-15-geckoview-cold-e10s: GlwC5AQvRZaelOvjGM8bgA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-16-geckoview-cold-e10s: aviL9sqiSra3bEw5hxuxWg
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-17-geckoview-cold-e10s: fgeYD-M-SryLsSrLgsKLHQ
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-18-geckoview-cold-e10s: F14UNjkjQwuxjtQHnXy__w
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-19-geckoview-cold-e10s: WoSLzhrXT-WOnCsXsH9qIQ
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-2-geckoview-cold-e10s: RfGaCzH8RbK9qOlAaWM-ZA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-2-geckoview-e10s: Z0zOBNuYRvKBwVViVsJkLA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-20-geckoview-cold-e10s: Qw21PewDR-i-794Dik5RLA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-21-geckoview-cold-e10s: J8wF46YuRLK1ElNZGKB5ag
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-22-geckoview-cold-e10s: AuglvZuLQk2yJcrwmnGlkg
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-23-geckoview-cold-e10s: WNjIo8ahSYWtP9XzXw74vA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-24-geckoview-cold-e10s: VAWRd7yVRY-95DX--jdVwA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-25-geckoview-cold-e10s: G-bHZGMrToyv_llJIKXAxQ
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-26-geckoview-cold-e10s: C-H-xKBFQGqRQupWy_DKfw
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-27-geckoview-cold-e10s: JWsCDB6VSRKfadTHAuDH0g
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-28-geckoview-cold-e10s: ClN4u5veSyuj3HZysl2HGg
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-3-geckoview-cold-e10s: ZpR61XiWSKSKyM0DyAwSAA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-3-geckoview-e10s: B-ij-ssTR-aUQKDxpaJgfg
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-4-geckoview-cold-e10s: QoGOMvb0RZuShI-9CBOq4g
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-4-geckoview-e10s: L1_lySLMRAKLNTa11XNfig
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-5-geckoview-cold-e10s: K2neHB1SSeebtybAA_xeoA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-5-geckoview-e10s: QiVO-u_BQd-FJvQ6PCB3sw
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-6-geckoview-cold-e10s: F15VSp4yR5aW4yd72UQ22Q
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-6-geckoview-e10s: T76xympeQJqIYyojQ98UeA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-7-geckoview-cold-e10s: KOZAlMWaRO-Pf0ZaodJvUw
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-7-geckoview-e10s: RPouy2lSR66tw2QiD23K9Q
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-8-geckoview-cold-e10s: YBmPvzAjRmGrUqIkTPJBew
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-8-geckoview-e10s: JGjGknD-QCmDOffwstpnzw
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-9-geckoview-cold-e10s: OOtC7TgyRwmFKYMJOOMeQQ
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-9-geckoview-e10s: YCcJfsEkSXS9PKIPvoz09A
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-unity-webgl-geckoview-e10s: Ymgj0MBLThuTBh_35GxMCg
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-youtube-playback-fennec68-1proc: eI_K8udeSBiLvbPBUnNTyw
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-youtube-playback-geckoview-e10s: Rp1uRQ2nQgGU4Y3pssUctw
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-1: Sl1A4JfATJW-ipJi_YaszA
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-10: Pr7fJdGyRdqeDFy3bmKc6Q
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-11: NRtmx4B7SNeUX14BduFusg
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-12: eiebRJqERt6FcG0ckELBLw
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-2: c29TECiXRUqbCoG0kdep8g
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-3: LtItV9r_TVuVv0MXx1vNiw
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-4: GMvh0ottQNeZXhYV-YiRlQ
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-5: RT39QdZ1R7SHBoa0mQRcEw
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-6: RgqSelI5RSKaaA7SQNP3EA
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-7: YzXWbcuVSmSrA9tG71DBZQ
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-8: BfaoRIcaTT-Kv0-guDYomw
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-9: B_t9tooYQUydDCsmq5euDg
+ test-linux1804-64-asan-qr/opt-crashtest-e10s: Ce-6gn6sQHKCEnv9cU_2Fg
+ test-linux1804-64-asan-qr/opt-reftest-e10s-1: cisiPaQARUWxAKR0pTko1A
+ test-linux1804-64-asan-qr/opt-reftest-e10s-2: eYhzfxuQSu2beBN4VqnKJw
+ test-linux1804-64-asan-qr/opt-reftest-e10s-3: XDW61SlMQuGbr70_WCZjvg
+ test-linux1804-64-asan-qr/opt-reftest-e10s-4: G64JQWq2QJi_xdBP1kB4kA
+ test-linux1804-64-asan-qr/opt-reftest-e10s-5: KrYb0ginTxeCQqQBntW-0A
+ test-linux1804-64-asan-qr/opt-reftest-e10s-6: YOoMURRaR9yPkOc1jpfMrw
+ test-linux1804-64-asan-qr/opt-reftest-e10s-7: BQiraUnmQR2_wgg3bUe86w
+ test-linux1804-64-asan-qr/opt-reftest-e10s-8: fb4yph05TQu4Ev-7qJ3CHw
+ test-linux1804-64-asan/opt-cppunit-1proc: HW5c5zLUR6axC3Wu2iRO2g
+ test-linux1804-64-asan/opt-crashtest-e10s: e6p7apxrTQSd_pGsMDXrbw
+ test-linux1804-64-asan/opt-firefox-ui-functional-local-e10s: PXVIc2KnSIWX9rxyQcj8AQ
+ test-linux1804-64-asan/opt-firefox-ui-functional-remote-e10s: TmkWGYsOQQegSEYi8x1k0Q
+ test-linux1804-64-asan/opt-gtest-1proc: LgNiwFAVQwKL9Pj9SrFlfw
+ test-linux1804-64-asan/opt-jsreftest-e10s-1: VNZmahDoTOaD_iPSiPg34g
+ test-linux1804-64-asan/opt-jsreftest-e10s-2: dYkYkmI4SKCNIKGO45HQCQ
+ test-linux1804-64-asan/opt-jsreftest-e10s-3: RiqSMLugQcmquUV9cOfDVg
+ test-linux1804-64-asan/opt-mochitest-a11y-1proc: AQ3er0y2TnG953LvC7PC2g
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-1: efis2ZP3S6KZdZ5sZV2FBw
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-10: TUjP5lK-Tfqn571U31DBfA
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-11: aHzAovfJT_iUf19f-bdwng
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-12: c4AOIytwT2KCi-LVkZjCmA
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-13: EyD0Te2ZRW-0Ooj9MZK3lg
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-14: PQ0mFhQ7RXifJePMlCAWIg
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-15: BvThGa7eRCqriKrV9X-6rA
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-16: WhESBzgkQHCywpkheO7mtw
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-2: W6_bgInPQa-cqNpOXXRvKA
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-3: DmxYdKkOTPGlIRcg_MMe4A
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-4: OyIJqpBSQ0WCNeSiULqDXw
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-5: dyU7N-q7Sr2wSFA6aHx5FQ
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-6: fLM0Y4QBQJyLVerHikNYFA
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-7: OxoTvOIxR6upA5RVckbNjg
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-8: SC8061CuRI2BGcuSyiSTwg
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-9: RdvSqSXmSDOTrxG_Vt6DLg
+ test-linux1804-64-asan/opt-mochitest-chrome-1proc-1: H1L6-DqTTnmCIf4qVWIJCA
+ test-linux1804-64-asan/opt-mochitest-chrome-1proc-2: F_2FzheKR1e02r9-s_iviw
+ test-linux1804-64-asan/opt-mochitest-chrome-1proc-3: K24AT1LdTzC1tuIkDmwC7A
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-1: A8jcLtUYRkqFx0K52yzd6A
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-2: OfU7wUXKR-GgIZpM7OTpfg
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-3: BRSLGLw0R_OzMKYgIDuHYw
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-4: TFBUiSZ5TKuMW3mmOwqZDQ
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-5: ItaZCp_1R_e2EeKVpstejA
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-6: HDqI0iolQcuAOiI58PrFjw
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-7: N6Dg1IoPSKK5TwcLPhYLUg
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-8: PdB_nJijSRmGSVCmFq8s8w
+ test-linux1804-64-asan/opt-mochitest-e10s-1: HQsKvwjdR7OXSuE2MFrY6g
+ test-linux1804-64-asan/opt-mochitest-e10s-10: NU2brA5TQ7SLdRP9BY3f2g
+ test-linux1804-64-asan/opt-mochitest-e10s-2: ThTTo5HGQSW1puYR-JYGgQ
+ test-linux1804-64-asan/opt-mochitest-e10s-3: HxnZdwrcQHOXdma25yIRJQ
+ test-linux1804-64-asan/opt-mochitest-e10s-4: YPR-S6N4TQedjf5J29PGLw
+ test-linux1804-64-asan/opt-mochitest-e10s-5: TRi0BC1ERp6GcP3UtWA-3g
+ test-linux1804-64-asan/opt-mochitest-e10s-6: ROaEd8H7RdC4bqPSsOMpIg
+ test-linux1804-64-asan/opt-mochitest-e10s-7: VZntD6jxTPKnHx1iilQ0Cw
+ test-linux1804-64-asan/opt-mochitest-e10s-8: bKPKOu78ROukoFvIFec_0w
+ test-linux1804-64-asan/opt-mochitest-e10s-9: cRBozmVnQh-DmR_T_cIOFg
+ test-linux1804-64-asan/opt-mochitest-gpu-e10s: DyOh_rJdQUm0SYHza7zS8Q
+ test-linux1804-64-asan/opt-mochitest-media-e10s-1: KLoLNs5LQeGq_7e2mI90oA
+ test-linux1804-64-asan/opt-mochitest-media-e10s-2: H_ABSiejSESxgkSgEyLB3A
+ test-linux1804-64-asan/opt-mochitest-media-e10s-3: N9wIQagiTLWdLVI0qh_Oww
+ test-linux1804-64-asan/opt-mochitest-media-spi-e10s-1: US3GWzg4TbmSJsgDlMMFvQ
+ test-linux1804-64-asan/opt-mochitest-media-spi-e10s-2: dqqOiemgQYCVwxkNvRVQZw
+ test-linux1804-64-asan/opt-mochitest-media-spi-e10s-3: IIj4BuTXTpKJnoq9ZKZHuw
+ test-linux1804-64-asan/opt-mochitest-remote-e10s: SKjP939ESNuM6UtOlzChhw
+ test-linux1804-64-asan/opt-mochitest-webgl1-core-e10s: Ssg_DnQ4T5OO4560WS4RFg
+ test-linux1804-64-asan/opt-mochitest-webgl1-ext-e10s: e9s8NNyxTwqvbl8Kr0i8dw
+ test-linux1804-64-asan/opt-mochitest-webgl2-core-e10s: YkPKUpyHTViP1QK4O7nwPA
+ test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-1: QuzOj4CaQHKjNwXlOlA61w
+ test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-2: Gz5mgLHeQ8eZjwA17ktyog
+ test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-3: NvAJpGP4SMO4p_ag_BYm0A
+ test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-4: ASwRCELyQ26yACJWKJtyxw
+ test-linux1804-64-asan/opt-mochitest-webgpu-e10s: LYeSSh90R0ikF0IONGse5Q
+ test-linux1804-64-asan/opt-reftest-e10s-1: Efj1026xSzy88ThkeAbwDg
+ test-linux1804-64-asan/opt-reftest-e10s-2: ellNgyjrQtyogiR597qFmQ
+ test-linux1804-64-asan/opt-reftest-e10s-3: TXtfudFIQ0aNkJr5DJD0Yw
+ test-linux1804-64-asan/opt-reftest-e10s-4: WIjhJBP_Qjuoh4tnH6o3eg
+ test-linux1804-64-asan/opt-reftest-e10s-5: Pheuh4swRSWq_ZHUQNdisg
+ test-linux1804-64-asan/opt-reftest-e10s-6: YFioMq_uTk2jWfQD_nS4Gw
+ test-linux1804-64-asan/opt-reftest-e10s-7: dALHgVQ_S-6OvQFIe6bvbg
+ test-linux1804-64-asan/opt-reftest-e10s-8: HB61pf9CT5GBoEUZy5aSOw
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-1: NlqNa31SSdmAeomPf7jE9A
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-2: FRLOdsOjTsSuUiSDYdEjcg
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-3: egWXLydKTfaZconAhH_IuQ
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-4: YDHmVGCiSzW2jtgue5JbKQ
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-5: DgcvDZCvRWmwaBCCBBFW3A
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-6: G8Ip_KQMR-Obhjv5uoStLg
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-7: OAIGZyTvStaP_xIOjxuvow
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-8: O1DxP0NkS8KyhRGUKmgHAA
+ test-linux1804-64-asan/opt-telemetry-tests-client-e10s: aIkBcn5STEu8PwYLApbTaA
+ test-linux1804-64-asan/opt-web-platform-tests-crashtests-e10s: e4aGt2gMSy-GTRsJzEhA7A
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-1: Koy30YqbQ6qY5zpVcnYldw
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-10: F5Qo2CcUQ5GehweqmRvBeg
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-11: fZKGpvvSS9mE_TS_117PVg
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-12: ZKS6EsfCQtuLqzwedMzlnA
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-13: BfVdI5sPQfKvKPcEZgM99A
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-14: VFl0Vw8BQXe8xZ4HCi2cpA
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-15: PGihLKaET26bNR6TCpGh0w
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-16: WAfH4WvPRPutQMRS3-KoEw
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-17: cUUbDNIRRGmOaKegS-4EaA
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-18: Mil-NQ3qRAK4juwYD75VHg
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-19: Y7I7wz-mQmSFBT3yqQLYSw
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-2: MgyJdO8sRyu6zDu0j0cc3w
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-20: TulGqJmHQPuifuos_TgbbA
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-21: JYtejlrSSA-eqZsC2Aw2-g
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-22: e26bt-6cQSe0cChD9h8oJQ
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-23: WrvVTCs-Ra6yUDH3K85Phw
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-24: AxaIqDzhRbqJgqswALaCmg
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-25: fefytvxCSLSwGtnfHavXpw
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-26: Yd5tiyfcRqeY8uXISjqepA
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-27: cQItZ1WOTbKOasKjx57h4w
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-28: HjBX3nnnTeuEDJuHJak3ow
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-3: cQ1amHNBR2mFsh0CkKB38w
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-4: UJDI4i1_T3-vUnJdzgCTfQ
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-5: JsdwIExlQqWCcr1-6gX9KA
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-6: aICNjnKCQ_iNfF95OELrVA
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-7: abq-xb4-QzS9nw9R9Apnjg
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-8: GZ9LRYTAREettF7zUpE93A
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-9: SaoUL8gEQw2el_IAdlW9Dw
+ test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-1: Aul1p_8QQjyhK3cIoPDlVw
+ test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-2: JUtPvDwQTmaOwwuv17GQOw
+ test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-3: QrYsnM2kT7yWj5Ni8ZVV3A
+ test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-4: NPSuKiDBSwCLJf_vv20kbQ
+ test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-5: MGS3glpDRuiICVtpfe2Uow
+ test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-6: GJ_XYLqmT8Gd91mDoKS_Iw
+ test-linux1804-64-asan/opt-xpcshell-e10s-1: ap7joKo_S0u7aW7sJxeUgg
+ test-linux1804-64-asan/opt-xpcshell-e10s-2: fV3L5lzVTvKKdiSGNkphzg
+ test-linux1804-64-asan/opt-xpcshell-e10s-3: OZHo52DCTf6aIq2dxu5lzQ
+ test-linux1804-64-asan/opt-xpcshell-e10s-4: bzCsD7D3Sfibj8r7oVHdPw
+ test-linux1804-64-asan/opt-xpcshell-e10s-5: S23PJ6AzRFKp81fI0QN4mw
+ test-linux1804-64-ccov/opt-awsy-base-e10s: LXgpjQedQhONu8rZDcqIng
+ test-linux1804-64-ccov/opt-awsy-e10s: Cc2HZU68SYSxbBj6Eg17DA
+ test-linux1804-64-ccov/opt-cppunit-1proc: M1XEw8iYTACEgul0oDUKNA
+ test-linux1804-64-ccov/opt-crashtest-e10s: PA9sFRhIRnmOWt5M9P3CNw
+ test-linux1804-64-ccov/opt-firefox-ui-functional-local-e10s: S2iy4KcKQjOBiRg46TDARA
+ test-linux1804-64-ccov/opt-firefox-ui-functional-remote-e10s: dVxBJr3oRgWdh2ICcvCpog
+ test-linux1804-64-ccov/opt-gtest-1proc: OWBA7hLpSaqZi7mGUWkXMg
+ test-linux1804-64-ccov/opt-jittest-1proc-1: AtbUjBwwRd6SuOqZgk7Qaw
+ test-linux1804-64-ccov/opt-jittest-1proc-2: CHFymXjjRk6ZHofpLkE4hg
+ test-linux1804-64-ccov/opt-jittest-1proc-3: EBpspr8VRNa9lQKnPWeuew
+ test-linux1804-64-ccov/opt-jittest-1proc-4: emJ4-Fd9QaikUnurby9ekw
+ test-linux1804-64-ccov/opt-jittest-1proc-5: AdVKIUuLTK2V_4G1H6137Q
+ test-linux1804-64-ccov/opt-jittest-1proc-6: FiF0iUcxQIW48WkPizYeeg
+ test-linux1804-64-ccov/opt-jsreftest-e10s-1: Re0KuPgCQJSYZdywqoebwQ
+ test-linux1804-64-ccov/opt-jsreftest-e10s-2: TM4g8iTyQ6-8VltQlzCj3g
+ test-linux1804-64-ccov/opt-jsreftest-e10s-3: HsI_4zy2S7-Kmr8PgeTOyA
+ test-linux1804-64-ccov/opt-jsreftest-e10s-4: JIlbs2A9R8y2hKHrX4gbYQ
+ test-linux1804-64-ccov/opt-jsreftest-e10s-5: OX_sezrRTqePHHfpPwqaRg
+ test-linux1804-64-ccov/opt-mochitest-a11y-1proc: DB0gOo20TYaX4H9kt4mbQg
+ test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-1: Do2Xo6WlTdeqBu2jKqxG4Q
+ test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-2: HHwGKiGnTQGoH8v0LTmX_Q
+ test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-3: YpLU_h4YTaeImpXJ5feiyg
+ test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-4: Dj5d6q_1TpOix60RElXhOA
+ test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-5: PI8fnmXTT3mYEhE8nOPgbg
+ test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-6: XWs4C5weRGeBwYp95MWO4A
+ test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-7: YUxv7R8uQhiUHUQ1L4lJTg
+ test-linux1804-64-ccov/opt-mochitest-chrome-1proc-1: RzFewwxjRgaTBGXAZtTBOg
+ test-linux1804-64-ccov/opt-mochitest-chrome-1proc-2: Zltn89AgSi6eaxgEDdtoyg
+ test-linux1804-64-ccov/opt-mochitest-chrome-1proc-3: A_RHWkn1Siu8VO2foVyTVQ
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-1: ZeQJjKZcRdCMhA7YkfTSLA
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-10: PtnXjxnTRZeYawB9jLZ96A
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-11: MMRBAvC6S7mrgN4lNhI4yQ
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-12: KpKP2p74QyW9D7UiGYbnrA
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-13: JSzB4ROmRGqZWcWW_2d-Nw
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-14: TbexdmXMRpiMFtyRrFKefg
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-15: ZRMYDxlxSNS0QD917Rqmew
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-16: fKp94kCCTE6e83A-WNHLLw
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-2: LSZUX6agTaipz6OKo6K1ow
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-3: GV_7_F7ZTJeLdQbzDAybMQ
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-4: cwYDlVqMRd-Im_qH_YoSPg
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-5: GApAr6RGQI6zPS6-tGyL_w
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-6: Wn9l9ZrXRVeaoo3NQ-u7nQ
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-7: IbhAxAMfSiO4y5qE1VSdEw
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-8: cqguuDbrQ6OOXJqzTBwfVQ
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-9: e1S5EKpcTlSEK89pYKnsCg
+ test-linux1804-64-ccov/opt-mochitest-e10s-1: O0MrnnhwSvuHgZSMM-EMAQ
+ test-linux1804-64-ccov/opt-mochitest-e10s-10: I_ml7y32QYyz8c7GDAqbnw
+ test-linux1804-64-ccov/opt-mochitest-e10s-2: GA1CFcQpTwGfJFUMgnnR8Q
+ test-linux1804-64-ccov/opt-mochitest-e10s-3: PW3ft1bzRd6oBrXH5WyIeg
+ test-linux1804-64-ccov/opt-mochitest-e10s-4: Y6pq1_xITM-BidGE3lA1vA
+ test-linux1804-64-ccov/opt-mochitest-e10s-5: NXfbaqT5QoSZeK4quWRlAw
+ test-linux1804-64-ccov/opt-mochitest-e10s-6: EXLiWnl1SXOMxuvSQO06UA
+ test-linux1804-64-ccov/opt-mochitest-e10s-7: YnqqLEw8Qfe7frHTo7Rnog
+ test-linux1804-64-ccov/opt-mochitest-e10s-8: YsNyI70BT4SqLp553rVu4A
+ test-linux1804-64-ccov/opt-mochitest-e10s-9: VES6fDkRTgGRUCUMwwnvlA
+ test-linux1804-64-ccov/opt-mochitest-gpu-e10s: az35ZsawSgmVcRuzbi4kww
+ test-linux1804-64-ccov/opt-mochitest-media-e10s-1: SmIVJpg8R8qr5UiDY7ufIA
+ test-linux1804-64-ccov/opt-mochitest-media-e10s-2: HZYTBM4ZR3WjjIxzzHD43w
+ test-linux1804-64-ccov/opt-mochitest-media-e10s-3: SbRY9uBgSRiwJ2a3FoJDEA
+ test-linux1804-64-ccov/opt-mochitest-media-spi-e10s-1: dbcCEh1iTUmO8fSNU5_ORA
+ test-linux1804-64-ccov/opt-mochitest-media-spi-e10s-2: WZGvyp7pSVW0tlnyRc9R0Q
+ test-linux1804-64-ccov/opt-mochitest-media-spi-e10s-3: OY5Q9zxtQM2zqA0xeecBOw
+ test-linux1804-64-ccov/opt-mochitest-remote-e10s: NN2UZtWpRsOWs0kF-zcMxg
+ test-linux1804-64-ccov/opt-mochitest-webgl1-core-e10s: Zn5kozJTRz2IUYc3HlOVPw
+ test-linux1804-64-ccov/opt-mochitest-webgl1-ext-e10s: T2ulgqyNRHuJFlWf7OJqwg
+ test-linux1804-64-ccov/opt-mochitest-webgl2-core-e10s: QWN6Sc0NR129O_e4sNvzVQ
+ test-linux1804-64-ccov/opt-mochitest-webgl2-ext-e10s-1: agpet2ZWSOuvnr_qX98UXQ
+ test-linux1804-64-ccov/opt-mochitest-webgl2-ext-e10s-2: CH2MGoIfSMGL2zMfLZXZKQ
+ test-linux1804-64-ccov/opt-mochitest-webgl2-ext-e10s-3: fi85GNxoQCqGMrJCAWCrcw
+ test-linux1804-64-ccov/opt-mochitest-webgl2-ext-e10s-4: NZyTcpBhQwqj6IzA9Ypz0g
+ test-linux1804-64-ccov/opt-mochitest-webgpu-e10s: bLv9XNfFTu2HKMu9P5RHhQ
+ test-linux1804-64-ccov/opt-reftest-e10s-1: aQCUhADcSEuy9Z6wjbm_xQ
+ test-linux1804-64-ccov/opt-reftest-e10s-2: YfmDoH8sSAe1okcP9nLHYQ
+ test-linux1804-64-ccov/opt-reftest-e10s-3: XxAhIL9ITiGLs6I2wa5rLA
+ test-linux1804-64-ccov/opt-reftest-e10s-4: JNG5qABzReaC0mfxW6hmAw
+ test-linux1804-64-ccov/opt-reftest-e10s-5: ap-HErjQRxC4bDy1vzGKUQ
+ test-linux1804-64-ccov/opt-reftest-e10s-6: A4RB6d-STyGFe-tIst9WdQ
+ test-linux1804-64-ccov/opt-reftest-e10s-7: IDb796GET-y0VM2JihD42w
+ test-linux1804-64-ccov/opt-reftest-e10s-8: REB3HWtLTgu5fiYCAFM1Sw
+ test-linux1804-64-ccov/opt-reftest-no-accel-e10s-1: a1kb8pHzQfKXLOqj9uvafg
+ test-linux1804-64-ccov/opt-reftest-no-accel-e10s-2: Y7EGEEqOSyaiQtTA3xgiag
+ test-linux1804-64-ccov/opt-reftest-no-accel-e10s-3: AqTKMGmOQ4-Wxq0NghSUWQ
+ test-linux1804-64-ccov/opt-reftest-no-accel-e10s-4: e5JI3FVKRRuh6mbKVe2z0w
+ test-linux1804-64-ccov/opt-reftest-no-accel-e10s-5: awMpGCE1TpWqy8UbPqPMWw
+ test-linux1804-64-ccov/opt-reftest-no-accel-e10s-6: Zi5AJLF5Q4qvWA7C1zaI3Q
+ test-linux1804-64-ccov/opt-reftest-no-accel-e10s-7: HzK7yaRqSDCPeCwgyZyUqA
+ test-linux1804-64-ccov/opt-reftest-no-accel-e10s-8: MLUFwnjuRjmuirQkUybenA
+ test-linux1804-64-ccov/opt-telemetry-tests-client-e10s: TW2ZA6r4SnmrCOEnusMPLg
+ test-linux1804-64-ccov/opt-test-coverage-e10s: G4ThkMhsQ3ubBm_VhLP3jA
+ test-linux1804-64-ccov/opt-test-coverage-wpt-e10s-1: SCHo9_4zTXa49RfsfYQGJQ
+ test-linux1804-64-ccov/opt-test-coverage-wpt-e10s-2: IxReFbayTNSn3s3auovTeA
+ test-linux1804-64-ccov/opt-test-coverage-wpt-e10s-3: KfT2n5AtTrCIBkti6nfklA
+ test-linux1804-64-ccov/opt-web-platform-tests-crashtests-e10s: HJ0nRSMgRPWF2OflUumjXA
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-1: HA1FTo6oQrSUPpWTm6czjA
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-10: e012L22BRBi976kKupbu-w
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-11: VOHoFtDjSJeiHV6-yylayw
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-12: dDbRzJ4USMqasrfz4_Og6Q
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-13: OzldpbuCSRWdVGqlVcupMA
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-14: fr5_TNgDQr2zTvZLFlpptg
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-15: BYClL3LJRKe2CAZmUCknnA
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-16: BfAYbgPdRquAx0Mjl2vm2w
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-17: M2isCGzWSIaZ4jPBh1E8vg
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-18: JTWsvB9kQEyiWU2E9J6pEQ
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-19: aOcCwv-_QhmWim1WCXRoFQ
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-2: Oe7t8DduSXOiQeUblkObLA
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-20: VPJXGHzTS_G5aTLmFg0QbA
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-21: FRerQ3gLTEes3LhnTu2a_w
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-22: Hl7gGi46S66Vj2NU6L7Dng
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-23: D8NxOuBIRuWyaIP0EhJtbg
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-24: NrVhG2BNSG2B8DMcr1VVLQ
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-3: aDBLYoXcR-CQpffmg_gn-w
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-4: AF4Kc5T1TSWypOxPwnTmcw
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-5: eAm2lFDGTqa0xU9PhvVTSg
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-6: Ud8O9xRFQCahWr6wpJRd1g
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-7: Pr4cJssTSh6_q8UQPVx3PQ
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-8: XzF_9UIgRPu-JKiV3yo0TA
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-9: PveEaXFIR8umnGejRS_3pw
+ test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-1: TXzW5CEnSou8ivqoVgx7ZQ
+ test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-2: KaESz2ObQpaVJdpSADk_ZQ
+ test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-3: NL05iZ7_RG2ZlwkkuvKAAQ
+ test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-4: Ixg0gGF6TXGMCPyIW3hu4w
+ test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-5: biZr0D9lSw-cOSdHfjPVCw
+ test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-6: Kmte2p7VTQa5-2CAnKbNsw
+ test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-7: LZ1RL2yhSd2xBXPXjBxYHQ
+ test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-8: bsOWUKw1RpyGd3hOFmxlaQ
+ test-linux1804-64-ccov/opt-xpcshell-e10s-1: UdzzVbs9RJCiWciiIaPURg
+ test-linux1804-64-ccov/opt-xpcshell-e10s-2: LIEL7mLOQZq6LkAtdXRO9g
+ test-linux1804-64-ccov/opt-xpcshell-e10s-3: BqRo4LuEQs6IzjEY4E-MjA
+ test-linux1804-64-ccov/opt-xpcshell-e10s-4: d0u1jo3VSPeRi53ekYla6A
+ test-linux1804-64-ccov/opt-xpcshell-e10s-5: XxDhE2kGSuWGk4LiZXohWQ
+ test-linux1804-64-ccov/opt-xpcshell-e10s-6: fitIMbdXQEmlQB7jtFPyMg
+ test-linux1804-64-qr/debug-cppunit-1proc: XPY99ioCQo-Rqo-u862QXQ
+ test-linux1804-64-qr/debug-crashtest-e10s: HvWjOKu8RNmq1OMFfTtYHQ
+ test-linux1804-64-qr/debug-gtest-1proc: QUdzo2DjSNaGkvHEK0TZxw
+ test-linux1804-64-qr/debug-jsreftest-e10s-1: Kee_HcUsSBu7g4CpfhU4Qg
+ test-linux1804-64-qr/debug-jsreftest-e10s-2: TJtvs85hTWOxdblFTT9WRA
+ test-linux1804-64-qr/debug-jsreftest-e10s-3: I8UgoqxtSdmQPWxv2RSkgg
+ test-linux1804-64-qr/debug-jsreftest-e10s-4: OQyaSzxFQ32qpdmyxrtBqA
+ test-linux1804-64-qr/debug-jsreftest-e10s-5: Yio1mQiuRkuo4qNgexC3uw
+ test-linux1804-64-qr/debug-mochitest-a11y-1proc: cnOE8DlaRqimh5P680wWYA
+ test-linux1804-64-qr/debug-mochitest-chrome-1proc-1: CnkJvLqASjiKY7-PgG4pEQ
+ test-linux1804-64-qr/debug-mochitest-chrome-1proc-2: DtCq9RxySiqatqxro_1GDw
+ test-linux1804-64-qr/debug-mochitest-chrome-1proc-3: HAKzhIlTTFmclKlOUTEEKA
+ test-linux1804-64-qr/debug-mochitest-e10s-1: CzTNeBXgTiGih2Ax-Mjlqg
+ test-linux1804-64-qr/debug-mochitest-e10s-10: aydJflAESqKwh-v7ifpufA
+ test-linux1804-64-qr/debug-mochitest-e10s-11: fwNGVzAcQZerlT_nP5qoYA
+ test-linux1804-64-qr/debug-mochitest-e10s-12: f_2r0hrtTK2Eq6IpYNTtEQ
+ test-linux1804-64-qr/debug-mochitest-e10s-13: epJoSQv2R0atP9wLfoDwSg
+ test-linux1804-64-qr/debug-mochitest-e10s-14: Nd8kW2BYRnGqG7gUn4PpmA
+ test-linux1804-64-qr/debug-mochitest-e10s-15: HDW3P_C4QlCzUaJkL-TSDw
+ test-linux1804-64-qr/debug-mochitest-e10s-16: c6QsJLq9QmypGM-9GsUHhw
+ test-linux1804-64-qr/debug-mochitest-e10s-2: Q90TxP-FT-qQNPe6-HwSNQ
+ test-linux1804-64-qr/debug-mochitest-e10s-3: PAAXwPWGRAi0qXp4yKcgYg
+ test-linux1804-64-qr/debug-mochitest-e10s-4: ARzcukg7QgyNYsrO6lvqTA
+ test-linux1804-64-qr/debug-mochitest-e10s-5: fCPKiLCxSse99R9V9aB8KQ
+ test-linux1804-64-qr/debug-mochitest-e10s-6: FTW5RjKtRpGLUlXRLoQEgQ
+ test-linux1804-64-qr/debug-mochitest-e10s-7: MWhuE8MASzipnb7dmRlfTg
+ test-linux1804-64-qr/debug-mochitest-e10s-8: biPFjmxTQ6ufSmQrhR-fRg
+ test-linux1804-64-qr/debug-mochitest-e10s-9: B99YrgzdRmOsQPLnXvpGUA
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-1: Bi808StJTrSW-ye4lYnGRw
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-10: ewssjKqBThyxWILUfb_OdQ
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-11: ArHpQZhbR-Sox1tR6n0lYg
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-12: UGQOdVfNRyK6XlxLT4SIiA
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-13: VmkZSXpRQ-SNayfWBJwoVw
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-14: JKSUAcctS_GMaYCAzybOqA
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-15: YMhS6vxWSdS0nIpb3i7e5A
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-16: XoGqPZI1S76MO4ETbnsbtw
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-2: S-wokoeRQy-cuWRZ6-bAmg
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-3: TreajlRmSW2B-mHy9gdT9g
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-4: B3jcekeRR5-0QRbjbwwN2g
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-5: BBfvkllRTUSIm94LZp0W6A
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-6: Ws3UDHm2SNGHsi-imDJaSA
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-7: DttpWinOSKeZToassa5nOw
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-8: H2_thqLSQUmu4NTEuTxqaQ
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-9: KQet1y45TpuenoVqy8UeNg
+ test-linux1804-64-qr/debug-mochitest-gpu-e10s: YIo3hHY_S_uMpS8eZsVIcg
+ test-linux1804-64-qr/debug-mochitest-media-e10s-1: W5chS82hTkeuje5a3txwSg
+ test-linux1804-64-qr/debug-mochitest-media-e10s-2: a_Gmno9GTq-81BIZ2N5oLg
+ test-linux1804-64-qr/debug-mochitest-media-e10s-3: cBV4jO7VTYCU_nVj3mYALA
+ test-linux1804-64-qr/debug-mochitest-media-fis-e10s-1: f794ywj6Th6jmRKnlD05cA
+ test-linux1804-64-qr/debug-mochitest-media-fis-e10s-2: DlrBmDVGQqiRFXekVb8AgA
+ test-linux1804-64-qr/debug-mochitest-media-fis-e10s-3: FGV-rHVhQ026EtPWc3EDDA
+ test-linux1804-64-qr/debug-mochitest-media-spi-e10s-1: I4PCxskhSAOZoE4pvax61Q
+ test-linux1804-64-qr/debug-mochitest-media-spi-e10s-2: HTSJupdzTE-AbXeOOZNw2Q
+ test-linux1804-64-qr/debug-mochitest-media-spi-e10s-3: Qpd7J_AHQrqgbxpHfLGEVg
+ test-linux1804-64-qr/debug-mochitest-webgl1-core-e10s: JG7tvudFQFa5-BGbU5M95Q
+ test-linux1804-64-qr/debug-mochitest-webgl1-core-fis-e10s: VtaxJH6tQhevztxCnyY8SA
+ test-linux1804-64-qr/debug-mochitest-webgl1-ext-e10s: OXM8iIWZSqCZIXtSx4QggA
+ test-linux1804-64-qr/debug-mochitest-webgl1-ext-fis-e10s: CwggjUfgTSeqiEcv6f6k-A
+ test-linux1804-64-qr/debug-mochitest-webgl2-core-e10s: OzP_mEJ_Q1Kox4vxQwUm8Q
+ test-linux1804-64-qr/debug-mochitest-webgl2-core-fis-e10s: YsakEfzTTiKaJFpnKJTy-A
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-1: Ljjrd6fmT7m0cjXcKxqkhA
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-2: Gsua26MTTQmXgeRc6qo3_Q
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-3: L--0uOPPRGC98SrPkZNAww
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-4: e97B2xRBSpuBoMykwoousA
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-fis-e10s-1: D0c3nf10TuinP42t9s8euQ
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-fis-e10s-2: Ezr1oaPQQjCno11HSBzaxw
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-fis-e10s-3: VHZQ-L53Sj25olwxGX_xKQ
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-fis-e10s-4: IzkZVkSES3GVkYW6V2vksA
+ test-linux1804-64-qr/debug-mochitest-webgpu-e10s: Up21-ImGSQ2SsX-N97_WKQ
+ test-linux1804-64-qr/debug-mochitest-webgpu-fis-e10s: POQj5nCMRsOOVyAF0gLTEQ
+ test-linux1804-64-qr/debug-reftest-e10s-1: EnIbFVIZShiSsaik90RwOA
+ test-linux1804-64-qr/debug-reftest-e10s-2: K1d0nJouSCeIrGDnQcGdew
+ test-linux1804-64-qr/debug-reftest-e10s-3: VFe5U3JGQ_WWY6eSMER1kA
+ test-linux1804-64-qr/debug-reftest-e10s-4: G-kQkGwYQiKfvgF16x_JpA
+ test-linux1804-64-qr/debug-reftest-e10s-5: M-TMNvjZTx6s_2gnxGIgfA
+ test-linux1804-64-qr/debug-reftest-e10s-6: X7EBWdduQbqyeW9-TtXVDQ
+ test-linux1804-64-qr/debug-reftest-e10s-7: dRTjvXcyRvakmT_6uj12hg
+ test-linux1804-64-qr/debug-reftest-e10s-8: UBBHzeVuTMy--37CKwwKLg
+ test-linux1804-64-qr/debug-reftest-fis-e10s-1: Fk_X8-j-TlyPAJgIJ3LusA
+ test-linux1804-64-qr/debug-reftest-fis-e10s-2: LkKCKkF-TLaDmpNSJI_DIQ
+ test-linux1804-64-qr/debug-reftest-fis-e10s-3: YdG35ibxQuKLBUXaD9mQRw
+ test-linux1804-64-qr/debug-reftest-fis-e10s-4: WtmFGIVzRoKNal6zX9BosA
+ test-linux1804-64-qr/debug-reftest-fis-e10s-5: SNfDqSPaRDGQS6o1WOaBlQ
+ test-linux1804-64-qr/debug-reftest-fis-e10s-6: cPviqwquTlOEVXE7wWvNGQ
+ test-linux1804-64-qr/debug-reftest-fis-e10s-7: GT5yrsdlSqWTCRgYHLGXWA
+ test-linux1804-64-qr/debug-reftest-fis-e10s-8: Ylo-mSVcRqGAMZPk0z-PVA
+ test-linux1804-64-qr/debug-web-platform-tests-crashtests-e10s: Nbs3Qg2YQ2C8s23hVXwfgA
+ test-linux1804-64-qr/debug-web-platform-tests-crashtests-fis-e10s: BFJOdwkuSTOJCjpnR203QQ
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-1: cxO0matdSFqUKV-7hdMJCg
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-10: T67TU64MRqqLPvan_tVbkg
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-11: ER2W5osQQ-6wglEhGVUinw
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-12: ImXu1S-lRx-AmPn9Jbw1NQ
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-13: EWqkN0vXRDm3zph6SCQQTg
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-14: dur4jGTjTJuSSukOADwVGg
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-15: SBaYaCaPSbCJxahtAcaSXw
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-16: WNwQJBdrSYi2DuQaIjPYrg
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-17: bX5F4epLSfCkw5KyzE1oFw
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-18: Cq1uEwH2Rsuwy5sYLAACjA
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-2: AhitzSFmQfOoN8NgVKgkCA
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-3: deVDeLkqR_iWMWk3NWMLdQ
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-4: WUL-78nmTjqRWG0zk-vs_w
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-5: Pl_xL5wYSoOAhMOIMl1auQ
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-6: Fihaqce8T3OrPlS0lV8lqA
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-7: UET_zetjRnKpx2Bp55DTJg
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-8: WVU_xHLKQESz0wx36XLGLA
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-9: JTIRHKzYQrOGIYb2TvvE7Q
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-1: MZM4-piAToeFYHK4974Y0w
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-10: BaJBymj-S76iY0deD4alLQ
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-11: NNSERAPSRliafkvZuZp6oQ
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-12: Nlcxm0NwSRKC58HQadh2jg
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-13: Sy88pWJ1S62qxIohyP5NiA
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-14: aL5KbJmCSByDzqoY1ARJZQ
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-15: ZQZDwNQjS6OqDEV3rhBwLw
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-16: cAv-bB2pQ36bJkFmTVdlUw
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-17: fhooz0TwTG-557jSnRG8Eg
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-18: YX5AsDPATXmNFT_VTN9efg
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-2: XsQ031OrQKe3T3bm_y6dJA
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-3: aXD7Fu79SAmj4Lr2aosKAg
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-4: EQPGTEuTTPGsF3qHtO45Cg
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-5: FnTs1TSpQdaHvzS9AP8DIw
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-6: eE-4giRISYqNhn4gb7HQHg
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-7: AhnUak4WSHCFKpydYiD8jA
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-8: NASGrD_BQMiExF0aehVLng
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-9: ZcMmcyReQeu3OL-03FmQ2g
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-1: HM-HSvEuSNC3e-Hw0UiFwQ
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-2: NgsAVplDRcKaDpJxTecrVQ
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-3: V4xjs1w8SoaeEht6X3amtw
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-4: BtitSKoySJSxZXC60QS-eg
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-5: KHLx5lmGSiSGljjNXqtRpg
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-6: Hbisan2DRTOFiMDre2eH1g
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-1: UZxh0QGURGS2lCV9-vjsfg
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-2: Z_UI2-yzS-qhWB4gZCwUYw
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-3: X3l5Uw26Ta6R-rOQEwxrLw
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-4: VSA-IGINT1iHIRIEY8koXA
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-5: DDvUa8jzRZWFyB83fcZrQg
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-6: AqIFjNioT6-C7j6TOQ-XSQ
+ test-linux1804-64-qr/debug-xpcshell-e10s-1: PvJCFiBiSE2W3_-Bu4EcXA
+ test-linux1804-64-qr/debug-xpcshell-e10s-2: LaHs-UVaRxupMWc45pX-aw
+ test-linux1804-64-qr/debug-xpcshell-e10s-3: ET9Y49TSRHykdDH63gN2Fw
+ test-linux1804-64-qr/debug-xpcshell-e10s-4: L6PT84pKSeW-FQxSDjJdJA
+ test-linux1804-64-qr/debug-xpcshell-e10s-5: LruLviP9SZuUAAcRsQJIkA
+ test-linux1804-64-qr/debug-xpcshell-e10s-6: Pg_SED8HQpePGERn9gEBbw
+ test-linux1804-64-qr/opt-awsy-base-e10s: O35o-TpYQfOwSMg77Lok6w
+ test-linux1804-64-qr/opt-awsy-e10s: Ik6QPZdhRI2Fk5gQQdEJOw
+ test-linux1804-64-qr/opt-awsy-tp6-e10s: aK5Gt3k8SK-1s1d9v4So1w
+ test-linux1804-64-qr/opt-cppunit-1proc: Z0Laa4x7TVatXjBPoN1xbg
+ test-linux1804-64-qr/opt-crashtest-e10s: cDf-Jb_2SXKVKk1JMWg1FQ
+ test-linux1804-64-qr/opt-gtest-1proc: QWisexNoTI6FD-dt6wMQdw
+ test-linux1804-64-qr/opt-jsreftest-e10s-1: b6Te2o8OTkmBwIG4jqqNiA
+ test-linux1804-64-qr/opt-jsreftest-e10s-2: FkhQ5KrDRzOmgNuksP_liw
+ test-linux1804-64-qr/opt-jsreftest-e10s-3: QeABtJioRJCnNVg6ZGahYA
+ test-linux1804-64-qr/opt-jsreftest-e10s-4: CXfWX1ylQxW5Fq3MoQTPcg
+ test-linux1804-64-qr/opt-mochitest-a11y-1proc: Ta-TtHi9QiaD11bYS5T95A
+ test-linux1804-64-qr/opt-mochitest-chrome-1proc-1: c9ypTXAvTe-YZLiLXbLoOQ
+ test-linux1804-64-qr/opt-mochitest-chrome-1proc-2: GrOeicEWRG2bpIXDlnwopg
+ test-linux1804-64-qr/opt-mochitest-chrome-1proc-3: Geng_yOsQ-OtHpZKh6MfUA
+ test-linux1804-64-qr/opt-mochitest-e10s-1: da08Kw8tTPGGFJysqcWRxQ
+ test-linux1804-64-qr/opt-mochitest-e10s-2: V_QmWt3eTROe9sp2YWJlqQ
+ test-linux1804-64-qr/opt-mochitest-e10s-3: I55bg7CmQC-c2tCA_nHv1w
+ test-linux1804-64-qr/opt-mochitest-e10s-4: YCW_IPKyQS-1FmH_CVRVWw
+ test-linux1804-64-qr/opt-mochitest-e10s-5: MzPC_Y1gTImywFdAQvUq7A
+ test-linux1804-64-qr/opt-mochitest-fis-e10s-1: OntNKQHcRrGsNEHhFGmBKA
+ test-linux1804-64-qr/opt-mochitest-fis-e10s-2: EWi7MyFpTUu2AyvjCV1v5Q
+ test-linux1804-64-qr/opt-mochitest-fis-e10s-3: VdC4O1dSTXOCeHcRa9LkUA
+ test-linux1804-64-qr/opt-mochitest-fis-e10s-4: bpLFEMJrQMe_wKj5L7uUpA
+ test-linux1804-64-qr/opt-mochitest-fis-e10s-5: RgWveB0lQxu3pvrU7lu_ow
+ test-linux1804-64-qr/opt-mochitest-gpu-e10s: UiAlbFUkREiZK3FkHmB5Eg
+ test-linux1804-64-qr/opt-mochitest-media-e10s-1: V10iaLm1T1a0wjPdkJvpNA
+ test-linux1804-64-qr/opt-mochitest-media-e10s-2: IsbonQ0tTiOXYjXdtl2_oQ
+ test-linux1804-64-qr/opt-mochitest-media-fis-e10s-1: FPqyN0NlTLWzde9hf4Vb5Q
+ test-linux1804-64-qr/opt-mochitest-media-fis-e10s-2: bRxZ1VANT2KKLH8BLVrCmw
+ test-linux1804-64-qr/opt-mochitest-media-spi-e10s-1: DLEkoS-wS7qU5TgupUbqNA
+ test-linux1804-64-qr/opt-mochitest-media-spi-e10s-2: HfwMbJ7YRYGhxsGIvqf94g
+ test-linux1804-64-qr/opt-mochitest-webgl1-core-e10s: eh5wbF4PRuixAcQ5KvnG2Q
+ test-linux1804-64-qr/opt-mochitest-webgl1-core-fis-e10s: a2IkNF2VTYO8fbt25VgyYw
+ test-linux1804-64-qr/opt-mochitest-webgl1-ext-e10s: LDmsv7pUT-eLSC1T-jHfGw
+ test-linux1804-64-qr/opt-mochitest-webgl1-ext-fis-e10s: APiiLPlrSwuSQGjmQwqrkw
+ test-linux1804-64-qr/opt-mochitest-webgl2-core-e10s: CDpFkEO7QF6vc3Jbqgk8HQ
+ test-linux1804-64-qr/opt-mochitest-webgl2-core-fis-e10s: KLwyDN0zRv2SuzfqBXej5w
+ test-linux1804-64-qr/opt-mochitest-webgl2-ext-e10s-1: b0dT068YTkqw3qOOHe2IiQ
+ test-linux1804-64-qr/opt-mochitest-webgl2-ext-e10s-2: DKl0qYcHT1uRtQtWvPoiXg
+ test-linux1804-64-qr/opt-mochitest-webgl2-ext-e10s-3: QUyVT0W0RhiTSfi0JJkViw
+ test-linux1804-64-qr/opt-mochitest-webgl2-ext-e10s-4: URvY_kxjRNiELgljMgZXjA
+ test-linux1804-64-qr/opt-mochitest-webgl2-ext-fis-e10s-1: MKgCG-VJTOGZxdMOfPvdBQ
+ test-linux1804-64-qr/opt-mochitest-webgl2-ext-fis-e10s-2: XNnClNbQQyyIPLa2CBiajg
+ test-linux1804-64-qr/opt-mochitest-webgl2-ext-fis-e10s-3: KM1V-yJRToakOoX_1v8HQQ
+ test-linux1804-64-qr/opt-mochitest-webgl2-ext-fis-e10s-4: cRdWLzNwTY2EK6DG79U4kQ
+ test-linux1804-64-qr/opt-mochitest-webgpu-e10s: ZSCGZGsSSr6Lppq0MjZoow
+ test-linux1804-64-qr/opt-mochitest-webgpu-fis-e10s: I25yO_-cSzecGdWPiwuouw
+ test-linux1804-64-qr/opt-reftest-e10s-1: HmY4MwqFR1GRYcuSFGIiGg
+ test-linux1804-64-qr/opt-reftest-e10s-2: QMnEDI2OQc-0sgqmGrIhdg
+ test-linux1804-64-qr/opt-reftest-e10s-3: TtCl33UuSxSy6qZaR8T_sA
+ test-linux1804-64-qr/opt-reftest-e10s-4: UJoTTRuGSNSQKNhVJLTfMg
+ test-linux1804-64-qr/opt-reftest-e10s-5: F_9F8-UqRpukXM5hfNqfng
+ test-linux1804-64-qr/opt-web-platform-tests-crashtests-e10s: GdfNRl2HTeKG9LNPLjyYMg
+ test-linux1804-64-qr/opt-web-platform-tests-crashtests-fis-e10s: emQq442_QE614tixC0Tniw
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-1: IRYaFR6-S1q5v9UMQvk0YA
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-10: CYWSg4TeSAeL0kMNK4_3Ig
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-11: JODcB_n-TDqRcGS4XR-zAw
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-12: Ku9vJfDYT1GftpNqoLRxnQ
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-2: cu1TaBM4R6aXcDWAvja83A
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-3: CphR7q78SpG3LsBHqmUOuw
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-4: TPl4nsP8Svq4nNgDL4M0Vw
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-5: dxUNy3RySLudgdJze4jpIg
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-6: Keh0-WXEQMSIDBsK9qqcRg
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-7: KU5tmcDBQzKU0ZmrV1AE_g
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-8: bBeIia30Q3CECzBCeHY4NQ
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-9: FgpvVyIfTaSiPmOdiMtI_A
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-1: fTbio8GjS-WHaG5H7V66aQ
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-10: QYw-fEqMT_KJBqwy9wMjuQ
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-11: EfUXxSSwQo6DYQzbxBmEHA
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-12: ICett8PsQpWfEMUDuGlaog
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-2: anEfgzgcS6OkLZqbK54MJQ
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-3: AVhJHNibRfS7GcQExiJEZQ
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-4: OpY4oQH_QhKtge42fu87xw
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-5: P3uQ09t4ReGY1nKvaVBueg
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-6: ICMtcsu7SSygqwNZo3Dn-Q
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-7: HK354Sq7RTK0UkOA85P_yQ
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-8: PxNji8I1TUeuVacDQS5mqQ
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-9: Wr5hVgTrQUCetRD5u3SwGw
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-1: aDRuD4B-R3CE8NfOA6eFJA
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-2: Lj2j2JwBTN6HvHeIuzUj9A
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-3: Yrz4Jd0gQ5-5q2tC0cjWwA
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-4: NmZUy2AHT4ubyQR-eNCfCw
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-5: anNo0WvuQlO6L-_8Gh-oBA
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-6: dwxPVdlbSmO33PCGvw5-ag
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-1: H9fNc0yKS5eaXWw1vOlqBw
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-2: flBbmPbQQGeZc75ciVzcDw
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-3: c_5u0Mt3R-i1SvAs8-yhsQ
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-4: BGBP7S22SACRC41tnL8OKg
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-5: AyvZy7tGTyCvhRR0xfsxqQ
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-6: W01Q_HDQSV-8NOliN5CCBA
+ test-linux1804-64-qr/opt-xpcshell-e10s-1: fM4NF5UURsOofq-2noLMYA
+ test-linux1804-64-qr/opt-xpcshell-e10s-2: QmcRo2lYQJqX9qC7GHsP0g
+ test-linux1804-64-qr/opt-xpcshell-e10s-3: QbYfrWtOSpSnrwwmV_oEzg
+ test-linux1804-64-qr/opt-xpcshell-e10s-4: BkrjD58JTcezs3WlEuYsfQ
+ test-linux1804-64-qr/opt-xpcshell-e10s-5: Kd-LvKEZSVC1OEoeZ9Fzsw
+ test-linux1804-64-shippable-qr/opt-awsy-base-e10s: MO2mxSrRTi6xGL1xh9rvjA
+ test-linux1804-64-shippable-qr/opt-awsy-e10s: bCwNKyxDSfuZ2JA71WQL-Q
+ test-linux1804-64-shippable-qr/opt-awsy-tp6-e10s: cMZu7efjRZGloTQsatz8oQ
+ test-linux1804-64-shippable-qr/opt-awsy-tp6-fis-e10s: UGLBO6UORXaXc9-CaY3qUg
+ test-linux1804-64-shippable-qr/opt-cppunit-1proc: W_CWiZH3S1SsX_nSe8tnqA
+ test-linux1804-64-shippable-qr/opt-crashtest-e10s: JlyDmmcuR5ieoRrdUxeciA
+ test-linux1804-64-shippable-qr/opt-gtest-1proc: YOB9nrlYSPq39hR8uYLItw
+ test-linux1804-64-shippable-qr/opt-jsreftest-e10s-1: QdI5TBezRS-xXjRMVBlycA
+ test-linux1804-64-shippable-qr/opt-jsreftest-e10s-2: G7toeQ4SQPC9tBkx58PHig
+ test-linux1804-64-shippable-qr/opt-jsreftest-e10s-3: Pl_arsPBRYGjoMo5WzEiIQ
+ test-linux1804-64-shippable-qr/opt-mochitest-a11y-1proc: Jm8kc0z8RYqFAkQiJCOTSw
+ test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-1: K44x6KcdS56lon4A3S3eNQ
+ test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-2: XcrBZAL0TeKm5ekxfh_Uyg
+ test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-3: OW4iXuV_S86DYs9D4theIQ
+ test-linux1804-64-shippable-qr/opt-mochitest-e10s-1: DuogjobMSQGCpN9d9OjMCg
+ test-linux1804-64-shippable-qr/opt-mochitest-e10s-2: Ud5Sx5JGR6KybOtztccjrg
+ test-linux1804-64-shippable-qr/opt-mochitest-e10s-3: USsg4m8sQ-Gcw1WiNiZJ2Q
+ test-linux1804-64-shippable-qr/opt-mochitest-e10s-4: UKLBjpDGQEeES78HRojuTA
+ test-linux1804-64-shippable-qr/opt-mochitest-e10s-5: SgxxbwUTSxSbOaZeWjNaCg
+ test-linux1804-64-shippable-qr/opt-mochitest-gpu-e10s: UAQaHCDDRRqO38Bf91rsFA
+ test-linux1804-64-shippable-qr/opt-mochitest-media-e10s-1: Jraw3UFpTZS5BuPwpQo_vQ
+ test-linux1804-64-shippable-qr/opt-mochitest-media-e10s-2: Gncs2puSSIu6aVXVqDeDdA
+ test-linux1804-64-shippable-qr/opt-mochitest-media-spi-e10s-1: XIVQrs1zTQ-RA821HhWZFQ
+ test-linux1804-64-shippable-qr/opt-mochitest-media-spi-e10s-2: X9LSwVssSUGOIvsgpNfxmA
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl1-core-e10s: ZWBl3k5HSKidluYD4lNzsQ
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl1-ext-e10s: VcZkdknKTsebKixjP0PsdA
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl2-core-e10s: U-1qPD_BTwCylwtDGZPYnw
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-1: QTO5WAhXRf6_YFZFNOs1ZA
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-2: S9OuXpykQp-ESZDL5nUXoA
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-3: XxFNhlOOTaCovA7a-eq-ew
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-4: BvKie7PsSoCYJbiJKuIUkA
+ test-linux1804-64-shippable-qr/opt-mochitest-webgpu-e10s: KaJF7guKRduz_lkXlSxp9g
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-1: f34KS3GpR_a8mEEmPj2XsQ
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-2: d5ycSBHgSpO3HzBYyOTPYg
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-3: Zbnde47qQDuFJ5GrgX36pw
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-4: IU9Wy9UNRTGY26aOxN9UDg
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-5: P7lJzV0TSHC1vgWZTbHW8Q
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-6: B9doxwwBQPGf6SWZm4TQqA
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-7: ZeBAUCCmSCCAYf64ptExFA
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-8: AmcmU9JfTs6J6gM9lDMnUg
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-crashtests-e10s: YRZA9kjISj6Z5nXVK4_Q5Q
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-1: eA17uCYVQfeOtkBaN2BmWA
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-10: DVSFVjzmQCqndYM0T8pYKQ
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-11: PSiMtYZ6SA67Zx9YvGLdIQ
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-12: ScwohmtnQMerF0S3Rqjr9w
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-2: LAdxsCvTTWy9OykJz40qNA
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-3: EtzBVU3TRbOsGL7RPpi27Q
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-4: K-asbM9ITE-SQBlQ6rmoIg
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-5: fWu4EdpaSZ2TSfW36bFkDA
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-6: eLPHU1aiRBKDHP9Y8dkWng
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-7: SGpfmDRqTH6cs2Oo8z5VSw
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-8: DTcsfBkjQcGA-YPdTfOtPg
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-9: GyrjztqtQZ-GU9LvVCgjIQ
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-reftests-e10s-1: AVDQiwSIRLqjk38hxlYnXw
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-reftests-e10s-2: OcI8dYRgTgSnV5FrONkBxA
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-reftests-e10s-3: R6HdrwQDRAe1uvlaLdyE5w
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-reftests-e10s-4: IbGVqL31SWWuOzDns0SuOw
+ test-linux1804-64-shippable-qr/opt-xpcshell-e10s-1: L8axt6LZT1qwl_P4oY3P7g
+ test-linux1804-64-shippable-qr/opt-xpcshell-e10s-2: G9hmjPGwT9yFd9KTVOaTtw
+ test-linux1804-64-shippable-qr/opt-xpcshell-e10s-3: XlqXk1wPStW3q6Lfh40-tA
+ test-linux1804-64-shippable-qr/opt-xpcshell-e10s-4: dEqtlhHSQVik-wEs9MesmQ
+ test-linux1804-64-shippable-qr/opt-xpcshell-e10s-5: aCPahsh8RTCIbFf2SVRaFA
+ test-linux1804-64-shippable/opt-awsy-base-e10s: KKFHdfu1T4ykq9oAn5t5yg
+ test-linux1804-64-shippable/opt-awsy-e10s: VyiROaKtTqaXMLW52LG62A
+ test-linux1804-64-shippable/opt-awsy-tp6-e10s: JzoI4dOKTxKNE5nobCGyjA
+ test-linux1804-64-shippable/opt-browser-screenshots-e10s: KiQPhBBEQe-vDSIWxg6UMw
+ test-linux1804-64-shippable/opt-cppunit-1proc: HONUeC7gR26OMBrjTn_0OA
+ test-linux1804-64-shippable/opt-crashtest-e10s: a9C-G9aeQReEfETasrTIvw
+ test-linux1804-64-shippable/opt-firefox-ui-functional-local-e10s: YmE4pJ5GSLukpjts3EsKwg
+ test-linux1804-64-shippable/opt-firefox-ui-functional-remote-e10s: HF9ZZpj9RUGnVx6ACyCT8w
+ test-linux1804-64-shippable/opt-gtest-1proc: Nm4jDqOWQpyncSy0gJ5NMA
+ test-linux1804-64-shippable/opt-jsreftest-e10s-1: IUJ9Z1p4SO262n56UDHt1A
+ test-linux1804-64-shippable/opt-jsreftest-e10s-2: Zuvw5k8hTL-eZiJinFlUBA
+ test-linux1804-64-shippable/opt-jsreftest-e10s-3: Ys1oMCbHSbuMka4Brf86NA
+ test-linux1804-64-shippable/opt-marionette-headless-e10s: Pm4_54ubQ2KOtcKF4A8HXA
+ test-linux1804-64-shippable/opt-mochitest-a11y-1proc: fBd8uCMySiKfozbZmiyavw
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-1: L7LS5Dc0TG2NM1PlZaY63g
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-2: AVroswzYRKqiUyGYD3AK9w
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-3: VAXO9w8bSZaEsibik32Gxg
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-4: dwOuA9D0QbyEab3uC3858w
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-5: EJK4naSUSku55YpXvzUWdg
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-6: VftGRdelTQGLWHrZ_kRuNA
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-7: HdJF12ugRGydKgIMiJNcNA
+ test-linux1804-64-shippable/opt-mochitest-chrome-1proc-1: cWS_UiOSRz2pAAzXIZd78g
+ test-linux1804-64-shippable/opt-mochitest-chrome-1proc-2: RWYLcq9sRiq3qbslvgZQvQ
+ test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-1: K7O4oTRfRPWdV8_fIdQlug
+ test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-2: RoTeLRoRSvOUA8guWvfUng
+ test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-3: Nb9xje6iTRG_NqkcG6yTGg
+ test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-4: G71dKBVpSzK8sV1OIi97CQ
+ test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-5: IMSqX7vWT4q8g57JijoOVA
+ test-linux1804-64-shippable/opt-mochitest-e10s-1: Q2A8stazTvWFI5GmYzamhg
+ test-linux1804-64-shippable/opt-mochitest-e10s-2: UC9OzJDWSCWQE5GyuJg-8w
+ test-linux1804-64-shippable/opt-mochitest-e10s-3: AtIcfD22T6iT5ytZAokMVQ
+ test-linux1804-64-shippable/opt-mochitest-e10s-4: ELdLq-tmS72TGCfh4NF0MA
+ test-linux1804-64-shippable/opt-mochitest-e10s-5: Nlvqtst2TqiZNS87cDm4zA
+ test-linux1804-64-shippable/opt-mochitest-gpu-e10s: eSKziGU0R76a9_pxrGUeRg
+ test-linux1804-64-shippable/opt-mochitest-media-e10s-1: NHsO8BqlRL-gg9Yj4-Z6zQ
+ test-linux1804-64-shippable/opt-mochitest-media-e10s-2: AQRlTncpT4KmMViIJijkwA
+ test-linux1804-64-shippable/opt-mochitest-media-spi-e10s-1: FfxYgVg5TzGW28iELKw6aQ
+ test-linux1804-64-shippable/opt-mochitest-media-spi-e10s-2: LchCeGWgQ_iSGDXYrDTTLQ
+ test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-1: Ae0rlTz7RCyH-fwVn6gb2Q
+ test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-2: AGd3eoF_Riu0FKAukwZ2qg
+ test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-3: HUcUqXKMRJybzkXNM1d_8Q
+ test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-4: G_2ydSYJQD-Yq7MUrwFz3w
+ test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-5: ROq7KPo1QgWLVChSCi6NKg
+ test-linux1804-64-shippable/opt-mochitest-remote-e10s: U6rz7Nz7TE20OG6OFhoFjQ
+ test-linux1804-64-shippable/opt-mochitest-webgl1-core-e10s: NscfiXbESAqpJwiExojAOg
+ test-linux1804-64-shippable/opt-mochitest-webgl1-ext-e10s: XsRvROeMSYi8C859DyqxjA
+ test-linux1804-64-shippable/opt-mochitest-webgl2-core-e10s: VaUMr5xfREueeyuqI04sbA
+ test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-1: Hc-91hxMRQ-5dWaQ1Z3ywg
+ test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-2: HAHhmla0RPKU1MtfFffFLA
+ test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-3: NKuCe-J4Rsuqzzl-gu3Vsg
+ test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-4: JbZpG87vQ4CF7RHArYjC4w
+ test-linux1804-64-shippable/opt-mochitest-webgpu-e10s: AbU4bp_sSbux1eK12e3dxA
+ test-linux1804-64-shippable/opt-reftest-e10s-1: TUAJZPLATSSJPIyfv0avAA
+ test-linux1804-64-shippable/opt-reftest-e10s-2: RFFwQO56Teq4fce3eSlkWg
+ test-linux1804-64-shippable/opt-reftest-e10s-3: Dtat459SQP68JRptYbipHQ
+ test-linux1804-64-shippable/opt-reftest-e10s-4: a96zZl9YRT2km7muXLA-Kw
+ test-linux1804-64-shippable/opt-reftest-e10s-5: ODzk_7bXTbOxi3l-7j5Zcw
+ test-linux1804-64-shippable/opt-reftest-no-accel-e10s-1: MpixNXDhSSSuuZBZ989-dw
+ test-linux1804-64-shippable/opt-reftest-no-accel-e10s-2: ZK97PVGETe2t1SJkiYh6oQ
+ test-linux1804-64-shippable/opt-reftest-no-accel-e10s-3: C8vLUc1dTtGp79UTZ9JriQ
+ test-linux1804-64-shippable/opt-reftest-no-accel-e10s-4: dSEGISb6SO6JcyaJoMYoMQ
+ test-linux1804-64-shippable/opt-telemetry-tests-client-e10s: QI9ll-WHSqW0zvIbVGvGgA
+ test-linux1804-64-shippable/opt-web-platform-tests-crashtests-e10s: J4noY1rBRXu88bIUyXDIUQ
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-1: EbNP2jICS-edgcglrRBp0w
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-10: aVFiILeOTlyDV_yBJ1yLzQ
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-11: YS5CReZqToeDgN9aenEvIg
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-12: drP1j263RHKOMRwihQHB7A
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-2: cO4wu0kpQ2eW8oIic5Y34A
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-3: ReVVIfqITayTkXvSq-wrxw
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-4: Sm-VSaILRECJJq46ODr3lw
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-5: FSwUPSCNRiO89MqOmORTPA
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-6: J0anqo6UQSyFYXLfjfUJsQ
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-7: KYR5NVjfR3qpjJ4lmiFlNw
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-8: E86qH3tLRsmFIQ-oJLg3Uw
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-9: NELEj4MdRzyStjRb-z7CmA
+ test-linux1804-64-shippable/opt-web-platform-tests-reftests-e10s-1: bU8wK9KGTCu7mcTP88g59Q
+ test-linux1804-64-shippable/opt-web-platform-tests-reftests-e10s-2: PGMvHW22T4KtZqQixydZ_Q
+ test-linux1804-64-shippable/opt-web-platform-tests-reftests-e10s-3: H0y1kaohQhuIB8T98Zhb_Q
+ test-linux1804-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: RSb_OKTlS1Gs5D1kziZ86A
+ test-linux1804-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: TieX5C8hTvi0qJKIxCx0YQ
+ test-linux1804-64-shippable/opt-xpcshell-e10s-1: AjNa8FlcRC63j2kpWFpdcw
+ test-linux1804-64-shippable/opt-xpcshell-e10s-2: PeARo95pQuinLk8vOhXjNQ
+ test-linux1804-64-shippable/opt-xpcshell-e10s-3: VfwpVu0XRUCosSbs-l8DMg
+ test-linux1804-64-shippable/opt-xpcshell-e10s-4: J4swqxWURhCRrakMTqM7dw
+ test-linux1804-64-shippable/opt-xpcshell-e10s-5: aE4L_J3dTdaCAJZmK5Wc0A
+ test-linux1804-64/debug-cppunit-1proc: IE5gzbNtQC-1G4RsBOvHMA
+ test-linux1804-64/debug-crashtest-e10s: CmTpoymARjOtAGXY0_rLDg
+ test-linux1804-64/debug-firefox-ui-functional-local-e10s: dIWrJerJTmaiOs3w9nL9xA
+ test-linux1804-64/debug-firefox-ui-functional-remote-e10s: IjmWrS5MRRmyrTHXVEu4Gw
+ test-linux1804-64/debug-gtest-1proc: IFUuFIP9SZiT3IlhU5v9Ww
+ test-linux1804-64/debug-jsreftest-e10s-1: UShJY17DQnudv1AMjfzZZA
+ test-linux1804-64/debug-jsreftest-e10s-2: FiNfSd3xRwWt_VuCExhWkQ
+ test-linux1804-64/debug-jsreftest-e10s-3: MukNnF3TTp-RxohCV7tNgQ
+ test-linux1804-64/debug-jsreftest-e10s-4: LiwZDskZRuKbiw4we8dPgg
+ test-linux1804-64/debug-jsreftest-e10s-5: cpvWlaWaS4WvGL-6_kuKtA
+ test-linux1804-64/debug-mochitest-a11y-1proc: G5tbENmLRPCMq2tt-KOwzA
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-1: TaGmBLL5Q1Szyet-_xBpHw
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-10: IxhHDq36RhyecGaLbIYO_Q
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-11: QnTHVNsjSIW342GBGSgAhQ
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-12: C6pI7LXPRnajRHEZviINOw
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-13: RrY-y9f7SoiEiVYEtVo4Bw
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-14: AybJVgDhQ0uKpgQ-ayeJ-Q
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-15: faMM-6zLQm-5Gsm117Zk5A
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-16: T13uP2MbSDKIKxL_g9boTQ
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-2: VsXSJ-4lSDKcPs4mN-eDJg
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-3: P5UCq_z8S86eYzlunlscXQ
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-4: NLYyNdtMSFCLLme8rbVfJg
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-5: athNIFI1TtuoLWz1kLwjEA
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-6: HKiWxxNyQdGzRtvukat2zA
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-7: eIJk5iGeQUChrt0tA7mMRQ
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-8: FQGOOM3DS2C4oUytHEfcGw
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-9: Iq6vu2EdRn28Ux7eAnWE0w
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-1: NNinuUe3So295YqfEr9B0A
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-10: AwebRFRxQ9u7uxcggEw4kA
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-11: RamHiQ6-TJqaa7bxGjTrPA
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-12: B6RB6N8XSp6unJyua2Snkw
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-13: VbQwgyZTTIul4dcuauORTg
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-14: ZHLRxNYYRC6YQQrox--_3Q
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-15: HP6AKLgBRmuPgs2XMKZINQ
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-16: HoEAOKCNQX6A07iNQGHvLg
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-2: WURxT_nBTYWzOWQdfaAtkA
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-3: LnvVLmrGSJuTYkNrklh7ig
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-4: Mh92b4r4R5G93_IMNfBgSg
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-5: SfVdJfFwToiTQx0OtC0nDg
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-6: aioHLNOtRgeAmXsvZSS75Q
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-7: NtcdFxPqS72dxpyiz_HMfw
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-8: Ix0TDZTtTqaJo4Gz6NwerA
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-9: PUqjx7vaQMObEj9xqbSNSw
+ test-linux1804-64/debug-mochitest-chrome-1proc-1: DXx5x2q6Qe-hbT_mzBYqGg
+ test-linux1804-64/debug-mochitest-chrome-1proc-2: UM1UF6vwTRa_dA1HdMr-0A
+ test-linux1804-64/debug-mochitest-chrome-1proc-3: doHZbqb1QC61Xy9WJrrRoQ
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-1: E890A1tQQ3aU7RcVMdGUXg
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-10: aeDnF7H2QbC6Et2sSPcvXQ
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-11: GFsIJ2uVSamp8RQ2KjMf1w
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-12: VSa8RpdkQC-SbscIKrCFqQ
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-2: aGis8TVdR4GsW02RNb9f2g
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-3: E6G6pGXAT--AMj6w2UKE_g
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-4: au4_VQ2JQqyyVSFun6ksnw
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-5: B2u_xkAxRrqO_F0_C6TTXw
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-6: Q4xpS5CXT6CgfJrarzM83w
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-7: Rwgr_SnATEWHTH5RcHk-7g
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-8: Hz9uRFOpRxaAJNhmRuGd6A
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-9: A_vmx7sTQ4uiE7ppc8L8Jw
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-1: S6s-JjpDRzq1C5QyRJApnA
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-10: UXioTnAETSW6Aigr_uOqQA
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-11: WkwZRWw4SyWAOBjop2wloA
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-12: V568Xv-vSwemMQJmmWV8zA
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-2: ELSaoo39T-eY8LSxAiVzeQ
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-3: fGVo8nlQQiG8RDS8TCfhBw
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-4: TH5TyG3cRbC2Tz03mVcjdg
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-5: IIlQEEHnSxCSv5U70-RtFg
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-6: fzYx5GR8SA6tEm4-VhWwBA
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-7: X4hUmTaLSp6XQc7zBTipXQ
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-8: H7CEDH_uTrWwgf7M2_61hg
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-9: NNnvgx-cTvWdTt_kwrUZRA
+ test-linux1804-64/debug-mochitest-e10s-1: DFoTLbHIQkGNL4iTGO_QxQ
+ test-linux1804-64/debug-mochitest-e10s-10: fAwX728YRj24uU4FTgTB5A
+ test-linux1804-64/debug-mochitest-e10s-11: fbNfauXKRIO-u9z6PCxGpA
+ test-linux1804-64/debug-mochitest-e10s-12: VzKbz3F4QB6U_IDaN4vtcg
+ test-linux1804-64/debug-mochitest-e10s-13: MsL0jyAGTQar8fM9U_nSDQ
+ test-linux1804-64/debug-mochitest-e10s-14: UcwCGW2aRX66E2Q-5YoTMQ
+ test-linux1804-64/debug-mochitest-e10s-15: MfQNzKBATS29TShdaplX0g
+ test-linux1804-64/debug-mochitest-e10s-16: aXpllI7IQIaGscWUzxoFpA
+ test-linux1804-64/debug-mochitest-e10s-2: RIXJ4v6NQOe2nQJ7BO45DA
+ test-linux1804-64/debug-mochitest-e10s-3: HxHn92NXSA-GfxEAzLFN7g
+ test-linux1804-64/debug-mochitest-e10s-4: SjyOb4LqRZWwVGVXPse8vA
+ test-linux1804-64/debug-mochitest-e10s-5: W7uG2UOOTpOMgQNGxLZsNA
+ test-linux1804-64/debug-mochitest-e10s-6: MjtDaZK7SMywZjyn0dxQQw
+ test-linux1804-64/debug-mochitest-e10s-7: PgTKjEetRcGZCVPXdPi1CA
+ test-linux1804-64/debug-mochitest-e10s-8: C1p0GhXsQRePg8y577aufA
+ test-linux1804-64/debug-mochitest-e10s-9: LQ9zhnwVSemNLg5UJbWZOA
+ test-linux1804-64/debug-mochitest-fis-e10s-1: Il8iKjSjRCC1kPnzxFEMkg
+ test-linux1804-64/debug-mochitest-fis-e10s-10: WZbhsViFR9ayw56hI5sxOA
+ test-linux1804-64/debug-mochitest-fis-e10s-11: SiylUc6ETcao_TLA7vizfg
+ test-linux1804-64/debug-mochitest-fis-e10s-12: UgfJylhtQ8evX1hHUTmrJw
+ test-linux1804-64/debug-mochitest-fis-e10s-13: NpvA-MhzTlKGs4Y9MiEwbA
+ test-linux1804-64/debug-mochitest-fis-e10s-14: ErLNhTRGTBSlbnrS5woMGQ
+ test-linux1804-64/debug-mochitest-fis-e10s-15: BwhwjZvpQEi9xM2UtVODzw
+ test-linux1804-64/debug-mochitest-fis-e10s-16: SFd-zqWuTZSA5oCk7-NaxQ
+ test-linux1804-64/debug-mochitest-fis-e10s-2: d0UFUCo0TraziaN-KDuZ4Q
+ test-linux1804-64/debug-mochitest-fis-e10s-3: JV8FD86gTMOIwjYnQhbIqA
+ test-linux1804-64/debug-mochitest-fis-e10s-4: ZFlqgTTfTl2Dow2Lj616Zw
+ test-linux1804-64/debug-mochitest-fis-e10s-5: L94I60NsRF-g7GtfcRAuEw
+ test-linux1804-64/debug-mochitest-fis-e10s-6: bZz8yOcDThyQ9Z2YEJA2fQ
+ test-linux1804-64/debug-mochitest-fis-e10s-7: cHtjKakMTB6-n634TjQNkA
+ test-linux1804-64/debug-mochitest-fis-e10s-8: YQxtURSGTHyjnEcZCeg9_g
+ test-linux1804-64/debug-mochitest-fis-e10s-9: fU1Du89-TY-ssnfEVc_Mkg
+ test-linux1804-64/debug-mochitest-gpu-e10s: bly4Z4tKSTeQsNIlChD9Tg
+ test-linux1804-64/debug-mochitest-media-e10s-1: Mbd_N9SbQce7gdnZGv6tfg
+ test-linux1804-64/debug-mochitest-media-e10s-2: ShkBs8CjT7WRxVNt0SJQeA
+ test-linux1804-64/debug-mochitest-media-e10s-3: cinoer-DR0Od5MQ7K6q_og
+ test-linux1804-64/debug-mochitest-media-fis-e10s-1: J4jRtAYbQ1GZbZlCm3MIeQ
+ test-linux1804-64/debug-mochitest-media-fis-e10s-2: a28Yg5VhQFa4pcZVBcLTJg
+ test-linux1804-64/debug-mochitest-media-fis-e10s-3: QwaD8kfpRUikKY1iqJpVOA
+ test-linux1804-64/debug-mochitest-media-spi-e10s-1: RJRx9XkjQWacZnrSeB-juA
+ test-linux1804-64/debug-mochitest-media-spi-e10s-2: AZPdOqm7SKe4Qc6W1M5tAw
+ test-linux1804-64/debug-mochitest-media-spi-e10s-3: VWH9F5lSSo-4QSpxzPxuNQ
+ test-linux1804-64/debug-mochitest-remote-e10s: QylEYESoSCmcUl3cgXrVCQ
+ test-linux1804-64/debug-mochitest-webgl1-core-e10s: KmgBf1kcS-ixwl2aRRunIw
+ test-linux1804-64/debug-mochitest-webgl1-core-fis-e10s: J2oXW6VES969qI1hDBNcbA
+ test-linux1804-64/debug-mochitest-webgl1-ext-e10s: Gd59svk_QburShEW5kpZHw
+ test-linux1804-64/debug-mochitest-webgl1-ext-fis-e10s: SxWKuaSYSbmJKHw7H5FGJA
+ test-linux1804-64/debug-mochitest-webgl2-core-e10s: YkvGpUfgTtmRxxyHLDQHUg
+ test-linux1804-64/debug-mochitest-webgl2-core-fis-e10s: JSUYOyERRtClYEZJnbrf_Q
+ test-linux1804-64/debug-mochitest-webgl2-ext-e10s-1: S67fWAa7QFGkLUdSWnHd7Q
+ test-linux1804-64/debug-mochitest-webgl2-ext-e10s-2: eFgKVMc2RiCKjajmmI7u0g
+ test-linux1804-64/debug-mochitest-webgl2-ext-e10s-3: INYDsRLTQx-fE3UzTuc8_g
+ test-linux1804-64/debug-mochitest-webgl2-ext-e10s-4: LkllFs3GR_2Th_3hAeLwSA
+ test-linux1804-64/debug-mochitest-webgl2-ext-fis-e10s-1: ELMAoTg7SDSTxh57Qqmitw
+ test-linux1804-64/debug-mochitest-webgl2-ext-fis-e10s-2: cI9ijdQjRfq5zc05aeNAPg
+ test-linux1804-64/debug-mochitest-webgl2-ext-fis-e10s-3: PG3l7dFoRpmdXJhsuNPP6g
+ test-linux1804-64/debug-mochitest-webgl2-ext-fis-e10s-4: cI3QWpxfRKie4afK30j1eQ
+ test-linux1804-64/debug-mochitest-webgpu-e10s: Jcx2Egu2Toaw-ToDWZsrnA
+ test-linux1804-64/debug-mochitest-webgpu-fis-e10s: Lm-CzHw-Rd-hPuLfLfaLIw
+ test-linux1804-64/debug-reftest-e10s-1: VBy1ROALQ_CdEQ2yrUTrvQ
+ test-linux1804-64/debug-reftest-e10s-2: aLUwzF55RqiGggSy_vAhbA
+ test-linux1804-64/debug-reftest-e10s-3: QWNPxgsbS3q6x6iKPeL_ZA
+ test-linux1804-64/debug-reftest-e10s-4: d65QYeysSWOLykY075PkwA
+ test-linux1804-64/debug-reftest-e10s-5: LoV1uBrhTm2yr2RcQdkB1Q
+ test-linux1804-64/debug-reftest-e10s-6: AOqng7G3RY-W_Jg2zC5mlg
+ test-linux1804-64/debug-reftest-e10s-7: OJMuErO5QIaiOKOfPZ4oAw
+ test-linux1804-64/debug-reftest-e10s-8: DUtKeWfnR1mZDq7DbDVY4Q
+ test-linux1804-64/debug-reftest-no-accel-e10s-1: KOPGKIjKRnarL7UCAgSaMA
+ test-linux1804-64/debug-reftest-no-accel-e10s-2: IVfHfXqARZeN3Yfn84aaZA
+ test-linux1804-64/debug-reftest-no-accel-e10s-3: GpV54vzRS3-fRkHTiwULaQ
+ test-linux1804-64/debug-reftest-no-accel-e10s-4: QZWh_k_vRfu9k3hkj5qtUA
+ test-linux1804-64/debug-reftest-no-accel-e10s-5: PZ99VRXcQK6g1Ck70uHn-g
+ test-linux1804-64/debug-reftest-no-accel-e10s-6: YisXE0p6QBikoJ1L-Op8CA
+ test-linux1804-64/debug-reftest-no-accel-e10s-7: CwDbqpRJSCio_htPQuB3Gg
+ test-linux1804-64/debug-reftest-no-accel-e10s-8: Znq6G1T6RhOlQwFd09g3xg
+ test-linux1804-64/debug-telemetry-tests-client-e10s: fwtwXykVQNeTw8vCntyUxQ
+ test-linux1804-64/debug-web-platform-tests-crashtests-e10s: GRMXj80dSgmVszDYPOUgsg
+ test-linux1804-64/debug-web-platform-tests-e10s-1: PL0xaZCPS4moSVbTksBG0Q
+ test-linux1804-64/debug-web-platform-tests-e10s-10: P2sPA_ypRcKzvVFGLY_jpA
+ test-linux1804-64/debug-web-platform-tests-e10s-11: Z9HsDEE5TAe2QdPK4UMvsQ
+ test-linux1804-64/debug-web-platform-tests-e10s-12: eRcbivODQe220vIS2WMccA
+ test-linux1804-64/debug-web-platform-tests-e10s-13: If4nL8skS-emIPcOar0ruQ
+ test-linux1804-64/debug-web-platform-tests-e10s-14: AQExuFIwQnCGx99rBCOoZQ
+ test-linux1804-64/debug-web-platform-tests-e10s-15: dV-6e1evSnaj7tFaeEUNHg
+ test-linux1804-64/debug-web-platform-tests-e10s-16: K77c3vdxRSSnR2Q76U7qNA
+ test-linux1804-64/debug-web-platform-tests-e10s-17: IXmNTm8oTjulMOOqg88F2g
+ test-linux1804-64/debug-web-platform-tests-e10s-18: dBe_X_cWRpWZnoazExHfNg
+ test-linux1804-64/debug-web-platform-tests-e10s-2: aDBAcrV7QtGcpH7a7EjkIA
+ test-linux1804-64/debug-web-platform-tests-e10s-3: RJoDWM3kSg-4QDJPy9e-lw
+ test-linux1804-64/debug-web-platform-tests-e10s-4: PRAzHDn5ROavk-oe6Ofozw
+ test-linux1804-64/debug-web-platform-tests-e10s-5: FHiQfjs9S96CUbJiK81o6g
+ test-linux1804-64/debug-web-platform-tests-e10s-6: dv1HU3jcSdSoNUhyY2ynEA
+ test-linux1804-64/debug-web-platform-tests-e10s-7: INDbq9l9Ro-1Vzge4hO8_Q
+ test-linux1804-64/debug-web-platform-tests-e10s-8: JSmbZK9zSgm8Wyoq5YJ-xw
+ test-linux1804-64/debug-web-platform-tests-e10s-9: XrACNUM-RoiPs8BcqoCoEg
+ test-linux1804-64/debug-web-platform-tests-reftests-e10s-1: UhcZh5c6TH2UrA3TIz0VHA
+ test-linux1804-64/debug-web-platform-tests-reftests-e10s-2: Eke7R4TFQ0WbSOJ0Pj7oDg
+ test-linux1804-64/debug-web-platform-tests-reftests-e10s-3: WTo1J3ZbRXCyGzuvlDzBpg
+ test-linux1804-64/debug-web-platform-tests-reftests-e10s-4: OUSgG4C0Rcu2D_sTR5mGhA
+ test-linux1804-64/debug-xpcshell-e10s-1: PE4uLVoDTVuCaYhAE0Kxhg
+ test-linux1804-64/debug-xpcshell-e10s-2: V07yFVvUQHij6wMDfdXymw
+ test-linux1804-64/debug-xpcshell-e10s-3: Kb-9MV5_SPiigWcZOyzXtw
+ test-linux1804-64/debug-xpcshell-e10s-4: BvMr2i6cRD2ZrtwhTWQZ_w
+ test-linux1804-64/debug-xpcshell-e10s-5: Eg_DrZ8xR1-_BJhvR-F44g
+ test-linux1804-64/debug-xpcshell-e10s-6: V3NjNt41SwGcqB1q4hAylQ
+ test-linux1804-64/opt-awsy-base-e10s: b2fXIXzZTM2sAMtjvzp1Rw
+ test-linux1804-64/opt-awsy-e10s: c39JKq5LQwGYayNkBVP9TQ
+ test-linux1804-64/opt-awsy-tp6-e10s: Hv0z5zYMRlSQNwEDrw4aCw
+ test-linux1804-64/opt-browser-screenshots-e10s: WSHIWq4-S8-GGBiSEzZAcw
+ test-linux1804-64/opt-cppunit-1proc: CD41JyX-TDSZVDbmLT6EvQ
+ test-linux1804-64/opt-crashtest-e10s: cX_XFnReRQ2OLJHxNd0wNA
+ test-linux1804-64/opt-firefox-ui-functional-local-e10s: Ki62tHbLS9aKFhYbzGOtmg
+ test-linux1804-64/opt-firefox-ui-functional-remote-e10s: KMon6iADTleGJ12a6DbRRw
+ test-linux1804-64/opt-gtest-1proc: I1KXCjCORjOIQ4jCzMMvCA
+ test-linux1804-64/opt-jsreftest-e10s-1: PXf_H2m_RjegtrtMyKlm4w
+ test-linux1804-64/opt-jsreftest-e10s-2: U-8xKFwlQfaCBVIBiVWTsg
+ test-linux1804-64/opt-jsreftest-e10s-3: BbeN76C9TC-J3NQnGVwFgw
+ test-linux1804-64/opt-mochitest-a11y-1proc: ZFV6nzWNQ1yN2grIn_4gmg
+ test-linux1804-64/opt-mochitest-browser-chrome-e10s-1: WdF5eZskRUywjCHacY806w
+ test-linux1804-64/opt-mochitest-browser-chrome-e10s-2: fCq7FTb7RG-Tm_Dr2umlIA
+ test-linux1804-64/opt-mochitest-browser-chrome-e10s-3: QmxBv38IQIKiKDBd_I8WSQ
+ test-linux1804-64/opt-mochitest-browser-chrome-e10s-4: PwInIkICSReL0DytziJPLA
+ test-linux1804-64/opt-mochitest-browser-chrome-e10s-5: IHkn1lBLRnKf2QOg6eFgSQ
+ test-linux1804-64/opt-mochitest-browser-chrome-e10s-6: dy4qnl0_SMKCk8PNTHGv0A
+ test-linux1804-64/opt-mochitest-browser-chrome-e10s-7: K3UT2YD2ShepxE5H8o6_LQ
+ test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-1: IlPl_4m4SJ6k_-Co6fUnzw
+ test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-2: PU0oKpCdTQ-azU9AUJl88A
+ test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-3: JoS_7RcUTgqNaX1UPcMobw
+ test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-4: BLTO7yngRTONr_u39nlHmw
+ test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-5: NjoJMsJ3QJebflNgfkXKcw
+ test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-6: avjSp4WCTbW76cXMt00Ttg
+ test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-7: S0XDul_ZQm2VHktyBXwnTw
+ test-linux1804-64/opt-mochitest-chrome-1proc-1: WLzltaUSR4CSTgf1dQNYFg
+ test-linux1804-64/opt-mochitest-chrome-1proc-2: Htuq3mZGS9WHaKJ_Zw1QNA
+ test-linux1804-64/opt-mochitest-devtools-chrome-e10s-1: MVisko2lSwyeAZ3XU_2uGA
+ test-linux1804-64/opt-mochitest-devtools-chrome-e10s-2: YsXn1bKxSJ6sPq-5hIOPhg
+ test-linux1804-64/opt-mochitest-devtools-chrome-e10s-3: PTHQGQEoRaS94sjZLP5QEg
+ test-linux1804-64/opt-mochitest-devtools-chrome-e10s-4: SnJI7ZWWRyGDor251oaDIg
+ test-linux1804-64/opt-mochitest-devtools-chrome-e10s-5: LjCnW2UZRQ2rxZDniwd-KQ
+ test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-1: TfxtW-VETfiPZPP2rd6X-A
+ test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-2: f_UW3MDpQx6c7xYRYb_TgA
+ test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-3: UCVemMKARbGClJFK7E069A
+ test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-4: B-3BpqavS2ur8WlFLhZeqw
+ test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-5: H_xsmiJ5R1uDL000YzQ7Lw
+ test-linux1804-64/opt-mochitest-e10s-1: LVbsLRSzSsiK8DbG05etVA
+ test-linux1804-64/opt-mochitest-e10s-2: YYFQb8rgRPe6AUPRBJKczg
+ test-linux1804-64/opt-mochitest-e10s-3: RQ0xfn7YQbSv1Po5QNL_1A
+ test-linux1804-64/opt-mochitest-e10s-4: dFcAM7LvQw-eQlR-J5yoxA
+ test-linux1804-64/opt-mochitest-e10s-5: WG-lDu09QZGyGGqAMrR0TQ
+ test-linux1804-64/opt-mochitest-fis-e10s-1: FQ0cKxOqRK2FcNl9BRHxcg
+ test-linux1804-64/opt-mochitest-fis-e10s-2: CTzMKThQSGuBr7lHoYt_aQ
+ test-linux1804-64/opt-mochitest-fis-e10s-3: bG499YFjQqKP3Ipn5hFbjg
+ test-linux1804-64/opt-mochitest-fis-e10s-4: bZsa928oRaOY9-3QnU-RsA
+ test-linux1804-64/opt-mochitest-fis-e10s-5: b4ZU0LwTTr-uKQRaXU3PiQ
+ test-linux1804-64/opt-mochitest-gpu-e10s: bK8np4KmRW-2raCZn3eB0Q
+ test-linux1804-64/opt-mochitest-media-e10s-1: P4e3QJa8TByCeAei-Qi-7g
+ test-linux1804-64/opt-mochitest-media-e10s-2: c6LtkDhLR3u86gzTGrlOQA
+ test-linux1804-64/opt-mochitest-media-e10s-3: VtGwJvUQQb-IErKAtkKLDg
+ test-linux1804-64/opt-mochitest-media-fis-e10s-1: RWGXrD2zQFOO18DvT4skxA
+ test-linux1804-64/opt-mochitest-media-fis-e10s-2: TiYPed6ETYaXLj2t1Epabg
+ test-linux1804-64/opt-mochitest-media-fis-e10s-3: WQyIzyIISSqA_InoUan0XA
+ test-linux1804-64/opt-mochitest-media-spi-e10s-1: I3bAGuwzQuCiFO3eyPDHTA
+ test-linux1804-64/opt-mochitest-media-spi-e10s-2: MYe5qm5bRY2o6Jv3cGY90A
+ test-linux1804-64/opt-mochitest-media-spi-e10s-3: ZBICL2VMTjC1tRjcqCxciQ
+ test-linux1804-64/opt-mochitest-plain-headless-e10s-1: bknkspeISqyHM1Wj5KU2Eg
+ test-linux1804-64/opt-mochitest-plain-headless-e10s-2: QPZpxEvsSkSBUmdx_K_ptQ
+ test-linux1804-64/opt-mochitest-plain-headless-e10s-3: dn9miH-FQfKu1qW6ETlRpg
+ test-linux1804-64/opt-mochitest-plain-headless-e10s-4: YrY7eskHQhelgB9T32v9Hw
+ test-linux1804-64/opt-mochitest-plain-headless-e10s-5: dQ4_kIQnSnmWStpOeKg52Q
+ test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-1: bs3eKCE0T46gMS3CiHGDEQ
+ test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-2: WfqVWIppSSyGasQh9DDYyA
+ test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-3: LxYVdpO5TuW95_IH9hs3Zg
+ test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-4: fqn88jnJQWyFMi9ydxM1QA
+ test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-5: EJnQYDF8S9OuqUEqy8sybg
+ test-linux1804-64/opt-mochitest-remote-e10s: baCWxsBwSbqvawluby1VIQ
+ test-linux1804-64/opt-mochitest-webgl1-core-e10s: R0bnbn7IQtCIS89GmZ4TfA
+ test-linux1804-64/opt-mochitest-webgl1-core-fis-e10s: R7UQjbb3Rrq7_zjK51ds_A
+ test-linux1804-64/opt-mochitest-webgl1-ext-e10s: IN0dhxlfQXqLLFjlP-dCcQ
+ test-linux1804-64/opt-mochitest-webgl1-ext-fis-e10s: FgA-HQ9iSv2GAo0vTt84mA
+ test-linux1804-64/opt-mochitest-webgl2-core-e10s: RWAM3TjQQFOUEMrzh2lOVw
+ test-linux1804-64/opt-mochitest-webgl2-core-fis-e10s: PF2Rx_iLRYeZdWc5zDUItw
+ test-linux1804-64/opt-mochitest-webgl2-ext-e10s-1: XRS8b3A9Re-L5vc2q8OfUA
+ test-linux1804-64/opt-mochitest-webgl2-ext-e10s-2: bbWkvfnuQu2X1hBcfezlig
+ test-linux1804-64/opt-mochitest-webgl2-ext-e10s-3: V1_FGlCPQq628g-DEDIVIQ
+ test-linux1804-64/opt-mochitest-webgl2-ext-e10s-4: bGIPraEzT-uUxc6HPdtjfQ
+ test-linux1804-64/opt-mochitest-webgl2-ext-fis-e10s-1: Fvi4L6jYSMSJYoMuWO7Dzw
+ test-linux1804-64/opt-mochitest-webgl2-ext-fis-e10s-2: DmUAQeSQRzqgj5_I11sBdQ
+ test-linux1804-64/opt-mochitest-webgl2-ext-fis-e10s-3: VFZHxV-DSLCDzzbu6oWrhg
+ test-linux1804-64/opt-mochitest-webgl2-ext-fis-e10s-4: flfepw9kT3OOIJpntglcTQ
+ test-linux1804-64/opt-mochitest-webgpu-e10s: cYIXiELrR8mP_iXljYYnYg
+ test-linux1804-64/opt-mochitest-webgpu-fis-e10s: WWf3usv9Q7euwILTGFN0KQ
+ test-linux1804-64/opt-reftest-e10s-1: Ine-Ou_qQ-y_-rYhyE-iZw
+ test-linux1804-64/opt-reftest-e10s-2: da_8AFekQrWRS1uzVQTXBw
+ test-linux1804-64/opt-reftest-e10s-3: fEZ5DjKURd6SZVZ_qdlEFg
+ test-linux1804-64/opt-reftest-e10s-4: dMsv5XwkQwGnO9hqvXk4KA
+ test-linux1804-64/opt-reftest-e10s-5: Q8MKiNitQKGSxmz7U4F3kg
+ test-linux1804-64/opt-reftest-no-accel-e10s-1: Uv_RoItqScaix8YqUSIMcQ
+ test-linux1804-64/opt-reftest-no-accel-e10s-2: NfwCJtwKSp6QskusnKpN1g
+ test-linux1804-64/opt-reftest-no-accel-e10s-3: WWJAmktgSXC8yD9FTxrOPg
+ test-linux1804-64/opt-reftest-no-accel-e10s-4: K6kStLXqQNCEuAwzQIYX6g
+ test-linux1804-64/opt-telemetry-tests-client-e10s: czVxbtP0Rr6-Ben-m_q1_w
+ test-linux1804-64/opt-test-verify-e10s-1: AcGxTjcfQxizCQ8Mgwew-w
+ test-linux1804-64/opt-test-verify-e10s-2: CM83ZmJ_SPGvphitUKvxYw
+ test-linux1804-64/opt-test-verify-gpu-e10s: SVapwTPYSmihWJJo8dFCzA
+ test-linux1804-64/opt-test-verify-wpt-e10s-1: TvLCaGd2RMumZqF5YcBzPg
+ test-linux1804-64/opt-test-verify-wpt-e10s-2: QerXbMxdQcG0b-5pNPa6dQ
+ test-linux1804-64/opt-test-verify-wpt-e10s-3: TAhpj2xlTSGkH355nlQP_w
+ test-linux1804-64/opt-web-platform-tests-crashtests-e10s: QnC9dCVITViXdSc93Tl0Cg
+ test-linux1804-64/opt-web-platform-tests-e10s-1: I6gDRS2rRC6yKSKADtD-yA
+ test-linux1804-64/opt-web-platform-tests-e10s-10: Bnn46WDSSHqd0Hy4HWPv4A
+ test-linux1804-64/opt-web-platform-tests-e10s-11: PypTvnGETr2FVcs1D2lE2Q
+ test-linux1804-64/opt-web-platform-tests-e10s-12: MthEkHdFTyGvB7T_HVrjRA
+ test-linux1804-64/opt-web-platform-tests-e10s-2: WV8K84sPTZuz-34cek5NEg
+ test-linux1804-64/opt-web-platform-tests-e10s-3: UE5x2jo0Tl6pB8e8_Dwq1Q
+ test-linux1804-64/opt-web-platform-tests-e10s-4: O1E7v7QmRrKNTi8yXmdsZQ
+ test-linux1804-64/opt-web-platform-tests-e10s-5: GDbm7txMSA-lYVnl5XgshQ
+ test-linux1804-64/opt-web-platform-tests-e10s-6: K1ncJOZZRvmeStS3qgi1ww
+ test-linux1804-64/opt-web-platform-tests-e10s-7: HvgWLGFtQtKLA2GokXu-IQ
+ test-linux1804-64/opt-web-platform-tests-e10s-8: N2c6SDWFS3yMtWo7AfeIwg
+ test-linux1804-64/opt-web-platform-tests-e10s-9: YX7TxWsRQTWGvi2LdIQkKQ
+ test-linux1804-64/opt-web-platform-tests-reftests-e10s-1: ADG8i3yfTFqgm3NGaZPTMw
+ test-linux1804-64/opt-web-platform-tests-reftests-e10s-2: JH8ZnGT0Skqnl8xhF2cLqQ
+ test-linux1804-64/opt-web-platform-tests-reftests-e10s-3: FIuWo_VzQsaz368CCfNWBA
+ test-linux1804-64/opt-xpcshell-e10s-1: PiZh2zZuQ4u0lgu1ZcPSrQ
+ test-linux1804-64/opt-xpcshell-e10s-2: f-PEhnCcT9KLsWAvKxj3yQ
+ test-linux1804-64/opt-xpcshell-e10s-3: SibVIiSmSzqf5E1EW13CbA
+ test-linux1804-64/opt-xpcshell-e10s-4: LwEms-g8SH6vhyubR8XZpA
+ test-linux1804-64/opt-xpcshell-e10s-5: ZkWbMFWIT0mSNZRpt4D1rA
+ test-linux64-asan/opt-marionette-e10s: d_Tefu_DTAeiFqIGAc293g
+ test-linux64-asan/opt-web-platform-tests-wdspec-e10s-1: JczcAHR1ScyEBbz4esp3Kw
+ test-linux64-asan/opt-web-platform-tests-wdspec-e10s-2: U16MpH7VSfGs7xSO55zN7w
+ test-linux64-asan/opt-web-platform-tests-wdspec-e10s-3: IRBqWOY3SWi4H-AVbskYHw
+ test-linux64-ccov/opt-marionette-e10s: YkmZ9uchSaOZMoxjBL6Zow
+ test-linux64-ccov/opt-web-platform-tests-wdspec-e10s-1: FjKKxPKkRlKiDEXMhhugww
+ test-linux64-ccov/opt-web-platform-tests-wdspec-e10s-2: SyU6hP1CRM2538CLHZmVJw
+ test-linux64-ccov/opt-web-platform-tests-wdspec-e10s-3: OlQVEPzzQQ-cLnN_wbRiyQ
+ test-linux64-ccov/opt-web-platform-tests-wdspec-e10s-4: FnuH_F4zQHm-F5ay8009ww
+ test-linux64-qr/debug-web-platform-tests-wdspec-e10s-1: GwGfH120TQqafP_Z7Dd4Fw
+ test-linux64-qr/debug-web-platform-tests-wdspec-e10s-2: F9Bn_vvZQFSw0jOgks-HKw
+ test-linux64-qr/debug-web-platform-tests-wdspec-e10s-3: PpZ4BdgmRMifnVz9vGkaTA
+ test-linux64-qr/debug-web-platform-tests-wdspec-fis-e10s-1: FyHR-c5hTr-JSbAu9lSk8w
+ test-linux64-qr/debug-web-platform-tests-wdspec-fis-e10s-2: NNbWKtz9S76OYiGwtA7rbA
+ test-linux64-qr/debug-web-platform-tests-wdspec-fis-e10s-3: JPQ3U_6BQIO6Yt6F0RHqYA
+ test-linux64-qr/opt-raptor-ares6-firefox-e10s: Lkd6xpPPSBiqCRUDwYLEew
+ test-linux64-qr/opt-raptor-assorted-dom-firefox-e10s: ALKw9cP9StSFpzrvBmRQog
+ test-linux64-qr/opt-raptor-jetstream2-firefox-e10s: OjiqXSqQT0yzeKlGfJROaw
+ test-linux64-qr/opt-raptor-motionmark-animometer-firefox-e10s: GB0bryw6Tm-AVUoq-_Pr2Q
+ test-linux64-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: STl_CeLcTPSZP7uNJijTHg
+ test-linux64-qr/opt-raptor-speedometer-firefox-e10s: X7eA0L6LQPuMyVX5IfrL8w
+ test-linux64-qr/opt-raptor-stylebench-firefox-e10s: AEXy9GywSX-tYmbfo_uNQg
+ test-linux64-qr/opt-raptor-sunspider-firefox-e10s: Va0LUVL9TGmwJm45rFhF1Q
+ test-linux64-qr/opt-raptor-tp6-1-firefox-cold-e10s: I5jOVXYBR_qLQRos7oOyMw
+ test-linux64-qr/opt-raptor-tp6-1-firefox-e10s: ElXBCnB6TC6QJ6xfJu2izQ
+ test-linux64-qr/opt-raptor-tp6-10-firefox-cold-e10s: cqFUG93ESH-6OhNUPjeqow
+ test-linux64-qr/opt-raptor-tp6-10-firefox-e10s: NrYby8jjTgKtRwPuoX_89w
+ test-linux64-qr/opt-raptor-tp6-11-firefox-cold-e10s: A5v1T6mATTO1DqlO5nZRXg
+ test-linux64-qr/opt-raptor-tp6-12-firefox-cold-e10s: F4YsuSRiRDGdyCksM8-W0w
+ test-linux64-qr/opt-raptor-tp6-13-firefox-cold-e10s: AZqAvm1sSgKPTuozrNnPIQ
+ test-linux64-qr/opt-raptor-tp6-14-firefox-cold-e10s: bxJ_2e5RSgKbw5BQsP2PpA
+ test-linux64-qr/opt-raptor-tp6-15-firefox-cold-e10s: Ix4itBJGTe-W187EhTPJHw
+ test-linux64-qr/opt-raptor-tp6-16-firefox-cold-e10s: cjfF5wRVTVS7nfqhXEKaGw
+ test-linux64-qr/opt-raptor-tp6-17-firefox-cold-e10s: Kyvx9YmWRoeEUvXUwDG3yQ
+ test-linux64-qr/opt-raptor-tp6-18-firefox-cold-e10s: QwSeO24RTY2E8ayglnezIw
+ test-linux64-qr/opt-raptor-tp6-19-firefox-cold-e10s: HnQIaM1IQPWOVKXgr1qSPA
+ test-linux64-qr/opt-raptor-tp6-2-firefox-cold-e10s: QDAnTaE7QYma_ZbGZY6cbQ
+ test-linux64-qr/opt-raptor-tp6-2-firefox-e10s: ZauV99ybS1eAW2YWVH6yAg
+ test-linux64-qr/opt-raptor-tp6-20-firefox-cold-e10s: eWo0DJzaR3uobgV8QY5jRw
+ test-linux64-qr/opt-raptor-tp6-21-firefox-cold-e10s: A8iJV3pZQVicJCBPSa8Jlg
+ test-linux64-qr/opt-raptor-tp6-22-firefox-cold-e10s: VwBf3jRATYCs_5Km9NPKaw
+ test-linux64-qr/opt-raptor-tp6-23-firefox-cold-e10s: AZaaKsm4QVC3dRRIDCn0gw
+ test-linux64-qr/opt-raptor-tp6-24-firefox-cold-e10s: d8HtGO9_Rg-uqGe-0EYdxg
+ test-linux64-qr/opt-raptor-tp6-25-firefox-cold-e10s: S0oQVHWaTB2UFuyHbxqU-w
+ test-linux64-qr/opt-raptor-tp6-26-firefox-cold-e10s: ekPZFBbhR--B59HqYKTXoQ
+ test-linux64-qr/opt-raptor-tp6-27-firefox-cold-e10s: Qn7YeMQUS2aNitVvniWnvw
+ test-linux64-qr/opt-raptor-tp6-28-firefox-cold-e10s: fDhzcmsNQimDydyHINJ5hg
+ test-linux64-qr/opt-raptor-tp6-29-firefox-cold-e10s: Xw4mS3ezRJCg3AQGkYiBsg
+ test-linux64-qr/opt-raptor-tp6-3-firefox-cold-e10s: VAuypSVPQlav-8FJxmEUEw
+ test-linux64-qr/opt-raptor-tp6-3-firefox-e10s: PJn7ACzySAigvBIlwHNu6w
+ test-linux64-qr/opt-raptor-tp6-30-firefox-cold-e10s: E9U1k8zQT9WmMV1unAHbqA
+ test-linux64-qr/opt-raptor-tp6-4-firefox-cold-e10s: CMoaSr6jSH2laojbZMUA7A
+ test-linux64-qr/opt-raptor-tp6-4-firefox-e10s: dew0AlCaTbG2i308VAWZjg
+ test-linux64-qr/opt-raptor-tp6-5-firefox-cold-e10s: B0kSdPH-Q1eupRN9woASOA
+ test-linux64-qr/opt-raptor-tp6-5-firefox-e10s: KcB-PjjnT-usIPTsa6hPog
+ test-linux64-qr/opt-raptor-tp6-6-firefox-cold-e10s: Zl73y4XRTeWWDuEU0zZTTg
+ test-linux64-qr/opt-raptor-tp6-6-firefox-e10s: JelyKVn3R4OlipUsPeULSw
+ test-linux64-qr/opt-raptor-tp6-7-firefox-cold-e10s: W8gtkEjzT-q69_A9d7yOYA
+ test-linux64-qr/opt-raptor-tp6-7-firefox-e10s: JVjGmK7qRgqJRGbaFyXySQ
+ test-linux64-qr/opt-raptor-tp6-8-firefox-cold-e10s: AFIt8OuITHuyUdGr9qsZaA
+ test-linux64-qr/opt-raptor-tp6-8-firefox-e10s: bsAxXZf0Sv2YQvLa3DYQNA
+ test-linux64-qr/opt-raptor-tp6-9-firefox-cold-e10s: GSV1ZxmBQziXLHjLJ_eGDw
+ test-linux64-qr/opt-raptor-tp6-9-firefox-e10s: ATtrbXXHRQavLcxqamQgEA
+ test-linux64-qr/opt-raptor-tp6-binast-1-firefox-e10s: AXg2jeqAREW4OW_HlTNv1Q
+ test-linux64-qr/opt-raptor-unity-webgl-firefox-e10s: Fd3KGOW9TyqV-E-CBfPnXw
+ test-linux64-qr/opt-raptor-wasm-godot-baseline-firefox-e10s: Auk_JWigStquuwLnQ5Su9Q
+ test-linux64-qr/opt-raptor-wasm-godot-cranelift-firefox-e10s: JW2PwagkT2anMPkqr4X7Lw
+ test-linux64-qr/opt-raptor-wasm-godot-firefox-e10s: BmUpDVvTQmqjC_jlgGZ-fQ
+ test-linux64-qr/opt-raptor-wasm-godot-ion-firefox-e10s: YPv6yq33TRyjihk7ll3R-g
+ test-linux64-qr/opt-raptor-wasm-misc-baseline-firefox-e10s: VlSyG8cJQPej1gTaWLVBuw
+ test-linux64-qr/opt-raptor-wasm-misc-cranelift-firefox-e10s: KxWa-r0vS_GFW-QvVH36cg
+ test-linux64-qr/opt-raptor-wasm-misc-firefox-e10s: QNyWGXh_R4GUA0DN06Khtw
+ test-linux64-qr/opt-raptor-wasm-misc-ion-firefox-e10s: YQXGZlToR-qqzZNb0sUnEw
+ test-linux64-qr/opt-raptor-webaudio-firefox-e10s: QUxQYzqLQDOjBod51Eq07A
+ test-linux64-qr/opt-raptor-youtube-playback-firefox-e10s: NC_aLJdPT3WwkJfmS8eSnA
+ test-linux64-qr/opt-talos-chrome-e10s: PWfl9-VJRkOovMmCcN6iBg
+ test-linux64-qr/opt-talos-damp-e10s: RPhFisqFSTOYvAJC5n3-hQ
+ test-linux64-qr/opt-talos-dromaeojs-e10s: Jm9Zj6DTSFWmOzVFLPo2Pg
+ test-linux64-qr/opt-talos-g1-e10s: Qfg96kHxQFi5O2DbddfLAg
+ test-linux64-qr/opt-talos-g3-e10s: Pg-RiDncQhuQg0faGKFFng
+ test-linux64-qr/opt-talos-g4-e10s: X8tLriY_SDKG370z2cbpgg
+ test-linux64-qr/opt-talos-g5-e10s: GLb0Ew1CQQ-SDjOdRk9ZpA
+ test-linux64-qr/opt-talos-other-e10s: ShOhhPpCSa6c0QzttN9RYg
+ test-linux64-qr/opt-talos-perf-reftest-e10s: fi2KGd1QQqqC8uMnh7VEZQ
+ test-linux64-qr/opt-talos-perf-reftest-singletons-e10s: AOqVhmqNT2aaStxi1W99Ug
+ test-linux64-qr/opt-talos-realworld-webextensions-e10s: F3A-3VAVT2yjilfrpWhLOg
+ test-linux64-qr/opt-talos-sessionrestore-many-windows-e10s: GXCzjEyUTH-REPWkFaE4DA
+ test-linux64-qr/opt-talos-svgr-e10s: G5mk3T34Rpe9sOSaTJihSg
+ test-linux64-qr/opt-talos-tabswitch-e10s: JkNFsnc2RLOtIxxWXIFu7g
+ test-linux64-qr/opt-talos-tp5o-e10s: G0WJ5_10QMOb2LKnlUrDuA
+ test-linux64-qr/opt-talos-webgl-e10s: Qwp0DLg3R2C1D3Lh-DnIjg
+ test-linux64-qr/opt-web-platform-tests-wdspec-e10s-1: UEZq8jSfR0qFEissTW5JDQ
+ test-linux64-qr/opt-web-platform-tests-wdspec-e10s-2: GTozRhAbS6WP2JI12IOv9g
+ test-linux64-qr/opt-web-platform-tests-wdspec-e10s-3: EmXQwxKXQHK7bLyH14qqAA
+ test-linux64-qr/opt-web-platform-tests-wdspec-fis-e10s-1: EnuW8MkBTgmLWUqZWU9GXg
+ test-linux64-qr/opt-web-platform-tests-wdspec-fis-e10s-2: cfgfo27dSqmpSsSq3ItdYQ
+ test-linux64-qr/opt-web-platform-tests-wdspec-fis-e10s-3: WfS4Z6z9SWatP-meIGx26w
+ test-linux64-shippable-qr/opt-raptor-ares6-firefox-e10s: UwVbOkPxRwuXg0rscdveMg
+ test-linux64-shippable-qr/opt-raptor-ares6-firefox-fis-e10s: NPpFkeGzScyNKxNHyPTONQ
+ test-linux64-shippable-qr/opt-raptor-assorted-dom-firefox-e10s: XVY_uiatR1aClhhQuQDiAA
+ test-linux64-shippable-qr/opt-raptor-assorted-dom-firefox-fis-e10s: VYVitYTWQJe1uk0VCRs3Wg
+ test-linux64-shippable-qr/opt-raptor-jetstream2-firefox-e10s: PLEgarGJSOmxggIw5u-3SA
+ test-linux64-shippable-qr/opt-raptor-jetstream2-firefox-fis-e10s: SkEGfYc4TZSyLpqvp4H2fg
+ test-linux64-shippable-qr/opt-raptor-motionmark-animometer-firefox-e10s: EYkSSpOnTfCbaANY9NQn_w
+ test-linux64-shippable-qr/opt-raptor-motionmark-animometer-firefox-fis-e10s: FX2nwTbXRgqPDjpT4UI09A
+ test-linux64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: NWqnIlV1SkWH0KFgHq4s_Q
+ test-linux64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-fis-e10s: QJ1Ya2CkQsC_YhWdaVwF2g
+ test-linux64-shippable-qr/opt-raptor-speedometer-firefox-e10s: YwmjJKbiQg2JhFHhaC9MSw
+ test-linux64-shippable-qr/opt-raptor-speedometer-firefox-fis-e10s: bNvBZ_11SiCWZdWr-jEGIg
+ test-linux64-shippable-qr/opt-raptor-stylebench-firefox-e10s: dP32C9SHRv67mBvIB9yoog
+ test-linux64-shippable-qr/opt-raptor-stylebench-firefox-fis-e10s: Gp8MZqiBRt6VzU1JJ8stuA
+ test-linux64-shippable-qr/opt-raptor-sunspider-firefox-e10s: aBl4hwhKQEyWUA8H1sJLSA
+ test-linux64-shippable-qr/opt-raptor-sunspider-firefox-fis-e10s: LUk22pzqQ2-0slX_hlptfw
+ test-linux64-shippable-qr/opt-raptor-tp6-1-firefox-cold-e10s: T380PgJUSwqG-8YpeH49Zg
+ test-linux64-shippable-qr/opt-raptor-tp6-1-firefox-e10s: TUkAAo8PTF-Runs1GhlRyA
+ test-linux64-shippable-qr/opt-raptor-tp6-1-firefox-fis-e10s: Y-HpuQhbQ5SVlfXvHdgJ-w
+ test-linux64-shippable-qr/opt-raptor-tp6-10-firefox-cold-e10s: JKcIlPdiQgSMb13uML_pqg
+ test-linux64-shippable-qr/opt-raptor-tp6-10-firefox-e10s: Xg8nM-3zQSeEtrpL6cfOew
+ test-linux64-shippable-qr/opt-raptor-tp6-10-firefox-fis-e10s: ReycFVInTAOgX_GdXGiCTA
+ test-linux64-shippable-qr/opt-raptor-tp6-11-firefox-cold-e10s: aTC7FICZRZylOU_U_X1A6A
+ test-linux64-shippable-qr/opt-raptor-tp6-12-firefox-cold-e10s: LAS3vA5VSHWn0312wZZHQQ
+ test-linux64-shippable-qr/opt-raptor-tp6-13-firefox-cold-e10s: exNoqv1rRk2EY1Jr9tC3yg
+ test-linux64-shippable-qr/opt-raptor-tp6-14-firefox-cold-e10s: egBsuRXhQNipqeJMnzWEBg
+ test-linux64-shippable-qr/opt-raptor-tp6-15-firefox-cold-e10s: EnSlT-ZwTu6hqXaxIRgjJQ
+ test-linux64-shippable-qr/opt-raptor-tp6-16-firefox-cold-e10s: K8EQOeNvTRCPJMITybRNVA
+ test-linux64-shippable-qr/opt-raptor-tp6-17-firefox-cold-e10s: SQDX9CxmR56jbbL5GPJTFQ
+ test-linux64-shippable-qr/opt-raptor-tp6-18-firefox-cold-e10s: fRDhJwpRS-ifeNwf8ReWzA
+ test-linux64-shippable-qr/opt-raptor-tp6-19-firefox-cold-e10s: Zffx61hjSK2AfQHP-ClvcQ
+ test-linux64-shippable-qr/opt-raptor-tp6-2-firefox-cold-e10s: A_r5Mjh1Q0yvB7ZZaOzQmg
+ test-linux64-shippable-qr/opt-raptor-tp6-2-firefox-e10s: DnFkTownRkOeuGK6OmJC6g
+ test-linux64-shippable-qr/opt-raptor-tp6-2-firefox-fis-e10s: A3YSD7nyQX6udUnTEYV3Ew
+ test-linux64-shippable-qr/opt-raptor-tp6-20-firefox-cold-e10s: bksHnzXcTP6DlFjdDfuBnA
+ test-linux64-shippable-qr/opt-raptor-tp6-21-firefox-cold-e10s: JcEINl-dQMiyjyVJmjxBxA
+ test-linux64-shippable-qr/opt-raptor-tp6-22-firefox-cold-e10s: VmBP-IWUSf6wNrlUyB3y-Q
+ test-linux64-shippable-qr/opt-raptor-tp6-23-firefox-cold-e10s: Cp7Pg_Z7Qim2E5RfrI7gHQ
+ test-linux64-shippable-qr/opt-raptor-tp6-24-firefox-cold-e10s: C6nwBWGASj6NZjY703LViw
+ test-linux64-shippable-qr/opt-raptor-tp6-25-firefox-cold-e10s: bmfBLy9aTAaEy5to83beKQ
+ test-linux64-shippable-qr/opt-raptor-tp6-26-firefox-cold-e10s: dWDfqFSdRoCWlq2pzq-6eA
+ test-linux64-shippable-qr/opt-raptor-tp6-27-firefox-cold-e10s: HCIjB-9ETcagnk-zKGnFCA
+ test-linux64-shippable-qr/opt-raptor-tp6-28-firefox-cold-e10s: bs3WoWIbQnCoiIy-qMYlZQ
+ test-linux64-shippable-qr/opt-raptor-tp6-29-firefox-cold-e10s: ZX9fa_j2RRmfGs6F7mH57w
+ test-linux64-shippable-qr/opt-raptor-tp6-3-firefox-cold-e10s: NGjgA3ujRiG8m4m3VyUZKg
+ test-linux64-shippable-qr/opt-raptor-tp6-3-firefox-e10s: WrG_qkE1RvyCx1C5GPuB9Q
+ test-linux64-shippable-qr/opt-raptor-tp6-3-firefox-fis-e10s: NdmtUdhCSMaRqhrK202v4A
+ test-linux64-shippable-qr/opt-raptor-tp6-30-firefox-cold-e10s: S8dax8MgQ6Kg4B3lARvrgQ
+ test-linux64-shippable-qr/opt-raptor-tp6-4-firefox-cold-e10s: aX0wBq8_RqSRBmD7PCjg7A
+ test-linux64-shippable-qr/opt-raptor-tp6-4-firefox-e10s: UfsigmdFRDiBfD15BURCGw
+ test-linux64-shippable-qr/opt-raptor-tp6-4-firefox-fis-e10s: QzlwTl7aQ8SyLn69NeV4nA
+ test-linux64-shippable-qr/opt-raptor-tp6-5-firefox-cold-e10s: J1AljdLOSY2lJ3NTDga1uQ
+ test-linux64-shippable-qr/opt-raptor-tp6-5-firefox-e10s: KcBjXNA3TTKcDvkFZf_oyQ
+ test-linux64-shippable-qr/opt-raptor-tp6-5-firefox-fis-e10s: ZLByg8zXTwWKPPIO-00m6A
+ test-linux64-shippable-qr/opt-raptor-tp6-6-firefox-cold-e10s: dV-8tRkbRgW6XDm2MtsHbw
+ test-linux64-shippable-qr/opt-raptor-tp6-6-firefox-e10s: aALnqnXnSHWEqmNu0-L7fQ
+ test-linux64-shippable-qr/opt-raptor-tp6-6-firefox-fis-e10s: dSYCuKrwRTirzwf1XYQeDQ
+ test-linux64-shippable-qr/opt-raptor-tp6-7-firefox-cold-e10s: aH_HJTlLTwymBfZfIcbg9g
+ test-linux64-shippable-qr/opt-raptor-tp6-7-firefox-e10s: KuklwL5LQ5qzGAUjixIslA
+ test-linux64-shippable-qr/opt-raptor-tp6-7-firefox-fis-e10s: YudYgwZHRlmHnBXjeJt11w
+ test-linux64-shippable-qr/opt-raptor-tp6-8-firefox-cold-e10s: CIdGwyWNQWO514BfJ3tS0g
+ test-linux64-shippable-qr/opt-raptor-tp6-8-firefox-e10s: MQtMyOYVS4GYSlymEulSyw
+ test-linux64-shippable-qr/opt-raptor-tp6-8-firefox-fis-e10s: YPAcoihETBiG361nacHe4g
+ test-linux64-shippable-qr/opt-raptor-tp6-9-firefox-cold-e10s: b_mXYhTDSoWKkineAewsxA
+ test-linux64-shippable-qr/opt-raptor-tp6-9-firefox-e10s: U9pPIq1aR7CsXWeGkxZVqA
+ test-linux64-shippable-qr/opt-raptor-tp6-9-firefox-fis-e10s: P6GAsYXMQbqa9WNx1M_g_Q
+ test-linux64-shippable-qr/opt-raptor-tp6-binast-1-firefox-e10s: O-m1oJkQTIq5RSjjO5KTLg
+ test-linux64-shippable-qr/opt-raptor-tp6-binast-1-firefox-fis-e10s: dyW4tWmzSNatLSuYo6CpFg
+ test-linux64-shippable-qr/opt-raptor-unity-webgl-firefox-e10s: c0lNAvrjSYOIZkWiLGMvCA
+ test-linux64-shippable-qr/opt-raptor-unity-webgl-firefox-fis-e10s: SxAKuoU9QUGWgxsHRB2shA
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-baseline-firefox-e10s: HBowrK19SByU-d58eEaQGw
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-baseline-firefox-fis-e10s: IvXYmX3mQR2toV6DeFTjKw
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-cranelift-firefox-e10s: FNsgROQ4Qo6GddMTL4cr5Q
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-cranelift-firefox-fis-e10s: XlKjbvnURWGAGBqRJJ7DiA
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-firefox-e10s: dM1FW6lET0um-XwlX9Dp-Q
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-firefox-fis-e10s: U0rGobDES6WPOd27UnMy7Q
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-ion-firefox-e10s: a625rjkaSWexGWturUJFSA
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-ion-firefox-fis-e10s: V7i3Ir-1RxaK5jyAnul_3A
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-baseline-firefox-e10s: ENLPP6r9RbqpDFuA9kEl5g
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-baseline-firefox-fis-e10s: Az8vB-Y3QbKVshLTsPb2zg
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-cranelift-firefox-e10s: O5725izARJWKiWaJjgO1hg
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-cranelift-firefox-fis-e10s: KrY0awcoRyaj8xEvTy0UPQ
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-firefox-e10s: T4xQQXuBRxehNfv46c6dog
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-firefox-fis-e10s: VF5RNPyyTzGsQDO_oyGGuA
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-ion-firefox-e10s: cVFN8e67SRauU3n1xlzNCQ
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-ion-firefox-fis-e10s: FjtZJDVXTWy2MXwlHlIbdg
+ test-linux64-shippable-qr/opt-raptor-webaudio-firefox-e10s: L59FcY9TQu-kHnKzNDeBHg
+ test-linux64-shippable-qr/opt-raptor-webaudio-firefox-fis-e10s: f1DCx9xuRnikeQsqRvRYRg
+ test-linux64-shippable-qr/opt-raptor-youtube-playback-firefox-e10s: KPb76s-LQvyufjwIKUvUBA
+ test-linux64-shippable-qr/opt-raptor-youtube-playback-firefox-fis-e10s: F6-QAgK7SmyeTIIQDAwFpw
+ test-linux64-shippable-qr/opt-talos-chrome-e10s: O_rD6Os1S_iGfMDv5B0U8w
+ test-linux64-shippable-qr/opt-talos-chrome-fis-e10s: esrk3CzxTVuecYAX71hISg
+ test-linux64-shippable-qr/opt-talos-damp-e10s: RrUPu9d9S8CNLDqLWhNlLA
+ test-linux64-shippable-qr/opt-talos-damp-fis-e10s: TXgVK7r5QICRHYxEvPxwpQ
+ test-linux64-shippable-qr/opt-talos-dromaeojs-e10s: QHPrxmE0QV6KcNqjY5scig
+ test-linux64-shippable-qr/opt-talos-dromaeojs-fis-e10s: EWRYqBF6Ti6nylPyGPdXTg
+ test-linux64-shippable-qr/opt-talos-g1-e10s: UW7Qf4ceTxewaJlghef5YA
+ test-linux64-shippable-qr/opt-talos-g1-fis-e10s: XtpHHg5VQeayORkvHBH-3g
+ test-linux64-shippable-qr/opt-talos-g3-e10s: Nc7T5hZLSjeBuJx5zt49LQ
+ test-linux64-shippable-qr/opt-talos-g3-fis-e10s: ImDBnFkqQR2Aykk6BdG9NQ
+ test-linux64-shippable-qr/opt-talos-g4-e10s: cLKtyuG0Q1u39iJMntSTag
+ test-linux64-shippable-qr/opt-talos-g4-fis-e10s: M3vCdK4IRXKXuyx4ZJqZxA
+ test-linux64-shippable-qr/opt-talos-g5-e10s: XDS0PbCCS3idiGC1ndLn-w
+ test-linux64-shippable-qr/opt-talos-g5-fis-e10s: ARWdyfKbTBqfnAW9QShBkA
+ test-linux64-shippable-qr/opt-talos-other-e10s: VU4K6tisSF-XNweZFM6Esg
+ test-linux64-shippable-qr/opt-talos-other-fis-e10s: MRw5EmQLTPKIc0uTY_QIzQ
+ test-linux64-shippable-qr/opt-talos-perf-reftest-e10s: CikiN2czSUu5Q4SVLN29mA
+ test-linux64-shippable-qr/opt-talos-perf-reftest-fis-e10s: eceogPpcRwa_aAul6K1vnw
+ test-linux64-shippable-qr/opt-talos-perf-reftest-singletons-e10s: T1c4AhrARsSA42XY8eFkGw
+ test-linux64-shippable-qr/opt-talos-perf-reftest-singletons-fis-e10s: U92Br9n_ST-5wKPjpTQQPA
+ test-linux64-shippable-qr/opt-talos-realworld-webextensions-e10s: Wg11Sz6uQgOWd_0KDFf-Cw
+ test-linux64-shippable-qr/opt-talos-realworld-webextensions-fis-e10s: ZGyUW9-lR7SRcEEuRv5c-Q
+ test-linux64-shippable-qr/opt-talos-sessionrestore-many-windows-e10s: U_DFmkf9TIqgi1eIgH1GhQ
+ test-linux64-shippable-qr/opt-talos-sessionrestore-many-windows-fis-e10s: ayMfpP_fRZu-6aRlVpCFfw
+ test-linux64-shippable-qr/opt-talos-svgr-e10s: SBOswgdUQHW2zVoWEbTMXw
+ test-linux64-shippable-qr/opt-talos-svgr-fis-e10s: W2lWpfyTQJSuBkzCO90OAw
+ test-linux64-shippable-qr/opt-talos-tabswitch-e10s: ZvwcU-oIQM2xDZCGeMK5lg
+ test-linux64-shippable-qr/opt-talos-tabswitch-fis-e10s: O2HrKmJTQsWbabiiNMl8XQ
+ test-linux64-shippable-qr/opt-talos-tp5o-e10s: FvmPaxlMR52Q6TTK5i4-Eg
+ test-linux64-shippable-qr/opt-talos-tp5o-fis-e10s: b1NfnvTsSkauyOLYUUi20w
+ test-linux64-shippable-qr/opt-talos-webgl-e10s: Hkbeg58LTre6dDLhFN-pWQ
+ test-linux64-shippable-qr/opt-talos-webgl-fis-e10s: exsGgwP-TkC6fwdSUEVjDg
+ test-linux64-shippable-qr/opt-web-platform-tests-wdspec-e10s-1: L77vVfc2QB2RSRM74kpaiA
+ test-linux64-shippable-qr/opt-web-platform-tests-wdspec-e10s-2: c2c_ri3ZQfqlnkMN0YhvxQ
+ test-linux64-shippable-qr/opt-web-platform-tests-wdspec-e10s-3: AnXLQgMXTYS_iNSG8pSdEg
+ test-linux64-shippable/opt-browsertime-tp6-chrome-cold-amazon-e10s: Jn78r1IARyKR35zF-pPKHA
+ test-linux64-shippable/opt-browsertime-tp6-firefox-amazon-e10s: Z9_Pq1ZOSWyWxc_0Y1LHLg
+ test-linux64-shippable/opt-browsertime-tp6-firefox-cold-amazon-e10s: MqeQ_SLrT6ejaXDJ35DGyQ
+ test-linux64-shippable/opt-browsertime-tp6-profiling-firefox-amazon-e10s: FHT8hVKNSBaxYNaSQ2xGZA
+ test-linux64-shippable/opt-browsertime-tp6-profiling-firefox-cold-amazon-e10s: SI1CehCuTpiB1aYI6SL6kw
+ test-linux64-shippable/opt-marionette-e10s: Cmc-rSb0S6G1P3KpqN3_iw
+ test-linux64-shippable/opt-raptor-ares6-firefox-e10s: VJ1LQ85XQha3iZKMZiMZhg
+ test-linux64-shippable/opt-raptor-ares6-firefox-profiling-e10s: fxzQA_gDToaHyToKju-6dg
+ test-linux64-shippable/opt-raptor-assorted-dom-firefox-e10s: X8-cj0lIQYiI0aKPO72PNw
+ test-linux64-shippable/opt-raptor-assorted-dom-firefox-profiling-e10s: Zm5FPl9OQyCceZlCgbLv-w
+ test-linux64-shippable/opt-raptor-jetstream2-firefox-e10s: XRotk7-JS2KDjBRbaTJBug
+ test-linux64-shippable/opt-raptor-jetstream2-firefox-profiling-e10s: O-8RF_w4SDWOgwA00X59Hw
+ test-linux64-shippable/opt-raptor-motionmark-animometer-firefox-e10s: QvU40WshSTW25kTlaj5GlA
+ test-linux64-shippable/opt-raptor-motionmark-animometer-firefox-profiling-e10s: RT1oOj7hRbSzeU6SJ4QQKg
+ test-linux64-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: Y5zQY_NKQcCkoGrMfNOC0g
+ test-linux64-shippable/opt-raptor-motionmark-htmlsuite-firefox-profiling-e10s: e6YvCwNHQoK86pbPoNLcEQ
+ test-linux64-shippable/opt-raptor-speedometer-firefox-e10s: OvT5xruGRhS1zZYPObVHJQ
+ test-linux64-shippable/opt-raptor-speedometer-firefox-profiling-e10s: T3I5Q1JjQVSrEQ4KsDwFRw
+ test-linux64-shippable/opt-raptor-stylebench-firefox-e10s: VGRFJ1GLQb2GFPKtMj1h-A
+ test-linux64-shippable/opt-raptor-stylebench-firefox-profiling-e10s: B42AwCjrQyi33Ht2GgNR3g
+ test-linux64-shippable/opt-raptor-sunspider-firefox-e10s: KbmHks2_RQOJUPad2rZgmg
+ test-linux64-shippable/opt-raptor-sunspider-firefox-profiling-e10s: f1elsQ2TSBCSNzBjnBCRlw
+ test-linux64-shippable/opt-raptor-tp6-1-firefox-cold-e10s: QzPL0X_zRZijgG_KSAQDrQ
+ test-linux64-shippable/opt-raptor-tp6-1-firefox-e10s: Ki13O8lkSneklZm_P5qB4A
+ test-linux64-shippable/opt-raptor-tp6-1-firefox-profiling-e10s: Q09OINsfRL-1C4-Oqd440A
+ test-linux64-shippable/opt-raptor-tp6-10-firefox-cold-e10s: CCsXFKI1TKiFAEgroQEmEw
+ test-linux64-shippable/opt-raptor-tp6-10-firefox-e10s: BwOJPP1CQOSmMjRTweP_eA
+ test-linux64-shippable/opt-raptor-tp6-10-firefox-profiling-e10s: PEQxDN7kQFenoK77w0e3HQ
+ test-linux64-shippable/opt-raptor-tp6-11-firefox-cold-e10s: eN5uTeP_Q0KH2IcQ2ZdG0A
+ test-linux64-shippable/opt-raptor-tp6-12-firefox-cold-e10s: EZM1hg5FTrCP2UN7cVoxpw
+ test-linux64-shippable/opt-raptor-tp6-13-firefox-cold-e10s: TfSSTYKRRhmaagMuawTd2Q
+ test-linux64-shippable/opt-raptor-tp6-14-firefox-cold-e10s: ahuFY5-sSRiqyAX1qXOgcg
+ test-linux64-shippable/opt-raptor-tp6-15-firefox-cold-e10s: Mo1Qb9nIQYSyrSfayqRJ6A
+ test-linux64-shippable/opt-raptor-tp6-16-firefox-cold-e10s: H1gFU5waQVu3QXshxvEx7g
+ test-linux64-shippable/opt-raptor-tp6-17-firefox-cold-e10s: F6VLytETQjSND6lV24l6AA
+ test-linux64-shippable/opt-raptor-tp6-18-firefox-cold-e10s: PsOUAP6JSSmIQkM1iTQ21w
+ test-linux64-shippable/opt-raptor-tp6-19-firefox-cold-e10s: HxfKdkIbQNe0dAYIO_OfVA
+ test-linux64-shippable/opt-raptor-tp6-2-firefox-cold-e10s: cUMUkUytTWGQKgTzf8L22g
+ test-linux64-shippable/opt-raptor-tp6-2-firefox-e10s: TM09ORmIRRCRsvW1Pw4qGQ
+ test-linux64-shippable/opt-raptor-tp6-2-firefox-profiling-e10s: GHko2ntQRNWU96HJdCk5fA
+ test-linux64-shippable/opt-raptor-tp6-20-firefox-cold-e10s: Sm4RyjPGQjintYSaa1ZIGA
+ test-linux64-shippable/opt-raptor-tp6-21-firefox-cold-e10s: U-bLNTLiRfSZ-aY8CySH8w
+ test-linux64-shippable/opt-raptor-tp6-22-firefox-cold-e10s: c2-3j2OfSNabw4E-eO3_-w
+ test-linux64-shippable/opt-raptor-tp6-23-firefox-cold-e10s: SulDXv5xTVG3cLI0dKP3Fg
+ test-linux64-shippable/opt-raptor-tp6-24-firefox-cold-e10s: GYLDaWBJRuSRx7INsx5Oyg
+ test-linux64-shippable/opt-raptor-tp6-25-firefox-cold-e10s: Eq4-u5OYQPiL_CzgpgPgIg
+ test-linux64-shippable/opt-raptor-tp6-26-firefox-cold-e10s: Nx29iyNERPebo5cuh0xPkw
+ test-linux64-shippable/opt-raptor-tp6-27-firefox-cold-e10s: N-Agboq3Q2GibluUXE0zQA
+ test-linux64-shippable/opt-raptor-tp6-28-firefox-cold-e10s: DabIlzoQSTi_i0fPgfGxuA
+ test-linux64-shippable/opt-raptor-tp6-29-firefox-cold-e10s: SXW-RzL0RXe_wYyg6GBV_g
+ test-linux64-shippable/opt-raptor-tp6-3-firefox-cold-e10s: XTICN29iShSt-pNWRHFJ_Q
+ test-linux64-shippable/opt-raptor-tp6-3-firefox-e10s: IAjRnrODQTGQs23jwckinw
+ test-linux64-shippable/opt-raptor-tp6-3-firefox-profiling-e10s: R5nDTUKlRuOjxN-AQBt4Og
+ test-linux64-shippable/opt-raptor-tp6-30-firefox-cold-e10s: dnYNWOi0QZ6YXkJCQX3jKg
+ test-linux64-shippable/opt-raptor-tp6-4-firefox-cold-e10s: TtS_b_0wQ6mAoqFf_Jgeuw
+ test-linux64-shippable/opt-raptor-tp6-4-firefox-e10s: UNtGqtmoQhyfYvnHFW5vxA
+ test-linux64-shippable/opt-raptor-tp6-4-firefox-profiling-e10s: WkJ1eQ4GRY-BP3ckkfuyog
+ test-linux64-shippable/opt-raptor-tp6-5-firefox-cold-e10s: OhPZWZlGRHq03Sf1IePgvw
+ test-linux64-shippable/opt-raptor-tp6-5-firefox-e10s: Po_L_miKT42nkgp3fxHWKA
+ test-linux64-shippable/opt-raptor-tp6-5-firefox-profiling-e10s: Vg19eyIOSTyjl3lQFXSeag
+ test-linux64-shippable/opt-raptor-tp6-6-firefox-cold-e10s: TZ4MAoPjRUiyfeRRYQctAg
+ test-linux64-shippable/opt-raptor-tp6-6-firefox-e10s: dLg0qHJPS_a8wHixqDnjog
+ test-linux64-shippable/opt-raptor-tp6-6-firefox-profiling-e10s: f83wNfXoTaSoLO2bqMmnHA
+ test-linux64-shippable/opt-raptor-tp6-7-firefox-cold-e10s: ds4ZAxsbRxiQ27ISwy83-g
+ test-linux64-shippable/opt-raptor-tp6-7-firefox-e10s: e5nOJ43eSHesDJy-vhn89g
+ test-linux64-shippable/opt-raptor-tp6-7-firefox-profiling-e10s: bSHIBENgRpuz9queQBOtdQ
+ test-linux64-shippable/opt-raptor-tp6-8-firefox-cold-e10s: aI2Swap4SACSYZK4bEzwiw
+ test-linux64-shippable/opt-raptor-tp6-8-firefox-e10s: CnGv7qRIS1OfSZxiDCZwmw
+ test-linux64-shippable/opt-raptor-tp6-8-firefox-profiling-e10s: UrOXwfPMQ569athYvd6FGg
+ test-linux64-shippable/opt-raptor-tp6-9-firefox-cold-e10s: LH5xawgJTTGDSjcN4fdbSA
+ test-linux64-shippable/opt-raptor-tp6-9-firefox-e10s: Amnq7jMFQoqhPrIby3eFIg
+ test-linux64-shippable/opt-raptor-tp6-9-firefox-profiling-e10s: er0ea9XYRa23sdvVfSceWQ
+ test-linux64-shippable/opt-raptor-tp6-binast-1-firefox-e10s: Scuoy1zPQPKl1Auj6XL4SQ
+ test-linux64-shippable/opt-raptor-unity-webgl-firefox-e10s: UH9aSPAMRhqScC883PNHkw
+ test-linux64-shippable/opt-raptor-unity-webgl-firefox-profiling-e10s: dIErITDnR2eGDh5qlfYhMg
+ test-linux64-shippable/opt-raptor-wasm-godot-baseline-firefox-e10s: dnlZHfdyQVec-HFoJQt-Ng
+ test-linux64-shippable/opt-raptor-wasm-godot-baseline-firefox-profiling-e10s: YFR5RuvBSSyhDLqz9YqC1w
+ test-linux64-shippable/opt-raptor-wasm-godot-cranelift-firefox-e10s: SOeFVMULR82etHugmz2ulA
+ test-linux64-shippable/opt-raptor-wasm-godot-cranelift-firefox-profiling-e10s: c_fJeFLKRHOgL5mJ0__lgA
+ test-linux64-shippable/opt-raptor-wasm-godot-firefox-e10s: b-asIQkoQpSPs_0RdlJ0JA
+ test-linux64-shippable/opt-raptor-wasm-godot-firefox-profiling-e10s: DuonX8PRQcattS5DYEutpQ
+ test-linux64-shippable/opt-raptor-wasm-godot-ion-firefox-e10s: bMHfgEIDRk6nHJEG7V07tw
+ test-linux64-shippable/opt-raptor-wasm-godot-ion-firefox-profiling-e10s: cQ0TnwDEQMe9whWpajncpA
+ test-linux64-shippable/opt-raptor-wasm-misc-baseline-firefox-e10s: UxV7GPISSCeLeK8MjfxwUw
+ test-linux64-shippable/opt-raptor-wasm-misc-baseline-firefox-profiling-e10s: PWcVxJJ2Tnm46X-MpSSSjA
+ test-linux64-shippable/opt-raptor-wasm-misc-cranelift-firefox-e10s: XDbFSmLkSrCwgcVJVgLSLA
+ test-linux64-shippable/opt-raptor-wasm-misc-firefox-e10s: BBYmEYTqTJO9WIma4yG2EQ
+ test-linux64-shippable/opt-raptor-wasm-misc-firefox-profiling-e10s: FKORX-o5Sbis1ylACblxxA
+ test-linux64-shippable/opt-raptor-wasm-misc-ion-firefox-e10s: Ni-au9LSRi-xGhGttVClDQ
+ test-linux64-shippable/opt-raptor-wasm-misc-ion-firefox-profiling-e10s: cEGIzPUUQLipb4o9pHTNEw
+ test-linux64-shippable/opt-raptor-webaudio-firefox-e10s: fXD185buSliTUug5-VbonA
+ test-linux64-shippable/opt-raptor-webaudio-firefox-profiling-e10s: IUPFVnRgQeqv7t_0zMd2lQ
+ test-linux64-shippable/opt-raptor-youtube-playback-firefox-e10s: OaVR8q_YSH2b43BzYw0ELQ
+ test-linux64-shippable/opt-raptor-youtube-playback-firefox-profiling-e10s: VvvBIsoRRUaElgFpzxvueQ
+ test-linux64-shippable/opt-talos-bcv-e10s: EkEnJe_ZQrOVTD_THmn6Pw
+ test-linux64-shippable/opt-talos-bcv-profiling-e10s: bjLSzbm4R9Kf5LKYhfr2gg
+ test-linux64-shippable/opt-talos-chrome-e10s: fkJDiBP2SOyQ2l57HVzYUw
+ test-linux64-shippable/opt-talos-chrome-profiling-e10s: cPGQjThWSGmrI7CLHwP8_g
+ test-linux64-shippable/opt-talos-damp-e10s: JPZMIeOMSLGQpAMJFWQ_QQ
+ test-linux64-shippable/opt-talos-dromaeojs-e10s: X77YW5XZTvK_OT2Uhgck6A
+ test-linux64-shippable/opt-talos-dromaeojs-profiling-e10s: E0t7Tdz-QUGkaYXWq0itLg
+ test-linux64-shippable/opt-talos-g1-e10s: Z8FpaR0yR-aMKJ6C3rSA8Q
+ test-linux64-shippable/opt-talos-g1-profiling-e10s: eAU0Fq_QRUWJMPQdkWZD5g
+ test-linux64-shippable/opt-talos-g3-e10s: GfBf46_7TUmLzQKlb782Qw
+ test-linux64-shippable/opt-talos-g3-profiling-e10s: GcQ9Pa87RkufjoRzX9tjBw
+ test-linux64-shippable/opt-talos-g4-e10s: GztmJ_HWRXaasFILAjzirQ
+ test-linux64-shippable/opt-talos-g4-profiling-e10s: C7K01fmZQ_mgYAxWpOOOfw
+ test-linux64-shippable/opt-talos-g5-e10s: RjxJkykwTtyDiKzzpftbdw
+ test-linux64-shippable/opt-talos-g5-profiling-e10s: YHIXhi8nRa2Csb4AEH3alw
+ test-linux64-shippable/opt-talos-motionmark-profiling-e10s: DSLHDAjNT7KX_PNtBZCMTA
+ test-linux64-shippable/opt-talos-other-e10s: MLmuQdj5T9mdONNXfsHWag
+ test-linux64-shippable/opt-talos-other-profiling-e10s: fPZrGfytQIO9P3cXEUU_pg
+ test-linux64-shippable/opt-talos-perf-reftest-e10s: SoD2mGdhRrGjFYWY2SOZxg
+ test-linux64-shippable/opt-talos-perf-reftest-profiling-e10s: DCYIajR8QdimIl1E8GDV4Q
+ test-linux64-shippable/opt-talos-perf-reftest-singletons-e10s: XbWX3XXASneY4R_Xm4OCEg
+ test-linux64-shippable/opt-talos-perf-reftest-singletons-profiling-e10s: PE-VlDF3SKqKJEd1RDRfVw
+ test-linux64-shippable/opt-talos-realworld-webextensions-e10s: EHenMLZ2T0yY5G2SnKCXIw
+ test-linux64-shippable/opt-talos-realworld-webextensions-profiling-e10s: OerJ7qpjS4uTG-AXNWKjRA
+ test-linux64-shippable/opt-talos-sessionrestore-many-windows-e10s: eTTit4OPRH-ooBk2oiZ_xw
+ test-linux64-shippable/opt-talos-sessionrestore-many-windows-profiling-e10s: DmcreMX5SWeyZizayIcU6A
+ test-linux64-shippable/opt-talos-svgr-e10s: b-qshpBeRe2cfx-9nYX4Cw
+ test-linux64-shippable/opt-talos-svgr-profiling-e10s: MCyOJyKMSPSCTpMARX8sWA
+ test-linux64-shippable/opt-talos-tabswitch-e10s: baC3x-uWTvmUh9gLOIkL8w
+ test-linux64-shippable/opt-talos-tabswitch-profiling-e10s: LnEfmO3XRX2SFKwvdJiNZQ
+ test-linux64-shippable/opt-talos-tp5o-e10s: SSwpl4UQRyir7Rkh38PBHw
+ test-linux64-shippable/opt-talos-tp5o-profiling-e10s: AYpay9M3RWyfT96OUbh-7w
+ test-linux64-shippable/opt-talos-webgl-e10s: ZSsreUztQLOLY4Mt-pw4OA
+ test-linux64-shippable/opt-web-platform-tests-wdspec-e10s-1: TGVXnkNmQY21H5tgr2FVgA
+ test-linux64-shippable/opt-web-platform-tests-wdspec-e10s-2: ZGOTYSmhQ5uTcUcCuwDRLQ
+ test-linux64-shippable/opt-web-platform-tests-wdspec-e10s-3: RsCtn0EGQWSazuZzRVDsMw
+ test-linux64-tsan/opt-mochitest-e10s-1: NswlJaTnRrKnc24cxoqb0A
+ test-linux64-tsan/opt-mochitest-e10s-10: Sh0o4uKaTNaitbkwauNrPw
+ test-linux64-tsan/opt-mochitest-e10s-11: dJYpQohYRzmbcr7i3GqVew
+ test-linux64-tsan/opt-mochitest-e10s-12: cy1l0t2RRDOZY9mHpuwuwg
+ test-linux64-tsan/opt-mochitest-e10s-13: E98hBl86RCyXwq9pjzE-iw
+ test-linux64-tsan/opt-mochitest-e10s-14: MNgt3SINSrGCXNTP300DFw
+ test-linux64-tsan/opt-mochitest-e10s-15: C6MG48SHQui3Ff9AVnIm0Q
+ test-linux64-tsan/opt-mochitest-e10s-16: dGxQwibHT4G3itHWmrn_Wg
+ test-linux64-tsan/opt-mochitest-e10s-17: DrQjFj9ITp6qAkZp-HlWXA
+ test-linux64-tsan/opt-mochitest-e10s-18: Zrw7MkrySgmDVuIAw9GITA
+ test-linux64-tsan/opt-mochitest-e10s-19: cT_6iiScTNCnEowUw28tNQ
+ test-linux64-tsan/opt-mochitest-e10s-2: WeVZeEchQXC0iuJGhIaEVw
+ test-linux64-tsan/opt-mochitest-e10s-20: fxQ8_upETFqByMImrWQHTA
+ test-linux64-tsan/opt-mochitest-e10s-3: LvqmkJ2fTGWAzy-6LkMdRQ
+ test-linux64-tsan/opt-mochitest-e10s-4: HpfK47N6QiiW0M7nLgNzhQ
+ test-linux64-tsan/opt-mochitest-e10s-5: VFHf5QycRViKLXqNOk-Rzw
+ test-linux64-tsan/opt-mochitest-e10s-6: P_RddXsQQaWxslUfsNam5g
+ test-linux64-tsan/opt-mochitest-e10s-7: JrdP_sR_RYabEZiMScFUAA
+ test-linux64-tsan/opt-mochitest-e10s-8: FasBFJp5TbOXbanpszrW0A
+ test-linux64-tsan/opt-mochitest-e10s-9: fk6-MZYXSBODw-Ozvfg_1A
+ test-linux64-tsan/opt-xpcshell-e10s-1: LY7VZ_R4S3aa8HMU3tYNIA
+ test-linux64-tsan/opt-xpcshell-e10s-2: fVIjNap0SoSt0LSDAOjaZA
+ test-linux64-tsan/opt-xpcshell-e10s-3: LwKL4CdaR8uhfJIs_yUC2Q
+ test-linux64-tsan/opt-xpcshell-e10s-4: BStjpRqKTDaxCrXG2_BUtw
+ test-linux64-tsan/opt-xpcshell-e10s-5: EqXEaR_3RwiJlxjedpWUVw
+ test-linux64-tsan/opt-xpcshell-e10s-6: MGAdFxrWQ_GWoIbQJKe_aA
+ test-linux64-tsan/opt-xpcshell-e10s-7: C_nG8UA6RI6-nCkxcvHqQw
+ test-linux64-tsan/opt-xpcshell-e10s-8: HNpzT6tbSYm4fquPRVOXbQ
+ test-linux64/debug-marionette-e10s: BsfYhAJRTNKQpjfHkL6H9w
+ test-linux64/debug-web-platform-tests-wdspec-e10s-1: UEmuQTogQ-qk-Dy8v5VoMQ
+ test-linux64/debug-web-platform-tests-wdspec-e10s-2: PMFqv6TUSWKGOrOh9fJxfg
+ test-linux64/debug-web-platform-tests-wdspec-e10s-3: dIfU8U6MTYqRKsFD7k8qiQ
+ test-linux64/opt-marionette-e10s: IiPwXuQ6RMmVcJ_NSeWu9w
+ test-linux64/opt-raptor-ares6-firefox-e10s: QLZo03KaRDyVaSywo14Vfg
+ test-linux64/opt-raptor-assorted-dom-firefox-e10s: Y3eV2BGGQFC-Ix_TkpqBFw
+ test-linux64/opt-raptor-jetstream2-firefox-e10s: XKM92pFETVKkkH2yDoDb8g
+ test-linux64/opt-raptor-motionmark-animometer-firefox-e10s: WZO_R-6jR_mG1iaNsN5vFg
+ test-linux64/opt-raptor-motionmark-htmlsuite-firefox-e10s: Sv0NnM0aSPy5n8tuSjz1Jw
+ test-linux64/opt-raptor-speedometer-firefox-e10s: AFWltKXETlG8s5Lo_PWM-w
+ test-linux64/opt-raptor-stylebench-firefox-e10s: Gf28RtlTQSqLh_DSa0lEzA
+ test-linux64/opt-raptor-sunspider-firefox-e10s: YtXjyrrCRS27KdWO1ArhgQ
+ test-linux64/opt-raptor-tp6-1-firefox-cold-e10s: GxKS6c-mQzWDptU5mR4asA
+ test-linux64/opt-raptor-tp6-1-firefox-e10s: ApLAGCnsSJOESU_zWtaMiw
+ test-linux64/opt-raptor-tp6-10-firefox-cold-e10s: B11czWKwSKuxXNtXb0cPrQ
+ test-linux64/opt-raptor-tp6-10-firefox-e10s: c_Vcv4G9RiKO5sLcLzdqGA
+ test-linux64/opt-raptor-tp6-11-firefox-cold-e10s: ZFC8-NSUT0WAHXyARPeHkw
+ test-linux64/opt-raptor-tp6-12-firefox-cold-e10s: SGTw0EytRAWi3giUejY7JA
+ test-linux64/opt-raptor-tp6-13-firefox-cold-e10s: Iyuss-76QkGMSJEszIc8Rg
+ test-linux64/opt-raptor-tp6-14-firefox-cold-e10s: BQKRxBytSUydeyIs7B3nGQ
+ test-linux64/opt-raptor-tp6-15-firefox-cold-e10s: C1AjkrEOTFqQK16ppPpQ5Q
+ test-linux64/opt-raptor-tp6-16-firefox-cold-e10s: Rrg75-4qQK6cDKDXieGINA
+ test-linux64/opt-raptor-tp6-17-firefox-cold-e10s: JAjrAtUQRPa4TE0d7Q_VTw
+ test-linux64/opt-raptor-tp6-18-firefox-cold-e10s: JXvDlTSQTx6IWsd_15cukA
+ test-linux64/opt-raptor-tp6-19-firefox-cold-e10s: RdCvUN9wSGKTCcSt8OPOuw
+ test-linux64/opt-raptor-tp6-2-firefox-cold-e10s: JmGutBUhS0-B-x71gr2bAA
+ test-linux64/opt-raptor-tp6-2-firefox-e10s: C0dUiXxyQ-Kj7JqMXsRmjQ
+ test-linux64/opt-raptor-tp6-20-firefox-cold-e10s: PW5TZkeKQSatPcJJ8DuYwg
+ test-linux64/opt-raptor-tp6-21-firefox-cold-e10s: YA0RewM9Q6aQZiRhECoaKg
+ test-linux64/opt-raptor-tp6-22-firefox-cold-e10s: Fo1v-gq2T86gybH40FaC_A
+ test-linux64/opt-raptor-tp6-23-firefox-cold-e10s: UWSduq70R4KHkFKICw7_tg
+ test-linux64/opt-raptor-tp6-24-firefox-cold-e10s: Lm7RuEIFT0OFFtuL_oWyLw
+ test-linux64/opt-raptor-tp6-25-firefox-cold-e10s: GvJbhEYJSfGR2L_TjTTbvA
+ test-linux64/opt-raptor-tp6-26-firefox-cold-e10s: MXr_P2voRFaNWYWMu4GWwQ
+ test-linux64/opt-raptor-tp6-27-firefox-cold-e10s: Zb-KFdfcSuOqZbXcZPD1mg
+ test-linux64/opt-raptor-tp6-28-firefox-cold-e10s: epXJwh6dTP2JQ812S6fThw
+ test-linux64/opt-raptor-tp6-29-firefox-cold-e10s: EaI1575ZRNSw6NJciFK5Jg
+ test-linux64/opt-raptor-tp6-3-firefox-cold-e10s: Si1Ge_bnSpi0UYImefNueg
+ test-linux64/opt-raptor-tp6-3-firefox-e10s: T84cP3eGSN6PklZ6_PTrNw
+ test-linux64/opt-raptor-tp6-30-firefox-cold-e10s: d-AQG9mMQ-CeHSAWBFI6VA
+ test-linux64/opt-raptor-tp6-4-firefox-cold-e10s: FaUU-MRbQiqXRXBnT1IUEw
+ test-linux64/opt-raptor-tp6-4-firefox-e10s: PHwHE-asQ_qiHAH6VJ3LLg
+ test-linux64/opt-raptor-tp6-5-firefox-cold-e10s: Y3yvn3z8SSiWjo8-Ok4I2Q
+ test-linux64/opt-raptor-tp6-5-firefox-e10s: MGAX-w3ARNGv_jz0Q0lptQ
+ test-linux64/opt-raptor-tp6-6-firefox-cold-e10s: JCNEcMcjTziPEUiWDJKJRA
+ test-linux64/opt-raptor-tp6-6-firefox-e10s: IXt5klkYTMecL9oxcEiuYQ
+ test-linux64/opt-raptor-tp6-7-firefox-cold-e10s: C2mN_IlHQRKT63gTAyxK6g
+ test-linux64/opt-raptor-tp6-7-firefox-e10s: WNpGllm4QVeZ4eigVDm_Lg
+ test-linux64/opt-raptor-tp6-8-firefox-cold-e10s: f8PEESldTk65FRdfG0WeeA
+ test-linux64/opt-raptor-tp6-8-firefox-e10s: O2oRd832RGCksCAbsGAm1w
+ test-linux64/opt-raptor-tp6-9-firefox-cold-e10s: BLnH8-1ZRGqneHNKXB07tw
+ test-linux64/opt-raptor-tp6-9-firefox-e10s: f_CVBA-AQYu7uC7DPjae3w
+ test-linux64/opt-raptor-tp6-binast-1-firefox-e10s: Tmk_KdNSSey9jvcDKuN2iQ
+ test-linux64/opt-raptor-unity-webgl-firefox-e10s: QH0km9tRR9ehHNnPYPhKIQ
+ test-linux64/opt-raptor-wasm-godot-baseline-firefox-e10s: V6sUoQNLTh-Wq9808oc1pA
+ test-linux64/opt-raptor-wasm-godot-cranelift-firefox-e10s: AqsFshRcSoaFbc_0LqKOuQ
+ test-linux64/opt-raptor-wasm-godot-firefox-e10s: eCZ2DJbVQYaCo-wtv6IQ8w
+ test-linux64/opt-raptor-wasm-godot-ion-firefox-e10s: J4raHJ1sQN-3LYlUBndcWw
+ test-linux64/opt-raptor-wasm-misc-baseline-firefox-e10s: W1RWXGuwRVaU6zoAStfL-A
+ test-linux64/opt-raptor-wasm-misc-cranelift-firefox-e10s: bkI0lJK_SIGgxE79JVWPBg
+ test-linux64/opt-raptor-wasm-misc-firefox-e10s: BICrs0dYT3mZr9K4sI9l0Q
+ test-linux64/opt-raptor-wasm-misc-ion-firefox-e10s: fawYpVtaSiGxsK41E6T2Iw
+ test-linux64/opt-raptor-webaudio-firefox-e10s: PXrw4cObTVm08ykDx50mZw
+ test-linux64/opt-raptor-youtube-playback-firefox-e10s: VlfyjS6JRmG09yeBY0PSIw
+ test-linux64/opt-talos-bcv-e10s: Ay8yMMyERe-zFgCKvdEKVg
+ test-linux64/opt-talos-chrome-e10s: TPpI4NUZTX2KISiNTECneQ
+ test-linux64/opt-talos-damp-e10s: MdorZUfxSvKm3BCIEIg4lQ
+ test-linux64/opt-talos-dromaeojs-e10s: WEvrUccjRFapOxKmuJCoWw
+ test-linux64/opt-talos-g1-e10s: Wh16qsINQTSL1J3fv4Xm7g
+ test-linux64/opt-talos-g3-e10s: AbJj_8xSSvibIvitur0C_A
+ test-linux64/opt-talos-g4-e10s: FDD0cBQ3Q6KLwTEVgvrgHw
+ test-linux64/opt-talos-g5-e10s: ImuBk0QtTFqmkL9PmcYigQ
+ test-linux64/opt-talos-other-e10s: eWVflALpTEaFitWIUwp2ug
+ test-linux64/opt-talos-perf-reftest-e10s: Q8WWDqhnRROv4PPNj0LMXw
+ test-linux64/opt-talos-perf-reftest-singletons-e10s: V2cOMHWpQWGDUMdWHjVHGw
+ test-linux64/opt-talos-realworld-webextensions-e10s: cYtkvnpNQuO6Q4UwYLO0Qg
+ test-linux64/opt-talos-sessionrestore-many-windows-e10s: KngWSkFmQAyIWcO9jurlmw
+ test-linux64/opt-talos-svgr-e10s: S2UV5jC1Ty2nq9mfcPOcHg
+ test-linux64/opt-talos-tabswitch-e10s: eL6246JYSrC-7Imom9EfIw
+ test-linux64/opt-talos-tp5o-e10s: dlZ0olWwTZ2Pg4bZLW5_qA
+ test-linux64/opt-talos-webgl-e10s: ESesw8aZRzyAfB6B1mmNkA
+ test-linux64/opt-web-platform-tests-wdspec-e10s-1: GCer21pWRiOXWEiEyl1_mw
+ test-linux64/opt-web-platform-tests-wdspec-e10s-2: c3zGl7-VTza3LQl-WiTwog
+ test-linux64/opt-web-platform-tests-wdspec-e10s-3: NAs0uIkfQXOjbmP3OzYY5A
+ test-macosx1014-64-qr/debug-crashtest-e10s: F5Lc_zXEQPiGRonaC99fQg
+ test-macosx1014-64-qr/debug-reftest-e10s-1: ZBb1BAjSSRa7-PkejtlxcA
+ test-macosx1014-64-qr/debug-reftest-e10s-2: WMc-SSbZT6egmcsbR9vOfQ
+ test-macosx1014-64-qr/debug-reftest-e10s-3: a0amb-ImR1WILJ3Kbnj8CQ
+ test-macosx1014-64-qr/debug-reftest-e10s-4: XNAyEocLRxSX92ZuSn02rg
+ test-macosx1014-64-qr/debug-reftest-e10s-5: PPLuFPfOR8ykuvMVcZ-Maw
+ test-macosx1014-64-qr/debug-reftest-e10s-6: IoEF9i8PTm6kZQBeaGKBtA
+ test-macosx1014-64-shippable-qr/opt-crashtest-e10s: NpgRV8YlTQmql8Zfl_huUQ
+ test-macosx1014-64-shippable-qr/opt-reftest-e10s-1: DJy-tZuLSKC0GhqqFKwsUA
+ test-macosx1014-64-shippable-qr/opt-reftest-e10s-2: FvXmQptbQCycstJ470IX5w
+ test-macosx1014-64-shippable-qr/opt-reftest-e10s-3: aFjCogMTSWCsGgmHqqacuA
+ test-macosx1014-64-shippable/opt-awsy-base-e10s: Tvi-6RlfSyuYmaOCw1DsWQ
+ test-macosx1014-64-shippable/opt-awsy-e10s: Jczkn7IBRziqIMrCgzvTRQ
+ test-macosx1014-64-shippable/opt-awsy-tp6-e10s: JyLWWC24RMitT9SyjKobrQ
+ test-macosx1014-64-shippable/opt-browser-screenshots-e10s: QIWDBfe9TUK6IuiWSA72Ig
+ test-macosx1014-64-shippable/opt-browsertime-tp6-chrome-cold-amazon-e10s: cWhVC_hST_Ch8HY7Z7suew
+ test-macosx1014-64-shippable/opt-browsertime-tp6-firefox-amazon-e10s: C2CwZD9sTGymW5hZICNwhw
+ test-macosx1014-64-shippable/opt-browsertime-tp6-firefox-cold-amazon-e10s: NiyYtLYyTdiuUXHXchy-dA
+ test-macosx1014-64-shippable/opt-browsertime-tp6-profiling-firefox-amazon-e10s: KQX78xfjSHC2ksF3fu-JFA
+ test-macosx1014-64-shippable/opt-browsertime-tp6-profiling-firefox-cold-amazon-e10s: FhxldskQSPS8SjiZT4spkg
+ test-macosx1014-64-shippable/opt-cppunit-1proc: CvPGCUD8TP6vR2W1nEBo0A
+ test-macosx1014-64-shippable/opt-crashtest-e10s: RYeaaUNOQNmpVmDCRBeOmg
+ test-macosx1014-64-shippable/opt-firefox-ui-functional-local-e10s: DLgY5p8fQR6pVFTYeYPNkw
+ test-macosx1014-64-shippable/opt-firefox-ui-functional-remote-e10s: ddn3of0ySOG67zucCGmLNA
+ test-macosx1014-64-shippable/opt-gtest-1proc: TtYcGYLtR0eBZ1rjNYVrfA
+ test-macosx1014-64-shippable/opt-jittest-1proc: PaXly2kuQ9uoz7ktPq5i0A
+ test-macosx1014-64-shippable/opt-jsreftest-e10s-1: ICXfqlFXQEmH7Mft9dNv7w
+ test-macosx1014-64-shippable/opt-jsreftest-e10s-2: GzGE-Ev6QiuS4abeNNnwCA
+ test-macosx1014-64-shippable/opt-marionette-e10s: VZUyUmxHS1CzkneQHMCjwg
+ test-macosx1014-64-shippable/opt-mochitest-a11y-1proc: TNLORvTIRqCUs0Ld2-jWHg
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-1: IED2fOc7RT6AO5AQka0Rog
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-2: YtxRKWnkQuSv6GdBXAQZ1g
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-3: MpNY_56pTaqvo1GVkh_SiA
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-4: MXtVB2LcTTiLhVVQmUe-bA
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-5: DAr9XS0CRC2B79GHNSlEoA
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-6: R1SfIqbkQ3inQs6utsyF4Q
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-7: UI1f9ohZQgi38RAZSyNAYQ
+ test-macosx1014-64-shippable/opt-mochitest-chrome-1proc-1: Fn_bCykqRq-_qH-eg26JJw
+ test-macosx1014-64-shippable/opt-mochitest-chrome-1proc-2: I-C7di2ZSdCcjD8stGIhfA
+ test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-1: SCveg2V_Tm-idCIjl8uIzQ
+ test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-2: IdOvjWnjR52rgptopkG6zQ
+ test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-3: O9lNdM76Q-S3MIYCo62ufg
+ test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-4: WTX2mtOiTN2C9R6PlrGx6Q
+ test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-5: M1-FlXSyTqSojQGpG0J5lw
+ test-macosx1014-64-shippable/opt-mochitest-e10s-1: fz9REd7WT2GVJUAUidlAIA
+ test-macosx1014-64-shippable/opt-mochitest-e10s-2: HBUVoCARS3i6DbalG2BXoA
+ test-macosx1014-64-shippable/opt-mochitest-e10s-3: BUq9cUykSa2-l25IGScUKQ
+ test-macosx1014-64-shippable/opt-mochitest-e10s-4: E87jE9PmRCmFh9UfkQ_Nlw
+ test-macosx1014-64-shippable/opt-mochitest-e10s-5: JIDVXFaATN-QqboP_1airw
+ test-macosx1014-64-shippable/opt-mochitest-gpu-e10s: SGGqREKxTXSmCmAeVawn_w
+ test-macosx1014-64-shippable/opt-mochitest-media-e10s-1: La_VT_uBTF2GmSCXm51A5g
+ test-macosx1014-64-shippable/opt-mochitest-media-e10s-2: L_72ka1_TT-nPEs07u4JDQ
+ test-macosx1014-64-shippable/opt-mochitest-media-spi-e10s-1: AgfN3ncHQ767WN5AkG420w
+ test-macosx1014-64-shippable/opt-mochitest-media-spi-e10s-2: KCSG_jZhScyCUawUA2zTKg
+ test-macosx1014-64-shippable/opt-mochitest-remote-e10s: GzcaTjfVSpeXLVurKpu2JQ
+ test-macosx1014-64-shippable/opt-mochitest-webgl1-core-e10s: UMelHyEpTuK3TcSK6aTsMg
+ test-macosx1014-64-shippable/opt-mochitest-webgl1-ext-e10s: COf-sIlNRjKlHRUXp2XxWg
+ test-macosx1014-64-shippable/opt-mochitest-webgl2-core-e10s: TKFnKdRVQ7-H2dsFuA4fDQ
+ test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-1: SbKkXyF6SCa_X0i6n5OhWA
+ test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-2: GJiV1UvzQimGbnxTIIBWOQ
+ test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-3: YXkQeRslTS62estDUjZWQg
+ test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-4: T0AcKcGoRnOTXiki70HLrw
+ test-macosx1014-64-shippable/opt-mochitest-webgpu-e10s: EuRiCjFdSby0Ybg-DzWlTw
+ test-macosx1014-64-shippable/opt-raptor-ares6-firefox-e10s: bRmbT-FPTE-yeqgpRZvU2w
+ test-macosx1014-64-shippable/opt-raptor-ares6-firefox-profiling-e10s: UMOEwximQGC74TeQ89fzUQ
+ test-macosx1014-64-shippable/opt-raptor-jetstream2-firefox-e10s: CC1Yy_bAT8-NtSKFF7QDfg
+ test-macosx1014-64-shippable/opt-raptor-jetstream2-firefox-profiling-e10s: JOBUV7t8SRGemKiKrbbulg
+ test-macosx1014-64-shippable/opt-raptor-motionmark-animometer-firefox-e10s: Frj-sQc8R-m7uBXX9ym9uw
+ test-macosx1014-64-shippable/opt-raptor-motionmark-animometer-firefox-profiling-e10s: SzG91SiHSwWGJkimAsspKA
+ test-macosx1014-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: dxivJGzzQsieSWNIHIdA0g
+ test-macosx1014-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-profiling-e10s: XKiR-Hf1REuq1-q4DbLPfg
+ test-macosx1014-64-shippable/opt-raptor-speedometer-firefox-e10s: DlLiI71hSa2F8bxOrC7YtA
+ test-macosx1014-64-shippable/opt-raptor-speedometer-firefox-profiling-e10s: TzTlnt9aTPCw7JwhM1nFMw
+ test-macosx1014-64-shippable/opt-raptor-stylebench-firefox-e10s: Mwr2gxyYSHSQB7Fs1gX81Q
+ test-macosx1014-64-shippable/opt-raptor-stylebench-firefox-profiling-e10s: JfJxPOjiStCFKu3gb_jLuA
+ test-macosx1014-64-shippable/opt-raptor-sunspider-firefox-e10s: FWA2X2nEToWBjBe057mdDw
+ test-macosx1014-64-shippable/opt-raptor-sunspider-firefox-profiling-e10s: GhV3XjY3Toa8-u3-g4CZBg
+ test-macosx1014-64-shippable/opt-raptor-tp6-1-firefox-cold-e10s: MFEL74SaRJq8Wwxi25sSxQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-1-firefox-e10s: CY3blSLMSseA-Q5mhBlOeg
+ test-macosx1014-64-shippable/opt-raptor-tp6-1-firefox-profiling-e10s: WIaguARSQ9ukXBzYQT5LCw
+ test-macosx1014-64-shippable/opt-raptor-tp6-10-firefox-cold-e10s: crBJ3EDZQnGtKBQfO7Kk7g
+ test-macosx1014-64-shippable/opt-raptor-tp6-10-firefox-e10s: DmjvO_20ReCxWBRNZIpEXA
+ test-macosx1014-64-shippable/opt-raptor-tp6-10-firefox-profiling-e10s: L0SRbg02STin3ZzDccR79Q
+ test-macosx1014-64-shippable/opt-raptor-tp6-11-firefox-cold-e10s: Jwq3refCRkuYab6IFLw-lw
+ test-macosx1014-64-shippable/opt-raptor-tp6-12-firefox-cold-e10s: PT25cnVjR3GoY7GVRxMeEA
+ test-macosx1014-64-shippable/opt-raptor-tp6-13-firefox-cold-e10s: UFp3khqfTqOps49Hi-p5jQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-14-firefox-cold-e10s: IxnlZc7PTYqAsymyrqp-fg
+ test-macosx1014-64-shippable/opt-raptor-tp6-15-firefox-cold-e10s: a27AruXUSL-WMbXHZQ9o4w
+ test-macosx1014-64-shippable/opt-raptor-tp6-16-firefox-cold-e10s: IbQFa6HITGGrWkK7hSRi-w
+ test-macosx1014-64-shippable/opt-raptor-tp6-17-firefox-cold-e10s: AAUafYPNTvulSKxwvwKAvg
+ test-macosx1014-64-shippable/opt-raptor-tp6-18-firefox-cold-e10s: cfn4KyIyQpG045J_W47Wgw
+ test-macosx1014-64-shippable/opt-raptor-tp6-19-firefox-cold-e10s: amPGFNbhSgGh65_jjR4fdg
+ test-macosx1014-64-shippable/opt-raptor-tp6-2-firefox-cold-e10s: G-Lv1Z8DToaDLlh80KFDhQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-2-firefox-e10s: alyvItLeSBawP8tcfA45lw
+ test-macosx1014-64-shippable/opt-raptor-tp6-2-firefox-profiling-e10s: OA11CGe3SWiAm7giY8rtJA
+ test-macosx1014-64-shippable/opt-raptor-tp6-20-firefox-cold-e10s: Wca6_7CKQGOu09TJ5y3HqA
+ test-macosx1014-64-shippable/opt-raptor-tp6-21-firefox-cold-e10s: epMwnoufQS-KP2-n80pDNw
+ test-macosx1014-64-shippable/opt-raptor-tp6-22-firefox-cold-e10s: LgzAdYObR7iWJNLCL2C1sg
+ test-macosx1014-64-shippable/opt-raptor-tp6-23-firefox-cold-e10s: XUsRtVuAQvmfnRzaTnZl5g
+ test-macosx1014-64-shippable/opt-raptor-tp6-24-firefox-cold-e10s: PP16oz2iR4m0cAQEqrGbzQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-25-firefox-cold-e10s: dqXhEh15RYWX9t7RZap46g
+ test-macosx1014-64-shippable/opt-raptor-tp6-26-firefox-cold-e10s: TwC3M6c2Q3KxRgswNhcJFQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-27-firefox-cold-e10s: blhJ0NhhRla_7wMWC1lOWQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-28-firefox-cold-e10s: VMZvknO4Sg-uWC3tdsfU1g
+ test-macosx1014-64-shippable/opt-raptor-tp6-29-firefox-cold-e10s: D77kKSBjQB6aUTwshF9SQg
+ test-macosx1014-64-shippable/opt-raptor-tp6-3-firefox-cold-e10s: aOkwxS8DQ36kdnJ27xDtjg
+ test-macosx1014-64-shippable/opt-raptor-tp6-3-firefox-e10s: PNqbPVz7RS6C0Wya0CXPQA
+ test-macosx1014-64-shippable/opt-raptor-tp6-3-firefox-profiling-e10s: TxbGLHryQxmMEPSclHOqgQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-30-firefox-cold-e10s: dMV2EfHxQ9yIkk5v1rAupQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-4-firefox-cold-e10s: cHpROPdwS--FC3iLEVsSYw
+ test-macosx1014-64-shippable/opt-raptor-tp6-4-firefox-e10s: Q090CM49R2GVlUScDR53Sg
+ test-macosx1014-64-shippable/opt-raptor-tp6-4-firefox-profiling-e10s: JlCw0r3SSJi4X1KFJ0gDKg
+ test-macosx1014-64-shippable/opt-raptor-tp6-5-firefox-cold-e10s: c-FeSwqzRO-dcuBxb86lrw
+ test-macosx1014-64-shippable/opt-raptor-tp6-5-firefox-e10s: atjY2bFfQkeKTo9X6yd07g
+ test-macosx1014-64-shippable/opt-raptor-tp6-5-firefox-profiling-e10s: JXsi-V2QRFK46YZoLg4NvA
+ test-macosx1014-64-shippable/opt-raptor-tp6-6-firefox-cold-e10s: AzRsbFbmQW2RTVC_16mx8Q
+ test-macosx1014-64-shippable/opt-raptor-tp6-6-firefox-e10s: G5w0X9LLRQCyQ8Rd_GtaFQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-6-firefox-profiling-e10s: CJUdGUCeRD27F46zv99GVw
+ test-macosx1014-64-shippable/opt-raptor-tp6-7-firefox-cold-e10s: RegwYDjgS9G99q6pQ6JiYw
+ test-macosx1014-64-shippable/opt-raptor-tp6-7-firefox-e10s: XZcwJPTVQ2uT7mx2rWiUGw
+ test-macosx1014-64-shippable/opt-raptor-tp6-7-firefox-profiling-e10s: QomXCa7uQoST_qKSU9YthA
+ test-macosx1014-64-shippable/opt-raptor-tp6-8-firefox-cold-e10s: OIzLKHDCRHWhX79ftGUArg
+ test-macosx1014-64-shippable/opt-raptor-tp6-8-firefox-e10s: d_teIiq8QIOqJo89M5u6nQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-8-firefox-profiling-e10s: JXActjOfTg6LRPfU0lBBrw
+ test-macosx1014-64-shippable/opt-raptor-tp6-9-firefox-cold-e10s: eotDh4IdTlSLWErJrPOR0w
+ test-macosx1014-64-shippable/opt-raptor-tp6-9-firefox-e10s: NadjezonTp6oFtIJ-ZBj2w
+ test-macosx1014-64-shippable/opt-raptor-tp6-9-firefox-profiling-e10s: OMdsPVaPTp2Y96a5lGfuKw
+ test-macosx1014-64-shippable/opt-raptor-tp6-binast-1-firefox-e10s: WNm5Z0SFQ9SlG4UbIY2r4A
+ test-macosx1014-64-shippable/opt-raptor-wasm-godot-firefox-e10s: C_tAXbqBSvWWtA3Hnd4VBw
+ test-macosx1014-64-shippable/opt-raptor-wasm-godot-firefox-profiling-e10s: IurJGZyGQCucPSZc-woE8Q
+ test-macosx1014-64-shippable/opt-raptor-webaudio-firefox-e10s: RgmEC6VHTDu1gpxxRIRPWg
+ test-macosx1014-64-shippable/opt-raptor-webaudio-firefox-profiling-e10s: fh4_XeDtTgqfaFjG4gfQlw
+ test-macosx1014-64-shippable/opt-raptor-youtube-playback-firefox-e10s: RDJ7l75KS_280ykuKa4DKw
+ test-macosx1014-64-shippable/opt-raptor-youtube-playback-firefox-profiling-e10s: QwwVsU_TTQ2rOhdXCWy9vA
+ test-macosx1014-64-shippable/opt-raptor-youtube-playback-h264-power-firefox-e10s: fwDE4teqSiysiJFK04EFJw
+ test-macosx1014-64-shippable/opt-raptor-youtube-playback-v9-power-firefox-e10s: ROAsg9ZfQAiS7dB-3H8Ezw
+ test-macosx1014-64-shippable/opt-reftest-e10s-1: ICScLa_qTQ--RMULihSizA
+ test-macosx1014-64-shippable/opt-reftest-e10s-2: UeAl_WiIQUatZfXnSDiUeg
+ test-macosx1014-64-shippable/opt-reftest-e10s-3: S-Q4ydYCSPGxyefADCYufA
+ test-macosx1014-64-shippable/opt-talos-bcv-e10s: EAghZ9FyTmmPmVqd8pnEKA
+ test-macosx1014-64-shippable/opt-talos-bcv-profiling-e10s: Z5tS7ADyReuS-l-O5MuX8Q
+ test-macosx1014-64-shippable/opt-talos-chrome-e10s: KtLLE_uXSWi6sQ262Jo9Zw
+ test-macosx1014-64-shippable/opt-talos-chrome-profiling-e10s: PigKpjS1RXeVyjfKYd2sqg
+ test-macosx1014-64-shippable/opt-talos-damp-e10s: OYM-b7o2R7-xEt2kIkoJtg
+ test-macosx1014-64-shippable/opt-talos-dromaeojs-e10s: ETkHQ7nSTAKXKg1mZ7lcmw
+ test-macosx1014-64-shippable/opt-talos-dromaeojs-profiling-e10s: H1r0-6oeQAuBWzFbGt81pg
+ test-macosx1014-64-shippable/opt-talos-g1-e10s: WiwSjTTdSGuIt_WYxXOEOA
+ test-macosx1014-64-shippable/opt-talos-g1-profiling-e10s: KgBlZ_TQQ8-A_hlJssnpCw
+ test-macosx1014-64-shippable/opt-talos-g3-profiling-e10s: JjRHfQr-Qra7ffsfXnvs2w
+ test-macosx1014-64-shippable/opt-talos-g4-e10s: MNz3PGARQo-bz3N6JWTQ3A
+ test-macosx1014-64-shippable/opt-talos-g4-profiling-e10s: LsRD0GMlTC-T5Y4qZ-IHEg
+ test-macosx1014-64-shippable/opt-talos-g5-e10s: PkcWQ-w5RGGQfSNNhdkbcQ
+ test-macosx1014-64-shippable/opt-talos-g5-profiling-e10s: XT9GIwV5TDSDTNUky3X_SQ
+ test-macosx1014-64-shippable/opt-talos-motionmark-profiling-e10s: cOUfMCl6RSuDLVfcHF-Kgg
+ test-macosx1014-64-shippable/opt-talos-other-e10s: aE86uo2gTWC6ZaqvAEAaLw
+ test-macosx1014-64-shippable/opt-talos-other-profiling-e10s: bbKXy5l1Slq-tpziAFo15Q
+ test-macosx1014-64-shippable/opt-talos-perf-reftest-e10s: I1gQMhEGTAmzftG_piKt4g
+ test-macosx1014-64-shippable/opt-talos-perf-reftest-profiling-e10s: eTwsKQp9T5qzBd2S8H9MZg
+ test-macosx1014-64-shippable/opt-talos-perf-reftest-singletons-e10s: RDuWbxm9S2ysBeEWAoLhVA
+ test-macosx1014-64-shippable/opt-talos-perf-reftest-singletons-profiling-e10s: N85Ai3DvQyaC7tmzarIfIg
+ test-macosx1014-64-shippable/opt-talos-realworld-webextensions-e10s: b57QTTSDQNG934Ltz2LwSA
+ test-macosx1014-64-shippable/opt-talos-realworld-webextensions-profiling-e10s: OBH-DqTWR4qPqBvVh_uC3w
+ test-macosx1014-64-shippable/opt-talos-sessionrestore-many-windows-e10s: HaVcjapUTBiZGNE2FbERAw
+ test-macosx1014-64-shippable/opt-talos-sessionrestore-many-windows-profiling-e10s: Pe6gYDSfSk-OUBhv46z3Fw
+ test-macosx1014-64-shippable/opt-talos-svgr-e10s: VwGGwRVzR664rzlOvkPGJQ
+ test-macosx1014-64-shippable/opt-talos-svgr-profiling-e10s: ACZGHcCkSom8fOlzLD6Qhg
+ test-macosx1014-64-shippable/opt-talos-tabswitch-profiling-e10s: YcLS4iiUSi6sSL5IsmE7Qg
+ test-macosx1014-64-shippable/opt-talos-tp5o-e10s: PTMSjO2fTGaF56YmvBuXzA
+ test-macosx1014-64-shippable/opt-talos-tp5o-profiling-e10s: ah9iCmw6QVyBK0yGnaMI7Q
+ test-macosx1014-64-shippable/opt-talos-webgl-e10s: T8WR_yAsSo-oiEdlJPU69w
+ test-macosx1014-64-shippable/opt-telemetry-tests-client-e10s: RgGDJdZhTbqnlowKyv2_eQ
+ test-macosx1014-64-shippable/opt-web-platform-tests-crashtests-e10s: RQvFvhQrS8unXmgKaI2r7w
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-1: c0v-tXMoQSygEozUBqxfqQ
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-10: BtIPRtFKRHOM-DkFjU62NA
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-11: faokeeJsQLyQtH6S0MLmDg
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-12: PQEWv8fyR1e1Ej7S7nemUA
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-2: FAYBJTM2Ru6bZagy2DcrYA
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-3: JKkmC-YLQJWyiPliEMS44g
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-4: UuSlwZk9RGOFVmE7LsMEhg
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-5: UBJ_7HFIQcyEtiX6tAH4Og
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-6: edXqGhnZSr60qyNmyDlJ-A
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-7: eKk-C4uxSXqipcyA09_4xQ
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-8: cm-G0eDHT_CEh84elaxFMw
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-9: eHKbCNPAQKqaNB0j05Sm7Q
+ test-macosx1014-64-shippable/opt-web-platform-tests-reftests-e10s-1: TPGpTKprRJa42LJ-sAmRxw
+ test-macosx1014-64-shippable/opt-web-platform-tests-reftests-e10s-2: YCMHeYl3R86sqYkE8cJrbQ
+ test-macosx1014-64-shippable/opt-web-platform-tests-reftests-e10s-3: fJqrFJLvRKq07jhyaurVow
+ test-macosx1014-64-shippable/opt-web-platform-tests-reftests-e10s-4: N8aYOcZOT0Wtm4xityZ2Ig
+ test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-e10s-1: Fdvelf_MT_itXzPN1jjOLA
+ test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-e10s-2: d-w6p-pjRie_5EwapkitQg
+ test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-e10s-3: ZZ9mctfTRvWPjTms-s7gKA
+ test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: RL3Q0ojfS_WJfRDbubVAGw
+ test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: TNgOdBetSWeUxDaJk2a8qA
+ test-macosx1014-64-shippable/opt-xpcshell-e10s-1: LskvOy6bR2W0GlcfXraEvQ
+ test-macosx1014-64-shippable/opt-xpcshell-e10s-2: C17wM9-gQXqqZcDOExV3Qg
+ test-macosx1014-64/debug-cppunit-1proc: WyHzdcEiRLWiJfOPNQbIrw
+ test-macosx1014-64/debug-crashtest-e10s: fqdVTYvpQ6WvVvYcl6jwBA
+ test-macosx1014-64/debug-firefox-ui-functional-local-e10s: CllJWuWnTC6EvIEJrq2AlA
+ test-macosx1014-64/debug-firefox-ui-functional-remote-e10s: TyVgpXgqTM62k06SMvRdyg
+ test-macosx1014-64/debug-gtest-1proc: Diowb7-SRp6eqiKB2GS3vA
+ test-macosx1014-64/debug-jittest-1proc-1: ST1Fqh5aRCuzZue8HpJdRA
+ test-macosx1014-64/debug-jittest-1proc-2: Y2adDgdhTLeUEEyF3VWgPA
+ test-macosx1014-64/debug-jittest-1proc-3: No8mM6esQJCuf16HMByB2A
+ test-macosx1014-64/debug-jsreftest-e10s-1: MpHZwjJjTf6JZ02fYw3dBg
+ test-macosx1014-64/debug-jsreftest-e10s-2: J5yv1W1_RjKcb9w0fK2T3g
+ test-macosx1014-64/debug-jsreftest-e10s-3: brbzAx1JTvCoZQh739K-VQ
+ test-macosx1014-64/debug-marionette-e10s: fnBi1dt3SZqwTF8rcsYPng
+ test-macosx1014-64/debug-mochitest-a11y-1proc: XSNLQpfgQIe_BjaUIr3Nhw
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-1: YyZPZER9Ssmokq1i5RhyGw
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-10: aBSbQ2CoS3S6h2uG7xEFKw
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-11: fDTAZnTpSaiPFee4evUpiA
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-12: AMWiNNqjRTCOErr7LvdIfQ
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-13: IpAe72WYTSaMoTyA_rDYBQ
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-14: J_tFfsx2SxCkiAMKSuUyig
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-15: A8G-gqRRTr6M7qSQ0fNrTg
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-16: NvSK29UCRj-iwvfzOQfpmA
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-2: c-Po84E_STa6FLzsno4YBg
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-3: SrtmQMVrSoejqrkZhIkcZg
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-4: ALDXCdriTsmxNLKT5mBlgA
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-5: GAQIGcERS2mgOQLNbZCgag
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-6: dImpreZSTrKEzAkEmiFmPA
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-7: GhhwlhYYQ1uU2PZpFKWT_A
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-8: QN78iv54TlOrCdm7bvrLiw
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-9: IrRQHdd4TRuv1Ba81oIdag
+ test-macosx1014-64/debug-mochitest-chrome-1proc-1: UX4FzhusQZy9vAbwcQw-iQ
+ test-macosx1014-64/debug-mochitest-chrome-1proc-2: S3QlLIGVQbKVvLVDXxNcMA
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-1: Cl3Y0KbTTPuNI44uRUSVeg
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-2: VO3oA7hNTuyc3Pmw6-sKmQ
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-3: DL1AUk7aSZiHOMTWsRKBfg
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-4: BDgR1G0jSBCa11Dyax7GRg
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-5: GieIfWQ3QSqJYHu-sykpog
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-6: AX2tXyoGRAmYwH0Uxi4KLQ
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-7: PA_rY4bbQHKdZUDv7GhH_g
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-8: AX8VvtMtS9CU4NGnmbyjMg
+ test-macosx1014-64/debug-mochitest-e10s-1: PgwNPb32TbWRP2msBM20uw
+ test-macosx1014-64/debug-mochitest-e10s-2: THYR_hGiRy6I51wwUN71Jg
+ test-macosx1014-64/debug-mochitest-e10s-3: J84Y4PKtT7uZxPGloD6MTA
+ test-macosx1014-64/debug-mochitest-e10s-4: HIfg6xMrQPWM8tW9-qEbHw
+ test-macosx1014-64/debug-mochitest-e10s-5: HQd3g2DXTs2l8reIjWrNnw
+ test-macosx1014-64/debug-mochitest-gpu-e10s: Zv-iIZsQTAik2EqHQvs9mg
+ test-macosx1014-64/debug-mochitest-media-e10s-1: Hag6_WdgQW2T1X_8xIH7eg
+ test-macosx1014-64/debug-mochitest-media-e10s-2: UmyWsxpLSf6vwLNxFlp2Bw
+ test-macosx1014-64/debug-mochitest-media-spi-e10s-1: V4VbammQQN--BQW2E1rQ6w
+ test-macosx1014-64/debug-mochitest-media-spi-e10s-2: LQW9MOrrTr2vjkuNV1TT7Q
+ test-macosx1014-64/debug-mochitest-remote-e10s: TksoLT2MQWyJGrC9PKBBeA
+ test-macosx1014-64/debug-mochitest-webgl1-core-e10s: PmeI2Nk_QPqveTm8CJa7Gg
+ test-macosx1014-64/debug-mochitest-webgl1-ext-e10s: aVatpCOsQXW2pztYflBJDA
+ test-macosx1014-64/debug-mochitest-webgl2-core-e10s: YY1SldiJQhOpmpMy7gAAbQ
+ test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-1: beSrmw0oTTSc4lZa1IDz-Q
+ test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-2: bACGmgBpSauqs7Ziq1YS3w
+ test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-3: cBhGk0BlS_SzmfgeXltZvw
+ test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-4: fpU404bpTeqtfRg1hewJxA
+ test-macosx1014-64/debug-mochitest-webgpu-e10s: EwIvdOhNQgqlUGGs74W0SA
+ test-macosx1014-64/debug-reftest-e10s-1: Hru1MNwQToqC9qVxjmdGKg
+ test-macosx1014-64/debug-reftest-e10s-2: cw4bqoOaT1uigMVMEWMTHw
+ test-macosx1014-64/debug-reftest-e10s-3: dV0u0siwRgOiiwa1aM6_0Q
+ test-macosx1014-64/debug-reftest-e10s-4: G6i9Es1AS8m8pmPepAZFQw
+ test-macosx1014-64/debug-telemetry-tests-client-e10s: MtZh44RoQZukLMzpRi_big
+ test-macosx1014-64/debug-web-platform-tests-crashtests-e10s: UrWHtu5MS6SHxktM3R04FQ
+ test-macosx1014-64/debug-web-platform-tests-e10s-1: MX1evKkGQIqpHDvr94IuoQ
+ test-macosx1014-64/debug-web-platform-tests-e10s-10: Box0VsSDTlWUPKaAGllqyA
+ test-macosx1014-64/debug-web-platform-tests-e10s-11: ezla5QXaSC2ga93BJKrm4w
+ test-macosx1014-64/debug-web-platform-tests-e10s-12: eZCEEUpuTrqOcEMcQpGDvA
+ test-macosx1014-64/debug-web-platform-tests-e10s-13: W1nzDRbhQh2h5gBbta9MEA
+ test-macosx1014-64/debug-web-platform-tests-e10s-14: Fo7uiCyXRIqFochI3rEgxQ
+ test-macosx1014-64/debug-web-platform-tests-e10s-15: T3Qre-1aQvSx6ps1JSYwwQ
+ test-macosx1014-64/debug-web-platform-tests-e10s-16: TdxcPtlJQoWTIP3e4cfhdA
+ test-macosx1014-64/debug-web-platform-tests-e10s-17: fwVbd1ssQjiJK9BNlfmyBw
+ test-macosx1014-64/debug-web-platform-tests-e10s-18: RU03PQfeS8yxLNa2HXFBUw
+ test-macosx1014-64/debug-web-platform-tests-e10s-19: fki8nxodTqKjlhaDZNJp2A
+ test-macosx1014-64/debug-web-platform-tests-e10s-2: Y6YIDq96Qh-ksL7ehjfFNg
+ test-macosx1014-64/debug-web-platform-tests-e10s-20: dRIFqpcrS06nXCXdIIY8sg
+ test-macosx1014-64/debug-web-platform-tests-e10s-3: Msi84u_YSx-InU4vdCkOOg
+ test-macosx1014-64/debug-web-platform-tests-e10s-4: dryLRBhIQFGblmPPA7-kSg
+ test-macosx1014-64/debug-web-platform-tests-e10s-5: CEWoLzw0QQWEkPuGvW1-Rg
+ test-macosx1014-64/debug-web-platform-tests-e10s-6: TH6FB6oLSgKfwaT0E_jP8w
+ test-macosx1014-64/debug-web-platform-tests-e10s-7: f2iYNcSpQv25MDdP1K-ZrA
+ test-macosx1014-64/debug-web-platform-tests-e10s-8: IVC22Y6vQ1-whYnE7bej6w
+ test-macosx1014-64/debug-web-platform-tests-e10s-9: RF0vmFjnRQiZBo8NUaqdWw
+ test-macosx1014-64/debug-web-platform-tests-reftests-e10s-1: cmp2EXGrQUaV8wCCLoKsfQ
+ test-macosx1014-64/debug-web-platform-tests-reftests-e10s-2: ZdgRbPv1RxWSdR2_4RDMGQ
+ test-macosx1014-64/debug-web-platform-tests-reftests-e10s-3: Mt6pW-2XTQyRLHd_uLkgqw
+ test-macosx1014-64/debug-web-platform-tests-reftests-e10s-4: O-R9t_s-RFCivsSJSO3stg
+ test-macosx1014-64/debug-web-platform-tests-reftests-e10s-5: anx6X4F_T22cn1hjYAvU6Q
+ test-macosx1014-64/debug-web-platform-tests-reftests-e10s-6: OjNRU4fxSAmbyv-9tA0dmA
+ test-macosx1014-64/debug-web-platform-tests-wdspec-e10s-1: KbjkuMJZSna_4dYqSpSvtw
+ test-macosx1014-64/debug-web-platform-tests-wdspec-e10s-2: Gk6r4C12QrK9CrRui_mL3w
+ test-macosx1014-64/debug-web-platform-tests-wdspec-e10s-3: AZLwLg4zS_CXpWccADRbVA
+ test-macosx1014-64/debug-xpcshell-e10s-1: KV8LXmaaStuejUYSXqJfIQ
+ test-macosx1014-64/debug-xpcshell-e10s-2: ECdB5IMUSlyLMnu9oC7VNw
+ test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-fenix-amazon: QuS5139jTnWnbE5yVSLPxw
+ test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-fenix-cold-amazon: HKsNkJsFQHaM9dmOCydAWw
+ test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-fenix-cold-youtube: alDVmbPfRwiPZyOsE-3eWA
+ test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-fenix-youtube: I8-ba2AuSkyPrnaU0nQk9w
+ test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-geckoview-cold-amazon: KkSAFB5mTTuM2_gtiME9Vg
+ test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-geckoview-cold-youtube: byeZACS8TY6N3gnpKjuBtw
+ test-vismet-linux64-shippable/opt-browsertime-tp6-firefox-amazon: XtSBo42GRkOtKtN9mRFLZA
+ test-vismet-linux64-shippable/opt-browsertime-tp6-firefox-cold-amazon: EsURMZyRR4-5IzyK1SbYew
+ test-vismet-macosx1014-64-shippable/opt-browsertime-tp6-firefox-amazon: S2Cgwd1dSE-aF608QrozQQ
+ test-vismet-macosx1014-64-shippable/opt-browsertime-tp6-firefox-cold-amazon: CjLXqvcZQQm5KVzxXl_-Pg
+ test-vismet-windows10-64-shippable/opt-browsertime-tp6-firefox-amazon: CssYgB5eTKCsrSRNC2RvUA
+ test-vismet-windows10-64-shippable/opt-browsertime-tp6-firefox-cold-amazon: OnYA77lvTvSfxIzh2dyCzw
+ test-vismet-windows7-32-shippable/opt-browsertime-tp6-firefox-amazon: FRHkJeJ2QUGBLCvXFoNn8Q
+ test-vismet-windows7-32-shippable/opt-browsertime-tp6-firefox-cold-amazon: d_JtccWVSn2UtdXJY3TJhQ
+ test-windows10-64-asan/opt-cppunit-1proc: edrtfN2jTEWsSJqOLIcArA
+ test-windows10-64-asan/opt-crashtest-e10s: NY6lFbzcS5eZS0EgSj_HnA
+ test-windows10-64-asan/opt-firefox-ui-functional-local-e10s: HcrrKUE0TKGYVccJ52Va0Q
+ test-windows10-64-asan/opt-firefox-ui-functional-remote-e10s: EdmSu-w5TMyKuv7asTb2Ig
+ test-windows10-64-asan/opt-gtest-1proc: Jpnj7JGgTmSfoJVqURwfMA
+ test-windows10-64-asan/opt-jsreftest-e10s-1: GFlsv67ZR_OJOwvhf_pSwA
+ test-windows10-64-asan/opt-jsreftest-e10s-2: Fm9fl6PjQvaNjFXPolBNtw
+ test-windows10-64-asan/opt-jsreftest-e10s-3: cxestYDwRpOoo92AXdyFsA
+ test-windows10-64-asan/opt-marionette-e10s: ELN4TC--RmGaMLS1Jd6jiA
+ test-windows10-64-asan/opt-mochitest-a11y-1proc: EHATVLVSRyut-7BsrntCkg
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-1: X9onROmSQzezb-vMuuzNBw
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-2: GM1ds_E3RvWuS8f_Mq70gA
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-3: UpS1ITuuRqa6nEoaPOsBYg
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-4: awntaKfhQ3eUimfBATK8QQ
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-5: TmJoUIMyQkqI7hBUkIg7_A
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-6: dLExVqRaSVm9R63s5rMCLw
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-7: eeiZoERgTb2kV0byZa0tVA
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-8: T3FBNkscSp-nq3Elqe9SMA
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-9: eh4-293MQgq5VzDYPvQEMA
+ test-windows10-64-asan/opt-mochitest-chrome-1proc-1: OnGBCsk4Tvu3h4LG7TIv6A
+ test-windows10-64-asan/opt-mochitest-chrome-1proc-2: BFWfNYxURbOs2r8k-TUuhw
+ test-windows10-64-asan/opt-mochitest-chrome-1proc-3: Iw9SNfSKT4C0qTjAvLGItA
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-1: Xo-VOgRcRJStIyumw45Vgg
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-2: dPeqPZEHQqW0DfqopW-Xuw
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-3: RR-oqZupR0ih8wkxZ5FWoA
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-4: LPbz8EnaSgiL_04YX6yUqQ
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-5: Zph9tHYPRTiHllBZb6ggag
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-6: LRH3becWRVmM4O4kLVU08g
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-7: H8QRWGMnQaGnIJFZHBkWiw
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-8: BxglYab4TlOXjW7UZdLQ2g
+ test-windows10-64-asan/opt-mochitest-e10s-1: WfxQOJg-TtOmKHiS7FydKQ
+ test-windows10-64-asan/opt-mochitest-e10s-2: Ip7Dg2ISSHq3AI4GhbzHXw
+ test-windows10-64-asan/opt-mochitest-e10s-3: Pe7jsSQdTmC-fV8vcYc6mg
+ test-windows10-64-asan/opt-mochitest-e10s-4: Gt2-FXlJQAe4OUCxS7wcTw
+ test-windows10-64-asan/opt-mochitest-e10s-5: XcnSxAkHTRK70hkGYYPIjg
+ test-windows10-64-asan/opt-mochitest-gpu-e10s: NsdgGdINSyKbCz0JJzyjtA
+ test-windows10-64-asan/opt-mochitest-media-e10s: a_BL1MTNR6yZxqHM0BOy_A
+ test-windows10-64-asan/opt-mochitest-media-spi-e10s: I-ZYfUKPQP6KNF8AUZB19A
+ test-windows10-64-asan/opt-mochitest-remote-e10s: a4cuSMz9SJGVlQD2pHmLpA
+ test-windows10-64-asan/opt-mochitest-webgl1-core-e10s: Hk8tp_esQCKV9dAZ30xkuA
+ test-windows10-64-asan/opt-mochitest-webgl1-ext-e10s: TCdAFCTiSQOcwqEvhLsy5A
+ test-windows10-64-asan/opt-mochitest-webgl2-core-e10s: H6Am9JenQ6CscJj4FdkXAQ
+ test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-1: UaMYJixAT9OrwP27ohoY0Q
+ test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-2: Nt4umXPwSU66DUVAIFtXSQ
+ test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-3: EnLMl8cvT821iZ-nLzyPuA
+ test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-4: NSRhEkbmSQSNRj4f0p_z3g
+ test-windows10-64-asan/opt-mochitest-webgpu-e10s: UlQiQQlbQpObr4MyF66qhQ
+ test-windows10-64-asan/opt-reftest-e10s-1: Tq01tHQ2RD-XO3BUgAS1fw
+ test-windows10-64-asan/opt-reftest-e10s-2: WMEPT_xETJ6BbR8xk3jhDA
+ test-windows10-64-asan/opt-reftest-e10s-3: B6kwVbDvTsG6JoVLB8VMFQ
+ test-windows10-64-asan/opt-telemetry-tests-client-e10s: DMmtDudUQd6Wl_0DhUpeKg
+ test-windows10-64-ccov/opt-awsy-base-e10s: HbAnTrp3QeC-HooyRPpdZQ
+ test-windows10-64-ccov/opt-awsy-e10s: GPDOuaFWTaK-8OTJ34StYQ
+ test-windows10-64-ccov/opt-cppunit-1proc: Aq1_Hr3aR9KWFB99A191YQ
+ test-windows10-64-ccov/opt-crashtest-e10s: DEx81EuLRbuvsHrsQaZ7Yg
+ test-windows10-64-ccov/opt-firefox-ui-functional-local-e10s: AoJ3_jsNRTW3mVrcJpzq6A
+ test-windows10-64-ccov/opt-firefox-ui-functional-remote-e10s: Tx4WZIjuTla7tPuMc56ijA
+ test-windows10-64-ccov/opt-gtest-1proc: eDiEioDRRqStnmx2RPfsSw
+ test-windows10-64-ccov/opt-jittest-1proc-1: eRrPP9GUSuCoSdIbNO9P7A
+ test-windows10-64-ccov/opt-jittest-1proc-2: Hfpx1XMtQkiC_MJqcKx1pw
+ test-windows10-64-ccov/opt-jittest-1proc-3: InAc3hfDTBqsqJGfW6LCow
+ test-windows10-64-ccov/opt-jittest-1proc-4: INcz-cKiTDatN-iEocYxLg
+ test-windows10-64-ccov/opt-jittest-1proc-5: Ac3f-KzzSjiUtM3mS2Q5Uw
+ test-windows10-64-ccov/opt-jittest-1proc-6: elfmcJBIT2aOhfuzAFMM6A
+ test-windows10-64-ccov/opt-jsreftest-e10s-1: dh2MfR5ERXeEXdhx7z86Ng
+ test-windows10-64-ccov/opt-jsreftest-e10s-2: Vq5JkshlSwK40xuyAdPlCw
+ test-windows10-64-ccov/opt-jsreftest-e10s-3: UKk0Ro8zSNm4onf93AA3SQ
+ test-windows10-64-ccov/opt-jsreftest-e10s-4: WSQyTbBkTwCX7Hdbn8Ew-w
+ test-windows10-64-ccov/opt-jsreftest-e10s-5: U04EpkibR6Oruzs5M2-19A
+ test-windows10-64-ccov/opt-marionette-e10s: Nm918BTzSDGPRyLBZMo5wQ
+ test-windows10-64-ccov/opt-marionette-gpu-e10s: L53MmL-_TBa_N1OW8K0QhA
+ test-windows10-64-ccov/opt-mochitest-a11y-1proc: Nrwqc7BsTSuCbAcag8U8Kw
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-1: bobK8Jg4RySFc02v4AknNQ
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-10: e3riGJskS3OoZlk3BfLHnQ
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-11: C5uJezpfQMe07b-F3modFA
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-12: HpN6PDvXRM2W0iT2BRf2AA
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-13: cZfrTdUnSHK67gRpFxiECQ
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-14: VMO-LOYaRt2QGKVJhDah8g
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-2: LjO6c2shTCOry0y2JoDnDA
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-3: UnAnvcwbR1S7EQIgg7rGCA
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-4: RLwzj_5XSbyBLlk1JwiAfA
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-5: JVmLIblFRv27H-nZDL6f2g
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-6: IJgzQKd3QuaQNR4G69EPBg
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-7: ChKNUV3pTIGFzFsSd03nvA
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-8: PVmPp-VxTeC2AOKId59Xfg
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-9: NDS1qot3STKGkF_vl-qEAA
+ test-windows10-64-ccov/opt-mochitest-chrome-1proc-1: LQkf1pAVTISBygHsJFrqLg
+ test-windows10-64-ccov/opt-mochitest-chrome-1proc-2: EqqDLXDjRD28Gcr2BcnCnw
+ test-windows10-64-ccov/opt-mochitest-chrome-1proc-3: CEO6x2_6Q0CY7YIEWKskkg
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-1: cxfVpvZvTuW-mA2bPKoLeQ
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-10: ZEryV1WvSXOBv2WilTbMDw
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-11: TyAq486QROS-ZzkLa_iIQQ
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-12: ZdJGC8JSRRmTMNyn9YM50A
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-13: IjOOo2h8QNCntwC7D5TIPw
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-14: TSF4llS8SkSwbSQtKfhnVg
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-15: Y1M49SioT5aESnSzalPsHQ
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-16: DkkPzeQmSdCPb6oJgMI9tg
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-2: bEUu3F11TPSasK3_ZrkgsA
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-3: VegmqXWqRMmRwOXbcEERxg
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-4: GvTjBy5IRuCdAHgC9-u5OA
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-5: FtEYsDECTzGpGQDmMbzasA
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-6: IyX5wssBROGqkbxYdXTxVQ
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-7: II1XCFzVRBW8YyqFn3UgbQ
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-8: Bf2NOF8PTzGBtZbQDWpOpw
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-9: e8ca8DLJQTGrLMkvbIEoWg
+ test-windows10-64-ccov/opt-mochitest-e10s-1: VADAKqiqRfieBIWsVVf7_g
+ test-windows10-64-ccov/opt-mochitest-e10s-10: b7M31EwlRGGsf540T6lHDw
+ test-windows10-64-ccov/opt-mochitest-e10s-2: bqYRI84YQge5NAJFNUfF9A
+ test-windows10-64-ccov/opt-mochitest-e10s-3: YSkhBVgXSlGK79Y39K3p2w
+ test-windows10-64-ccov/opt-mochitest-e10s-4: RZtvV0GPTN-B4ZQybv5oww
+ test-windows10-64-ccov/opt-mochitest-e10s-5: TOVW3YA0TG6ufIH_jleWFQ
+ test-windows10-64-ccov/opt-mochitest-e10s-6: Zl96eaCbTMe1wqE352CZVA
+ test-windows10-64-ccov/opt-mochitest-e10s-7: b9_9QiRHTtyi-g_2G24H0Q
+ test-windows10-64-ccov/opt-mochitest-e10s-8: CPmoCQiqQ96qxKyf6GhpAg
+ test-windows10-64-ccov/opt-mochitest-e10s-9: JogBFc9pShC6AEiLXQEZ5w
+ test-windows10-64-ccov/opt-mochitest-gpu-e10s: ZZjtdhilTLe8Itbu5iGLvQ
+ test-windows10-64-ccov/opt-mochitest-media-e10s: I0suGPeQTjeRN6nL49CV1Q
+ test-windows10-64-ccov/opt-mochitest-media-spi-e10s: LG3U4bn6SmaXyNNhuIGOIQ
+ test-windows10-64-ccov/opt-mochitest-remote-e10s: Fsez0RE6R3Wf-n36x5JVew
+ test-windows10-64-ccov/opt-mochitest-webgl1-core-e10s: ditvn0l7RTS1TRSaKsMLUQ
+ test-windows10-64-ccov/opt-mochitest-webgl1-ext-e10s: TsYH1edBQxyRrn1TorsKhA
+ test-windows10-64-ccov/opt-mochitest-webgl2-core-e10s: KykMz-7HQpG9mi2qQDiUCg
+ test-windows10-64-ccov/opt-mochitest-webgl2-ext-e10s-1: fqgEgX0KT7W0Azi9H3tPlA
+ test-windows10-64-ccov/opt-mochitest-webgl2-ext-e10s-2: B8_aM4zPRe2UgGxH2_mN5A
+ test-windows10-64-ccov/opt-mochitest-webgl2-ext-e10s-3: TQUycpDtSk-0m09Luvey7w
+ test-windows10-64-ccov/opt-mochitest-webgl2-ext-e10s-4: PDZHlFuDTVCizteO2Y0A5w
+ test-windows10-64-ccov/opt-mochitest-webgpu-e10s: C1FxQ85RS0GujF1aPkFBbA
+ test-windows10-64-ccov/opt-reftest-e10s-1: VjPkGfqyQJ27BZ-39I3Wug
+ test-windows10-64-ccov/opt-reftest-e10s-2: TGGOo5PMSE6sDt3BYRtcFg
+ test-windows10-64-ccov/opt-reftest-e10s-3: R4tKin0kQAWY3aV9UaQg8Q
+ test-windows10-64-ccov/opt-reftest-e10s-4: S9QsYTjsStuv7hYAZjxk0A
+ test-windows10-64-ccov/opt-reftest-e10s-5: ebsT3_sQQkyDo8pbw5l-Hw
+ test-windows10-64-ccov/opt-reftest-e10s-6: JTcCT1KwTHqowLHtXq78EA
+ test-windows10-64-ccov/opt-reftest-e10s-7: SaD1tPCsQGa1stZFoglG1w
+ test-windows10-64-ccov/opt-reftest-e10s-8: FPH1ZHYPRKiogtaywuoUsw
+ test-windows10-64-ccov/opt-reftest-e10s-9: SCrykmIXSZOqmSNCrBLp7Q
+ test-windows10-64-ccov/opt-telemetry-tests-client-e10s: fJ9xTmrRQGaiV_iMvADikQ
+ test-windows10-64-ccov/opt-test-coverage-e10s: PieLJke-TAe_sWg7FJb5Hw
+ test-windows10-64-ccov/opt-test-coverage-wpt-e10s-1: P_C1j2RNS5aVWBTZVH1epw
+ test-windows10-64-ccov/opt-test-coverage-wpt-e10s-2: dv0iRtb9QKyzR-pRtqWJiA
+ test-windows10-64-ccov/opt-test-coverage-wpt-e10s-3: a0k8hNInSlawH4ElLvjZEw
+ test-windows10-64-ccov/opt-web-platform-tests-crashtests-e10s: RKUMQ3-RS4WEP-U-HQIRYQ
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-1: O8vm_uunQUOqticf9u4_uA
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-10: QCaI1TuNQfi_HfORuvTn1Q
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-11: P6khWErtQGuvKx39JnR78w
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-12: fVOQDt39Ra6cw7jiHCbNLw
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-13: T9-YYv4JRxCgKXAcyRJ--w
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-14: LoMsTmAaS4m0Cj1o1kl_cw
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-15: ClfxqsMeQgipES2HwpUuaQ
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-16: G4DNLJ3rT5q6Vfaq_n9WZg
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-17: ba1s_m-qQ5yFKLDq6uNMkw
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-18: FEGlrL3eRXCED1CeU5Dq1g
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-2: ej-RicfBRKC0IRLEd0GYxQ
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-3: fIT3hjc3TsG4vDWZrdXHOQ
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-4: RcnrCaCvSgyV_fOgJqZd4w
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-5: bEnkrvsxTwGGISw6He-6Rw
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-6: Eo4-hE7iQK-ZJ3LxZ6cy8w
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-7: eaZdfJutQh2UpF6CKmgAVg
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-8: UANaYL-TSaeyuqvAY-fV-A
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-9: eDJM2IOaRWGlsBdK6kcAQg
+ test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-1: Qki6KhQjTh2Nh6FMh2718Q
+ test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-2: UzW55Cd7RFGqynfptAQDNA
+ test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-3: dA1Z7zkDRMunBq_rlmgIIg
+ test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-4: S2NCTx16REGZB1DpKUmr-g
+ test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-5: aeckxui7QIS9zG_nt-shOw
+ test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-6: PZBpkqbuQdWJvKM1xm650w
+ test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-7: EBo4pywuTMKKrvCo1Lw1MA
+ test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-8: DXEtTpZFRFmo3D_74ZqAng
+ test-windows10-64-ccov/opt-web-platform-tests-wdspec-e10s-1: Xip1n9UESq2u4rcGsqr4Fw
+ test-windows10-64-ccov/opt-web-platform-tests-wdspec-e10s-2: eDnDpFYURuyvC8I71poIgg
+ test-windows10-64-ccov/opt-web-platform-tests-wdspec-e10s-3: Vtn8oFXrRsK3QkN6ohrKJQ
+ test-windows10-64-ccov/opt-web-platform-tests-wdspec-e10s-4: GepFaP1YTDWXUzE9j13tFA
+ test-windows10-64-ccov/opt-xpcshell-e10s-1: WGyRpOaHQ_OrKzGvEKmJSw
+ test-windows10-64-ccov/opt-xpcshell-e10s-2: aJ9AGP5gRseKYBcnfodrvA
+ test-windows10-64-ccov/opt-xpcshell-e10s-3: IN_urmsPRh2j3dXlqZXj1g
+ test-windows10-64-ccov/opt-xpcshell-e10s-4: HI0wfVaaShuM8ZvReUPvgw
+ test-windows10-64-ccov/opt-xpcshell-e10s-5: CS245xVeSK-pfkYCECry4Q
+ test-windows10-64-ccov/opt-xpcshell-e10s-6: GoSyXXEEQaaFWn-O1nC5iw
+ test-windows10-64-mingwclang/debug-cppunit-1proc: YTVDC5X-SXi0cj8D86HPeQ
+ test-windows10-64-mingwclang/debug-firefox-ui-functional-local-e10s: DNPG8sFoTfa0UZJI0cZWZQ
+ test-windows10-64-mingwclang/debug-firefox-ui-functional-remote-e10s: NegZXqOzRvOTa5krGjlnWQ
+ test-windows10-64-mingwclang/debug-mochitest-a11y-1proc: NK6dfWPoTHqubw6gTvtpaA
+ test-windows10-64-mingwclang/debug-mochitest-gpu-e10s: SBUQ1DHxTaSi09ZebNYq0Q
+ test-windows10-64-mingwclang/debug-mochitest-webgl1-core-e10s: Fs--8o4AShuBkozlDJKH3g
+ test-windows10-64-mingwclang/debug-mochitest-webgl1-ext-e10s: QjCQwPc1Sj6TQMspdKv4XA
+ test-windows10-64-mingwclang/debug-mochitest-webgl2-core-e10s: UfasHslvQCqgZWPpz1pibA
+ test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-1: GaL6G18FQbCsykdlmwNUKg
+ test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-2: fWVBLTCQRJ6LGqpuu8Z2RA
+ test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-3: FFThUfWFTYKzhoxp06QdPw
+ test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-4: VWFInMFnSUyseRP3neSk5Q
+ test-windows10-64-mingwclang/debug-mochitest-webgpu-e10s: XdqZu3fSTBmMTPIST4ErzA
+ test-windows10-64-mingwclang/debug-reftest-e10s-1: aFqQGnIdTHiNVmIJQSQw5w
+ test-windows10-64-mingwclang/debug-reftest-e10s-2: CkrFOVi9Qeyck8Avl2yPyA
+ test-windows10-64-mingwclang/debug-reftest-e10s-3: TS6JidUcQqe49r7Cr5YRPA
+ test-windows10-64-mingwclang/debug-reftest-e10s-4: OwDMHmjcRO2i0EluQYgDpg
+ test-windows10-64-mingwclang/debug-telemetry-tests-client-e10s: B3ojEoT8QoKTSvse-MUHgA
+ test-windows10-64-mingwclang/opt-cppunit-1proc: E6v3Z02oRvmOay6FC8xlrQ
+ test-windows10-64-mingwclang/opt-mochitest-gpu-e10s: KyumjBohTpSDhynaycV_zA
+ test-windows10-64-qr/debug-crashtest-e10s: WsijRfuQRyqwlTWfvMJK-w
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-1: Ore6MSsySROTuPFPeyQ5EQ
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-2: Kd2RAJyqQKq8IAtr9xTOiA
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-3: JQJUOMZHRMexgRjLsWgepQ
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-4: RsJ1GZGnTACWPPx2VERU8w
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-5: Z-9HOQTmTUKfZaVsNDRVeg
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-6: MfmNH9tiT7a0-MYKaQrelg
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-7: dFXdEfrASO-6woRAHhLNKQ
+ test-windows10-64-qr/debug-mochitest-e10s-1: UR1B0uEGRcySd9Xv0K374A
+ test-windows10-64-qr/debug-mochitest-e10s-2: X0rbAUObTyy0vbKhXVGFKg
+ test-windows10-64-qr/debug-mochitest-e10s-3: UwMkBJVKSMOnBAaTQHG0BQ
+ test-windows10-64-qr/debug-mochitest-e10s-4: HQFNQqHZS0SqsqGndQYaqA
+ test-windows10-64-qr/debug-mochitest-e10s-5: A-VLbddaRjieHwd8EYvnKQ
+ test-windows10-64-qr/debug-mochitest-gpu-e10s: AH7_3ZtmQU-gdZFEoawZvw
+ test-windows10-64-qr/debug-mochitest-media-e10s: CapS9-Q6Qx-7sHXVLTRwFw
+ test-windows10-64-qr/debug-mochitest-media-spi-e10s: TUuWViXdRgykpWo7sym5iA
+ test-windows10-64-qr/debug-mochitest-webgl1-core-e10s: abRBq7TlRS2oXy60CieLJQ
+ test-windows10-64-qr/debug-mochitest-webgl2-core-e10s: SgyFus68RyiYbeFSJbJwbg
+ test-windows10-64-qr/debug-mochitest-webgpu-e10s: JjVJ6g6tSOmrMQ-IYTX2eg
+ test-windows10-64-qr/debug-reftest-e10s-1: U7SldFgcT7apF8XspinzKg
+ test-windows10-64-qr/debug-reftest-e10s-2: D1vaE3aeR66K11_6sy0BZw
+ test-windows10-64-qr/debug-reftest-e10s-3: apAFVMbzShe4Uxpp605WrA
+ test-windows10-64-qr/debug-reftest-e10s-4: EbxKx5-AR6yza9flFVE0Ug
+ test-windows10-64-qr/debug-web-platform-tests-crashtests-e10s: Pa1Jf2jQTiSturo95eqvuQ
+ test-windows10-64-qr/debug-web-platform-tests-e10s-1: IQp6UQyXSwmimhLqfbK_ug
+ test-windows10-64-qr/debug-web-platform-tests-e10s-10: S89wh8vHR8m1Na7_fxW-bA
+ test-windows10-64-qr/debug-web-platform-tests-e10s-11: Gzqlk8E3RP2KVxg1yAOYlA
+ test-windows10-64-qr/debug-web-platform-tests-e10s-12: IF7ee6yAQQq2_Vq9fG43xw
+ test-windows10-64-qr/debug-web-platform-tests-e10s-13: EYqmktAsSvWm4uVuQMmx3w
+ test-windows10-64-qr/debug-web-platform-tests-e10s-14: HQr8mmPmR-yRF3SAcGyllQ
+ test-windows10-64-qr/debug-web-platform-tests-e10s-15: eS_BroCJR6-n6O9Hd1iq_Q
+ test-windows10-64-qr/debug-web-platform-tests-e10s-16: bgldeSQVQZOf9AznHFoi5A
+ test-windows10-64-qr/debug-web-platform-tests-e10s-17: Ul__9u1HS8yQVOpgVQCY6w
+ test-windows10-64-qr/debug-web-platform-tests-e10s-18: dwl3uJ_NQ8iwREx1ekkMug
+ test-windows10-64-qr/debug-web-platform-tests-e10s-2: PENSTttTQqSG6_KBENlGog
+ test-windows10-64-qr/debug-web-platform-tests-e10s-3: EmCpYmKYSaC_xQqArTplZw
+ test-windows10-64-qr/debug-web-platform-tests-e10s-4: PE5qf9xmR-6Vxd-KGZYRsw
+ test-windows10-64-qr/debug-web-platform-tests-e10s-5: JbI1_niSQEWmVAiR3-iesA
+ test-windows10-64-qr/debug-web-platform-tests-e10s-6: G0qQGKriQDKuZ57FCfmDJQ
+ test-windows10-64-qr/debug-web-platform-tests-e10s-7: L77jmbZPQvWqvslkuND1bA
+ test-windows10-64-qr/debug-web-platform-tests-e10s-8: ff0VlMR2Tm-UNixEbkp6Bw
+ test-windows10-64-qr/debug-web-platform-tests-e10s-9: foAl0wumQZi3issnC7ugzQ
+ test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-1: BcgIsrqVRlerj0UBG5f_kg
+ test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-2: I2DKh9OETou6qVw8PAQJjA
+ test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-3: Vc-bZ4qNS0CAb0UeqjFkfw
+ test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-4: Nj3XhTzpTs-Gik1SJTJpsw
+ test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-5: KK0MqiHOSoiAbU4DWyHogA
+ test-windows10-64-qr/debug-web-platform-tests-wdspec-e10s-1: DJ6nXfcZQQm_ZpGGPHtRdA
+ test-windows10-64-qr/debug-web-platform-tests-wdspec-e10s-2: SOX0B5fqQ1yx3_tKI5U2JA
+ test-windows10-64-qr/debug-web-platform-tests-wdspec-e10s-3: K-pK738nSdqG8AsGruWupg
+ test-windows10-64-qr/opt-awsy-base-e10s: Q8u1gAR_TI6dOUMeQYhKew
+ test-windows10-64-qr/opt-awsy-e10s: W6UGGk7eSzCUDRYElAXrww
+ test-windows10-64-qr/opt-awsy-tp6-e10s: ZwsAyj3rT76DmgTxRoYRyw
+ test-windows10-64-qr/opt-crashtest-e10s: eebKyBmYS0moeJRExQJc2Q
+ test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-1: B5fAf6WhRy6FtgwBuFREmQ
+ test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-2: ODJ_-EHhRQCVmBtxQzY_-g
+ test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-3: QhYOtwImRnuo6SAH8nYnHg
+ test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-4: U9tdbW0vTECKgXsT72qX-g
+ test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-5: DLiIoWjISMe02iuELQqobQ
+ test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-6: IsOuT-7USmm35jBN88M5_A
+ test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-7: ebkUvx9-TbiZvrFFih5kWg
+ test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-1: TkNUotyHQnC5d5fZUzBVJg
+ test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-2: RdVES-IsQjGU79bYwa-Xvw
+ test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-3: NwQDhuw9QKeWKWGfc_krOw
+ test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-4: aS_iArxARsO8Eb-JinHwIg
+ test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-5: TJvrP9B6SyypbTQZHt1faw
+ test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-6: N1PlM2ASTYGHP1qNyjeNuQ
+ test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-7: Ddm-UBrzRfeeDRV8Pr8pqw
+ test-windows10-64-qr/opt-mochitest-e10s-1: GNyMSfZUTUebXJ1QsVrciQ
+ test-windows10-64-qr/opt-mochitest-e10s-2: VwBhQPWoTuyy1LDVcEzTAg
+ test-windows10-64-qr/opt-mochitest-e10s-3: fyp8D267QpKW2ErN0lnZKA
+ test-windows10-64-qr/opt-mochitest-e10s-4: TPp5KoWJQTWGqps2jP5T3w
+ test-windows10-64-qr/opt-mochitest-e10s-5: fjos7WLBTXa7tRQewXeHfQ
+ test-windows10-64-qr/opt-mochitest-fis-e10s-1: Q1sqjBAHS5qRiIZxlEu0OQ
+ test-windows10-64-qr/opt-mochitest-fis-e10s-2: TLX1oj4_QCGcVkDtFsQfCQ
+ test-windows10-64-qr/opt-mochitest-fis-e10s-3: THki-Mp7Q0aB08It3fIlbw
+ test-windows10-64-qr/opt-mochitest-fis-e10s-4: Kz83hsndR2Wen3BuaFbQsw
+ test-windows10-64-qr/opt-mochitest-fis-e10s-5: TPQu6NqvRi6ArO5SCl0zbg
+ test-windows10-64-qr/opt-mochitest-gpu-e10s: GPLXqKr4QoaHpQ5HIC0MJg
+ test-windows10-64-qr/opt-mochitest-media-e10s: O72Bw5jdTY--tTgIkDhOEw
+ test-windows10-64-qr/opt-mochitest-media-fis-e10s: H4ZyAxd6Q0WDvbBP0LFMbQ
+ test-windows10-64-qr/opt-mochitest-media-spi-e10s: cCcR8EgMTziOTR7W07PYTA
+ test-windows10-64-qr/opt-mochitest-webgl1-core-e10s: c62YMxAtTGi8svZN5tbt_A
+ test-windows10-64-qr/opt-mochitest-webgl1-core-fis-e10s: dZmmDEVSRM6jFCnxkBlS9Q
+ test-windows10-64-qr/opt-mochitest-webgl2-core-e10s: fKnncdACTRqFbkQDDa6Eng
+ test-windows10-64-qr/opt-mochitest-webgl2-core-fis-e10s: Pe3EZzHATUO19_BJ9qLmQA
+ test-windows10-64-qr/opt-mochitest-webgpu-e10s: JTE7TMqTTDySlL-WqXxf_w
+ test-windows10-64-qr/opt-mochitest-webgpu-fis-e10s: OiWDNMfnQZ6USMgxrijARw
+ test-windows10-64-qr/opt-raptor-ares6-firefox-e10s: TFL2Kz0LThK_WWD7jETOFg
+ test-windows10-64-qr/opt-raptor-jetstream2-firefox-e10s: GJOc5SYYRImQhvor-rzFYQ
+ test-windows10-64-qr/opt-raptor-motionmark-animometer-firefox-e10s: UPIMrDeIR8mjoppXSgXSPQ
+ test-windows10-64-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: YeXC8HphSeeiqrkZNL4pOw
+ test-windows10-64-qr/opt-raptor-speedometer-firefox-e10s: NUTteFr2SqGJzWcvVl7fTA
+ test-windows10-64-qr/opt-raptor-stylebench-firefox-e10s: JTif2t2YRmy8cUIUbQkXGA
+ test-windows10-64-qr/opt-raptor-sunspider-firefox-e10s: PMqotSYvQ0K5tin4ELqNmQ
+ test-windows10-64-qr/opt-raptor-tp6-1-firefox-cold-e10s: FblKoKMnQmWsJX_U58X7ww
+ test-windows10-64-qr/opt-raptor-tp6-1-firefox-e10s: KQUgM4XhRiaPS6edmOBXIA
+ test-windows10-64-qr/opt-raptor-tp6-10-firefox-cold-e10s: dBO9fh0JQzKKI6iSZRfLyg
+ test-windows10-64-qr/opt-raptor-tp6-10-firefox-e10s: Q6311BJWRHWXIyUf4HC82w
+ test-windows10-64-qr/opt-raptor-tp6-11-firefox-cold-e10s: Mu8aAHCPS6iUKRVVuImLdA
+ test-windows10-64-qr/opt-raptor-tp6-12-firefox-cold-e10s: LPT4IsKQSWiaG0t0_vb9aQ
+ test-windows10-64-qr/opt-raptor-tp6-13-firefox-cold-e10s: Wz_9GcDvQyq5Dy-eKfaLaQ
+ test-windows10-64-qr/opt-raptor-tp6-14-firefox-cold-e10s: NDdoru8wQWKZ4pRUiPpDhg
+ test-windows10-64-qr/opt-raptor-tp6-15-firefox-cold-e10s: FQx5IBdMR6WI1OLJjQRBNg
+ test-windows10-64-qr/opt-raptor-tp6-16-firefox-cold-e10s: JlB4zSpFSgGINU5h_NypSw
+ test-windows10-64-qr/opt-raptor-tp6-17-firefox-cold-e10s: M10WuOIWTvOiwY3B_jjzXw
+ test-windows10-64-qr/opt-raptor-tp6-18-firefox-cold-e10s: e_tx8VGNSL6L2re-tUbbOw
+ test-windows10-64-qr/opt-raptor-tp6-19-firefox-cold-e10s: W5wlKC4YQfqZQ-9MyqNpUg
+ test-windows10-64-qr/opt-raptor-tp6-2-firefox-cold-e10s: a2WGMOzuQdiEMozff6x4Cw
+ test-windows10-64-qr/opt-raptor-tp6-2-firefox-e10s: f48IZ9vpS9-zieFz_qDIOA
+ test-windows10-64-qr/opt-raptor-tp6-20-firefox-cold-e10s: avzFPOKeSy6fvXVdObA-Iw
+ test-windows10-64-qr/opt-raptor-tp6-21-firefox-cold-e10s: KgFHGlHAQeKOxSUT_xgt_w
+ test-windows10-64-qr/opt-raptor-tp6-22-firefox-cold-e10s: ZZuJxuswReCrLEKEYeysVw
+ test-windows10-64-qr/opt-raptor-tp6-23-firefox-cold-e10s: BZwjdbMnQ_So1LLdWNV6Gw
+ test-windows10-64-qr/opt-raptor-tp6-24-firefox-cold-e10s: HMi_XZknRgCQHigMEvnDuA
+ test-windows10-64-qr/opt-raptor-tp6-25-firefox-cold-e10s: IH37dLcCSIq55TRwm1Z46w
+ test-windows10-64-qr/opt-raptor-tp6-26-firefox-cold-e10s: MsMWPC1ESjqLVeQlZNSQuw
+ test-windows10-64-qr/opt-raptor-tp6-27-firefox-cold-e10s: f6kM00s5SW67Ux2mGl2uTA
+ test-windows10-64-qr/opt-raptor-tp6-28-firefox-cold-e10s: bAuiQ_OaQIKioQwqez7aWA
+ test-windows10-64-qr/opt-raptor-tp6-29-firefox-cold-e10s: FPIaL7g6SZO5YJWNDf79ew
+ test-windows10-64-qr/opt-raptor-tp6-3-firefox-cold-e10s: Efn8imedTzmNbrJnqn7NCw
+ test-windows10-64-qr/opt-raptor-tp6-3-firefox-e10s: Ki4OzoszSCy0LD_WmJSvOw
+ test-windows10-64-qr/opt-raptor-tp6-30-firefox-cold-e10s: NxBCqNA-SGi1R5YtkobkAg
+ test-windows10-64-qr/opt-raptor-tp6-4-firefox-cold-e10s: VmR8t0wiS_mLMK72TyQb6A
+ test-windows10-64-qr/opt-raptor-tp6-4-firefox-e10s: Ss4HFcxhTfi8mi9uuKU7qw
+ test-windows10-64-qr/opt-raptor-tp6-5-firefox-cold-e10s: NRBRSGXLRnOykG3gn1vzaw
+ test-windows10-64-qr/opt-raptor-tp6-5-firefox-e10s: AMJ2p7emQP6ww6FHzG8K8g
+ test-windows10-64-qr/opt-raptor-tp6-6-firefox-cold-e10s: Ay7JCKr-RFymSEJkM_P73g
+ test-windows10-64-qr/opt-raptor-tp6-6-firefox-e10s: NBfmsNwMRA2CCGLvQaZRNw
+ test-windows10-64-qr/opt-raptor-tp6-7-firefox-cold-e10s: EVKjO5SOSOSzxCZfzdUJ8A
+ test-windows10-64-qr/opt-raptor-tp6-7-firefox-e10s: OeOM-XBOTza00CxM-nabhA
+ test-windows10-64-qr/opt-raptor-tp6-8-firefox-cold-e10s: U5lZ_xgWSUWCGaBV0fgNSA
+ test-windows10-64-qr/opt-raptor-tp6-8-firefox-e10s: B_yG3sQmTGyimUqEpsm0GQ
+ test-windows10-64-qr/opt-raptor-tp6-9-firefox-cold-e10s: Bq2ZM6lwQzqDTGqP70AFjw
+ test-windows10-64-qr/opt-raptor-tp6-9-firefox-e10s: T03-V0YUQaiKPxzJG3zGYw
+ test-windows10-64-qr/opt-raptor-tp6-binast-1-firefox-e10s: MQ8vOUHgRiOuGiRtXJZMqA
+ test-windows10-64-qr/opt-raptor-wasm-godot-firefox-e10s: aE2cKCskQxe21n_Wda4WUg
+ test-windows10-64-qr/opt-raptor-webaudio-firefox-e10s: dL2t2mR8SuuypDK4x6JCig
+ test-windows10-64-qr/opt-raptor-youtube-playback-firefox-e10s: O4aMzwqcSP2r-q3kcDBagA
+ test-windows10-64-qr/opt-reftest-e10s-1: C44GHeblRb-UA75B-txvRQ
+ test-windows10-64-qr/opt-reftest-e10s-2: H4E0HYggQJ-wiiBvMLmGlg
+ test-windows10-64-qr/opt-talos-chrome-e10s: CCBIFq1ASR-Mmr48W4hJYg
+ test-windows10-64-qr/opt-talos-damp-e10s: WWeYKnMLR-mzlOwcqkENgA
+ test-windows10-64-qr/opt-talos-dromaeojs-e10s: IwX91EMoR9mgnW5hS-SWQQ
+ test-windows10-64-qr/opt-talos-g1-e10s: SIraFvnJQESH-5vYdOpm9g
+ test-windows10-64-qr/opt-talos-g4-e10s: M_ZPHvlgS4mvzTlptqjkHQ
+ test-windows10-64-qr/opt-talos-g5-e10s: QHyqb18PSs-IOX9cuPLTlQ
+ test-windows10-64-qr/opt-talos-other-e10s: dDmHKvrzTZ6PnPTqov5UgA
+ test-windows10-64-qr/opt-talos-perf-reftest-e10s: GGkkCA-3Sj-pT4XWwxAlTQ
+ test-windows10-64-qr/opt-talos-perf-reftest-singletons-e10s: ACdz0eVkR0qz8Q2IKIgOXw
+ test-windows10-64-qr/opt-talos-realworld-webextensions-e10s: KeiIkvCIS0WwHi1u6-GPGg
+ test-windows10-64-qr/opt-talos-sessionrestore-many-windows-e10s: K19Z5NwlTye9TO6EiUfKqQ
+ test-windows10-64-qr/opt-talos-svgr-e10s: PdcBnwtoSGis6dGtQty7LQ
+ test-windows10-64-qr/opt-talos-tabswitch-e10s: Gk5RfwiXSd-zbEMpAyW-GA
+ test-windows10-64-qr/opt-talos-tp5o-e10s: REfgcVgfRhekJi0c-MZBAg
+ test-windows10-64-qr/opt-talos-webgl-e10s: Q1t0yzOjSO-DsaOGvccQtQ
+ test-windows10-64-qr/opt-talos-xperf-e10s: Ca9m5JH4TC67p9Ts-hXdyQ
+ test-windows10-64-qr/opt-web-platform-tests-crashtests-e10s: V9SQBqjiS92bGBAxwiZLmA
+ test-windows10-64-qr/opt-web-platform-tests-crashtests-fis-e10s: FbWtdQ8uSkKhWav4eNrscw
+ test-windows10-64-qr/opt-web-platform-tests-e10s-1: RClCXqSxSiis8sdj-XCeHA
+ test-windows10-64-qr/opt-web-platform-tests-e10s-10: UCB3ZBEoQMu441wSQjd4lw
+ test-windows10-64-qr/opt-web-platform-tests-e10s-11: X90PhlUmTaKUH2vq7YUqbA
+ test-windows10-64-qr/opt-web-platform-tests-e10s-12: MSmuYrI9RDKJgG6roWu4qA
+ test-windows10-64-qr/opt-web-platform-tests-e10s-2: edSgrMClRiG6cmfUPmF7Mg
+ test-windows10-64-qr/opt-web-platform-tests-e10s-3: Aalzs-ubSqGWl87BwqtMKA
+ test-windows10-64-qr/opt-web-platform-tests-e10s-4: dtYqPF-bS-uAjKOA-4regw
+ test-windows10-64-qr/opt-web-platform-tests-e10s-5: DeUxLTu3RDCpQX6wk2fnUw
+ test-windows10-64-qr/opt-web-platform-tests-e10s-6: CG1agFhwQY2d3XU_r78YPA
+ test-windows10-64-qr/opt-web-platform-tests-e10s-7: YGXerLH3Qp68NA3AHB_TGQ
+ test-windows10-64-qr/opt-web-platform-tests-e10s-8: XKRvxPF0Q3KYwwv4bdR77w
+ test-windows10-64-qr/opt-web-platform-tests-e10s-9: fq1NnzEIQ_CD5ZbRG2kCJg
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-1: WwXk4YzjR5CJnGMmEEIq4A
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-10: Gq47KJdHS5CUa4WTprCvcA
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-11: Zo3QoxnRQRif7BMLDkmsbg
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-12: ZmtN54x2SHuyhudvJUsufg
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-2: bZU4HjJlS3qZ9YtFdGymVw
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-3: L5mdb4dCQv2kjnncPUrtTA
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-4: L7fr0rtDSuOFaMVOBHUKMA
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-5: c8m7kKweRW6-AuxdN8u53Q
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-6: anXkJByKQCaQCkwUY5ESeA
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-7: cqFsyRKNQsqqYcIJ-8MLxQ
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-8: MkC29HPCRiyuF-wpj6LLuA
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-9: ZZuVBUiaTuCGV4vNjhIckQ
+ test-windows10-64-qr/opt-web-platform-tests-reftests-e10s-1: ZPBdO56pR8qys4k_-r0jmg
+ test-windows10-64-qr/opt-web-platform-tests-reftests-e10s-2: eIrkwHnmSaKUPGMCsSEkow
+ test-windows10-64-qr/opt-web-platform-tests-reftests-e10s-3: DSSjDgESRKOhM9pfumQWKA
+ test-windows10-64-qr/opt-web-platform-tests-reftests-e10s-4: SM8vgm9hRiGoYYqibiGJuQ
+ test-windows10-64-qr/opt-web-platform-tests-reftests-fis-e10s-1: ICDfNf6SRG-ySHF17IfF2g
+ test-windows10-64-qr/opt-web-platform-tests-reftests-fis-e10s-2: NJqrIUYNSq6_PVHZvPmW7w
+ test-windows10-64-qr/opt-web-platform-tests-reftests-fis-e10s-3: c5zE0yMkR3Gf-T5fr9b6Pg
+ test-windows10-64-qr/opt-web-platform-tests-reftests-fis-e10s-4: CK6d7ri-Rd2wWlpv_0p0AA
+ test-windows10-64-qr/opt-web-platform-tests-wdspec-e10s-1: QTNsZOiiQjKL95vnhiTp3A
+ test-windows10-64-qr/opt-web-platform-tests-wdspec-e10s-2: R1tTTIYrRdqhW95_btJeHg
+ test-windows10-64-qr/opt-web-platform-tests-wdspec-e10s-3: QDj-RsxCQkGiHLofYVzyFg
+ test-windows10-64-qr/opt-web-platform-tests-wdspec-fis-e10s-1: NHoSANs4TIewNeC2vNn9Rg
+ test-windows10-64-qr/opt-web-platform-tests-wdspec-fis-e10s-2: YSJlBe7uQSWm3tmFNu9gBg
+ test-windows10-64-qr/opt-web-platform-tests-wdspec-fis-e10s-3: NO_-5n-4S4iahhzC0Wud_g
+ test-windows10-64-ref-hw-2017/opt-raptor-jetstream2-firefox-e10s: EsQXigsWQOatCmgq4LMx5g
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-1-firefox-e10s: NTxAqL92QSmaq_JFVJpKXA
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-10-firefox-e10s: QP-FH6K0TI259Vi0TgFt-w
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-2-firefox-e10s: LX4_c9mUR1-tw5OpsfhE9g
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-3-firefox-e10s: f-l2iaPNTwuGZRnOvtF_Kg
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-4-firefox-e10s: Bmn7omy2QlaqNhNTbIesMQ
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-5-firefox-e10s: aXwnewmPSMWsi84NM494tQ
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-6-firefox-e10s: CHKzD_lySMGoit3GNGqtgQ
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-7-firefox-e10s: E6zrIWwrR4-6dzRMEaw_hg
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-8-firefox-e10s: JsmoRLnsQimQYI9exL5NmQ
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-9-firefox-e10s: bn2eMLTWTE6S00Cl2kxa6A
+ test-windows10-64-ref-hw-2017/opt-raptor-youtube-playback-firefox-e10s: UZ4wvnZUTZez3DpOhJHW1w
+ test-windows10-64-ref-hw-2017/opt-talos-g4-e10s: dLaUMAiiQFWQvAraevSEjQ
+ test-windows10-64-ref-hw-2017/opt-talos-webgl-e10s: bYxJ-4p-Tuu5ptmQHMK4DQ
+ test-windows10-64-shippable-qr/opt-awsy-base-e10s: RFY7uZhJSxOnDIgNb5137w
+ test-windows10-64-shippable-qr/opt-awsy-e10s: YPvoa-FqSx-IY-fFVx1FEg
+ test-windows10-64-shippable-qr/opt-awsy-tp6-e10s: UjioAPY5QcmU6vu9N5Qwew
+ test-windows10-64-shippable-qr/opt-awsy-tp6-fis-e10s: LoZEdcXeTt-vIRWLfcZmrg
+ test-windows10-64-shippable-qr/opt-crashtest-e10s: BI3ef4DAQAaapOFcXLfD8Q
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-1: cPmZGS0_SbKX9jhzlt1c_Q
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-2: AC-CMYbtTCOqbKy76cY2KQ
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-3: ApWqkS6lQNm8_R9u1fv_tA
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-4: acGdQEJ5SiuNPcO5vPP_Wg
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-5: fQvu8aD8Sg2zPnA3pnrGLA
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-6: XGKIF4XEQsO5vgbn8nhhvQ
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-7: FfU4LPs6QoWz4HqJPAwUMg
+ test-windows10-64-shippable-qr/opt-mochitest-e10s-1: N8UNne8XSKSqxIrQJnSNiQ
+ test-windows10-64-shippable-qr/opt-mochitest-e10s-2: I-FNbHIETLerEBOOUVeekw
+ test-windows10-64-shippable-qr/opt-mochitest-e10s-3: F67WVUVASjKKLsdDfRLhAQ
+ test-windows10-64-shippable-qr/opt-mochitest-e10s-4: Abw-wivOS0iRO1_omLoOOQ
+ test-windows10-64-shippable-qr/opt-mochitest-e10s-5: DxKmSGikRIGcugsZmIwBFA
+ test-windows10-64-shippable-qr/opt-mochitest-gpu-e10s: AtKVYMkfR7qL1dk8c7S-VA
+ test-windows10-64-shippable-qr/opt-mochitest-media-e10s: c6rgYmwGSjKHYxhmlEZOvg
+ test-windows10-64-shippable-qr/opt-mochitest-media-spi-e10s: Xe47G_frTW6gIgFkofHDKw
+ test-windows10-64-shippable-qr/opt-mochitest-webgl1-core-e10s: JAGG46nMQee9iczRooUwXw
+ test-windows10-64-shippable-qr/opt-mochitest-webgl2-core-e10s: AxxNdEHySNW9Fhyw7OnwdA
+ test-windows10-64-shippable-qr/opt-mochitest-webgpu-e10s: KciG9DSUQqysMu5Qh_z5oA
+ test-windows10-64-shippable-qr/opt-raptor-ares6-firefox-e10s: FhEVRKtJRn6HUTftcKtnYQ
+ test-windows10-64-shippable-qr/opt-raptor-ares6-firefox-fis-e10s: W2BfphnnSiiBVDKftgoqUw
+ test-windows10-64-shippable-qr/opt-raptor-jetstream2-firefox-e10s: fiX1iDxYQxGUcWj7EaMOeg
+ test-windows10-64-shippable-qr/opt-raptor-jetstream2-firefox-fis-e10s: UylXNLj5QnWs7AP-e7yGUA
+ test-windows10-64-shippable-qr/opt-raptor-motionmark-animometer-firefox-e10s: ElOuReuzQiWEZJRUziHlIA
+ test-windows10-64-shippable-qr/opt-raptor-motionmark-animometer-firefox-fis-e10s: ZNMuu1q2QlmL_i4lHoTHxA
+ test-windows10-64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: MqwcmYVNTtyncq_OaLMVKg
+ test-windows10-64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-fis-e10s: U8Qd7KpkT4Kl07LKOSQR2w
+ test-windows10-64-shippable-qr/opt-raptor-speedometer-firefox-e10s: XtUxArMcQOmfCvZ283MVVQ
+ test-windows10-64-shippable-qr/opt-raptor-speedometer-firefox-fis-e10s: IyaA8RZLRWyIqYjcr_V-Yg
+ test-windows10-64-shippable-qr/opt-raptor-stylebench-firefox-e10s: dhG9swrPRoqu51NckXWrwA
+ test-windows10-64-shippable-qr/opt-raptor-stylebench-firefox-fis-e10s: CyxgkIiwQVWY0SX7CK3fpw
+ test-windows10-64-shippable-qr/opt-raptor-sunspider-firefox-e10s: C8u00Gs8RZ270qjdtGoqfg
+ test-windows10-64-shippable-qr/opt-raptor-sunspider-firefox-fis-e10s: PWGyijwTTf26Ik8owdI39A
+ test-windows10-64-shippable-qr/opt-raptor-tp6-1-firefox-cold-e10s: aYSYH360Q7O2noNP0hMCkw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-1-firefox-e10s: HqwYD8tXT8iF4P98RFjbaA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-1-firefox-fis-e10s: JutPcnKHSDSyUZhWiEllQw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-10-firefox-cold-e10s: TlfJmr8vSTieSMxJetMCiA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-10-firefox-e10s: LOhve9i7QkeeSS4nIdD2dA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-10-firefox-fis-e10s: VI9QM1c7TIyMVqOmNWkqNQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-11-firefox-cold-e10s: VMFEWU6FQPm4b-IldtNmmw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-12-firefox-cold-e10s: JuTtAyrkR4-aLKQ-3OSquA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-13-firefox-cold-e10s: Ww4ltjDPQzWP5rsNPoHpfA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-14-firefox-cold-e10s: dxr_Lts9RAaozXtEx2tetw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-15-firefox-cold-e10s: LuyCOEugT1KpphWpWyly6g
+ test-windows10-64-shippable-qr/opt-raptor-tp6-16-firefox-cold-e10s: Cr_qBQjsSuKix3kT19kbTw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-17-firefox-cold-e10s: SzOGfGAbQiemUGpsDDkwqw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-18-firefox-cold-e10s: LA6BOTRIQx2ALs8WEHHu3w
+ test-windows10-64-shippable-qr/opt-raptor-tp6-19-firefox-cold-e10s: NZpT4U1gSMOj5xJW8rn_Dg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-2-firefox-cold-e10s: YFJnbygCShGiYfqOkUsMAw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-2-firefox-e10s: H01WN6RGQlSN4uGknzMWIA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-2-firefox-fis-e10s: acWpqZS8QOC_QSue2cVgYw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-20-firefox-cold-e10s: JRB5KA-uSkyBBhMW-GCWAg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-21-firefox-cold-e10s: ed3tfQq0TzCWmWdY-nQD5g
+ test-windows10-64-shippable-qr/opt-raptor-tp6-22-firefox-cold-e10s: KKqpNs3ISRqgpue5eionMQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-23-firefox-cold-e10s: CwZS_maXRCSVuMZMqilS3Q
+ test-windows10-64-shippable-qr/opt-raptor-tp6-24-firefox-cold-e10s: M59SkayzSKqSru5Oix2-DQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-25-firefox-cold-e10s: EoqK_WxWRumnN_OOR3cjjA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-26-firefox-cold-e10s: Sw0sp141R7ewGZgDg0sg3w
+ test-windows10-64-shippable-qr/opt-raptor-tp6-27-firefox-cold-e10s: VkTuGmhlSr-84-LPXosTFg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-28-firefox-cold-e10s: Rxs-1pPKTF2zg7Sfl8q1AA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-29-firefox-cold-e10s: MSzOviDPSDaIPLsrdGuIUg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-3-firefox-cold-e10s: MHsFhOwBTFqPPt6b__pFMA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-3-firefox-e10s: Lo0fbK0yTT2-IXfW2nNeUQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-3-firefox-fis-e10s: DZ1SMtVmQPS1NFn8VN1MVA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-30-firefox-cold-e10s: V2iLcbDMQf6gtxBRR2_Nuw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-4-firefox-cold-e10s: QE6S6C2ZR0u-FxA2NabZJQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-4-firefox-e10s: WIHdwTr3ThGyK30WAiTKlw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-4-firefox-fis-e10s: FiFwZ8o_RvOnyAzLIifb-Q
+ test-windows10-64-shippable-qr/opt-raptor-tp6-5-firefox-cold-e10s: XVhTIO9hS2S3HfCBB1gWPQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-5-firefox-e10s: LG586QSBRK6LGHVLOOrvPg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-5-firefox-fis-e10s: cWRn0M2gQby5qL5wSNEqMA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-6-firefox-cold-e10s: DmPvm9u0RNqds3GWw2qpCA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-6-firefox-e10s: V0lAJzmjSJGfLsD9vp5P8w
+ test-windows10-64-shippable-qr/opt-raptor-tp6-6-firefox-fis-e10s: DQo03XwgSW6Rhe2VF18Qog
+ test-windows10-64-shippable-qr/opt-raptor-tp6-7-firefox-cold-e10s: HjsSath_Q9m8FfbWUC0-YQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-7-firefox-e10s: CCqNkujUTSaGw-eQVGqu6Q
+ test-windows10-64-shippable-qr/opt-raptor-tp6-7-firefox-fis-e10s: eHEbwreBSsG4hIaZRWNFcw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-8-firefox-cold-e10s: Lp_1sbo4REi2E_32LgOdjQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-8-firefox-e10s: D_y1-0aOSoqn3lbAJ2LUqw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-8-firefox-fis-e10s: ZWazVekXS76MSEITE0emCg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-9-firefox-cold-e10s: f-txtiGPRxSjR7NUEHubpg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-9-firefox-e10s: CrEvRGvQSxWv5SwqYj_2ag
+ test-windows10-64-shippable-qr/opt-raptor-tp6-9-firefox-fis-e10s: GTzbCDenSL-wumUeEvKVGg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-binast-1-firefox-e10s: UkervXjzRMa08L25Q3GP7Q
+ test-windows10-64-shippable-qr/opt-raptor-tp6-binast-1-firefox-fis-e10s: cMka0hRoQ5WPVltss68l9w
+ test-windows10-64-shippable-qr/opt-raptor-wasm-godot-firefox-e10s: IJSNtoxRSQKpMsaHwfV4dw
+ test-windows10-64-shippable-qr/opt-raptor-wasm-godot-firefox-fis-e10s: fMgNom5SQ_qF2e1ES2t-Qw
+ test-windows10-64-shippable-qr/opt-raptor-webaudio-firefox-e10s: SbX3dQH-TAuH7rYB_Ur4Ng
+ test-windows10-64-shippable-qr/opt-raptor-webaudio-firefox-fis-e10s: SyyjNoWIRB-vCEcqHxpZVQ
+ test-windows10-64-shippable-qr/opt-raptor-youtube-playback-firefox-e10s: eZMnDGhqQYmx4_1KZTaNTQ
+ test-windows10-64-shippable-qr/opt-raptor-youtube-playback-firefox-fis-e10s: JSZ5BYtSSgqwmV9AUj6CfA
+ test-windows10-64-shippable-qr/opt-reftest-e10s-1: fUcMn3EyRraVQ0aOTKztgA
+ test-windows10-64-shippable-qr/opt-reftest-e10s-2: QqpwsyZrQ3q_YJ7mOeyjBQ
+ test-windows10-64-shippable-qr/opt-talos-chrome-e10s: cAdYd1QxTsuGa1y_LJN2sQ
+ test-windows10-64-shippable-qr/opt-talos-chrome-fis-e10s: UGYFQxG5TJWQUb3xQKamng
+ test-windows10-64-shippable-qr/opt-talos-damp-e10s: UlRSW0L0QaCi_iK2iabfmA
+ test-windows10-64-shippable-qr/opt-talos-damp-fis-e10s: Q8HAmjHfQKuhioj6piqkeA
+ test-windows10-64-shippable-qr/opt-talos-dromaeojs-e10s: eb0JK8VISY-g2tkGqnOkfQ
+ test-windows10-64-shippable-qr/opt-talos-dromaeojs-fis-e10s: RJxnV0i8SwC2O48Ra0KEPg
+ test-windows10-64-shippable-qr/opt-talos-g1-e10s: XUO2gNawT0OsuuYkNiJokQ
+ test-windows10-64-shippable-qr/opt-talos-g1-fis-e10s: TA9IYK8JSy2mWCt_E9eXiw
+ test-windows10-64-shippable-qr/opt-talos-g4-e10s: G7p-7IEyS2aY6C6DfT3zpg
+ test-windows10-64-shippable-qr/opt-talos-g4-fis-e10s: Uaa0lFOnQB6EKCaD9t3MIg
+ test-windows10-64-shippable-qr/opt-talos-g5-e10s: YSLi59w0QyaPkEGdFpkJOw
+ test-windows10-64-shippable-qr/opt-talos-g5-fis-e10s: JY-wWC63QqS_5e86VzDEwg
+ test-windows10-64-shippable-qr/opt-talos-other-e10s: JNBl4Q53RVq2J6XbPNf18Q
+ test-windows10-64-shippable-qr/opt-talos-other-fis-e10s: aGEPjdN8TX6RIsdM-8_G6Q
+ test-windows10-64-shippable-qr/opt-talos-perf-reftest-e10s: LHOCf9b6S-GDhNMDQx2yCQ
+ test-windows10-64-shippable-qr/opt-talos-perf-reftest-fis-e10s: fMh64pF3Q8uiZ_Z18SmoYQ
+ test-windows10-64-shippable-qr/opt-talos-perf-reftest-singletons-e10s: B-nFwpZbRWu3RBNG7-eS-A
+ test-windows10-64-shippable-qr/opt-talos-perf-reftest-singletons-fis-e10s: cqURoT9_Qf-WWt0ofBhY5A
+ test-windows10-64-shippable-qr/opt-talos-realworld-webextensions-e10s: O-31G44aTDGDonu6pJfXnA
+ test-windows10-64-shippable-qr/opt-talos-realworld-webextensions-fis-e10s: encsyee8RAu6LsOzSlNmkw
+ test-windows10-64-shippable-qr/opt-talos-sessionrestore-many-windows-e10s: KWcOXeWtQt6s8f_LooQtBg
+ test-windows10-64-shippable-qr/opt-talos-sessionrestore-many-windows-fis-e10s: c3qKmFhTQciFYo9S7jV69Q
+ test-windows10-64-shippable-qr/opt-talos-svgr-e10s: NzMD09sFSQOvJM3qz1cnhA
+ test-windows10-64-shippable-qr/opt-talos-svgr-fis-e10s: W8KPC5V9RCiON-KZQT_rVA
+ test-windows10-64-shippable-qr/opt-talos-tabswitch-e10s: XZO_INu6SFWriOU9eIzN-Q
+ test-windows10-64-shippable-qr/opt-talos-tabswitch-fis-e10s: Ovsq5znURx2lN-kpILfcrg
+ test-windows10-64-shippable-qr/opt-talos-tp5o-e10s: U_SsFO51R4qX8CZRd1SubA
+ test-windows10-64-shippable-qr/opt-talos-tp5o-fis-e10s: F0-igK4dSgavazSdTagUnQ
+ test-windows10-64-shippable-qr/opt-talos-webgl-e10s: K7y54qFSTSKNPidJH7IbAg
+ test-windows10-64-shippable-qr/opt-talos-webgl-fis-e10s: DzjlKq0BQo2gp7OTn29uBQ
+ test-windows10-64-shippable-qr/opt-talos-xperf-e10s: crX0PGryRQ2upZ7ui9k3gQ
+ test-windows10-64-shippable-qr/opt-talos-xperf-fis-e10s: OtBF7HpFR3yTUVYsbL69OQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-crashtests-e10s: IikhI7FWTeSWE0Fu7U9MQw
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-1: RgZCZF4QRPCJy-NX23mAUg
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-10: F3FTs0qeTvSHNEAc0N8ajQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-11: dHOaPOwLQx-pitmJ68UDhQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-12: Bb8l1yu-TJa21hxQWk3SRQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-2: Meqv_Zf1QdCUg3wIh3miqA
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-3: LxwZuG2FRdSakD30DP5Wcw
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-4: fIOvsSjYTdGjbsG7DQ4Lgw
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-5: HbiWstn6R9KVZsrEKMfTcQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-6: WlFEaNFyTpeCkm61lr31vw
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-7: Pdz3m1siTHeVgO3zhtvoSw
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-8: B18EwLBQR9-wDgORGREx-Q
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-9: D3pSMF9cR9K-5j9KpihGCw
+ test-windows10-64-shippable-qr/opt-web-platform-tests-reftests-e10s-1: NpWOzOXaRpqv8cIOlhCGVA
+ test-windows10-64-shippable-qr/opt-web-platform-tests-reftests-e10s-2: GRbs_QfHQAODa7J3Y5iAUQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-reftests-e10s-3: WJl8ts0tT1C1Lf6eE3HnPQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-reftests-e10s-4: MxswqwzaQ--kJx3GifIcqA
+ test-windows10-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-1: L4KPBr3WSyioSLplO4CL7Q
+ test-windows10-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-2: DOE6WZxrTbqXZnqW-zixjg
+ test-windows10-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-3: ZgPE5O1rSIGVCKcsOkmveA
+ test-windows10-64-shippable/opt-awsy-base-e10s: NpxI_tmWSFWc8AxxlZoZjw
+ test-windows10-64-shippable/opt-awsy-e10s: S8Di8aw-Q0uBWl9fwABbDg
+ test-windows10-64-shippable/opt-awsy-tp6-e10s: A9paOOf9QOmgjQux4iWoXA
+ test-windows10-64-shippable/opt-browser-screenshots-e10s: e1AATKSBRSaCZydjnsti-A
+ test-windows10-64-shippable/opt-browsertime-tp6-chrome-cold-amazon-e10s: CgSHBVG-SYiQ8ZH0KZQSNg
+ test-windows10-64-shippable/opt-browsertime-tp6-firefox-amazon-e10s: UySNl6a5SESOk4mPAyFdcg
+ test-windows10-64-shippable/opt-browsertime-tp6-firefox-cold-amazon-e10s: IwNvH3Y1RH2NAn7L2SBX3w
+ test-windows10-64-shippable/opt-browsertime-tp6-profiling-firefox-amazon-e10s: DJSkLMY-R1CELtio516ERA
+ test-windows10-64-shippable/opt-browsertime-tp6-profiling-firefox-cold-amazon-e10s: OHnsKmRPQCKLBPlRgITgjA
+ test-windows10-64-shippable/opt-cppunit-1proc: M1FE9jUHTCaQZlluQvggdw
+ test-windows10-64-shippable/opt-crashtest-e10s: TUMwnVJDRai-V-NpIXrMaw
+ test-windows10-64-shippable/opt-firefox-ui-functional-local-e10s: Agx9OAhISOS2NnXB7cB0qQ
+ test-windows10-64-shippable/opt-firefox-ui-functional-remote-e10s: D8YOjqZqTW2SiIT-mhzPrw
+ test-windows10-64-shippable/opt-jsreftest-e10s-1: f0-w5-sLRPS5503NtXec9A
+ test-windows10-64-shippable/opt-jsreftest-e10s-2: CPHbjcukTR2JwLTgzlZE9w
+ test-windows10-64-shippable/opt-marionette-e10s: UprRhY_FTX6Hr4Gkrs3XRA
+ test-windows10-64-shippable/opt-marionette-gpu-e10s: ZMvsUaKDRaio7PdRblrPOQ
+ test-windows10-64-shippable/opt-mochitest-a11y-1proc: aPYyoyAXQieTPHBq3qZf2A
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-1: O2A38rPiR_G95cvc8Lw7Kg
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-2: eRhZtEGlR0yKZc04ot-x6w
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-3: H9jcPn4cQKucGgWdWUgvuQ
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-4: EbNT2FlMS22gYwOWNVCZfA
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-5: EYG_J9tMTLqAk1PBU58R6w
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-6: HBMnYhkoS42LBvho7fmFIg
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-7: dtIcWhfbTy2VFZee_AKuoQ
+ test-windows10-64-shippable/opt-mochitest-chrome-1proc-1: CKctHr2hQcKhmVcvl8XenQ
+ test-windows10-64-shippable/opt-mochitest-chrome-1proc-2: GrLRzoSVT5O4NpyLsks9Ag
+ test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-1: V5s1vCBMQGy9dxF7Au45Ug
+ test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-2: CouvmGJ-QiOHcmIRHAet9A
+ test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-3: W43QTlx7SZ6i-i-1kgGD_g
+ test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-4: YTtu7shbQva3Ghc85laHTw
+ test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-5: ftinPnx8Qc6WxMO33tZSLw
+ test-windows10-64-shippable/opt-mochitest-e10s-1: fdkcremFT8iIgG08J_5PKQ
+ test-windows10-64-shippable/opt-mochitest-e10s-2: f92s-LgeRUG3uGeXANv-LA
+ test-windows10-64-shippable/opt-mochitest-e10s-3: er8Hx7A8QEqbcUXk0Wawng
+ test-windows10-64-shippable/opt-mochitest-e10s-4: DTC0_K3uRMmMccfknmZMJQ
+ test-windows10-64-shippable/opt-mochitest-e10s-5: RDie41GRSsSP-6F2_N_v7Q
+ test-windows10-64-shippable/opt-mochitest-gpu-e10s: ckZloQttTOGpWw37mPqbNg
+ test-windows10-64-shippable/opt-mochitest-media-e10s: Qs9GrtoFR9ub64Hf0GrJdw
+ test-windows10-64-shippable/opt-mochitest-media-spi-e10s: JoLV_XiFTHe4PaCkXq6wAQ
+ test-windows10-64-shippable/opt-mochitest-remote-e10s: eJS4m5r2RjGRfLUFMnxqSw
+ test-windows10-64-shippable/opt-mochitest-webgl1-core-e10s: Jlkl0MR_Qc2Ca_Okl2_D3g
+ test-windows10-64-shippable/opt-mochitest-webgl1-ext-e10s: P-RN5_EuTC6K5Lpww6thNQ
+ test-windows10-64-shippable/opt-mochitest-webgl2-core-e10s: KK6YttDnTIOkH7OVXLrdiw
+ test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-1: cSTPDXIbSmaItzK8BILkRQ
+ test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-2: Uby6fdwwQJCebrQBraSBNg
+ test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-3: DoiJAsaKQQm1iPwcHPM9dw
+ test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-4: Qmajp6vHTrm3g3KHklIwiA
+ test-windows10-64-shippable/opt-mochitest-webgpu-e10s: P9wBrASdSQOGKDpuag1YqQ
+ test-windows10-64-shippable/opt-raptor-ares6-firefox-e10s: L70O2h86TmeZD4G30rfw_Q
+ test-windows10-64-shippable/opt-raptor-ares6-firefox-profiling-e10s: NvOS5pZLQSSal4x-efcP5A
+ test-windows10-64-shippable/opt-raptor-jetstream2-firefox-e10s: cpf-22pWQqCmW0WRoJerlg
+ test-windows10-64-shippable/opt-raptor-jetstream2-firefox-profiling-e10s: fSegP60aQWeQXUlSyTpSWA
+ test-windows10-64-shippable/opt-raptor-motionmark-animometer-firefox-e10s: RiOVOq9bSNSAGnkKD63_4A
+ test-windows10-64-shippable/opt-raptor-motionmark-animometer-firefox-profiling-e10s: YNEb7ykVST-0sdGteo58Ig
+ test-windows10-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: A2K3enRkS1etFUodGUkJ3Q
+ test-windows10-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-profiling-e10s: C_Bt__ezSgCP8TBtRhZ0nA
+ test-windows10-64-shippable/opt-raptor-speedometer-firefox-e10s: F2lVcHktTDCcq-f3QV9Neg
+ test-windows10-64-shippable/opt-raptor-speedometer-firefox-profiling-e10s: aaHST-ggTO6_fuRftw9GCw
+ test-windows10-64-shippable/opt-raptor-stylebench-firefox-e10s: RItx6xnDR9a2RUdYodCmsg
+ test-windows10-64-shippable/opt-raptor-stylebench-firefox-profiling-e10s: YAp1Yj7CTzK2KuXZqBeplQ
+ test-windows10-64-shippable/opt-raptor-sunspider-firefox-e10s: TLv8NyaJSmSzGCj-11RnHQ
+ test-windows10-64-shippable/opt-raptor-sunspider-firefox-profiling-e10s: PZTlWx8TSyaAPn5QBF0PWg
+ test-windows10-64-shippable/opt-raptor-tp6-1-firefox-cold-e10s: Vj3Dp2B2TGSk58img_8_Hw
+ test-windows10-64-shippable/opt-raptor-tp6-1-firefox-e10s: Es8_u4WmQPmrqF06Pq9oEQ
+ test-windows10-64-shippable/opt-raptor-tp6-1-firefox-profiling-e10s: aL6Hwrz6S5iMOYMemPcfrQ
+ test-windows10-64-shippable/opt-raptor-tp6-10-firefox-cold-e10s: Lb63H9quRSOeOwZaxBpJmw
+ test-windows10-64-shippable/opt-raptor-tp6-10-firefox-e10s: AkrcMgosTWeqPv4Iy73AHg
+ test-windows10-64-shippable/opt-raptor-tp6-10-firefox-profiling-e10s: aqmgJoqNRZm6PPQD694FfA
+ test-windows10-64-shippable/opt-raptor-tp6-11-firefox-cold-e10s: Y6Q-Rqm9TPyZKoZcoKQ3pw
+ test-windows10-64-shippable/opt-raptor-tp6-12-firefox-cold-e10s: MiDXlKAbQc-4KVMJuNdKhw
+ test-windows10-64-shippable/opt-raptor-tp6-13-firefox-cold-e10s: E7o9-ejoTxeXWuh0Wwz9RQ
+ test-windows10-64-shippable/opt-raptor-tp6-14-firefox-cold-e10s: Q49ALU2ASFe-YfES0dJXJw
+ test-windows10-64-shippable/opt-raptor-tp6-15-firefox-cold-e10s: PI6hc0GCS0ymqWeOZUerxQ
+ test-windows10-64-shippable/opt-raptor-tp6-16-firefox-cold-e10s: MhiNg4hzT423ZiHjrKWJpw
+ test-windows10-64-shippable/opt-raptor-tp6-17-firefox-cold-e10s: RAL-e-H6Smue-U-4vXZpxw
+ test-windows10-64-shippable/opt-raptor-tp6-18-firefox-cold-e10s: EGdFwwQGRsSMsSANpymMgg
+ test-windows10-64-shippable/opt-raptor-tp6-19-firefox-cold-e10s: IVTnj3rbQqWcGMF0vx6UNA
+ test-windows10-64-shippable/opt-raptor-tp6-2-firefox-cold-e10s: JsmwV_GWSg27enm85HgVDg
+ test-windows10-64-shippable/opt-raptor-tp6-2-firefox-e10s: K3cq1zaIQ2S7Yrdvm6toQg
+ test-windows10-64-shippable/opt-raptor-tp6-2-firefox-profiling-e10s: HURBH6rmR76V9c7ztGjbLw
+ test-windows10-64-shippable/opt-raptor-tp6-20-firefox-cold-e10s: LmseXB8MQ-iDXUZRGTbNQw
+ test-windows10-64-shippable/opt-raptor-tp6-21-firefox-cold-e10s: L5mZo9WeTCydhMCibnNkvg
+ test-windows10-64-shippable/opt-raptor-tp6-22-firefox-cold-e10s: HrbnpZjxSfSXJTLXDo8Y0Q
+ test-windows10-64-shippable/opt-raptor-tp6-23-firefox-cold-e10s: YDqnNthoQyeQy6wAZL_YeA
+ test-windows10-64-shippable/opt-raptor-tp6-24-firefox-cold-e10s: aaMBIZH7QpuZSh9UU21R1g
+ test-windows10-64-shippable/opt-raptor-tp6-25-firefox-cold-e10s: ZvODqIkCT5SRjtSKBZdp2g
+ test-windows10-64-shippable/opt-raptor-tp6-26-firefox-cold-e10s: OVrflOipSKWesuVzGUQ97w
+ test-windows10-64-shippable/opt-raptor-tp6-27-firefox-cold-e10s: cWLAn7xiRPO3FTvOdgjD4A
+ test-windows10-64-shippable/opt-raptor-tp6-28-firefox-cold-e10s: ejjmY00WRJ2q1L8AN3TMmQ
+ test-windows10-64-shippable/opt-raptor-tp6-29-firefox-cold-e10s: aaBFv-DDRFqlLBU2IYmJdg
+ test-windows10-64-shippable/opt-raptor-tp6-3-firefox-cold-e10s: CQdGqK_pT5-0KOcjs3xAXg
+ test-windows10-64-shippable/opt-raptor-tp6-3-firefox-e10s: BOp02Rj7S0O3M0nR1YQrLQ
+ test-windows10-64-shippable/opt-raptor-tp6-3-firefox-profiling-e10s: YneV4veoRaGa15Ok8-U07w
+ test-windows10-64-shippable/opt-raptor-tp6-30-firefox-cold-e10s: Y1mJMelESyWc31C5rnTAEA
+ test-windows10-64-shippable/opt-raptor-tp6-4-firefox-cold-e10s: YUCoNMQbRJucufggCXuyWA
+ test-windows10-64-shippable/opt-raptor-tp6-4-firefox-e10s: f680hxAWQP62Ah-zQ7ejzw
+ test-windows10-64-shippable/opt-raptor-tp6-4-firefox-profiling-e10s: DSF13-ssS0eUS4-PZeg7UA
+ test-windows10-64-shippable/opt-raptor-tp6-5-firefox-cold-e10s: N52RHHSsTy2IBVHWMDDc3A
+ test-windows10-64-shippable/opt-raptor-tp6-5-firefox-e10s: ZA4qlHykQ4Gh95DFNApyjg
+ test-windows10-64-shippable/opt-raptor-tp6-5-firefox-profiling-e10s: SgnFK8gaRYW1WwfzJ3_F6A
+ test-windows10-64-shippable/opt-raptor-tp6-6-firefox-cold-e10s: VH1c51peTPae9feWLB1x2A
+ test-windows10-64-shippable/opt-raptor-tp6-6-firefox-e10s: RePzEQzXRByQoLzggLhUgA
+ test-windows10-64-shippable/opt-raptor-tp6-6-firefox-profiling-e10s: ZPNmGyfyRt6_cfrthyKt3A
+ test-windows10-64-shippable/opt-raptor-tp6-7-firefox-cold-e10s: QPt1VvdGRfmSzhrrXTm1xQ
+ test-windows10-64-shippable/opt-raptor-tp6-7-firefox-e10s: Wzw-RmmvQKuxJhevB3iVHA
+ test-windows10-64-shippable/opt-raptor-tp6-7-firefox-profiling-e10s: CDeItvQ_QEKR_tE6tJKG0Q
+ test-windows10-64-shippable/opt-raptor-tp6-8-firefox-cold-e10s: NBtAKKdEQPmihcEqIdrDoQ
+ test-windows10-64-shippable/opt-raptor-tp6-8-firefox-e10s: ASngoNXQTnqcgD5H8aqvSw
+ test-windows10-64-shippable/opt-raptor-tp6-8-firefox-profiling-e10s: KgteMG3sTNGYBpBsytH7mg
+ test-windows10-64-shippable/opt-raptor-tp6-9-firefox-cold-e10s: fg5HkgfmSn-bIICG5moODA
+ test-windows10-64-shippable/opt-raptor-tp6-9-firefox-e10s: Vg5bQIirRq2TKS-FYFJCHQ
+ test-windows10-64-shippable/opt-raptor-tp6-9-firefox-profiling-e10s: CPwWXxFMRdWoTnsH_1z69w
+ test-windows10-64-shippable/opt-raptor-tp6-binast-1-firefox-e10s: KVyjNNveTb-9XutNizhhEw
+ test-windows10-64-shippable/opt-raptor-wasm-godot-firefox-e10s: KKLD-M22Qv6fHg_BcB5n0w
+ test-windows10-64-shippable/opt-raptor-wasm-godot-firefox-profiling-e10s: eLjL9LrDTBmfq00NM39o4w
+ test-windows10-64-shippable/opt-raptor-webaudio-firefox-e10s: TiYFD7tXTjWmjEJT0Yt_jw
+ test-windows10-64-shippable/opt-raptor-webaudio-firefox-profiling-e10s: XRPUfz5gTES2DkLTJEEGfA
+ test-windows10-64-shippable/opt-raptor-youtube-playback-firefox-e10s: OwuuZ5WoQRKTACl_KBQ-9g
+ test-windows10-64-shippable/opt-raptor-youtube-playback-firefox-profiling-e10s: W20FHgdHToiCftAC0J45Vw
+ test-windows10-64-shippable/opt-reftest-e10s-1: Wx51KDMITZqwRWwJekAvYQ
+ test-windows10-64-shippable/opt-reftest-e10s-2: VE7OrnqwSZyW1jPGVNJBqA
+ test-windows10-64-shippable/opt-talos-bcv-e10s: OrTd0EeXTeO2WU_RQMKUig
+ test-windows10-64-shippable/opt-talos-bcv-profiling-e10s: ZivknYOtR5S6csTEXn1aTQ
+ test-windows10-64-shippable/opt-talos-chrome-e10s: QxKMY3gsRs-f6PR2dwdglg
+ test-windows10-64-shippable/opt-talos-chrome-profiling-e10s: OnJSaIOgSSGR6swkosDh_g
+ test-windows10-64-shippable/opt-talos-damp-e10s: buYNG52WSgGaUPj76F-QSQ
+ test-windows10-64-shippable/opt-talos-dromaeojs-e10s: BYiJhT5XSYu_Yt0YrYREsw
+ test-windows10-64-shippable/opt-talos-dromaeojs-profiling-e10s: Vt18vdIeRqiO79zVpN60pQ
+ test-windows10-64-shippable/opt-talos-g1-e10s: JtPRdJW-RZmi2XIixu26MA
+ test-windows10-64-shippable/opt-talos-g1-profiling-e10s: Gy-wPmBkS2Sh-V4rZfPGRg
+ test-windows10-64-shippable/opt-talos-g3-profiling-e10s: bb22Y6SgTvqIajuuUfuDDw
+ test-windows10-64-shippable/opt-talos-g4-e10s: E45ovx9qRaSJC5j9YD8RdQ
+ test-windows10-64-shippable/opt-talos-g4-profiling-e10s: LgEAXtV2Rimewu7yMIM86Q
+ test-windows10-64-shippable/opt-talos-g5-e10s: bv3K9Cw4S_ivTbqpJQruUA
+ test-windows10-64-shippable/opt-talos-g5-profiling-e10s: TCTNFHPsTviaKkGNRZ9B0Q
+ test-windows10-64-shippable/opt-talos-motionmark-profiling-e10s: HsTypbkDRzmuCQ2crOvuHg
+ test-windows10-64-shippable/opt-talos-other-e10s: D7njtMfBQyeNtFh1T8QJ0w
+ test-windows10-64-shippable/opt-talos-other-profiling-e10s: BemUBpiUSdeW_Jwxnvf4lg
+ test-windows10-64-shippable/opt-talos-perf-reftest-e10s: OmbRANhQT_-Lo3S7akQHUA
+ test-windows10-64-shippable/opt-talos-perf-reftest-profiling-e10s: a0uMt-YAS8W5axDGbz5ksg
+ test-windows10-64-shippable/opt-talos-perf-reftest-singletons-e10s: eX3EhE-9TjiLen1FoNshvA
+ test-windows10-64-shippable/opt-talos-perf-reftest-singletons-profiling-e10s: NU4FgBWzRjKYjMpme0fwqw
+ test-windows10-64-shippable/opt-talos-realworld-webextensions-e10s: BtKkq9AoRvOSOzDLJKZEIA
+ test-windows10-64-shippable/opt-talos-realworld-webextensions-profiling-e10s: aNWTqkDiSpKpC6cR5vGt5Q
+ test-windows10-64-shippable/opt-talos-sessionrestore-many-windows-e10s: Kz8H9mnJQmWjRtdCMLbTMA
+ test-windows10-64-shippable/opt-talos-sessionrestore-many-windows-profiling-e10s: C9SOHQxAQ8ONqIoa0InckA
+ test-windows10-64-shippable/opt-talos-svgr-e10s: GUHLaRs_ToWH29RksN-2Mw
+ test-windows10-64-shippable/opt-talos-svgr-profiling-e10s: U4Fp-ugMR2yIuzZDV__xmQ
+ test-windows10-64-shippable/opt-talos-tabswitch-e10s: Ushtm2_MQVeZeSN9cg0jVg
+ test-windows10-64-shippable/opt-talos-tabswitch-profiling-e10s: Hdlg8B6uQLywt3kcAc9OBA
+ test-windows10-64-shippable/opt-talos-tp5o-e10s: Ua05MJ6CTXeLHavPzj9hYw
+ test-windows10-64-shippable/opt-talos-tp5o-profiling-e10s: EYIUP2EZRiSAY3i-OdYAHQ
+ test-windows10-64-shippable/opt-talos-webgl-e10s: ENjNIBC8SJSOqG80HGP01Q
+ test-windows10-64-shippable/opt-talos-xperf-e10s: TISVHvdFRNmW5bvCGn1VqA
+ test-windows10-64-shippable/opt-telemetry-tests-client-e10s: R0nLKptvQ2qju3v33cwLfQ
+ test-windows10-64-shippable/opt-web-platform-tests-crashtests-e10s: OZgXaBUBQmGZZeRO-hrLaQ
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-1: JU3HTR52S9SrjAluucag4A
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-10: UtNs8Vh4Rrm6nOBaIyNkGg
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-11: CJ_ibGY2TRGzUTaEe4yw4Q
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-12: Z5WkOXv8R4-9rfIq8YFPXw
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-2: QbZo3jf5QVuk_1onmhXAnw
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-3: FStgzGIzQ6S84BjXeJ5ixg
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-4: WCoXsgujSSOzIkz4rvioVg
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-5: cDY4uUzHTzKRm15mTXwb2Q
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-6: DLZsdMMoSM2Eud6i54GW7g
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-7: ep7G12YzQUCWMDfLudm0xw
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-8: Pfuek6XJTxSTU60G7fiv6A
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-9: PH8LYfkaQQ6oHT34bqDGnw
+ test-windows10-64-shippable/opt-web-platform-tests-reftests-e10s-1: G7ZvPALjS86usa-NP8TVqA
+ test-windows10-64-shippable/opt-web-platform-tests-reftests-e10s-2: XGpAHu2uTiG1-uOq06rnkw
+ test-windows10-64-shippable/opt-web-platform-tests-reftests-e10s-3: chtUZqEGRXWIojJ0wer7Fw
+ test-windows10-64-shippable/opt-web-platform-tests-reftests-e10s-4: AN6BAJdbS6myyol4Yd3Trg
+ test-windows10-64-shippable/opt-web-platform-tests-wdspec-e10s-1: KURck8xDRSq1FWGbpclFSw
+ test-windows10-64-shippable/opt-web-platform-tests-wdspec-e10s-2: Jl_LyLszS826bWoIzp_-Aw
+ test-windows10-64-shippable/opt-web-platform-tests-wdspec-e10s-3: IxmbM36HTGG1LfXLtzWT_Q
+ test-windows10-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: SGE3kcyjS4GdHtono2jTRg
+ test-windows10-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: S4KRSIMKSNiU2APAaURcWw
+ test-windows10-64-shippable/opt-xpcshell-e10s-1: IcOnFMDyQ4yQN-A2HZj8vw
+ test-windows10-64-shippable/opt-xpcshell-e10s-2: YXGJ6KaGR1mMu3CBsu0ycA
+ test-windows10-64/debug-cppunit-1proc: fNDS_poQRVaERQa1mAr3UQ
+ test-windows10-64/debug-crashtest-e10s: IR0c7Hl9TmuMcUSpxSQ3Jg
+ test-windows10-64/debug-firefox-ui-functional-local-e10s: A5MN1k_8QPiU96Tlk_S-Iw
+ test-windows10-64/debug-firefox-ui-functional-remote-e10s: NLJMdJRfSfOnCaZK8ayjsQ
+ test-windows10-64/debug-gtest-1proc: J0DbR21DRBCUdAHZr9jLrQ
+ test-windows10-64/debug-jsreftest-e10s-1: cSZEUn7MSaSrEIYbceOa6A
+ test-windows10-64/debug-jsreftest-e10s-2: eQUD5FDcSAGJF-IKpvoN0A
+ test-windows10-64/debug-jsreftest-e10s-3: HJEemd_uTdKaxjVjeQuv0g
+ test-windows10-64/debug-marionette-e10s: I6dL6UyPRw6HLFTCLrw-1w
+ test-windows10-64/debug-marionette-gpu-e10s: Wbcqia1MR_iK7SCFbsukAA
+ test-windows10-64/debug-mochitest-a11y-1proc: fJ421k-TRUmQVQ2cv-HuVg
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-1: Yy2P3cGYQ76tJPBnCn1QjQ
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-2: HDuaXuJ6R22ITVlDVrlZuA
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-3: NmnpSg5HTW2UjQsje2DK7A
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-4: OGf4P0i3T3mLBVxD6wimxA
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-5: BuCxybBdQEeowKQMdUyN8w
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-6: G3Sdu_PlRQeY_H_2YEqLeQ
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-7: CPFgUHwXRW6xVwCX1DXfxg
+ test-windows10-64/debug-mochitest-chrome-1proc-1: Ecc39hSvR1CavqPl2IC2rQ
+ test-windows10-64/debug-mochitest-chrome-1proc-2: flZvRm9-Tq2BxpYKCTIJpg
+ test-windows10-64/debug-mochitest-chrome-1proc-3: GImQJPm8QTqRWacRf0RSWA
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-1: RUI2XdgPTRSs0O6SKQtMXA
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-2: UkavNYGGRSiBvsYP9xWASA
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-3: aM6mrh4qS-yuwS9EKGZQgg
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-4: LMtmPeMZS5eUEHBKMZB8ig
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-5: NBw2imNMQySTNItaz3xZrQ
+ test-windows10-64/debug-mochitest-e10s-1: bB1x5dqST6yhRNJFaAlkMw
+ test-windows10-64/debug-mochitest-e10s-2: WjL77yxLQFO6MURDnwZKvQ
+ test-windows10-64/debug-mochitest-e10s-3: TPoltnVHQ4ip73ReMh-u0w
+ test-windows10-64/debug-mochitest-e10s-4: AdS81rcuR_CTg7j1OD9xUw
+ test-windows10-64/debug-mochitest-e10s-5: VXHtnxMPQCC3puZyQ5VfVQ
+ test-windows10-64/debug-mochitest-gpu-e10s: dtJNtrhoT7uMYs-h4LB9Eg
+ test-windows10-64/debug-mochitest-media-e10s: LO7olhztS6aLAFpS158YWw
+ test-windows10-64/debug-mochitest-media-spi-e10s: GjV2yGsLSLK0k-qbtkr7rQ
+ test-windows10-64/debug-mochitest-remote-e10s: eiUEiRqdRs-44pZeWGAXGg
+ test-windows10-64/debug-mochitest-webgl1-core-e10s: bp-mhP8dSJqhq0Bdqs07FA
+ test-windows10-64/debug-mochitest-webgl1-ext-e10s: L_mMHOdQQNaFtX0rcUTCdQ
+ test-windows10-64/debug-mochitest-webgl2-core-e10s: LF3W0xsCTk-f3qwEIPjPow
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-1: RLL8TV_ERNiRBLzAlR1-tA
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-2: W2Xok4ifQnm_9quVRaDGYw
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-3: MQBHrVCURCOTyfEgVa3jeg
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-4: QkOiKhZ7QJGNCIZrz0MJFg
+ test-windows10-64/debug-mochitest-webgpu-e10s: aP3uV12eR9K8Qxanp2nCUw
+ test-windows10-64/debug-reftest-e10s-1: VCUj3aU5TyujynaVRjskHw
+ test-windows10-64/debug-reftest-e10s-2: fB1HwP4XTE6rcOL-hP9qEA
+ test-windows10-64/debug-reftest-e10s-3: YWSwfgWyQ4izksOZokXICA
+ test-windows10-64/debug-reftest-e10s-4: G7wppz4zTQOQjM6SbERDhw
+ test-windows10-64/debug-telemetry-tests-client-e10s: cYwfGfIBTIWtDtGc-SjiqQ
+ test-windows10-64/debug-web-platform-tests-crashtests-e10s: GMTbaSwJTwqqK2v5SMyczA
+ test-windows10-64/debug-web-platform-tests-e10s-1: b3Y1Vvb0TO65C0UFUN7mSA
+ test-windows10-64/debug-web-platform-tests-e10s-10: HZcBnH3yQ9K5FmvRFyD3Bw
+ test-windows10-64/debug-web-platform-tests-e10s-11: R6Ny4nifSIO0tjelsGwzDQ
+ test-windows10-64/debug-web-platform-tests-e10s-12: dwf1xrS1RzuxrbZAoZk3Yw
+ test-windows10-64/debug-web-platform-tests-e10s-13: SujWz9KZRc-cOjtxq_1Wqw
+ test-windows10-64/debug-web-platform-tests-e10s-14: Gc1A_BLUTQ26bAX5pYkgxw
+ test-windows10-64/debug-web-platform-tests-e10s-15: eI6971Y7R22_m91uJ1WkAA
+ test-windows10-64/debug-web-platform-tests-e10s-16: cf1cwf0lQDSek6XOWzUPCA
+ test-windows10-64/debug-web-platform-tests-e10s-17: FqwayIBsQSm9Rz0ZGkJcUg
+ test-windows10-64/debug-web-platform-tests-e10s-18: Xaepwh4cT_Gvoc4gZE8QbA
+ test-windows10-64/debug-web-platform-tests-e10s-2: YiC42o0jQ-Cnk8FIri4pQA
+ test-windows10-64/debug-web-platform-tests-e10s-3: B6Iz1onDSJOh96rYrV762w
+ test-windows10-64/debug-web-platform-tests-e10s-4: Gs6sD0WvRTGD41R9K-Cm_Q
+ test-windows10-64/debug-web-platform-tests-e10s-5: E1Alm7mgSP-MfN5WZM4wlA
+ test-windows10-64/debug-web-platform-tests-e10s-6: Fw-9gGXpSbKvaUg9tm-ucQ
+ test-windows10-64/debug-web-platform-tests-e10s-7: DsgMYFtbRYm4NqkXlQrkfA
+ test-windows10-64/debug-web-platform-tests-e10s-8: F6mMRvCQSOisL6uE62cJDA
+ test-windows10-64/debug-web-platform-tests-e10s-9: QFDUzlpbS82XDxnCSdcy5g
+ test-windows10-64/debug-web-platform-tests-reftests-e10s-1: NMCg6Vm-ToCAT0m-QY1Phw
+ test-windows10-64/debug-web-platform-tests-reftests-e10s-2: R3C1_fjURbudDSLbLDK8dg
+ test-windows10-64/debug-web-platform-tests-reftests-e10s-3: NyS4QbhDR7iiUVGEz2ezHA
+ test-windows10-64/debug-web-platform-tests-reftests-e10s-4: Shq1j8D9QOuWq8T_zbyyfg
+ test-windows10-64/debug-web-platform-tests-reftests-e10s-5: PqV6gZ7WTvqc9BWm1wI8qA
+ test-windows10-64/debug-web-platform-tests-wdspec-e10s-1: Plyt2cQWSJWz9eLmHvBU8Q
+ test-windows10-64/debug-web-platform-tests-wdspec-e10s-2: Xf32g-XZRvmxcRFNZeRELw
+ test-windows10-64/debug-web-platform-tests-wdspec-e10s-3: an6S45xSQC-wu6enGORvvQ
+ test-windows10-64/debug-xpcshell-e10s-1: a6QTzqlFTxKgTyT02FxcJw
+ test-windows10-64/debug-xpcshell-e10s-2: MIWvVeW2QMqc54c3YdhGiw
+ test-windows10-64/opt-awsy-base-e10s: ApT8tvuXQoG9dXeeLOLhFA
+ test-windows10-64/opt-awsy-e10s: d94To1XgTXqw6B5hJmW77g
+ test-windows10-64/opt-awsy-tp6-e10s: UeDSQsv5R8665OfeEiJg0Q
+ test-windows10-64/opt-browser-screenshots-e10s: DmnU2Vv9Toe-X3gAkvxNrw
+ test-windows10-64/opt-cppunit-1proc: Iid9j5ZLQ9GEg097Jk85MQ
+ test-windows10-64/opt-crashtest-e10s: R2fXSFd_RpqBlAC7BUIEwg
+ test-windows10-64/opt-firefox-ui-functional-local-e10s: L-cHrnlbT7KknVoOlskxkw
+ test-windows10-64/opt-firefox-ui-functional-remote-e10s: LL3PzqLYQQaOusevEsHuKg
+ test-windows10-64/opt-gtest-1proc: BVxqFMxYS4ulGRPGj9G9HQ
+ test-windows10-64/opt-jsreftest-e10s-1: G4rIbxexR0W-C23cuKSXUQ
+ test-windows10-64/opt-jsreftest-e10s-2: BmMSDsTVTiOoBtNuBdpmvw
+ test-windows10-64/opt-marionette-e10s: K8Uk4I1XR6C7ekhQ2nTIoQ
+ test-windows10-64/opt-marionette-gpu-e10s: TeKk4wKiTGSqv3ZrnBAlrA
+ test-windows10-64/opt-mochitest-a11y-1proc: ZsIBgARMQlW26KSkNErURA
+ test-windows10-64/opt-mochitest-browser-chrome-e10s-1: ERyEKLKRS7qYA6AbecYYlw
+ test-windows10-64/opt-mochitest-browser-chrome-e10s-2: UDrYRHsOQFiph2gY0jNeow
+ test-windows10-64/opt-mochitest-browser-chrome-e10s-3: YaNBXZ4xRpmjmPPjCEaNGQ
+ test-windows10-64/opt-mochitest-browser-chrome-e10s-4: EqKDnZDgR8CQORlpwGnS6Q
+ test-windows10-64/opt-mochitest-browser-chrome-e10s-5: DrUqt8G7TC-W218SpqZ_AA
+ test-windows10-64/opt-mochitest-browser-chrome-e10s-6: Yrc4PeUsTTWVxRALPOYI6w
+ test-windows10-64/opt-mochitest-browser-chrome-e10s-7: AP4fI741Rv6gZt9M_tnzPQ
+ test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-1: DGJakN6dSbiwYxB21MQmNQ
+ test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-2: curV5-DFSv-_1L4gGQxpiQ
+ test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-3: OT2xMsjLRE6NtgpmIT70hg
+ test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-4: OW6Qps0RSUO55qLsuDmsdw
+ test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-5: P8UOquu0Tr-HO8L4eZDcWg
+ test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-6: SF6D8uruSLiQIybTRpCq2g
+ test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-7: LvA3X7sUQoyQPCwGu21DPg
+ test-windows10-64/opt-mochitest-chrome-1proc-1: JAZjusYUTey_S4MoB9nXZg
+ test-windows10-64/opt-mochitest-chrome-1proc-2: EU5UxqsvTnea-ncSEtJddQ
+ test-windows10-64/opt-mochitest-devtools-chrome-e10s-1: bd-gBL99TGeZjnZEqBl6Cg
+ test-windows10-64/opt-mochitest-devtools-chrome-e10s-2: BF-9kWObS8CjNKOKIAj8-w
+ test-windows10-64/opt-mochitest-devtools-chrome-e10s-3: D1enU6S-S5mn89QyCKm3EA
+ test-windows10-64/opt-mochitest-devtools-chrome-e10s-4: IF6LKdzMTrquAa4tOr6dAg
+ test-windows10-64/opt-mochitest-devtools-chrome-e10s-5: YeP7KgygTLelLNUMk23bkg
+ test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-1: LifxbeVDS7OACccmQnly0g
+ test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-2: fjmuMfMoRV6qUdetnl_czQ
+ test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-3: KtrVf6heS7umV_rCYrFoSg
+ test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-4: Ye1nnHm9STOEUW-c_Ju7Tg
+ test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-5: A8_LtU-GQ-evkPCSZ26DRQ
+ test-windows10-64/opt-mochitest-e10s-1: QRWebNnmTG-g4VmIdY_zwQ
+ test-windows10-64/opt-mochitest-e10s-2: T3_vdIg7THO0RVH6pA3mkQ
+ test-windows10-64/opt-mochitest-e10s-3: Og4r54FaQResUjjfq3Z4JA
+ test-windows10-64/opt-mochitest-e10s-4: S37KREXoRR6ZxTMXUrNVxw
+ test-windows10-64/opt-mochitest-e10s-5: fKAIlTU1TB2hS-6KO-ua8A
+ test-windows10-64/opt-mochitest-fis-e10s-1: MD4a023XRzOWYgBH8SkScw
+ test-windows10-64/opt-mochitest-fis-e10s-2: LzSE9Ik9SRaZNj5x4NH-9w
+ test-windows10-64/opt-mochitest-fis-e10s-3: SqfSVthKTpujGIi9Andh8A
+ test-windows10-64/opt-mochitest-fis-e10s-4: UHFwfwYRQPeB7DiiBgYMgA
+ test-windows10-64/opt-mochitest-fis-e10s-5: Dq8sB4g0R1GmqNLPungoaQ
+ test-windows10-64/opt-mochitest-gpu-e10s: HcufIS9yTXa9EXbBDby-Mg
+ test-windows10-64/opt-mochitest-media-e10s: HjBtqKZMQVy1zZHJUmsxow
+ test-windows10-64/opt-mochitest-media-fis-e10s: KOwkUKnJTYqZGfJyvMk9Ug
+ test-windows10-64/opt-mochitest-media-spi-e10s: BfeW1zYpQpil06MUGg-s7g
+ test-windows10-64/opt-mochitest-remote-e10s: b8HMoYsIT-muLaZ7cuMBfw
+ test-windows10-64/opt-mochitest-webgl1-core-e10s: VrwTa_dGTg6FbeRQlLD8kA
+ test-windows10-64/opt-mochitest-webgl1-core-fis-e10s: AHqjU2UIRzulh6y6vjLqYw
+ test-windows10-64/opt-mochitest-webgl1-ext-e10s: PVjXv3SIQbaX8MkNWiJhRg
+ test-windows10-64/opt-mochitest-webgl1-ext-fis-e10s: FSvgBAS_Sc-avhMfqY5Kdg
+ test-windows10-64/opt-mochitest-webgl2-core-e10s: VyKliIPmQcWdS4KpHszvHw
+ test-windows10-64/opt-mochitest-webgl2-core-fis-e10s: JgFK2mHKRLabMUlReGUkwA
+ test-windows10-64/opt-mochitest-webgl2-ext-e10s-1: bwEaLiupR1KoKcUVP_CHDw
+ test-windows10-64/opt-mochitest-webgl2-ext-e10s-2: cCcNR95zQqiAWQjfzPZIyw
+ test-windows10-64/opt-mochitest-webgl2-ext-e10s-3: SSBtF9pQTmS_-MpfDUwL3A
+ test-windows10-64/opt-mochitest-webgl2-ext-e10s-4: QPMewhV2T4GYUuy91XV_Qw
+ test-windows10-64/opt-mochitest-webgl2-ext-fis-e10s-1: IgTZOxxATcapM1jPWYnNKA
+ test-windows10-64/opt-mochitest-webgl2-ext-fis-e10s-2: Uaf6GhlOSSyFWbKgUjaQRA
+ test-windows10-64/opt-mochitest-webgl2-ext-fis-e10s-3: bNHYlM11R-CT_4tTz3Rurw
+ test-windows10-64/opt-mochitest-webgl2-ext-fis-e10s-4: agbsd---QlKMVPRtUrGPog
+ test-windows10-64/opt-mochitest-webgpu-e10s: W7luRffpSI-aA9rzuF3cIQ
+ test-windows10-64/opt-mochitest-webgpu-fis-e10s: BXoAh9FvQ229OQbJmbAnVQ
+ test-windows10-64/opt-raptor-ares6-firefox-e10s: LRb6M51oQAqczTmIIsT-Eg
+ test-windows10-64/opt-raptor-jetstream2-firefox-e10s: bP6J-bAiRQW5bHgpRcYbHg
+ test-windows10-64/opt-raptor-motionmark-animometer-firefox-e10s: GDIxdSeqQiWe9pEaFlxh3g
+ test-windows10-64/opt-raptor-motionmark-htmlsuite-firefox-e10s: JpWcd5udTGWvfP0eQZ_T2g
+ test-windows10-64/opt-raptor-speedometer-firefox-e10s: DVoTh0CkRwiVb9oxNC7oVw
+ test-windows10-64/opt-raptor-stylebench-firefox-e10s: SAcgZ0a7SmO4I03JrH82aQ
+ test-windows10-64/opt-raptor-sunspider-firefox-e10s: e2FKcwvqQvWgIv3b0sKVVw
+ test-windows10-64/opt-raptor-tp6-1-firefox-cold-e10s: Or3QEM4dRBuoySCxpG0K7A
+ test-windows10-64/opt-raptor-tp6-1-firefox-e10s: HJ5Ge8_oT5u--b-lGBZV6g
+ test-windows10-64/opt-raptor-tp6-10-firefox-cold-e10s: aonqBQiuTgyjHh_eBiWs3A
+ test-windows10-64/opt-raptor-tp6-10-firefox-e10s: bKTAtGrLTbyRCcpqOSlp-Q
+ test-windows10-64/opt-raptor-tp6-11-firefox-cold-e10s: a3e5wxVaQgy3g6zsD_8acQ
+ test-windows10-64/opt-raptor-tp6-12-firefox-cold-e10s: GAuI1MV1Tp-XO2WmZvpMiQ
+ test-windows10-64/opt-raptor-tp6-13-firefox-cold-e10s: D1QRqks1RJq9d9ReCZYtbg
+ test-windows10-64/opt-raptor-tp6-14-firefox-cold-e10s: WT4WKnklQR6M6OTOymKENQ
+ test-windows10-64/opt-raptor-tp6-15-firefox-cold-e10s: ahEQfXPiTS2ykyqnbh0G-w
+ test-windows10-64/opt-raptor-tp6-16-firefox-cold-e10s: BIkVpjRjSIib5NTVCry1Ig
+ test-windows10-64/opt-raptor-tp6-17-firefox-cold-e10s: bHz_6EanSjewsK0_JsJUlg
+ test-windows10-64/opt-raptor-tp6-18-firefox-cold-e10s: fX85Rq60Tfq9MLeeAYd1iA
+ test-windows10-64/opt-raptor-tp6-19-firefox-cold-e10s: TuhoWPk_QLmUt5-RY-VgvQ
+ test-windows10-64/opt-raptor-tp6-2-firefox-cold-e10s: O9hUgTwhQlKukTcpwCGvdw
+ test-windows10-64/opt-raptor-tp6-2-firefox-e10s: f1kPhf8iTRy63o0Nh8REMA
+ test-windows10-64/opt-raptor-tp6-20-firefox-cold-e10s: eIC9nXOtQjWUEhO-MAtUHg
+ test-windows10-64/opt-raptor-tp6-21-firefox-cold-e10s: C3zyuhUcStanxFHSFwlbDA
+ test-windows10-64/opt-raptor-tp6-22-firefox-cold-e10s: bsrybdwqR0Kr92J59QCzfQ
+ test-windows10-64/opt-raptor-tp6-23-firefox-cold-e10s: Q-P0vbOnT3moStRhkHhvmg
+ test-windows10-64/opt-raptor-tp6-24-firefox-cold-e10s: UcoM7G6nTJujxZFaI26BVQ
+ test-windows10-64/opt-raptor-tp6-25-firefox-cold-e10s: YLRzCGYVTuGvn8s99aoEqQ
+ test-windows10-64/opt-raptor-tp6-26-firefox-cold-e10s: UF_sEIV3Q8CwAi17FD7iFg
+ test-windows10-64/opt-raptor-tp6-27-firefox-cold-e10s: NhS8hcKmQ1yfk145fXTULg
+ test-windows10-64/opt-raptor-tp6-28-firefox-cold-e10s: e-xV8wtcTT2K06VVBsTxbA
+ test-windows10-64/opt-raptor-tp6-29-firefox-cold-e10s: GQ5k2GV4SW6ayVWgtyM0ZA
+ test-windows10-64/opt-raptor-tp6-3-firefox-cold-e10s: YGTUyjx7SfGvpP5t5CRSlA
+ test-windows10-64/opt-raptor-tp6-3-firefox-e10s: QSXi7txWSEiz04sBAody-A
+ test-windows10-64/opt-raptor-tp6-30-firefox-cold-e10s: I93aWq8zSWa7roipvVjFuQ
+ test-windows10-64/opt-raptor-tp6-4-firefox-cold-e10s: JrHsTnBrSBmYGU7S9_buyw
+ test-windows10-64/opt-raptor-tp6-4-firefox-e10s: KEOa7nVNQP65dbM5C43XjA
+ test-windows10-64/opt-raptor-tp6-5-firefox-cold-e10s: GA7qM_8aRnC1Lbylgxt0jQ
+ test-windows10-64/opt-raptor-tp6-5-firefox-e10s: WSEek3s0Quijah7vaDjUOA
+ test-windows10-64/opt-raptor-tp6-6-firefox-cold-e10s: fn5qvaiGSYmPQyXvbgxosg
+ test-windows10-64/opt-raptor-tp6-6-firefox-e10s: aoHvOX4zR6KMOQCD_vTA3A
+ test-windows10-64/opt-raptor-tp6-7-firefox-cold-e10s: Cx5_bYzqTsmzLSg4YhSawA
+ test-windows10-64/opt-raptor-tp6-7-firefox-e10s: DCl3ggKQRVixdEexmmru5g
+ test-windows10-64/opt-raptor-tp6-8-firefox-cold-e10s: dTE80IN7Qd-XEwcHLNsgxg
+ test-windows10-64/opt-raptor-tp6-8-firefox-e10s: ek8pyRhWTJGBc3VOdBaBEw
+ test-windows10-64/opt-raptor-tp6-9-firefox-cold-e10s: XIMk--uMSS2nvqLzCMFAig
+ test-windows10-64/opt-raptor-tp6-9-firefox-e10s: b-5wN8JKQSaWD2TpRqt7cA
+ test-windows10-64/opt-raptor-tp6-binast-1-firefox-e10s: LPe8t5F8Szem4_Sw9ZvVWA
+ test-windows10-64/opt-raptor-wasm-godot-firefox-e10s: PylX0vjuTuGNPCeMOVnIJQ
+ test-windows10-64/opt-raptor-webaudio-firefox-e10s: KO0XGSKDTI2zOfL1H0lCSg
+ test-windows10-64/opt-raptor-youtube-playback-firefox-e10s: ARIBF7uESjWfpYrl8VFWZw
+ test-windows10-64/opt-reftest-e10s-1: KOtGsuDSSeOM5I9mL1a-PA
+ test-windows10-64/opt-reftest-e10s-2: aM4I1eF0TB-7ouAhdKeJ3A
+ test-windows10-64/opt-talos-bcv-e10s: Bbuoa1c9RT-jD6ocA9kgUg
+ test-windows10-64/opt-talos-chrome-e10s: Tyn27KexQWqBi6q7adzKXA
+ test-windows10-64/opt-talos-damp-e10s: fOIaUVCfTX-jhJBwEOxr8Q
+ test-windows10-64/opt-talos-dromaeojs-e10s: RutaDDQcQAqnEo9qQbMdaw
+ test-windows10-64/opt-talos-g1-e10s: BUuAoOkzSsmF7NWk9WcBwA
+ test-windows10-64/opt-talos-g4-e10s: D7X6kN6JTIWsUJCGcVeW0A
+ test-windows10-64/opt-talos-g5-e10s: QcxD9sRBQ8qHgd1g2iSLtQ
+ test-windows10-64/opt-talos-other-e10s: M3JW2wW-RLCJ0jDhaWdNoA
+ test-windows10-64/opt-talos-perf-reftest-e10s: XZAvwi-tSqidRoLzifGbFg
+ test-windows10-64/opt-talos-perf-reftest-singletons-e10s: ApHKZfSlTxmHCGeDvUE3jw
+ test-windows10-64/opt-talos-realworld-webextensions-e10s: QXnfu8M8RjSocmcD8RvKLQ
+ test-windows10-64/opt-talos-sessionrestore-many-windows-e10s: O8O8Fp6SRW6tOr8ge3QhDw
+ test-windows10-64/opt-talos-svgr-e10s: fmNLUx4VR6KZ2VkFefYPjA
+ test-windows10-64/opt-talos-tabswitch-e10s: dbFsBydXSI-TXS94-pymyQ
+ test-windows10-64/opt-talos-tp5o-e10s: D0cNbpGxT-OxzIXbtw2SMw
+ test-windows10-64/opt-talos-webgl-e10s: B4Beu_IZSGqhzuOkhSQACA
+ test-windows10-64/opt-talos-xperf-e10s: WwFXbmlOQ2STIJjyl9pxUA
+ test-windows10-64/opt-telemetry-tests-client-e10s: G4VXSUWBQomu9MmKsoZ2Ww
+ test-windows10-64/opt-test-verify-e10s-1: L9D-HsPNSTqRqOGMWbQuBw
+ test-windows10-64/opt-test-verify-e10s-2: ReXPVx5cR4GxV_iJKh3F9w
+ test-windows10-64/opt-test-verify-gpu-e10s: S5es8rVOQBe8lDAAuZ6AiQ
+ test-windows10-64/opt-test-verify-wpt-e10s-1: Qvd913sTSaerqoHdqethwA
+ test-windows10-64/opt-test-verify-wpt-e10s-2: BQc56dqSTe2uSYKZ7az7SA
+ test-windows10-64/opt-test-verify-wpt-e10s-3: EkFRMl_2TOWD6jOWlcZxXA
+ test-windows10-64/opt-web-platform-tests-crashtests-e10s: NrY9tT3AS92bcWFI1rkLsA
+ test-windows10-64/opt-web-platform-tests-e10s-1: DQFKioOKQEelTxB-fe053Q
+ test-windows10-64/opt-web-platform-tests-e10s-10: T3LtVnwnTzmUI55vkGAjzw
+ test-windows10-64/opt-web-platform-tests-e10s-11: GYcKVhquT_CQGXgAYwckuw
+ test-windows10-64/opt-web-platform-tests-e10s-12: eB43KuQQQfyJyqcCf1vL0Q
+ test-windows10-64/opt-web-platform-tests-e10s-2: MGZhJAo9SMKSMr4YIXmjsg
+ test-windows10-64/opt-web-platform-tests-e10s-3: WNWD_6ZkRaCUhapArA-M1A
+ test-windows10-64/opt-web-platform-tests-e10s-4: Rfrr4TmmQiKNXmU5sro1rQ
+ test-windows10-64/opt-web-platform-tests-e10s-5: FFlgBgn2Ri-uho_YRXgvjg
+ test-windows10-64/opt-web-platform-tests-e10s-6: Mg7ODmlJTqihoaaDvBZwuQ
+ test-windows10-64/opt-web-platform-tests-e10s-7: RrZsqG4hSPmyLDqa7LUwgw
+ test-windows10-64/opt-web-platform-tests-e10s-8: Za5oqXdYSoGhs2FHKwVQkA
+ test-windows10-64/opt-web-platform-tests-e10s-9: LOmoXlHbQfanwB-evUQjJA
+ test-windows10-64/opt-web-platform-tests-reftests-e10s-1: A62ZHzOARxyGOSsVaOxH-w
+ test-windows10-64/opt-web-platform-tests-reftests-e10s-2: B78m4aAsQsiRumP3d5qbwA
+ test-windows10-64/opt-web-platform-tests-reftests-e10s-3: AoyDHzC-TcOuRQLJ7qm-ow
+ test-windows10-64/opt-web-platform-tests-reftests-e10s-4: Oa-btyNZSk6rdXxI_IRDmw
+ test-windows10-64/opt-web-platform-tests-wdspec-e10s-1: XY7kpyZtT52D4xKbjFaHyA
+ test-windows10-64/opt-web-platform-tests-wdspec-e10s-2: dNWH5fNvS--Vqsm_bJuSDw
+ test-windows10-64/opt-web-platform-tests-wdspec-e10s-3: JU6X7Cn0Q9e8bUwMoLO_kw
+ test-windows10-64/opt-xpcshell-e10s-1: dRnAl5LrQQeCntC_0QqTiQ
+ test-windows10-64/opt-xpcshell-e10s-2: KejAE36IQFC8_PasQgWWKg
+ test-windows10-aarch64/opt-crashtest-e10s: UuylGdsLQ5WMPrfR4kkckQ
+ test-windows10-aarch64/opt-mochitest-media-e10s: LON30i8wRRuOokq0qep_TQ
+ test-windows10-aarch64/opt-mochitest-media-spi-e10s: Xw_wKe0cRHaaDE1eOxTnJQ
+ test-windows10-aarch64/opt-mochitest-remote-e10s: BBcBcHQHTyyJ6zX-kO1zOw
+ test-windows10-aarch64/opt-raptor-youtube-playback-firefox-e10s: FDpaPM2cSVyANI2frvoMpw
+ test-windows10-aarch64/opt-reftest-e10s-1: bkNRVsg9S5W77322CGbmug
+ test-windows10-aarch64/opt-reftest-e10s-2: ZhSN_EGWQp63NjC4hqBg2Q
+ test-windows10-aarch64/opt-talos-sessionrestore-many-windows-e10s: SHp-2c2WT5edpmQfLZXF-g
+ test-windows10-aarch64/opt-web-platform-tests-crashtests-e10s: Ly5s7AO1SACv6gzF6TwhIA
+ test-windows10-aarch64/opt-web-platform-tests-e10s-1: bAXooGSOTTKKZvxp4zEkKg
+ test-windows10-aarch64/opt-web-platform-tests-e10s-10: ByvvuYIWTSSxue29YkvFdA
+ test-windows10-aarch64/opt-web-platform-tests-e10s-11: MmmR0x-5TZOFNTpZGAapoQ
+ test-windows10-aarch64/opt-web-platform-tests-e10s-12: XE7IeFw9R-KYYjJ9tQeeLA
+ test-windows10-aarch64/opt-web-platform-tests-e10s-13: RPC1m1mgQ0-imqvp3yp57w
+ test-windows10-aarch64/opt-web-platform-tests-e10s-14: HIR9Nq4QTaCP7PWJqtUIiA
+ test-windows10-aarch64/opt-web-platform-tests-e10s-15: PhK4pPyBTlqJndOKjlvh7w
+ test-windows10-aarch64/opt-web-platform-tests-e10s-16: CX7DbA74QOWk3ulJ1zuzWA
+ test-windows10-aarch64/opt-web-platform-tests-e10s-2: Nt0aeGwVTZWKUSv5l_6FAg
+ test-windows10-aarch64/opt-web-platform-tests-e10s-3: JGRRPeb8TWGPTF2XY9Pn_g
+ test-windows10-aarch64/opt-web-platform-tests-e10s-4: Fm8KGTVxSK28aJiMqigdGg
+ test-windows10-aarch64/opt-web-platform-tests-e10s-5: aaKGQiitQqqt1WUDHP1IbQ
+ test-windows10-aarch64/opt-web-platform-tests-e10s-6: JY_ZdZOOQUuBBJrAjca_ig
+ test-windows10-aarch64/opt-web-platform-tests-e10s-7: OKE80CLdTXya5wqa2TnWAA
+ test-windows10-aarch64/opt-web-platform-tests-e10s-8: PueB2qSWRq-bluuXJFF5CA
+ test-windows10-aarch64/opt-web-platform-tests-e10s-9: APjeC_CZTEWWPALSaIBaRw
+ test-windows10-aarch64/opt-web-platform-tests-reftests-e10s-1: ZQdhJMCvR7WWMEP5NGEnyQ
+ test-windows10-aarch64/opt-web-platform-tests-reftests-e10s-2: AFlvt-fuRgSdnwAiW4J7SA
+ test-windows10-aarch64/opt-web-platform-tests-reftests-e10s-3: DVcx_s5mS920mqt1zZvTUQ
+ test-windows10-aarch64/opt-web-platform-tests-reftests-e10s-4: Mo80i06_Sxi-Rx3rU6-fcw
+ test-windows7-32-mingwclang/debug-cppunit-1proc: YI9JkoxbT-20e1WsfXz9NA
+ test-windows7-32-mingwclang/debug-firefox-ui-functional-local-e10s: BmiydPVmQZyDjKtPnatyHw
+ test-windows7-32-mingwclang/debug-firefox-ui-functional-remote-e10s: fE77pDT6TGGcer0ywji5IA
+ test-windows7-32-mingwclang/debug-mochitest-a11y-1proc: RBmjdQs8S8igmFMtFR9hLQ
+ test-windows7-32-mingwclang/debug-mochitest-gpu-e10s: O2q79d6PRDSQgEZeirxIeQ
+ test-windows7-32-mingwclang/debug-mochitest-webgl1-core-e10s: bRg61oe9RgCFiukecAp3-g
+ test-windows7-32-mingwclang/debug-mochitest-webgl1-ext-e10s: DtETYNycRySoxOg-N5gNhg
+ test-windows7-32-mingwclang/debug-mochitest-webgl2-core-e10s: U0Vy2uwHT5OakERJNpKo7w
+ test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-1: XjOfU0hxT5q938OW9hknmg
+ test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-2: Wfc9kC50QCC2ybnNmlGStQ
+ test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-3: CqBbmg8QTNuMrYeu_DAihQ
+ test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-4: PIweDhzOSJiImz7DLz_unQ
+ test-windows7-32-mingwclang/debug-mochitest-webgpu-e10s: PrVc94C0T5WaMaeffLhO0A
+ test-windows7-32-mingwclang/debug-reftest-e10s-1: MrxYXbZhSwO6ruH5s0EBzA
+ test-windows7-32-mingwclang/debug-reftest-e10s-2: D_LHNDV3QKurnIlaNrQofw
+ test-windows7-32-mingwclang/debug-reftest-e10s-3: UkRtgw1kR5iAQyuQg7PbCg
+ test-windows7-32-mingwclang/debug-reftest-e10s-4: cc6jT4eBSEGcJhQybLrGSQ
+ test-windows7-32-mingwclang/debug-telemetry-tests-client-e10s: Q4SsvqO5SpOAl8RaDK6AKw
+ test-windows7-32-mingwclang/opt-cppunit-1proc: SNaQ0wXhRdmRVEq6qx0T7w
+ test-windows7-32-mingwclang/opt-mochitest-gpu-e10s: e-ajlJviSbabvglKAYnYQg
+ test-windows7-32-shippable/opt-awsy-base-e10s: FnvPiecsTxKTehZo4HD2gw
+ test-windows7-32-shippable/opt-awsy-e10s: C-HJL7DzQga6o8aWa8HJuQ
+ test-windows7-32-shippable/opt-awsy-tp6-e10s: eboInj41SYG692ND0HyDew
+ test-windows7-32-shippable/opt-browser-screenshots-e10s: WHK_PrdrS_SqlAYMJ34xPA
+ test-windows7-32-shippable/opt-browsertime-tp6-chrome-cold-amazon-e10s: INX4PGQFSEurTeFBJfjogA
+ test-windows7-32-shippable/opt-browsertime-tp6-firefox-amazon-e10s: En1RAnWUQgyLzHwr2Q6yZg
+ test-windows7-32-shippable/opt-browsertime-tp6-firefox-cold-amazon-e10s: VrIVbgiDSKeRS53tk5k-yw
+ test-windows7-32-shippable/opt-browsertime-tp6-profiling-firefox-amazon-e10s: ZJ8lixGzSR2hWRMqXGR0-Q
+ test-windows7-32-shippable/opt-browsertime-tp6-profiling-firefox-cold-amazon-e10s: cUBNVzSsQQGpm0BlYN69Mg
+ test-windows7-32-shippable/opt-cppunit-1proc: cQhaj_RlTrip03nXZKVROw
+ test-windows7-32-shippable/opt-crashtest-e10s: MkUSfz5OQfCfuPntxQxYsg
+ test-windows7-32-shippable/opt-firefox-ui-functional-local-e10s: ZwdidMuzQqq9Yf_gAwt9nQ
+ test-windows7-32-shippable/opt-firefox-ui-functional-remote-e10s: PwFfjkeMRMW61nu1WYUh1w
+ test-windows7-32-shippable/opt-jsreftest-e10s-1: SG1gxMGFR2ChYEQwg0QL6w
+ test-windows7-32-shippable/opt-jsreftest-e10s-2: TjENsTZcRkCREsjJvrLw1w
+ test-windows7-32-shippable/opt-marionette-e10s: VLvkvK30S2ylbrhnPnYIsg
+ test-windows7-32-shippable/opt-mochitest-a11y-1proc: K7Xw2Q5wQOOizquMFXkyOw
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-1: PIA1dUm2Q1C7vs0qlwbBzg
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-2: GXducepqQBKc_inQHTRZ6g
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-3: Qj-xEJpeRmSc6fwMNhCC1w
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-4: HpEK6fIxQc2_wLBF6fgKFA
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-5: dXYoIta3SBiCPSkc6epssg
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-6: d1ZSyGeUSt21-dQpUrHMdw
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-7: TCg-a6ROT1-M5l98HS-7qg
+ test-windows7-32-shippable/opt-mochitest-chrome-1proc-1: TEIa64QsQTCWyoN4tMxpRA
+ test-windows7-32-shippable/opt-mochitest-chrome-1proc-2: DizvBJ_4SaeGNP_O0pP7dw
+ test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-1: SVFqc5LRSz-a_TSoRG50uQ
+ test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-2: AOl6vEq8SwivJ_8idag6kg
+ test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-3: d153fU7YQ-G_t3wXDrlsyA
+ test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-4: EHGi4XiwQsmkRbSPPOZxYw
+ test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-5: GJqZBL_ERXiB4na0EQ9zJw
+ test-windows7-32-shippable/opt-mochitest-e10s-1: fsQTyp27RguNdkJysS4TbA
+ test-windows7-32-shippable/opt-mochitest-e10s-2: MDOib51qSvyumbgjz5AcBw
+ test-windows7-32-shippable/opt-mochitest-e10s-3: aH22Z1wzRAq941bHilfuzg
+ test-windows7-32-shippable/opt-mochitest-e10s-4: UnmOWzOISQe_6-vepSIJsQ
+ test-windows7-32-shippable/opt-mochitest-e10s-5: PN5NNAp5QHijy_lUMr3Kug
+ test-windows7-32-shippable/opt-mochitest-gpu-e10s: ZWsP4PX0SBiv6gl1T5GLag
+ test-windows7-32-shippable/opt-mochitest-media-e10s-1: TtCUr8RTRjuPU6HZW8EyKA
+ test-windows7-32-shippable/opt-mochitest-media-e10s-2: Yvz16HywSku9U2X6VKne-w
+ test-windows7-32-shippable/opt-mochitest-media-spi-e10s-1: bOFjyqoEQFOU3lHCgb8QaA
+ test-windows7-32-shippable/opt-mochitest-media-spi-e10s-2: NZlzv_lDQSqtOw6-VapzHA
+ test-windows7-32-shippable/opt-mochitest-remote-e10s: egD59BydSXCardEtu41bXQ
+ test-windows7-32-shippable/opt-mochitest-webgl1-core-e10s: Rn5WGrsdRQCwQs6a4H3l3A
+ test-windows7-32-shippable/opt-mochitest-webgl1-ext-e10s: W8jpBuMmTSu5TY9uBabosg
+ test-windows7-32-shippable/opt-mochitest-webgl2-core-e10s: PVAmUAmJRWy1tgVHHNjFrw
+ test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-1: eGOAzGz3TiCrjjglgK0zNA
+ test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-2: D15uBBE2QKqJzXLH6KFmuA
+ test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-3: AcG6qrQrSZqYtNYhfJP9nA
+ test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-4: NAk_3oefTLWivBDdJwxp2A
+ test-windows7-32-shippable/opt-mochitest-webgpu-e10s: HcCt45DRTQuzTcC1EgP-gA
+ test-windows7-32-shippable/opt-raptor-ares6-firefox-e10s: Zo0LDxWiQuCQe3vSzMCyxA
+ test-windows7-32-shippable/opt-raptor-jetstream2-firefox-e10s: MMnjv2UzRAadaqpMjXZ0uw
+ test-windows7-32-shippable/opt-raptor-motionmark-animometer-firefox-e10s: OXAnysNKS-mrjcl-wv67NQ
+ test-windows7-32-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: WEWyMr0JR5Os30dLHjCiEw
+ test-windows7-32-shippable/opt-raptor-speedometer-firefox-e10s: V5Uz6Qv0S7GqT7Xb0dRNKQ
+ test-windows7-32-shippable/opt-raptor-stylebench-firefox-e10s: bpK9Oqs4TreV3eswkP6xbA
+ test-windows7-32-shippable/opt-raptor-sunspider-firefox-e10s: ZNvDGqsCRUGuip_nSl1T4w
+ test-windows7-32-shippable/opt-raptor-tp6-1-firefox-cold-e10s: BOB6nxeHRmywE0bDeClJWQ
+ test-windows7-32-shippable/opt-raptor-tp6-1-firefox-e10s: ZLmUmvbQTra4SzXqqIxU3g
+ test-windows7-32-shippable/opt-raptor-tp6-10-firefox-cold-e10s: erqKm04-SXC2OqTYIGzd1g
+ test-windows7-32-shippable/opt-raptor-tp6-10-firefox-e10s: dLtj-m1IR6Gj46g2d4V_9A
+ test-windows7-32-shippable/opt-raptor-tp6-11-firefox-cold-e10s: UL6JV0IbTPSo0Hfi5a-8sw
+ test-windows7-32-shippable/opt-raptor-tp6-12-firefox-cold-e10s: ZrVYcYtgTAyiGU4rVBAAZw
+ test-windows7-32-shippable/opt-raptor-tp6-13-firefox-cold-e10s: RUrmkSl5R-67BgYfVxnxLA
+ test-windows7-32-shippable/opt-raptor-tp6-14-firefox-cold-e10s: AP8-AtxlSDixQs9H8XbldQ
+ test-windows7-32-shippable/opt-raptor-tp6-15-firefox-cold-e10s: W8kUnZeYSU28Par1lPQoZA
+ test-windows7-32-shippable/opt-raptor-tp6-16-firefox-cold-e10s: Z7TTL6JOTSGJ7kaxBOTROw
+ test-windows7-32-shippable/opt-raptor-tp6-17-firefox-cold-e10s: Gctdbe45TPmpa5TevNLMcg
+ test-windows7-32-shippable/opt-raptor-tp6-18-firefox-cold-e10s: N-udlZdwTZKDVEHfdZWfJg
+ test-windows7-32-shippable/opt-raptor-tp6-19-firefox-cold-e10s: UO4Ju6JwQ2K3qDZ150QgVQ
+ test-windows7-32-shippable/opt-raptor-tp6-2-firefox-cold-e10s: eg7w9_QgTyiehDJLvKKwiQ
+ test-windows7-32-shippable/opt-raptor-tp6-2-firefox-e10s: TyUlojE3SgO_nTJrNkhT4Q
+ test-windows7-32-shippable/opt-raptor-tp6-20-firefox-cold-e10s: LR1mf09LTuO7LLodM9VV_w
+ test-windows7-32-shippable/opt-raptor-tp6-21-firefox-cold-e10s: ZzHggAVaSBqBlEWibMUPIA
+ test-windows7-32-shippable/opt-raptor-tp6-22-firefox-cold-e10s: YVTzrqtJSWeLqgFr0MJoYw
+ test-windows7-32-shippable/opt-raptor-tp6-23-firefox-cold-e10s: JDLiquc7Tv62ugfBeeRvvw
+ test-windows7-32-shippable/opt-raptor-tp6-24-firefox-cold-e10s: KfznUFY0TjCjyYWLTbCGRQ
+ test-windows7-32-shippable/opt-raptor-tp6-25-firefox-cold-e10s: DmDyoF-jR7itamtrkNiAnQ
+ test-windows7-32-shippable/opt-raptor-tp6-26-firefox-cold-e10s: GiPERflFTf-0XH2af5EYIg
+ test-windows7-32-shippable/opt-raptor-tp6-27-firefox-cold-e10s: ROWXUsebTZKOY2FBkJCq3g
+ test-windows7-32-shippable/opt-raptor-tp6-28-firefox-cold-e10s: AWnEEXplQzaUC0WABaXQVA
+ test-windows7-32-shippable/opt-raptor-tp6-29-firefox-cold-e10s: EvWX3lw0Tu2XNul3KZFGtg
+ test-windows7-32-shippable/opt-raptor-tp6-3-firefox-cold-e10s: JjiQuVDVSDqj7uRes02g-g
+ test-windows7-32-shippable/opt-raptor-tp6-3-firefox-e10s: DoV46UokQDKdmENY2DPHFA
+ test-windows7-32-shippable/opt-raptor-tp6-30-firefox-cold-e10s: MOSl3GCiTHGd5C1VibB_Qg
+ test-windows7-32-shippable/opt-raptor-tp6-4-firefox-cold-e10s: VVlt-mPwSHy_xkVIz0ACqQ
+ test-windows7-32-shippable/opt-raptor-tp6-4-firefox-e10s: cJQ88Zz0TbCgi2LM3faQpg
+ test-windows7-32-shippable/opt-raptor-tp6-5-firefox-cold-e10s: OYLb-uvETtuPBWhAThoDxg
+ test-windows7-32-shippable/opt-raptor-tp6-5-firefox-e10s: F2Gp7qmdT8y_FP5TXoGSLQ
+ test-windows7-32-shippable/opt-raptor-tp6-6-firefox-cold-e10s: d7HfZzuQTXSt1Bv-nyMKzQ
+ test-windows7-32-shippable/opt-raptor-tp6-6-firefox-e10s: FwfQoECjTHmrkjhJGV6YQw
+ test-windows7-32-shippable/opt-raptor-tp6-7-firefox-cold-e10s: P7559O48RKGcdmLCNaPBzw
+ test-windows7-32-shippable/opt-raptor-tp6-7-firefox-e10s: awZv0bDUTxy09SdEpev2QA
+ test-windows7-32-shippable/opt-raptor-tp6-8-firefox-cold-e10s: UBujl4K-SqymoCDfLcCuEA
+ test-windows7-32-shippable/opt-raptor-tp6-8-firefox-e10s: IFMfa4E-RAi2aVJ1_vslMQ
+ test-windows7-32-shippable/opt-raptor-tp6-9-firefox-cold-e10s: dvZzkx6uSACJB_XWd0TOXQ
+ test-windows7-32-shippable/opt-raptor-tp6-9-firefox-e10s: Qpm0tDKTTb2G29ELRAF0BQ
+ test-windows7-32-shippable/opt-raptor-tp6-binast-1-firefox-e10s: L2ix5G0oRsaWik2nSJagRw
+ test-windows7-32-shippable/opt-raptor-wasm-godot-firefox-e10s: aITVgOxIQaGbzuwT0gsrxg
+ test-windows7-32-shippable/opt-raptor-webaudio-firefox-e10s: VzckDIgvSH2vA0w9MI1Zwg
+ test-windows7-32-shippable/opt-raptor-youtube-playback-firefox-e10s: U_kvDIC0SgOmPu1i2dtmqQ
+ test-windows7-32-shippable/opt-reftest-e10s-1: TjhsPgZIRIKlID9sNpwOCg
+ test-windows7-32-shippable/opt-reftest-e10s-2: EwpLAXbbTniAOOOKN8w5aw
+ test-windows7-32-shippable/opt-reftest-gpu-e10s-1: KhhvA1DwQHyDdMsq_YKXKw
+ test-windows7-32-shippable/opt-reftest-gpu-e10s-2: eMsHAIMqRMuOb4K84dZPDw
+ test-windows7-32-shippable/opt-reftest-no-accel-e10s-1: VeznKuKYQpiQn7mbsaIfYw
+ test-windows7-32-shippable/opt-reftest-no-accel-e10s-2: QMi6ZsW5Qr60ye0LWl-HaA
+ test-windows7-32-shippable/opt-reftest-no-accel-e10s-3: N8lBfPtWTK6zc35r-j9RVQ
+ test-windows7-32-shippable/opt-reftest-no-accel-e10s-4: VvxyOkVCRWOpIFD0K1bbWQ
+ test-windows7-32-shippable/opt-talos-bcv-e10s: dImmMpb6TM6DTlTSXoAqPQ
+ test-windows7-32-shippable/opt-talos-chrome-e10s: Xfji6tnkT5KB1RfppPVJ0g
+ test-windows7-32-shippable/opt-talos-dromaeojs-e10s: O1iXZy3NQPWfTJPQuYVstg
+ test-windows7-32-shippable/opt-talos-g1-e10s: b8kLCXBOTdi4hKWKV4Wgaw
+ test-windows7-32-shippable/opt-talos-g4-e10s: S9XZjNXJRtedRDSDKirpLw
+ test-windows7-32-shippable/opt-talos-g5-e10s: ZvdEVTNiR4uPHBaFxEvcXA
+ test-windows7-32-shippable/opt-talos-other-e10s: Ix6rfmBxSCGpBwlKPCZqQw
+ test-windows7-32-shippable/opt-talos-perf-reftest-e10s: T9Y8fhLgSHCSkqZCj36YYw
+ test-windows7-32-shippable/opt-talos-perf-reftest-singletons-e10s: DYDK6wWlSwyf-MwSFanS9A
+ test-windows7-32-shippable/opt-talos-realworld-webextensions-e10s: N9PhxTRESfysVIqAyljGFA
+ test-windows7-32-shippable/opt-talos-sessionrestore-many-windows-e10s: UDcRGZJlShacBXFP5hGwuw
+ test-windows7-32-shippable/opt-talos-svgr-e10s: b_vDCNTMTQetdmI2jPTNSw
+ test-windows7-32-shippable/opt-talos-tabswitch-e10s: V-i8-v27Tz6A4-7FgSUaig
+ test-windows7-32-shippable/opt-talos-tp5o-e10s: EUWfpfNORUuCJ_qweEzECQ
+ test-windows7-32-shippable/opt-talos-webgl-e10s: VTB_hFF3SLmc5Asq1T-9lQ
+ test-windows7-32-shippable/opt-talos-xperf-e10s: eqMYddMqQx2ug636Bw4GUg
+ test-windows7-32-shippable/opt-telemetry-tests-client-e10s: deA_fxgBQcOWPwZUT4JkEA
+ test-windows7-32-shippable/opt-web-platform-tests-crashtests-e10s: DORNaLZSSqS16TLPe_C31A
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-1: G6liVUXTRIS_5i2G27tCQg
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-10: VQv3nkCET8q2pngi99ztLg
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-11: YGh04Oj8Qxe2yVLQYo8RnA
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-12: C3dYxyq0Qk-f0Inf4uK0-g
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-2: P3aV1Fn0TAGOB_qXmk39xQ
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-3: V7PjBXowSf-Rq3TwlQPOtQ
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-4: R_AGBcaQTpu1Ch8X8gCFew
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-5: f8Xu8_IdQzSI53ug6XeWnQ
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-6: IR3ttYAeSzuW1Ib1PLdqdw
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-7: akKNuMNkQYqNMp6RTesQMA
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-8: HafmpD1dTkOj_xBKKpkM9w
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-9: AJG05JkdRFmhzohjDAtNHA
+ test-windows7-32-shippable/opt-web-platform-tests-reftests-e10s-1: JRE3DPLISyiliS1JYDWmsw
+ test-windows7-32-shippable/opt-web-platform-tests-reftests-e10s-2: f-JfHjLpTMepOm4qnbe3cg
+ test-windows7-32-shippable/opt-web-platform-tests-reftests-e10s-3: Ij5Z6w00RDCDxTVxv4tdhQ
+ test-windows7-32-shippable/opt-web-platform-tests-reftests-e10s-4: Up4328mBS5CC2KC8HpmU1g
+ test-windows7-32-shippable/opt-web-platform-tests-wdspec-e10s-1: U2l7xW98TaKg8ABfJWCFOQ
+ test-windows7-32-shippable/opt-web-platform-tests-wdspec-e10s-2: DTg9TQiHQ1uzV8ggCd6aXw
+ test-windows7-32-shippable/opt-web-platform-tests-wdspec-e10s-3: CZeNpoqYR26TirKoY_jUyQ
+ test-windows7-32-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: Rm-TIh3iRC2y6B76i4Z4Zw
+ test-windows7-32-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: DzeBpyaCTReyCYgqBKN2lQ
+ test-windows7-32-shippable/opt-xpcshell-e10s-1: Hqhc2taNSji650MyTr6xVg
+ test-windows7-32-shippable/opt-xpcshell-e10s-2: UbVEXFK0STWid53xG2a9IA
+ test-windows7-32/debug-cppunit-1proc: NfhdFilPRSC7gUqpjkod5A
+ test-windows7-32/debug-crashtest-e10s: I6YstPlVQbihORj5Bcy6pw
+ test-windows7-32/debug-firefox-ui-functional-local-e10s: eX4afg-SSKS-ruwg0XJRZQ
+ test-windows7-32/debug-firefox-ui-functional-remote-e10s: DNmbWGAeSOWKrWAwifasAQ
+ test-windows7-32/debug-gtest-1proc: XXjU7DzeS6qZMLD4bjwC7Q
+ test-windows7-32/debug-jsreftest-e10s-1: MYYwmR5rRZqUeS2xd2MrAQ
+ test-windows7-32/debug-jsreftest-e10s-2: OOaQLFL2QdafA0NwCYzOng
+ test-windows7-32/debug-jsreftest-e10s-3: SGKnETlhSAuRc6BZK4vjBA
+ test-windows7-32/debug-marionette-e10s: ZecvdCw4SPyprwWQq-JHMg
+ test-windows7-32/debug-mochitest-a11y-1proc: SRAskedKQ167E0Yk2V4DWg
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-1: QV9a2H6bSIKu6VF5wV8xDw
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-2: Wp5wWwzaQSKZW-u0iOWR5g
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-3: K3ESgNt7SOiNo1JNmz7MOw
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-4: OrS14ghNQrq3sUnMC7-s5A
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-5: XXVo9frmRLuc8DBVn2WjzQ
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-6: bYFkpSdORnKRwgiQkfv5Dw
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-7: fXIUawsUQkK6gAltlCHBeg
+ test-windows7-32/debug-mochitest-chrome-1proc-1: aid0dEJ8SSCFEGJaPwKFWw
+ test-windows7-32/debug-mochitest-chrome-1proc-2: WJ-f2DTiRs2uHT49AtE6vQ
+ test-windows7-32/debug-mochitest-chrome-1proc-3: dJvY-86PSMi-sQNl9YSpdg
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-1: cKapVQUVQE-kPDkQnR7udQ
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-2: fbESm4SuSYuEb9QMs_v04w
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-3: b1gIML2QRTusLG8tlsi_vA
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-4: V__dHArzRcKhJI3llFnvSw
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-5: RcrczjIkSl-U51OvrJztNw
+ test-windows7-32/debug-mochitest-e10s-1: R261Yq7gS-mM5By-CinOlQ
+ test-windows7-32/debug-mochitest-e10s-2: KJHygu_mTReXklh642xbhg
+ test-windows7-32/debug-mochitest-e10s-3: U1cH36USTouT8-21zAbhvw
+ test-windows7-32/debug-mochitest-e10s-4: MS2Fvg1HQueKfw-NVnfjiQ
+ test-windows7-32/debug-mochitest-e10s-5: MDcLwUH0TRiVWQxXDFYLmg
+ test-windows7-32/debug-mochitest-gpu-e10s: PZh_Z-U_SpizmjSv3rqmfA
+ test-windows7-32/debug-mochitest-media-e10s-1: HYrB9Q6sQ_ifzy4HzvzPTw
+ test-windows7-32/debug-mochitest-media-e10s-2: DDhPa3qQQdG_-Ys-NhcqPw
+ test-windows7-32/debug-mochitest-media-e10s-3: XqKfgO8kRY23DYT69MuhIw
+ test-windows7-32/debug-mochitest-media-spi-e10s-1: D7tBo5QfT82m_0OdbBfYgw
+ test-windows7-32/debug-mochitest-media-spi-e10s-2: QkTd7mzzSrqjr3SMr5NPmA
+ test-windows7-32/debug-mochitest-media-spi-e10s-3: bmkACJ0gSv-s1kfNsRS-RA
+ test-windows7-32/debug-mochitest-remote-e10s: KLDwfU0OS_yEeZeFH4LCWw
+ test-windows7-32/debug-mochitest-webgl1-core-e10s: CfH9_k9hSjCJixStGXaeSA
+ test-windows7-32/debug-mochitest-webgl1-ext-e10s: C339iGPvQf2O3VvlsM00Mg
+ test-windows7-32/debug-mochitest-webgl2-core-e10s: SILB9V8bSt63r2My7AVaSQ
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-1: F1llzFh0Q2SNUis_xd_bWA
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-2: M6W-H1tcQoeVWkaj54FBPQ
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-3: caaSWuS5S7a4KVgAwI8ZLg
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-4: Bp_j5APaS1eSPf8jHswvlw
+ test-windows7-32/debug-mochitest-webgpu-e10s: KoFU9dkIRImjnKK9kWC9lg
+ test-windows7-32/debug-reftest-e10s-1: JO-4B4gXQMKkZnP6XTMEgw
+ test-windows7-32/debug-reftest-e10s-2: Xp3vToiiQ_uU7pmfvRS2Tw
+ test-windows7-32/debug-reftest-e10s-3: AACiBsOhTLm6CPkElqDwwA
+ test-windows7-32/debug-reftest-e10s-4: cdhphwwlRbSEC1bR72xGvw
+ test-windows7-32/debug-reftest-gpu-e10s-1: S9TPnwmlRmq07-0U7oDTog
+ test-windows7-32/debug-reftest-gpu-e10s-2: EiPlw-0ITj-1UFSSyKoFIQ
+ test-windows7-32/debug-reftest-gpu-e10s-3: UeIfFbkASR6gt7YEvYAHUw
+ test-windows7-32/debug-reftest-gpu-e10s-4: Lda7jWngSFeRQzafsb2moQ
+ test-windows7-32/debug-reftest-no-accel-e10s-1: f_-9W2c_SxCW3uungWtwVw
+ test-windows7-32/debug-reftest-no-accel-e10s-2: GK4UM16PT0anm_el1U4ekw
+ test-windows7-32/debug-reftest-no-accel-e10s-3: EjV97zErTWqLLoPHKNYsIw
+ test-windows7-32/debug-reftest-no-accel-e10s-4: CoHPMWsDTJulwGFBWQPdPw
+ test-windows7-32/debug-telemetry-tests-client-e10s: azP0nA1_SQusD11mFTDIbA
+ test-windows7-32/debug-web-platform-tests-crashtests-e10s: CbXz_7acROyALHM_zXdB6Q
+ test-windows7-32/debug-web-platform-tests-e10s-1: FSv27To4TMu6pgHcn-HNwA
+ test-windows7-32/debug-web-platform-tests-e10s-10: KCI8fyQGRKWZPjfJL5dnvQ
+ test-windows7-32/debug-web-platform-tests-e10s-11: PP-onrUkR_qONH8pT1gtyA
+ test-windows7-32/debug-web-platform-tests-e10s-12: MeTnX6DbQ3qV7p63JRRwJg
+ test-windows7-32/debug-web-platform-tests-e10s-13: WKmF20zUT_ii39vLsGbV0w
+ test-windows7-32/debug-web-platform-tests-e10s-14: RARLQ5rTQsiTPTqJGVTZnA
+ test-windows7-32/debug-web-platform-tests-e10s-15: SQZxa2dqSeG_Ii5PV49RGw
+ test-windows7-32/debug-web-platform-tests-e10s-16: dwfEkwIKRoS2CJzd_MXcjw
+ test-windows7-32/debug-web-platform-tests-e10s-17: CKXGitANSq62tt4eS9_gLw
+ test-windows7-32/debug-web-platform-tests-e10s-18: f-GVAn-LRUWI0aAChSKFSA
+ test-windows7-32/debug-web-platform-tests-e10s-2: WTtDSpqWSJy4YFXWV4vgzw
+ test-windows7-32/debug-web-platform-tests-e10s-3: E38WHP60Qs2SwotvrTCYPA
+ test-windows7-32/debug-web-platform-tests-e10s-4: SGoS6sW1Qc67eeHJa01dRg
+ test-windows7-32/debug-web-platform-tests-e10s-5: DTpWW8TLT42BN3yqk28nqQ
+ test-windows7-32/debug-web-platform-tests-e10s-6: WfxsSjahS1uzq7YuI287tQ
+ test-windows7-32/debug-web-platform-tests-e10s-7: JwrVTyrGRbqX0TIDBqAa8g
+ test-windows7-32/debug-web-platform-tests-e10s-8: RpnUwOhzS-KacwV6xE_gOA
+ test-windows7-32/debug-web-platform-tests-e10s-9: X8vRpCbzQIOVHuN5KWLyIA
+ test-windows7-32/debug-web-platform-tests-reftests-e10s-1: aMl3PVa8QEen-oP7hmYvxQ
+ test-windows7-32/debug-web-platform-tests-reftests-e10s-2: RYepa2-lTZawmlGpbs3gNQ
+ test-windows7-32/debug-web-platform-tests-reftests-e10s-3: Oktuvyu1SFml3hxUD0FbYw
+ test-windows7-32/debug-web-platform-tests-reftests-e10s-4: YxrK8zxwRNGidlc57UtXTA
+ test-windows7-32/debug-web-platform-tests-reftests-e10s-5: E-e9HehtS0q-xKVskae-tg
+ test-windows7-32/debug-web-platform-tests-wdspec-e10s-1: fLF7P17eSkq7A41fPZP6IQ
+ test-windows7-32/debug-web-platform-tests-wdspec-e10s-2: GFQrKKsMTrueWigmH6tkUg
+ test-windows7-32/debug-web-platform-tests-wdspec-e10s-3: MXlL6hMgQpGS8-iaVxgp7w
+ test-windows7-32/debug-xpcshell-e10s-1: Nk5NGbN_Sk2oMMMgQhC0gg
+ test-windows7-32/debug-xpcshell-e10s-2: PcwQtJ-eTUW_990_tkQN1Q
+ test-windows7-32/opt-awsy-base-e10s: CpuY0yGqTDGA3ZhOHzZ1yw
+ test-windows7-32/opt-awsy-e10s: d9jCvp_vR2iVD9GjOdx-FA
+ test-windows7-32/opt-awsy-tp6-e10s: WCEoFXU1TZ-ug-dJHAYDbQ
+ test-windows7-32/opt-browser-screenshots-e10s: Zkr9wzCJQXuau4goK0oliA
+ test-windows7-32/opt-cppunit-1proc: Y5sS_dIqTTWg3px_2XmnLg
+ test-windows7-32/opt-crashtest-e10s: XKTwq8a7RZmpi4B0C80dHw
+ test-windows7-32/opt-firefox-ui-functional-local-e10s: eUVURVMESmSUoEvf7b8TZg
+ test-windows7-32/opt-firefox-ui-functional-remote-e10s: cYhwpif3QeGL03zKZ3ayrQ
+ test-windows7-32/opt-gtest-1proc: A00Lb24hSnKvczfbYvLPgQ
+ test-windows7-32/opt-jsreftest-e10s-1: c4RVF2QkT5KHVyWWmHJFKA
+ test-windows7-32/opt-jsreftest-e10s-2: dR_mK9q8T9i1St_HbN1IKQ
+ test-windows7-32/opt-marionette-e10s: aoMRqvwqRR6Xwknp40ywFw
+ test-windows7-32/opt-mochitest-a11y-1proc: bfjwWzEQQC6VhgPQUEtBNw
+ test-windows7-32/opt-mochitest-browser-chrome-e10s-1: DfdBMC64Sa-8P_K4JYImtw
+ test-windows7-32/opt-mochitest-browser-chrome-e10s-2: clj3WXz3R6yhD3Jnxwlehg
+ test-windows7-32/opt-mochitest-browser-chrome-e10s-3: Yx6Vh21hQU-w3DOZOjzYZQ
+ test-windows7-32/opt-mochitest-browser-chrome-e10s-4: D70w1io2S0uVSg6xIoX2_g
+ test-windows7-32/opt-mochitest-browser-chrome-e10s-5: Kgfv3xf9Q_eMURuTe0L-6g
+ test-windows7-32/opt-mochitest-browser-chrome-e10s-6: Q-GDGa4YQhmiuBcY1gnPCA
+ test-windows7-32/opt-mochitest-browser-chrome-e10s-7: YjDGOMgOQneF2lrgzZEWZg
+ test-windows7-32/opt-mochitest-chrome-1proc-1: IVSzzKVrRn-qqoXa5VoyOg
+ test-windows7-32/opt-mochitest-chrome-1proc-2: Y1KkuBh-Sy2M6RO0WliHqQ
+ test-windows7-32/opt-mochitest-devtools-chrome-e10s-1: Gi4UrdnNQVmudymLa9xMjw
+ test-windows7-32/opt-mochitest-devtools-chrome-e10s-2: Is8soNIHQ3a6EFyQnvjz2Q
+ test-windows7-32/opt-mochitest-devtools-chrome-e10s-3: cWHrdVAtT3WuHTQuWgpArw
+ test-windows7-32/opt-mochitest-devtools-chrome-e10s-4: fnQKfTg0Rqak01qHglYL_g
+ test-windows7-32/opt-mochitest-devtools-chrome-e10s-5: AFLN_rX2S_mYZWohLKcxLw
+ test-windows7-32/opt-mochitest-e10s-1: Misgoa7YTqCWzX0PfnvSMA
+ test-windows7-32/opt-mochitest-e10s-2: XyLI8aD0TLG5zZqrukeZag
+ test-windows7-32/opt-mochitest-e10s-3: XBQsdgOgRYipdK8n6RGHVQ
+ test-windows7-32/opt-mochitest-e10s-4: SS4WRr-jS-udELKWD3uRGg
+ test-windows7-32/opt-mochitest-e10s-5: LfitpCtWT0WTlXz3N3f_tA
+ test-windows7-32/opt-mochitest-gpu-e10s: aC0vrlu1SJivc_Ij-YTk1A
+ test-windows7-32/opt-mochitest-media-e10s-1: XKRaAbcURfmxhCxBYjPlhw
+ test-windows7-32/opt-mochitest-media-e10s-2: D14pVM3LTj6f5qo4Fd2HNw
+ test-windows7-32/opt-mochitest-media-e10s-3: N6tN9tJmQsKp58qt2oTRjg
+ test-windows7-32/opt-mochitest-media-spi-e10s-1: V6ubEBmWSY-7yEKJsJk_DA
+ test-windows7-32/opt-mochitest-media-spi-e10s-2: TXgcx59XT5Km4E3GThhaZA
+ test-windows7-32/opt-mochitest-media-spi-e10s-3: azMvGZqhSU2JrxcHOEmC4w
+ test-windows7-32/opt-mochitest-remote-e10s: UC7167JYRnOFbcR3cwqkYA
+ test-windows7-32/opt-mochitest-webgl1-core-e10s: N7oQMNXSTuuhASim_fAv5Q
+ test-windows7-32/opt-mochitest-webgl1-ext-e10s: HbP-OlKxQLu_uIBp2REAHA
+ test-windows7-32/opt-mochitest-webgl2-core-e10s: B4owYmKjS_2dXArCupzNuA
+ test-windows7-32/opt-mochitest-webgl2-ext-e10s-1: XkkJRKLfRZugu15nLnx31w
+ test-windows7-32/opt-mochitest-webgl2-ext-e10s-2: IpX6rKfgSXeHncL2B0mWWw
+ test-windows7-32/opt-mochitest-webgl2-ext-e10s-3: Hk-hzYPuRdO7qjuhvvT-yQ
+ test-windows7-32/opt-mochitest-webgl2-ext-e10s-4: AnNYguk1QR6PJ-YngImL-A
+ test-windows7-32/opt-mochitest-webgpu-e10s: XRLjtYyIQpmBVA8jdS_oaA
+ test-windows7-32/opt-raptor-ares6-firefox-e10s: NbYffUl9ToC_3q6RPa_-9A
+ test-windows7-32/opt-raptor-jetstream2-firefox-e10s: IScOubi6R8GSdloHiKDU5A
+ test-windows7-32/opt-raptor-motionmark-animometer-firefox-e10s: QuSqLdtEQfGygC5iaeyLsw
+ test-windows7-32/opt-raptor-motionmark-htmlsuite-firefox-e10s: RWR0CxqBRtSabj9qkpEg4g
+ test-windows7-32/opt-raptor-speedometer-firefox-e10s: Nes2ZUF1SG2g7or8LDOMWw
+ test-windows7-32/opt-raptor-stylebench-firefox-e10s: APjERCJJRtmvCPxw4wr2MA
+ test-windows7-32/opt-raptor-sunspider-firefox-e10s: fs0SP_y7TcGm8y05cGIXNA
+ test-windows7-32/opt-raptor-tp6-1-firefox-cold-e10s: QPaxI4L4SO-V5y1avH7t_Q
+ test-windows7-32/opt-raptor-tp6-1-firefox-e10s: EhSnrGi0RdyX8Pxwe0TuJg
+ test-windows7-32/opt-raptor-tp6-10-firefox-cold-e10s: IUnNi4IJQ2myrsxJdJ5u3Q
+ test-windows7-32/opt-raptor-tp6-10-firefox-e10s: ZA3oi16QSdeIq43j3QiD4A
+ test-windows7-32/opt-raptor-tp6-11-firefox-cold-e10s: ZO0yKrRVSkaoohHjebcZ8w
+ test-windows7-32/opt-raptor-tp6-12-firefox-cold-e10s: QdJtVldhTS2TM_l3_VaMwA
+ test-windows7-32/opt-raptor-tp6-13-firefox-cold-e10s: UN8uJttMQFmAYpesOF1xeA
+ test-windows7-32/opt-raptor-tp6-14-firefox-cold-e10s: X-UFrbAISge589AFS6zVzQ
+ test-windows7-32/opt-raptor-tp6-15-firefox-cold-e10s: JduXVHcUT-S-LZ8OAzlXow
+ test-windows7-32/opt-raptor-tp6-16-firefox-cold-e10s: CwGYYE91R-ySPzZlzIAGog
+ test-windows7-32/opt-raptor-tp6-17-firefox-cold-e10s: NZt_SqtPQ3iy9uqeZlwdiw
+ test-windows7-32/opt-raptor-tp6-18-firefox-cold-e10s: EJE9_avYRamex2wPjMkRiA
+ test-windows7-32/opt-raptor-tp6-19-firefox-cold-e10s: AFHw6lQ7R4yqkoxWXhbAXw
+ test-windows7-32/opt-raptor-tp6-2-firefox-cold-e10s: PP-0jwv0RkqaL97l953x7w
+ test-windows7-32/opt-raptor-tp6-2-firefox-e10s: RncgwVxdTLO_TbeOfN5OzA
+ test-windows7-32/opt-raptor-tp6-20-firefox-cold-e10s: cDllh5ilQXC0D5ZqrxB6Qg
+ test-windows7-32/opt-raptor-tp6-21-firefox-cold-e10s: BbKxUvavRyGm1BI7IQPFAA
+ test-windows7-32/opt-raptor-tp6-22-firefox-cold-e10s: fffMx4S4QaWVmdV3z16RNA
+ test-windows7-32/opt-raptor-tp6-23-firefox-cold-e10s: J5p7ap0ZSSq8UrZtxc3ZdQ
+ test-windows7-32/opt-raptor-tp6-24-firefox-cold-e10s: Xuw7xAYrSHGq7DBz2CJooQ
+ test-windows7-32/opt-raptor-tp6-25-firefox-cold-e10s: TUbMvX7nTcSEtJrVXyYnug
+ test-windows7-32/opt-raptor-tp6-26-firefox-cold-e10s: Pw1hvwMoQgG1qZGpq80zRA
+ test-windows7-32/opt-raptor-tp6-27-firefox-cold-e10s: ViHHdSk6SO2tkGPHKOnSlw
+ test-windows7-32/opt-raptor-tp6-28-firefox-cold-e10s: InIu0HxXTEWEnq3FL6c0yg
+ test-windows7-32/opt-raptor-tp6-29-firefox-cold-e10s: G9C2debgSHKqFCmf36E3_g
+ test-windows7-32/opt-raptor-tp6-3-firefox-cold-e10s: Adv-XfOuRty-mfAIE6lDtw
+ test-windows7-32/opt-raptor-tp6-3-firefox-e10s: Zil7uSuDQdyZeav33kH-Og
+ test-windows7-32/opt-raptor-tp6-30-firefox-cold-e10s: Og5_VNVtSAa3xnqRW8rCbA
+ test-windows7-32/opt-raptor-tp6-4-firefox-cold-e10s: L0GhhG1tTVisiRBNxydrwA
+ test-windows7-32/opt-raptor-tp6-4-firefox-e10s: LTsre7fcS-iydxnMkG-uWA
+ test-windows7-32/opt-raptor-tp6-5-firefox-cold-e10s: aBih6DUeQ7S35RG0Khxjbg
+ test-windows7-32/opt-raptor-tp6-5-firefox-e10s: f8GyuzcTQBarnZitIfIueQ
+ test-windows7-32/opt-raptor-tp6-6-firefox-cold-e10s: AekDXif7Q2C8tWXauFQqtw
+ test-windows7-32/opt-raptor-tp6-6-firefox-e10s: KuxX94voQpO8c-qkgQxcqw
+ test-windows7-32/opt-raptor-tp6-7-firefox-cold-e10s: CwKMeU2WSeGa8bkPhZoIvw
+ test-windows7-32/opt-raptor-tp6-7-firefox-e10s: Jpm_ec3bRzyzkk8yzCJS6Q
+ test-windows7-32/opt-raptor-tp6-8-firefox-cold-e10s: N8JiUXMaSCyTppUaqYWI1Q
+ test-windows7-32/opt-raptor-tp6-8-firefox-e10s: fNTckMTYTbeKyw4p7XvdZg
+ test-windows7-32/opt-raptor-tp6-9-firefox-cold-e10s: HjGVQz7bRBSU_cn0mbkWmA
+ test-windows7-32/opt-raptor-tp6-9-firefox-e10s: Bju_MGLIRDGSpiOvrwNV6w
+ test-windows7-32/opt-raptor-tp6-binast-1-firefox-e10s: f4xWb0ZwTdeqJj9gmEB2hw
+ test-windows7-32/opt-raptor-wasm-godot-firefox-e10s: Vpy12FmBQQCvVQr_jsPSZQ
+ test-windows7-32/opt-raptor-webaudio-firefox-e10s: ZJQcp17DSySk4ZuYJWeA3Q
+ test-windows7-32/opt-raptor-youtube-playback-firefox-e10s: KzdCA2g2TUCd434b9YIKoQ
+ test-windows7-32/opt-reftest-e10s-1: IN2kCQZuSReVf6gcWghpyQ
+ test-windows7-32/opt-reftest-e10s-2: IyyHcYwdS9qIZIV36miO6w
+ test-windows7-32/opt-reftest-gpu-e10s-1: DMT7hqpMSjmHup_Uv2bC5w
+ test-windows7-32/opt-reftest-gpu-e10s-2: V7r50kQHRpyBR2o0mpI4Iw
+ test-windows7-32/opt-reftest-no-accel-e10s-1: bymq34X0Q4yHVXZki_7jVA
+ test-windows7-32/opt-reftest-no-accel-e10s-2: GT6nAFCIT1SHmw-hmfz7EA
+ test-windows7-32/opt-reftest-no-accel-e10s-3: Bm4GezN4TV-oNIHplNHyfA
+ test-windows7-32/opt-reftest-no-accel-e10s-4: VrGRpsy8SzOjUxDD9B0KbA
+ test-windows7-32/opt-talos-bcv-e10s: Ci4eJMqdTGmgADqsuXsQoA
+ test-windows7-32/opt-talos-chrome-e10s: FmCDr9nESyCIR4Vn0MmvtA
+ test-windows7-32/opt-talos-dromaeojs-e10s: P3JaVsV4SHiRWbJ4Lj8wCg
+ test-windows7-32/opt-talos-g1-e10s: X-YuXrKRRQm8ztC3uKsoLQ
+ test-windows7-32/opt-talos-g4-e10s: RSjd9PtDTzGsBRHNtasd7Q
+ test-windows7-32/opt-talos-g5-e10s: axwRGGAxTAWNZdij641Jww
+ test-windows7-32/opt-talos-other-e10s: HxKubQK2T-uY3MfQD-qP1w
+ test-windows7-32/opt-talos-perf-reftest-e10s: B27zd6mhQ_Gb9t_8HIayWQ
+ test-windows7-32/opt-talos-perf-reftest-singletons-e10s: QkanabI0SWCzZyD_kxziiQ
+ test-windows7-32/opt-talos-realworld-webextensions-e10s: WeeY25D3RU2d2gl1WYWVQA
+ test-windows7-32/opt-talos-sessionrestore-many-windows-e10s: YO7ONzkPQB2WqDMh9hrklA
+ test-windows7-32/opt-talos-svgr-e10s: aIGZE-2zRt2-dmSrbgqeDA
+ test-windows7-32/opt-talos-tabswitch-e10s: K-nagvA4RtWKuy-8mN26RQ
+ test-windows7-32/opt-talos-tp5o-e10s: f8Cv6VLJR_K9qTPDsMDOkg
+ test-windows7-32/opt-talos-webgl-e10s: TOuPrxYRRfS6tcZd3NsG0A
+ test-windows7-32/opt-talos-xperf-e10s: Y6VmAbxsQrS4d4Vg_Gfxkg
+ test-windows7-32/opt-telemetry-tests-client-e10s: NYDcVVTASLaIEiehs1Y-cw
+ test-windows7-32/opt-test-verify-e10s-1: Srcbfg3xQw2Fzdmmuhz4Pg
+ test-windows7-32/opt-test-verify-e10s-2: ZIYt-mrpQHqSa1qG_G_EQg
+ test-windows7-32/opt-test-verify-gpu-e10s: LCdfCe6jQ7KRUuFSLt_gLA
+ test-windows7-32/opt-test-verify-wpt-e10s-1: Ze13LkGDSHWQ4vuHVBsHQw
+ test-windows7-32/opt-test-verify-wpt-e10s-2: TI71V7lESqiVq3c38PRCLw
+ test-windows7-32/opt-test-verify-wpt-e10s-3: bDfLorcdS9y9AbdOUcvEwQ
+ test-windows7-32/opt-web-platform-tests-crashtests-e10s: dvdmMtVGRdWdoT_G_-Q-QA
+ test-windows7-32/opt-web-platform-tests-e10s-1: Y2e2vrhlTu6alNJ-58HZEw
+ test-windows7-32/opt-web-platform-tests-e10s-10: DcegzA7qTWSconY9cfh5WQ
+ test-windows7-32/opt-web-platform-tests-e10s-11: Z4hqQOOKROCv23QXUL-3LA
+ test-windows7-32/opt-web-platform-tests-e10s-12: eolq4wXdQKKlIMjpnEiWVg
+ test-windows7-32/opt-web-platform-tests-e10s-2: P8fttagaTJKN_B_1b_nVbQ
+ test-windows7-32/opt-web-platform-tests-e10s-3: FrOH933JSNGuBhwxDIY0iw
+ test-windows7-32/opt-web-platform-tests-e10s-4: aLZoR38JReuZxYU467wU-Q
+ test-windows7-32/opt-web-platform-tests-e10s-5: F5qqOP3_QgWqGANmEXSH5g
+ test-windows7-32/opt-web-platform-tests-e10s-6: daZaDUvDSDyh1AreawW0BQ
+ test-windows7-32/opt-web-platform-tests-e10s-7: dvjB0VLHT8WS7--7q4LJ4A
+ test-windows7-32/opt-web-platform-tests-e10s-8: C06TIQa7QHiComUTry1tsA
+ test-windows7-32/opt-web-platform-tests-e10s-9: TIwFSxNaTNGmdW8-K8OhWA
+ test-windows7-32/opt-web-platform-tests-reftests-e10s-1: C145wvOgRVitIKaPQsEGbA
+ test-windows7-32/opt-web-platform-tests-reftests-e10s-2: aov4BHomRr-x8GNaLpbfWQ
+ test-windows7-32/opt-web-platform-tests-reftests-e10s-3: Dp6gZ3xtQO-DxcDkjamWyg
+ test-windows7-32/opt-web-platform-tests-reftests-e10s-4: BHY4qFknT2uoeX_EzX6e8A
+ test-windows7-32/opt-web-platform-tests-wdspec-e10s-1: ciFbhziETw-Q9NA6jJUZZg
+ test-windows7-32/opt-web-platform-tests-wdspec-e10s-2: C17eCyRmRnW2Bkq8aiPmCQ
+ test-windows7-32/opt-web-platform-tests-wdspec-e10s-3: exme7WBsSyeEaGbqzQWcNw
+ test-windows7-32/opt-xpcshell-e10s-1: FlyXk1kPSTGF9biSp468gQ
+ test-windows7-32/opt-xpcshell-e10s-2: ETdo44clTFWEZlauPRozKQ
+ toolchain-browsertime: XDyTs8lxRF-DqN5W--IS0w
+ toolchain-clang-dist-toolchain: RO2flChhTbyO63axthBonQ
+ toolchain-linux32-geckodriver: RS2TFJaeS3mbFL9FdPpA2w
+ toolchain-linux64-android-gradle-dependencies: Cz2uw8b2QmmTexdOIEYIZA
+ toolchain-linux64-android-ndk-linux-repack: Ug81Nk3HQYKG609vmDyXcA
+ toolchain-linux64-android-sdk-linux-repack: WKN-ZRPwRZCeNl0trNtBVA
+ toolchain-linux64-binutils: a0RoJGdRQ5C6UCY4obHsOg
+ toolchain-linux64-cbindgen: KVVfUO0CSmWVBcB93Vx1oA
+ toolchain-linux64-cctools-port: GragU-ulT1yyDsYCtSrGzQ
+ toolchain-linux64-clang-5.0: JL5TGaOjTVef-lPCt6zi6Q
+ toolchain-linux64-clang-7: bkKxTUf4SwKAk38fndSUOA
+ toolchain-linux64-clang-9: Yy680zNCRqGgY9DsDS81wg
+ toolchain-linux64-clang-9-aarch64-cross: NjPIKH5eTiaHyi_w6hu65A
+ toolchain-linux64-clang-9-android-cross: QDgZaovNR3aFMyL23ZKz4w
+ toolchain-linux64-clang-9-cross: UMh1t6HfRFafur2EVlvKaw
+ toolchain-linux64-clang-9-macosx-cross: ZivUE9amRZq53rC6EZyRUQ
+ toolchain-linux64-clang-9-mingw-x64: XjFoX1OfSEe5xjFKFhZvdw
+ toolchain-linux64-clang-9-mingw-x86: L9kfRoIySzW2Q23bHi2RWw
+ toolchain-linux64-clang-tidy: Z6dPnXc8Q4SfEipjyREOPg
+ toolchain-linux64-custom-v8: dulld0kqQfWmxPchNFt1qg
+ toolchain-linux64-fix-stacks: FcW-r1UHSTKFzR1OGv3QSQ
+ toolchain-linux64-gcc-7: UGKHvcwNQPitP8m2pQ97gQ
+ toolchain-linux64-gcc-8: KkIEAzmtSmi_B44JwIA5vw
+ toolchain-linux64-gcc-sixgill: bwj2gCRORDqN7ROznITwhA
+ toolchain-linux64-geckodriver: EahO8KUCQO6oH7XsvMXyxA
+ toolchain-linux64-gn: ar_0nTYFRg637SwhyBh6vQ
+ toolchain-linux64-grcov: Mxa40vAeTUa4ALMsQAZheQ
+ toolchain-linux64-hfsplus: UomYwi3wQdOUuGj_9i1QNw
+ toolchain-linux64-infer: WZp6hfxhRQmYzbHkTKR07A
+ toolchain-linux64-libdmg: ZvFzpfrnSx-zJhZLAGbRAA
+ toolchain-linux64-llvm-dsymutil: KyNhjMnCQX-Hh8cvydAXHA
+ toolchain-linux64-lucetc: PA7NnNWuTbSq2VJQ3o_kWA
+ toolchain-linux64-mar-tools: PPRDvkDCSUS485N1N6tAjw
+ toolchain-linux64-mingw-fxc2-x86: cmK0OYMHRUafXd9w_91H2w
+ toolchain-linux64-mingw32-gcc: ddRrECsBQ62KiortN9sgXA
+ toolchain-linux64-mingw32-nsis: CemW25_NQtaQDz9pBVmlAg
+ toolchain-linux64-minidump-stackwalk: JlY_SvzoSNOcwLvWe3PcAA
+ toolchain-linux64-nasm: b_U0p4u2T6WareVbLwkdpQ
+ toolchain-linux64-nasm-2.13.02: Y1uJKUGNTaK3UQtEOYcL2w
+ toolchain-linux64-node-10: MQcj05XLRQW0kWkMjNwbyQ
+ toolchain-linux64-rust-1.39: EMJmEtq3QYa8Z49REKJeZg
+ toolchain-linux64-rust-1.41: Ir6g-58qQqG_DGMKzArTOA
+ toolchain-linux64-rust-android-1.41: Ou03bt5pTpKU3ExiyCsfTw
+ toolchain-linux64-rust-cross-1.41: bEczX-VFRvCJBoREoqpTKg
+ toolchain-linux64-rust-macos-1.41: TB8YkM87RIKUxCmwMknHUA
+ toolchain-linux64-rust-nightly: Ropn2AHhRl2lgdzMxjDaHg
+ toolchain-linux64-rust-size: Cc_zhwc8R9CpBiKOYlr9Bw
+ toolchain-linux64-rust-windows-1.41: SYQMR7JqQ1Kl7CFdSX1MYA
+ toolchain-linux64-sccache: XrR_grO7SxqQlXG8mYvDgw
+ toolchain-linux64-tup: IE2UjFLHQJCd15OCgNPupw
+ toolchain-linux64-upx: Taf34uFoTwaTz6QHbtn_lw
+ toolchain-linux64-wine: DYy4EENmRy2zPlGtiLI6_g
+ toolchain-macosx64-cbindgen: dEncVur5SVa4mX0EPSRl0g
+ toolchain-macosx64-clang: TdyTwEK1To2ykPwn1Cg34g
+ toolchain-macosx64-clang-tidy: fdE6dAD2Rh2KheyxIEaSkg
+ toolchain-macosx64-fix-stacks: SCptnTvaQUWhdOpVdzEN1g
+ toolchain-macosx64-geckodriver: PX-OE57rR5esqOWG0-WuDA
+ toolchain-macosx64-gn: Ii7Bj6H7RjWEptf5FiAvfA
+ toolchain-macosx64-grcov: NKA252xCSy23yQJShZTXcg
+ toolchain-macosx64-minidump-stackwalk: JsbyJCuXTKKHSxbuLlIkEQ
+ toolchain-macosx64-node-10: VO937BuJSBecpn_Ucn47Bw
+ toolchain-macosx64-sccache: V3ck3vwBS1SOEbiRXNfh0g
+ toolchain-mingw32-rust-1.41: fllx_uoATM2rSQHknDbmTQ
+ toolchain-rustc-dist-toolchain: QWAggrxWTtCrgvU0uF4ilA
+ toolchain-wasi-sysroot: SaoYYehuQoGH48MjmuRc3g
+ toolchain-wgpu-deps: Ppb0qAfnSUWywP81o8tCLw
+ toolchain-win32-geckodriver: WUhp58AeSTyKf6-lQ2zs2g
+ toolchain-win32-gn: XsxSamjjQ_C813fSjeJJjg
+ toolchain-win32-minidump-stackwalk: bJyZkx0hRZ2ECsaYo-TlRA
+ toolchain-win32-node-10: FOsYejdhTJKL04WWPI5d3w
+ toolchain-win64-cbindgen: ENzNL1hSTvqElwsrYZCPRA
+ toolchain-win64-clang-cl: a2l60dKRRlmYMFKiaszrgw
+ toolchain-win64-clang-tidy: WUbmAwIATDWB8NTraFVYCA
+ toolchain-win64-dump-syms: Jd5v4Wf7TtSmMGvYgPZwiQ
+ toolchain-win64-fix-stacks: HY9uFXa1S2-KxwvAYRR2CQ
+ toolchain-win64-geckodriver: ekr5utRfSBSEn4d7CdTM5Q
+ toolchain-win64-grcov: Vq7gY9jlT92rDbVWQqiYAQ
+ toolchain-win64-nasm: b7ZOrpZMTxqYmusoAvUmDQ
+ toolchain-win64-node-10: SZJXEAmHSmKLxqcmm1e1tQ
+ toolchain-win64-rust-1.41: UaQ0orO5SZ2ILbha1CyuGA
+ toolchain-win64-rust-size: UMVAemi0Ryq1bENJXdoRlw
+ toolchain-win64-sccache: OXSH-f7iSaaiO7dNDbgXkQ
+ toolchain-wrench-deps: dfwuIJ7uTGOKfgUuqk9dHw
+ upload-generated-sources-linux-shippable/opt: JsFgahPqT22syzcBb7a31Q
+ upload-generated-sources-linux64-shippable/opt: fWtSqzbhSReVfXaDpJSxjQ
+ upload-generated-sources-macosx64-shippable/opt: PYyHHIIiRRy08w2uJVw6rA
+ upload-generated-sources-win32-shippable/opt: f53Q99hJR-i-Qu4Myyqfqw
+ upload-generated-sources-win64-aarch64-shippable/opt: UKXYiY34RniNE47SK-sCsw
+ upload-generated-sources-win64-shippable/opt: Jy0Ke0MHQSG7MZ9dNjRPtg
+ valgrind-linux64-valgrind/opt: IVDrHmEMTrOrXdXGafY33w
+ webrender-android-emulator-debug: L_fy2OtsTxWcuYU7wlFBKA
+ webrender-android-emulator-release: agQFQAOlT_uS8Mu2X0U4mw
+ webrender-android-hw-p2-debug: J2UNjaMXRGuLWr9cG7RGCA
+ webrender-android-hw-p2-opt: UfFIBnKtT2yh97c4YigpQw
+ webrender-cargotest-macos-build: KSGmyMIzT2yr7lLNz43jqg
+ webrender-lint-tidy: cEJAXiY3Qnyy4277SIGLEA
+ webrender-linux-debug: I70EWbeASBqeYezqCFKzEw
+ webrender-linux-release: I60Iz0e5Sji9hDUL4se3nQ
+ webrender-macos-debug: D8V1QjUTRCeSMQx0b8xloA
+ webrender-macos-release: WUmgg6P1Twmj6UZ0U1XVPg
+ webrender-windows: OTEwx1MtTnmi7bxuE9hYIw
+ webrender-wrench-android-debug: JfaZIjpWRGikHOpVKQkjEg
+ webrender-wrench-android-release: Sml65fd_QIaWJo-VOsc3EA
+ webrender-wrench-macos-build: INlHVhAcRKWjHf4xbz95Gg
+filters:
+ - target_tasks_method
+head_ref: 196059cada7070ab1e35db83a22b60389bd0c794
+head_repository: https://hg.mozilla.org/releases/mozilla-beta
+head_rev: 196059cada7070ab1e35db83a22b60389bd0c794
+hg_branch: default
+level: "3"
+message: ""
+moz_build_date: "20200227094956"
+next_version: 75.0b2
+optimize_target_tasks: true
+owner: cron@noreply.mozilla.org
+phabricator_diff: null
+project: mozilla-beta
+pushdate: 1582796996
+pushlog_id: "37162"
+release_enable_emefree: false
+release_enable_partners: false
+release_eta: ""
+release_history: {}
+release_partner_build_number: 1
+release_partner_config: {}
+release_partners: []
+release_product: null
+release_type: beta
+required_signoffs: []
+signoff_urls: {}
+target_tasks_method: ship_geckoview
+tasks_for: cron
+try_mode: null
+try_options: null
+try_task_config: {}
+version: 75.0b1
diff --git a/taskcluster/test/params/mc-desktop-nightly.yml b/taskcluster/test/params/mc-desktop-nightly.yml
new file mode 100644
index 0000000000..8616c7477f
--- /dev/null
+++ b/taskcluster/test/params/mc-desktop-nightly.yml
@@ -0,0 +1,6545 @@
+---
+base_repository: https://hg.mozilla.org/mozilla-unified
+build_date: 1509272580
+build_number: 1
+app_version: 60.0a1
+version: 60.0a1
+next_version: null
+do_not_optimize: []
+existing_tasks: {}
+filters:
+ - target_tasks_method
+head_ref: 66f9b72b87297adf712b14be58df13c2333bb3a9
+head_repository: https://hg.mozilla.org/mozilla-central
+head_rev: 66f9b72b87297adf712b14be58df13c2333bb3a9
+hg_branch: default
+level: "3"
+message: ""
+moz_build_date: "20171029102300"
+optimize_target_tasks: true
+owner: nobody@noreply.mozilla.org
+project: mozilla-central
+pushdate: 0
+pushlog_id: "-1"
+release_eta: ""
+release_history:
+ Darwin_x86_64-gcc3-u-i386-x86_64:
+ ach:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ach.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ach.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ach.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ach.mac.complete.mar
+ af:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.af.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.af.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.af.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.af.mac.complete.mar
+ an:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.an.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.an.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.an.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.an.mac.complete.mar
+ ar:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ar.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ar.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ar.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ar.mac.complete.mar
+ as:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.as.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.as.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.as.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.as.mac.complete.mar
+ ast:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ast.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ast.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ast.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ast.mac.complete.mar
+ az:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.az.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.az.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.az.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.az.mac.complete.mar
+ be:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.be.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.be.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.be.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.be.mac.complete.mar
+ bg:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bg.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bg.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bg.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bg.mac.complete.mar
+ bn-BD:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bn-BD.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bn-BD.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bn-BD.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bn-BD.mac.complete.mar
+ bn-IN:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bn-IN.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bn-IN.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bn-IN.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bn-IN.mac.complete.mar
+ br:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.br.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.br.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.br.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.br.mac.complete.mar
+ bs:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bs.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bs.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bs.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bs.mac.complete.mar
+ ca:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ca.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ca.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ca.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ca.mac.complete.mar
+ cak:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cak.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cak.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cak.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cak.mac.complete.mar
+ cs:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cs.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cs.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cs.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cs.mac.complete.mar
+ cy:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cy.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cy.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cy.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cy.mac.complete.mar
+ da:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.da.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.da.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.da.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.da.mac.complete.mar
+ de:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.de.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.de.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.de.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.de.mac.complete.mar
+ dsb:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.dsb.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.dsb.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.dsb.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.dsb.mac.complete.mar
+ el:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.el.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.el.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.el.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.el.mac.complete.mar
+ en-GB:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.en-GB.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.en-GB.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.en-GB.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.en-GB.mac.complete.mar
+ en-US:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central/firefox-58.0a1.en-US.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central/firefox-58.0a1.en-US.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central/firefox-58.0a1.en-US.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central/firefox-58.0a1.en-US.mac.complete.mar
+ en-ZA:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.en-ZA.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.en-ZA.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.en-ZA.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.en-ZA.mac.complete.mar
+ eo:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.eo.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.eo.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.eo.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.eo.mac.complete.mar
+ es-AR:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-AR.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-AR.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-AR.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171026221945"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-26-22-19-45-mozilla-central-l10n/firefox-58.0a1.es-AR.mac.complete.mar
+ es-CL:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-CL.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-CL.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-CL.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171026221945"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-26-22-19-45-mozilla-central-l10n/firefox-58.0a1.es-CL.mac.complete.mar
+ es-ES:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-ES.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-ES.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-ES.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-ES.mac.complete.mar
+ es-MX:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-MX.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-MX.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-MX.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-MX.mac.complete.mar
+ et:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.et.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.et.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.et.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.et.mac.complete.mar
+ eu:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.eu.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.eu.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.eu.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.eu.mac.complete.mar
+ fa:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fa.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fa.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fa.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fa.mac.complete.mar
+ ff:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ff.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ff.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ff.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ff.mac.complete.mar
+ fi:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fi.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fi.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fi.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fi.mac.complete.mar
+ fr:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fr.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fr.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fr.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fr.mac.complete.mar
+ fy-NL:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fy-NL.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fy-NL.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fy-NL.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fy-NL.mac.complete.mar
+ ga-IE:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ga-IE.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ga-IE.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ga-IE.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ga-IE.mac.complete.mar
+ gd:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gd.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gd.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gd.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gd.mac.complete.mar
+ gl:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gl.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gl.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gl.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gl.mac.complete.mar
+ gn:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gn.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gn.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gn.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gn.mac.complete.mar
+ gu-IN:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gu-IN.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gu-IN.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gu-IN.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gu-IN.mac.complete.mar
+ he:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.he.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.he.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.he.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.he.mac.complete.mar
+ hi-IN:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hi-IN.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hi-IN.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hi-IN.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hi-IN.mac.complete.mar
+ hr:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hr.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hr.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hr.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hr.mac.complete.mar
+ hsb:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hsb.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hsb.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hsb.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hsb.mac.complete.mar
+ hu:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hu.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hu.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hu.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hu.mac.complete.mar
+ hy-AM:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hy-AM.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hy-AM.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hy-AM.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hy-AM.mac.complete.mar
+ ia:
+ target.partial-1.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ia.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ia.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ia.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171026221945"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-26-22-19-45-mozilla-central-l10n/firefox-58.0a1.ia.mac.complete.mar
+ id:
+ target.partial-1.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.id.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.id.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.id.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171026221945"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-26-22-19-45-mozilla-central-l10n/firefox-58.0a1.id.mac.complete.mar
+ is:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.is.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.is.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.is.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.is.mac.complete.mar
+ it:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.it.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.it.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.it.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.it.mac.complete.mar
+ ja-JP-mac:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ja-JP-mac.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ja-JP-mac.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ja-JP-mac.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ja-JP-mac.mac.complete.mar
+ ka:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ka.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ka.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ka.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ka.mac.complete.mar
+ kab:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kab.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kab.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kab.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kab.mac.complete.mar
+ kk:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kk.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kk.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kk.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kk.mac.complete.mar
+ km:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.km.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.km.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.km.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.km.mac.complete.mar
+ kn:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kn.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kn.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kn.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kn.mac.complete.mar
+ ko:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ko.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ko.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ko.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ko.mac.complete.mar
+ lij:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lij.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lij.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lij.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lij.mac.complete.mar
+ lo:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lo.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lo.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lo.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lo.mac.complete.mar
+ lt:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lt.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lt.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lt.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lt.mac.complete.mar
+ ltg:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ltg.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ltg.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ltg.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ltg.mac.complete.mar
+ lv:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lv.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lv.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lv.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lv.mac.complete.mar
+ mai:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mai.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mai.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mai.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mai.mac.complete.mar
+ mk:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mk.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mk.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mk.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mk.mac.complete.mar
+ ml:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ml.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ml.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ml.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ml.mac.complete.mar
+ mr:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mr.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mr.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mr.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mr.mac.complete.mar
+ ms:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ms.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ms.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ms.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ms.mac.complete.mar
+ my:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.my.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.my.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.my.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.my.mac.complete.mar
+ nb-NO:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nb-NO.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nb-NO.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nb-NO.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nb-NO.mac.complete.mar
+ ne-NP:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ne-NP.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ne-NP.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ne-NP.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ne-NP.mac.complete.mar
+ nl:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nl.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nl.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nl.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nl.mac.complete.mar
+ nn-NO:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nn-NO.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nn-NO.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nn-NO.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nn-NO.mac.complete.mar
+ or:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.or.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.or.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.or.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.or.mac.complete.mar
+ pa-IN:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pa-IN.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pa-IN.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pa-IN.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pa-IN.mac.complete.mar
+ pl:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pl.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pl.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pl.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pl.mac.complete.mar
+ pt-BR:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pt-BR.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pt-BR.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pt-BR.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pt-BR.mac.complete.mar
+ pt-PT:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pt-PT.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pt-PT.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pt-PT.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pt-PT.mac.complete.mar
+ rm:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.rm.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.rm.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.rm.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.rm.mac.complete.mar
+ ro:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ro.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ro.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ro.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ro.mac.complete.mar
+ ru:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ru.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ru.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ru.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ru.mac.complete.mar
+ si:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.si.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.si.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.si.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.si.mac.complete.mar
+ sk:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sk.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sk.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sk.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sk.mac.complete.mar
+ sl:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sl.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sl.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sl.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sl.mac.complete.mar
+ son:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.son.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.son.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.son.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.son.mac.complete.mar
+ sq:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sq.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sq.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sq.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sq.mac.complete.mar
+ sr:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sr.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sr.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sr.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sr.mac.complete.mar
+ sv-SE:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sv-SE.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sv-SE.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sv-SE.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sv-SE.mac.complete.mar
+ ta:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ta.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ta.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ta.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ta.mac.complete.mar
+ te:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.te.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.te.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.te.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.te.mac.complete.mar
+ th:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.th.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.th.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.th.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.th.mac.complete.mar
+ tl:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.tl.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.tl.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.tl.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.tl.mac.complete.mar
+ tr:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.tr.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.tr.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.tr.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.tr.mac.complete.mar
+ uk:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.uk.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.uk.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.uk.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.uk.mac.complete.mar
+ ur:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ur.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ur.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ur.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ur.mac.complete.mar
+ uz:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.uz.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.uz.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.uz.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.uz.mac.complete.mar
+ vi:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.vi.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.vi.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.vi.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.vi.mac.complete.mar
+ xh:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.xh.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.xh.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.xh.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.xh.mac.complete.mar
+ zh-CN:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.zh-CN.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.zh-CN.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.zh-CN.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.zh-CN.mac.complete.mar
+ zh-TW:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.zh-TW.mac.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.zh-TW.mac.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.zh-TW.mac.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.zh-TW.mac.complete.mar
+ Linux_x86-gcc3:
+ ach:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ach.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ach.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ach.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ach.linux-i686.complete.mar
+ af:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.af.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.af.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.af.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.af.linux-i686.complete.mar
+ an:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.an.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.an.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.an.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.an.linux-i686.complete.mar
+ ar:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ar.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ar.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ar.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ar.linux-i686.complete.mar
+ as:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.as.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.as.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.as.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.as.linux-i686.complete.mar
+ ast:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ast.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ast.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ast.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ast.linux-i686.complete.mar
+ az:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.az.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.az.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.az.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.az.linux-i686.complete.mar
+ be:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.be.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.be.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.be.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.be.linux-i686.complete.mar
+ bg:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bg.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bg.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bg.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bg.linux-i686.complete.mar
+ bn-BD:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bn-BD.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bn-BD.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bn-BD.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bn-BD.linux-i686.complete.mar
+ bn-IN:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bn-IN.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bn-IN.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bn-IN.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bn-IN.linux-i686.complete.mar
+ br:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.br.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.br.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.br.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.br.linux-i686.complete.mar
+ bs:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bs.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bs.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bs.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bs.linux-i686.complete.mar
+ ca:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ca.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ca.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ca.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ca.linux-i686.complete.mar
+ cak:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cak.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cak.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cak.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cak.linux-i686.complete.mar
+ cs:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cs.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cs.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cs.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cs.linux-i686.complete.mar
+ cy:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cy.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cy.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cy.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cy.linux-i686.complete.mar
+ da:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.da.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.da.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.da.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.da.linux-i686.complete.mar
+ de:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.de.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.de.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.de.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.de.linux-i686.complete.mar
+ dsb:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.dsb.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.dsb.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.dsb.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.dsb.linux-i686.complete.mar
+ el:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.el.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.el.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.el.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.el.linux-i686.complete.mar
+ en-GB:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.en-GB.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.en-GB.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.en-GB.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.en-GB.linux-i686.complete.mar
+ en-US:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central/firefox-58.0a1.en-US.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central/firefox-58.0a1.en-US.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central/firefox-58.0a1.en-US.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central/firefox-58.0a1.en-US.linux-i686.complete.mar
+ en-ZA:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.en-ZA.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.en-ZA.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.en-ZA.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.en-ZA.linux-i686.complete.mar
+ eo:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.eo.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.eo.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.eo.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.eo.linux-i686.complete.mar
+ es-AR:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-AR.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-AR.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-AR.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-AR.linux-i686.complete.mar
+ es-CL:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-CL.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-CL.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-CL.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-CL.linux-i686.complete.mar
+ es-ES:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-ES.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-ES.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-ES.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-ES.linux-i686.complete.mar
+ es-MX:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-MX.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-MX.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-MX.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-MX.linux-i686.complete.mar
+ et:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.et.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.et.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.et.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.et.linux-i686.complete.mar
+ eu:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.eu.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.eu.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.eu.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.eu.linux-i686.complete.mar
+ fa:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fa.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fa.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fa.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fa.linux-i686.complete.mar
+ ff:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ff.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ff.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ff.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ff.linux-i686.complete.mar
+ fi:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fi.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fi.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fi.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fi.linux-i686.complete.mar
+ fr:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fr.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fr.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fr.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fr.linux-i686.complete.mar
+ fy-NL:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fy-NL.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fy-NL.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fy-NL.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fy-NL.linux-i686.complete.mar
+ ga-IE:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ga-IE.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ga-IE.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ga-IE.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ga-IE.linux-i686.complete.mar
+ gd:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gd.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gd.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gd.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gd.linux-i686.complete.mar
+ gl:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gl.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gl.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gl.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gl.linux-i686.complete.mar
+ gn:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gn.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gn.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gn.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gn.linux-i686.complete.mar
+ gu-IN:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gu-IN.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gu-IN.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gu-IN.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gu-IN.linux-i686.complete.mar
+ he:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.he.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.he.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.he.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.he.linux-i686.complete.mar
+ hi-IN:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hi-IN.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hi-IN.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hi-IN.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hi-IN.linux-i686.complete.mar
+ hr:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hr.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hr.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hr.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hr.linux-i686.complete.mar
+ hsb:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hsb.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hsb.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hsb.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hsb.linux-i686.complete.mar
+ hu:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hu.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hu.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hu.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hu.linux-i686.complete.mar
+ hy-AM:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hy-AM.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hy-AM.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hy-AM.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hy-AM.linux-i686.complete.mar
+ ia:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ia.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ia.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ia.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ia.linux-i686.complete.mar
+ id:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.id.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.id.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.id.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.id.linux-i686.complete.mar
+ is:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.is.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.is.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.is.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.is.linux-i686.complete.mar
+ it:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.it.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.it.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.it.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.it.linux-i686.complete.mar
+ ja:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ja.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ja.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ja.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ja.linux-i686.complete.mar
+ ka:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ka.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ka.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ka.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ka.linux-i686.complete.mar
+ kab:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kab.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kab.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kab.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kab.linux-i686.complete.mar
+ kk:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kk.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kk.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kk.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kk.linux-i686.complete.mar
+ km:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.km.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.km.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.km.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.km.linux-i686.complete.mar
+ kn:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kn.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kn.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kn.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kn.linux-i686.complete.mar
+ ko:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ko.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ko.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ko.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ko.linux-i686.complete.mar
+ lij:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lij.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lij.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lij.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lij.linux-i686.complete.mar
+ lo:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lo.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lo.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lo.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lo.linux-i686.complete.mar
+ lt:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lt.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lt.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lt.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lt.linux-i686.complete.mar
+ ltg:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ltg.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ltg.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ltg.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ltg.linux-i686.complete.mar
+ lv:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lv.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lv.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lv.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lv.linux-i686.complete.mar
+ mai:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mai.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mai.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mai.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mai.linux-i686.complete.mar
+ mk:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mk.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mk.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mk.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mk.linux-i686.complete.mar
+ ml:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ml.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ml.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ml.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ml.linux-i686.complete.mar
+ mr:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mr.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mr.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mr.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mr.linux-i686.complete.mar
+ ms:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ms.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ms.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ms.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ms.linux-i686.complete.mar
+ my:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.my.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.my.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.my.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.my.linux-i686.complete.mar
+ nb-NO:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nb-NO.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nb-NO.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nb-NO.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nb-NO.linux-i686.complete.mar
+ ne-NP:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ne-NP.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ne-NP.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ne-NP.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ne-NP.linux-i686.complete.mar
+ nl:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nl.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nl.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nl.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nl.linux-i686.complete.mar
+ nn-NO:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nn-NO.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nn-NO.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nn-NO.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nn-NO.linux-i686.complete.mar
+ or:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.or.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.or.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.or.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.or.linux-i686.complete.mar
+ pa-IN:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pa-IN.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pa-IN.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pa-IN.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pa-IN.linux-i686.complete.mar
+ pl:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pl.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pl.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pl.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pl.linux-i686.complete.mar
+ pt-BR:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pt-BR.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pt-BR.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pt-BR.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pt-BR.linux-i686.complete.mar
+ pt-PT:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pt-PT.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pt-PT.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pt-PT.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pt-PT.linux-i686.complete.mar
+ rm:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.rm.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.rm.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.rm.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.rm.linux-i686.complete.mar
+ ro:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ro.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ro.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ro.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ro.linux-i686.complete.mar
+ ru:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ru.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ru.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ru.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ru.linux-i686.complete.mar
+ si:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.si.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.si.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.si.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.si.linux-i686.complete.mar
+ sk:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sk.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sk.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sk.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sk.linux-i686.complete.mar
+ sl:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sl.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sl.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sl.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sl.linux-i686.complete.mar
+ son:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.son.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.son.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.son.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.son.linux-i686.complete.mar
+ sq:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sq.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sq.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sq.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sq.linux-i686.complete.mar
+ sr:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sr.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sr.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sr.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sr.linux-i686.complete.mar
+ sv-SE:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sv-SE.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sv-SE.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sv-SE.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sv-SE.linux-i686.complete.mar
+ ta:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ta.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ta.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ta.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ta.linux-i686.complete.mar
+ te:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.te.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.te.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.te.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.te.linux-i686.complete.mar
+ th:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.th.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.th.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.th.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.th.linux-i686.complete.mar
+ tl:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.tl.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.tl.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.tl.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.tl.linux-i686.complete.mar
+ tr:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.tr.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.tr.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.tr.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.tr.linux-i686.complete.mar
+ uk:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.uk.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.uk.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.uk.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.uk.linux-i686.complete.mar
+ ur:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ur.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ur.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ur.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ur.linux-i686.complete.mar
+ uz:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.uz.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.uz.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.uz.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.uz.linux-i686.complete.mar
+ vi:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.vi.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.vi.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.vi.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.vi.linux-i686.complete.mar
+ xh:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.xh.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.xh.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.xh.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.xh.linux-i686.complete.mar
+ zh-CN:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.zh-CN.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.zh-CN.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.zh-CN.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.zh-CN.linux-i686.complete.mar
+ zh-TW:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.zh-TW.linux-i686.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.zh-TW.linux-i686.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.zh-TW.linux-i686.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.zh-TW.linux-i686.complete.mar
+ Linux_x86_64-gcc3:
+ ach:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ach.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ach.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ach.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ach.linux-x86_64.complete.mar
+ af:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.af.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.af.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.af.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.af.linux-x86_64.complete.mar
+ an:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.an.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.an.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.an.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.an.linux-x86_64.complete.mar
+ ar:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ar.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ar.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ar.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ar.linux-x86_64.complete.mar
+ as:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.as.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.as.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.as.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.as.linux-x86_64.complete.mar
+ ast:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ast.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ast.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ast.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ast.linux-x86_64.complete.mar
+ az:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.az.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.az.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.az.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.az.linux-x86_64.complete.mar
+ be:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.be.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.be.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.be.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.be.linux-x86_64.complete.mar
+ bg:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bg.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bg.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bg.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bg.linux-x86_64.complete.mar
+ bn-BD:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bn-BD.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bn-BD.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bn-BD.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bn-BD.linux-x86_64.complete.mar
+ bn-IN:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bn-IN.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bn-IN.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bn-IN.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bn-IN.linux-x86_64.complete.mar
+ br:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.br.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.br.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.br.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.br.linux-x86_64.complete.mar
+ bs:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bs.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bs.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bs.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bs.linux-x86_64.complete.mar
+ ca:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ca.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ca.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ca.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ca.linux-x86_64.complete.mar
+ cak:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cak.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cak.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cak.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cak.linux-x86_64.complete.mar
+ cs:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cs.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cs.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cs.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cs.linux-x86_64.complete.mar
+ cy:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cy.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cy.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cy.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cy.linux-x86_64.complete.mar
+ da:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.da.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.da.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.da.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.da.linux-x86_64.complete.mar
+ de:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.de.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.de.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.de.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.de.linux-x86_64.complete.mar
+ dsb:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.dsb.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.dsb.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.dsb.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.dsb.linux-x86_64.complete.mar
+ el:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.el.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.el.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.el.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.el.linux-x86_64.complete.mar
+ en-GB:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.en-GB.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.en-GB.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.en-GB.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.en-GB.linux-x86_64.complete.mar
+ en-US:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central/firefox-58.0a1.en-US.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central/firefox-58.0a1.en-US.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central/firefox-58.0a1.en-US.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central/firefox-58.0a1.en-US.linux-x86_64.complete.mar
+ en-ZA:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.en-ZA.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.en-ZA.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.en-ZA.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.en-ZA.linux-x86_64.complete.mar
+ eo:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.eo.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.eo.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.eo.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.eo.linux-x86_64.complete.mar
+ es-AR:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-AR.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-AR.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-AR.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-AR.linux-x86_64.complete.mar
+ es-CL:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-CL.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-CL.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-CL.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-CL.linux-x86_64.complete.mar
+ es-ES:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-ES.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-ES.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-ES.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-ES.linux-x86_64.complete.mar
+ es-MX:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-MX.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-MX.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-MX.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-MX.linux-x86_64.complete.mar
+ et:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.et.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.et.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.et.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.et.linux-x86_64.complete.mar
+ eu:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.eu.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.eu.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.eu.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.eu.linux-x86_64.complete.mar
+ fa:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fa.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fa.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fa.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fa.linux-x86_64.complete.mar
+ ff:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ff.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ff.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ff.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ff.linux-x86_64.complete.mar
+ fi:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fi.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fi.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fi.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fi.linux-x86_64.complete.mar
+ fr:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fr.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fr.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fr.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fr.linux-x86_64.complete.mar
+ fy-NL:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fy-NL.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fy-NL.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fy-NL.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fy-NL.linux-x86_64.complete.mar
+ ga-IE:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ga-IE.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ga-IE.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ga-IE.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ga-IE.linux-x86_64.complete.mar
+ gd:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gd.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gd.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gd.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gd.linux-x86_64.complete.mar
+ gl:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gl.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gl.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gl.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gl.linux-x86_64.complete.mar
+ gn:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gn.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gn.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gn.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gn.linux-x86_64.complete.mar
+ gu-IN:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gu-IN.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gu-IN.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gu-IN.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gu-IN.linux-x86_64.complete.mar
+ he:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.he.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.he.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.he.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.he.linux-x86_64.complete.mar
+ hi-IN:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hi-IN.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hi-IN.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hi-IN.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hi-IN.linux-x86_64.complete.mar
+ hr:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hr.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hr.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hr.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hr.linux-x86_64.complete.mar
+ hsb:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hsb.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hsb.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hsb.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hsb.linux-x86_64.complete.mar
+ hu:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hu.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hu.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hu.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hu.linux-x86_64.complete.mar
+ hy-AM:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hy-AM.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hy-AM.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hy-AM.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hy-AM.linux-x86_64.complete.mar
+ ia:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ia.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ia.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ia.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ia.linux-x86_64.complete.mar
+ id:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.id.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.id.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.id.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.id.linux-x86_64.complete.mar
+ is:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.is.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.is.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.is.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.is.linux-x86_64.complete.mar
+ it:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.it.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.it.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.it.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.it.linux-x86_64.complete.mar
+ ja:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ja.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ja.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ja.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ja.linux-x86_64.complete.mar
+ ka:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ka.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ka.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ka.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ka.linux-x86_64.complete.mar
+ kab:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kab.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kab.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kab.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kab.linux-x86_64.complete.mar
+ kk:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kk.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kk.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kk.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kk.linux-x86_64.complete.mar
+ km:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.km.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.km.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.km.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.km.linux-x86_64.complete.mar
+ kn:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kn.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kn.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kn.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kn.linux-x86_64.complete.mar
+ ko:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ko.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ko.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ko.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ko.linux-x86_64.complete.mar
+ lij:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lij.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lij.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lij.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lij.linux-x86_64.complete.mar
+ lo:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lo.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lo.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lo.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lo.linux-x86_64.complete.mar
+ lt:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lt.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lt.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lt.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lt.linux-x86_64.complete.mar
+ ltg:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ltg.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ltg.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ltg.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ltg.linux-x86_64.complete.mar
+ lv:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lv.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lv.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lv.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lv.linux-x86_64.complete.mar
+ mai:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mai.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mai.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mai.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mai.linux-x86_64.complete.mar
+ mk:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mk.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mk.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mk.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mk.linux-x86_64.complete.mar
+ ml:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ml.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ml.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ml.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ml.linux-x86_64.complete.mar
+ mr:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mr.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mr.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mr.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mr.linux-x86_64.complete.mar
+ ms:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ms.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ms.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ms.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ms.linux-x86_64.complete.mar
+ my:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.my.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.my.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.my.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.my.linux-x86_64.complete.mar
+ nb-NO:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nb-NO.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nb-NO.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nb-NO.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nb-NO.linux-x86_64.complete.mar
+ ne-NP:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ne-NP.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ne-NP.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ne-NP.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ne-NP.linux-x86_64.complete.mar
+ nl:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nl.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nl.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nl.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nl.linux-x86_64.complete.mar
+ nn-NO:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nn-NO.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nn-NO.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nn-NO.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nn-NO.linux-x86_64.complete.mar
+ or:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.or.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.or.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.or.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.or.linux-x86_64.complete.mar
+ pa-IN:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pa-IN.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pa-IN.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pa-IN.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pa-IN.linux-x86_64.complete.mar
+ pl:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pl.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pl.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pl.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pl.linux-x86_64.complete.mar
+ pt-BR:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pt-BR.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pt-BR.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pt-BR.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pt-BR.linux-x86_64.complete.mar
+ pt-PT:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pt-PT.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pt-PT.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pt-PT.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pt-PT.linux-x86_64.complete.mar
+ rm:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.rm.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.rm.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.rm.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.rm.linux-x86_64.complete.mar
+ ro:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ro.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ro.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ro.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ro.linux-x86_64.complete.mar
+ ru:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ru.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ru.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ru.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ru.linux-x86_64.complete.mar
+ si:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.si.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.si.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.si.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.si.linux-x86_64.complete.mar
+ sk:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sk.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sk.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sk.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sk.linux-x86_64.complete.mar
+ sl:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sl.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sl.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sl.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sl.linux-x86_64.complete.mar
+ son:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.son.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.son.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.son.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.son.linux-x86_64.complete.mar
+ sq:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sq.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sq.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sq.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sq.linux-x86_64.complete.mar
+ sr:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sr.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sr.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sr.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sr.linux-x86_64.complete.mar
+ sv-SE:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sv-SE.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sv-SE.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sv-SE.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sv-SE.linux-x86_64.complete.mar
+ ta:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ta.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ta.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ta.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ta.linux-x86_64.complete.mar
+ te:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.te.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.te.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.te.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.te.linux-x86_64.complete.mar
+ th:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.th.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.th.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.th.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.th.linux-x86_64.complete.mar
+ tl:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.tl.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.tl.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.tl.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.tl.linux-x86_64.complete.mar
+ tr:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.tr.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.tr.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.tr.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.tr.linux-x86_64.complete.mar
+ uk:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.uk.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.uk.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.uk.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.uk.linux-x86_64.complete.mar
+ ur:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ur.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ur.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ur.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ur.linux-x86_64.complete.mar
+ uz:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.uz.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.uz.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.uz.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.uz.linux-x86_64.complete.mar
+ vi:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.vi.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.vi.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.vi.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.vi.linux-x86_64.complete.mar
+ xh:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.xh.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.xh.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.xh.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.xh.linux-x86_64.complete.mar
+ zh-CN:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.zh-CN.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.zh-CN.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.zh-CN.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.zh-CN.linux-x86_64.complete.mar
+ zh-TW:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.zh-TW.linux-x86_64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.zh-TW.linux-x86_64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.zh-TW.linux-x86_64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.zh-TW.linux-x86_64.complete.mar
+ WINNT_x86-msvc:
+ ach:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ach.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ach.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ach.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ach.win32.complete.mar
+ af:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.af.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.af.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.af.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.af.win32.complete.mar
+ an:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.an.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.an.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.an.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.an.win32.complete.mar
+ ar:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ar.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ar.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ar.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ar.win32.complete.mar
+ as:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.as.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.as.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.as.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.as.win32.complete.mar
+ ast:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ast.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ast.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ast.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ast.win32.complete.mar
+ az:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.az.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.az.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.az.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.az.win32.complete.mar
+ be:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.be.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.be.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.be.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.be.win32.complete.mar
+ bg:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bg.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bg.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bg.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bg.win32.complete.mar
+ bn-BD:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bn-BD.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bn-BD.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bn-BD.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bn-BD.win32.complete.mar
+ bn-IN:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bn-IN.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bn-IN.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bn-IN.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bn-IN.win32.complete.mar
+ br:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.br.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.br.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.br.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.br.win32.complete.mar
+ bs:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bs.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bs.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bs.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bs.win32.complete.mar
+ ca:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ca.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ca.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ca.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ca.win32.complete.mar
+ cak:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cak.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cak.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cak.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cak.win32.complete.mar
+ cs:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cs.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cs.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cs.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cs.win32.complete.mar
+ cy:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cy.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cy.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cy.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cy.win32.complete.mar
+ da:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.da.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.da.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.da.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.da.win32.complete.mar
+ de:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.de.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.de.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.de.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.de.win32.complete.mar
+ dsb:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.dsb.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.dsb.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.dsb.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.dsb.win32.complete.mar
+ el:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.el.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.el.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.el.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.el.win32.complete.mar
+ en-GB:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.en-GB.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.en-GB.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.en-GB.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.en-GB.win32.complete.mar
+ en-US:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central/firefox-58.0a1.en-US.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central/firefox-58.0a1.en-US.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central/firefox-58.0a1.en-US.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central/firefox-58.0a1.en-US.win32.complete.mar
+ en-ZA:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.en-ZA.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.en-ZA.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.en-ZA.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.en-ZA.win32.complete.mar
+ eo:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.eo.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.eo.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.eo.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.eo.win32.complete.mar
+ es-AR:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-AR.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-AR.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-AR.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-AR.win32.complete.mar
+ es-CL:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-CL.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-CL.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-CL.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-CL.win32.complete.mar
+ es-ES:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-ES.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-ES.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-ES.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-ES.win32.complete.mar
+ es-MX:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-MX.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-MX.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-MX.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-MX.win32.complete.mar
+ et:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.et.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.et.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.et.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.et.win32.complete.mar
+ eu:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.eu.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.eu.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.eu.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.eu.win32.complete.mar
+ fa:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fa.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fa.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fa.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fa.win32.complete.mar
+ ff:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ff.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ff.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ff.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ff.win32.complete.mar
+ fi:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fi.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fi.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fi.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fi.win32.complete.mar
+ fr:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fr.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fr.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fr.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fr.win32.complete.mar
+ fy-NL:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fy-NL.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fy-NL.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fy-NL.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fy-NL.win32.complete.mar
+ ga-IE:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ga-IE.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ga-IE.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ga-IE.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ga-IE.win32.complete.mar
+ gd:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gd.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gd.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gd.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gd.win32.complete.mar
+ gl:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gl.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gl.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gl.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171026221945"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-26-22-19-45-mozilla-central-l10n/firefox-58.0a1.gl.win32.complete.mar
+ gn:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gn.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gn.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gn.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gn.win32.complete.mar
+ gu-IN:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gu-IN.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gu-IN.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gu-IN.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gu-IN.win32.complete.mar
+ he:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.he.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.he.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.he.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.he.win32.complete.mar
+ hi-IN:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hi-IN.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hi-IN.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hi-IN.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hi-IN.win32.complete.mar
+ hr:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hr.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hr.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hr.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hr.win32.complete.mar
+ hsb:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hsb.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hsb.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hsb.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hsb.win32.complete.mar
+ hu:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hu.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hu.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hu.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hu.win32.complete.mar
+ hy-AM:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hy-AM.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hy-AM.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hy-AM.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hy-AM.win32.complete.mar
+ ia:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ia.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ia.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ia.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ia.win32.complete.mar
+ id:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.id.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.id.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.id.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.id.win32.complete.mar
+ is:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.is.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.is.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.is.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.is.win32.complete.mar
+ it:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.it.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.it.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.it.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.it.win32.complete.mar
+ ja:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ja.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ja.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ja.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ja.win32.complete.mar
+ ka:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ka.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ka.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ka.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ka.win32.complete.mar
+ kab:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kab.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kab.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kab.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kab.win32.complete.mar
+ kk:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kk.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kk.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kk.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kk.win32.complete.mar
+ km:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.km.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.km.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.km.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171026221945"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-26-22-19-45-mozilla-central-l10n/firefox-58.0a1.km.win32.complete.mar
+ kn:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kn.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kn.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kn.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171026221945"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-26-22-19-45-mozilla-central-l10n/firefox-58.0a1.kn.win32.complete.mar
+ ko:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ko.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ko.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ko.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ko.win32.complete.mar
+ lij:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lij.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lij.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lij.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lij.win32.complete.mar
+ lo:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lo.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lo.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lo.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lo.win32.complete.mar
+ lt:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lt.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lt.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lt.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lt.win32.complete.mar
+ ltg:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ltg.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ltg.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ltg.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ltg.win32.complete.mar
+ lv:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lv.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lv.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lv.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lv.win32.complete.mar
+ mai:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mai.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mai.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mai.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mai.win32.complete.mar
+ mk:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mk.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mk.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mk.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mk.win32.complete.mar
+ ml:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ml.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ml.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ml.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ml.win32.complete.mar
+ mr:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mr.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mr.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mr.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mr.win32.complete.mar
+ ms:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ms.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ms.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ms.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ms.win32.complete.mar
+ my:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.my.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.my.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.my.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.my.win32.complete.mar
+ nb-NO:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nb-NO.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nb-NO.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nb-NO.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nb-NO.win32.complete.mar
+ ne-NP:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ne-NP.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ne-NP.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ne-NP.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ne-NP.win32.complete.mar
+ nl:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nl.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nl.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nl.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nl.win32.complete.mar
+ nn-NO:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nn-NO.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nn-NO.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nn-NO.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nn-NO.win32.complete.mar
+ or:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.or.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.or.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.or.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.or.win32.complete.mar
+ pa-IN:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pa-IN.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pa-IN.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pa-IN.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pa-IN.win32.complete.mar
+ pl:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pl.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pl.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pl.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pl.win32.complete.mar
+ pt-BR:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pt-BR.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pt-BR.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pt-BR.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pt-BR.win32.complete.mar
+ pt-PT:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pt-PT.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pt-PT.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pt-PT.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pt-PT.win32.complete.mar
+ rm:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.rm.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.rm.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.rm.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.rm.win32.complete.mar
+ ro:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ro.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ro.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ro.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ro.win32.complete.mar
+ ru:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ru.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ru.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ru.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ru.win32.complete.mar
+ si:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.si.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.si.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.si.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.si.win32.complete.mar
+ sk:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sk.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sk.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sk.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sk.win32.complete.mar
+ sl:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sl.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sl.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sl.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sl.win32.complete.mar
+ son:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.son.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.son.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.son.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.son.win32.complete.mar
+ sq:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sq.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sq.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sq.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sq.win32.complete.mar
+ sr:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sr.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sr.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sr.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sr.win32.complete.mar
+ sv-SE:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sv-SE.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sv-SE.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sv-SE.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sv-SE.win32.complete.mar
+ ta:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ta.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ta.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ta.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ta.win32.complete.mar
+ te:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.te.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.te.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.te.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.te.win32.complete.mar
+ th:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.th.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.th.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.th.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.th.win32.complete.mar
+ tl:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.tl.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.tl.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.tl.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.tl.win32.complete.mar
+ tr:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.tr.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.tr.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.tr.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.tr.win32.complete.mar
+ uk:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.uk.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.uk.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.uk.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.uk.win32.complete.mar
+ ur:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ur.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ur.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ur.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ur.win32.complete.mar
+ uz:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.uz.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.uz.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.uz.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.uz.win32.complete.mar
+ vi:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.vi.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.vi.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.vi.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.vi.win32.complete.mar
+ xh:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.xh.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.xh.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.xh.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.xh.win32.complete.mar
+ zh-CN:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.zh-CN.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.zh-CN.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.zh-CN.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.zh-CN.win32.complete.mar
+ zh-TW:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.zh-TW.win32.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.zh-TW.win32.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.zh-TW.win32.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.zh-TW.win32.complete.mar
+ WINNT_x86_64-msvc:
+ ach:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ach.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ach.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ach.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ach.win64.complete.mar
+ af:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.af.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.af.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.af.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.af.win64.complete.mar
+ an:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.an.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.an.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.an.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.an.win64.complete.mar
+ ar:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ar.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ar.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ar.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ar.win64.complete.mar
+ as:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.as.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.as.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.as.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.as.win64.complete.mar
+ ast:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ast.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ast.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ast.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ast.win64.complete.mar
+ az:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.az.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.az.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.az.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.az.win64.complete.mar
+ be:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.be.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.be.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.be.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.be.win64.complete.mar
+ bg:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bg.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bg.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bg.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bg.win64.complete.mar
+ bn-BD:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bn-BD.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bn-BD.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bn-BD.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bn-BD.win64.complete.mar
+ bn-IN:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bn-IN.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bn-IN.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bn-IN.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bn-IN.win64.complete.mar
+ br:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.br.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.br.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.br.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.br.win64.complete.mar
+ bs:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.bs.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.bs.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.bs.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.bs.win64.complete.mar
+ ca:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ca.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ca.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ca.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ca.win64.complete.mar
+ cak:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cak.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cak.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cak.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cak.win64.complete.mar
+ cs:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cs.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cs.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cs.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cs.win64.complete.mar
+ cy:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.cy.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.cy.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.cy.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.cy.win64.complete.mar
+ da:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.da.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.da.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.da.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.da.win64.complete.mar
+ de:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.de.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.de.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.de.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.de.win64.complete.mar
+ dsb:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.dsb.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.dsb.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.dsb.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.dsb.win64.complete.mar
+ el:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.el.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.el.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.el.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.el.win64.complete.mar
+ en-GB:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.en-GB.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.en-GB.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.en-GB.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.en-GB.win64.complete.mar
+ en-US:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central/firefox-58.0a1.en-US.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central/firefox-58.0a1.en-US.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central/firefox-58.0a1.en-US.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central/firefox-58.0a1.en-US.win64.complete.mar
+ en-ZA:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.en-ZA.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.en-ZA.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.en-ZA.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.en-ZA.win64.complete.mar
+ eo:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.eo.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.eo.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.eo.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.eo.win64.complete.mar
+ es-AR:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-AR.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-AR.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-AR.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-AR.win64.complete.mar
+ es-CL:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-CL.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-CL.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-CL.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-CL.win64.complete.mar
+ es-ES:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-ES.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-ES.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-ES.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-ES.win64.complete.mar
+ es-MX:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.es-MX.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.es-MX.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.es-MX.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.es-MX.win64.complete.mar
+ et:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.et.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.et.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.et.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.et.win64.complete.mar
+ eu:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.eu.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.eu.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.eu.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.eu.win64.complete.mar
+ fa:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fa.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fa.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fa.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fa.win64.complete.mar
+ ff:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ff.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ff.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ff.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ff.win64.complete.mar
+ fi:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fi.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fi.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fi.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fi.win64.complete.mar
+ fr:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fr.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fr.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fr.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fr.win64.complete.mar
+ fy-NL:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.fy-NL.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.fy-NL.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.fy-NL.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.fy-NL.win64.complete.mar
+ ga-IE:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ga-IE.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ga-IE.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ga-IE.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ga-IE.win64.complete.mar
+ gd:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gd.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gd.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gd.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gd.win64.complete.mar
+ gl:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gl.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gl.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gl.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gl.win64.complete.mar
+ gn:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gn.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gn.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gn.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gn.win64.complete.mar
+ gu-IN:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.gu-IN.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.gu-IN.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.gu-IN.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.gu-IN.win64.complete.mar
+ he:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.he.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.he.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.he.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.he.win64.complete.mar
+ hi-IN:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hi-IN.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hi-IN.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hi-IN.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hi-IN.win64.complete.mar
+ hr:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hr.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hr.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hr.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hr.win64.complete.mar
+ hsb:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hsb.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hsb.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hsb.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hsb.win64.complete.mar
+ hu:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hu.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hu.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hu.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hu.win64.complete.mar
+ hy-AM:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.hy-AM.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.hy-AM.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.hy-AM.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.hy-AM.win64.complete.mar
+ ia:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ia.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ia.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ia.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ia.win64.complete.mar
+ id:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.id.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.id.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.id.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.id.win64.complete.mar
+ is:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.is.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.is.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.is.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.is.win64.complete.mar
+ it:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.it.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.it.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.it.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.it.win64.complete.mar
+ ja:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ja.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ja.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ja.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ja.win64.complete.mar
+ ka:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ka.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ka.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ka.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ka.win64.complete.mar
+ kab:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kab.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kab.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kab.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kab.win64.complete.mar
+ kk:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kk.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kk.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kk.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kk.win64.complete.mar
+ km:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.km.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.km.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.km.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.km.win64.complete.mar
+ kn:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.kn.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.kn.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.kn.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.kn.win64.complete.mar
+ ko:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ko.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ko.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ko.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ko.win64.complete.mar
+ lij:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lij.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lij.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lij.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lij.win64.complete.mar
+ lo:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lo.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lo.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lo.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lo.win64.complete.mar
+ lt:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lt.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lt.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lt.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lt.win64.complete.mar
+ ltg:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ltg.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ltg.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ltg.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ltg.win64.complete.mar
+ lv:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.lv.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.lv.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.lv.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.lv.win64.complete.mar
+ mai:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mai.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mai.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mai.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mai.win64.complete.mar
+ mk:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mk.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mk.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mk.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mk.win64.complete.mar
+ ml:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ml.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ml.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ml.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ml.win64.complete.mar
+ mr:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.mr.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.mr.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.mr.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.mr.win64.complete.mar
+ ms:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ms.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ms.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ms.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ms.win64.complete.mar
+ my:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.my.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.my.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.my.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.my.win64.complete.mar
+ nb-NO:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nb-NO.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nb-NO.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nb-NO.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nb-NO.win64.complete.mar
+ ne-NP:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ne-NP.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ne-NP.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ne-NP.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ne-NP.win64.complete.mar
+ nl:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nl.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nl.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nl.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nl.win64.complete.mar
+ nn-NO:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.nn-NO.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.nn-NO.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.nn-NO.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.nn-NO.win64.complete.mar
+ or:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.or.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.or.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.or.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.or.win64.complete.mar
+ pa-IN:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pa-IN.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pa-IN.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pa-IN.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pa-IN.win64.complete.mar
+ pl:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pl.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pl.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pl.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pl.win64.complete.mar
+ pt-BR:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pt-BR.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pt-BR.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pt-BR.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pt-BR.win64.complete.mar
+ pt-PT:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.pt-PT.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.pt-PT.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.pt-PT.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.pt-PT.win64.complete.mar
+ rm:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.rm.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.rm.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.rm.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.rm.win64.complete.mar
+ ro:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ro.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ro.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ro.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ro.win64.complete.mar
+ ru:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ru.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ru.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ru.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ru.win64.complete.mar
+ si:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.si.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.si.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.si.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.si.win64.complete.mar
+ sk:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sk.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sk.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sk.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sk.win64.complete.mar
+ sl:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sl.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sl.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sl.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sl.win64.complete.mar
+ son:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.son.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.son.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.son.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.son.win64.complete.mar
+ sq:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sq.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sq.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sq.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sq.win64.complete.mar
+ sr:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sr.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sr.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sr.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sr.win64.complete.mar
+ sv-SE:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.sv-SE.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.sv-SE.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.sv-SE.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.sv-SE.win64.complete.mar
+ ta:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ta.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ta.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ta.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ta.win64.complete.mar
+ te:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.te.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.te.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.te.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.te.win64.complete.mar
+ th:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.th.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.th.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.th.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.th.win64.complete.mar
+ tl:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.tl.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.tl.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.tl.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.tl.win64.complete.mar
+ tr:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.tr.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.tr.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.tr.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.tr.win64.complete.mar
+ uk:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.uk.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.uk.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.uk.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.uk.win64.complete.mar
+ ur:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.ur.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.ur.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.ur.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.ur.win64.complete.mar
+ uz:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.uz.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.uz.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.uz.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.uz.win64.complete.mar
+ vi:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.vi.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.vi.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.vi.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.vi.win64.complete.mar
+ xh:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.xh.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.xh.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.xh.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.xh.win64.complete.mar
+ zh-CN:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.zh-CN.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.zh-CN.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.zh-CN.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.zh-CN.win64.complete.mar
+ zh-TW:
+ target.partial-1.mar:
+ buildid: "20171028220326"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-22-03-26-mozilla-central-l10n/firefox-58.0a1.zh-TW.win64.complete.mar
+ target.partial-2.mar:
+ buildid: "20171028100423"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-28-10-04-23-mozilla-central-l10n/firefox-58.0a1.zh-TW.win64.complete.mar
+ target.partial-3.mar:
+ buildid: "20171027220059"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-22-00-59-mozilla-central-l10n/firefox-58.0a1.zh-TW.win64.complete.mar
+ target.partial-4.mar:
+ buildid: "20171027100103"
+ mar_url: https://archive.mozilla.org/pub/firefox/nightly/2017/10/2017-10-27-10-01-03-mozilla-central-l10n/firefox-58.0a1.zh-TW.win64.complete.mar
+release_enable_partners: false
+release_partners: []
+release_partner_build_number: 1
+release_partner_config: null
+release_enable_emefree: false
+target_tasks_method: nightly_desktop
+tasks_for: cron
+try_mode: null
+try_options: null
+try_task_config: {}
+release_type: "nightly"
+release_product: null
+required_signoffs: []
+signoff_urls: {}
+phabricator_diff:
diff --git a/taskcluster/test/params/mc-onpush.yml b/taskcluster/test/params/mc-onpush.yml
new file mode 100644
index 0000000000..0e2315d356
--- /dev/null
+++ b/taskcluster/test/params/mc-onpush.yml
@@ -0,0 +1,41 @@
+---
+base_repository: https://hg.mozilla.org/mozilla-unified
+build_date: 1509302065
+build_number: 1
+app_version: 60.0a1
+version: 60.0a1
+next_version: null
+do_not_optimize: []
+existing_tasks: {}
+filters:
+ - target_tasks_method
+head_ref: c83100c88242aba3593102b99ece7f8073f93177
+head_repository: https://hg.mozilla.org/mozilla-central
+head_rev: c83100c88242aba3593102b99ece7f8073f93177
+hg_branch: default
+level: "3"
+message: " "
+moz_build_date: "20171029183425"
+optimize_target_tasks: true
+owner: ffxbld@noreply.mozilla.org
+project: mozilla-central
+pushdate: 1509302065
+pushlog_id: "32768"
+release_eta: ""
+release_history: {}
+release_enable_partners: false
+release_partners: []
+release_partner_build_number: 1
+release_partner_config: null
+release_enable_emefree: false
+target_tasks_method: default
+tasks_for: hg-push
+try_mode: null
+try_options: null
+try_task_config: {}
+release_type: "nightly"
+release_product: null
+required_signoffs: []
+signoff_urls: {}
+phabricator_diff:
+test_manifest_loader: default
diff --git a/taskcluster/test/params/mc-ship-geckoview.yml b/taskcluster/test/params/mc-ship-geckoview.yml
new file mode 100644
index 0000000000..f90c09ce11
--- /dev/null
+++ b/taskcluster/test/params/mc-ship-geckoview.yml
@@ -0,0 +1,3822 @@
+---
+app_version: 75.0a1
+base_repository: https://hg.mozilla.org/mozilla-unified
+build_date: 1582796996
+build_number: 1
+do_not_optimize: []
+existing_tasks:
+ artifact-build-linux64-artifact/opt: P_IsAyPITzuXsmZOvP2LIA
+ build-android-aarch64-gcp/debug: JZuEhLIpRuaxpQ81kPlEzA
+ build-android-aarch64-gcp/opt: BjSF-tEeSBmpjMMy8dlz5Q
+ build-android-aarch64/debug: AzCnLhS5TG63X1TtSLN8Zw
+ build-android-aarch64/opt: BZYCYLuqRk2Y9FuxDHcQQA
+ build-android-aarch64/pgo: OUxM9dVET12aawe7NEhzHw
+ build-android-api-16-gcp/debug: ZHbjdppbRbuRgRochX5MzA
+ build-android-api-16-gcp/opt: SSUvfaMFQVymV9pFHRqYWg
+ build-android-api-16/debug: JtWzTgdkRVy0uohQPkVdFg
+ build-android-api-16/opt: M5qSN82KTm--V3TrDJponw
+ build-android-api-16/pgo: Vh6K5kuHRDKgeOc8wnPGfg
+ build-android-geckoview-docs/opt: aBfbhXzYSxu4KNObzsBLKA
+ build-android-x86-fuzzing/debug: X9kImocJT2a4Ba0Z-gvgww
+ build-android-x86-gcp/opt: TLrDFhgnQYuTINyPnWGoJQ
+ build-android-x86/opt: EWr2P3LRSfOwPzs0cOCFxA
+ build-android-x86_64-asan-fuzzing/opt: P8w9ZQi8QzSf3tF9q8hy_Q
+ build-android-x86_64-gcp/debug: YRsJOHnORcKSk_DRCYdbLQ
+ build-android-x86_64-gcp/opt: b2T1JIZNRxK7kAzsPJsI3A
+ build-android-x86_64/debug: BUGo2DFDQ02j73GENoDxGQ
+ build-android-x86_64/opt: NAlj76XiRziaUXtf6xQ4DA
+ build-docker-image-android-build: ato_32n2RDOL14IW1fFQ_A
+ build-docker-image-condprof: d7hq_hacRnm6UmtFHi6_rA
+ build-docker-image-custom-v8: bPi-QafwRFqm_x_jyDqAHA
+ build-docker-image-debian10-amd64-build: Zc1-X6g4To2DasSgQcANMA
+ build-docker-image-debian10-arm64-build: VaNeOjDnSSG7Q8sL6eC7GQ
+ build-docker-image-debian10-base: EQUcZ-k3Rd-cRPjItvhNqQ
+ build-docker-image-debian10-packages: GWpsUMu5RI6gbqMHumOKJg
+ build-docker-image-debian10-raw: Qs5XdxsRTTeQGjKcVmi43A
+ build-docker-image-debian10-test: CyDMHR0DRc-ne3nI8Wgktg
+ build-docker-image-debian10-test-iris: dOE4SBCuQmGvu3B7IVdDhQ
+ build-docker-image-debian7-amd64-build: IIEnKGrFS36vh4xj9p_DqQ
+ build-docker-image-debian7-amd64-build-base: UBPBa4ZGRFus5dOPnKcu0g
+ build-docker-image-debian7-base: OAJPeInCT8y-LmUhmwZHLg
+ build-docker-image-debian7-i386-build: ATRybbY-QtCDtr62SRvp2A
+ build-docker-image-debian7-i386-packages: IuZ_5SRIQHSGdUadyX2FkQ
+ build-docker-image-debian7-i386-raw: f-6sR9nFSryzACrIJ0DarQ
+ build-docker-image-debian7-mozjs-rust-build: cLBUVx_mSbufJfO-9aqZXQ
+ build-docker-image-debian7-packages: KN1swzULR5C6XN8lNpAMGg
+ build-docker-image-debian7-raw: ULgNyhP4QOi89bdL2MRAbQ
+ build-docker-image-debian9-amd64-build: Kumob80mS1aanoQaihMaEg
+ build-docker-image-debian9-base: ALK_wnCMR3qob9mSxrgvgA
+ build-docker-image-debian9-packages: Axa1ka2BS4i0y67Btnsgiw
+ build-docker-image-debian9-raw: TGIcdv0tSHGQpGfY8DibgQ
+ build-docker-image-desktop1604-test: JflqYDdRRlGgFITaxf8SOw
+ build-docker-image-diffoscope: RBWk6AUZSMqw5TvWEjiiWQ
+ build-docker-image-fetch: G3KvjWkoS2ym-lrahCb-Zw
+ build-docker-image-firefox-snap: LQsRfQtMREW0kkDKBy-CNQ
+ build-docker-image-funsize-update-generator: VkcV9D-vRyuKDWhnzlA1Mw
+ build-docker-image-gdb-test: LEr2pG42RSK4el6nvpzCew
+ build-docker-image-github-sync: SOAFmzQOQtOXNEPLwSyaYg
+ build-docker-image-image_builder: Qc1jybi4TFC0VSCNvcRJ4g
+ build-docker-image-index-task: EE5E1m5ESReaNAxXOz8lNA
+ build-docker-image-lint: WnOYkBODRXmLjdEePfhI0g
+ build-docker-image-mingw32-build: NL6eklFCQNShDFYQQ6Sd5A
+ build-docker-image-mozapkpublisher: JOWIgQadRJimoAuFwI7Nkg
+ build-docker-image-partner-repack: Rcml9IrtT5iARRcC5VHDOg
+ build-docker-image-periodic-updates: YkONahVKT36Az2YEIOZKCQ
+ build-docker-image-pipfile-updates: H_A43Kk2QD-YgbZ_VDZp4g
+ build-docker-image-static-analysis-build: fkd53EKQTjaJmduIrYxxcw
+ build-docker-image-system-symbols-mac: B1pzNRyRTduh0nXgJ1tWgQ
+ build-docker-image-system-symbols-win: fKYdzvJgQ_KcWIeduXDvWA
+ build-docker-image-toolchain-arm64-build: VQIiuCuxSM-JbDoZ0kCFPA
+ build-docker-image-toolchain-build: Fq72uSJoT8mGHnIhNP-zKw
+ build-docker-image-ubuntu1804-test: eVDwdUKqRWunV0SXY10-5g
+ build-docker-image-update-verify: SZRoRsV3S4iVqLqNw8CIUA
+ build-docker-image-valgrind-build: Va8AbF5wR6GzH5UjvqrRRA
+ build-docker-image-visual-metrics: PAHWYQnLSpisQv6VwFWybA
+ build-docker-image-webrender: PzNqXj9LTj-XasP-LugElg
+ build-docker-image-wgpu: a0nDaR_jRtmTz99QALOWnw
+ build-fat-aar-android-geckoview-fat-aar/opt: HCJljo7FSpK3gT_LAeTWZA
+ build-linux-gcp/debug: cf-Y0SwyTcOFf--UHFOloQ
+ build-linux-gcp/opt: eavFZiUtTUOHKfLsGufe0w
+ build-linux-reproduced/opt: cMWm9b3LQ72xwxfasFA3PQ
+ build-linux-rusttests/debug: JaHvX37JSDuUB0ntxBU6lg
+ build-linux-rusttests/opt: fq0Z8Wj4Qom8ARevqADT7A
+ build-linux-shippable/opt: AXTjtDr0Tb-M_kAqPBFyKw
+ build-linux-shippable/opt-upload-symbols: XqgtKEvqTS-HFTix41nkFA
+ build-linux/debug: ZNiqISx1RDiLrF-a1hq-wA
+ build-linux/opt: BdawADUPSemriSIoDXxsog
+ build-linux64-aarch64/opt: Pcxw_8wlTyaWJDyZ5xrw-Q
+ build-linux64-asan-fuzzing-ccov/opt: HUYgNOZARJqmPQrtk4iqzg
+ build-linux64-asan-fuzzing/opt: bZFh_OUjRySkvj83LLamJg
+ build-linux64-asan/debug: FSlgd5H4T0iVYTUhvbDOWw
+ build-linux64-asan/opt: ZqqBHJNZTem3ZkHExb0mCQ
+ build-linux64-base-toolchains-clang/debug: Y8FE1eqHR66QDeZVDQ3Uyg
+ build-linux64-base-toolchains-clang/opt: SayzoS31SKuBwyHjpQETBQ
+ build-linux64-base-toolchains/debug: S-4cLzdIR96EgrLbkMnXhA
+ build-linux64-base-toolchains/opt: U5bh2PPDSDizcB0BFdIYYA
+ build-linux64-ccov/opt: S9pIOAraTOev-nwtxutsKg
+ build-linux64-fuzzing-ccov/opt: VpIxWb_6TleNgYixAfcl0A
+ build-linux64-fuzzing/debug: WeTsICwFTyeeZlTGV28Hqw
+ build-linux64-gcp/debug: Por1xntcQbiW-RDlJtSmLQ
+ build-linux64-gcp/opt: DX3_oUV2RwymjAbmUXCs9Q
+ build-linux64-noopt/debug: Y5ovxTjWTXuUSDPNnZ2u-g
+ build-linux64-plain/debug: Ebzemw49Qoqk94u9SYSmaQ
+ build-linux64-plain/opt: W4xC9FTlRlqUxEIh3tBlcg
+ build-linux64-rusttests/debug: awS20pyaRiSYzp28PMeljw
+ build-linux64-rusttests/opt: P8wMv0EGQqq4LOOxDEwZCA
+ build-linux64-shippable/opt: e09A6IgOSnOJNTcojWgaYg
+ build-linux64-shippable/opt-upload-symbols: Zos_PPr9Tsm73V5f0eY8ag
+ build-linux64-tsan-fuzzing/opt: IX6vbwr7QdGxcSXVA42yyA
+ build-linux64-tsan/opt: IunEJ8BdTEebbw4hvhCTiQ
+ build-linux64/debug: YyjeFTVeRrOuEX5oXGXLFQ
+ build-linux64/opt: CnU_i566R5K7uv3abLX7Lg
+ build-macosx64-asan-fuzzing/opt: Z_58dz9MRjyXb3MMlmty6w
+ build-macosx64-ccov/opt: CnX59bW2QNKwj5aR6T1Ieg
+ build-macosx64-fuzzing/debug: YLnlTIgCQlG9-DvMoj2Yzw
+ build-macosx64-gcp/debug: Lnyld42ISM6LZ-sUv6j63A
+ build-macosx64-gcp/opt: DnExfHB0QZmrSZvDY21KLA
+ build-macosx64-noopt/debug: D8zwO54iQiaPU6wnkKqZnw
+ build-macosx64-shippable/opt: UVIhzjB3SWSKUxihzm0MhQ
+ build-macosx64-shippable/opt-upload-symbols: EQ1LBdXsSNG_tSTNwuvffg
+ build-macosx64/debug: Q2ymr-hQRTaLFBtCgnpFVQ
+ build-macosx64/opt: cvDxNoAQSomchCCS8gkORA
+ build-notarization-part-1-macosx64-shippable/opt: JN2fiqdUQtKetdMWJndvcQ
+ build-notarization-poller-macosx64-shippable/opt: D69R3VcXTJSUL-6uTAM1fw
+ build-signing-linux-shippable/opt: EVTgz3EtSwyPpeRRb5w4OQ
+ build-signing-linux/opt: F60Gwm8LRcWmUfagfO6DQw
+ build-signing-linux64-shippable/opt: ayCiynMXT0u8GfVL56K0dg
+ build-signing-linux64/opt: JkGzlpG4SyWzu92UznCtdg
+ build-signing-macosx64-shippable/opt: Hc8VMjd_T9OED14HFBNm4w
+ build-signing-macosx64/opt: XxzDJsrQQFOab2_R9xN4uA
+ build-signing-win32-shippable/opt: ZZbgcTC3SeyHdGiZv3Uirg
+ build-signing-win32/debug: YmEvmWUlTNq337FkJ1JdxQ
+ build-signing-win32/opt: GOn2HGxfTCS1ULnURBPbnQ
+ build-signing-win64-aarch64-shippable/opt: OBcoF-rGSKm_hocIsWs7Iw
+ build-signing-win64-aarch64/opt: VrGN5Hc9RtKiVw-fG-urtA
+ build-signing-win64-ccov/opt: W-GuzPU5RKSNkriJkSM53Q
+ build-signing-win64-shippable/opt: NbcU6voHSm-T3TfaPFMJAw
+ build-signing-win64/debug: OQRac3KYTkKs1GOG5CLG5w
+ build-signing-win64/opt: WbTvEfltQgK3W6JH0_psgw
+ build-win32-mingwclang/debug: DRak_TsqTEGYzjeOBkVbAg
+ build-win32-mingwclang/opt: HvZmhSPeQjSSKlapdqtVeQ
+ build-win32-noopt/debug: En0TzIFVQmWDiEgYq_l3-A
+ build-win32-rusttests/debug: TLxHynHyRnqAl9Zl9aDZ8w
+ build-win32-rusttests/opt: binOIsipT42WqdegPgkM4A
+ build-win32-shippable/opt: QAgFASBKSxaQ-sn25r7a6w
+ build-win32-shippable/opt-upload-symbols: C6mIyE1QSW2pRO916YpyNQ
+ build-win32/debug: Bio2vS3rRzezBVNLjRFXXQ
+ build-win32/opt: bH1IItXnRei0TXIIwdSdYA
+ build-win64-aarch64-eme/opt: UObqkBExSNOLzmDFM9DSXw
+ build-win64-aarch64-shippable-no-eme/opt: LPNH62f-QcuabjX7WcGvWw
+ build-win64-aarch64-shippable/opt: UOmkcit7Taq9BWZbTWGLEQ
+ build-win64-aarch64-shippable/opt-upload-symbols: dcXwDStFSQi6QoSbhO9R5w
+ build-win64-aarch64/debug: IGCr0eOYRb61dLmPIRe6zg
+ build-win64-aarch64/opt: UGtGEjUkQzGDsoQ4W1rSKQ
+ build-win64-asan-fuzzing/opt: dEvSfxvgT8SvxWnYdfQ-ew
+ build-win64-asan/debug: CAwL-VROSDS6EhcsYCeH3Q
+ build-win64-asan/opt: L4fgslBuSpqoD0oFlqAUAw
+ build-win64-ccov/opt: Htmz08-GSvWwoPJsbx3D8Q
+ build-win64-fuzzing/debug: YaIMWSVsRzSe4ZT_-pY3mw
+ build-win64-mingwclang/debug: dOsT4wOwQ0CKJAsKlwz4XA
+ build-win64-mingwclang/opt: DYnIWBZaQea_zGsHZLpJJg
+ build-win64-noopt/debug: Ti5QdMjHSFK_8bsAGhYlBw
+ build-win64-plain/debug: UI5nG2oVQSamq-kGm42AAg
+ build-win64-plain/opt: EQF-mS5RRpa8yyRkM25_7w
+ build-win64-rusttests/debug: MsltZPJcQReOjEaVsP7ZiQ
+ build-win64-rusttests/opt: SBiqfZJnQKmDu9TwE1mRhg
+ build-win64-shippable/opt: SI0AfIdNSQOB5szDfQcNYA
+ build-win64-shippable/opt-upload-symbols: PHLPOmkJTKGkM8VPs07Aag
+ build-win64/debug: M6NAJyEbTdWnWikR0Bok8w
+ build-win64/opt: O1vuo0zzRRmEs6qAB8VluA
+ condprof-android-hw-g5-7-0-arm7-api-16-fenix: Nqml6-7NR3COhgrLUe69YQ
+ condprof-android-hw-g5-7-0-arm7-api-16-geckoview: XOCi5JSgTayrGs4pS9cHzg
+ condprof-android-hw-p2-8-0-aarch64-fenix: IbZATNyURg-8fseeRdo_bA
+ condprof-android-hw-p2-8-0-aarch64-fennec: dzvQZ107Qi2p1yJnj6ZNGw
+ condprof-android-hw-p2-8-0-android-aarch64-geckoview: Mr6r5ET6SROsPaTs20Ml8g
+ condprof-linux64-firefox: J18PTsE8S0iBIk8N39mg4Q
+ condprof-macosx64-firefox: IENCNOpnRr2eULPW08N-2A
+ condprof-windows2012-64-firefox: F-r0fOceSXOtQa7TjLJmJw
+ diff-artifact-win64-aarch64-eme-validation: OpYOdJN2R3CuewBKsMQDqg
+ diff-reproducible-linux32: aaHF2CzqQNGO_VK4X73PYQ
+ fetch-android-rs-glue: GQOBvwnWRviPk8Q00UNVJg
+ fetch-assorted-dom: HTqezXEKSomU4QLP-SW6EQ
+ fetch-binutils-2.27: ZuQ-OYWMR0SA4E0y3RAzxA
+ fetch-binutils-2.31.1: RFr-0cBRQbquyN4T2UM4_A
+ fetch-cbindgen-0.13.1: S_MQrrcqTUGEmtLaHOQfVQ
+ fetch-cctools-port: EpYZgzq0SiqNsUJh9Kz9ew
+ fetch-clang-5.0: Xl_wNA_wTZmYe20FIlCb-Q
+ fetch-clang-7: aICY-_TxQGOnACgyiwrpVQ
+ fetch-clang-9: aDYZ7PEMREWw_ETOW1wKHw
+ fetch-cmake: F5kmkERhSiCqvcUDtQCb6A
+ fetch-dump-syms: Jj4qN2inQECPAURoQhLoYg
+ fetch-fix-stacks: G606hoRUSxqohchf64oJBw
+ fetch-fxc2: L7O0CeNGQneMCVIIT1MGeg
+ fetch-gcc-6.4.0: V_zhaxj-S5eQbrwdnGHN_w
+ fetch-gcc-7.4.0: MHhBcXRLR4K3CRWMvtguOg
+ fetch-gcc-8.3.0: AjTMdAkuSwidURpNDjbt2A
+ fetch-gcc-9.1.0: bWTT-dWDSFqU5XY8gIiZWw
+ fetch-gmp-5.1.3: aWjmEFfJQaK7PB9-rZHFnQ
+ fetch-gmp-6.1.0: OgpH6_APQ2-95aUarAx2Qw
+ fetch-gn: VIGlZlbtSDu78Y4ZMXwGvg
+ fetch-grcov: A0MSx_QCTUGUJCZ-JZ4z5Q
+ fetch-hfsplus-tools: EEF3Zhk7QH6KkSHYiIl_ww
+ fetch-isl-0.15: ZSGQ7qLRSG-s_VDTjCY0PA
+ fetch-isl-0.16.1: d1MLHY1OQNGpwyFxeqN-Wg
+ fetch-jetstream2: TaHMxREfTgGsqL5NPPa3qA
+ fetch-libdmg-hfsplus: DJov6brKR02i2j_gKKGRcQ
+ fetch-libtapi: dqa6qRBYTnOGIVy3Qz0sOA
+ fetch-libunwind: Ue0dHXBiRM2jnMw3RBzuXA
+ fetch-linux64-chromedriver: MZGmTLK2SBOGAyrec1uesA
+ fetch-linux64-chromedriver-78: BKbR1uZwRmyqaiYEw-EmMQ
+ fetch-linux64-chromedriver-79: b1-w_JlOT9qBFCptaM6Hlw
+ fetch-linux64-chromedriver-80: E4BUkNnWQKe_LyTyICv4jA
+ fetch-linux64-ffmpeg-4.1.4: auvPfChsRXa3uP3p-LbTXA
+ fetch-llvm-for-dsymutil: e4DNytWuTYCK1kqLOI8nYw
+ fetch-llvm-mingw: RqRq2sRIR92y6nNPOXTjww
+ fetch-lucetc-source: N5lVeJmiT5Ss2FLCkgwMTA
+ fetch-mac64-chromedriver-78: MVRabu9ZTVW33h6mfjnX-w
+ fetch-mac64-chromedriver-79: eN7BwEa1TqyEtwWSXAkJew
+ fetch-mac64-chromedriver-80: HIRfb2xRR6ezVOlhpmkrog
+ fetch-mac64-ffmpeg-4.1.1: bcUVZhrXTXiiU6JwFzINBA
+ fetch-mingw-w64: Jc1iNViqR_2vmlXgcNDT6A
+ fetch-mpc-0.8.2: eNICetjsRNOBZb9E8HZnWA
+ fetch-mpc-1.0.3: IKo4nHFkQPKit_orPdjPfA
+ fetch-mpfr-3.1.4: LqALqMKURVi2iZbju0G08g
+ fetch-mpfr-3.1.5: OTlAFX-2S-22PaKrgJFDXQ
+ fetch-nasm-2.13.02: J-IJzsIxSRqh03mtIvPILA
+ fetch-nasm-2.14.02: FW7gAij7Q1ahgyAmLb4Y2A
+ fetch-ninja: cuJolDCYQ3uinL2CwlQviQ
+ fetch-nsis-3.01: CivGoPJcSxmu1xL2bqmBFA
+ fetch-octane: dLW609SGSAaOz15ShsFIpw
+ fetch-rust-size: ObCsLVPySBCo8LAJlkuSgw
+ fetch-sccache: PhgFFm0_SCC9r0BW_VE9OA
+ fetch-tup: dMdjMYuLQ5e-2r0piAVT9A
+ fetch-unity-webgl: LFeH0mDMSueAIa-bAEFtrg
+ fetch-visual-metrics: DR49t9eGQHu2qS0oKskeCg
+ fetch-wasi-sdk: IkAWBua6SzmoeHSv_vVP5w
+ fetch-wasm-misc: HgEQJSa7RfCcWtGlwxiL7Q
+ fetch-web-tooling-benchmark: OQF9hLdNRmODdgbZctLmLw
+ fetch-win32-chromedriver-78: a7edwUT3TKSi9fSTp9Hc7A
+ fetch-win32-chromedriver-79: CbtgzFtDTVS3GcYlNzn5ZA
+ fetch-win32-chromedriver-80: LK5PaW0MSmCVy5IQ1hN8rg
+ fetch-win64-ffmpeg-4.1.1: Z44OxJeHSceXgZrIhldV1Q
+ fetch-wine-3.0.3: bTuHuG3xSUGiAHzcdHEl1Q
+ fetch-wix-3.14.0: GPFpK3_lTEWzUPGOI__Ubw
+ fetch-zlib-1.2.11: S-kbYJJ0QE257ZYDW-ukKQ
+ generate-profile-android-api-16/pgo: UIqitLDJQZ-f1HJtOOkq8A
+ generate-profile-linux-shippable/opt: en6wO9MJRqybdLH7Bub1GA
+ generate-profile-linux64-shippable/opt: G1cgW30rRg-wxJ4tee-BuQ
+ generate-profile-macosx64-shippable/opt: dykU6mCBTnWigDXIC5YF5g
+ generate-profile-win32-shippable/opt: Ljn9uVQ1QxWnbyGxELkeWA
+ generate-profile-win64-shippable/opt: DbVpxpY8SWe0VKS9sxFaIg
+ github-sync-webrender: Z9vMh8YdRwezFx172iZ3lQ
+ hazard-linux64-haz/debug: foOBt6KTRy6jB73ei4zkqg
+ hazard-linux64-shell-haz/debug: c6x_0U1RRIKb5RMHaZr1AA
+ instrumented-build-android-api-16/pgo: L5BFVMbzS1C-CeaOTAB4LQ
+ instrumented-build-linux-shippable/opt: LB2xjMA_QuyQjYutdn8isg
+ instrumented-build-linux64-shippable/opt: ZjqC2SqtT-udLNoHlvUXGw
+ instrumented-build-macosx64-shippable/opt: Sum0lQYDQRCMj8lhMHMhgQ
+ instrumented-build-win32-shippable/opt: eEexJoDnTQ6pYQL4K9uiaw
+ instrumented-build-win64-shippable/opt: Mu4t_dyVTJ-xSDXOuXU5_g
+ l10n-linux-shippable/opt: I0uD3iB3QW6J5ytmmFFAvQ
+ l10n-linux64-shippable/opt: cRqcK1JIR3WE-1x5pwGtiw
+ l10n-macosx64-shippable/opt: c5ScCkbnQ5iZGm-fXcK93Q
+ l10n-win32-shippable/opt: blqZWeY9RpCErjbIjhBw2w
+ l10n-win64-shippable/opt: RU1v6nQNSgm2FMH5qIaogQ
+ packages-deb10-mercurial: B8z2oLEET5eEGAoLNaYFkg
+ packages-deb10-python-zstandard: RhTeb03MTR-kXu3z-l4ipQ
+ packages-deb7-32-atk: FJyyzgGuSvOkurKV9B4kZA
+ packages-deb7-32-gdk-pixbuf: eDR9O9TCSBWV45uKZK_RVw
+ packages-deb7-32-glib: PYqFdwUgTjGxIhiv3MeB-A
+ packages-deb7-32-gtk3: c-9j4QlNSvSfVzYs_smx5w
+ packages-deb7-32-harfbuzz: TQqZ6AfIQmOiHDylVhkRRA
+ packages-deb7-32-libxkbcommon: HL3k4JSNSAqyx_oeIm1NJg
+ packages-deb7-32-pango: byaFmfm-TP2KQCFm70KxSg
+ packages-deb7-32-pcre3: JZt_JGNYSuKrlLm-3sP9iQ
+ packages-deb7-32-wayland: eQGw3-D7T0O8jw-AQrq79Q
+ packages-deb7-32-xkeyboard-config: ZtgbFaOYRne6lGQxbs5reg
+ packages-deb7-apt: Ls1LTS4NSH2GPlVVxmnLrw
+ packages-deb7-atk: SHQacTunSMePv5M0Hbho9g
+ packages-deb7-automake-1.14: c_xA0dYPRw-hT2M-VVnsoQ
+ packages-deb7-cmake: QhoqEmMBQb2jIuN_mq2pAA
+ packages-deb7-devscripts-2.14: V0V94sOkRN2df3bR1P_FMQ
+ packages-deb7-dh-python: d_qeJ9KHTtqIIOWvaQlbhg
+ packages-deb7-dpkg-1.17: Nnz54AtmQaaGRg_M8EXgZA
+ packages-deb7-gdb: Hl9YLZzLRsqbHKjezc1oxw
+ packages-deb7-gdk-pixbuf: V0U8tROvS2q2094FaerQfw
+ packages-deb7-git: EE2WtGanS-Oiqiuln372lA
+ packages-deb7-glib: C1hT15J9QDKxiD3lawlWXg
+ packages-deb7-gtk3: UfJNlps3TDWPd4tI8Oi0SA
+ packages-deb7-harfbuzz: KBPtvAiaQAidFmt3FiU3dQ
+ packages-deb7-libxkbcommon: Ys4EbL7MSGy3bPTzekh-oQ
+ packages-deb7-make: e3LCwZaBS0SyoJ5-czN19A
+ packages-deb7-mercurial: aJz3xNkERzu2chgikmC_Pg
+ packages-deb7-ninja: XKI7wPC_RYOiUb3TkYxrrA
+ packages-deb7-pango: YiHs4EOAQN6BmKh_7HOYPw
+ packages-deb7-pcre3: OSE3gXiKR3uU1-5eziLNqQ
+ packages-deb7-python: ak0xUmrhTgyU5q5IhFYC5A
+ packages-deb7-python-defaults: C1K_xSZoQqG-f4AVgiPOIw
+ packages-deb7-python-zstandard: OFIYyWkVTL-g2DIeR1VJ7A
+ packages-deb7-python3-defaults: JStIdOfgSgScbXQU5ggCLA
+ packages-deb7-python3.5: bK37HfHYQJK3Lmv2-QDOAg
+ packages-deb7-sqlite3: UNDdpCqTQbuCX8sijPDLvA
+ packages-deb7-valgrind: GO4Qa8onS9agWelxB4Na5A
+ packages-deb7-wayland: KFVn9kckRqWu4zYNgFITiQ
+ packages-deb7-xz-utils: ZEa-J7WaQeucxdPM-48TjQ
+ packages-deb9-mercurial: Jp27EvsLQFObATxEOrsLlQ
+ packages-deb9-python-zstandard: YoAV-BgcSh-QCTd7-0H6Sg
+ repackage-linux-shippable/opt: BrJ8PYSnQU6psAsD0T-MJw
+ repackage-linux/opt: fbZvVyYXThy2xRlaRSZyUg
+ repackage-linux64-shippable/opt: Fy72M6YLRD6g6IxiAaL9mA
+ repackage-linux64/opt: JBjHCaL6TNWej-riozHffg
+ repackage-macosx64-shippable/opt: My4zbQ3aSKm52T-tCH78dA
+ repackage-macosx64/opt: f3HPuP70RcCSZFsodhOwjw
+ repackage-msi-win32-shippable/opt: bT7pmhc4TtmDL592tk2Jgg
+ repackage-msi-win64-shippable/opt: cy8gQkAYRXOYUrZ53r76Ig
+ repackage-signing-msi-win32-shippable/opt: W1KlA1TqQ22SkNZMUUPfhg
+ repackage-signing-msi-win64-shippable/opt: MzbZD7M_RDilIeecXikitg
+ repackage-signing-win32-shippable/opt: CHtjrzKkQbGy2-FKrQDbYg
+ repackage-signing-win64-aarch64-shippable/opt: LedVkfoNRmKcF98Q0Olpmw
+ repackage-signing-win64-shippable/opt: BYJMI96JRTm-wVeLh5Qp_w
+ repackage-win32-shippable/opt: Ii8pPVnPR4iDVateizkCPw
+ repackage-win32/opt: cGFA0orpTCibP6cwsr06lA
+ repackage-win64-aarch64-shippable/opt: RZt60XnmTEm8JBynQrWoGg
+ repackage-win64-shippable/opt: ayebXFy3TC6fCkEYxVGrYg
+ repackage-win64/opt: LdT9A0MbTg64R2GizaNr0w
+ source-test-coverity-coverity-full-analysis: F6T9MZkGS7OKKdejjNmpQA
+ source-test-cram-tryselect: OxKVA4tpSZ6-itHcxHj40g
+ source-test-doc-generate: atnQNEOCRrW9diFfjykfmw
+ source-test-doc-upload: aKAHwYouSKep7qp9YRaDNQ
+ source-test-file-metadata-bugzilla-components: UTGpaXvjSMuFZi7jnQEqIQ
+ source-test-file-metadata-test-info-all: BArGRxSrSYKBFUzos0hbgg
+ source-test-file-metadata-test-info-disabled-by-os: RMTDlfHMSjS5L7KwEAXz3g
+ source-test-file-metadata-test-info-fission: SfQ6cMvkQj2HgbSi6wnQow
+ source-test-jsshell-bench-ares6-sm: BBKzD9vwRuGLvyfP5KB3xA
+ source-test-jsshell-bench-ares6-v8: LRZKos7KR8Cl6E15Ti_p9g
+ source-test-jsshell-bench-octane-sm: U27xet1MQk-PEyQKIlo_mQ
+ source-test-jsshell-bench-octane-v8: HC4E-ZbVTj-mZ2p03QAC3Q
+ source-test-jsshell-bench-sixspeed-sm: BTM3NcgVRlmQWIMW_fL7-A
+ source-test-jsshell-bench-sixspeed-v8: HoQo2nyaRRCO-bpRcsd1TA
+ source-test-jsshell-bench-sunspider-sm: e9EqwNv_QvuXDToA9M5R8A
+ source-test-jsshell-bench-web-tooling-sm: U-XNlJiMSyaYMROuc2KMaQ
+ source-test-jsshell-bench-web-tooling-v8: BM5jay7hTy-vbh0UqRAqMQ
+ source-test-mozlint-android-lints: VD_PgkC1Q6qJeH1uPLAsjA
+ source-test-mozlint-clippy: aNh7FWCNRwS6pWXUHarX_g
+ source-test-mozlint-codespell: RU3VkeDaTSuwb6mxScgySQ
+ source-test-mozlint-eslint: RElFH_NuRIaPeAmiI51M5A
+ source-test-mozlint-file-perm: T-KF4y82TvSn3LGymzNKDQ
+ source-test-mozlint-file-whitespace: FLIKkIX0Te6fahJdLAx_Qg
+ source-test-mozlint-license: fXdgDPfDQzWZLrlZiwmq-g
+ source-test-mozlint-lintpref: fuX9H_LGQbePrFFAu3Pv0A
+ source-test-mozlint-mingw-cap: L8FXn3rsTaeZfw6LP_OJ1g
+ source-test-mozlint-perfdocs-verify: D2lP9-cRQLOrzHzicGEmIg
+ source-test-mozlint-py-compat: Mamsi9diRgyHxyQ4Np9v8g
+ source-test-mozlint-py-flake8: AL7WEvniS2yh4mLhQT7Azw
+ source-test-mozlint-rustfmt: Rw4ZYlHlTuC5cMCEcorUzw
+ source-test-mozlint-test-manifest: Efld3wxQSOidq7UShzQfow
+ source-test-mozlint-wptlint-gecko: V8HQgM6ZQc2DKTC5QLsETw
+ source-test-mozlint-yaml: Hn6CxtAJSfCcjS75yueJVA
+ source-test-node-devtools-tests: HvLbUJnZTheq97-hH8RGPQ
+ source-test-python-mochitest-harness-linux64-asan/opt: ahY1SxetSNS3DkggwS0cHA
+ source-test-python-mochitest-harness-linux64/debug: MrWCc_FbQaC-R7LW3X0bdQ
+ source-test-python-mochitest-harness-linux64/opt: cvQuj_RvRaeUauMFpVdixQ
+ source-test-python-mozbuild-linux64/opt-py2: Hq1cXhPwRm2LTDfB43aT9Q
+ source-test-python-mozbuild-linux64/opt-py3: XX5jZhcJSwC490WCuXAxuw
+ source-test-python-mozbuild-macosx1014-64/opt-py2: Av1ar9vASQ2PZJeiu6v8tw
+ source-test-python-mozbuild-macosx1014-64/opt-py3: ApJjnLOfQgyxwTmmhu4pzA
+ source-test-python-mozbuild-windows10-64/opt-py2: WQNgUo25TsaD5qo7Uyjsaw
+ source-test-python-mozbuild-windows10-64/opt-py3: J7vCspxJTKSQ-whahGSHMw
+ source-test-python-mozharness: YvX8Pz7kT12rkB-owoNedw
+ source-test-python-mozharness-py3: RbwIM8z0TrKGhrxiAy4c5g
+ source-test-python-tryselect-linux64/opt-py2: Wit8IVrsQOeKjGEC7L-4Qw
+ source-test-python-tryselect-windows10-64/opt-py2: dvT1hY3iRg6Gq02O2yVcDQ
+ source-test-wpt-manifest-upload: BxL6nGz5QIeDm6vQpLqERg
+ source-test-wpt-metadata-summary: Z4oqYgpcRieOejaVM-FsSA
+ spidermonkey-sm-arm-sim-linux32/debug: JdtJtrPURcu9SXZvceEjDw
+ spidermonkey-sm-arm64-sim-linux64/debug: DIY_zlUVQtaNUaINcGKohw
+ spidermonkey-sm-asan-linux64/opt: WlCN2XKPRM6t8PIxKLqzlQ
+ spidermonkey-sm-compacting-linux64/debug: FJ0h1j-6ROWbNrmTnxb0HA
+ spidermonkey-sm-compacting-win64/debug: L1CJvUj2T-KKrLCROh7r-w
+ spidermonkey-sm-fuzzing-linux64/opt: S_mtNKgFSESh2kHGOLIjMg
+ spidermonkey-sm-gdb-linux64/debug: TMJTPmamSQGavknheZWxUg
+ spidermonkey-sm-mozjs-sys-linux64/debug: PeD15fEIT_St8vhAQ0x1CQ
+ spidermonkey-sm-nojit-linux64/opt: JN8ObW2PRQq1CrSpphxLtQ
+ spidermonkey-sm-nonunified-linux64/debug: V3VuGnjcSnaHguJ2KHqPcw
+ spidermonkey-sm-package-linux64/opt: SUA390PASHWKAWr5X1WSRA
+ spidermonkey-sm-plain-linux64/debug: Skrot78GS6aDkRijRHWnJw
+ spidermonkey-sm-plain-linux64/opt: LdHV2xeSRiaPP5QJTo7RgA
+ spidermonkey-sm-plain-win32/debug: AyCEFzlaSFGYM8Q0ftd6qQ
+ spidermonkey-sm-plain-win32/opt: LPVfTrIASVeI6Y4KNiXeIA
+ spidermonkey-sm-plain-win64-aarch64/opt: G3dKgyRATdirzW_oYazWvw
+ spidermonkey-sm-plain-win64/debug: PuKfs3_MTr-5tR4wLlu_Eg
+ spidermonkey-sm-plain-win64/opt: KAyNK3iOTZqPpgAZoLD-NA
+ spidermonkey-sm-rootanalysis-linux64/debug: DkGEA_LrS26fNDCYEaTacQ
+ spidermonkey-sm-rust-bindings-linux64/debug: IIt8uU7OSP24i-FUQQbElw
+ spidermonkey-sm-tsan-linux64/opt: Pc8IhS1kR5G0m-m7OI-Udw
+ static-analysis-autotest-linux64-st-autotest/debug: FUsguAoLQ8O47iO3rw_cBA
+ static-analysis-autotest-win64-st-autotest/debug: ca7gNb6QTZCkl8kHz8agLQ
+ test-android-em-7.0-x86_64-qr/debug-geckoview-crashtest-e10s: PRqsCVZ4RMi7p57LvMl_KQ
+ test-android-em-7.0-x86_64-qr/debug-geckoview-reftest-e10s-1: ZeAOWJXQScqnr6Z-4tD9ZA
+ test-android-em-7.0-x86_64-qr/debug-geckoview-reftest-e10s-2: b346tX1gTKWzUs7ilRLqCg
+ test-android-em-7.0-x86_64-qr/opt-geckoview-crashtest-e10s: JQrqm2ZgQEKrAs81_IKnjA
+ test-android-em-7.0-x86_64-qr/opt-geckoview-reftest-e10s-1: NWpdcjXcRcGjWGZNeDeeKQ
+ test-android-em-7.0-x86_64-qr/opt-geckoview-reftest-e10s-2: UzlUYVHXTpaAPlGkztcIUw
+ test-android-em-7.0-x86_64/debug-geckoview-cppunit-1proc: f2OaOp2aT6amNhXwbzuyQw
+ test-android-em-7.0-x86_64/debug-geckoview-crashtest-e10s: CdazuBMtR-yJapNc23hsVQ
+ test-android-em-7.0-x86_64/debug-geckoview-gtest-1proc: XN2B_ztkRPKGcFQtg8I2_w
+ test-android-em-7.0-x86_64/debug-geckoview-junit-e10s: YAseKtBfSMmjmJTs6m-qAw
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-e10s-1: WsjOuVj1T8OB_Nr7jPzY9A
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-e10s-2: GtUAyORfROuBFFI0l2RXmA
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-e10s-3: TZ7BeAyDRi-WGFBB14kRgw
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-e10s-4: OjdfH5bDSmCzhfwkE8E5EQ
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-gpu-e10s: MFZ4PdmTRTWH7hw-hUou4A
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-media-e10s: UhWkISt6ReCT-yXXkKLnYA
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-media-spi-e10s: NNaqFHtpQPqSF26DT467ag
+ test-android-em-7.0-x86_64/debug-geckoview-reftest-e10s-1: TbcsakUuQXekWkmMp9b_zQ
+ test-android-em-7.0-x86_64/debug-geckoview-reftest-e10s-2: Qb3SPNoETHizxeKAeUcZKg
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-crashtests-e10s: cUkfpMjSSnarngHIzIACvA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-1: SNgvGpbZSIOtK6d_78jPKw
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-10: ObBJ6SbURZigjT1dgE7BNw
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-11: V-RtUARnQkSGOlj5wrdKPg
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-12: NGdcaybuRQ-nMruESfvUjA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-13: DFx7KHh9RyCmDkVlqpvt7A
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-14: L7VXleXOSi6PCVnRTZYyoQ
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-15: Dqq--lHvT8m1T7TRGiWB8g
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-16: W11gkJ-aS_ah-3arHvMHQA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-17: OB5AqqAUTJCcY-tZIBHfZQ
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-18: Vsn4-iDYQVW0HHYAmplhSA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-2: b5EqbE-3TwS572AKthV5dA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-3: GOqNO4sVQC-dP3OQOkD3-g
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-4: GlMkzRLXTlektYpwoWaHSg
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-5: SXCfF6nnR7eornt7tx6Mig
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-6: bdJ2OFJ3Q6OAs9k3T6ZkHA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-7: Lsq4PsvlT9CVydgdBYVzdQ
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-8: M--sBgRxQ9mcocA3A0m85w
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-9: bSc4qFwqRkSclDiZfTqqrA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-1: AjEHidcnQmSwMGoaoMx17g
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-2: BfWfNOeATw-vXQSIPVuTLw
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-3: SFMuHTmEQvehf0ojrSYeXg
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-4: Y6ycUuyqT7eDcPg9SID47w
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-5: YQtPztyiTD29DPinet6PHg
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-6: C7lFdJ_kRQ--DUvanSEY3w
+ test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-1: Uwqrv23tSOiIW4AXSXKL4w
+ test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-2: OEHuM-f3Sfu8aU8zrV7wrQ
+ test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-3: UjWc3f2IQFuuHcs8-HS5ww
+ test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-4: RnPA3Kw8Sk2jQFBKjjDR_w
+ test-android-em-7.0-x86_64/opt-geckoview-cppunit-1proc: Km3usYroQM2hLznxKnjYNw
+ test-android-em-7.0-x86_64/opt-geckoview-crashtest-e10s: Ybrif7FfQWKa19itYYtsMQ
+ test-android-em-7.0-x86_64/opt-geckoview-gtest-1proc: UtK4U92fRrezl5FvOcEFZQ
+ test-android-em-7.0-x86_64/opt-geckoview-junit-e10s: G73J253ISFmhx7I6fIzmnw
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-e10s-1: YVUgvN5uTtWoUasPGMuxPg
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-e10s-2: DVRjJaJoSrqc7mmu1mwXsQ
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-e10s-3: K_GcLmF5SIS7ghBPLAlgGQ
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-e10s-4: UjQak-P0QwakLTKzIsUQ0g
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-gpu-e10s: YY7EtS2nTkqQ1ngAIUlvtA
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-media-e10s: FipO3cb5Rp22Eb9jEXoLtg
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-media-spi-e10s: Nwdub7VgQ1W9xoqgtKuSoA
+ test-android-em-7.0-x86_64/opt-geckoview-reftest-e10s-1: IjjQBDLASTOIy7lOJyytsw
+ test-android-em-7.0-x86_64/opt-geckoview-reftest-e10s-2: cSRgGTnERpOTl_ccva2oJg
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-crashtests-e10s: drKuJkaXQV26rfce4KAr-g
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-1: c1JzbGUAQ8qvuYdO3vZm3A
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-10: PuGwqYnnTZe_GovQMRAmCg
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-11: L_brLgajTYKayTHBUGwuKA
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-12: brAEBswRR0msijswvQ57tw
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-13: M2omGi6MSga9M7KhURCB7g
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-14: IBqWqEFTT7GdY5DX-_0QzA
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-15: GreU5_kpTAmHftDAYAgwcA
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-16: GfiLNlPRTmmO9KAgMhRIxw
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-17: ZDi2gETrSxy9wfv0im7iVQ
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-18: O4FHhjs5RYmNXyntA2WAhw
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-2: CswlrZEITzCCVcH1hEl12w
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-3: FKXgIUQ1RyiCh0Jw1wL-SQ
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-4: UwHqlNgKQ6qyV0zPWaY-yg
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-5: Nh7zeIEhRUSQgWLiCwmKKw
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-6: fXyF2AJGSuipel14IBX7HA
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-7: RY5zvdFMTL-1XEBKyUvwPg
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-8: IhAkjg0UQg6LbChQ6jrwEg
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-9: Tle7s-23T-6vOQxM8X6yMQ
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-1: WmRAQgu2RUWIPpYEJcQk6A
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-2: eLOYCc4ZRKSvFGejnyGUaQ
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-3: Q2EYcZ3VRdGjPhMtzia7eQ
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-4: N1DsCzxkTpqVvIw6E15aeg
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-5: fkQrR7t_RiS_i3EA9ou0Tw
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-6: ex_6ByxJT52vxW7V80v50Q
+ test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-1: EFn4QjtXTHafqSCrG0V4Cg
+ test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-2: GZI1aYUURLejlzW_unqOPg
+ test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-3: FabSoSwcTYagMm_R6wRkRQ
+ test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-4: ZBBHz0hSSkyXsq-OMIGjnA
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-1-geckoview-e10s: U603aKeBT3aUoHafqPCmbg
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-10-geckoview-e10s: ZdAtvKOuRT2cDeaScca_WQ
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-16-geckoview-cold-e10s: QGCPCdpNRHejUHNaQEV33Q
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-2-geckoview-e10s: DKMEBJfvTTSqnjaRFygfFw
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-3-geckoview-e10s: RheMjOdSTg6e7it99Sl76Q
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-4-geckoview-e10s: F8rGhnBARG2oVxCNTWV0MQ
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-5-geckoview-e10s: RRGD1kGpTHaPJFBIiiq7nA
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-6-geckoview-e10s: SMrUpbgQQiKdLVZLENKCdA
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-7-geckoview-e10s: dC-PJ0EHRCSzd4ju3iq2Yw
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-8-geckoview-e10s: L4613kBkTB-RjEe1cVHThQ
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-9-geckoview-e10s: G09bSMc9T0qiGgXzDtDiCA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-speedometer-geckoview-e10s: WUGuqnAxSBOqUqmrTN0vfQ
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-1-geckoview-cold-e10s: VfJFADtMSh6LG7WFwRZ1HQ
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-1-geckoview-e10s: J9e5CX6ySbOFHTT19h6ufw
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-10-geckoview-cold-e10s: LwFvFd_RSk-wDGsoYIwrvg
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-10-geckoview-e10s: bu7vZy8SSQGHt4J0kNQ0eg
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-11-geckoview-cold-e10s: Rigrg5XQQk6Om0ugnUo-ng
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-12-geckoview-cold-e10s: XDKUGISYRL2tJ_f5h1fjFw
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-13-geckoview-cold-e10s: BFXZh1J5SOalY_8JIyvGGQ
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-14-geckoview-cold-e10s: VhqkH38ET4CSnF3n6QXuCg
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-15-geckoview-cold-e10s: GlwC5AQvRZaelOvjGM8bgA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-16-geckoview-cold-e10s: aviL9sqiSra3bEw5hxuxWg
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-17-geckoview-cold-e10s: fgeYD-M-SryLsSrLgsKLHQ
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-18-geckoview-cold-e10s: F14UNjkjQwuxjtQHnXy__w
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-19-geckoview-cold-e10s: WoSLzhrXT-WOnCsXsH9qIQ
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-2-geckoview-cold-e10s: RfGaCzH8RbK9qOlAaWM-ZA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-2-geckoview-e10s: Z0zOBNuYRvKBwVViVsJkLA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-20-geckoview-cold-e10s: Qw21PewDR-i-794Dik5RLA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-21-geckoview-cold-e10s: J8wF46YuRLK1ElNZGKB5ag
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-22-geckoview-cold-e10s: AuglvZuLQk2yJcrwmnGlkg
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-23-geckoview-cold-e10s: WNjIo8ahSYWtP9XzXw74vA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-24-geckoview-cold-e10s: VAWRd7yVRY-95DX--jdVwA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-25-geckoview-cold-e10s: G-bHZGMrToyv_llJIKXAxQ
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-26-geckoview-cold-e10s: C-H-xKBFQGqRQupWy_DKfw
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-27-geckoview-cold-e10s: JWsCDB6VSRKfadTHAuDH0g
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-28-geckoview-cold-e10s: ClN4u5veSyuj3HZysl2HGg
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-3-geckoview-cold-e10s: ZpR61XiWSKSKyM0DyAwSAA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-3-geckoview-e10s: B-ij-ssTR-aUQKDxpaJgfg
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-4-geckoview-cold-e10s: QoGOMvb0RZuShI-9CBOq4g
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-4-geckoview-e10s: L1_lySLMRAKLNTa11XNfig
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-5-geckoview-cold-e10s: K2neHB1SSeebtybAA_xeoA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-5-geckoview-e10s: QiVO-u_BQd-FJvQ6PCB3sw
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-6-geckoview-cold-e10s: F15VSp4yR5aW4yd72UQ22Q
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-6-geckoview-e10s: T76xympeQJqIYyojQ98UeA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-7-geckoview-cold-e10s: KOZAlMWaRO-Pf0ZaodJvUw
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-7-geckoview-e10s: RPouy2lSR66tw2QiD23K9Q
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-8-geckoview-cold-e10s: YBmPvzAjRmGrUqIkTPJBew
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-8-geckoview-e10s: JGjGknD-QCmDOffwstpnzw
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-9-geckoview-cold-e10s: OOtC7TgyRwmFKYMJOOMeQQ
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-9-geckoview-e10s: YCcJfsEkSXS9PKIPvoz09A
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-unity-webgl-geckoview-e10s: Ymgj0MBLThuTBh_35GxMCg
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-youtube-playback-fennec68-1proc: eI_K8udeSBiLvbPBUnNTyw
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-youtube-playback-geckoview-e10s: Rp1uRQ2nQgGU4Y3pssUctw
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-1: Sl1A4JfATJW-ipJi_YaszA
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-10: Pr7fJdGyRdqeDFy3bmKc6Q
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-11: NRtmx4B7SNeUX14BduFusg
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-12: eiebRJqERt6FcG0ckELBLw
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-2: c29TECiXRUqbCoG0kdep8g
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-3: LtItV9r_TVuVv0MXx1vNiw
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-4: GMvh0ottQNeZXhYV-YiRlQ
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-5: RT39QdZ1R7SHBoa0mQRcEw
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-6: RgqSelI5RSKaaA7SQNP3EA
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-7: YzXWbcuVSmSrA9tG71DBZQ
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-8: BfaoRIcaTT-Kv0-guDYomw
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-9: B_t9tooYQUydDCsmq5euDg
+ test-linux1804-64-asan-qr/opt-crashtest-e10s: Ce-6gn6sQHKCEnv9cU_2Fg
+ test-linux1804-64-asan-qr/opt-reftest-e10s-1: cisiPaQARUWxAKR0pTko1A
+ test-linux1804-64-asan-qr/opt-reftest-e10s-2: eYhzfxuQSu2beBN4VqnKJw
+ test-linux1804-64-asan-qr/opt-reftest-e10s-3: XDW61SlMQuGbr70_WCZjvg
+ test-linux1804-64-asan-qr/opt-reftest-e10s-4: G64JQWq2QJi_xdBP1kB4kA
+ test-linux1804-64-asan-qr/opt-reftest-e10s-5: KrYb0ginTxeCQqQBntW-0A
+ test-linux1804-64-asan-qr/opt-reftest-e10s-6: YOoMURRaR9yPkOc1jpfMrw
+ test-linux1804-64-asan-qr/opt-reftest-e10s-7: BQiraUnmQR2_wgg3bUe86w
+ test-linux1804-64-asan-qr/opt-reftest-e10s-8: fb4yph05TQu4Ev-7qJ3CHw
+ test-linux1804-64-asan/opt-cppunit-1proc: HW5c5zLUR6axC3Wu2iRO2g
+ test-linux1804-64-asan/opt-crashtest-e10s: e6p7apxrTQSd_pGsMDXrbw
+ test-linux1804-64-asan/opt-firefox-ui-functional-local-e10s: PXVIc2KnSIWX9rxyQcj8AQ
+ test-linux1804-64-asan/opt-firefox-ui-functional-remote-e10s: TmkWGYsOQQegSEYi8x1k0Q
+ test-linux1804-64-asan/opt-gtest-1proc: LgNiwFAVQwKL9Pj9SrFlfw
+ test-linux1804-64-asan/opt-jsreftest-e10s-1: VNZmahDoTOaD_iPSiPg34g
+ test-linux1804-64-asan/opt-jsreftest-e10s-2: dYkYkmI4SKCNIKGO45HQCQ
+ test-linux1804-64-asan/opt-jsreftest-e10s-3: RiqSMLugQcmquUV9cOfDVg
+ test-linux1804-64-asan/opt-mochitest-a11y-1proc: AQ3er0y2TnG953LvC7PC2g
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-1: efis2ZP3S6KZdZ5sZV2FBw
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-10: TUjP5lK-Tfqn571U31DBfA
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-11: aHzAovfJT_iUf19f-bdwng
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-12: c4AOIytwT2KCi-LVkZjCmA
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-13: EyD0Te2ZRW-0Ooj9MZK3lg
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-14: PQ0mFhQ7RXifJePMlCAWIg
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-15: BvThGa7eRCqriKrV9X-6rA
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-16: WhESBzgkQHCywpkheO7mtw
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-2: W6_bgInPQa-cqNpOXXRvKA
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-3: DmxYdKkOTPGlIRcg_MMe4A
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-4: OyIJqpBSQ0WCNeSiULqDXw
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-5: dyU7N-q7Sr2wSFA6aHx5FQ
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-6: fLM0Y4QBQJyLVerHikNYFA
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-7: OxoTvOIxR6upA5RVckbNjg
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-8: SC8061CuRI2BGcuSyiSTwg
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-9: RdvSqSXmSDOTrxG_Vt6DLg
+ test-linux1804-64-asan/opt-mochitest-chrome-1proc-1: H1L6-DqTTnmCIf4qVWIJCA
+ test-linux1804-64-asan/opt-mochitest-chrome-1proc-2: F_2FzheKR1e02r9-s_iviw
+ test-linux1804-64-asan/opt-mochitest-chrome-1proc-3: K24AT1LdTzC1tuIkDmwC7A
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-1: A8jcLtUYRkqFx0K52yzd6A
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-2: OfU7wUXKR-GgIZpM7OTpfg
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-3: BRSLGLw0R_OzMKYgIDuHYw
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-4: TFBUiSZ5TKuMW3mmOwqZDQ
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-5: ItaZCp_1R_e2EeKVpstejA
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-6: HDqI0iolQcuAOiI58PrFjw
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-7: N6Dg1IoPSKK5TwcLPhYLUg
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-8: PdB_nJijSRmGSVCmFq8s8w
+ test-linux1804-64-asan/opt-mochitest-e10s-1: HQsKvwjdR7OXSuE2MFrY6g
+ test-linux1804-64-asan/opt-mochitest-e10s-10: NU2brA5TQ7SLdRP9BY3f2g
+ test-linux1804-64-asan/opt-mochitest-e10s-2: ThTTo5HGQSW1puYR-JYGgQ
+ test-linux1804-64-asan/opt-mochitest-e10s-3: HxnZdwrcQHOXdma25yIRJQ
+ test-linux1804-64-asan/opt-mochitest-e10s-4: YPR-S6N4TQedjf5J29PGLw
+ test-linux1804-64-asan/opt-mochitest-e10s-5: TRi0BC1ERp6GcP3UtWA-3g
+ test-linux1804-64-asan/opt-mochitest-e10s-6: ROaEd8H7RdC4bqPSsOMpIg
+ test-linux1804-64-asan/opt-mochitest-e10s-7: VZntD6jxTPKnHx1iilQ0Cw
+ test-linux1804-64-asan/opt-mochitest-e10s-8: bKPKOu78ROukoFvIFec_0w
+ test-linux1804-64-asan/opt-mochitest-e10s-9: cRBozmVnQh-DmR_T_cIOFg
+ test-linux1804-64-asan/opt-mochitest-gpu-e10s: DyOh_rJdQUm0SYHza7zS8Q
+ test-linux1804-64-asan/opt-mochitest-media-e10s-1: KLoLNs5LQeGq_7e2mI90oA
+ test-linux1804-64-asan/opt-mochitest-media-e10s-2: H_ABSiejSESxgkSgEyLB3A
+ test-linux1804-64-asan/opt-mochitest-media-e10s-3: N9wIQagiTLWdLVI0qh_Oww
+ test-linux1804-64-asan/opt-mochitest-media-spi-e10s-1: US3GWzg4TbmSJsgDlMMFvQ
+ test-linux1804-64-asan/opt-mochitest-media-spi-e10s-2: dqqOiemgQYCVwxkNvRVQZw
+ test-linux1804-64-asan/opt-mochitest-media-spi-e10s-3: IIj4BuTXTpKJnoq9ZKZHuw
+ test-linux1804-64-asan/opt-mochitest-remote-e10s: SKjP939ESNuM6UtOlzChhw
+ test-linux1804-64-asan/opt-mochitest-webgl1-core-e10s: Ssg_DnQ4T5OO4560WS4RFg
+ test-linux1804-64-asan/opt-mochitest-webgl1-ext-e10s: e9s8NNyxTwqvbl8Kr0i8dw
+ test-linux1804-64-asan/opt-mochitest-webgl2-core-e10s: YkPKUpyHTViP1QK4O7nwPA
+ test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-1: QuzOj4CaQHKjNwXlOlA61w
+ test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-2: Gz5mgLHeQ8eZjwA17ktyog
+ test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-3: NvAJpGP4SMO4p_ag_BYm0A
+ test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-4: ASwRCELyQ26yACJWKJtyxw
+ test-linux1804-64-asan/opt-mochitest-webgpu-e10s: LYeSSh90R0ikF0IONGse5Q
+ test-linux1804-64-asan/opt-reftest-e10s-1: Efj1026xSzy88ThkeAbwDg
+ test-linux1804-64-asan/opt-reftest-e10s-2: ellNgyjrQtyogiR597qFmQ
+ test-linux1804-64-asan/opt-reftest-e10s-3: TXtfudFIQ0aNkJr5DJD0Yw
+ test-linux1804-64-asan/opt-reftest-e10s-4: WIjhJBP_Qjuoh4tnH6o3eg
+ test-linux1804-64-asan/opt-reftest-e10s-5: Pheuh4swRSWq_ZHUQNdisg
+ test-linux1804-64-asan/opt-reftest-e10s-6: YFioMq_uTk2jWfQD_nS4Gw
+ test-linux1804-64-asan/opt-reftest-e10s-7: dALHgVQ_S-6OvQFIe6bvbg
+ test-linux1804-64-asan/opt-reftest-e10s-8: HB61pf9CT5GBoEUZy5aSOw
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-1: NlqNa31SSdmAeomPf7jE9A
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-2: FRLOdsOjTsSuUiSDYdEjcg
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-3: egWXLydKTfaZconAhH_IuQ
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-4: YDHmVGCiSzW2jtgue5JbKQ
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-5: DgcvDZCvRWmwaBCCBBFW3A
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-6: G8Ip_KQMR-Obhjv5uoStLg
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-7: OAIGZyTvStaP_xIOjxuvow
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-8: O1DxP0NkS8KyhRGUKmgHAA
+ test-linux1804-64-asan/opt-telemetry-tests-client-e10s: aIkBcn5STEu8PwYLApbTaA
+ test-linux1804-64-asan/opt-web-platform-tests-crashtests-e10s: e4aGt2gMSy-GTRsJzEhA7A
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-1: Koy30YqbQ6qY5zpVcnYldw
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-10: F5Qo2CcUQ5GehweqmRvBeg
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-11: fZKGpvvSS9mE_TS_117PVg
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-12: ZKS6EsfCQtuLqzwedMzlnA
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-13: BfVdI5sPQfKvKPcEZgM99A
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-14: VFl0Vw8BQXe8xZ4HCi2cpA
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-15: PGihLKaET26bNR6TCpGh0w
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-16: WAfH4WvPRPutQMRS3-KoEw
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-17: cUUbDNIRRGmOaKegS-4EaA
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-18: Mil-NQ3qRAK4juwYD75VHg
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-19: Y7I7wz-mQmSFBT3yqQLYSw
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-2: MgyJdO8sRyu6zDu0j0cc3w
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-20: TulGqJmHQPuifuos_TgbbA
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-21: JYtejlrSSA-eqZsC2Aw2-g
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-22: e26bt-6cQSe0cChD9h8oJQ
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-23: WrvVTCs-Ra6yUDH3K85Phw
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-24: AxaIqDzhRbqJgqswALaCmg
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-25: fefytvxCSLSwGtnfHavXpw
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-26: Yd5tiyfcRqeY8uXISjqepA
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-27: cQItZ1WOTbKOasKjx57h4w
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-28: HjBX3nnnTeuEDJuHJak3ow
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-3: cQ1amHNBR2mFsh0CkKB38w
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-4: UJDI4i1_T3-vUnJdzgCTfQ
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-5: JsdwIExlQqWCcr1-6gX9KA
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-6: aICNjnKCQ_iNfF95OELrVA
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-7: abq-xb4-QzS9nw9R9Apnjg
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-8: GZ9LRYTAREettF7zUpE93A
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-9: SaoUL8gEQw2el_IAdlW9Dw
+ test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-1: Aul1p_8QQjyhK3cIoPDlVw
+ test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-2: JUtPvDwQTmaOwwuv17GQOw
+ test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-3: QrYsnM2kT7yWj5Ni8ZVV3A
+ test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-4: NPSuKiDBSwCLJf_vv20kbQ
+ test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-5: MGS3glpDRuiICVtpfe2Uow
+ test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-6: GJ_XYLqmT8Gd91mDoKS_Iw
+ test-linux1804-64-asan/opt-xpcshell-e10s-1: ap7joKo_S0u7aW7sJxeUgg
+ test-linux1804-64-asan/opt-xpcshell-e10s-2: fV3L5lzVTvKKdiSGNkphzg
+ test-linux1804-64-asan/opt-xpcshell-e10s-3: OZHo52DCTf6aIq2dxu5lzQ
+ test-linux1804-64-asan/opt-xpcshell-e10s-4: bzCsD7D3Sfibj8r7oVHdPw
+ test-linux1804-64-asan/opt-xpcshell-e10s-5: S23PJ6AzRFKp81fI0QN4mw
+ test-linux1804-64-ccov/opt-awsy-base-e10s: LXgpjQedQhONu8rZDcqIng
+ test-linux1804-64-ccov/opt-awsy-e10s: Cc2HZU68SYSxbBj6Eg17DA
+ test-linux1804-64-ccov/opt-cppunit-1proc: M1XEw8iYTACEgul0oDUKNA
+ test-linux1804-64-ccov/opt-crashtest-e10s: PA9sFRhIRnmOWt5M9P3CNw
+ test-linux1804-64-ccov/opt-firefox-ui-functional-local-e10s: S2iy4KcKQjOBiRg46TDARA
+ test-linux1804-64-ccov/opt-firefox-ui-functional-remote-e10s: dVxBJr3oRgWdh2ICcvCpog
+ test-linux1804-64-ccov/opt-gtest-1proc: OWBA7hLpSaqZi7mGUWkXMg
+ test-linux1804-64-ccov/opt-jittest-1proc-1: AtbUjBwwRd6SuOqZgk7Qaw
+ test-linux1804-64-ccov/opt-jittest-1proc-2: CHFymXjjRk6ZHofpLkE4hg
+ test-linux1804-64-ccov/opt-jittest-1proc-3: EBpspr8VRNa9lQKnPWeuew
+ test-linux1804-64-ccov/opt-jittest-1proc-4: emJ4-Fd9QaikUnurby9ekw
+ test-linux1804-64-ccov/opt-jittest-1proc-5: AdVKIUuLTK2V_4G1H6137Q
+ test-linux1804-64-ccov/opt-jittest-1proc-6: FiF0iUcxQIW48WkPizYeeg
+ test-linux1804-64-ccov/opt-jsreftest-e10s-1: Re0KuPgCQJSYZdywqoebwQ
+ test-linux1804-64-ccov/opt-jsreftest-e10s-2: TM4g8iTyQ6-8VltQlzCj3g
+ test-linux1804-64-ccov/opt-jsreftest-e10s-3: HsI_4zy2S7-Kmr8PgeTOyA
+ test-linux1804-64-ccov/opt-jsreftest-e10s-4: JIlbs2A9R8y2hKHrX4gbYQ
+ test-linux1804-64-ccov/opt-jsreftest-e10s-5: OX_sezrRTqePHHfpPwqaRg
+ test-linux1804-64-ccov/opt-mochitest-a11y-1proc: DB0gOo20TYaX4H9kt4mbQg
+ test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-1: Do2Xo6WlTdeqBu2jKqxG4Q
+ test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-2: HHwGKiGnTQGoH8v0LTmX_Q
+ test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-3: YpLU_h4YTaeImpXJ5feiyg
+ test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-4: Dj5d6q_1TpOix60RElXhOA
+ test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-5: PI8fnmXTT3mYEhE8nOPgbg
+ test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-6: XWs4C5weRGeBwYp95MWO4A
+ test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-7: YUxv7R8uQhiUHUQ1L4lJTg
+ test-linux1804-64-ccov/opt-mochitest-chrome-1proc-1: RzFewwxjRgaTBGXAZtTBOg
+ test-linux1804-64-ccov/opt-mochitest-chrome-1proc-2: Zltn89AgSi6eaxgEDdtoyg
+ test-linux1804-64-ccov/opt-mochitest-chrome-1proc-3: A_RHWkn1Siu8VO2foVyTVQ
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-1: ZeQJjKZcRdCMhA7YkfTSLA
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-10: PtnXjxnTRZeYawB9jLZ96A
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-11: MMRBAvC6S7mrgN4lNhI4yQ
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-12: KpKP2p74QyW9D7UiGYbnrA
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-13: JSzB4ROmRGqZWcWW_2d-Nw
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-14: TbexdmXMRpiMFtyRrFKefg
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-15: ZRMYDxlxSNS0QD917Rqmew
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-16: fKp94kCCTE6e83A-WNHLLw
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-2: LSZUX6agTaipz6OKo6K1ow
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-3: GV_7_F7ZTJeLdQbzDAybMQ
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-4: cwYDlVqMRd-Im_qH_YoSPg
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-5: GApAr6RGQI6zPS6-tGyL_w
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-6: Wn9l9ZrXRVeaoo3NQ-u7nQ
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-7: IbhAxAMfSiO4y5qE1VSdEw
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-8: cqguuDbrQ6OOXJqzTBwfVQ
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-9: e1S5EKpcTlSEK89pYKnsCg
+ test-linux1804-64-ccov/opt-mochitest-e10s-1: O0MrnnhwSvuHgZSMM-EMAQ
+ test-linux1804-64-ccov/opt-mochitest-e10s-10: I_ml7y32QYyz8c7GDAqbnw
+ test-linux1804-64-ccov/opt-mochitest-e10s-2: GA1CFcQpTwGfJFUMgnnR8Q
+ test-linux1804-64-ccov/opt-mochitest-e10s-3: PW3ft1bzRd6oBrXH5WyIeg
+ test-linux1804-64-ccov/opt-mochitest-e10s-4: Y6pq1_xITM-BidGE3lA1vA
+ test-linux1804-64-ccov/opt-mochitest-e10s-5: NXfbaqT5QoSZeK4quWRlAw
+ test-linux1804-64-ccov/opt-mochitest-e10s-6: EXLiWnl1SXOMxuvSQO06UA
+ test-linux1804-64-ccov/opt-mochitest-e10s-7: YnqqLEw8Qfe7frHTo7Rnog
+ test-linux1804-64-ccov/opt-mochitest-e10s-8: YsNyI70BT4SqLp553rVu4A
+ test-linux1804-64-ccov/opt-mochitest-e10s-9: VES6fDkRTgGRUCUMwwnvlA
+ test-linux1804-64-ccov/opt-mochitest-gpu-e10s: az35ZsawSgmVcRuzbi4kww
+ test-linux1804-64-ccov/opt-mochitest-media-e10s-1: SmIVJpg8R8qr5UiDY7ufIA
+ test-linux1804-64-ccov/opt-mochitest-media-e10s-2: HZYTBM4ZR3WjjIxzzHD43w
+ test-linux1804-64-ccov/opt-mochitest-media-e10s-3: SbRY9uBgSRiwJ2a3FoJDEA
+ test-linux1804-64-ccov/opt-mochitest-media-spi-e10s-1: dbcCEh1iTUmO8fSNU5_ORA
+ test-linux1804-64-ccov/opt-mochitest-media-spi-e10s-2: WZGvyp7pSVW0tlnyRc9R0Q
+ test-linux1804-64-ccov/opt-mochitest-media-spi-e10s-3: OY5Q9zxtQM2zqA0xeecBOw
+ test-linux1804-64-ccov/opt-mochitest-remote-e10s: NN2UZtWpRsOWs0kF-zcMxg
+ test-linux1804-64-ccov/opt-mochitest-webgl1-core-e10s: Zn5kozJTRz2IUYc3HlOVPw
+ test-linux1804-64-ccov/opt-mochitest-webgl1-ext-e10s: T2ulgqyNRHuJFlWf7OJqwg
+ test-linux1804-64-ccov/opt-mochitest-webgl2-core-e10s: QWN6Sc0NR129O_e4sNvzVQ
+ test-linux1804-64-ccov/opt-mochitest-webgl2-ext-e10s-1: agpet2ZWSOuvnr_qX98UXQ
+ test-linux1804-64-ccov/opt-mochitest-webgl2-ext-e10s-2: CH2MGoIfSMGL2zMfLZXZKQ
+ test-linux1804-64-ccov/opt-mochitest-webgl2-ext-e10s-3: fi85GNxoQCqGMrJCAWCrcw
+ test-linux1804-64-ccov/opt-mochitest-webgl2-ext-e10s-4: NZyTcpBhQwqj6IzA9Ypz0g
+ test-linux1804-64-ccov/opt-mochitest-webgpu-e10s: bLv9XNfFTu2HKMu9P5RHhQ
+ test-linux1804-64-ccov/opt-reftest-e10s-1: aQCUhADcSEuy9Z6wjbm_xQ
+ test-linux1804-64-ccov/opt-reftest-e10s-2: YfmDoH8sSAe1okcP9nLHYQ
+ test-linux1804-64-ccov/opt-reftest-e10s-3: XxAhIL9ITiGLs6I2wa5rLA
+ test-linux1804-64-ccov/opt-reftest-e10s-4: JNG5qABzReaC0mfxW6hmAw
+ test-linux1804-64-ccov/opt-reftest-e10s-5: ap-HErjQRxC4bDy1vzGKUQ
+ test-linux1804-64-ccov/opt-reftest-e10s-6: A4RB6d-STyGFe-tIst9WdQ
+ test-linux1804-64-ccov/opt-reftest-e10s-7: IDb796GET-y0VM2JihD42w
+ test-linux1804-64-ccov/opt-reftest-e10s-8: REB3HWtLTgu5fiYCAFM1Sw
+ test-linux1804-64-ccov/opt-reftest-no-accel-e10s-1: a1kb8pHzQfKXLOqj9uvafg
+ test-linux1804-64-ccov/opt-reftest-no-accel-e10s-2: Y7EGEEqOSyaiQtTA3xgiag
+ test-linux1804-64-ccov/opt-reftest-no-accel-e10s-3: AqTKMGmOQ4-Wxq0NghSUWQ
+ test-linux1804-64-ccov/opt-reftest-no-accel-e10s-4: e5JI3FVKRRuh6mbKVe2z0w
+ test-linux1804-64-ccov/opt-reftest-no-accel-e10s-5: awMpGCE1TpWqy8UbPqPMWw
+ test-linux1804-64-ccov/opt-reftest-no-accel-e10s-6: Zi5AJLF5Q4qvWA7C1zaI3Q
+ test-linux1804-64-ccov/opt-reftest-no-accel-e10s-7: HzK7yaRqSDCPeCwgyZyUqA
+ test-linux1804-64-ccov/opt-reftest-no-accel-e10s-8: MLUFwnjuRjmuirQkUybenA
+ test-linux1804-64-ccov/opt-telemetry-tests-client-e10s: TW2ZA6r4SnmrCOEnusMPLg
+ test-linux1804-64-ccov/opt-test-coverage-e10s: G4ThkMhsQ3ubBm_VhLP3jA
+ test-linux1804-64-ccov/opt-test-coverage-wpt-e10s-1: SCHo9_4zTXa49RfsfYQGJQ
+ test-linux1804-64-ccov/opt-test-coverage-wpt-e10s-2: IxReFbayTNSn3s3auovTeA
+ test-linux1804-64-ccov/opt-test-coverage-wpt-e10s-3: KfT2n5AtTrCIBkti6nfklA
+ test-linux1804-64-ccov/opt-web-platform-tests-crashtests-e10s: HJ0nRSMgRPWF2OflUumjXA
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-1: HA1FTo6oQrSUPpWTm6czjA
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-10: e012L22BRBi976kKupbu-w
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-11: VOHoFtDjSJeiHV6-yylayw
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-12: dDbRzJ4USMqasrfz4_Og6Q
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-13: OzldpbuCSRWdVGqlVcupMA
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-14: fr5_TNgDQr2zTvZLFlpptg
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-15: BYClL3LJRKe2CAZmUCknnA
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-16: BfAYbgPdRquAx0Mjl2vm2w
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-17: M2isCGzWSIaZ4jPBh1E8vg
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-18: JTWsvB9kQEyiWU2E9J6pEQ
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-19: aOcCwv-_QhmWim1WCXRoFQ
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-2: Oe7t8DduSXOiQeUblkObLA
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-20: VPJXGHzTS_G5aTLmFg0QbA
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-21: FRerQ3gLTEes3LhnTu2a_w
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-22: Hl7gGi46S66Vj2NU6L7Dng
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-23: D8NxOuBIRuWyaIP0EhJtbg
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-24: NrVhG2BNSG2B8DMcr1VVLQ
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-3: aDBLYoXcR-CQpffmg_gn-w
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-4: AF4Kc5T1TSWypOxPwnTmcw
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-5: eAm2lFDGTqa0xU9PhvVTSg
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-6: Ud8O9xRFQCahWr6wpJRd1g
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-7: Pr4cJssTSh6_q8UQPVx3PQ
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-8: XzF_9UIgRPu-JKiV3yo0TA
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-9: PveEaXFIR8umnGejRS_3pw
+ test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-1: TXzW5CEnSou8ivqoVgx7ZQ
+ test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-2: KaESz2ObQpaVJdpSADk_ZQ
+ test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-3: NL05iZ7_RG2ZlwkkuvKAAQ
+ test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-4: Ixg0gGF6TXGMCPyIW3hu4w
+ test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-5: biZr0D9lSw-cOSdHfjPVCw
+ test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-6: Kmte2p7VTQa5-2CAnKbNsw
+ test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-7: LZ1RL2yhSd2xBXPXjBxYHQ
+ test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-8: bsOWUKw1RpyGd3hOFmxlaQ
+ test-linux1804-64-ccov/opt-xpcshell-e10s-1: UdzzVbs9RJCiWciiIaPURg
+ test-linux1804-64-ccov/opt-xpcshell-e10s-2: LIEL7mLOQZq6LkAtdXRO9g
+ test-linux1804-64-ccov/opt-xpcshell-e10s-3: BqRo4LuEQs6IzjEY4E-MjA
+ test-linux1804-64-ccov/opt-xpcshell-e10s-4: d0u1jo3VSPeRi53ekYla6A
+ test-linux1804-64-ccov/opt-xpcshell-e10s-5: XxDhE2kGSuWGk4LiZXohWQ
+ test-linux1804-64-ccov/opt-xpcshell-e10s-6: fitIMbdXQEmlQB7jtFPyMg
+ test-linux1804-64-qr/debug-cppunit-1proc: XPY99ioCQo-Rqo-u862QXQ
+ test-linux1804-64-qr/debug-crashtest-e10s: HvWjOKu8RNmq1OMFfTtYHQ
+ test-linux1804-64-qr/debug-gtest-1proc: QUdzo2DjSNaGkvHEK0TZxw
+ test-linux1804-64-qr/debug-jsreftest-e10s-1: Kee_HcUsSBu7g4CpfhU4Qg
+ test-linux1804-64-qr/debug-jsreftest-e10s-2: TJtvs85hTWOxdblFTT9WRA
+ test-linux1804-64-qr/debug-jsreftest-e10s-3: I8UgoqxtSdmQPWxv2RSkgg
+ test-linux1804-64-qr/debug-jsreftest-e10s-4: OQyaSzxFQ32qpdmyxrtBqA
+ test-linux1804-64-qr/debug-jsreftest-e10s-5: Yio1mQiuRkuo4qNgexC3uw
+ test-linux1804-64-qr/debug-mochitest-a11y-1proc: cnOE8DlaRqimh5P680wWYA
+ test-linux1804-64-qr/debug-mochitest-chrome-1proc-1: CnkJvLqASjiKY7-PgG4pEQ
+ test-linux1804-64-qr/debug-mochitest-chrome-1proc-2: DtCq9RxySiqatqxro_1GDw
+ test-linux1804-64-qr/debug-mochitest-chrome-1proc-3: HAKzhIlTTFmclKlOUTEEKA
+ test-linux1804-64-qr/debug-mochitest-e10s-1: CzTNeBXgTiGih2Ax-Mjlqg
+ test-linux1804-64-qr/debug-mochitest-e10s-10: aydJflAESqKwh-v7ifpufA
+ test-linux1804-64-qr/debug-mochitest-e10s-11: fwNGVzAcQZerlT_nP5qoYA
+ test-linux1804-64-qr/debug-mochitest-e10s-12: f_2r0hrtTK2Eq6IpYNTtEQ
+ test-linux1804-64-qr/debug-mochitest-e10s-13: epJoSQv2R0atP9wLfoDwSg
+ test-linux1804-64-qr/debug-mochitest-e10s-14: Nd8kW2BYRnGqG7gUn4PpmA
+ test-linux1804-64-qr/debug-mochitest-e10s-15: HDW3P_C4QlCzUaJkL-TSDw
+ test-linux1804-64-qr/debug-mochitest-e10s-16: c6QsJLq9QmypGM-9GsUHhw
+ test-linux1804-64-qr/debug-mochitest-e10s-2: Q90TxP-FT-qQNPe6-HwSNQ
+ test-linux1804-64-qr/debug-mochitest-e10s-3: PAAXwPWGRAi0qXp4yKcgYg
+ test-linux1804-64-qr/debug-mochitest-e10s-4: ARzcukg7QgyNYsrO6lvqTA
+ test-linux1804-64-qr/debug-mochitest-e10s-5: fCPKiLCxSse99R9V9aB8KQ
+ test-linux1804-64-qr/debug-mochitest-e10s-6: FTW5RjKtRpGLUlXRLoQEgQ
+ test-linux1804-64-qr/debug-mochitest-e10s-7: MWhuE8MASzipnb7dmRlfTg
+ test-linux1804-64-qr/debug-mochitest-e10s-8: biPFjmxTQ6ufSmQrhR-fRg
+ test-linux1804-64-qr/debug-mochitest-e10s-9: B99YrgzdRmOsQPLnXvpGUA
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-1: Bi808StJTrSW-ye4lYnGRw
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-10: ewssjKqBThyxWILUfb_OdQ
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-11: ArHpQZhbR-Sox1tR6n0lYg
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-12: UGQOdVfNRyK6XlxLT4SIiA
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-13: VmkZSXpRQ-SNayfWBJwoVw
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-14: JKSUAcctS_GMaYCAzybOqA
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-15: YMhS6vxWSdS0nIpb3i7e5A
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-16: XoGqPZI1S76MO4ETbnsbtw
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-2: S-wokoeRQy-cuWRZ6-bAmg
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-3: TreajlRmSW2B-mHy9gdT9g
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-4: B3jcekeRR5-0QRbjbwwN2g
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-5: BBfvkllRTUSIm94LZp0W6A
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-6: Ws3UDHm2SNGHsi-imDJaSA
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-7: DttpWinOSKeZToassa5nOw
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-8: H2_thqLSQUmu4NTEuTxqaQ
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-9: KQet1y45TpuenoVqy8UeNg
+ test-linux1804-64-qr/debug-mochitest-gpu-e10s: YIo3hHY_S_uMpS8eZsVIcg
+ test-linux1804-64-qr/debug-mochitest-media-e10s-1: W5chS82hTkeuje5a3txwSg
+ test-linux1804-64-qr/debug-mochitest-media-e10s-2: a_Gmno9GTq-81BIZ2N5oLg
+ test-linux1804-64-qr/debug-mochitest-media-e10s-3: cBV4jO7VTYCU_nVj3mYALA
+ test-linux1804-64-qr/debug-mochitest-media-fis-e10s-1: f794ywj6Th6jmRKnlD05cA
+ test-linux1804-64-qr/debug-mochitest-media-fis-e10s-2: DlrBmDVGQqiRFXekVb8AgA
+ test-linux1804-64-qr/debug-mochitest-media-fis-e10s-3: FGV-rHVhQ026EtPWc3EDDA
+ test-linux1804-64-qr/debug-mochitest-media-spi-e10s-1: I4PCxskhSAOZoE4pvax61Q
+ test-linux1804-64-qr/debug-mochitest-media-spi-e10s-2: HTSJupdzTE-AbXeOOZNw2Q
+ test-linux1804-64-qr/debug-mochitest-media-spi-e10s-3: Qpd7J_AHQrqgbxpHfLGEVg
+ test-linux1804-64-qr/debug-mochitest-webgl1-core-e10s: JG7tvudFQFa5-BGbU5M95Q
+ test-linux1804-64-qr/debug-mochitest-webgl1-core-fis-e10s: VtaxJH6tQhevztxCnyY8SA
+ test-linux1804-64-qr/debug-mochitest-webgl1-ext-e10s: OXM8iIWZSqCZIXtSx4QggA
+ test-linux1804-64-qr/debug-mochitest-webgl1-ext-fis-e10s: CwggjUfgTSeqiEcv6f6k-A
+ test-linux1804-64-qr/debug-mochitest-webgl2-core-e10s: OzP_mEJ_Q1Kox4vxQwUm8Q
+ test-linux1804-64-qr/debug-mochitest-webgl2-core-fis-e10s: YsakEfzTTiKaJFpnKJTy-A
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-1: Ljjrd6fmT7m0cjXcKxqkhA
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-2: Gsua26MTTQmXgeRc6qo3_Q
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-3: L--0uOPPRGC98SrPkZNAww
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-4: e97B2xRBSpuBoMykwoousA
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-fis-e10s-1: D0c3nf10TuinP42t9s8euQ
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-fis-e10s-2: Ezr1oaPQQjCno11HSBzaxw
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-fis-e10s-3: VHZQ-L53Sj25olwxGX_xKQ
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-fis-e10s-4: IzkZVkSES3GVkYW6V2vksA
+ test-linux1804-64-qr/debug-mochitest-webgpu-e10s: Up21-ImGSQ2SsX-N97_WKQ
+ test-linux1804-64-qr/debug-mochitest-webgpu-fis-e10s: POQj5nCMRsOOVyAF0gLTEQ
+ test-linux1804-64-qr/debug-reftest-e10s-1: EnIbFVIZShiSsaik90RwOA
+ test-linux1804-64-qr/debug-reftest-e10s-2: K1d0nJouSCeIrGDnQcGdew
+ test-linux1804-64-qr/debug-reftest-e10s-3: VFe5U3JGQ_WWY6eSMER1kA
+ test-linux1804-64-qr/debug-reftest-e10s-4: G-kQkGwYQiKfvgF16x_JpA
+ test-linux1804-64-qr/debug-reftest-e10s-5: M-TMNvjZTx6s_2gnxGIgfA
+ test-linux1804-64-qr/debug-reftest-e10s-6: X7EBWdduQbqyeW9-TtXVDQ
+ test-linux1804-64-qr/debug-reftest-e10s-7: dRTjvXcyRvakmT_6uj12hg
+ test-linux1804-64-qr/debug-reftest-e10s-8: UBBHzeVuTMy--37CKwwKLg
+ test-linux1804-64-qr/debug-reftest-fis-e10s-1: Fk_X8-j-TlyPAJgIJ3LusA
+ test-linux1804-64-qr/debug-reftest-fis-e10s-2: LkKCKkF-TLaDmpNSJI_DIQ
+ test-linux1804-64-qr/debug-reftest-fis-e10s-3: YdG35ibxQuKLBUXaD9mQRw
+ test-linux1804-64-qr/debug-reftest-fis-e10s-4: WtmFGIVzRoKNal6zX9BosA
+ test-linux1804-64-qr/debug-reftest-fis-e10s-5: SNfDqSPaRDGQS6o1WOaBlQ
+ test-linux1804-64-qr/debug-reftest-fis-e10s-6: cPviqwquTlOEVXE7wWvNGQ
+ test-linux1804-64-qr/debug-reftest-fis-e10s-7: GT5yrsdlSqWTCRgYHLGXWA
+ test-linux1804-64-qr/debug-reftest-fis-e10s-8: Ylo-mSVcRqGAMZPk0z-PVA
+ test-linux1804-64-qr/debug-web-platform-tests-crashtests-e10s: Nbs3Qg2YQ2C8s23hVXwfgA
+ test-linux1804-64-qr/debug-web-platform-tests-crashtests-fis-e10s: BFJOdwkuSTOJCjpnR203QQ
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-1: cxO0matdSFqUKV-7hdMJCg
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-10: T67TU64MRqqLPvan_tVbkg
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-11: ER2W5osQQ-6wglEhGVUinw
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-12: ImXu1S-lRx-AmPn9Jbw1NQ
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-13: EWqkN0vXRDm3zph6SCQQTg
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-14: dur4jGTjTJuSSukOADwVGg
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-15: SBaYaCaPSbCJxahtAcaSXw
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-16: WNwQJBdrSYi2DuQaIjPYrg
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-17: bX5F4epLSfCkw5KyzE1oFw
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-18: Cq1uEwH2Rsuwy5sYLAACjA
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-2: AhitzSFmQfOoN8NgVKgkCA
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-3: deVDeLkqR_iWMWk3NWMLdQ
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-4: WUL-78nmTjqRWG0zk-vs_w
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-5: Pl_xL5wYSoOAhMOIMl1auQ
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-6: Fihaqce8T3OrPlS0lV8lqA
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-7: UET_zetjRnKpx2Bp55DTJg
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-8: WVU_xHLKQESz0wx36XLGLA
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-9: JTIRHKzYQrOGIYb2TvvE7Q
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-1: MZM4-piAToeFYHK4974Y0w
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-10: BaJBymj-S76iY0deD4alLQ
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-11: NNSERAPSRliafkvZuZp6oQ
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-12: Nlcxm0NwSRKC58HQadh2jg
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-13: Sy88pWJ1S62qxIohyP5NiA
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-14: aL5KbJmCSByDzqoY1ARJZQ
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-15: ZQZDwNQjS6OqDEV3rhBwLw
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-16: cAv-bB2pQ36bJkFmTVdlUw
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-17: fhooz0TwTG-557jSnRG8Eg
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-18: YX5AsDPATXmNFT_VTN9efg
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-2: XsQ031OrQKe3T3bm_y6dJA
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-3: aXD7Fu79SAmj4Lr2aosKAg
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-4: EQPGTEuTTPGsF3qHtO45Cg
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-5: FnTs1TSpQdaHvzS9AP8DIw
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-6: eE-4giRISYqNhn4gb7HQHg
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-7: AhnUak4WSHCFKpydYiD8jA
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-8: NASGrD_BQMiExF0aehVLng
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-9: ZcMmcyReQeu3OL-03FmQ2g
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-1: HM-HSvEuSNC3e-Hw0UiFwQ
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-2: NgsAVplDRcKaDpJxTecrVQ
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-3: V4xjs1w8SoaeEht6X3amtw
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-4: BtitSKoySJSxZXC60QS-eg
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-5: KHLx5lmGSiSGljjNXqtRpg
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-6: Hbisan2DRTOFiMDre2eH1g
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-1: UZxh0QGURGS2lCV9-vjsfg
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-2: Z_UI2-yzS-qhWB4gZCwUYw
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-3: X3l5Uw26Ta6R-rOQEwxrLw
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-4: VSA-IGINT1iHIRIEY8koXA
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-5: DDvUa8jzRZWFyB83fcZrQg
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-6: AqIFjNioT6-C7j6TOQ-XSQ
+ test-linux1804-64-qr/debug-xpcshell-e10s-1: PvJCFiBiSE2W3_-Bu4EcXA
+ test-linux1804-64-qr/debug-xpcshell-e10s-2: LaHs-UVaRxupMWc45pX-aw
+ test-linux1804-64-qr/debug-xpcshell-e10s-3: ET9Y49TSRHykdDH63gN2Fw
+ test-linux1804-64-qr/debug-xpcshell-e10s-4: L6PT84pKSeW-FQxSDjJdJA
+ test-linux1804-64-qr/debug-xpcshell-e10s-5: LruLviP9SZuUAAcRsQJIkA
+ test-linux1804-64-qr/debug-xpcshell-e10s-6: Pg_SED8HQpePGERn9gEBbw
+ test-linux1804-64-qr/opt-awsy-base-e10s: O35o-TpYQfOwSMg77Lok6w
+ test-linux1804-64-qr/opt-awsy-e10s: Ik6QPZdhRI2Fk5gQQdEJOw
+ test-linux1804-64-qr/opt-awsy-tp6-e10s: aK5Gt3k8SK-1s1d9v4So1w
+ test-linux1804-64-qr/opt-cppunit-1proc: Z0Laa4x7TVatXjBPoN1xbg
+ test-linux1804-64-qr/opt-crashtest-e10s: cDf-Jb_2SXKVKk1JMWg1FQ
+ test-linux1804-64-qr/opt-gtest-1proc: QWisexNoTI6FD-dt6wMQdw
+ test-linux1804-64-qr/opt-jsreftest-e10s-1: b6Te2o8OTkmBwIG4jqqNiA
+ test-linux1804-64-qr/opt-jsreftest-e10s-2: FkhQ5KrDRzOmgNuksP_liw
+ test-linux1804-64-qr/opt-jsreftest-e10s-3: QeABtJioRJCnNVg6ZGahYA
+ test-linux1804-64-qr/opt-jsreftest-e10s-4: CXfWX1ylQxW5Fq3MoQTPcg
+ test-linux1804-64-qr/opt-mochitest-a11y-1proc: Ta-TtHi9QiaD11bYS5T95A
+ test-linux1804-64-qr/opt-mochitest-chrome-1proc-1: c9ypTXAvTe-YZLiLXbLoOQ
+ test-linux1804-64-qr/opt-mochitest-chrome-1proc-2: GrOeicEWRG2bpIXDlnwopg
+ test-linux1804-64-qr/opt-mochitest-chrome-1proc-3: Geng_yOsQ-OtHpZKh6MfUA
+ test-linux1804-64-qr/opt-mochitest-e10s-1: da08Kw8tTPGGFJysqcWRxQ
+ test-linux1804-64-qr/opt-mochitest-e10s-2: V_QmWt3eTROe9sp2YWJlqQ
+ test-linux1804-64-qr/opt-mochitest-e10s-3: I55bg7CmQC-c2tCA_nHv1w
+ test-linux1804-64-qr/opt-mochitest-e10s-4: YCW_IPKyQS-1FmH_CVRVWw
+ test-linux1804-64-qr/opt-mochitest-e10s-5: MzPC_Y1gTImywFdAQvUq7A
+ test-linux1804-64-qr/opt-mochitest-fis-e10s-1: OntNKQHcRrGsNEHhFGmBKA
+ test-linux1804-64-qr/opt-mochitest-fis-e10s-2: EWi7MyFpTUu2AyvjCV1v5Q
+ test-linux1804-64-qr/opt-mochitest-fis-e10s-3: VdC4O1dSTXOCeHcRa9LkUA
+ test-linux1804-64-qr/opt-mochitest-fis-e10s-4: bpLFEMJrQMe_wKj5L7uUpA
+ test-linux1804-64-qr/opt-mochitest-fis-e10s-5: RgWveB0lQxu3pvrU7lu_ow
+ test-linux1804-64-qr/opt-mochitest-gpu-e10s: UiAlbFUkREiZK3FkHmB5Eg
+ test-linux1804-64-qr/opt-mochitest-media-e10s-1: V10iaLm1T1a0wjPdkJvpNA
+ test-linux1804-64-qr/opt-mochitest-media-e10s-2: IsbonQ0tTiOXYjXdtl2_oQ
+ test-linux1804-64-qr/opt-mochitest-media-fis-e10s-1: FPqyN0NlTLWzde9hf4Vb5Q
+ test-linux1804-64-qr/opt-mochitest-media-fis-e10s-2: bRxZ1VANT2KKLH8BLVrCmw
+ test-linux1804-64-qr/opt-mochitest-media-spi-e10s-1: DLEkoS-wS7qU5TgupUbqNA
+ test-linux1804-64-qr/opt-mochitest-media-spi-e10s-2: HfwMbJ7YRYGhxsGIvqf94g
+ test-linux1804-64-qr/opt-mochitest-webgl1-core-e10s: eh5wbF4PRuixAcQ5KvnG2Q
+ test-linux1804-64-qr/opt-mochitest-webgl1-core-fis-e10s: a2IkNF2VTYO8fbt25VgyYw
+ test-linux1804-64-qr/opt-mochitest-webgl1-ext-e10s: LDmsv7pUT-eLSC1T-jHfGw
+ test-linux1804-64-qr/opt-mochitest-webgl1-ext-fis-e10s: APiiLPlrSwuSQGjmQwqrkw
+ test-linux1804-64-qr/opt-mochitest-webgl2-core-e10s: CDpFkEO7QF6vc3Jbqgk8HQ
+ test-linux1804-64-qr/opt-mochitest-webgl2-core-fis-e10s: KLwyDN0zRv2SuzfqBXej5w
+ test-linux1804-64-qr/opt-mochitest-webgl2-ext-e10s-1: b0dT068YTkqw3qOOHe2IiQ
+ test-linux1804-64-qr/opt-mochitest-webgl2-ext-e10s-2: DKl0qYcHT1uRtQtWvPoiXg
+ test-linux1804-64-qr/opt-mochitest-webgl2-ext-e10s-3: QUyVT0W0RhiTSfi0JJkViw
+ test-linux1804-64-qr/opt-mochitest-webgl2-ext-e10s-4: URvY_kxjRNiELgljMgZXjA
+ test-linux1804-64-qr/opt-mochitest-webgl2-ext-fis-e10s-1: MKgCG-VJTOGZxdMOfPvdBQ
+ test-linux1804-64-qr/opt-mochitest-webgl2-ext-fis-e10s-2: XNnClNbQQyyIPLa2CBiajg
+ test-linux1804-64-qr/opt-mochitest-webgl2-ext-fis-e10s-3: KM1V-yJRToakOoX_1v8HQQ
+ test-linux1804-64-qr/opt-mochitest-webgl2-ext-fis-e10s-4: cRdWLzNwTY2EK6DG79U4kQ
+ test-linux1804-64-qr/opt-mochitest-webgpu-e10s: ZSCGZGsSSr6Lppq0MjZoow
+ test-linux1804-64-qr/opt-mochitest-webgpu-fis-e10s: I25yO_-cSzecGdWPiwuouw
+ test-linux1804-64-qr/opt-reftest-e10s-1: HmY4MwqFR1GRYcuSFGIiGg
+ test-linux1804-64-qr/opt-reftest-e10s-2: QMnEDI2OQc-0sgqmGrIhdg
+ test-linux1804-64-qr/opt-reftest-e10s-3: TtCl33UuSxSy6qZaR8T_sA
+ test-linux1804-64-qr/opt-reftest-e10s-4: UJoTTRuGSNSQKNhVJLTfMg
+ test-linux1804-64-qr/opt-reftest-e10s-5: F_9F8-UqRpukXM5hfNqfng
+ test-linux1804-64-qr/opt-web-platform-tests-crashtests-e10s: GdfNRl2HTeKG9LNPLjyYMg
+ test-linux1804-64-qr/opt-web-platform-tests-crashtests-fis-e10s: emQq442_QE614tixC0Tniw
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-1: IRYaFR6-S1q5v9UMQvk0YA
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-10: CYWSg4TeSAeL0kMNK4_3Ig
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-11: JODcB_n-TDqRcGS4XR-zAw
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-12: Ku9vJfDYT1GftpNqoLRxnQ
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-2: cu1TaBM4R6aXcDWAvja83A
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-3: CphR7q78SpG3LsBHqmUOuw
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-4: TPl4nsP8Svq4nNgDL4M0Vw
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-5: dxUNy3RySLudgdJze4jpIg
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-6: Keh0-WXEQMSIDBsK9qqcRg
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-7: KU5tmcDBQzKU0ZmrV1AE_g
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-8: bBeIia30Q3CECzBCeHY4NQ
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-9: FgpvVyIfTaSiPmOdiMtI_A
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-1: fTbio8GjS-WHaG5H7V66aQ
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-10: QYw-fEqMT_KJBqwy9wMjuQ
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-11: EfUXxSSwQo6DYQzbxBmEHA
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-12: ICett8PsQpWfEMUDuGlaog
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-2: anEfgzgcS6OkLZqbK54MJQ
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-3: AVhJHNibRfS7GcQExiJEZQ
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-4: OpY4oQH_QhKtge42fu87xw
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-5: P3uQ09t4ReGY1nKvaVBueg
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-6: ICMtcsu7SSygqwNZo3Dn-Q
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-7: HK354Sq7RTK0UkOA85P_yQ
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-8: PxNji8I1TUeuVacDQS5mqQ
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-9: Wr5hVgTrQUCetRD5u3SwGw
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-1: aDRuD4B-R3CE8NfOA6eFJA
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-2: Lj2j2JwBTN6HvHeIuzUj9A
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-3: Yrz4Jd0gQ5-5q2tC0cjWwA
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-4: NmZUy2AHT4ubyQR-eNCfCw
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-5: anNo0WvuQlO6L-_8Gh-oBA
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-6: dwxPVdlbSmO33PCGvw5-ag
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-1: H9fNc0yKS5eaXWw1vOlqBw
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-2: flBbmPbQQGeZc75ciVzcDw
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-3: c_5u0Mt3R-i1SvAs8-yhsQ
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-4: BGBP7S22SACRC41tnL8OKg
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-5: AyvZy7tGTyCvhRR0xfsxqQ
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-6: W01Q_HDQSV-8NOliN5CCBA
+ test-linux1804-64-qr/opt-xpcshell-e10s-1: fM4NF5UURsOofq-2noLMYA
+ test-linux1804-64-qr/opt-xpcshell-e10s-2: QmcRo2lYQJqX9qC7GHsP0g
+ test-linux1804-64-qr/opt-xpcshell-e10s-3: QbYfrWtOSpSnrwwmV_oEzg
+ test-linux1804-64-qr/opt-xpcshell-e10s-4: BkrjD58JTcezs3WlEuYsfQ
+ test-linux1804-64-qr/opt-xpcshell-e10s-5: Kd-LvKEZSVC1OEoeZ9Fzsw
+ test-linux1804-64-shippable-qr/opt-awsy-base-e10s: MO2mxSrRTi6xGL1xh9rvjA
+ test-linux1804-64-shippable-qr/opt-awsy-e10s: bCwNKyxDSfuZ2JA71WQL-Q
+ test-linux1804-64-shippable-qr/opt-awsy-tp6-e10s: cMZu7efjRZGloTQsatz8oQ
+ test-linux1804-64-shippable-qr/opt-awsy-tp6-fis-e10s: UGLBO6UORXaXc9-CaY3qUg
+ test-linux1804-64-shippable-qr/opt-cppunit-1proc: W_CWiZH3S1SsX_nSe8tnqA
+ test-linux1804-64-shippable-qr/opt-crashtest-e10s: JlyDmmcuR5ieoRrdUxeciA
+ test-linux1804-64-shippable-qr/opt-gtest-1proc: YOB9nrlYSPq39hR8uYLItw
+ test-linux1804-64-shippable-qr/opt-jsreftest-e10s-1: QdI5TBezRS-xXjRMVBlycA
+ test-linux1804-64-shippable-qr/opt-jsreftest-e10s-2: G7toeQ4SQPC9tBkx58PHig
+ test-linux1804-64-shippable-qr/opt-jsreftest-e10s-3: Pl_arsPBRYGjoMo5WzEiIQ
+ test-linux1804-64-shippable-qr/opt-mochitest-a11y-1proc: Jm8kc0z8RYqFAkQiJCOTSw
+ test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-1: K44x6KcdS56lon4A3S3eNQ
+ test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-2: XcrBZAL0TeKm5ekxfh_Uyg
+ test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-3: OW4iXuV_S86DYs9D4theIQ
+ test-linux1804-64-shippable-qr/opt-mochitest-e10s-1: DuogjobMSQGCpN9d9OjMCg
+ test-linux1804-64-shippable-qr/opt-mochitest-e10s-2: Ud5Sx5JGR6KybOtztccjrg
+ test-linux1804-64-shippable-qr/opt-mochitest-e10s-3: USsg4m8sQ-Gcw1WiNiZJ2Q
+ test-linux1804-64-shippable-qr/opt-mochitest-e10s-4: UKLBjpDGQEeES78HRojuTA
+ test-linux1804-64-shippable-qr/opt-mochitest-e10s-5: SgxxbwUTSxSbOaZeWjNaCg
+ test-linux1804-64-shippable-qr/opt-mochitest-gpu-e10s: UAQaHCDDRRqO38Bf91rsFA
+ test-linux1804-64-shippable-qr/opt-mochitest-media-e10s-1: Jraw3UFpTZS5BuPwpQo_vQ
+ test-linux1804-64-shippable-qr/opt-mochitest-media-e10s-2: Gncs2puSSIu6aVXVqDeDdA
+ test-linux1804-64-shippable-qr/opt-mochitest-media-spi-e10s-1: XIVQrs1zTQ-RA821HhWZFQ
+ test-linux1804-64-shippable-qr/opt-mochitest-media-spi-e10s-2: X9LSwVssSUGOIvsgpNfxmA
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl1-core-e10s: ZWBl3k5HSKidluYD4lNzsQ
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl1-ext-e10s: VcZkdknKTsebKixjP0PsdA
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl2-core-e10s: U-1qPD_BTwCylwtDGZPYnw
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-1: QTO5WAhXRf6_YFZFNOs1ZA
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-2: S9OuXpykQp-ESZDL5nUXoA
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-3: XxFNhlOOTaCovA7a-eq-ew
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-4: BvKie7PsSoCYJbiJKuIUkA
+ test-linux1804-64-shippable-qr/opt-mochitest-webgpu-e10s: KaJF7guKRduz_lkXlSxp9g
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-1: f34KS3GpR_a8mEEmPj2XsQ
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-2: d5ycSBHgSpO3HzBYyOTPYg
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-3: Zbnde47qQDuFJ5GrgX36pw
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-4: IU9Wy9UNRTGY26aOxN9UDg
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-5: P7lJzV0TSHC1vgWZTbHW8Q
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-6: B9doxwwBQPGf6SWZm4TQqA
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-7: ZeBAUCCmSCCAYf64ptExFA
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-8: AmcmU9JfTs6J6gM9lDMnUg
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-crashtests-e10s: YRZA9kjISj6Z5nXVK4_Q5Q
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-1: eA17uCYVQfeOtkBaN2BmWA
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-10: DVSFVjzmQCqndYM0T8pYKQ
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-11: PSiMtYZ6SA67Zx9YvGLdIQ
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-12: ScwohmtnQMerF0S3Rqjr9w
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-2: LAdxsCvTTWy9OykJz40qNA
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-3: EtzBVU3TRbOsGL7RPpi27Q
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-4: K-asbM9ITE-SQBlQ6rmoIg
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-5: fWu4EdpaSZ2TSfW36bFkDA
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-6: eLPHU1aiRBKDHP9Y8dkWng
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-7: SGpfmDRqTH6cs2Oo8z5VSw
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-8: DTcsfBkjQcGA-YPdTfOtPg
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-9: GyrjztqtQZ-GU9LvVCgjIQ
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-reftests-e10s-1: AVDQiwSIRLqjk38hxlYnXw
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-reftests-e10s-2: OcI8dYRgTgSnV5FrONkBxA
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-reftests-e10s-3: R6HdrwQDRAe1uvlaLdyE5w
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-reftests-e10s-4: IbGVqL31SWWuOzDns0SuOw
+ test-linux1804-64-shippable-qr/opt-xpcshell-e10s-1: L8axt6LZT1qwl_P4oY3P7g
+ test-linux1804-64-shippable-qr/opt-xpcshell-e10s-2: G9hmjPGwT9yFd9KTVOaTtw
+ test-linux1804-64-shippable-qr/opt-xpcshell-e10s-3: XlqXk1wPStW3q6Lfh40-tA
+ test-linux1804-64-shippable-qr/opt-xpcshell-e10s-4: dEqtlhHSQVik-wEs9MesmQ
+ test-linux1804-64-shippable-qr/opt-xpcshell-e10s-5: aCPahsh8RTCIbFf2SVRaFA
+ test-linux1804-64-shippable/opt-awsy-base-e10s: KKFHdfu1T4ykq9oAn5t5yg
+ test-linux1804-64-shippable/opt-awsy-e10s: VyiROaKtTqaXMLW52LG62A
+ test-linux1804-64-shippable/opt-awsy-tp6-e10s: JzoI4dOKTxKNE5nobCGyjA
+ test-linux1804-64-shippable/opt-browser-screenshots-e10s: KiQPhBBEQe-vDSIWxg6UMw
+ test-linux1804-64-shippable/opt-cppunit-1proc: HONUeC7gR26OMBrjTn_0OA
+ test-linux1804-64-shippable/opt-crashtest-e10s: a9C-G9aeQReEfETasrTIvw
+ test-linux1804-64-shippable/opt-firefox-ui-functional-local-e10s: YmE4pJ5GSLukpjts3EsKwg
+ test-linux1804-64-shippable/opt-firefox-ui-functional-remote-e10s: HF9ZZpj9RUGnVx6ACyCT8w
+ test-linux1804-64-shippable/opt-gtest-1proc: Nm4jDqOWQpyncSy0gJ5NMA
+ test-linux1804-64-shippable/opt-jsreftest-e10s-1: IUJ9Z1p4SO262n56UDHt1A
+ test-linux1804-64-shippable/opt-jsreftest-e10s-2: Zuvw5k8hTL-eZiJinFlUBA
+ test-linux1804-64-shippable/opt-jsreftest-e10s-3: Ys1oMCbHSbuMka4Brf86NA
+ test-linux1804-64-shippable/opt-marionette-headless-e10s: Pm4_54ubQ2KOtcKF4A8HXA
+ test-linux1804-64-shippable/opt-mochitest-a11y-1proc: fBd8uCMySiKfozbZmiyavw
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-1: L7LS5Dc0TG2NM1PlZaY63g
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-2: AVroswzYRKqiUyGYD3AK9w
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-3: VAXO9w8bSZaEsibik32Gxg
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-4: dwOuA9D0QbyEab3uC3858w
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-5: EJK4naSUSku55YpXvzUWdg
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-6: VftGRdelTQGLWHrZ_kRuNA
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-7: HdJF12ugRGydKgIMiJNcNA
+ test-linux1804-64-shippable/opt-mochitest-chrome-1proc-1: cWS_UiOSRz2pAAzXIZd78g
+ test-linux1804-64-shippable/opt-mochitest-chrome-1proc-2: RWYLcq9sRiq3qbslvgZQvQ
+ test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-1: K7O4oTRfRPWdV8_fIdQlug
+ test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-2: RoTeLRoRSvOUA8guWvfUng
+ test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-3: Nb9xje6iTRG_NqkcG6yTGg
+ test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-4: G71dKBVpSzK8sV1OIi97CQ
+ test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-5: IMSqX7vWT4q8g57JijoOVA
+ test-linux1804-64-shippable/opt-mochitest-e10s-1: Q2A8stazTvWFI5GmYzamhg
+ test-linux1804-64-shippable/opt-mochitest-e10s-2: UC9OzJDWSCWQE5GyuJg-8w
+ test-linux1804-64-shippable/opt-mochitest-e10s-3: AtIcfD22T6iT5ytZAokMVQ
+ test-linux1804-64-shippable/opt-mochitest-e10s-4: ELdLq-tmS72TGCfh4NF0MA
+ test-linux1804-64-shippable/opt-mochitest-e10s-5: Nlvqtst2TqiZNS87cDm4zA
+ test-linux1804-64-shippable/opt-mochitest-gpu-e10s: eSKziGU0R76a9_pxrGUeRg
+ test-linux1804-64-shippable/opt-mochitest-media-e10s-1: NHsO8BqlRL-gg9Yj4-Z6zQ
+ test-linux1804-64-shippable/opt-mochitest-media-e10s-2: AQRlTncpT4KmMViIJijkwA
+ test-linux1804-64-shippable/opt-mochitest-media-spi-e10s-1: FfxYgVg5TzGW28iELKw6aQ
+ test-linux1804-64-shippable/opt-mochitest-media-spi-e10s-2: LchCeGWgQ_iSGDXYrDTTLQ
+ test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-1: Ae0rlTz7RCyH-fwVn6gb2Q
+ test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-2: AGd3eoF_Riu0FKAukwZ2qg
+ test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-3: HUcUqXKMRJybzkXNM1d_8Q
+ test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-4: G_2ydSYJQD-Yq7MUrwFz3w
+ test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-5: ROq7KPo1QgWLVChSCi6NKg
+ test-linux1804-64-shippable/opt-mochitest-remote-e10s: U6rz7Nz7TE20OG6OFhoFjQ
+ test-linux1804-64-shippable/opt-mochitest-webgl1-core-e10s: NscfiXbESAqpJwiExojAOg
+ test-linux1804-64-shippable/opt-mochitest-webgl1-ext-e10s: XsRvROeMSYi8C859DyqxjA
+ test-linux1804-64-shippable/opt-mochitest-webgl2-core-e10s: VaUMr5xfREueeyuqI04sbA
+ test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-1: Hc-91hxMRQ-5dWaQ1Z3ywg
+ test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-2: HAHhmla0RPKU1MtfFffFLA
+ test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-3: NKuCe-J4Rsuqzzl-gu3Vsg
+ test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-4: JbZpG87vQ4CF7RHArYjC4w
+ test-linux1804-64-shippable/opt-mochitest-webgpu-e10s: AbU4bp_sSbux1eK12e3dxA
+ test-linux1804-64-shippable/opt-reftest-e10s-1: TUAJZPLATSSJPIyfv0avAA
+ test-linux1804-64-shippable/opt-reftest-e10s-2: RFFwQO56Teq4fce3eSlkWg
+ test-linux1804-64-shippable/opt-reftest-e10s-3: Dtat459SQP68JRptYbipHQ
+ test-linux1804-64-shippable/opt-reftest-e10s-4: a96zZl9YRT2km7muXLA-Kw
+ test-linux1804-64-shippable/opt-reftest-e10s-5: ODzk_7bXTbOxi3l-7j5Zcw
+ test-linux1804-64-shippable/opt-reftest-no-accel-e10s-1: MpixNXDhSSSuuZBZ989-dw
+ test-linux1804-64-shippable/opt-reftest-no-accel-e10s-2: ZK97PVGETe2t1SJkiYh6oQ
+ test-linux1804-64-shippable/opt-reftest-no-accel-e10s-3: C8vLUc1dTtGp79UTZ9JriQ
+ test-linux1804-64-shippable/opt-reftest-no-accel-e10s-4: dSEGISb6SO6JcyaJoMYoMQ
+ test-linux1804-64-shippable/opt-telemetry-tests-client-e10s: QI9ll-WHSqW0zvIbVGvGgA
+ test-linux1804-64-shippable/opt-web-platform-tests-crashtests-e10s: J4noY1rBRXu88bIUyXDIUQ
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-1: EbNP2jICS-edgcglrRBp0w
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-10: aVFiILeOTlyDV_yBJ1yLzQ
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-11: YS5CReZqToeDgN9aenEvIg
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-12: drP1j263RHKOMRwihQHB7A
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-2: cO4wu0kpQ2eW8oIic5Y34A
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-3: ReVVIfqITayTkXvSq-wrxw
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-4: Sm-VSaILRECJJq46ODr3lw
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-5: FSwUPSCNRiO89MqOmORTPA
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-6: J0anqo6UQSyFYXLfjfUJsQ
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-7: KYR5NVjfR3qpjJ4lmiFlNw
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-8: E86qH3tLRsmFIQ-oJLg3Uw
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-9: NELEj4MdRzyStjRb-z7CmA
+ test-linux1804-64-shippable/opt-web-platform-tests-reftests-e10s-1: bU8wK9KGTCu7mcTP88g59Q
+ test-linux1804-64-shippable/opt-web-platform-tests-reftests-e10s-2: PGMvHW22T4KtZqQixydZ_Q
+ test-linux1804-64-shippable/opt-web-platform-tests-reftests-e10s-3: H0y1kaohQhuIB8T98Zhb_Q
+ test-linux1804-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: RSb_OKTlS1Gs5D1kziZ86A
+ test-linux1804-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: TieX5C8hTvi0qJKIxCx0YQ
+ test-linux1804-64-shippable/opt-xpcshell-e10s-1: AjNa8FlcRC63j2kpWFpdcw
+ test-linux1804-64-shippable/opt-xpcshell-e10s-2: PeARo95pQuinLk8vOhXjNQ
+ test-linux1804-64-shippable/opt-xpcshell-e10s-3: VfwpVu0XRUCosSbs-l8DMg
+ test-linux1804-64-shippable/opt-xpcshell-e10s-4: J4swqxWURhCRrakMTqM7dw
+ test-linux1804-64-shippable/opt-xpcshell-e10s-5: aE4L_J3dTdaCAJZmK5Wc0A
+ test-linux1804-64/debug-cppunit-1proc: IE5gzbNtQC-1G4RsBOvHMA
+ test-linux1804-64/debug-crashtest-e10s: CmTpoymARjOtAGXY0_rLDg
+ test-linux1804-64/debug-firefox-ui-functional-local-e10s: dIWrJerJTmaiOs3w9nL9xA
+ test-linux1804-64/debug-firefox-ui-functional-remote-e10s: IjmWrS5MRRmyrTHXVEu4Gw
+ test-linux1804-64/debug-gtest-1proc: IFUuFIP9SZiT3IlhU5v9Ww
+ test-linux1804-64/debug-jsreftest-e10s-1: UShJY17DQnudv1AMjfzZZA
+ test-linux1804-64/debug-jsreftest-e10s-2: FiNfSd3xRwWt_VuCExhWkQ
+ test-linux1804-64/debug-jsreftest-e10s-3: MukNnF3TTp-RxohCV7tNgQ
+ test-linux1804-64/debug-jsreftest-e10s-4: LiwZDskZRuKbiw4we8dPgg
+ test-linux1804-64/debug-jsreftest-e10s-5: cpvWlaWaS4WvGL-6_kuKtA
+ test-linux1804-64/debug-mochitest-a11y-1proc: G5tbENmLRPCMq2tt-KOwzA
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-1: TaGmBLL5Q1Szyet-_xBpHw
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-10: IxhHDq36RhyecGaLbIYO_Q
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-11: QnTHVNsjSIW342GBGSgAhQ
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-12: C6pI7LXPRnajRHEZviINOw
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-13: RrY-y9f7SoiEiVYEtVo4Bw
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-14: AybJVgDhQ0uKpgQ-ayeJ-Q
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-15: faMM-6zLQm-5Gsm117Zk5A
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-16: T13uP2MbSDKIKxL_g9boTQ
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-2: VsXSJ-4lSDKcPs4mN-eDJg
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-3: P5UCq_z8S86eYzlunlscXQ
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-4: NLYyNdtMSFCLLme8rbVfJg
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-5: athNIFI1TtuoLWz1kLwjEA
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-6: HKiWxxNyQdGzRtvukat2zA
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-7: eIJk5iGeQUChrt0tA7mMRQ
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-8: FQGOOM3DS2C4oUytHEfcGw
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-9: Iq6vu2EdRn28Ux7eAnWE0w
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-1: NNinuUe3So295YqfEr9B0A
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-10: AwebRFRxQ9u7uxcggEw4kA
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-11: RamHiQ6-TJqaa7bxGjTrPA
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-12: B6RB6N8XSp6unJyua2Snkw
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-13: VbQwgyZTTIul4dcuauORTg
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-14: ZHLRxNYYRC6YQQrox--_3Q
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-15: HP6AKLgBRmuPgs2XMKZINQ
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-16: HoEAOKCNQX6A07iNQGHvLg
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-2: WURxT_nBTYWzOWQdfaAtkA
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-3: LnvVLmrGSJuTYkNrklh7ig
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-4: Mh92b4r4R5G93_IMNfBgSg
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-5: SfVdJfFwToiTQx0OtC0nDg
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-6: aioHLNOtRgeAmXsvZSS75Q
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-7: NtcdFxPqS72dxpyiz_HMfw
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-8: Ix0TDZTtTqaJo4Gz6NwerA
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-9: PUqjx7vaQMObEj9xqbSNSw
+ test-linux1804-64/debug-mochitest-chrome-1proc-1: DXx5x2q6Qe-hbT_mzBYqGg
+ test-linux1804-64/debug-mochitest-chrome-1proc-2: UM1UF6vwTRa_dA1HdMr-0A
+ test-linux1804-64/debug-mochitest-chrome-1proc-3: doHZbqb1QC61Xy9WJrrRoQ
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-1: E890A1tQQ3aU7RcVMdGUXg
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-10: aeDnF7H2QbC6Et2sSPcvXQ
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-11: GFsIJ2uVSamp8RQ2KjMf1w
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-12: VSa8RpdkQC-SbscIKrCFqQ
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-2: aGis8TVdR4GsW02RNb9f2g
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-3: E6G6pGXAT--AMj6w2UKE_g
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-4: au4_VQ2JQqyyVSFun6ksnw
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-5: B2u_xkAxRrqO_F0_C6TTXw
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-6: Q4xpS5CXT6CgfJrarzM83w
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-7: Rwgr_SnATEWHTH5RcHk-7g
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-8: Hz9uRFOpRxaAJNhmRuGd6A
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-9: A_vmx7sTQ4uiE7ppc8L8Jw
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-1: S6s-JjpDRzq1C5QyRJApnA
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-10: UXioTnAETSW6Aigr_uOqQA
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-11: WkwZRWw4SyWAOBjop2wloA
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-12: V568Xv-vSwemMQJmmWV8zA
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-2: ELSaoo39T-eY8LSxAiVzeQ
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-3: fGVo8nlQQiG8RDS8TCfhBw
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-4: TH5TyG3cRbC2Tz03mVcjdg
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-5: IIlQEEHnSxCSv5U70-RtFg
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-6: fzYx5GR8SA6tEm4-VhWwBA
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-7: X4hUmTaLSp6XQc7zBTipXQ
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-8: H7CEDH_uTrWwgf7M2_61hg
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-9: NNnvgx-cTvWdTt_kwrUZRA
+ test-linux1804-64/debug-mochitest-e10s-1: DFoTLbHIQkGNL4iTGO_QxQ
+ test-linux1804-64/debug-mochitest-e10s-10: fAwX728YRj24uU4FTgTB5A
+ test-linux1804-64/debug-mochitest-e10s-11: fbNfauXKRIO-u9z6PCxGpA
+ test-linux1804-64/debug-mochitest-e10s-12: VzKbz3F4QB6U_IDaN4vtcg
+ test-linux1804-64/debug-mochitest-e10s-13: MsL0jyAGTQar8fM9U_nSDQ
+ test-linux1804-64/debug-mochitest-e10s-14: UcwCGW2aRX66E2Q-5YoTMQ
+ test-linux1804-64/debug-mochitest-e10s-15: MfQNzKBATS29TShdaplX0g
+ test-linux1804-64/debug-mochitest-e10s-16: aXpllI7IQIaGscWUzxoFpA
+ test-linux1804-64/debug-mochitest-e10s-2: RIXJ4v6NQOe2nQJ7BO45DA
+ test-linux1804-64/debug-mochitest-e10s-3: HxHn92NXSA-GfxEAzLFN7g
+ test-linux1804-64/debug-mochitest-e10s-4: SjyOb4LqRZWwVGVXPse8vA
+ test-linux1804-64/debug-mochitest-e10s-5: W7uG2UOOTpOMgQNGxLZsNA
+ test-linux1804-64/debug-mochitest-e10s-6: MjtDaZK7SMywZjyn0dxQQw
+ test-linux1804-64/debug-mochitest-e10s-7: PgTKjEetRcGZCVPXdPi1CA
+ test-linux1804-64/debug-mochitest-e10s-8: C1p0GhXsQRePg8y577aufA
+ test-linux1804-64/debug-mochitest-e10s-9: LQ9zhnwVSemNLg5UJbWZOA
+ test-linux1804-64/debug-mochitest-fis-e10s-1: Il8iKjSjRCC1kPnzxFEMkg
+ test-linux1804-64/debug-mochitest-fis-e10s-10: WZbhsViFR9ayw56hI5sxOA
+ test-linux1804-64/debug-mochitest-fis-e10s-11: SiylUc6ETcao_TLA7vizfg
+ test-linux1804-64/debug-mochitest-fis-e10s-12: UgfJylhtQ8evX1hHUTmrJw
+ test-linux1804-64/debug-mochitest-fis-e10s-13: NpvA-MhzTlKGs4Y9MiEwbA
+ test-linux1804-64/debug-mochitest-fis-e10s-14: ErLNhTRGTBSlbnrS5woMGQ
+ test-linux1804-64/debug-mochitest-fis-e10s-15: BwhwjZvpQEi9xM2UtVODzw
+ test-linux1804-64/debug-mochitest-fis-e10s-16: SFd-zqWuTZSA5oCk7-NaxQ
+ test-linux1804-64/debug-mochitest-fis-e10s-2: d0UFUCo0TraziaN-KDuZ4Q
+ test-linux1804-64/debug-mochitest-fis-e10s-3: JV8FD86gTMOIwjYnQhbIqA
+ test-linux1804-64/debug-mochitest-fis-e10s-4: ZFlqgTTfTl2Dow2Lj616Zw
+ test-linux1804-64/debug-mochitest-fis-e10s-5: L94I60NsRF-g7GtfcRAuEw
+ test-linux1804-64/debug-mochitest-fis-e10s-6: bZz8yOcDThyQ9Z2YEJA2fQ
+ test-linux1804-64/debug-mochitest-fis-e10s-7: cHtjKakMTB6-n634TjQNkA
+ test-linux1804-64/debug-mochitest-fis-e10s-8: YQxtURSGTHyjnEcZCeg9_g
+ test-linux1804-64/debug-mochitest-fis-e10s-9: fU1Du89-TY-ssnfEVc_Mkg
+ test-linux1804-64/debug-mochitest-gpu-e10s: bly4Z4tKSTeQsNIlChD9Tg
+ test-linux1804-64/debug-mochitest-media-e10s-1: Mbd_N9SbQce7gdnZGv6tfg
+ test-linux1804-64/debug-mochitest-media-e10s-2: ShkBs8CjT7WRxVNt0SJQeA
+ test-linux1804-64/debug-mochitest-media-e10s-3: cinoer-DR0Od5MQ7K6q_og
+ test-linux1804-64/debug-mochitest-media-fis-e10s-1: J4jRtAYbQ1GZbZlCm3MIeQ
+ test-linux1804-64/debug-mochitest-media-fis-e10s-2: a28Yg5VhQFa4pcZVBcLTJg
+ test-linux1804-64/debug-mochitest-media-fis-e10s-3: QwaD8kfpRUikKY1iqJpVOA
+ test-linux1804-64/debug-mochitest-media-spi-e10s-1: RJRx9XkjQWacZnrSeB-juA
+ test-linux1804-64/debug-mochitest-media-spi-e10s-2: AZPdOqm7SKe4Qc6W1M5tAw
+ test-linux1804-64/debug-mochitest-media-spi-e10s-3: VWH9F5lSSo-4QSpxzPxuNQ
+ test-linux1804-64/debug-mochitest-remote-e10s: QylEYESoSCmcUl3cgXrVCQ
+ test-linux1804-64/debug-mochitest-webgl1-core-e10s: KmgBf1kcS-ixwl2aRRunIw
+ test-linux1804-64/debug-mochitest-webgl1-core-fis-e10s: J2oXW6VES969qI1hDBNcbA
+ test-linux1804-64/debug-mochitest-webgl1-ext-e10s: Gd59svk_QburShEW5kpZHw
+ test-linux1804-64/debug-mochitest-webgl1-ext-fis-e10s: SxWKuaSYSbmJKHw7H5FGJA
+ test-linux1804-64/debug-mochitest-webgl2-core-e10s: YkvGpUfgTtmRxxyHLDQHUg
+ test-linux1804-64/debug-mochitest-webgl2-core-fis-e10s: JSUYOyERRtClYEZJnbrf_Q
+ test-linux1804-64/debug-mochitest-webgl2-ext-e10s-1: S67fWAa7QFGkLUdSWnHd7Q
+ test-linux1804-64/debug-mochitest-webgl2-ext-e10s-2: eFgKVMc2RiCKjajmmI7u0g
+ test-linux1804-64/debug-mochitest-webgl2-ext-e10s-3: INYDsRLTQx-fE3UzTuc8_g
+ test-linux1804-64/debug-mochitest-webgl2-ext-e10s-4: LkllFs3GR_2Th_3hAeLwSA
+ test-linux1804-64/debug-mochitest-webgl2-ext-fis-e10s-1: ELMAoTg7SDSTxh57Qqmitw
+ test-linux1804-64/debug-mochitest-webgl2-ext-fis-e10s-2: cI9ijdQjRfq5zc05aeNAPg
+ test-linux1804-64/debug-mochitest-webgl2-ext-fis-e10s-3: PG3l7dFoRpmdXJhsuNPP6g
+ test-linux1804-64/debug-mochitest-webgl2-ext-fis-e10s-4: cI3QWpxfRKie4afK30j1eQ
+ test-linux1804-64/debug-mochitest-webgpu-e10s: Jcx2Egu2Toaw-ToDWZsrnA
+ test-linux1804-64/debug-mochitest-webgpu-fis-e10s: Lm-CzHw-Rd-hPuLfLfaLIw
+ test-linux1804-64/debug-reftest-e10s-1: VBy1ROALQ_CdEQ2yrUTrvQ
+ test-linux1804-64/debug-reftest-e10s-2: aLUwzF55RqiGggSy_vAhbA
+ test-linux1804-64/debug-reftest-e10s-3: QWNPxgsbS3q6x6iKPeL_ZA
+ test-linux1804-64/debug-reftest-e10s-4: d65QYeysSWOLykY075PkwA
+ test-linux1804-64/debug-reftest-e10s-5: LoV1uBrhTm2yr2RcQdkB1Q
+ test-linux1804-64/debug-reftest-e10s-6: AOqng7G3RY-W_Jg2zC5mlg
+ test-linux1804-64/debug-reftest-e10s-7: OJMuErO5QIaiOKOfPZ4oAw
+ test-linux1804-64/debug-reftest-e10s-8: DUtKeWfnR1mZDq7DbDVY4Q
+ test-linux1804-64/debug-reftest-no-accel-e10s-1: KOPGKIjKRnarL7UCAgSaMA
+ test-linux1804-64/debug-reftest-no-accel-e10s-2: IVfHfXqARZeN3Yfn84aaZA
+ test-linux1804-64/debug-reftest-no-accel-e10s-3: GpV54vzRS3-fRkHTiwULaQ
+ test-linux1804-64/debug-reftest-no-accel-e10s-4: QZWh_k_vRfu9k3hkj5qtUA
+ test-linux1804-64/debug-reftest-no-accel-e10s-5: PZ99VRXcQK6g1Ck70uHn-g
+ test-linux1804-64/debug-reftest-no-accel-e10s-6: YisXE0p6QBikoJ1L-Op8CA
+ test-linux1804-64/debug-reftest-no-accel-e10s-7: CwDbqpRJSCio_htPQuB3Gg
+ test-linux1804-64/debug-reftest-no-accel-e10s-8: Znq6G1T6RhOlQwFd09g3xg
+ test-linux1804-64/debug-telemetry-tests-client-e10s: fwtwXykVQNeTw8vCntyUxQ
+ test-linux1804-64/debug-web-platform-tests-crashtests-e10s: GRMXj80dSgmVszDYPOUgsg
+ test-linux1804-64/debug-web-platform-tests-e10s-1: PL0xaZCPS4moSVbTksBG0Q
+ test-linux1804-64/debug-web-platform-tests-e10s-10: P2sPA_ypRcKzvVFGLY_jpA
+ test-linux1804-64/debug-web-platform-tests-e10s-11: Z9HsDEE5TAe2QdPK4UMvsQ
+ test-linux1804-64/debug-web-platform-tests-e10s-12: eRcbivODQe220vIS2WMccA
+ test-linux1804-64/debug-web-platform-tests-e10s-13: If4nL8skS-emIPcOar0ruQ
+ test-linux1804-64/debug-web-platform-tests-e10s-14: AQExuFIwQnCGx99rBCOoZQ
+ test-linux1804-64/debug-web-platform-tests-e10s-15: dV-6e1evSnaj7tFaeEUNHg
+ test-linux1804-64/debug-web-platform-tests-e10s-16: K77c3vdxRSSnR2Q76U7qNA
+ test-linux1804-64/debug-web-platform-tests-e10s-17: IXmNTm8oTjulMOOqg88F2g
+ test-linux1804-64/debug-web-platform-tests-e10s-18: dBe_X_cWRpWZnoazExHfNg
+ test-linux1804-64/debug-web-platform-tests-e10s-2: aDBAcrV7QtGcpH7a7EjkIA
+ test-linux1804-64/debug-web-platform-tests-e10s-3: RJoDWM3kSg-4QDJPy9e-lw
+ test-linux1804-64/debug-web-platform-tests-e10s-4: PRAzHDn5ROavk-oe6Ofozw
+ test-linux1804-64/debug-web-platform-tests-e10s-5: FHiQfjs9S96CUbJiK81o6g
+ test-linux1804-64/debug-web-platform-tests-e10s-6: dv1HU3jcSdSoNUhyY2ynEA
+ test-linux1804-64/debug-web-platform-tests-e10s-7: INDbq9l9Ro-1Vzge4hO8_Q
+ test-linux1804-64/debug-web-platform-tests-e10s-8: JSmbZK9zSgm8Wyoq5YJ-xw
+ test-linux1804-64/debug-web-platform-tests-e10s-9: XrACNUM-RoiPs8BcqoCoEg
+ test-linux1804-64/debug-web-platform-tests-reftests-e10s-1: UhcZh5c6TH2UrA3TIz0VHA
+ test-linux1804-64/debug-web-platform-tests-reftests-e10s-2: Eke7R4TFQ0WbSOJ0Pj7oDg
+ test-linux1804-64/debug-web-platform-tests-reftests-e10s-3: WTo1J3ZbRXCyGzuvlDzBpg
+ test-linux1804-64/debug-web-platform-tests-reftests-e10s-4: OUSgG4C0Rcu2D_sTR5mGhA
+ test-linux1804-64/debug-xpcshell-e10s-1: PE4uLVoDTVuCaYhAE0Kxhg
+ test-linux1804-64/debug-xpcshell-e10s-2: V07yFVvUQHij6wMDfdXymw
+ test-linux1804-64/debug-xpcshell-e10s-3: Kb-9MV5_SPiigWcZOyzXtw
+ test-linux1804-64/debug-xpcshell-e10s-4: BvMr2i6cRD2ZrtwhTWQZ_w
+ test-linux1804-64/debug-xpcshell-e10s-5: Eg_DrZ8xR1-_BJhvR-F44g
+ test-linux1804-64/debug-xpcshell-e10s-6: V3NjNt41SwGcqB1q4hAylQ
+ test-linux1804-64/opt-awsy-base-e10s: b2fXIXzZTM2sAMtjvzp1Rw
+ test-linux1804-64/opt-awsy-e10s: c39JKq5LQwGYayNkBVP9TQ
+ test-linux1804-64/opt-awsy-tp6-e10s: Hv0z5zYMRlSQNwEDrw4aCw
+ test-linux1804-64/opt-browser-screenshots-e10s: WSHIWq4-S8-GGBiSEzZAcw
+ test-linux1804-64/opt-cppunit-1proc: CD41JyX-TDSZVDbmLT6EvQ
+ test-linux1804-64/opt-crashtest-e10s: cX_XFnReRQ2OLJHxNd0wNA
+ test-linux1804-64/opt-firefox-ui-functional-local-e10s: Ki62tHbLS9aKFhYbzGOtmg
+ test-linux1804-64/opt-firefox-ui-functional-remote-e10s: KMon6iADTleGJ12a6DbRRw
+ test-linux1804-64/opt-gtest-1proc: I1KXCjCORjOIQ4jCzMMvCA
+ test-linux1804-64/opt-jsreftest-e10s-1: PXf_H2m_RjegtrtMyKlm4w
+ test-linux1804-64/opt-jsreftest-e10s-2: U-8xKFwlQfaCBVIBiVWTsg
+ test-linux1804-64/opt-jsreftest-e10s-3: BbeN76C9TC-J3NQnGVwFgw
+ test-linux1804-64/opt-mochitest-a11y-1proc: ZFV6nzWNQ1yN2grIn_4gmg
+ test-linux1804-64/opt-mochitest-browser-chrome-e10s-1: WdF5eZskRUywjCHacY806w
+ test-linux1804-64/opt-mochitest-browser-chrome-e10s-2: fCq7FTb7RG-Tm_Dr2umlIA
+ test-linux1804-64/opt-mochitest-browser-chrome-e10s-3: QmxBv38IQIKiKDBd_I8WSQ
+ test-linux1804-64/opt-mochitest-browser-chrome-e10s-4: PwInIkICSReL0DytziJPLA
+ test-linux1804-64/opt-mochitest-browser-chrome-e10s-5: IHkn1lBLRnKf2QOg6eFgSQ
+ test-linux1804-64/opt-mochitest-browser-chrome-e10s-6: dy4qnl0_SMKCk8PNTHGv0A
+ test-linux1804-64/opt-mochitest-browser-chrome-e10s-7: K3UT2YD2ShepxE5H8o6_LQ
+ test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-1: IlPl_4m4SJ6k_-Co6fUnzw
+ test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-2: PU0oKpCdTQ-azU9AUJl88A
+ test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-3: JoS_7RcUTgqNaX1UPcMobw
+ test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-4: BLTO7yngRTONr_u39nlHmw
+ test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-5: NjoJMsJ3QJebflNgfkXKcw
+ test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-6: avjSp4WCTbW76cXMt00Ttg
+ test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-7: S0XDul_ZQm2VHktyBXwnTw
+ test-linux1804-64/opt-mochitest-chrome-1proc-1: WLzltaUSR4CSTgf1dQNYFg
+ test-linux1804-64/opt-mochitest-chrome-1proc-2: Htuq3mZGS9WHaKJ_Zw1QNA
+ test-linux1804-64/opt-mochitest-devtools-chrome-e10s-1: MVisko2lSwyeAZ3XU_2uGA
+ test-linux1804-64/opt-mochitest-devtools-chrome-e10s-2: YsXn1bKxSJ6sPq-5hIOPhg
+ test-linux1804-64/opt-mochitest-devtools-chrome-e10s-3: PTHQGQEoRaS94sjZLP5QEg
+ test-linux1804-64/opt-mochitest-devtools-chrome-e10s-4: SnJI7ZWWRyGDor251oaDIg
+ test-linux1804-64/opt-mochitest-devtools-chrome-e10s-5: LjCnW2UZRQ2rxZDniwd-KQ
+ test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-1: TfxtW-VETfiPZPP2rd6X-A
+ test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-2: f_UW3MDpQx6c7xYRYb_TgA
+ test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-3: UCVemMKARbGClJFK7E069A
+ test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-4: B-3BpqavS2ur8WlFLhZeqw
+ test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-5: H_xsmiJ5R1uDL000YzQ7Lw
+ test-linux1804-64/opt-mochitest-e10s-1: LVbsLRSzSsiK8DbG05etVA
+ test-linux1804-64/opt-mochitest-e10s-2: YYFQb8rgRPe6AUPRBJKczg
+ test-linux1804-64/opt-mochitest-e10s-3: RQ0xfn7YQbSv1Po5QNL_1A
+ test-linux1804-64/opt-mochitest-e10s-4: dFcAM7LvQw-eQlR-J5yoxA
+ test-linux1804-64/opt-mochitest-e10s-5: WG-lDu09QZGyGGqAMrR0TQ
+ test-linux1804-64/opt-mochitest-fis-e10s-1: FQ0cKxOqRK2FcNl9BRHxcg
+ test-linux1804-64/opt-mochitest-fis-e10s-2: CTzMKThQSGuBr7lHoYt_aQ
+ test-linux1804-64/opt-mochitest-fis-e10s-3: bG499YFjQqKP3Ipn5hFbjg
+ test-linux1804-64/opt-mochitest-fis-e10s-4: bZsa928oRaOY9-3QnU-RsA
+ test-linux1804-64/opt-mochitest-fis-e10s-5: b4ZU0LwTTr-uKQRaXU3PiQ
+ test-linux1804-64/opt-mochitest-gpu-e10s: bK8np4KmRW-2raCZn3eB0Q
+ test-linux1804-64/opt-mochitest-media-e10s-1: P4e3QJa8TByCeAei-Qi-7g
+ test-linux1804-64/opt-mochitest-media-e10s-2: c6LtkDhLR3u86gzTGrlOQA
+ test-linux1804-64/opt-mochitest-media-e10s-3: VtGwJvUQQb-IErKAtkKLDg
+ test-linux1804-64/opt-mochitest-media-fis-e10s-1: RWGXrD2zQFOO18DvT4skxA
+ test-linux1804-64/opt-mochitest-media-fis-e10s-2: TiYPed6ETYaXLj2t1Epabg
+ test-linux1804-64/opt-mochitest-media-fis-e10s-3: WQyIzyIISSqA_InoUan0XA
+ test-linux1804-64/opt-mochitest-media-spi-e10s-1: I3bAGuwzQuCiFO3eyPDHTA
+ test-linux1804-64/opt-mochitest-media-spi-e10s-2: MYe5qm5bRY2o6Jv3cGY90A
+ test-linux1804-64/opt-mochitest-media-spi-e10s-3: ZBICL2VMTjC1tRjcqCxciQ
+ test-linux1804-64/opt-mochitest-plain-headless-e10s-1: bknkspeISqyHM1Wj5KU2Eg
+ test-linux1804-64/opt-mochitest-plain-headless-e10s-2: QPZpxEvsSkSBUmdx_K_ptQ
+ test-linux1804-64/opt-mochitest-plain-headless-e10s-3: dn9miH-FQfKu1qW6ETlRpg
+ test-linux1804-64/opt-mochitest-plain-headless-e10s-4: YrY7eskHQhelgB9T32v9Hw
+ test-linux1804-64/opt-mochitest-plain-headless-e10s-5: dQ4_kIQnSnmWStpOeKg52Q
+ test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-1: bs3eKCE0T46gMS3CiHGDEQ
+ test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-2: WfqVWIppSSyGasQh9DDYyA
+ test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-3: LxYVdpO5TuW95_IH9hs3Zg
+ test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-4: fqn88jnJQWyFMi9ydxM1QA
+ test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-5: EJnQYDF8S9OuqUEqy8sybg
+ test-linux1804-64/opt-mochitest-remote-e10s: baCWxsBwSbqvawluby1VIQ
+ test-linux1804-64/opt-mochitest-webgl1-core-e10s: R0bnbn7IQtCIS89GmZ4TfA
+ test-linux1804-64/opt-mochitest-webgl1-core-fis-e10s: R7UQjbb3Rrq7_zjK51ds_A
+ test-linux1804-64/opt-mochitest-webgl1-ext-e10s: IN0dhxlfQXqLLFjlP-dCcQ
+ test-linux1804-64/opt-mochitest-webgl1-ext-fis-e10s: FgA-HQ9iSv2GAo0vTt84mA
+ test-linux1804-64/opt-mochitest-webgl2-core-e10s: RWAM3TjQQFOUEMrzh2lOVw
+ test-linux1804-64/opt-mochitest-webgl2-core-fis-e10s: PF2Rx_iLRYeZdWc5zDUItw
+ test-linux1804-64/opt-mochitest-webgl2-ext-e10s-1: XRS8b3A9Re-L5vc2q8OfUA
+ test-linux1804-64/opt-mochitest-webgl2-ext-e10s-2: bbWkvfnuQu2X1hBcfezlig
+ test-linux1804-64/opt-mochitest-webgl2-ext-e10s-3: V1_FGlCPQq628g-DEDIVIQ
+ test-linux1804-64/opt-mochitest-webgl2-ext-e10s-4: bGIPraEzT-uUxc6HPdtjfQ
+ test-linux1804-64/opt-mochitest-webgl2-ext-fis-e10s-1: Fvi4L6jYSMSJYoMuWO7Dzw
+ test-linux1804-64/opt-mochitest-webgl2-ext-fis-e10s-2: DmUAQeSQRzqgj5_I11sBdQ
+ test-linux1804-64/opt-mochitest-webgl2-ext-fis-e10s-3: VFZHxV-DSLCDzzbu6oWrhg
+ test-linux1804-64/opt-mochitest-webgl2-ext-fis-e10s-4: flfepw9kT3OOIJpntglcTQ
+ test-linux1804-64/opt-mochitest-webgpu-e10s: cYIXiELrR8mP_iXljYYnYg
+ test-linux1804-64/opt-mochitest-webgpu-fis-e10s: WWf3usv9Q7euwILTGFN0KQ
+ test-linux1804-64/opt-reftest-e10s-1: Ine-Ou_qQ-y_-rYhyE-iZw
+ test-linux1804-64/opt-reftest-e10s-2: da_8AFekQrWRS1uzVQTXBw
+ test-linux1804-64/opt-reftest-e10s-3: fEZ5DjKURd6SZVZ_qdlEFg
+ test-linux1804-64/opt-reftest-e10s-4: dMsv5XwkQwGnO9hqvXk4KA
+ test-linux1804-64/opt-reftest-e10s-5: Q8MKiNitQKGSxmz7U4F3kg
+ test-linux1804-64/opt-reftest-no-accel-e10s-1: Uv_RoItqScaix8YqUSIMcQ
+ test-linux1804-64/opt-reftest-no-accel-e10s-2: NfwCJtwKSp6QskusnKpN1g
+ test-linux1804-64/opt-reftest-no-accel-e10s-3: WWJAmktgSXC8yD9FTxrOPg
+ test-linux1804-64/opt-reftest-no-accel-e10s-4: K6kStLXqQNCEuAwzQIYX6g
+ test-linux1804-64/opt-telemetry-tests-client-e10s: czVxbtP0Rr6-Ben-m_q1_w
+ test-linux1804-64/opt-test-verify-e10s-1: AcGxTjcfQxizCQ8Mgwew-w
+ test-linux1804-64/opt-test-verify-e10s-2: CM83ZmJ_SPGvphitUKvxYw
+ test-linux1804-64/opt-test-verify-gpu-e10s: SVapwTPYSmihWJJo8dFCzA
+ test-linux1804-64/opt-test-verify-wpt-e10s-1: TvLCaGd2RMumZqF5YcBzPg
+ test-linux1804-64/opt-test-verify-wpt-e10s-2: QerXbMxdQcG0b-5pNPa6dQ
+ test-linux1804-64/opt-test-verify-wpt-e10s-3: TAhpj2xlTSGkH355nlQP_w
+ test-linux1804-64/opt-web-platform-tests-crashtests-e10s: QnC9dCVITViXdSc93Tl0Cg
+ test-linux1804-64/opt-web-platform-tests-e10s-1: I6gDRS2rRC6yKSKADtD-yA
+ test-linux1804-64/opt-web-platform-tests-e10s-10: Bnn46WDSSHqd0Hy4HWPv4A
+ test-linux1804-64/opt-web-platform-tests-e10s-11: PypTvnGETr2FVcs1D2lE2Q
+ test-linux1804-64/opt-web-platform-tests-e10s-12: MthEkHdFTyGvB7T_HVrjRA
+ test-linux1804-64/opt-web-platform-tests-e10s-2: WV8K84sPTZuz-34cek5NEg
+ test-linux1804-64/opt-web-platform-tests-e10s-3: UE5x2jo0Tl6pB8e8_Dwq1Q
+ test-linux1804-64/opt-web-platform-tests-e10s-4: O1E7v7QmRrKNTi8yXmdsZQ
+ test-linux1804-64/opt-web-platform-tests-e10s-5: GDbm7txMSA-lYVnl5XgshQ
+ test-linux1804-64/opt-web-platform-tests-e10s-6: K1ncJOZZRvmeStS3qgi1ww
+ test-linux1804-64/opt-web-platform-tests-e10s-7: HvgWLGFtQtKLA2GokXu-IQ
+ test-linux1804-64/opt-web-platform-tests-e10s-8: N2c6SDWFS3yMtWo7AfeIwg
+ test-linux1804-64/opt-web-platform-tests-e10s-9: YX7TxWsRQTWGvi2LdIQkKQ
+ test-linux1804-64/opt-web-platform-tests-reftests-e10s-1: ADG8i3yfTFqgm3NGaZPTMw
+ test-linux1804-64/opt-web-platform-tests-reftests-e10s-2: JH8ZnGT0Skqnl8xhF2cLqQ
+ test-linux1804-64/opt-web-platform-tests-reftests-e10s-3: FIuWo_VzQsaz368CCfNWBA
+ test-linux1804-64/opt-xpcshell-e10s-1: PiZh2zZuQ4u0lgu1ZcPSrQ
+ test-linux1804-64/opt-xpcshell-e10s-2: f-PEhnCcT9KLsWAvKxj3yQ
+ test-linux1804-64/opt-xpcshell-e10s-3: SibVIiSmSzqf5E1EW13CbA
+ test-linux1804-64/opt-xpcshell-e10s-4: LwEms-g8SH6vhyubR8XZpA
+ test-linux1804-64/opt-xpcshell-e10s-5: ZkWbMFWIT0mSNZRpt4D1rA
+ test-linux64-asan/opt-marionette-e10s: d_Tefu_DTAeiFqIGAc293g
+ test-linux64-asan/opt-web-platform-tests-wdspec-e10s-1: JczcAHR1ScyEBbz4esp3Kw
+ test-linux64-asan/opt-web-platform-tests-wdspec-e10s-2: U16MpH7VSfGs7xSO55zN7w
+ test-linux64-asan/opt-web-platform-tests-wdspec-e10s-3: IRBqWOY3SWi4H-AVbskYHw
+ test-linux64-ccov/opt-marionette-e10s: YkmZ9uchSaOZMoxjBL6Zow
+ test-linux64-ccov/opt-web-platform-tests-wdspec-e10s-1: FjKKxPKkRlKiDEXMhhugww
+ test-linux64-ccov/opt-web-platform-tests-wdspec-e10s-2: SyU6hP1CRM2538CLHZmVJw
+ test-linux64-ccov/opt-web-platform-tests-wdspec-e10s-3: OlQVEPzzQQ-cLnN_wbRiyQ
+ test-linux64-ccov/opt-web-platform-tests-wdspec-e10s-4: FnuH_F4zQHm-F5ay8009ww
+ test-linux64-qr/debug-web-platform-tests-wdspec-e10s-1: GwGfH120TQqafP_Z7Dd4Fw
+ test-linux64-qr/debug-web-platform-tests-wdspec-e10s-2: F9Bn_vvZQFSw0jOgks-HKw
+ test-linux64-qr/debug-web-platform-tests-wdspec-e10s-3: PpZ4BdgmRMifnVz9vGkaTA
+ test-linux64-qr/debug-web-platform-tests-wdspec-fis-e10s-1: FyHR-c5hTr-JSbAu9lSk8w
+ test-linux64-qr/debug-web-platform-tests-wdspec-fis-e10s-2: NNbWKtz9S76OYiGwtA7rbA
+ test-linux64-qr/debug-web-platform-tests-wdspec-fis-e10s-3: JPQ3U_6BQIO6Yt6F0RHqYA
+ test-linux64-qr/opt-raptor-ares6-firefox-e10s: Lkd6xpPPSBiqCRUDwYLEew
+ test-linux64-qr/opt-raptor-assorted-dom-firefox-e10s: ALKw9cP9StSFpzrvBmRQog
+ test-linux64-qr/opt-raptor-jetstream2-firefox-e10s: OjiqXSqQT0yzeKlGfJROaw
+ test-linux64-qr/opt-raptor-motionmark-animometer-firefox-e10s: GB0bryw6Tm-AVUoq-_Pr2Q
+ test-linux64-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: STl_CeLcTPSZP7uNJijTHg
+ test-linux64-qr/opt-raptor-speedometer-firefox-e10s: X7eA0L6LQPuMyVX5IfrL8w
+ test-linux64-qr/opt-raptor-stylebench-firefox-e10s: AEXy9GywSX-tYmbfo_uNQg
+ test-linux64-qr/opt-raptor-sunspider-firefox-e10s: Va0LUVL9TGmwJm45rFhF1Q
+ test-linux64-qr/opt-raptor-tp6-1-firefox-cold-e10s: I5jOVXYBR_qLQRos7oOyMw
+ test-linux64-qr/opt-raptor-tp6-1-firefox-e10s: ElXBCnB6TC6QJ6xfJu2izQ
+ test-linux64-qr/opt-raptor-tp6-10-firefox-cold-e10s: cqFUG93ESH-6OhNUPjeqow
+ test-linux64-qr/opt-raptor-tp6-10-firefox-e10s: NrYby8jjTgKtRwPuoX_89w
+ test-linux64-qr/opt-raptor-tp6-11-firefox-cold-e10s: A5v1T6mATTO1DqlO5nZRXg
+ test-linux64-qr/opt-raptor-tp6-12-firefox-cold-e10s: F4YsuSRiRDGdyCksM8-W0w
+ test-linux64-qr/opt-raptor-tp6-13-firefox-cold-e10s: AZqAvm1sSgKPTuozrNnPIQ
+ test-linux64-qr/opt-raptor-tp6-14-firefox-cold-e10s: bxJ_2e5RSgKbw5BQsP2PpA
+ test-linux64-qr/opt-raptor-tp6-15-firefox-cold-e10s: Ix4itBJGTe-W187EhTPJHw
+ test-linux64-qr/opt-raptor-tp6-16-firefox-cold-e10s: cjfF5wRVTVS7nfqhXEKaGw
+ test-linux64-qr/opt-raptor-tp6-17-firefox-cold-e10s: Kyvx9YmWRoeEUvXUwDG3yQ
+ test-linux64-qr/opt-raptor-tp6-18-firefox-cold-e10s: QwSeO24RTY2E8ayglnezIw
+ test-linux64-qr/opt-raptor-tp6-19-firefox-cold-e10s: HnQIaM1IQPWOVKXgr1qSPA
+ test-linux64-qr/opt-raptor-tp6-2-firefox-cold-e10s: QDAnTaE7QYma_ZbGZY6cbQ
+ test-linux64-qr/opt-raptor-tp6-2-firefox-e10s: ZauV99ybS1eAW2YWVH6yAg
+ test-linux64-qr/opt-raptor-tp6-20-firefox-cold-e10s: eWo0DJzaR3uobgV8QY5jRw
+ test-linux64-qr/opt-raptor-tp6-21-firefox-cold-e10s: A8iJV3pZQVicJCBPSa8Jlg
+ test-linux64-qr/opt-raptor-tp6-22-firefox-cold-e10s: VwBf3jRATYCs_5Km9NPKaw
+ test-linux64-qr/opt-raptor-tp6-23-firefox-cold-e10s: AZaaKsm4QVC3dRRIDCn0gw
+ test-linux64-qr/opt-raptor-tp6-24-firefox-cold-e10s: d8HtGO9_Rg-uqGe-0EYdxg
+ test-linux64-qr/opt-raptor-tp6-25-firefox-cold-e10s: S0oQVHWaTB2UFuyHbxqU-w
+ test-linux64-qr/opt-raptor-tp6-26-firefox-cold-e10s: ekPZFBbhR--B59HqYKTXoQ
+ test-linux64-qr/opt-raptor-tp6-27-firefox-cold-e10s: Qn7YeMQUS2aNitVvniWnvw
+ test-linux64-qr/opt-raptor-tp6-28-firefox-cold-e10s: fDhzcmsNQimDydyHINJ5hg
+ test-linux64-qr/opt-raptor-tp6-29-firefox-cold-e10s: Xw4mS3ezRJCg3AQGkYiBsg
+ test-linux64-qr/opt-raptor-tp6-3-firefox-cold-e10s: VAuypSVPQlav-8FJxmEUEw
+ test-linux64-qr/opt-raptor-tp6-3-firefox-e10s: PJn7ACzySAigvBIlwHNu6w
+ test-linux64-qr/opt-raptor-tp6-30-firefox-cold-e10s: E9U1k8zQT9WmMV1unAHbqA
+ test-linux64-qr/opt-raptor-tp6-4-firefox-cold-e10s: CMoaSr6jSH2laojbZMUA7A
+ test-linux64-qr/opt-raptor-tp6-4-firefox-e10s: dew0AlCaTbG2i308VAWZjg
+ test-linux64-qr/opt-raptor-tp6-5-firefox-cold-e10s: B0kSdPH-Q1eupRN9woASOA
+ test-linux64-qr/opt-raptor-tp6-5-firefox-e10s: KcB-PjjnT-usIPTsa6hPog
+ test-linux64-qr/opt-raptor-tp6-6-firefox-cold-e10s: Zl73y4XRTeWWDuEU0zZTTg
+ test-linux64-qr/opt-raptor-tp6-6-firefox-e10s: JelyKVn3R4OlipUsPeULSw
+ test-linux64-qr/opt-raptor-tp6-7-firefox-cold-e10s: W8gtkEjzT-q69_A9d7yOYA
+ test-linux64-qr/opt-raptor-tp6-7-firefox-e10s: JVjGmK7qRgqJRGbaFyXySQ
+ test-linux64-qr/opt-raptor-tp6-8-firefox-cold-e10s: AFIt8OuITHuyUdGr9qsZaA
+ test-linux64-qr/opt-raptor-tp6-8-firefox-e10s: bsAxXZf0Sv2YQvLa3DYQNA
+ test-linux64-qr/opt-raptor-tp6-9-firefox-cold-e10s: GSV1ZxmBQziXLHjLJ_eGDw
+ test-linux64-qr/opt-raptor-tp6-9-firefox-e10s: ATtrbXXHRQavLcxqamQgEA
+ test-linux64-qr/opt-raptor-tp6-binast-1-firefox-e10s: AXg2jeqAREW4OW_HlTNv1Q
+ test-linux64-qr/opt-raptor-unity-webgl-firefox-e10s: Fd3KGOW9TyqV-E-CBfPnXw
+ test-linux64-qr/opt-raptor-wasm-godot-baseline-firefox-e10s: Auk_JWigStquuwLnQ5Su9Q
+ test-linux64-qr/opt-raptor-wasm-godot-cranelift-firefox-e10s: JW2PwagkT2anMPkqr4X7Lw
+ test-linux64-qr/opt-raptor-wasm-godot-firefox-e10s: BmUpDVvTQmqjC_jlgGZ-fQ
+ test-linux64-qr/opt-raptor-wasm-godot-ion-firefox-e10s: YPv6yq33TRyjihk7ll3R-g
+ test-linux64-qr/opt-raptor-wasm-misc-baseline-firefox-e10s: VlSyG8cJQPej1gTaWLVBuw
+ test-linux64-qr/opt-raptor-wasm-misc-cranelift-firefox-e10s: KxWa-r0vS_GFW-QvVH36cg
+ test-linux64-qr/opt-raptor-wasm-misc-firefox-e10s: QNyWGXh_R4GUA0DN06Khtw
+ test-linux64-qr/opt-raptor-wasm-misc-ion-firefox-e10s: YQXGZlToR-qqzZNb0sUnEw
+ test-linux64-qr/opt-raptor-webaudio-firefox-e10s: QUxQYzqLQDOjBod51Eq07A
+ test-linux64-qr/opt-raptor-youtube-playback-firefox-e10s: NC_aLJdPT3WwkJfmS8eSnA
+ test-linux64-qr/opt-talos-chrome-e10s: PWfl9-VJRkOovMmCcN6iBg
+ test-linux64-qr/opt-talos-damp-e10s: RPhFisqFSTOYvAJC5n3-hQ
+ test-linux64-qr/opt-talos-dromaeojs-e10s: Jm9Zj6DTSFWmOzVFLPo2Pg
+ test-linux64-qr/opt-talos-g1-e10s: Qfg96kHxQFi5O2DbddfLAg
+ test-linux64-qr/opt-talos-g3-e10s: Pg-RiDncQhuQg0faGKFFng
+ test-linux64-qr/opt-talos-g4-e10s: X8tLriY_SDKG370z2cbpgg
+ test-linux64-qr/opt-talos-g5-e10s: GLb0Ew1CQQ-SDjOdRk9ZpA
+ test-linux64-qr/opt-talos-other-e10s: ShOhhPpCSa6c0QzttN9RYg
+ test-linux64-qr/opt-talos-perf-reftest-e10s: fi2KGd1QQqqC8uMnh7VEZQ
+ test-linux64-qr/opt-talos-perf-reftest-singletons-e10s: AOqVhmqNT2aaStxi1W99Ug
+ test-linux64-qr/opt-talos-realworld-webextensions-e10s: F3A-3VAVT2yjilfrpWhLOg
+ test-linux64-qr/opt-talos-sessionrestore-many-windows-e10s: GXCzjEyUTH-REPWkFaE4DA
+ test-linux64-qr/opt-talos-svgr-e10s: G5mk3T34Rpe9sOSaTJihSg
+ test-linux64-qr/opt-talos-tabswitch-e10s: JkNFsnc2RLOtIxxWXIFu7g
+ test-linux64-qr/opt-talos-tp5o-e10s: G0WJ5_10QMOb2LKnlUrDuA
+ test-linux64-qr/opt-talos-webgl-e10s: Qwp0DLg3R2C1D3Lh-DnIjg
+ test-linux64-qr/opt-web-platform-tests-wdspec-e10s-1: UEZq8jSfR0qFEissTW5JDQ
+ test-linux64-qr/opt-web-platform-tests-wdspec-e10s-2: GTozRhAbS6WP2JI12IOv9g
+ test-linux64-qr/opt-web-platform-tests-wdspec-e10s-3: EmXQwxKXQHK7bLyH14qqAA
+ test-linux64-qr/opt-web-platform-tests-wdspec-fis-e10s-1: EnuW8MkBTgmLWUqZWU9GXg
+ test-linux64-qr/opt-web-platform-tests-wdspec-fis-e10s-2: cfgfo27dSqmpSsSq3ItdYQ
+ test-linux64-qr/opt-web-platform-tests-wdspec-fis-e10s-3: WfS4Z6z9SWatP-meIGx26w
+ test-linux64-shippable-qr/opt-raptor-ares6-firefox-e10s: UwVbOkPxRwuXg0rscdveMg
+ test-linux64-shippable-qr/opt-raptor-ares6-firefox-fis-e10s: NPpFkeGzScyNKxNHyPTONQ
+ test-linux64-shippable-qr/opt-raptor-assorted-dom-firefox-e10s: XVY_uiatR1aClhhQuQDiAA
+ test-linux64-shippable-qr/opt-raptor-assorted-dom-firefox-fis-e10s: VYVitYTWQJe1uk0VCRs3Wg
+ test-linux64-shippable-qr/opt-raptor-jetstream2-firefox-e10s: PLEgarGJSOmxggIw5u-3SA
+ test-linux64-shippable-qr/opt-raptor-jetstream2-firefox-fis-e10s: SkEGfYc4TZSyLpqvp4H2fg
+ test-linux64-shippable-qr/opt-raptor-motionmark-animometer-firefox-e10s: EYkSSpOnTfCbaANY9NQn_w
+ test-linux64-shippable-qr/opt-raptor-motionmark-animometer-firefox-fis-e10s: FX2nwTbXRgqPDjpT4UI09A
+ test-linux64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: NWqnIlV1SkWH0KFgHq4s_Q
+ test-linux64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-fis-e10s: QJ1Ya2CkQsC_YhWdaVwF2g
+ test-linux64-shippable-qr/opt-raptor-speedometer-firefox-e10s: YwmjJKbiQg2JhFHhaC9MSw
+ test-linux64-shippable-qr/opt-raptor-speedometer-firefox-fis-e10s: bNvBZ_11SiCWZdWr-jEGIg
+ test-linux64-shippable-qr/opt-raptor-stylebench-firefox-e10s: dP32C9SHRv67mBvIB9yoog
+ test-linux64-shippable-qr/opt-raptor-stylebench-firefox-fis-e10s: Gp8MZqiBRt6VzU1JJ8stuA
+ test-linux64-shippable-qr/opt-raptor-sunspider-firefox-e10s: aBl4hwhKQEyWUA8H1sJLSA
+ test-linux64-shippable-qr/opt-raptor-sunspider-firefox-fis-e10s: LUk22pzqQ2-0slX_hlptfw
+ test-linux64-shippable-qr/opt-raptor-tp6-1-firefox-cold-e10s: T380PgJUSwqG-8YpeH49Zg
+ test-linux64-shippable-qr/opt-raptor-tp6-1-firefox-e10s: TUkAAo8PTF-Runs1GhlRyA
+ test-linux64-shippable-qr/opt-raptor-tp6-1-firefox-fis-e10s: Y-HpuQhbQ5SVlfXvHdgJ-w
+ test-linux64-shippable-qr/opt-raptor-tp6-10-firefox-cold-e10s: JKcIlPdiQgSMb13uML_pqg
+ test-linux64-shippable-qr/opt-raptor-tp6-10-firefox-e10s: Xg8nM-3zQSeEtrpL6cfOew
+ test-linux64-shippable-qr/opt-raptor-tp6-10-firefox-fis-e10s: ReycFVInTAOgX_GdXGiCTA
+ test-linux64-shippable-qr/opt-raptor-tp6-11-firefox-cold-e10s: aTC7FICZRZylOU_U_X1A6A
+ test-linux64-shippable-qr/opt-raptor-tp6-12-firefox-cold-e10s: LAS3vA5VSHWn0312wZZHQQ
+ test-linux64-shippable-qr/opt-raptor-tp6-13-firefox-cold-e10s: exNoqv1rRk2EY1Jr9tC3yg
+ test-linux64-shippable-qr/opt-raptor-tp6-14-firefox-cold-e10s: egBsuRXhQNipqeJMnzWEBg
+ test-linux64-shippable-qr/opt-raptor-tp6-15-firefox-cold-e10s: EnSlT-ZwTu6hqXaxIRgjJQ
+ test-linux64-shippable-qr/opt-raptor-tp6-16-firefox-cold-e10s: K8EQOeNvTRCPJMITybRNVA
+ test-linux64-shippable-qr/opt-raptor-tp6-17-firefox-cold-e10s: SQDX9CxmR56jbbL5GPJTFQ
+ test-linux64-shippable-qr/opt-raptor-tp6-18-firefox-cold-e10s: fRDhJwpRS-ifeNwf8ReWzA
+ test-linux64-shippable-qr/opt-raptor-tp6-19-firefox-cold-e10s: Zffx61hjSK2AfQHP-ClvcQ
+ test-linux64-shippable-qr/opt-raptor-tp6-2-firefox-cold-e10s: A_r5Mjh1Q0yvB7ZZaOzQmg
+ test-linux64-shippable-qr/opt-raptor-tp6-2-firefox-e10s: DnFkTownRkOeuGK6OmJC6g
+ test-linux64-shippable-qr/opt-raptor-tp6-2-firefox-fis-e10s: A3YSD7nyQX6udUnTEYV3Ew
+ test-linux64-shippable-qr/opt-raptor-tp6-20-firefox-cold-e10s: bksHnzXcTP6DlFjdDfuBnA
+ test-linux64-shippable-qr/opt-raptor-tp6-21-firefox-cold-e10s: JcEINl-dQMiyjyVJmjxBxA
+ test-linux64-shippable-qr/opt-raptor-tp6-22-firefox-cold-e10s: VmBP-IWUSf6wNrlUyB3y-Q
+ test-linux64-shippable-qr/opt-raptor-tp6-23-firefox-cold-e10s: Cp7Pg_Z7Qim2E5RfrI7gHQ
+ test-linux64-shippable-qr/opt-raptor-tp6-24-firefox-cold-e10s: C6nwBWGASj6NZjY703LViw
+ test-linux64-shippable-qr/opt-raptor-tp6-25-firefox-cold-e10s: bmfBLy9aTAaEy5to83beKQ
+ test-linux64-shippable-qr/opt-raptor-tp6-26-firefox-cold-e10s: dWDfqFSdRoCWlq2pzq-6eA
+ test-linux64-shippable-qr/opt-raptor-tp6-27-firefox-cold-e10s: HCIjB-9ETcagnk-zKGnFCA
+ test-linux64-shippable-qr/opt-raptor-tp6-28-firefox-cold-e10s: bs3WoWIbQnCoiIy-qMYlZQ
+ test-linux64-shippable-qr/opt-raptor-tp6-29-firefox-cold-e10s: ZX9fa_j2RRmfGs6F7mH57w
+ test-linux64-shippable-qr/opt-raptor-tp6-3-firefox-cold-e10s: NGjgA3ujRiG8m4m3VyUZKg
+ test-linux64-shippable-qr/opt-raptor-tp6-3-firefox-e10s: WrG_qkE1RvyCx1C5GPuB9Q
+ test-linux64-shippable-qr/opt-raptor-tp6-3-firefox-fis-e10s: NdmtUdhCSMaRqhrK202v4A
+ test-linux64-shippable-qr/opt-raptor-tp6-30-firefox-cold-e10s: S8dax8MgQ6Kg4B3lARvrgQ
+ test-linux64-shippable-qr/opt-raptor-tp6-4-firefox-cold-e10s: aX0wBq8_RqSRBmD7PCjg7A
+ test-linux64-shippable-qr/opt-raptor-tp6-4-firefox-e10s: UfsigmdFRDiBfD15BURCGw
+ test-linux64-shippable-qr/opt-raptor-tp6-4-firefox-fis-e10s: QzlwTl7aQ8SyLn69NeV4nA
+ test-linux64-shippable-qr/opt-raptor-tp6-5-firefox-cold-e10s: J1AljdLOSY2lJ3NTDga1uQ
+ test-linux64-shippable-qr/opt-raptor-tp6-5-firefox-e10s: KcBjXNA3TTKcDvkFZf_oyQ
+ test-linux64-shippable-qr/opt-raptor-tp6-5-firefox-fis-e10s: ZLByg8zXTwWKPPIO-00m6A
+ test-linux64-shippable-qr/opt-raptor-tp6-6-firefox-cold-e10s: dV-8tRkbRgW6XDm2MtsHbw
+ test-linux64-shippable-qr/opt-raptor-tp6-6-firefox-e10s: aALnqnXnSHWEqmNu0-L7fQ
+ test-linux64-shippable-qr/opt-raptor-tp6-6-firefox-fis-e10s: dSYCuKrwRTirzwf1XYQeDQ
+ test-linux64-shippable-qr/opt-raptor-tp6-7-firefox-cold-e10s: aH_HJTlLTwymBfZfIcbg9g
+ test-linux64-shippable-qr/opt-raptor-tp6-7-firefox-e10s: KuklwL5LQ5qzGAUjixIslA
+ test-linux64-shippable-qr/opt-raptor-tp6-7-firefox-fis-e10s: YudYgwZHRlmHnBXjeJt11w
+ test-linux64-shippable-qr/opt-raptor-tp6-8-firefox-cold-e10s: CIdGwyWNQWO514BfJ3tS0g
+ test-linux64-shippable-qr/opt-raptor-tp6-8-firefox-e10s: MQtMyOYVS4GYSlymEulSyw
+ test-linux64-shippable-qr/opt-raptor-tp6-8-firefox-fis-e10s: YPAcoihETBiG361nacHe4g
+ test-linux64-shippable-qr/opt-raptor-tp6-9-firefox-cold-e10s: b_mXYhTDSoWKkineAewsxA
+ test-linux64-shippable-qr/opt-raptor-tp6-9-firefox-e10s: U9pPIq1aR7CsXWeGkxZVqA
+ test-linux64-shippable-qr/opt-raptor-tp6-9-firefox-fis-e10s: P6GAsYXMQbqa9WNx1M_g_Q
+ test-linux64-shippable-qr/opt-raptor-tp6-binast-1-firefox-e10s: O-m1oJkQTIq5RSjjO5KTLg
+ test-linux64-shippable-qr/opt-raptor-tp6-binast-1-firefox-fis-e10s: dyW4tWmzSNatLSuYo6CpFg
+ test-linux64-shippable-qr/opt-raptor-unity-webgl-firefox-e10s: c0lNAvrjSYOIZkWiLGMvCA
+ test-linux64-shippable-qr/opt-raptor-unity-webgl-firefox-fis-e10s: SxAKuoU9QUGWgxsHRB2shA
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-baseline-firefox-e10s: HBowrK19SByU-d58eEaQGw
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-baseline-firefox-fis-e10s: IvXYmX3mQR2toV6DeFTjKw
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-cranelift-firefox-e10s: FNsgROQ4Qo6GddMTL4cr5Q
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-cranelift-firefox-fis-e10s: XlKjbvnURWGAGBqRJJ7DiA
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-firefox-e10s: dM1FW6lET0um-XwlX9Dp-Q
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-firefox-fis-e10s: U0rGobDES6WPOd27UnMy7Q
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-ion-firefox-e10s: a625rjkaSWexGWturUJFSA
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-ion-firefox-fis-e10s: V7i3Ir-1RxaK5jyAnul_3A
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-baseline-firefox-e10s: ENLPP6r9RbqpDFuA9kEl5g
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-baseline-firefox-fis-e10s: Az8vB-Y3QbKVshLTsPb2zg
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-cranelift-firefox-e10s: O5725izARJWKiWaJjgO1hg
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-cranelift-firefox-fis-e10s: KrY0awcoRyaj8xEvTy0UPQ
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-firefox-e10s: T4xQQXuBRxehNfv46c6dog
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-firefox-fis-e10s: VF5RNPyyTzGsQDO_oyGGuA
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-ion-firefox-e10s: cVFN8e67SRauU3n1xlzNCQ
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-ion-firefox-fis-e10s: FjtZJDVXTWy2MXwlHlIbdg
+ test-linux64-shippable-qr/opt-raptor-webaudio-firefox-e10s: L59FcY9TQu-kHnKzNDeBHg
+ test-linux64-shippable-qr/opt-raptor-webaudio-firefox-fis-e10s: f1DCx9xuRnikeQsqRvRYRg
+ test-linux64-shippable-qr/opt-raptor-youtube-playback-firefox-e10s: KPb76s-LQvyufjwIKUvUBA
+ test-linux64-shippable-qr/opt-raptor-youtube-playback-firefox-fis-e10s: F6-QAgK7SmyeTIIQDAwFpw
+ test-linux64-shippable-qr/opt-talos-chrome-e10s: O_rD6Os1S_iGfMDv5B0U8w
+ test-linux64-shippable-qr/opt-talos-chrome-fis-e10s: esrk3CzxTVuecYAX71hISg
+ test-linux64-shippable-qr/opt-talos-damp-e10s: RrUPu9d9S8CNLDqLWhNlLA
+ test-linux64-shippable-qr/opt-talos-damp-fis-e10s: TXgVK7r5QICRHYxEvPxwpQ
+ test-linux64-shippable-qr/opt-talos-dromaeojs-e10s: QHPrxmE0QV6KcNqjY5scig
+ test-linux64-shippable-qr/opt-talos-dromaeojs-fis-e10s: EWRYqBF6Ti6nylPyGPdXTg
+ test-linux64-shippable-qr/opt-talos-g1-e10s: UW7Qf4ceTxewaJlghef5YA
+ test-linux64-shippable-qr/opt-talos-g1-fis-e10s: XtpHHg5VQeayORkvHBH-3g
+ test-linux64-shippable-qr/opt-talos-g3-e10s: Nc7T5hZLSjeBuJx5zt49LQ
+ test-linux64-shippable-qr/opt-talos-g3-fis-e10s: ImDBnFkqQR2Aykk6BdG9NQ
+ test-linux64-shippable-qr/opt-talos-g4-e10s: cLKtyuG0Q1u39iJMntSTag
+ test-linux64-shippable-qr/opt-talos-g4-fis-e10s: M3vCdK4IRXKXuyx4ZJqZxA
+ test-linux64-shippable-qr/opt-talos-g5-e10s: XDS0PbCCS3idiGC1ndLn-w
+ test-linux64-shippable-qr/opt-talos-g5-fis-e10s: ARWdyfKbTBqfnAW9QShBkA
+ test-linux64-shippable-qr/opt-talos-other-e10s: VU4K6tisSF-XNweZFM6Esg
+ test-linux64-shippable-qr/opt-talos-other-fis-e10s: MRw5EmQLTPKIc0uTY_QIzQ
+ test-linux64-shippable-qr/opt-talos-perf-reftest-e10s: CikiN2czSUu5Q4SVLN29mA
+ test-linux64-shippable-qr/opt-talos-perf-reftest-fis-e10s: eceogPpcRwa_aAul6K1vnw
+ test-linux64-shippable-qr/opt-talos-perf-reftest-singletons-e10s: T1c4AhrARsSA42XY8eFkGw
+ test-linux64-shippable-qr/opt-talos-perf-reftest-singletons-fis-e10s: U92Br9n_ST-5wKPjpTQQPA
+ test-linux64-shippable-qr/opt-talos-realworld-webextensions-e10s: Wg11Sz6uQgOWd_0KDFf-Cw
+ test-linux64-shippable-qr/opt-talos-realworld-webextensions-fis-e10s: ZGyUW9-lR7SRcEEuRv5c-Q
+ test-linux64-shippable-qr/opt-talos-sessionrestore-many-windows-e10s: U_DFmkf9TIqgi1eIgH1GhQ
+ test-linux64-shippable-qr/opt-talos-sessionrestore-many-windows-fis-e10s: ayMfpP_fRZu-6aRlVpCFfw
+ test-linux64-shippable-qr/opt-talos-svgr-e10s: SBOswgdUQHW2zVoWEbTMXw
+ test-linux64-shippable-qr/opt-talos-svgr-fis-e10s: W2lWpfyTQJSuBkzCO90OAw
+ test-linux64-shippable-qr/opt-talos-tabswitch-e10s: ZvwcU-oIQM2xDZCGeMK5lg
+ test-linux64-shippable-qr/opt-talos-tabswitch-fis-e10s: O2HrKmJTQsWbabiiNMl8XQ
+ test-linux64-shippable-qr/opt-talos-tp5o-e10s: FvmPaxlMR52Q6TTK5i4-Eg
+ test-linux64-shippable-qr/opt-talos-tp5o-fis-e10s: b1NfnvTsSkauyOLYUUi20w
+ test-linux64-shippable-qr/opt-talos-webgl-e10s: Hkbeg58LTre6dDLhFN-pWQ
+ test-linux64-shippable-qr/opt-talos-webgl-fis-e10s: exsGgwP-TkC6fwdSUEVjDg
+ test-linux64-shippable-qr/opt-web-platform-tests-wdspec-e10s-1: L77vVfc2QB2RSRM74kpaiA
+ test-linux64-shippable-qr/opt-web-platform-tests-wdspec-e10s-2: c2c_ri3ZQfqlnkMN0YhvxQ
+ test-linux64-shippable-qr/opt-web-platform-tests-wdspec-e10s-3: AnXLQgMXTYS_iNSG8pSdEg
+ test-linux64-shippable/opt-browsertime-tp6-chrome-cold-amazon-e10s: Jn78r1IARyKR35zF-pPKHA
+ test-linux64-shippable/opt-browsertime-tp6-firefox-amazon-e10s: Z9_Pq1ZOSWyWxc_0Y1LHLg
+ test-linux64-shippable/opt-browsertime-tp6-firefox-cold-amazon-e10s: MqeQ_SLrT6ejaXDJ35DGyQ
+ test-linux64-shippable/opt-browsertime-tp6-profiling-firefox-amazon-e10s: FHT8hVKNSBaxYNaSQ2xGZA
+ test-linux64-shippable/opt-browsertime-tp6-profiling-firefox-cold-amazon-e10s: SI1CehCuTpiB1aYI6SL6kw
+ test-linux64-shippable/opt-marionette-e10s: Cmc-rSb0S6G1P3KpqN3_iw
+ test-linux64-shippable/opt-raptor-ares6-firefox-e10s: VJ1LQ85XQha3iZKMZiMZhg
+ test-linux64-shippable/opt-raptor-ares6-firefox-profiling-e10s: fxzQA_gDToaHyToKju-6dg
+ test-linux64-shippable/opt-raptor-assorted-dom-firefox-e10s: X8-cj0lIQYiI0aKPO72PNw
+ test-linux64-shippable/opt-raptor-assorted-dom-firefox-profiling-e10s: Zm5FPl9OQyCceZlCgbLv-w
+ test-linux64-shippable/opt-raptor-jetstream2-firefox-e10s: XRotk7-JS2KDjBRbaTJBug
+ test-linux64-shippable/opt-raptor-jetstream2-firefox-profiling-e10s: O-8RF_w4SDWOgwA00X59Hw
+ test-linux64-shippable/opt-raptor-motionmark-animometer-firefox-e10s: QvU40WshSTW25kTlaj5GlA
+ test-linux64-shippable/opt-raptor-motionmark-animometer-firefox-profiling-e10s: RT1oOj7hRbSzeU6SJ4QQKg
+ test-linux64-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: Y5zQY_NKQcCkoGrMfNOC0g
+ test-linux64-shippable/opt-raptor-motionmark-htmlsuite-firefox-profiling-e10s: e6YvCwNHQoK86pbPoNLcEQ
+ test-linux64-shippable/opt-raptor-speedometer-firefox-e10s: OvT5xruGRhS1zZYPObVHJQ
+ test-linux64-shippable/opt-raptor-speedometer-firefox-profiling-e10s: T3I5Q1JjQVSrEQ4KsDwFRw
+ test-linux64-shippable/opt-raptor-stylebench-firefox-e10s: VGRFJ1GLQb2GFPKtMj1h-A
+ test-linux64-shippable/opt-raptor-stylebench-firefox-profiling-e10s: B42AwCjrQyi33Ht2GgNR3g
+ test-linux64-shippable/opt-raptor-sunspider-firefox-e10s: KbmHks2_RQOJUPad2rZgmg
+ test-linux64-shippable/opt-raptor-sunspider-firefox-profiling-e10s: f1elsQ2TSBCSNzBjnBCRlw
+ test-linux64-shippable/opt-raptor-tp6-1-firefox-cold-e10s: QzPL0X_zRZijgG_KSAQDrQ
+ test-linux64-shippable/opt-raptor-tp6-1-firefox-e10s: Ki13O8lkSneklZm_P5qB4A
+ test-linux64-shippable/opt-raptor-tp6-1-firefox-profiling-e10s: Q09OINsfRL-1C4-Oqd440A
+ test-linux64-shippable/opt-raptor-tp6-10-firefox-cold-e10s: CCsXFKI1TKiFAEgroQEmEw
+ test-linux64-shippable/opt-raptor-tp6-10-firefox-e10s: BwOJPP1CQOSmMjRTweP_eA
+ test-linux64-shippable/opt-raptor-tp6-10-firefox-profiling-e10s: PEQxDN7kQFenoK77w0e3HQ
+ test-linux64-shippable/opt-raptor-tp6-11-firefox-cold-e10s: eN5uTeP_Q0KH2IcQ2ZdG0A
+ test-linux64-shippable/opt-raptor-tp6-12-firefox-cold-e10s: EZM1hg5FTrCP2UN7cVoxpw
+ test-linux64-shippable/opt-raptor-tp6-13-firefox-cold-e10s: TfSSTYKRRhmaagMuawTd2Q
+ test-linux64-shippable/opt-raptor-tp6-14-firefox-cold-e10s: ahuFY5-sSRiqyAX1qXOgcg
+ test-linux64-shippable/opt-raptor-tp6-15-firefox-cold-e10s: Mo1Qb9nIQYSyrSfayqRJ6A
+ test-linux64-shippable/opt-raptor-tp6-16-firefox-cold-e10s: H1gFU5waQVu3QXshxvEx7g
+ test-linux64-shippable/opt-raptor-tp6-17-firefox-cold-e10s: F6VLytETQjSND6lV24l6AA
+ test-linux64-shippable/opt-raptor-tp6-18-firefox-cold-e10s: PsOUAP6JSSmIQkM1iTQ21w
+ test-linux64-shippable/opt-raptor-tp6-19-firefox-cold-e10s: HxfKdkIbQNe0dAYIO_OfVA
+ test-linux64-shippable/opt-raptor-tp6-2-firefox-cold-e10s: cUMUkUytTWGQKgTzf8L22g
+ test-linux64-shippable/opt-raptor-tp6-2-firefox-e10s: TM09ORmIRRCRsvW1Pw4qGQ
+ test-linux64-shippable/opt-raptor-tp6-2-firefox-profiling-e10s: GHko2ntQRNWU96HJdCk5fA
+ test-linux64-shippable/opt-raptor-tp6-20-firefox-cold-e10s: Sm4RyjPGQjintYSaa1ZIGA
+ test-linux64-shippable/opt-raptor-tp6-21-firefox-cold-e10s: U-bLNTLiRfSZ-aY8CySH8w
+ test-linux64-shippable/opt-raptor-tp6-22-firefox-cold-e10s: c2-3j2OfSNabw4E-eO3_-w
+ test-linux64-shippable/opt-raptor-tp6-23-firefox-cold-e10s: SulDXv5xTVG3cLI0dKP3Fg
+ test-linux64-shippable/opt-raptor-tp6-24-firefox-cold-e10s: GYLDaWBJRuSRx7INsx5Oyg
+ test-linux64-shippable/opt-raptor-tp6-25-firefox-cold-e10s: Eq4-u5OYQPiL_CzgpgPgIg
+ test-linux64-shippable/opt-raptor-tp6-26-firefox-cold-e10s: Nx29iyNERPebo5cuh0xPkw
+ test-linux64-shippable/opt-raptor-tp6-27-firefox-cold-e10s: N-Agboq3Q2GibluUXE0zQA
+ test-linux64-shippable/opt-raptor-tp6-28-firefox-cold-e10s: DabIlzoQSTi_i0fPgfGxuA
+ test-linux64-shippable/opt-raptor-tp6-29-firefox-cold-e10s: SXW-RzL0RXe_wYyg6GBV_g
+ test-linux64-shippable/opt-raptor-tp6-3-firefox-cold-e10s: XTICN29iShSt-pNWRHFJ_Q
+ test-linux64-shippable/opt-raptor-tp6-3-firefox-e10s: IAjRnrODQTGQs23jwckinw
+ test-linux64-shippable/opt-raptor-tp6-3-firefox-profiling-e10s: R5nDTUKlRuOjxN-AQBt4Og
+ test-linux64-shippable/opt-raptor-tp6-30-firefox-cold-e10s: dnYNWOi0QZ6YXkJCQX3jKg
+ test-linux64-shippable/opt-raptor-tp6-4-firefox-cold-e10s: TtS_b_0wQ6mAoqFf_Jgeuw
+ test-linux64-shippable/opt-raptor-tp6-4-firefox-e10s: UNtGqtmoQhyfYvnHFW5vxA
+ test-linux64-shippable/opt-raptor-tp6-4-firefox-profiling-e10s: WkJ1eQ4GRY-BP3ckkfuyog
+ test-linux64-shippable/opt-raptor-tp6-5-firefox-cold-e10s: OhPZWZlGRHq03Sf1IePgvw
+ test-linux64-shippable/opt-raptor-tp6-5-firefox-e10s: Po_L_miKT42nkgp3fxHWKA
+ test-linux64-shippable/opt-raptor-tp6-5-firefox-profiling-e10s: Vg19eyIOSTyjl3lQFXSeag
+ test-linux64-shippable/opt-raptor-tp6-6-firefox-cold-e10s: TZ4MAoPjRUiyfeRRYQctAg
+ test-linux64-shippable/opt-raptor-tp6-6-firefox-e10s: dLg0qHJPS_a8wHixqDnjog
+ test-linux64-shippable/opt-raptor-tp6-6-firefox-profiling-e10s: f83wNfXoTaSoLO2bqMmnHA
+ test-linux64-shippable/opt-raptor-tp6-7-firefox-cold-e10s: ds4ZAxsbRxiQ27ISwy83-g
+ test-linux64-shippable/opt-raptor-tp6-7-firefox-e10s: e5nOJ43eSHesDJy-vhn89g
+ test-linux64-shippable/opt-raptor-tp6-7-firefox-profiling-e10s: bSHIBENgRpuz9queQBOtdQ
+ test-linux64-shippable/opt-raptor-tp6-8-firefox-cold-e10s: aI2Swap4SACSYZK4bEzwiw
+ test-linux64-shippable/opt-raptor-tp6-8-firefox-e10s: CnGv7qRIS1OfSZxiDCZwmw
+ test-linux64-shippable/opt-raptor-tp6-8-firefox-profiling-e10s: UrOXwfPMQ569athYvd6FGg
+ test-linux64-shippable/opt-raptor-tp6-9-firefox-cold-e10s: LH5xawgJTTGDSjcN4fdbSA
+ test-linux64-shippable/opt-raptor-tp6-9-firefox-e10s: Amnq7jMFQoqhPrIby3eFIg
+ test-linux64-shippable/opt-raptor-tp6-9-firefox-profiling-e10s: er0ea9XYRa23sdvVfSceWQ
+ test-linux64-shippable/opt-raptor-tp6-binast-1-firefox-e10s: Scuoy1zPQPKl1Auj6XL4SQ
+ test-linux64-shippable/opt-raptor-unity-webgl-firefox-e10s: UH9aSPAMRhqScC883PNHkw
+ test-linux64-shippable/opt-raptor-unity-webgl-firefox-profiling-e10s: dIErITDnR2eGDh5qlfYhMg
+ test-linux64-shippable/opt-raptor-wasm-godot-baseline-firefox-e10s: dnlZHfdyQVec-HFoJQt-Ng
+ test-linux64-shippable/opt-raptor-wasm-godot-baseline-firefox-profiling-e10s: YFR5RuvBSSyhDLqz9YqC1w
+ test-linux64-shippable/opt-raptor-wasm-godot-cranelift-firefox-e10s: SOeFVMULR82etHugmz2ulA
+ test-linux64-shippable/opt-raptor-wasm-godot-cranelift-firefox-profiling-e10s: c_fJeFLKRHOgL5mJ0__lgA
+ test-linux64-shippable/opt-raptor-wasm-godot-firefox-e10s: b-asIQkoQpSPs_0RdlJ0JA
+ test-linux64-shippable/opt-raptor-wasm-godot-firefox-profiling-e10s: DuonX8PRQcattS5DYEutpQ
+ test-linux64-shippable/opt-raptor-wasm-godot-ion-firefox-e10s: bMHfgEIDRk6nHJEG7V07tw
+ test-linux64-shippable/opt-raptor-wasm-godot-ion-firefox-profiling-e10s: cQ0TnwDEQMe9whWpajncpA
+ test-linux64-shippable/opt-raptor-wasm-misc-baseline-firefox-e10s: UxV7GPISSCeLeK8MjfxwUw
+ test-linux64-shippable/opt-raptor-wasm-misc-baseline-firefox-profiling-e10s: PWcVxJJ2Tnm46X-MpSSSjA
+ test-linux64-shippable/opt-raptor-wasm-misc-cranelift-firefox-e10s: XDbFSmLkSrCwgcVJVgLSLA
+ test-linux64-shippable/opt-raptor-wasm-misc-firefox-e10s: BBYmEYTqTJO9WIma4yG2EQ
+ test-linux64-shippable/opt-raptor-wasm-misc-firefox-profiling-e10s: FKORX-o5Sbis1ylACblxxA
+ test-linux64-shippable/opt-raptor-wasm-misc-ion-firefox-e10s: Ni-au9LSRi-xGhGttVClDQ
+ test-linux64-shippable/opt-raptor-wasm-misc-ion-firefox-profiling-e10s: cEGIzPUUQLipb4o9pHTNEw
+ test-linux64-shippable/opt-raptor-webaudio-firefox-e10s: fXD185buSliTUug5-VbonA
+ test-linux64-shippable/opt-raptor-webaudio-firefox-profiling-e10s: IUPFVnRgQeqv7t_0zMd2lQ
+ test-linux64-shippable/opt-raptor-youtube-playback-firefox-e10s: OaVR8q_YSH2b43BzYw0ELQ
+ test-linux64-shippable/opt-raptor-youtube-playback-firefox-profiling-e10s: VvvBIsoRRUaElgFpzxvueQ
+ test-linux64-shippable/opt-talos-bcv-e10s: EkEnJe_ZQrOVTD_THmn6Pw
+ test-linux64-shippable/opt-talos-bcv-profiling-e10s: bjLSzbm4R9Kf5LKYhfr2gg
+ test-linux64-shippable/opt-talos-chrome-e10s: fkJDiBP2SOyQ2l57HVzYUw
+ test-linux64-shippable/opt-talos-chrome-profiling-e10s: cPGQjThWSGmrI7CLHwP8_g
+ test-linux64-shippable/opt-talos-damp-e10s: JPZMIeOMSLGQpAMJFWQ_QQ
+ test-linux64-shippable/opt-talos-dromaeojs-e10s: X77YW5XZTvK_OT2Uhgck6A
+ test-linux64-shippable/opt-talos-dromaeojs-profiling-e10s: E0t7Tdz-QUGkaYXWq0itLg
+ test-linux64-shippable/opt-talos-g1-e10s: Z8FpaR0yR-aMKJ6C3rSA8Q
+ test-linux64-shippable/opt-talos-g1-profiling-e10s: eAU0Fq_QRUWJMPQdkWZD5g
+ test-linux64-shippable/opt-talos-g3-e10s: GfBf46_7TUmLzQKlb782Qw
+ test-linux64-shippable/opt-talos-g3-profiling-e10s: GcQ9Pa87RkufjoRzX9tjBw
+ test-linux64-shippable/opt-talos-g4-e10s: GztmJ_HWRXaasFILAjzirQ
+ test-linux64-shippable/opt-talos-g4-profiling-e10s: C7K01fmZQ_mgYAxWpOOOfw
+ test-linux64-shippable/opt-talos-g5-e10s: RjxJkykwTtyDiKzzpftbdw
+ test-linux64-shippable/opt-talos-g5-profiling-e10s: YHIXhi8nRa2Csb4AEH3alw
+ test-linux64-shippable/opt-talos-motionmark-profiling-e10s: DSLHDAjNT7KX_PNtBZCMTA
+ test-linux64-shippable/opt-talos-other-e10s: MLmuQdj5T9mdONNXfsHWag
+ test-linux64-shippable/opt-talos-other-profiling-e10s: fPZrGfytQIO9P3cXEUU_pg
+ test-linux64-shippable/opt-talos-perf-reftest-e10s: SoD2mGdhRrGjFYWY2SOZxg
+ test-linux64-shippable/opt-talos-perf-reftest-profiling-e10s: DCYIajR8QdimIl1E8GDV4Q
+ test-linux64-shippable/opt-talos-perf-reftest-singletons-e10s: XbWX3XXASneY4R_Xm4OCEg
+ test-linux64-shippable/opt-talos-perf-reftest-singletons-profiling-e10s: PE-VlDF3SKqKJEd1RDRfVw
+ test-linux64-shippable/opt-talos-realworld-webextensions-e10s: EHenMLZ2T0yY5G2SnKCXIw
+ test-linux64-shippable/opt-talos-realworld-webextensions-profiling-e10s: OerJ7qpjS4uTG-AXNWKjRA
+ test-linux64-shippable/opt-talos-sessionrestore-many-windows-e10s: eTTit4OPRH-ooBk2oiZ_xw
+ test-linux64-shippable/opt-talos-sessionrestore-many-windows-profiling-e10s: DmcreMX5SWeyZizayIcU6A
+ test-linux64-shippable/opt-talos-svgr-e10s: b-qshpBeRe2cfx-9nYX4Cw
+ test-linux64-shippable/opt-talos-svgr-profiling-e10s: MCyOJyKMSPSCTpMARX8sWA
+ test-linux64-shippable/opt-talos-tabswitch-e10s: baC3x-uWTvmUh9gLOIkL8w
+ test-linux64-shippable/opt-talos-tabswitch-profiling-e10s: LnEfmO3XRX2SFKwvdJiNZQ
+ test-linux64-shippable/opt-talos-tp5o-e10s: SSwpl4UQRyir7Rkh38PBHw
+ test-linux64-shippable/opt-talos-tp5o-profiling-e10s: AYpay9M3RWyfT96OUbh-7w
+ test-linux64-shippable/opt-talos-webgl-e10s: ZSsreUztQLOLY4Mt-pw4OA
+ test-linux64-shippable/opt-web-platform-tests-wdspec-e10s-1: TGVXnkNmQY21H5tgr2FVgA
+ test-linux64-shippable/opt-web-platform-tests-wdspec-e10s-2: ZGOTYSmhQ5uTcUcCuwDRLQ
+ test-linux64-shippable/opt-web-platform-tests-wdspec-e10s-3: RsCtn0EGQWSazuZzRVDsMw
+ test-linux64-tsan/opt-mochitest-e10s-1: NswlJaTnRrKnc24cxoqb0A
+ test-linux64-tsan/opt-mochitest-e10s-10: Sh0o4uKaTNaitbkwauNrPw
+ test-linux64-tsan/opt-mochitest-e10s-11: dJYpQohYRzmbcr7i3GqVew
+ test-linux64-tsan/opt-mochitest-e10s-12: cy1l0t2RRDOZY9mHpuwuwg
+ test-linux64-tsan/opt-mochitest-e10s-13: E98hBl86RCyXwq9pjzE-iw
+ test-linux64-tsan/opt-mochitest-e10s-14: MNgt3SINSrGCXNTP300DFw
+ test-linux64-tsan/opt-mochitest-e10s-15: C6MG48SHQui3Ff9AVnIm0Q
+ test-linux64-tsan/opt-mochitest-e10s-16: dGxQwibHT4G3itHWmrn_Wg
+ test-linux64-tsan/opt-mochitest-e10s-17: DrQjFj9ITp6qAkZp-HlWXA
+ test-linux64-tsan/opt-mochitest-e10s-18: Zrw7MkrySgmDVuIAw9GITA
+ test-linux64-tsan/opt-mochitest-e10s-19: cT_6iiScTNCnEowUw28tNQ
+ test-linux64-tsan/opt-mochitest-e10s-2: WeVZeEchQXC0iuJGhIaEVw
+ test-linux64-tsan/opt-mochitest-e10s-20: fxQ8_upETFqByMImrWQHTA
+ test-linux64-tsan/opt-mochitest-e10s-3: LvqmkJ2fTGWAzy-6LkMdRQ
+ test-linux64-tsan/opt-mochitest-e10s-4: HpfK47N6QiiW0M7nLgNzhQ
+ test-linux64-tsan/opt-mochitest-e10s-5: VFHf5QycRViKLXqNOk-Rzw
+ test-linux64-tsan/opt-mochitest-e10s-6: P_RddXsQQaWxslUfsNam5g
+ test-linux64-tsan/opt-mochitest-e10s-7: JrdP_sR_RYabEZiMScFUAA
+ test-linux64-tsan/opt-mochitest-e10s-8: FasBFJp5TbOXbanpszrW0A
+ test-linux64-tsan/opt-mochitest-e10s-9: fk6-MZYXSBODw-Ozvfg_1A
+ test-linux64-tsan/opt-xpcshell-e10s-1: LY7VZ_R4S3aa8HMU3tYNIA
+ test-linux64-tsan/opt-xpcshell-e10s-2: fVIjNap0SoSt0LSDAOjaZA
+ test-linux64-tsan/opt-xpcshell-e10s-3: LwKL4CdaR8uhfJIs_yUC2Q
+ test-linux64-tsan/opt-xpcshell-e10s-4: BStjpRqKTDaxCrXG2_BUtw
+ test-linux64-tsan/opt-xpcshell-e10s-5: EqXEaR_3RwiJlxjedpWUVw
+ test-linux64-tsan/opt-xpcshell-e10s-6: MGAdFxrWQ_GWoIbQJKe_aA
+ test-linux64-tsan/opt-xpcshell-e10s-7: C_nG8UA6RI6-nCkxcvHqQw
+ test-linux64-tsan/opt-xpcshell-e10s-8: HNpzT6tbSYm4fquPRVOXbQ
+ test-linux64/debug-marionette-e10s: BsfYhAJRTNKQpjfHkL6H9w
+ test-linux64/debug-web-platform-tests-wdspec-e10s-1: UEmuQTogQ-qk-Dy8v5VoMQ
+ test-linux64/debug-web-platform-tests-wdspec-e10s-2: PMFqv6TUSWKGOrOh9fJxfg
+ test-linux64/debug-web-platform-tests-wdspec-e10s-3: dIfU8U6MTYqRKsFD7k8qiQ
+ test-linux64/opt-marionette-e10s: IiPwXuQ6RMmVcJ_NSeWu9w
+ test-linux64/opt-raptor-ares6-firefox-e10s: QLZo03KaRDyVaSywo14Vfg
+ test-linux64/opt-raptor-assorted-dom-firefox-e10s: Y3eV2BGGQFC-Ix_TkpqBFw
+ test-linux64/opt-raptor-jetstream2-firefox-e10s: XKM92pFETVKkkH2yDoDb8g
+ test-linux64/opt-raptor-motionmark-animometer-firefox-e10s: WZO_R-6jR_mG1iaNsN5vFg
+ test-linux64/opt-raptor-motionmark-htmlsuite-firefox-e10s: Sv0NnM0aSPy5n8tuSjz1Jw
+ test-linux64/opt-raptor-speedometer-firefox-e10s: AFWltKXETlG8s5Lo_PWM-w
+ test-linux64/opt-raptor-stylebench-firefox-e10s: Gf28RtlTQSqLh_DSa0lEzA
+ test-linux64/opt-raptor-sunspider-firefox-e10s: YtXjyrrCRS27KdWO1ArhgQ
+ test-linux64/opt-raptor-tp6-1-firefox-cold-e10s: GxKS6c-mQzWDptU5mR4asA
+ test-linux64/opt-raptor-tp6-1-firefox-e10s: ApLAGCnsSJOESU_zWtaMiw
+ test-linux64/opt-raptor-tp6-10-firefox-cold-e10s: B11czWKwSKuxXNtXb0cPrQ
+ test-linux64/opt-raptor-tp6-10-firefox-e10s: c_Vcv4G9RiKO5sLcLzdqGA
+ test-linux64/opt-raptor-tp6-11-firefox-cold-e10s: ZFC8-NSUT0WAHXyARPeHkw
+ test-linux64/opt-raptor-tp6-12-firefox-cold-e10s: SGTw0EytRAWi3giUejY7JA
+ test-linux64/opt-raptor-tp6-13-firefox-cold-e10s: Iyuss-76QkGMSJEszIc8Rg
+ test-linux64/opt-raptor-tp6-14-firefox-cold-e10s: BQKRxBytSUydeyIs7B3nGQ
+ test-linux64/opt-raptor-tp6-15-firefox-cold-e10s: C1AjkrEOTFqQK16ppPpQ5Q
+ test-linux64/opt-raptor-tp6-16-firefox-cold-e10s: Rrg75-4qQK6cDKDXieGINA
+ test-linux64/opt-raptor-tp6-17-firefox-cold-e10s: JAjrAtUQRPa4TE0d7Q_VTw
+ test-linux64/opt-raptor-tp6-18-firefox-cold-e10s: JXvDlTSQTx6IWsd_15cukA
+ test-linux64/opt-raptor-tp6-19-firefox-cold-e10s: RdCvUN9wSGKTCcSt8OPOuw
+ test-linux64/opt-raptor-tp6-2-firefox-cold-e10s: JmGutBUhS0-B-x71gr2bAA
+ test-linux64/opt-raptor-tp6-2-firefox-e10s: C0dUiXxyQ-Kj7JqMXsRmjQ
+ test-linux64/opt-raptor-tp6-20-firefox-cold-e10s: PW5TZkeKQSatPcJJ8DuYwg
+ test-linux64/opt-raptor-tp6-21-firefox-cold-e10s: YA0RewM9Q6aQZiRhECoaKg
+ test-linux64/opt-raptor-tp6-22-firefox-cold-e10s: Fo1v-gq2T86gybH40FaC_A
+ test-linux64/opt-raptor-tp6-23-firefox-cold-e10s: UWSduq70R4KHkFKICw7_tg
+ test-linux64/opt-raptor-tp6-24-firefox-cold-e10s: Lm7RuEIFT0OFFtuL_oWyLw
+ test-linux64/opt-raptor-tp6-25-firefox-cold-e10s: GvJbhEYJSfGR2L_TjTTbvA
+ test-linux64/opt-raptor-tp6-26-firefox-cold-e10s: MXr_P2voRFaNWYWMu4GWwQ
+ test-linux64/opt-raptor-tp6-27-firefox-cold-e10s: Zb-KFdfcSuOqZbXcZPD1mg
+ test-linux64/opt-raptor-tp6-28-firefox-cold-e10s: epXJwh6dTP2JQ812S6fThw
+ test-linux64/opt-raptor-tp6-29-firefox-cold-e10s: EaI1575ZRNSw6NJciFK5Jg
+ test-linux64/opt-raptor-tp6-3-firefox-cold-e10s: Si1Ge_bnSpi0UYImefNueg
+ test-linux64/opt-raptor-tp6-3-firefox-e10s: T84cP3eGSN6PklZ6_PTrNw
+ test-linux64/opt-raptor-tp6-30-firefox-cold-e10s: d-AQG9mMQ-CeHSAWBFI6VA
+ test-linux64/opt-raptor-tp6-4-firefox-cold-e10s: FaUU-MRbQiqXRXBnT1IUEw
+ test-linux64/opt-raptor-tp6-4-firefox-e10s: PHwHE-asQ_qiHAH6VJ3LLg
+ test-linux64/opt-raptor-tp6-5-firefox-cold-e10s: Y3yvn3z8SSiWjo8-Ok4I2Q
+ test-linux64/opt-raptor-tp6-5-firefox-e10s: MGAX-w3ARNGv_jz0Q0lptQ
+ test-linux64/opt-raptor-tp6-6-firefox-cold-e10s: JCNEcMcjTziPEUiWDJKJRA
+ test-linux64/opt-raptor-tp6-6-firefox-e10s: IXt5klkYTMecL9oxcEiuYQ
+ test-linux64/opt-raptor-tp6-7-firefox-cold-e10s: C2mN_IlHQRKT63gTAyxK6g
+ test-linux64/opt-raptor-tp6-7-firefox-e10s: WNpGllm4QVeZ4eigVDm_Lg
+ test-linux64/opt-raptor-tp6-8-firefox-cold-e10s: f8PEESldTk65FRdfG0WeeA
+ test-linux64/opt-raptor-tp6-8-firefox-e10s: O2oRd832RGCksCAbsGAm1w
+ test-linux64/opt-raptor-tp6-9-firefox-cold-e10s: BLnH8-1ZRGqneHNKXB07tw
+ test-linux64/opt-raptor-tp6-9-firefox-e10s: f_CVBA-AQYu7uC7DPjae3w
+ test-linux64/opt-raptor-tp6-binast-1-firefox-e10s: Tmk_KdNSSey9jvcDKuN2iQ
+ test-linux64/opt-raptor-unity-webgl-firefox-e10s: QH0km9tRR9ehHNnPYPhKIQ
+ test-linux64/opt-raptor-wasm-godot-baseline-firefox-e10s: V6sUoQNLTh-Wq9808oc1pA
+ test-linux64/opt-raptor-wasm-godot-cranelift-firefox-e10s: AqsFshRcSoaFbc_0LqKOuQ
+ test-linux64/opt-raptor-wasm-godot-firefox-e10s: eCZ2DJbVQYaCo-wtv6IQ8w
+ test-linux64/opt-raptor-wasm-godot-ion-firefox-e10s: J4raHJ1sQN-3LYlUBndcWw
+ test-linux64/opt-raptor-wasm-misc-baseline-firefox-e10s: W1RWXGuwRVaU6zoAStfL-A
+ test-linux64/opt-raptor-wasm-misc-cranelift-firefox-e10s: bkI0lJK_SIGgxE79JVWPBg
+ test-linux64/opt-raptor-wasm-misc-firefox-e10s: BICrs0dYT3mZr9K4sI9l0Q
+ test-linux64/opt-raptor-wasm-misc-ion-firefox-e10s: fawYpVtaSiGxsK41E6T2Iw
+ test-linux64/opt-raptor-webaudio-firefox-e10s: PXrw4cObTVm08ykDx50mZw
+ test-linux64/opt-raptor-youtube-playback-firefox-e10s: VlfyjS6JRmG09yeBY0PSIw
+ test-linux64/opt-talos-bcv-e10s: Ay8yMMyERe-zFgCKvdEKVg
+ test-linux64/opt-talos-chrome-e10s: TPpI4NUZTX2KISiNTECneQ
+ test-linux64/opt-talos-damp-e10s: MdorZUfxSvKm3BCIEIg4lQ
+ test-linux64/opt-talos-dromaeojs-e10s: WEvrUccjRFapOxKmuJCoWw
+ test-linux64/opt-talos-g1-e10s: Wh16qsINQTSL1J3fv4Xm7g
+ test-linux64/opt-talos-g3-e10s: AbJj_8xSSvibIvitur0C_A
+ test-linux64/opt-talos-g4-e10s: FDD0cBQ3Q6KLwTEVgvrgHw
+ test-linux64/opt-talos-g5-e10s: ImuBk0QtTFqmkL9PmcYigQ
+ test-linux64/opt-talos-other-e10s: eWVflALpTEaFitWIUwp2ug
+ test-linux64/opt-talos-perf-reftest-e10s: Q8WWDqhnRROv4PPNj0LMXw
+ test-linux64/opt-talos-perf-reftest-singletons-e10s: V2cOMHWpQWGDUMdWHjVHGw
+ test-linux64/opt-talos-realworld-webextensions-e10s: cYtkvnpNQuO6Q4UwYLO0Qg
+ test-linux64/opt-talos-sessionrestore-many-windows-e10s: KngWSkFmQAyIWcO9jurlmw
+ test-linux64/opt-talos-svgr-e10s: S2UV5jC1Ty2nq9mfcPOcHg
+ test-linux64/opt-talos-tabswitch-e10s: eL6246JYSrC-7Imom9EfIw
+ test-linux64/opt-talos-tp5o-e10s: dlZ0olWwTZ2Pg4bZLW5_qA
+ test-linux64/opt-talos-webgl-e10s: ESesw8aZRzyAfB6B1mmNkA
+ test-linux64/opt-web-platform-tests-wdspec-e10s-1: GCer21pWRiOXWEiEyl1_mw
+ test-linux64/opt-web-platform-tests-wdspec-e10s-2: c3zGl7-VTza3LQl-WiTwog
+ test-linux64/opt-web-platform-tests-wdspec-e10s-3: NAs0uIkfQXOjbmP3OzYY5A
+ test-macosx1014-64-qr/debug-crashtest-e10s: F5Lc_zXEQPiGRonaC99fQg
+ test-macosx1014-64-qr/debug-reftest-e10s-1: ZBb1BAjSSRa7-PkejtlxcA
+ test-macosx1014-64-qr/debug-reftest-e10s-2: WMc-SSbZT6egmcsbR9vOfQ
+ test-macosx1014-64-qr/debug-reftest-e10s-3: a0amb-ImR1WILJ3Kbnj8CQ
+ test-macosx1014-64-qr/debug-reftest-e10s-4: XNAyEocLRxSX92ZuSn02rg
+ test-macosx1014-64-qr/debug-reftest-e10s-5: PPLuFPfOR8ykuvMVcZ-Maw
+ test-macosx1014-64-qr/debug-reftest-e10s-6: IoEF9i8PTm6kZQBeaGKBtA
+ test-macosx1014-64-shippable-qr/opt-crashtest-e10s: NpgRV8YlTQmql8Zfl_huUQ
+ test-macosx1014-64-shippable-qr/opt-reftest-e10s-1: DJy-tZuLSKC0GhqqFKwsUA
+ test-macosx1014-64-shippable-qr/opt-reftest-e10s-2: FvXmQptbQCycstJ470IX5w
+ test-macosx1014-64-shippable-qr/opt-reftest-e10s-3: aFjCogMTSWCsGgmHqqacuA
+ test-macosx1014-64-shippable/opt-awsy-base-e10s: Tvi-6RlfSyuYmaOCw1DsWQ
+ test-macosx1014-64-shippable/opt-awsy-e10s: Jczkn7IBRziqIMrCgzvTRQ
+ test-macosx1014-64-shippable/opt-awsy-tp6-e10s: JyLWWC24RMitT9SyjKobrQ
+ test-macosx1014-64-shippable/opt-browser-screenshots-e10s: QIWDBfe9TUK6IuiWSA72Ig
+ test-macosx1014-64-shippable/opt-browsertime-tp6-chrome-cold-amazon-e10s: cWhVC_hST_Ch8HY7Z7suew
+ test-macosx1014-64-shippable/opt-browsertime-tp6-firefox-amazon-e10s: C2CwZD9sTGymW5hZICNwhw
+ test-macosx1014-64-shippable/opt-browsertime-tp6-firefox-cold-amazon-e10s: NiyYtLYyTdiuUXHXchy-dA
+ test-macosx1014-64-shippable/opt-browsertime-tp6-profiling-firefox-amazon-e10s: KQX78xfjSHC2ksF3fu-JFA
+ test-macosx1014-64-shippable/opt-browsertime-tp6-profiling-firefox-cold-amazon-e10s: FhxldskQSPS8SjiZT4spkg
+ test-macosx1014-64-shippable/opt-cppunit-1proc: CvPGCUD8TP6vR2W1nEBo0A
+ test-macosx1014-64-shippable/opt-crashtest-e10s: RYeaaUNOQNmpVmDCRBeOmg
+ test-macosx1014-64-shippable/opt-firefox-ui-functional-local-e10s: DLgY5p8fQR6pVFTYeYPNkw
+ test-macosx1014-64-shippable/opt-firefox-ui-functional-remote-e10s: ddn3of0ySOG67zucCGmLNA
+ test-macosx1014-64-shippable/opt-gtest-1proc: TtYcGYLtR0eBZ1rjNYVrfA
+ test-macosx1014-64-shippable/opt-jittest-1proc: PaXly2kuQ9uoz7ktPq5i0A
+ test-macosx1014-64-shippable/opt-jsreftest-e10s-1: ICXfqlFXQEmH7Mft9dNv7w
+ test-macosx1014-64-shippable/opt-jsreftest-e10s-2: GzGE-Ev6QiuS4abeNNnwCA
+ test-macosx1014-64-shippable/opt-marionette-e10s: VZUyUmxHS1CzkneQHMCjwg
+ test-macosx1014-64-shippable/opt-mochitest-a11y-1proc: TNLORvTIRqCUs0Ld2-jWHg
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-1: IED2fOc7RT6AO5AQka0Rog
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-2: YtxRKWnkQuSv6GdBXAQZ1g
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-3: MpNY_56pTaqvo1GVkh_SiA
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-4: MXtVB2LcTTiLhVVQmUe-bA
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-5: DAr9XS0CRC2B79GHNSlEoA
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-6: R1SfIqbkQ3inQs6utsyF4Q
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-7: UI1f9ohZQgi38RAZSyNAYQ
+ test-macosx1014-64-shippable/opt-mochitest-chrome-1proc-1: Fn_bCykqRq-_qH-eg26JJw
+ test-macosx1014-64-shippable/opt-mochitest-chrome-1proc-2: I-C7di2ZSdCcjD8stGIhfA
+ test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-1: SCveg2V_Tm-idCIjl8uIzQ
+ test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-2: IdOvjWnjR52rgptopkG6zQ
+ test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-3: O9lNdM76Q-S3MIYCo62ufg
+ test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-4: WTX2mtOiTN2C9R6PlrGx6Q
+ test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-5: M1-FlXSyTqSojQGpG0J5lw
+ test-macosx1014-64-shippable/opt-mochitest-e10s-1: fz9REd7WT2GVJUAUidlAIA
+ test-macosx1014-64-shippable/opt-mochitest-e10s-2: HBUVoCARS3i6DbalG2BXoA
+ test-macosx1014-64-shippable/opt-mochitest-e10s-3: BUq9cUykSa2-l25IGScUKQ
+ test-macosx1014-64-shippable/opt-mochitest-e10s-4: E87jE9PmRCmFh9UfkQ_Nlw
+ test-macosx1014-64-shippable/opt-mochitest-e10s-5: JIDVXFaATN-QqboP_1airw
+ test-macosx1014-64-shippable/opt-mochitest-gpu-e10s: SGGqREKxTXSmCmAeVawn_w
+ test-macosx1014-64-shippable/opt-mochitest-media-e10s-1: La_VT_uBTF2GmSCXm51A5g
+ test-macosx1014-64-shippable/opt-mochitest-media-e10s-2: L_72ka1_TT-nPEs07u4JDQ
+ test-macosx1014-64-shippable/opt-mochitest-media-spi-e10s-1: AgfN3ncHQ767WN5AkG420w
+ test-macosx1014-64-shippable/opt-mochitest-media-spi-e10s-2: KCSG_jZhScyCUawUA2zTKg
+ test-macosx1014-64-shippable/opt-mochitest-remote-e10s: GzcaTjfVSpeXLVurKpu2JQ
+ test-macosx1014-64-shippable/opt-mochitest-webgl1-core-e10s: UMelHyEpTuK3TcSK6aTsMg
+ test-macosx1014-64-shippable/opt-mochitest-webgl1-ext-e10s: COf-sIlNRjKlHRUXp2XxWg
+ test-macosx1014-64-shippable/opt-mochitest-webgl2-core-e10s: TKFnKdRVQ7-H2dsFuA4fDQ
+ test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-1: SbKkXyF6SCa_X0i6n5OhWA
+ test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-2: GJiV1UvzQimGbnxTIIBWOQ
+ test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-3: YXkQeRslTS62estDUjZWQg
+ test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-4: T0AcKcGoRnOTXiki70HLrw
+ test-macosx1014-64-shippable/opt-mochitest-webgpu-e10s: EuRiCjFdSby0Ybg-DzWlTw
+ test-macosx1014-64-shippable/opt-raptor-ares6-firefox-e10s: bRmbT-FPTE-yeqgpRZvU2w
+ test-macosx1014-64-shippable/opt-raptor-ares6-firefox-profiling-e10s: UMOEwximQGC74TeQ89fzUQ
+ test-macosx1014-64-shippable/opt-raptor-jetstream2-firefox-e10s: CC1Yy_bAT8-NtSKFF7QDfg
+ test-macosx1014-64-shippable/opt-raptor-jetstream2-firefox-profiling-e10s: JOBUV7t8SRGemKiKrbbulg
+ test-macosx1014-64-shippable/opt-raptor-motionmark-animometer-firefox-e10s: Frj-sQc8R-m7uBXX9ym9uw
+ test-macosx1014-64-shippable/opt-raptor-motionmark-animometer-firefox-profiling-e10s: SzG91SiHSwWGJkimAsspKA
+ test-macosx1014-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: dxivJGzzQsieSWNIHIdA0g
+ test-macosx1014-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-profiling-e10s: XKiR-Hf1REuq1-q4DbLPfg
+ test-macosx1014-64-shippable/opt-raptor-speedometer-firefox-e10s: DlLiI71hSa2F8bxOrC7YtA
+ test-macosx1014-64-shippable/opt-raptor-speedometer-firefox-profiling-e10s: TzTlnt9aTPCw7JwhM1nFMw
+ test-macosx1014-64-shippable/opt-raptor-stylebench-firefox-e10s: Mwr2gxyYSHSQB7Fs1gX81Q
+ test-macosx1014-64-shippable/opt-raptor-stylebench-firefox-profiling-e10s: JfJxPOjiStCFKu3gb_jLuA
+ test-macosx1014-64-shippable/opt-raptor-sunspider-firefox-e10s: FWA2X2nEToWBjBe057mdDw
+ test-macosx1014-64-shippable/opt-raptor-sunspider-firefox-profiling-e10s: GhV3XjY3Toa8-u3-g4CZBg
+ test-macosx1014-64-shippable/opt-raptor-tp6-1-firefox-cold-e10s: MFEL74SaRJq8Wwxi25sSxQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-1-firefox-e10s: CY3blSLMSseA-Q5mhBlOeg
+ test-macosx1014-64-shippable/opt-raptor-tp6-1-firefox-profiling-e10s: WIaguARSQ9ukXBzYQT5LCw
+ test-macosx1014-64-shippable/opt-raptor-tp6-10-firefox-cold-e10s: crBJ3EDZQnGtKBQfO7Kk7g
+ test-macosx1014-64-shippable/opt-raptor-tp6-10-firefox-e10s: DmjvO_20ReCxWBRNZIpEXA
+ test-macosx1014-64-shippable/opt-raptor-tp6-10-firefox-profiling-e10s: L0SRbg02STin3ZzDccR79Q
+ test-macosx1014-64-shippable/opt-raptor-tp6-11-firefox-cold-e10s: Jwq3refCRkuYab6IFLw-lw
+ test-macosx1014-64-shippable/opt-raptor-tp6-12-firefox-cold-e10s: PT25cnVjR3GoY7GVRxMeEA
+ test-macosx1014-64-shippable/opt-raptor-tp6-13-firefox-cold-e10s: UFp3khqfTqOps49Hi-p5jQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-14-firefox-cold-e10s: IxnlZc7PTYqAsymyrqp-fg
+ test-macosx1014-64-shippable/opt-raptor-tp6-15-firefox-cold-e10s: a27AruXUSL-WMbXHZQ9o4w
+ test-macosx1014-64-shippable/opt-raptor-tp6-16-firefox-cold-e10s: IbQFa6HITGGrWkK7hSRi-w
+ test-macosx1014-64-shippable/opt-raptor-tp6-17-firefox-cold-e10s: AAUafYPNTvulSKxwvwKAvg
+ test-macosx1014-64-shippable/opt-raptor-tp6-18-firefox-cold-e10s: cfn4KyIyQpG045J_W47Wgw
+ test-macosx1014-64-shippable/opt-raptor-tp6-19-firefox-cold-e10s: amPGFNbhSgGh65_jjR4fdg
+ test-macosx1014-64-shippable/opt-raptor-tp6-2-firefox-cold-e10s: G-Lv1Z8DToaDLlh80KFDhQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-2-firefox-e10s: alyvItLeSBawP8tcfA45lw
+ test-macosx1014-64-shippable/opt-raptor-tp6-2-firefox-profiling-e10s: OA11CGe3SWiAm7giY8rtJA
+ test-macosx1014-64-shippable/opt-raptor-tp6-20-firefox-cold-e10s: Wca6_7CKQGOu09TJ5y3HqA
+ test-macosx1014-64-shippable/opt-raptor-tp6-21-firefox-cold-e10s: epMwnoufQS-KP2-n80pDNw
+ test-macosx1014-64-shippable/opt-raptor-tp6-22-firefox-cold-e10s: LgzAdYObR7iWJNLCL2C1sg
+ test-macosx1014-64-shippable/opt-raptor-tp6-23-firefox-cold-e10s: XUsRtVuAQvmfnRzaTnZl5g
+ test-macosx1014-64-shippable/opt-raptor-tp6-24-firefox-cold-e10s: PP16oz2iR4m0cAQEqrGbzQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-25-firefox-cold-e10s: dqXhEh15RYWX9t7RZap46g
+ test-macosx1014-64-shippable/opt-raptor-tp6-26-firefox-cold-e10s: TwC3M6c2Q3KxRgswNhcJFQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-27-firefox-cold-e10s: blhJ0NhhRla_7wMWC1lOWQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-28-firefox-cold-e10s: VMZvknO4Sg-uWC3tdsfU1g
+ test-macosx1014-64-shippable/opt-raptor-tp6-29-firefox-cold-e10s: D77kKSBjQB6aUTwshF9SQg
+ test-macosx1014-64-shippable/opt-raptor-tp6-3-firefox-cold-e10s: aOkwxS8DQ36kdnJ27xDtjg
+ test-macosx1014-64-shippable/opt-raptor-tp6-3-firefox-e10s: PNqbPVz7RS6C0Wya0CXPQA
+ test-macosx1014-64-shippable/opt-raptor-tp6-3-firefox-profiling-e10s: TxbGLHryQxmMEPSclHOqgQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-30-firefox-cold-e10s: dMV2EfHxQ9yIkk5v1rAupQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-4-firefox-cold-e10s: cHpROPdwS--FC3iLEVsSYw
+ test-macosx1014-64-shippable/opt-raptor-tp6-4-firefox-e10s: Q090CM49R2GVlUScDR53Sg
+ test-macosx1014-64-shippable/opt-raptor-tp6-4-firefox-profiling-e10s: JlCw0r3SSJi4X1KFJ0gDKg
+ test-macosx1014-64-shippable/opt-raptor-tp6-5-firefox-cold-e10s: c-FeSwqzRO-dcuBxb86lrw
+ test-macosx1014-64-shippable/opt-raptor-tp6-5-firefox-e10s: atjY2bFfQkeKTo9X6yd07g
+ test-macosx1014-64-shippable/opt-raptor-tp6-5-firefox-profiling-e10s: JXsi-V2QRFK46YZoLg4NvA
+ test-macosx1014-64-shippable/opt-raptor-tp6-6-firefox-cold-e10s: AzRsbFbmQW2RTVC_16mx8Q
+ test-macosx1014-64-shippable/opt-raptor-tp6-6-firefox-e10s: G5w0X9LLRQCyQ8Rd_GtaFQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-6-firefox-profiling-e10s: CJUdGUCeRD27F46zv99GVw
+ test-macosx1014-64-shippable/opt-raptor-tp6-7-firefox-cold-e10s: RegwYDjgS9G99q6pQ6JiYw
+ test-macosx1014-64-shippable/opt-raptor-tp6-7-firefox-e10s: XZcwJPTVQ2uT7mx2rWiUGw
+ test-macosx1014-64-shippable/opt-raptor-tp6-7-firefox-profiling-e10s: QomXCa7uQoST_qKSU9YthA
+ test-macosx1014-64-shippable/opt-raptor-tp6-8-firefox-cold-e10s: OIzLKHDCRHWhX79ftGUArg
+ test-macosx1014-64-shippable/opt-raptor-tp6-8-firefox-e10s: d_teIiq8QIOqJo89M5u6nQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-8-firefox-profiling-e10s: JXActjOfTg6LRPfU0lBBrw
+ test-macosx1014-64-shippable/opt-raptor-tp6-9-firefox-cold-e10s: eotDh4IdTlSLWErJrPOR0w
+ test-macosx1014-64-shippable/opt-raptor-tp6-9-firefox-e10s: NadjezonTp6oFtIJ-ZBj2w
+ test-macosx1014-64-shippable/opt-raptor-tp6-9-firefox-profiling-e10s: OMdsPVaPTp2Y96a5lGfuKw
+ test-macosx1014-64-shippable/opt-raptor-tp6-binast-1-firefox-e10s: WNm5Z0SFQ9SlG4UbIY2r4A
+ test-macosx1014-64-shippable/opt-raptor-wasm-godot-firefox-e10s: C_tAXbqBSvWWtA3Hnd4VBw
+ test-macosx1014-64-shippable/opt-raptor-wasm-godot-firefox-profiling-e10s: IurJGZyGQCucPSZc-woE8Q
+ test-macosx1014-64-shippable/opt-raptor-webaudio-firefox-e10s: RgmEC6VHTDu1gpxxRIRPWg
+ test-macosx1014-64-shippable/opt-raptor-webaudio-firefox-profiling-e10s: fh4_XeDtTgqfaFjG4gfQlw
+ test-macosx1014-64-shippable/opt-raptor-youtube-playback-firefox-e10s: RDJ7l75KS_280ykuKa4DKw
+ test-macosx1014-64-shippable/opt-raptor-youtube-playback-firefox-profiling-e10s: QwwVsU_TTQ2rOhdXCWy9vA
+ test-macosx1014-64-shippable/opt-raptor-youtube-playback-h264-power-firefox-e10s: fwDE4teqSiysiJFK04EFJw
+ test-macosx1014-64-shippable/opt-raptor-youtube-playback-v9-power-firefox-e10s: ROAsg9ZfQAiS7dB-3H8Ezw
+ test-macosx1014-64-shippable/opt-reftest-e10s-1: ICScLa_qTQ--RMULihSizA
+ test-macosx1014-64-shippable/opt-reftest-e10s-2: UeAl_WiIQUatZfXnSDiUeg
+ test-macosx1014-64-shippable/opt-reftest-e10s-3: S-Q4ydYCSPGxyefADCYufA
+ test-macosx1014-64-shippable/opt-talos-bcv-e10s: EAghZ9FyTmmPmVqd8pnEKA
+ test-macosx1014-64-shippable/opt-talos-bcv-profiling-e10s: Z5tS7ADyReuS-l-O5MuX8Q
+ test-macosx1014-64-shippable/opt-talos-chrome-e10s: KtLLE_uXSWi6sQ262Jo9Zw
+ test-macosx1014-64-shippable/opt-talos-chrome-profiling-e10s: PigKpjS1RXeVyjfKYd2sqg
+ test-macosx1014-64-shippable/opt-talos-damp-e10s: OYM-b7o2R7-xEt2kIkoJtg
+ test-macosx1014-64-shippable/opt-talos-dromaeojs-e10s: ETkHQ7nSTAKXKg1mZ7lcmw
+ test-macosx1014-64-shippable/opt-talos-dromaeojs-profiling-e10s: H1r0-6oeQAuBWzFbGt81pg
+ test-macosx1014-64-shippable/opt-talos-g1-e10s: WiwSjTTdSGuIt_WYxXOEOA
+ test-macosx1014-64-shippable/opt-talos-g1-profiling-e10s: KgBlZ_TQQ8-A_hlJssnpCw
+ test-macosx1014-64-shippable/opt-talos-g3-profiling-e10s: JjRHfQr-Qra7ffsfXnvs2w
+ test-macosx1014-64-shippable/opt-talos-g4-e10s: MNz3PGARQo-bz3N6JWTQ3A
+ test-macosx1014-64-shippable/opt-talos-g4-profiling-e10s: LsRD0GMlTC-T5Y4qZ-IHEg
+ test-macosx1014-64-shippable/opt-talos-g5-e10s: PkcWQ-w5RGGQfSNNhdkbcQ
+ test-macosx1014-64-shippable/opt-talos-g5-profiling-e10s: XT9GIwV5TDSDTNUky3X_SQ
+ test-macosx1014-64-shippable/opt-talos-motionmark-profiling-e10s: cOUfMCl6RSuDLVfcHF-Kgg
+ test-macosx1014-64-shippable/opt-talos-other-e10s: aE86uo2gTWC6ZaqvAEAaLw
+ test-macosx1014-64-shippable/opt-talos-other-profiling-e10s: bbKXy5l1Slq-tpziAFo15Q
+ test-macosx1014-64-shippable/opt-talos-perf-reftest-e10s: I1gQMhEGTAmzftG_piKt4g
+ test-macosx1014-64-shippable/opt-talos-perf-reftest-profiling-e10s: eTwsKQp9T5qzBd2S8H9MZg
+ test-macosx1014-64-shippable/opt-talos-perf-reftest-singletons-e10s: RDuWbxm9S2ysBeEWAoLhVA
+ test-macosx1014-64-shippable/opt-talos-perf-reftest-singletons-profiling-e10s: N85Ai3DvQyaC7tmzarIfIg
+ test-macosx1014-64-shippable/opt-talos-realworld-webextensions-e10s: b57QTTSDQNG934Ltz2LwSA
+ test-macosx1014-64-shippable/opt-talos-realworld-webextensions-profiling-e10s: OBH-DqTWR4qPqBvVh_uC3w
+ test-macosx1014-64-shippable/opt-talos-sessionrestore-many-windows-e10s: HaVcjapUTBiZGNE2FbERAw
+ test-macosx1014-64-shippable/opt-talos-sessionrestore-many-windows-profiling-e10s: Pe6gYDSfSk-OUBhv46z3Fw
+ test-macosx1014-64-shippable/opt-talos-svgr-e10s: VwGGwRVzR664rzlOvkPGJQ
+ test-macosx1014-64-shippable/opt-talos-svgr-profiling-e10s: ACZGHcCkSom8fOlzLD6Qhg
+ test-macosx1014-64-shippable/opt-talos-tabswitch-profiling-e10s: YcLS4iiUSi6sSL5IsmE7Qg
+ test-macosx1014-64-shippable/opt-talos-tp5o-e10s: PTMSjO2fTGaF56YmvBuXzA
+ test-macosx1014-64-shippable/opt-talos-tp5o-profiling-e10s: ah9iCmw6QVyBK0yGnaMI7Q
+ test-macosx1014-64-shippable/opt-talos-webgl-e10s: T8WR_yAsSo-oiEdlJPU69w
+ test-macosx1014-64-shippable/opt-telemetry-tests-client-e10s: RgGDJdZhTbqnlowKyv2_eQ
+ test-macosx1014-64-shippable/opt-web-platform-tests-crashtests-e10s: RQvFvhQrS8unXmgKaI2r7w
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-1: c0v-tXMoQSygEozUBqxfqQ
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-10: BtIPRtFKRHOM-DkFjU62NA
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-11: faokeeJsQLyQtH6S0MLmDg
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-12: PQEWv8fyR1e1Ej7S7nemUA
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-2: FAYBJTM2Ru6bZagy2DcrYA
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-3: JKkmC-YLQJWyiPliEMS44g
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-4: UuSlwZk9RGOFVmE7LsMEhg
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-5: UBJ_7HFIQcyEtiX6tAH4Og
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-6: edXqGhnZSr60qyNmyDlJ-A
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-7: eKk-C4uxSXqipcyA09_4xQ
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-8: cm-G0eDHT_CEh84elaxFMw
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-9: eHKbCNPAQKqaNB0j05Sm7Q
+ test-macosx1014-64-shippable/opt-web-platform-tests-reftests-e10s-1: TPGpTKprRJa42LJ-sAmRxw
+ test-macosx1014-64-shippable/opt-web-platform-tests-reftests-e10s-2: YCMHeYl3R86sqYkE8cJrbQ
+ test-macosx1014-64-shippable/opt-web-platform-tests-reftests-e10s-3: fJqrFJLvRKq07jhyaurVow
+ test-macosx1014-64-shippable/opt-web-platform-tests-reftests-e10s-4: N8aYOcZOT0Wtm4xityZ2Ig
+ test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-e10s-1: Fdvelf_MT_itXzPN1jjOLA
+ test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-e10s-2: d-w6p-pjRie_5EwapkitQg
+ test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-e10s-3: ZZ9mctfTRvWPjTms-s7gKA
+ test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: RL3Q0ojfS_WJfRDbubVAGw
+ test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: TNgOdBetSWeUxDaJk2a8qA
+ test-macosx1014-64-shippable/opt-xpcshell-e10s-1: LskvOy6bR2W0GlcfXraEvQ
+ test-macosx1014-64-shippable/opt-xpcshell-e10s-2: C17wM9-gQXqqZcDOExV3Qg
+ test-macosx1014-64/debug-cppunit-1proc: WyHzdcEiRLWiJfOPNQbIrw
+ test-macosx1014-64/debug-crashtest-e10s: fqdVTYvpQ6WvVvYcl6jwBA
+ test-macosx1014-64/debug-firefox-ui-functional-local-e10s: CllJWuWnTC6EvIEJrq2AlA
+ test-macosx1014-64/debug-firefox-ui-functional-remote-e10s: TyVgpXgqTM62k06SMvRdyg
+ test-macosx1014-64/debug-gtest-1proc: Diowb7-SRp6eqiKB2GS3vA
+ test-macosx1014-64/debug-jittest-1proc-1: ST1Fqh5aRCuzZue8HpJdRA
+ test-macosx1014-64/debug-jittest-1proc-2: Y2adDgdhTLeUEEyF3VWgPA
+ test-macosx1014-64/debug-jittest-1proc-3: No8mM6esQJCuf16HMByB2A
+ test-macosx1014-64/debug-jsreftest-e10s-1: MpHZwjJjTf6JZ02fYw3dBg
+ test-macosx1014-64/debug-jsreftest-e10s-2: J5yv1W1_RjKcb9w0fK2T3g
+ test-macosx1014-64/debug-jsreftest-e10s-3: brbzAx1JTvCoZQh739K-VQ
+ test-macosx1014-64/debug-marionette-e10s: fnBi1dt3SZqwTF8rcsYPng
+ test-macosx1014-64/debug-mochitest-a11y-1proc: XSNLQpfgQIe_BjaUIr3Nhw
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-1: YyZPZER9Ssmokq1i5RhyGw
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-10: aBSbQ2CoS3S6h2uG7xEFKw
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-11: fDTAZnTpSaiPFee4evUpiA
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-12: AMWiNNqjRTCOErr7LvdIfQ
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-13: IpAe72WYTSaMoTyA_rDYBQ
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-14: J_tFfsx2SxCkiAMKSuUyig
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-15: A8G-gqRRTr6M7qSQ0fNrTg
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-16: NvSK29UCRj-iwvfzOQfpmA
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-2: c-Po84E_STa6FLzsno4YBg
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-3: SrtmQMVrSoejqrkZhIkcZg
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-4: ALDXCdriTsmxNLKT5mBlgA
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-5: GAQIGcERS2mgOQLNbZCgag
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-6: dImpreZSTrKEzAkEmiFmPA
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-7: GhhwlhYYQ1uU2PZpFKWT_A
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-8: QN78iv54TlOrCdm7bvrLiw
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-9: IrRQHdd4TRuv1Ba81oIdag
+ test-macosx1014-64/debug-mochitest-chrome-1proc-1: UX4FzhusQZy9vAbwcQw-iQ
+ test-macosx1014-64/debug-mochitest-chrome-1proc-2: S3QlLIGVQbKVvLVDXxNcMA
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-1: Cl3Y0KbTTPuNI44uRUSVeg
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-2: VO3oA7hNTuyc3Pmw6-sKmQ
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-3: DL1AUk7aSZiHOMTWsRKBfg
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-4: BDgR1G0jSBCa11Dyax7GRg
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-5: GieIfWQ3QSqJYHu-sykpog
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-6: AX2tXyoGRAmYwH0Uxi4KLQ
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-7: PA_rY4bbQHKdZUDv7GhH_g
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-8: AX8VvtMtS9CU4NGnmbyjMg
+ test-macosx1014-64/debug-mochitest-e10s-1: PgwNPb32TbWRP2msBM20uw
+ test-macosx1014-64/debug-mochitest-e10s-2: THYR_hGiRy6I51wwUN71Jg
+ test-macosx1014-64/debug-mochitest-e10s-3: J84Y4PKtT7uZxPGloD6MTA
+ test-macosx1014-64/debug-mochitest-e10s-4: HIfg6xMrQPWM8tW9-qEbHw
+ test-macosx1014-64/debug-mochitest-e10s-5: HQd3g2DXTs2l8reIjWrNnw
+ test-macosx1014-64/debug-mochitest-gpu-e10s: Zv-iIZsQTAik2EqHQvs9mg
+ test-macosx1014-64/debug-mochitest-media-e10s-1: Hag6_WdgQW2T1X_8xIH7eg
+ test-macosx1014-64/debug-mochitest-media-e10s-2: UmyWsxpLSf6vwLNxFlp2Bw
+ test-macosx1014-64/debug-mochitest-media-spi-e10s-1: V4VbammQQN--BQW2E1rQ6w
+ test-macosx1014-64/debug-mochitest-media-spi-e10s-2: LQW9MOrrTr2vjkuNV1TT7Q
+ test-macosx1014-64/debug-mochitest-remote-e10s: TksoLT2MQWyJGrC9PKBBeA
+ test-macosx1014-64/debug-mochitest-webgl1-core-e10s: PmeI2Nk_QPqveTm8CJa7Gg
+ test-macosx1014-64/debug-mochitest-webgl1-ext-e10s: aVatpCOsQXW2pztYflBJDA
+ test-macosx1014-64/debug-mochitest-webgl2-core-e10s: YY1SldiJQhOpmpMy7gAAbQ
+ test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-1: beSrmw0oTTSc4lZa1IDz-Q
+ test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-2: bACGmgBpSauqs7Ziq1YS3w
+ test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-3: cBhGk0BlS_SzmfgeXltZvw
+ test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-4: fpU404bpTeqtfRg1hewJxA
+ test-macosx1014-64/debug-mochitest-webgpu-e10s: EwIvdOhNQgqlUGGs74W0SA
+ test-macosx1014-64/debug-reftest-e10s-1: Hru1MNwQToqC9qVxjmdGKg
+ test-macosx1014-64/debug-reftest-e10s-2: cw4bqoOaT1uigMVMEWMTHw
+ test-macosx1014-64/debug-reftest-e10s-3: dV0u0siwRgOiiwa1aM6_0Q
+ test-macosx1014-64/debug-reftest-e10s-4: G6i9Es1AS8m8pmPepAZFQw
+ test-macosx1014-64/debug-telemetry-tests-client-e10s: MtZh44RoQZukLMzpRi_big
+ test-macosx1014-64/debug-web-platform-tests-crashtests-e10s: UrWHtu5MS6SHxktM3R04FQ
+ test-macosx1014-64/debug-web-platform-tests-e10s-1: MX1evKkGQIqpHDvr94IuoQ
+ test-macosx1014-64/debug-web-platform-tests-e10s-10: Box0VsSDTlWUPKaAGllqyA
+ test-macosx1014-64/debug-web-platform-tests-e10s-11: ezla5QXaSC2ga93BJKrm4w
+ test-macosx1014-64/debug-web-platform-tests-e10s-12: eZCEEUpuTrqOcEMcQpGDvA
+ test-macosx1014-64/debug-web-platform-tests-e10s-13: W1nzDRbhQh2h5gBbta9MEA
+ test-macosx1014-64/debug-web-platform-tests-e10s-14: Fo7uiCyXRIqFochI3rEgxQ
+ test-macosx1014-64/debug-web-platform-tests-e10s-15: T3Qre-1aQvSx6ps1JSYwwQ
+ test-macosx1014-64/debug-web-platform-tests-e10s-16: TdxcPtlJQoWTIP3e4cfhdA
+ test-macosx1014-64/debug-web-platform-tests-e10s-17: fwVbd1ssQjiJK9BNlfmyBw
+ test-macosx1014-64/debug-web-platform-tests-e10s-18: RU03PQfeS8yxLNa2HXFBUw
+ test-macosx1014-64/debug-web-platform-tests-e10s-19: fki8nxodTqKjlhaDZNJp2A
+ test-macosx1014-64/debug-web-platform-tests-e10s-2: Y6YIDq96Qh-ksL7ehjfFNg
+ test-macosx1014-64/debug-web-platform-tests-e10s-20: dRIFqpcrS06nXCXdIIY8sg
+ test-macosx1014-64/debug-web-platform-tests-e10s-3: Msi84u_YSx-InU4vdCkOOg
+ test-macosx1014-64/debug-web-platform-tests-e10s-4: dryLRBhIQFGblmPPA7-kSg
+ test-macosx1014-64/debug-web-platform-tests-e10s-5: CEWoLzw0QQWEkPuGvW1-Rg
+ test-macosx1014-64/debug-web-platform-tests-e10s-6: TH6FB6oLSgKfwaT0E_jP8w
+ test-macosx1014-64/debug-web-platform-tests-e10s-7: f2iYNcSpQv25MDdP1K-ZrA
+ test-macosx1014-64/debug-web-platform-tests-e10s-8: IVC22Y6vQ1-whYnE7bej6w
+ test-macosx1014-64/debug-web-platform-tests-e10s-9: RF0vmFjnRQiZBo8NUaqdWw
+ test-macosx1014-64/debug-web-platform-tests-reftests-e10s-1: cmp2EXGrQUaV8wCCLoKsfQ
+ test-macosx1014-64/debug-web-platform-tests-reftests-e10s-2: ZdgRbPv1RxWSdR2_4RDMGQ
+ test-macosx1014-64/debug-web-platform-tests-reftests-e10s-3: Mt6pW-2XTQyRLHd_uLkgqw
+ test-macosx1014-64/debug-web-platform-tests-reftests-e10s-4: O-R9t_s-RFCivsSJSO3stg
+ test-macosx1014-64/debug-web-platform-tests-reftests-e10s-5: anx6X4F_T22cn1hjYAvU6Q
+ test-macosx1014-64/debug-web-platform-tests-reftests-e10s-6: OjNRU4fxSAmbyv-9tA0dmA
+ test-macosx1014-64/debug-web-platform-tests-wdspec-e10s-1: KbjkuMJZSna_4dYqSpSvtw
+ test-macosx1014-64/debug-web-platform-tests-wdspec-e10s-2: Gk6r4C12QrK9CrRui_mL3w
+ test-macosx1014-64/debug-web-platform-tests-wdspec-e10s-3: AZLwLg4zS_CXpWccADRbVA
+ test-macosx1014-64/debug-xpcshell-e10s-1: KV8LXmaaStuejUYSXqJfIQ
+ test-macosx1014-64/debug-xpcshell-e10s-2: ECdB5IMUSlyLMnu9oC7VNw
+ test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-fenix-amazon: QuS5139jTnWnbE5yVSLPxw
+ test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-fenix-cold-amazon: HKsNkJsFQHaM9dmOCydAWw
+ test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-fenix-cold-youtube: alDVmbPfRwiPZyOsE-3eWA
+ test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-fenix-youtube: I8-ba2AuSkyPrnaU0nQk9w
+ test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-geckoview-cold-amazon: KkSAFB5mTTuM2_gtiME9Vg
+ test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-geckoview-cold-youtube: byeZACS8TY6N3gnpKjuBtw
+ test-vismet-linux64-shippable/opt-browsertime-tp6-firefox-amazon: XtSBo42GRkOtKtN9mRFLZA
+ test-vismet-linux64-shippable/opt-browsertime-tp6-firefox-cold-amazon: EsURMZyRR4-5IzyK1SbYew
+ test-vismet-macosx1014-64-shippable/opt-browsertime-tp6-firefox-amazon: S2Cgwd1dSE-aF608QrozQQ
+ test-vismet-macosx1014-64-shippable/opt-browsertime-tp6-firefox-cold-amazon: CjLXqvcZQQm5KVzxXl_-Pg
+ test-vismet-windows10-64-shippable/opt-browsertime-tp6-firefox-amazon: CssYgB5eTKCsrSRNC2RvUA
+ test-vismet-windows10-64-shippable/opt-browsertime-tp6-firefox-cold-amazon: OnYA77lvTvSfxIzh2dyCzw
+ test-vismet-windows7-32-shippable/opt-browsertime-tp6-firefox-amazon: FRHkJeJ2QUGBLCvXFoNn8Q
+ test-vismet-windows7-32-shippable/opt-browsertime-tp6-firefox-cold-amazon: d_JtccWVSn2UtdXJY3TJhQ
+ test-windows10-64-asan/opt-cppunit-1proc: edrtfN2jTEWsSJqOLIcArA
+ test-windows10-64-asan/opt-crashtest-e10s: NY6lFbzcS5eZS0EgSj_HnA
+ test-windows10-64-asan/opt-firefox-ui-functional-local-e10s: HcrrKUE0TKGYVccJ52Va0Q
+ test-windows10-64-asan/opt-firefox-ui-functional-remote-e10s: EdmSu-w5TMyKuv7asTb2Ig
+ test-windows10-64-asan/opt-gtest-1proc: Jpnj7JGgTmSfoJVqURwfMA
+ test-windows10-64-asan/opt-jsreftest-e10s-1: GFlsv67ZR_OJOwvhf_pSwA
+ test-windows10-64-asan/opt-jsreftest-e10s-2: Fm9fl6PjQvaNjFXPolBNtw
+ test-windows10-64-asan/opt-jsreftest-e10s-3: cxestYDwRpOoo92AXdyFsA
+ test-windows10-64-asan/opt-marionette-e10s: ELN4TC--RmGaMLS1Jd6jiA
+ test-windows10-64-asan/opt-mochitest-a11y-1proc: EHATVLVSRyut-7BsrntCkg
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-1: X9onROmSQzezb-vMuuzNBw
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-2: GM1ds_E3RvWuS8f_Mq70gA
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-3: UpS1ITuuRqa6nEoaPOsBYg
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-4: awntaKfhQ3eUimfBATK8QQ
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-5: TmJoUIMyQkqI7hBUkIg7_A
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-6: dLExVqRaSVm9R63s5rMCLw
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-7: eeiZoERgTb2kV0byZa0tVA
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-8: T3FBNkscSp-nq3Elqe9SMA
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-9: eh4-293MQgq5VzDYPvQEMA
+ test-windows10-64-asan/opt-mochitest-chrome-1proc-1: OnGBCsk4Tvu3h4LG7TIv6A
+ test-windows10-64-asan/opt-mochitest-chrome-1proc-2: BFWfNYxURbOs2r8k-TUuhw
+ test-windows10-64-asan/opt-mochitest-chrome-1proc-3: Iw9SNfSKT4C0qTjAvLGItA
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-1: Xo-VOgRcRJStIyumw45Vgg
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-2: dPeqPZEHQqW0DfqopW-Xuw
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-3: RR-oqZupR0ih8wkxZ5FWoA
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-4: LPbz8EnaSgiL_04YX6yUqQ
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-5: Zph9tHYPRTiHllBZb6ggag
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-6: LRH3becWRVmM4O4kLVU08g
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-7: H8QRWGMnQaGnIJFZHBkWiw
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-8: BxglYab4TlOXjW7UZdLQ2g
+ test-windows10-64-asan/opt-mochitest-e10s-1: WfxQOJg-TtOmKHiS7FydKQ
+ test-windows10-64-asan/opt-mochitest-e10s-2: Ip7Dg2ISSHq3AI4GhbzHXw
+ test-windows10-64-asan/opt-mochitest-e10s-3: Pe7jsSQdTmC-fV8vcYc6mg
+ test-windows10-64-asan/opt-mochitest-e10s-4: Gt2-FXlJQAe4OUCxS7wcTw
+ test-windows10-64-asan/opt-mochitest-e10s-5: XcnSxAkHTRK70hkGYYPIjg
+ test-windows10-64-asan/opt-mochitest-gpu-e10s: NsdgGdINSyKbCz0JJzyjtA
+ test-windows10-64-asan/opt-mochitest-media-e10s: a_BL1MTNR6yZxqHM0BOy_A
+ test-windows10-64-asan/opt-mochitest-media-spi-e10s: I-ZYfUKPQP6KNF8AUZB19A
+ test-windows10-64-asan/opt-mochitest-remote-e10s: a4cuSMz9SJGVlQD2pHmLpA
+ test-windows10-64-asan/opt-mochitest-webgl1-core-e10s: Hk8tp_esQCKV9dAZ30xkuA
+ test-windows10-64-asan/opt-mochitest-webgl1-ext-e10s: TCdAFCTiSQOcwqEvhLsy5A
+ test-windows10-64-asan/opt-mochitest-webgl2-core-e10s: H6Am9JenQ6CscJj4FdkXAQ
+ test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-1: UaMYJixAT9OrwP27ohoY0Q
+ test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-2: Nt4umXPwSU66DUVAIFtXSQ
+ test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-3: EnLMl8cvT821iZ-nLzyPuA
+ test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-4: NSRhEkbmSQSNRj4f0p_z3g
+ test-windows10-64-asan/opt-mochitest-webgpu-e10s: UlQiQQlbQpObr4MyF66qhQ
+ test-windows10-64-asan/opt-reftest-e10s-1: Tq01tHQ2RD-XO3BUgAS1fw
+ test-windows10-64-asan/opt-reftest-e10s-2: WMEPT_xETJ6BbR8xk3jhDA
+ test-windows10-64-asan/opt-reftest-e10s-3: B6kwVbDvTsG6JoVLB8VMFQ
+ test-windows10-64-asan/opt-telemetry-tests-client-e10s: DMmtDudUQd6Wl_0DhUpeKg
+ test-windows10-64-ccov/opt-awsy-base-e10s: HbAnTrp3QeC-HooyRPpdZQ
+ test-windows10-64-ccov/opt-awsy-e10s: GPDOuaFWTaK-8OTJ34StYQ
+ test-windows10-64-ccov/opt-cppunit-1proc: Aq1_Hr3aR9KWFB99A191YQ
+ test-windows10-64-ccov/opt-crashtest-e10s: DEx81EuLRbuvsHrsQaZ7Yg
+ test-windows10-64-ccov/opt-firefox-ui-functional-local-e10s: AoJ3_jsNRTW3mVrcJpzq6A
+ test-windows10-64-ccov/opt-firefox-ui-functional-remote-e10s: Tx4WZIjuTla7tPuMc56ijA
+ test-windows10-64-ccov/opt-gtest-1proc: eDiEioDRRqStnmx2RPfsSw
+ test-windows10-64-ccov/opt-jittest-1proc-1: eRrPP9GUSuCoSdIbNO9P7A
+ test-windows10-64-ccov/opt-jittest-1proc-2: Hfpx1XMtQkiC_MJqcKx1pw
+ test-windows10-64-ccov/opt-jittest-1proc-3: InAc3hfDTBqsqJGfW6LCow
+ test-windows10-64-ccov/opt-jittest-1proc-4: INcz-cKiTDatN-iEocYxLg
+ test-windows10-64-ccov/opt-jittest-1proc-5: Ac3f-KzzSjiUtM3mS2Q5Uw
+ test-windows10-64-ccov/opt-jittest-1proc-6: elfmcJBIT2aOhfuzAFMM6A
+ test-windows10-64-ccov/opt-jsreftest-e10s-1: dh2MfR5ERXeEXdhx7z86Ng
+ test-windows10-64-ccov/opt-jsreftest-e10s-2: Vq5JkshlSwK40xuyAdPlCw
+ test-windows10-64-ccov/opt-jsreftest-e10s-3: UKk0Ro8zSNm4onf93AA3SQ
+ test-windows10-64-ccov/opt-jsreftest-e10s-4: WSQyTbBkTwCX7Hdbn8Ew-w
+ test-windows10-64-ccov/opt-jsreftest-e10s-5: U04EpkibR6Oruzs5M2-19A
+ test-windows10-64-ccov/opt-marionette-e10s: Nm918BTzSDGPRyLBZMo5wQ
+ test-windows10-64-ccov/opt-marionette-gpu-e10s: L53MmL-_TBa_N1OW8K0QhA
+ test-windows10-64-ccov/opt-mochitest-a11y-1proc: Nrwqc7BsTSuCbAcag8U8Kw
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-1: bobK8Jg4RySFc02v4AknNQ
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-10: e3riGJskS3OoZlk3BfLHnQ
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-11: C5uJezpfQMe07b-F3modFA
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-12: HpN6PDvXRM2W0iT2BRf2AA
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-13: cZfrTdUnSHK67gRpFxiECQ
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-14: VMO-LOYaRt2QGKVJhDah8g
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-2: LjO6c2shTCOry0y2JoDnDA
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-3: UnAnvcwbR1S7EQIgg7rGCA
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-4: RLwzj_5XSbyBLlk1JwiAfA
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-5: JVmLIblFRv27H-nZDL6f2g
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-6: IJgzQKd3QuaQNR4G69EPBg
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-7: ChKNUV3pTIGFzFsSd03nvA
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-8: PVmPp-VxTeC2AOKId59Xfg
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-9: NDS1qot3STKGkF_vl-qEAA
+ test-windows10-64-ccov/opt-mochitest-chrome-1proc-1: LQkf1pAVTISBygHsJFrqLg
+ test-windows10-64-ccov/opt-mochitest-chrome-1proc-2: EqqDLXDjRD28Gcr2BcnCnw
+ test-windows10-64-ccov/opt-mochitest-chrome-1proc-3: CEO6x2_6Q0CY7YIEWKskkg
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-1: cxfVpvZvTuW-mA2bPKoLeQ
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-10: ZEryV1WvSXOBv2WilTbMDw
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-11: TyAq486QROS-ZzkLa_iIQQ
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-12: ZdJGC8JSRRmTMNyn9YM50A
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-13: IjOOo2h8QNCntwC7D5TIPw
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-14: TSF4llS8SkSwbSQtKfhnVg
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-15: Y1M49SioT5aESnSzalPsHQ
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-16: DkkPzeQmSdCPb6oJgMI9tg
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-2: bEUu3F11TPSasK3_ZrkgsA
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-3: VegmqXWqRMmRwOXbcEERxg
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-4: GvTjBy5IRuCdAHgC9-u5OA
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-5: FtEYsDECTzGpGQDmMbzasA
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-6: IyX5wssBROGqkbxYdXTxVQ
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-7: II1XCFzVRBW8YyqFn3UgbQ
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-8: Bf2NOF8PTzGBtZbQDWpOpw
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-9: e8ca8DLJQTGrLMkvbIEoWg
+ test-windows10-64-ccov/opt-mochitest-e10s-1: VADAKqiqRfieBIWsVVf7_g
+ test-windows10-64-ccov/opt-mochitest-e10s-10: b7M31EwlRGGsf540T6lHDw
+ test-windows10-64-ccov/opt-mochitest-e10s-2: bqYRI84YQge5NAJFNUfF9A
+ test-windows10-64-ccov/opt-mochitest-e10s-3: YSkhBVgXSlGK79Y39K3p2w
+ test-windows10-64-ccov/opt-mochitest-e10s-4: RZtvV0GPTN-B4ZQybv5oww
+ test-windows10-64-ccov/opt-mochitest-e10s-5: TOVW3YA0TG6ufIH_jleWFQ
+ test-windows10-64-ccov/opt-mochitest-e10s-6: Zl96eaCbTMe1wqE352CZVA
+ test-windows10-64-ccov/opt-mochitest-e10s-7: b9_9QiRHTtyi-g_2G24H0Q
+ test-windows10-64-ccov/opt-mochitest-e10s-8: CPmoCQiqQ96qxKyf6GhpAg
+ test-windows10-64-ccov/opt-mochitest-e10s-9: JogBFc9pShC6AEiLXQEZ5w
+ test-windows10-64-ccov/opt-mochitest-gpu-e10s: ZZjtdhilTLe8Itbu5iGLvQ
+ test-windows10-64-ccov/opt-mochitest-media-e10s: I0suGPeQTjeRN6nL49CV1Q
+ test-windows10-64-ccov/opt-mochitest-media-spi-e10s: LG3U4bn6SmaXyNNhuIGOIQ
+ test-windows10-64-ccov/opt-mochitest-remote-e10s: Fsez0RE6R3Wf-n36x5JVew
+ test-windows10-64-ccov/opt-mochitest-webgl1-core-e10s: ditvn0l7RTS1TRSaKsMLUQ
+ test-windows10-64-ccov/opt-mochitest-webgl1-ext-e10s: TsYH1edBQxyRrn1TorsKhA
+ test-windows10-64-ccov/opt-mochitest-webgl2-core-e10s: KykMz-7HQpG9mi2qQDiUCg
+ test-windows10-64-ccov/opt-mochitest-webgl2-ext-e10s-1: fqgEgX0KT7W0Azi9H3tPlA
+ test-windows10-64-ccov/opt-mochitest-webgl2-ext-e10s-2: B8_aM4zPRe2UgGxH2_mN5A
+ test-windows10-64-ccov/opt-mochitest-webgl2-ext-e10s-3: TQUycpDtSk-0m09Luvey7w
+ test-windows10-64-ccov/opt-mochitest-webgl2-ext-e10s-4: PDZHlFuDTVCizteO2Y0A5w
+ test-windows10-64-ccov/opt-mochitest-webgpu-e10s: C1FxQ85RS0GujF1aPkFBbA
+ test-windows10-64-ccov/opt-reftest-e10s-1: VjPkGfqyQJ27BZ-39I3Wug
+ test-windows10-64-ccov/opt-reftest-e10s-2: TGGOo5PMSE6sDt3BYRtcFg
+ test-windows10-64-ccov/opt-reftest-e10s-3: R4tKin0kQAWY3aV9UaQg8Q
+ test-windows10-64-ccov/opt-reftest-e10s-4: S9QsYTjsStuv7hYAZjxk0A
+ test-windows10-64-ccov/opt-reftest-e10s-5: ebsT3_sQQkyDo8pbw5l-Hw
+ test-windows10-64-ccov/opt-reftest-e10s-6: JTcCT1KwTHqowLHtXq78EA
+ test-windows10-64-ccov/opt-reftest-e10s-7: SaD1tPCsQGa1stZFoglG1w
+ test-windows10-64-ccov/opt-reftest-e10s-8: FPH1ZHYPRKiogtaywuoUsw
+ test-windows10-64-ccov/opt-reftest-e10s-9: SCrykmIXSZOqmSNCrBLp7Q
+ test-windows10-64-ccov/opt-telemetry-tests-client-e10s: fJ9xTmrRQGaiV_iMvADikQ
+ test-windows10-64-ccov/opt-test-coverage-e10s: PieLJke-TAe_sWg7FJb5Hw
+ test-windows10-64-ccov/opt-test-coverage-wpt-e10s-1: P_C1j2RNS5aVWBTZVH1epw
+ test-windows10-64-ccov/opt-test-coverage-wpt-e10s-2: dv0iRtb9QKyzR-pRtqWJiA
+ test-windows10-64-ccov/opt-test-coverage-wpt-e10s-3: a0k8hNInSlawH4ElLvjZEw
+ test-windows10-64-ccov/opt-web-platform-tests-crashtests-e10s: RKUMQ3-RS4WEP-U-HQIRYQ
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-1: O8vm_uunQUOqticf9u4_uA
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-10: QCaI1TuNQfi_HfORuvTn1Q
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-11: P6khWErtQGuvKx39JnR78w
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-12: fVOQDt39Ra6cw7jiHCbNLw
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-13: T9-YYv4JRxCgKXAcyRJ--w
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-14: LoMsTmAaS4m0Cj1o1kl_cw
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-15: ClfxqsMeQgipES2HwpUuaQ
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-16: G4DNLJ3rT5q6Vfaq_n9WZg
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-17: ba1s_m-qQ5yFKLDq6uNMkw
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-18: FEGlrL3eRXCED1CeU5Dq1g
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-2: ej-RicfBRKC0IRLEd0GYxQ
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-3: fIT3hjc3TsG4vDWZrdXHOQ
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-4: RcnrCaCvSgyV_fOgJqZd4w
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-5: bEnkrvsxTwGGISw6He-6Rw
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-6: Eo4-hE7iQK-ZJ3LxZ6cy8w
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-7: eaZdfJutQh2UpF6CKmgAVg
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-8: UANaYL-TSaeyuqvAY-fV-A
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-9: eDJM2IOaRWGlsBdK6kcAQg
+ test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-1: Qki6KhQjTh2Nh6FMh2718Q
+ test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-2: UzW55Cd7RFGqynfptAQDNA
+ test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-3: dA1Z7zkDRMunBq_rlmgIIg
+ test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-4: S2NCTx16REGZB1DpKUmr-g
+ test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-5: aeckxui7QIS9zG_nt-shOw
+ test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-6: PZBpkqbuQdWJvKM1xm650w
+ test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-7: EBo4pywuTMKKrvCo1Lw1MA
+ test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-8: DXEtTpZFRFmo3D_74ZqAng
+ test-windows10-64-ccov/opt-web-platform-tests-wdspec-e10s-1: Xip1n9UESq2u4rcGsqr4Fw
+ test-windows10-64-ccov/opt-web-platform-tests-wdspec-e10s-2: eDnDpFYURuyvC8I71poIgg
+ test-windows10-64-ccov/opt-web-platform-tests-wdspec-e10s-3: Vtn8oFXrRsK3QkN6ohrKJQ
+ test-windows10-64-ccov/opt-web-platform-tests-wdspec-e10s-4: GepFaP1YTDWXUzE9j13tFA
+ test-windows10-64-ccov/opt-xpcshell-e10s-1: WGyRpOaHQ_OrKzGvEKmJSw
+ test-windows10-64-ccov/opt-xpcshell-e10s-2: aJ9AGP5gRseKYBcnfodrvA
+ test-windows10-64-ccov/opt-xpcshell-e10s-3: IN_urmsPRh2j3dXlqZXj1g
+ test-windows10-64-ccov/opt-xpcshell-e10s-4: HI0wfVaaShuM8ZvReUPvgw
+ test-windows10-64-ccov/opt-xpcshell-e10s-5: CS245xVeSK-pfkYCECry4Q
+ test-windows10-64-ccov/opt-xpcshell-e10s-6: GoSyXXEEQaaFWn-O1nC5iw
+ test-windows10-64-mingwclang/debug-cppunit-1proc: YTVDC5X-SXi0cj8D86HPeQ
+ test-windows10-64-mingwclang/debug-firefox-ui-functional-local-e10s: DNPG8sFoTfa0UZJI0cZWZQ
+ test-windows10-64-mingwclang/debug-firefox-ui-functional-remote-e10s: NegZXqOzRvOTa5krGjlnWQ
+ test-windows10-64-mingwclang/debug-mochitest-a11y-1proc: NK6dfWPoTHqubw6gTvtpaA
+ test-windows10-64-mingwclang/debug-mochitest-gpu-e10s: SBUQ1DHxTaSi09ZebNYq0Q
+ test-windows10-64-mingwclang/debug-mochitest-webgl1-core-e10s: Fs--8o4AShuBkozlDJKH3g
+ test-windows10-64-mingwclang/debug-mochitest-webgl1-ext-e10s: QjCQwPc1Sj6TQMspdKv4XA
+ test-windows10-64-mingwclang/debug-mochitest-webgl2-core-e10s: UfasHslvQCqgZWPpz1pibA
+ test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-1: GaL6G18FQbCsykdlmwNUKg
+ test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-2: fWVBLTCQRJ6LGqpuu8Z2RA
+ test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-3: FFThUfWFTYKzhoxp06QdPw
+ test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-4: VWFInMFnSUyseRP3neSk5Q
+ test-windows10-64-mingwclang/debug-mochitest-webgpu-e10s: XdqZu3fSTBmMTPIST4ErzA
+ test-windows10-64-mingwclang/debug-reftest-e10s-1: aFqQGnIdTHiNVmIJQSQw5w
+ test-windows10-64-mingwclang/debug-reftest-e10s-2: CkrFOVi9Qeyck8Avl2yPyA
+ test-windows10-64-mingwclang/debug-reftest-e10s-3: TS6JidUcQqe49r7Cr5YRPA
+ test-windows10-64-mingwclang/debug-reftest-e10s-4: OwDMHmjcRO2i0EluQYgDpg
+ test-windows10-64-mingwclang/debug-telemetry-tests-client-e10s: B3ojEoT8QoKTSvse-MUHgA
+ test-windows10-64-mingwclang/opt-cppunit-1proc: E6v3Z02oRvmOay6FC8xlrQ
+ test-windows10-64-mingwclang/opt-mochitest-gpu-e10s: KyumjBohTpSDhynaycV_zA
+ test-windows10-64-qr/debug-crashtest-e10s: WsijRfuQRyqwlTWfvMJK-w
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-1: Ore6MSsySROTuPFPeyQ5EQ
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-2: Kd2RAJyqQKq8IAtr9xTOiA
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-3: JQJUOMZHRMexgRjLsWgepQ
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-4: RsJ1GZGnTACWPPx2VERU8w
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-5: Z-9HOQTmTUKfZaVsNDRVeg
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-6: MfmNH9tiT7a0-MYKaQrelg
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-7: dFXdEfrASO-6woRAHhLNKQ
+ test-windows10-64-qr/debug-mochitest-e10s-1: UR1B0uEGRcySd9Xv0K374A
+ test-windows10-64-qr/debug-mochitest-e10s-2: X0rbAUObTyy0vbKhXVGFKg
+ test-windows10-64-qr/debug-mochitest-e10s-3: UwMkBJVKSMOnBAaTQHG0BQ
+ test-windows10-64-qr/debug-mochitest-e10s-4: HQFNQqHZS0SqsqGndQYaqA
+ test-windows10-64-qr/debug-mochitest-e10s-5: A-VLbddaRjieHwd8EYvnKQ
+ test-windows10-64-qr/debug-mochitest-gpu-e10s: AH7_3ZtmQU-gdZFEoawZvw
+ test-windows10-64-qr/debug-mochitest-media-e10s: CapS9-Q6Qx-7sHXVLTRwFw
+ test-windows10-64-qr/debug-mochitest-media-spi-e10s: TUuWViXdRgykpWo7sym5iA
+ test-windows10-64-qr/debug-mochitest-webgl1-core-e10s: abRBq7TlRS2oXy60CieLJQ
+ test-windows10-64-qr/debug-mochitest-webgl2-core-e10s: SgyFus68RyiYbeFSJbJwbg
+ test-windows10-64-qr/debug-mochitest-webgpu-e10s: JjVJ6g6tSOmrMQ-IYTX2eg
+ test-windows10-64-qr/debug-reftest-e10s-1: U7SldFgcT7apF8XspinzKg
+ test-windows10-64-qr/debug-reftest-e10s-2: D1vaE3aeR66K11_6sy0BZw
+ test-windows10-64-qr/debug-reftest-e10s-3: apAFVMbzShe4Uxpp605WrA
+ test-windows10-64-qr/debug-reftest-e10s-4: EbxKx5-AR6yza9flFVE0Ug
+ test-windows10-64-qr/debug-web-platform-tests-crashtests-e10s: Pa1Jf2jQTiSturo95eqvuQ
+ test-windows10-64-qr/debug-web-platform-tests-e10s-1: IQp6UQyXSwmimhLqfbK_ug
+ test-windows10-64-qr/debug-web-platform-tests-e10s-10: S89wh8vHR8m1Na7_fxW-bA
+ test-windows10-64-qr/debug-web-platform-tests-e10s-11: Gzqlk8E3RP2KVxg1yAOYlA
+ test-windows10-64-qr/debug-web-platform-tests-e10s-12: IF7ee6yAQQq2_Vq9fG43xw
+ test-windows10-64-qr/debug-web-platform-tests-e10s-13: EYqmktAsSvWm4uVuQMmx3w
+ test-windows10-64-qr/debug-web-platform-tests-e10s-14: HQr8mmPmR-yRF3SAcGyllQ
+ test-windows10-64-qr/debug-web-platform-tests-e10s-15: eS_BroCJR6-n6O9Hd1iq_Q
+ test-windows10-64-qr/debug-web-platform-tests-e10s-16: bgldeSQVQZOf9AznHFoi5A
+ test-windows10-64-qr/debug-web-platform-tests-e10s-17: Ul__9u1HS8yQVOpgVQCY6w
+ test-windows10-64-qr/debug-web-platform-tests-e10s-18: dwl3uJ_NQ8iwREx1ekkMug
+ test-windows10-64-qr/debug-web-platform-tests-e10s-2: PENSTttTQqSG6_KBENlGog
+ test-windows10-64-qr/debug-web-platform-tests-e10s-3: EmCpYmKYSaC_xQqArTplZw
+ test-windows10-64-qr/debug-web-platform-tests-e10s-4: PE5qf9xmR-6Vxd-KGZYRsw
+ test-windows10-64-qr/debug-web-platform-tests-e10s-5: JbI1_niSQEWmVAiR3-iesA
+ test-windows10-64-qr/debug-web-platform-tests-e10s-6: G0qQGKriQDKuZ57FCfmDJQ
+ test-windows10-64-qr/debug-web-platform-tests-e10s-7: L77jmbZPQvWqvslkuND1bA
+ test-windows10-64-qr/debug-web-platform-tests-e10s-8: ff0VlMR2Tm-UNixEbkp6Bw
+ test-windows10-64-qr/debug-web-platform-tests-e10s-9: foAl0wumQZi3issnC7ugzQ
+ test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-1: BcgIsrqVRlerj0UBG5f_kg
+ test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-2: I2DKh9OETou6qVw8PAQJjA
+ test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-3: Vc-bZ4qNS0CAb0UeqjFkfw
+ test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-4: Nj3XhTzpTs-Gik1SJTJpsw
+ test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-5: KK0MqiHOSoiAbU4DWyHogA
+ test-windows10-64-qr/debug-web-platform-tests-wdspec-e10s-1: DJ6nXfcZQQm_ZpGGPHtRdA
+ test-windows10-64-qr/debug-web-platform-tests-wdspec-e10s-2: SOX0B5fqQ1yx3_tKI5U2JA
+ test-windows10-64-qr/debug-web-platform-tests-wdspec-e10s-3: K-pK738nSdqG8AsGruWupg
+ test-windows10-64-qr/opt-awsy-base-e10s: Q8u1gAR_TI6dOUMeQYhKew
+ test-windows10-64-qr/opt-awsy-e10s: W6UGGk7eSzCUDRYElAXrww
+ test-windows10-64-qr/opt-awsy-tp6-e10s: ZwsAyj3rT76DmgTxRoYRyw
+ test-windows10-64-qr/opt-crashtest-e10s: eebKyBmYS0moeJRExQJc2Q
+ test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-1: B5fAf6WhRy6FtgwBuFREmQ
+ test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-2: ODJ_-EHhRQCVmBtxQzY_-g
+ test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-3: QhYOtwImRnuo6SAH8nYnHg
+ test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-4: U9tdbW0vTECKgXsT72qX-g
+ test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-5: DLiIoWjISMe02iuELQqobQ
+ test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-6: IsOuT-7USmm35jBN88M5_A
+ test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-7: ebkUvx9-TbiZvrFFih5kWg
+ test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-1: TkNUotyHQnC5d5fZUzBVJg
+ test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-2: RdVES-IsQjGU79bYwa-Xvw
+ test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-3: NwQDhuw9QKeWKWGfc_krOw
+ test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-4: aS_iArxARsO8Eb-JinHwIg
+ test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-5: TJvrP9B6SyypbTQZHt1faw
+ test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-6: N1PlM2ASTYGHP1qNyjeNuQ
+ test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-7: Ddm-UBrzRfeeDRV8Pr8pqw
+ test-windows10-64-qr/opt-mochitest-e10s-1: GNyMSfZUTUebXJ1QsVrciQ
+ test-windows10-64-qr/opt-mochitest-e10s-2: VwBhQPWoTuyy1LDVcEzTAg
+ test-windows10-64-qr/opt-mochitest-e10s-3: fyp8D267QpKW2ErN0lnZKA
+ test-windows10-64-qr/opt-mochitest-e10s-4: TPp5KoWJQTWGqps2jP5T3w
+ test-windows10-64-qr/opt-mochitest-e10s-5: fjos7WLBTXa7tRQewXeHfQ
+ test-windows10-64-qr/opt-mochitest-fis-e10s-1: Q1sqjBAHS5qRiIZxlEu0OQ
+ test-windows10-64-qr/opt-mochitest-fis-e10s-2: TLX1oj4_QCGcVkDtFsQfCQ
+ test-windows10-64-qr/opt-mochitest-fis-e10s-3: THki-Mp7Q0aB08It3fIlbw
+ test-windows10-64-qr/opt-mochitest-fis-e10s-4: Kz83hsndR2Wen3BuaFbQsw
+ test-windows10-64-qr/opt-mochitest-fis-e10s-5: TPQu6NqvRi6ArO5SCl0zbg
+ test-windows10-64-qr/opt-mochitest-gpu-e10s: GPLXqKr4QoaHpQ5HIC0MJg
+ test-windows10-64-qr/opt-mochitest-media-e10s: O72Bw5jdTY--tTgIkDhOEw
+ test-windows10-64-qr/opt-mochitest-media-fis-e10s: H4ZyAxd6Q0WDvbBP0LFMbQ
+ test-windows10-64-qr/opt-mochitest-media-spi-e10s: cCcR8EgMTziOTR7W07PYTA
+ test-windows10-64-qr/opt-mochitest-webgl1-core-e10s: c62YMxAtTGi8svZN5tbt_A
+ test-windows10-64-qr/opt-mochitest-webgl1-core-fis-e10s: dZmmDEVSRM6jFCnxkBlS9Q
+ test-windows10-64-qr/opt-mochitest-webgl2-core-e10s: fKnncdACTRqFbkQDDa6Eng
+ test-windows10-64-qr/opt-mochitest-webgl2-core-fis-e10s: Pe3EZzHATUO19_BJ9qLmQA
+ test-windows10-64-qr/opt-mochitest-webgpu-e10s: JTE7TMqTTDySlL-WqXxf_w
+ test-windows10-64-qr/opt-mochitest-webgpu-fis-e10s: OiWDNMfnQZ6USMgxrijARw
+ test-windows10-64-qr/opt-raptor-ares6-firefox-e10s: TFL2Kz0LThK_WWD7jETOFg
+ test-windows10-64-qr/opt-raptor-jetstream2-firefox-e10s: GJOc5SYYRImQhvor-rzFYQ
+ test-windows10-64-qr/opt-raptor-motionmark-animometer-firefox-e10s: UPIMrDeIR8mjoppXSgXSPQ
+ test-windows10-64-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: YeXC8HphSeeiqrkZNL4pOw
+ test-windows10-64-qr/opt-raptor-speedometer-firefox-e10s: NUTteFr2SqGJzWcvVl7fTA
+ test-windows10-64-qr/opt-raptor-stylebench-firefox-e10s: JTif2t2YRmy8cUIUbQkXGA
+ test-windows10-64-qr/opt-raptor-sunspider-firefox-e10s: PMqotSYvQ0K5tin4ELqNmQ
+ test-windows10-64-qr/opt-raptor-tp6-1-firefox-cold-e10s: FblKoKMnQmWsJX_U58X7ww
+ test-windows10-64-qr/opt-raptor-tp6-1-firefox-e10s: KQUgM4XhRiaPS6edmOBXIA
+ test-windows10-64-qr/opt-raptor-tp6-10-firefox-cold-e10s: dBO9fh0JQzKKI6iSZRfLyg
+ test-windows10-64-qr/opt-raptor-tp6-10-firefox-e10s: Q6311BJWRHWXIyUf4HC82w
+ test-windows10-64-qr/opt-raptor-tp6-11-firefox-cold-e10s: Mu8aAHCPS6iUKRVVuImLdA
+ test-windows10-64-qr/opt-raptor-tp6-12-firefox-cold-e10s: LPT4IsKQSWiaG0t0_vb9aQ
+ test-windows10-64-qr/opt-raptor-tp6-13-firefox-cold-e10s: Wz_9GcDvQyq5Dy-eKfaLaQ
+ test-windows10-64-qr/opt-raptor-tp6-14-firefox-cold-e10s: NDdoru8wQWKZ4pRUiPpDhg
+ test-windows10-64-qr/opt-raptor-tp6-15-firefox-cold-e10s: FQx5IBdMR6WI1OLJjQRBNg
+ test-windows10-64-qr/opt-raptor-tp6-16-firefox-cold-e10s: JlB4zSpFSgGINU5h_NypSw
+ test-windows10-64-qr/opt-raptor-tp6-17-firefox-cold-e10s: M10WuOIWTvOiwY3B_jjzXw
+ test-windows10-64-qr/opt-raptor-tp6-18-firefox-cold-e10s: e_tx8VGNSL6L2re-tUbbOw
+ test-windows10-64-qr/opt-raptor-tp6-19-firefox-cold-e10s: W5wlKC4YQfqZQ-9MyqNpUg
+ test-windows10-64-qr/opt-raptor-tp6-2-firefox-cold-e10s: a2WGMOzuQdiEMozff6x4Cw
+ test-windows10-64-qr/opt-raptor-tp6-2-firefox-e10s: f48IZ9vpS9-zieFz_qDIOA
+ test-windows10-64-qr/opt-raptor-tp6-20-firefox-cold-e10s: avzFPOKeSy6fvXVdObA-Iw
+ test-windows10-64-qr/opt-raptor-tp6-21-firefox-cold-e10s: KgFHGlHAQeKOxSUT_xgt_w
+ test-windows10-64-qr/opt-raptor-tp6-22-firefox-cold-e10s: ZZuJxuswReCrLEKEYeysVw
+ test-windows10-64-qr/opt-raptor-tp6-23-firefox-cold-e10s: BZwjdbMnQ_So1LLdWNV6Gw
+ test-windows10-64-qr/opt-raptor-tp6-24-firefox-cold-e10s: HMi_XZknRgCQHigMEvnDuA
+ test-windows10-64-qr/opt-raptor-tp6-25-firefox-cold-e10s: IH37dLcCSIq55TRwm1Z46w
+ test-windows10-64-qr/opt-raptor-tp6-26-firefox-cold-e10s: MsMWPC1ESjqLVeQlZNSQuw
+ test-windows10-64-qr/opt-raptor-tp6-27-firefox-cold-e10s: f6kM00s5SW67Ux2mGl2uTA
+ test-windows10-64-qr/opt-raptor-tp6-28-firefox-cold-e10s: bAuiQ_OaQIKioQwqez7aWA
+ test-windows10-64-qr/opt-raptor-tp6-29-firefox-cold-e10s: FPIaL7g6SZO5YJWNDf79ew
+ test-windows10-64-qr/opt-raptor-tp6-3-firefox-cold-e10s: Efn8imedTzmNbrJnqn7NCw
+ test-windows10-64-qr/opt-raptor-tp6-3-firefox-e10s: Ki4OzoszSCy0LD_WmJSvOw
+ test-windows10-64-qr/opt-raptor-tp6-30-firefox-cold-e10s: NxBCqNA-SGi1R5YtkobkAg
+ test-windows10-64-qr/opt-raptor-tp6-4-firefox-cold-e10s: VmR8t0wiS_mLMK72TyQb6A
+ test-windows10-64-qr/opt-raptor-tp6-4-firefox-e10s: Ss4HFcxhTfi8mi9uuKU7qw
+ test-windows10-64-qr/opt-raptor-tp6-5-firefox-cold-e10s: NRBRSGXLRnOykG3gn1vzaw
+ test-windows10-64-qr/opt-raptor-tp6-5-firefox-e10s: AMJ2p7emQP6ww6FHzG8K8g
+ test-windows10-64-qr/opt-raptor-tp6-6-firefox-cold-e10s: Ay7JCKr-RFymSEJkM_P73g
+ test-windows10-64-qr/opt-raptor-tp6-6-firefox-e10s: NBfmsNwMRA2CCGLvQaZRNw
+ test-windows10-64-qr/opt-raptor-tp6-7-firefox-cold-e10s: EVKjO5SOSOSzxCZfzdUJ8A
+ test-windows10-64-qr/opt-raptor-tp6-7-firefox-e10s: OeOM-XBOTza00CxM-nabhA
+ test-windows10-64-qr/opt-raptor-tp6-8-firefox-cold-e10s: U5lZ_xgWSUWCGaBV0fgNSA
+ test-windows10-64-qr/opt-raptor-tp6-8-firefox-e10s: B_yG3sQmTGyimUqEpsm0GQ
+ test-windows10-64-qr/opt-raptor-tp6-9-firefox-cold-e10s: Bq2ZM6lwQzqDTGqP70AFjw
+ test-windows10-64-qr/opt-raptor-tp6-9-firefox-e10s: T03-V0YUQaiKPxzJG3zGYw
+ test-windows10-64-qr/opt-raptor-tp6-binast-1-firefox-e10s: MQ8vOUHgRiOuGiRtXJZMqA
+ test-windows10-64-qr/opt-raptor-wasm-godot-firefox-e10s: aE2cKCskQxe21n_Wda4WUg
+ test-windows10-64-qr/opt-raptor-webaudio-firefox-e10s: dL2t2mR8SuuypDK4x6JCig
+ test-windows10-64-qr/opt-raptor-youtube-playback-firefox-e10s: O4aMzwqcSP2r-q3kcDBagA
+ test-windows10-64-qr/opt-reftest-e10s-1: C44GHeblRb-UA75B-txvRQ
+ test-windows10-64-qr/opt-reftest-e10s-2: H4E0HYggQJ-wiiBvMLmGlg
+ test-windows10-64-qr/opt-talos-chrome-e10s: CCBIFq1ASR-Mmr48W4hJYg
+ test-windows10-64-qr/opt-talos-damp-e10s: WWeYKnMLR-mzlOwcqkENgA
+ test-windows10-64-qr/opt-talos-dromaeojs-e10s: IwX91EMoR9mgnW5hS-SWQQ
+ test-windows10-64-qr/opt-talos-g1-e10s: SIraFvnJQESH-5vYdOpm9g
+ test-windows10-64-qr/opt-talos-g4-e10s: M_ZPHvlgS4mvzTlptqjkHQ
+ test-windows10-64-qr/opt-talos-g5-e10s: QHyqb18PSs-IOX9cuPLTlQ
+ test-windows10-64-qr/opt-talos-other-e10s: dDmHKvrzTZ6PnPTqov5UgA
+ test-windows10-64-qr/opt-talos-perf-reftest-e10s: GGkkCA-3Sj-pT4XWwxAlTQ
+ test-windows10-64-qr/opt-talos-perf-reftest-singletons-e10s: ACdz0eVkR0qz8Q2IKIgOXw
+ test-windows10-64-qr/opt-talos-realworld-webextensions-e10s: KeiIkvCIS0WwHi1u6-GPGg
+ test-windows10-64-qr/opt-talos-sessionrestore-many-windows-e10s: K19Z5NwlTye9TO6EiUfKqQ
+ test-windows10-64-qr/opt-talos-svgr-e10s: PdcBnwtoSGis6dGtQty7LQ
+ test-windows10-64-qr/opt-talos-tabswitch-e10s: Gk5RfwiXSd-zbEMpAyW-GA
+ test-windows10-64-qr/opt-talos-tp5o-e10s: REfgcVgfRhekJi0c-MZBAg
+ test-windows10-64-qr/opt-talos-webgl-e10s: Q1t0yzOjSO-DsaOGvccQtQ
+ test-windows10-64-qr/opt-talos-xperf-e10s: Ca9m5JH4TC67p9Ts-hXdyQ
+ test-windows10-64-qr/opt-web-platform-tests-crashtests-e10s: V9SQBqjiS92bGBAxwiZLmA
+ test-windows10-64-qr/opt-web-platform-tests-crashtests-fis-e10s: FbWtdQ8uSkKhWav4eNrscw
+ test-windows10-64-qr/opt-web-platform-tests-e10s-1: RClCXqSxSiis8sdj-XCeHA
+ test-windows10-64-qr/opt-web-platform-tests-e10s-10: UCB3ZBEoQMu441wSQjd4lw
+ test-windows10-64-qr/opt-web-platform-tests-e10s-11: X90PhlUmTaKUH2vq7YUqbA
+ test-windows10-64-qr/opt-web-platform-tests-e10s-12: MSmuYrI9RDKJgG6roWu4qA
+ test-windows10-64-qr/opt-web-platform-tests-e10s-2: edSgrMClRiG6cmfUPmF7Mg
+ test-windows10-64-qr/opt-web-platform-tests-e10s-3: Aalzs-ubSqGWl87BwqtMKA
+ test-windows10-64-qr/opt-web-platform-tests-e10s-4: dtYqPF-bS-uAjKOA-4regw
+ test-windows10-64-qr/opt-web-platform-tests-e10s-5: DeUxLTu3RDCpQX6wk2fnUw
+ test-windows10-64-qr/opt-web-platform-tests-e10s-6: CG1agFhwQY2d3XU_r78YPA
+ test-windows10-64-qr/opt-web-platform-tests-e10s-7: YGXerLH3Qp68NA3AHB_TGQ
+ test-windows10-64-qr/opt-web-platform-tests-e10s-8: XKRvxPF0Q3KYwwv4bdR77w
+ test-windows10-64-qr/opt-web-platform-tests-e10s-9: fq1NnzEIQ_CD5ZbRG2kCJg
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-1: WwXk4YzjR5CJnGMmEEIq4A
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-10: Gq47KJdHS5CUa4WTprCvcA
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-11: Zo3QoxnRQRif7BMLDkmsbg
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-12: ZmtN54x2SHuyhudvJUsufg
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-2: bZU4HjJlS3qZ9YtFdGymVw
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-3: L5mdb4dCQv2kjnncPUrtTA
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-4: L7fr0rtDSuOFaMVOBHUKMA
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-5: c8m7kKweRW6-AuxdN8u53Q
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-6: anXkJByKQCaQCkwUY5ESeA
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-7: cqFsyRKNQsqqYcIJ-8MLxQ
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-8: MkC29HPCRiyuF-wpj6LLuA
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-9: ZZuVBUiaTuCGV4vNjhIckQ
+ test-windows10-64-qr/opt-web-platform-tests-reftests-e10s-1: ZPBdO56pR8qys4k_-r0jmg
+ test-windows10-64-qr/opt-web-platform-tests-reftests-e10s-2: eIrkwHnmSaKUPGMCsSEkow
+ test-windows10-64-qr/opt-web-platform-tests-reftests-e10s-3: DSSjDgESRKOhM9pfumQWKA
+ test-windows10-64-qr/opt-web-platform-tests-reftests-e10s-4: SM8vgm9hRiGoYYqibiGJuQ
+ test-windows10-64-qr/opt-web-platform-tests-reftests-fis-e10s-1: ICDfNf6SRG-ySHF17IfF2g
+ test-windows10-64-qr/opt-web-platform-tests-reftests-fis-e10s-2: NJqrIUYNSq6_PVHZvPmW7w
+ test-windows10-64-qr/opt-web-platform-tests-reftests-fis-e10s-3: c5zE0yMkR3Gf-T5fr9b6Pg
+ test-windows10-64-qr/opt-web-platform-tests-reftests-fis-e10s-4: CK6d7ri-Rd2wWlpv_0p0AA
+ test-windows10-64-qr/opt-web-platform-tests-wdspec-e10s-1: QTNsZOiiQjKL95vnhiTp3A
+ test-windows10-64-qr/opt-web-platform-tests-wdspec-e10s-2: R1tTTIYrRdqhW95_btJeHg
+ test-windows10-64-qr/opt-web-platform-tests-wdspec-e10s-3: QDj-RsxCQkGiHLofYVzyFg
+ test-windows10-64-qr/opt-web-platform-tests-wdspec-fis-e10s-1: NHoSANs4TIewNeC2vNn9Rg
+ test-windows10-64-qr/opt-web-platform-tests-wdspec-fis-e10s-2: YSJlBe7uQSWm3tmFNu9gBg
+ test-windows10-64-qr/opt-web-platform-tests-wdspec-fis-e10s-3: NO_-5n-4S4iahhzC0Wud_g
+ test-windows10-64-ref-hw-2017/opt-raptor-jetstream2-firefox-e10s: EsQXigsWQOatCmgq4LMx5g
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-1-firefox-e10s: NTxAqL92QSmaq_JFVJpKXA
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-10-firefox-e10s: QP-FH6K0TI259Vi0TgFt-w
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-2-firefox-e10s: LX4_c9mUR1-tw5OpsfhE9g
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-3-firefox-e10s: f-l2iaPNTwuGZRnOvtF_Kg
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-4-firefox-e10s: Bmn7omy2QlaqNhNTbIesMQ
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-5-firefox-e10s: aXwnewmPSMWsi84NM494tQ
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-6-firefox-e10s: CHKzD_lySMGoit3GNGqtgQ
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-7-firefox-e10s: E6zrIWwrR4-6dzRMEaw_hg
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-8-firefox-e10s: JsmoRLnsQimQYI9exL5NmQ
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-9-firefox-e10s: bn2eMLTWTE6S00Cl2kxa6A
+ test-windows10-64-ref-hw-2017/opt-raptor-youtube-playback-firefox-e10s: UZ4wvnZUTZez3DpOhJHW1w
+ test-windows10-64-ref-hw-2017/opt-talos-g4-e10s: dLaUMAiiQFWQvAraevSEjQ
+ test-windows10-64-ref-hw-2017/opt-talos-webgl-e10s: bYxJ-4p-Tuu5ptmQHMK4DQ
+ test-windows10-64-shippable-qr/opt-awsy-base-e10s: RFY7uZhJSxOnDIgNb5137w
+ test-windows10-64-shippable-qr/opt-awsy-e10s: YPvoa-FqSx-IY-fFVx1FEg
+ test-windows10-64-shippable-qr/opt-awsy-tp6-e10s: UjioAPY5QcmU6vu9N5Qwew
+ test-windows10-64-shippable-qr/opt-awsy-tp6-fis-e10s: LoZEdcXeTt-vIRWLfcZmrg
+ test-windows10-64-shippable-qr/opt-crashtest-e10s: BI3ef4DAQAaapOFcXLfD8Q
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-1: cPmZGS0_SbKX9jhzlt1c_Q
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-2: AC-CMYbtTCOqbKy76cY2KQ
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-3: ApWqkS6lQNm8_R9u1fv_tA
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-4: acGdQEJ5SiuNPcO5vPP_Wg
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-5: fQvu8aD8Sg2zPnA3pnrGLA
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-6: XGKIF4XEQsO5vgbn8nhhvQ
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-7: FfU4LPs6QoWz4HqJPAwUMg
+ test-windows10-64-shippable-qr/opt-mochitest-e10s-1: N8UNne8XSKSqxIrQJnSNiQ
+ test-windows10-64-shippable-qr/opt-mochitest-e10s-2: I-FNbHIETLerEBOOUVeekw
+ test-windows10-64-shippable-qr/opt-mochitest-e10s-3: F67WVUVASjKKLsdDfRLhAQ
+ test-windows10-64-shippable-qr/opt-mochitest-e10s-4: Abw-wivOS0iRO1_omLoOOQ
+ test-windows10-64-shippable-qr/opt-mochitest-e10s-5: DxKmSGikRIGcugsZmIwBFA
+ test-windows10-64-shippable-qr/opt-mochitest-gpu-e10s: AtKVYMkfR7qL1dk8c7S-VA
+ test-windows10-64-shippable-qr/opt-mochitest-media-e10s: c6rgYmwGSjKHYxhmlEZOvg
+ test-windows10-64-shippable-qr/opt-mochitest-media-spi-e10s: Xe47G_frTW6gIgFkofHDKw
+ test-windows10-64-shippable-qr/opt-mochitest-webgl1-core-e10s: JAGG46nMQee9iczRooUwXw
+ test-windows10-64-shippable-qr/opt-mochitest-webgl2-core-e10s: AxxNdEHySNW9Fhyw7OnwdA
+ test-windows10-64-shippable-qr/opt-mochitest-webgpu-e10s: KciG9DSUQqysMu5Qh_z5oA
+ test-windows10-64-shippable-qr/opt-raptor-ares6-firefox-e10s: FhEVRKtJRn6HUTftcKtnYQ
+ test-windows10-64-shippable-qr/opt-raptor-ares6-firefox-fis-e10s: W2BfphnnSiiBVDKftgoqUw
+ test-windows10-64-shippable-qr/opt-raptor-jetstream2-firefox-e10s: fiX1iDxYQxGUcWj7EaMOeg
+ test-windows10-64-shippable-qr/opt-raptor-jetstream2-firefox-fis-e10s: UylXNLj5QnWs7AP-e7yGUA
+ test-windows10-64-shippable-qr/opt-raptor-motionmark-animometer-firefox-e10s: ElOuReuzQiWEZJRUziHlIA
+ test-windows10-64-shippable-qr/opt-raptor-motionmark-animometer-firefox-fis-e10s: ZNMuu1q2QlmL_i4lHoTHxA
+ test-windows10-64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: MqwcmYVNTtyncq_OaLMVKg
+ test-windows10-64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-fis-e10s: U8Qd7KpkT4Kl07LKOSQR2w
+ test-windows10-64-shippable-qr/opt-raptor-speedometer-firefox-e10s: XtUxArMcQOmfCvZ283MVVQ
+ test-windows10-64-shippable-qr/opt-raptor-speedometer-firefox-fis-e10s: IyaA8RZLRWyIqYjcr_V-Yg
+ test-windows10-64-shippable-qr/opt-raptor-stylebench-firefox-e10s: dhG9swrPRoqu51NckXWrwA
+ test-windows10-64-shippable-qr/opt-raptor-stylebench-firefox-fis-e10s: CyxgkIiwQVWY0SX7CK3fpw
+ test-windows10-64-shippable-qr/opt-raptor-sunspider-firefox-e10s: C8u00Gs8RZ270qjdtGoqfg
+ test-windows10-64-shippable-qr/opt-raptor-sunspider-firefox-fis-e10s: PWGyijwTTf26Ik8owdI39A
+ test-windows10-64-shippable-qr/opt-raptor-tp6-1-firefox-cold-e10s: aYSYH360Q7O2noNP0hMCkw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-1-firefox-e10s: HqwYD8tXT8iF4P98RFjbaA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-1-firefox-fis-e10s: JutPcnKHSDSyUZhWiEllQw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-10-firefox-cold-e10s: TlfJmr8vSTieSMxJetMCiA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-10-firefox-e10s: LOhve9i7QkeeSS4nIdD2dA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-10-firefox-fis-e10s: VI9QM1c7TIyMVqOmNWkqNQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-11-firefox-cold-e10s: VMFEWU6FQPm4b-IldtNmmw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-12-firefox-cold-e10s: JuTtAyrkR4-aLKQ-3OSquA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-13-firefox-cold-e10s: Ww4ltjDPQzWP5rsNPoHpfA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-14-firefox-cold-e10s: dxr_Lts9RAaozXtEx2tetw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-15-firefox-cold-e10s: LuyCOEugT1KpphWpWyly6g
+ test-windows10-64-shippable-qr/opt-raptor-tp6-16-firefox-cold-e10s: Cr_qBQjsSuKix3kT19kbTw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-17-firefox-cold-e10s: SzOGfGAbQiemUGpsDDkwqw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-18-firefox-cold-e10s: LA6BOTRIQx2ALs8WEHHu3w
+ test-windows10-64-shippable-qr/opt-raptor-tp6-19-firefox-cold-e10s: NZpT4U1gSMOj5xJW8rn_Dg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-2-firefox-cold-e10s: YFJnbygCShGiYfqOkUsMAw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-2-firefox-e10s: H01WN6RGQlSN4uGknzMWIA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-2-firefox-fis-e10s: acWpqZS8QOC_QSue2cVgYw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-20-firefox-cold-e10s: JRB5KA-uSkyBBhMW-GCWAg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-21-firefox-cold-e10s: ed3tfQq0TzCWmWdY-nQD5g
+ test-windows10-64-shippable-qr/opt-raptor-tp6-22-firefox-cold-e10s: KKqpNs3ISRqgpue5eionMQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-23-firefox-cold-e10s: CwZS_maXRCSVuMZMqilS3Q
+ test-windows10-64-shippable-qr/opt-raptor-tp6-24-firefox-cold-e10s: M59SkayzSKqSru5Oix2-DQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-25-firefox-cold-e10s: EoqK_WxWRumnN_OOR3cjjA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-26-firefox-cold-e10s: Sw0sp141R7ewGZgDg0sg3w
+ test-windows10-64-shippable-qr/opt-raptor-tp6-27-firefox-cold-e10s: VkTuGmhlSr-84-LPXosTFg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-28-firefox-cold-e10s: Rxs-1pPKTF2zg7Sfl8q1AA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-29-firefox-cold-e10s: MSzOviDPSDaIPLsrdGuIUg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-3-firefox-cold-e10s: MHsFhOwBTFqPPt6b__pFMA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-3-firefox-e10s: Lo0fbK0yTT2-IXfW2nNeUQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-3-firefox-fis-e10s: DZ1SMtVmQPS1NFn8VN1MVA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-30-firefox-cold-e10s: V2iLcbDMQf6gtxBRR2_Nuw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-4-firefox-cold-e10s: QE6S6C2ZR0u-FxA2NabZJQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-4-firefox-e10s: WIHdwTr3ThGyK30WAiTKlw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-4-firefox-fis-e10s: FiFwZ8o_RvOnyAzLIifb-Q
+ test-windows10-64-shippable-qr/opt-raptor-tp6-5-firefox-cold-e10s: XVhTIO9hS2S3HfCBB1gWPQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-5-firefox-e10s: LG586QSBRK6LGHVLOOrvPg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-5-firefox-fis-e10s: cWRn0M2gQby5qL5wSNEqMA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-6-firefox-cold-e10s: DmPvm9u0RNqds3GWw2qpCA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-6-firefox-e10s: V0lAJzmjSJGfLsD9vp5P8w
+ test-windows10-64-shippable-qr/opt-raptor-tp6-6-firefox-fis-e10s: DQo03XwgSW6Rhe2VF18Qog
+ test-windows10-64-shippable-qr/opt-raptor-tp6-7-firefox-cold-e10s: HjsSath_Q9m8FfbWUC0-YQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-7-firefox-e10s: CCqNkujUTSaGw-eQVGqu6Q
+ test-windows10-64-shippable-qr/opt-raptor-tp6-7-firefox-fis-e10s: eHEbwreBSsG4hIaZRWNFcw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-8-firefox-cold-e10s: Lp_1sbo4REi2E_32LgOdjQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-8-firefox-e10s: D_y1-0aOSoqn3lbAJ2LUqw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-8-firefox-fis-e10s: ZWazVekXS76MSEITE0emCg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-9-firefox-cold-e10s: f-txtiGPRxSjR7NUEHubpg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-9-firefox-e10s: CrEvRGvQSxWv5SwqYj_2ag
+ test-windows10-64-shippable-qr/opt-raptor-tp6-9-firefox-fis-e10s: GTzbCDenSL-wumUeEvKVGg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-binast-1-firefox-e10s: UkervXjzRMa08L25Q3GP7Q
+ test-windows10-64-shippable-qr/opt-raptor-tp6-binast-1-firefox-fis-e10s: cMka0hRoQ5WPVltss68l9w
+ test-windows10-64-shippable-qr/opt-raptor-wasm-godot-firefox-e10s: IJSNtoxRSQKpMsaHwfV4dw
+ test-windows10-64-shippable-qr/opt-raptor-wasm-godot-firefox-fis-e10s: fMgNom5SQ_qF2e1ES2t-Qw
+ test-windows10-64-shippable-qr/opt-raptor-webaudio-firefox-e10s: SbX3dQH-TAuH7rYB_Ur4Ng
+ test-windows10-64-shippable-qr/opt-raptor-webaudio-firefox-fis-e10s: SyyjNoWIRB-vCEcqHxpZVQ
+ test-windows10-64-shippable-qr/opt-raptor-youtube-playback-firefox-e10s: eZMnDGhqQYmx4_1KZTaNTQ
+ test-windows10-64-shippable-qr/opt-raptor-youtube-playback-firefox-fis-e10s: JSZ5BYtSSgqwmV9AUj6CfA
+ test-windows10-64-shippable-qr/opt-reftest-e10s-1: fUcMn3EyRraVQ0aOTKztgA
+ test-windows10-64-shippable-qr/opt-reftest-e10s-2: QqpwsyZrQ3q_YJ7mOeyjBQ
+ test-windows10-64-shippable-qr/opt-talos-chrome-e10s: cAdYd1QxTsuGa1y_LJN2sQ
+ test-windows10-64-shippable-qr/opt-talos-chrome-fis-e10s: UGYFQxG5TJWQUb3xQKamng
+ test-windows10-64-shippable-qr/opt-talos-damp-e10s: UlRSW0L0QaCi_iK2iabfmA
+ test-windows10-64-shippable-qr/opt-talos-damp-fis-e10s: Q8HAmjHfQKuhioj6piqkeA
+ test-windows10-64-shippable-qr/opt-talos-dromaeojs-e10s: eb0JK8VISY-g2tkGqnOkfQ
+ test-windows10-64-shippable-qr/opt-talos-dromaeojs-fis-e10s: RJxnV0i8SwC2O48Ra0KEPg
+ test-windows10-64-shippable-qr/opt-talos-g1-e10s: XUO2gNawT0OsuuYkNiJokQ
+ test-windows10-64-shippable-qr/opt-talos-g1-fis-e10s: TA9IYK8JSy2mWCt_E9eXiw
+ test-windows10-64-shippable-qr/opt-talos-g4-e10s: G7p-7IEyS2aY6C6DfT3zpg
+ test-windows10-64-shippable-qr/opt-talos-g4-fis-e10s: Uaa0lFOnQB6EKCaD9t3MIg
+ test-windows10-64-shippable-qr/opt-talos-g5-e10s: YSLi59w0QyaPkEGdFpkJOw
+ test-windows10-64-shippable-qr/opt-talos-g5-fis-e10s: JY-wWC63QqS_5e86VzDEwg
+ test-windows10-64-shippable-qr/opt-talos-other-e10s: JNBl4Q53RVq2J6XbPNf18Q
+ test-windows10-64-shippable-qr/opt-talos-other-fis-e10s: aGEPjdN8TX6RIsdM-8_G6Q
+ test-windows10-64-shippable-qr/opt-talos-perf-reftest-e10s: LHOCf9b6S-GDhNMDQx2yCQ
+ test-windows10-64-shippable-qr/opt-talos-perf-reftest-fis-e10s: fMh64pF3Q8uiZ_Z18SmoYQ
+ test-windows10-64-shippable-qr/opt-talos-perf-reftest-singletons-e10s: B-nFwpZbRWu3RBNG7-eS-A
+ test-windows10-64-shippable-qr/opt-talos-perf-reftest-singletons-fis-e10s: cqURoT9_Qf-WWt0ofBhY5A
+ test-windows10-64-shippable-qr/opt-talos-realworld-webextensions-e10s: O-31G44aTDGDonu6pJfXnA
+ test-windows10-64-shippable-qr/opt-talos-realworld-webextensions-fis-e10s: encsyee8RAu6LsOzSlNmkw
+ test-windows10-64-shippable-qr/opt-talos-sessionrestore-many-windows-e10s: KWcOXeWtQt6s8f_LooQtBg
+ test-windows10-64-shippable-qr/opt-talos-sessionrestore-many-windows-fis-e10s: c3qKmFhTQciFYo9S7jV69Q
+ test-windows10-64-shippable-qr/opt-talos-svgr-e10s: NzMD09sFSQOvJM3qz1cnhA
+ test-windows10-64-shippable-qr/opt-talos-svgr-fis-e10s: W8KPC5V9RCiON-KZQT_rVA
+ test-windows10-64-shippable-qr/opt-talos-tabswitch-e10s: XZO_INu6SFWriOU9eIzN-Q
+ test-windows10-64-shippable-qr/opt-talos-tabswitch-fis-e10s: Ovsq5znURx2lN-kpILfcrg
+ test-windows10-64-shippable-qr/opt-talos-tp5o-e10s: U_SsFO51R4qX8CZRd1SubA
+ test-windows10-64-shippable-qr/opt-talos-tp5o-fis-e10s: F0-igK4dSgavazSdTagUnQ
+ test-windows10-64-shippable-qr/opt-talos-webgl-e10s: K7y54qFSTSKNPidJH7IbAg
+ test-windows10-64-shippable-qr/opt-talos-webgl-fis-e10s: DzjlKq0BQo2gp7OTn29uBQ
+ test-windows10-64-shippable-qr/opt-talos-xperf-e10s: crX0PGryRQ2upZ7ui9k3gQ
+ test-windows10-64-shippable-qr/opt-talos-xperf-fis-e10s: OtBF7HpFR3yTUVYsbL69OQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-crashtests-e10s: IikhI7FWTeSWE0Fu7U9MQw
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-1: RgZCZF4QRPCJy-NX23mAUg
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-10: F3FTs0qeTvSHNEAc0N8ajQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-11: dHOaPOwLQx-pitmJ68UDhQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-12: Bb8l1yu-TJa21hxQWk3SRQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-2: Meqv_Zf1QdCUg3wIh3miqA
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-3: LxwZuG2FRdSakD30DP5Wcw
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-4: fIOvsSjYTdGjbsG7DQ4Lgw
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-5: HbiWstn6R9KVZsrEKMfTcQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-6: WlFEaNFyTpeCkm61lr31vw
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-7: Pdz3m1siTHeVgO3zhtvoSw
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-8: B18EwLBQR9-wDgORGREx-Q
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-9: D3pSMF9cR9K-5j9KpihGCw
+ test-windows10-64-shippable-qr/opt-web-platform-tests-reftests-e10s-1: NpWOzOXaRpqv8cIOlhCGVA
+ test-windows10-64-shippable-qr/opt-web-platform-tests-reftests-e10s-2: GRbs_QfHQAODa7J3Y5iAUQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-reftests-e10s-3: WJl8ts0tT1C1Lf6eE3HnPQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-reftests-e10s-4: MxswqwzaQ--kJx3GifIcqA
+ test-windows10-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-1: L4KPBr3WSyioSLplO4CL7Q
+ test-windows10-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-2: DOE6WZxrTbqXZnqW-zixjg
+ test-windows10-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-3: ZgPE5O1rSIGVCKcsOkmveA
+ test-windows10-64-shippable/opt-awsy-base-e10s: NpxI_tmWSFWc8AxxlZoZjw
+ test-windows10-64-shippable/opt-awsy-e10s: S8Di8aw-Q0uBWl9fwABbDg
+ test-windows10-64-shippable/opt-awsy-tp6-e10s: A9paOOf9QOmgjQux4iWoXA
+ test-windows10-64-shippable/opt-browser-screenshots-e10s: e1AATKSBRSaCZydjnsti-A
+ test-windows10-64-shippable/opt-browsertime-tp6-chrome-cold-amazon-e10s: CgSHBVG-SYiQ8ZH0KZQSNg
+ test-windows10-64-shippable/opt-browsertime-tp6-firefox-amazon-e10s: UySNl6a5SESOk4mPAyFdcg
+ test-windows10-64-shippable/opt-browsertime-tp6-firefox-cold-amazon-e10s: IwNvH3Y1RH2NAn7L2SBX3w
+ test-windows10-64-shippable/opt-browsertime-tp6-profiling-firefox-amazon-e10s: DJSkLMY-R1CELtio516ERA
+ test-windows10-64-shippable/opt-browsertime-tp6-profiling-firefox-cold-amazon-e10s: OHnsKmRPQCKLBPlRgITgjA
+ test-windows10-64-shippable/opt-cppunit-1proc: M1FE9jUHTCaQZlluQvggdw
+ test-windows10-64-shippable/opt-crashtest-e10s: TUMwnVJDRai-V-NpIXrMaw
+ test-windows10-64-shippable/opt-firefox-ui-functional-local-e10s: Agx9OAhISOS2NnXB7cB0qQ
+ test-windows10-64-shippable/opt-firefox-ui-functional-remote-e10s: D8YOjqZqTW2SiIT-mhzPrw
+ test-windows10-64-shippable/opt-jsreftest-e10s-1: f0-w5-sLRPS5503NtXec9A
+ test-windows10-64-shippable/opt-jsreftest-e10s-2: CPHbjcukTR2JwLTgzlZE9w
+ test-windows10-64-shippable/opt-marionette-e10s: UprRhY_FTX6Hr4Gkrs3XRA
+ test-windows10-64-shippable/opt-marionette-gpu-e10s: ZMvsUaKDRaio7PdRblrPOQ
+ test-windows10-64-shippable/opt-mochitest-a11y-1proc: aPYyoyAXQieTPHBq3qZf2A
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-1: O2A38rPiR_G95cvc8Lw7Kg
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-2: eRhZtEGlR0yKZc04ot-x6w
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-3: H9jcPn4cQKucGgWdWUgvuQ
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-4: EbNT2FlMS22gYwOWNVCZfA
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-5: EYG_J9tMTLqAk1PBU58R6w
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-6: HBMnYhkoS42LBvho7fmFIg
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-7: dtIcWhfbTy2VFZee_AKuoQ
+ test-windows10-64-shippable/opt-mochitest-chrome-1proc-1: CKctHr2hQcKhmVcvl8XenQ
+ test-windows10-64-shippable/opt-mochitest-chrome-1proc-2: GrLRzoSVT5O4NpyLsks9Ag
+ test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-1: V5s1vCBMQGy9dxF7Au45Ug
+ test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-2: CouvmGJ-QiOHcmIRHAet9A
+ test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-3: W43QTlx7SZ6i-i-1kgGD_g
+ test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-4: YTtu7shbQva3Ghc85laHTw
+ test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-5: ftinPnx8Qc6WxMO33tZSLw
+ test-windows10-64-shippable/opt-mochitest-e10s-1: fdkcremFT8iIgG08J_5PKQ
+ test-windows10-64-shippable/opt-mochitest-e10s-2: f92s-LgeRUG3uGeXANv-LA
+ test-windows10-64-shippable/opt-mochitest-e10s-3: er8Hx7A8QEqbcUXk0Wawng
+ test-windows10-64-shippable/opt-mochitest-e10s-4: DTC0_K3uRMmMccfknmZMJQ
+ test-windows10-64-shippable/opt-mochitest-e10s-5: RDie41GRSsSP-6F2_N_v7Q
+ test-windows10-64-shippable/opt-mochitest-gpu-e10s: ckZloQttTOGpWw37mPqbNg
+ test-windows10-64-shippable/opt-mochitest-media-e10s: Qs9GrtoFR9ub64Hf0GrJdw
+ test-windows10-64-shippable/opt-mochitest-media-spi-e10s: JoLV_XiFTHe4PaCkXq6wAQ
+ test-windows10-64-shippable/opt-mochitest-remote-e10s: eJS4m5r2RjGRfLUFMnxqSw
+ test-windows10-64-shippable/opt-mochitest-webgl1-core-e10s: Jlkl0MR_Qc2Ca_Okl2_D3g
+ test-windows10-64-shippable/opt-mochitest-webgl1-ext-e10s: P-RN5_EuTC6K5Lpww6thNQ
+ test-windows10-64-shippable/opt-mochitest-webgl2-core-e10s: KK6YttDnTIOkH7OVXLrdiw
+ test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-1: cSTPDXIbSmaItzK8BILkRQ
+ test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-2: Uby6fdwwQJCebrQBraSBNg
+ test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-3: DoiJAsaKQQm1iPwcHPM9dw
+ test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-4: Qmajp6vHTrm3g3KHklIwiA
+ test-windows10-64-shippable/opt-mochitest-webgpu-e10s: P9wBrASdSQOGKDpuag1YqQ
+ test-windows10-64-shippable/opt-raptor-ares6-firefox-e10s: L70O2h86TmeZD4G30rfw_Q
+ test-windows10-64-shippable/opt-raptor-ares6-firefox-profiling-e10s: NvOS5pZLQSSal4x-efcP5A
+ test-windows10-64-shippable/opt-raptor-jetstream2-firefox-e10s: cpf-22pWQqCmW0WRoJerlg
+ test-windows10-64-shippable/opt-raptor-jetstream2-firefox-profiling-e10s: fSegP60aQWeQXUlSyTpSWA
+ test-windows10-64-shippable/opt-raptor-motionmark-animometer-firefox-e10s: RiOVOq9bSNSAGnkKD63_4A
+ test-windows10-64-shippable/opt-raptor-motionmark-animometer-firefox-profiling-e10s: YNEb7ykVST-0sdGteo58Ig
+ test-windows10-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: A2K3enRkS1etFUodGUkJ3Q
+ test-windows10-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-profiling-e10s: C_Bt__ezSgCP8TBtRhZ0nA
+ test-windows10-64-shippable/opt-raptor-speedometer-firefox-e10s: F2lVcHktTDCcq-f3QV9Neg
+ test-windows10-64-shippable/opt-raptor-speedometer-firefox-profiling-e10s: aaHST-ggTO6_fuRftw9GCw
+ test-windows10-64-shippable/opt-raptor-stylebench-firefox-e10s: RItx6xnDR9a2RUdYodCmsg
+ test-windows10-64-shippable/opt-raptor-stylebench-firefox-profiling-e10s: YAp1Yj7CTzK2KuXZqBeplQ
+ test-windows10-64-shippable/opt-raptor-sunspider-firefox-e10s: TLv8NyaJSmSzGCj-11RnHQ
+ test-windows10-64-shippable/opt-raptor-sunspider-firefox-profiling-e10s: PZTlWx8TSyaAPn5QBF0PWg
+ test-windows10-64-shippable/opt-raptor-tp6-1-firefox-cold-e10s: Vj3Dp2B2TGSk58img_8_Hw
+ test-windows10-64-shippable/opt-raptor-tp6-1-firefox-e10s: Es8_u4WmQPmrqF06Pq9oEQ
+ test-windows10-64-shippable/opt-raptor-tp6-1-firefox-profiling-e10s: aL6Hwrz6S5iMOYMemPcfrQ
+ test-windows10-64-shippable/opt-raptor-tp6-10-firefox-cold-e10s: Lb63H9quRSOeOwZaxBpJmw
+ test-windows10-64-shippable/opt-raptor-tp6-10-firefox-e10s: AkrcMgosTWeqPv4Iy73AHg
+ test-windows10-64-shippable/opt-raptor-tp6-10-firefox-profiling-e10s: aqmgJoqNRZm6PPQD694FfA
+ test-windows10-64-shippable/opt-raptor-tp6-11-firefox-cold-e10s: Y6Q-Rqm9TPyZKoZcoKQ3pw
+ test-windows10-64-shippable/opt-raptor-tp6-12-firefox-cold-e10s: MiDXlKAbQc-4KVMJuNdKhw
+ test-windows10-64-shippable/opt-raptor-tp6-13-firefox-cold-e10s: E7o9-ejoTxeXWuh0Wwz9RQ
+ test-windows10-64-shippable/opt-raptor-tp6-14-firefox-cold-e10s: Q49ALU2ASFe-YfES0dJXJw
+ test-windows10-64-shippable/opt-raptor-tp6-15-firefox-cold-e10s: PI6hc0GCS0ymqWeOZUerxQ
+ test-windows10-64-shippable/opt-raptor-tp6-16-firefox-cold-e10s: MhiNg4hzT423ZiHjrKWJpw
+ test-windows10-64-shippable/opt-raptor-tp6-17-firefox-cold-e10s: RAL-e-H6Smue-U-4vXZpxw
+ test-windows10-64-shippable/opt-raptor-tp6-18-firefox-cold-e10s: EGdFwwQGRsSMsSANpymMgg
+ test-windows10-64-shippable/opt-raptor-tp6-19-firefox-cold-e10s: IVTnj3rbQqWcGMF0vx6UNA
+ test-windows10-64-shippable/opt-raptor-tp6-2-firefox-cold-e10s: JsmwV_GWSg27enm85HgVDg
+ test-windows10-64-shippable/opt-raptor-tp6-2-firefox-e10s: K3cq1zaIQ2S7Yrdvm6toQg
+ test-windows10-64-shippable/opt-raptor-tp6-2-firefox-profiling-e10s: HURBH6rmR76V9c7ztGjbLw
+ test-windows10-64-shippable/opt-raptor-tp6-20-firefox-cold-e10s: LmseXB8MQ-iDXUZRGTbNQw
+ test-windows10-64-shippable/opt-raptor-tp6-21-firefox-cold-e10s: L5mZo9WeTCydhMCibnNkvg
+ test-windows10-64-shippable/opt-raptor-tp6-22-firefox-cold-e10s: HrbnpZjxSfSXJTLXDo8Y0Q
+ test-windows10-64-shippable/opt-raptor-tp6-23-firefox-cold-e10s: YDqnNthoQyeQy6wAZL_YeA
+ test-windows10-64-shippable/opt-raptor-tp6-24-firefox-cold-e10s: aaMBIZH7QpuZSh9UU21R1g
+ test-windows10-64-shippable/opt-raptor-tp6-25-firefox-cold-e10s: ZvODqIkCT5SRjtSKBZdp2g
+ test-windows10-64-shippable/opt-raptor-tp6-26-firefox-cold-e10s: OVrflOipSKWesuVzGUQ97w
+ test-windows10-64-shippable/opt-raptor-tp6-27-firefox-cold-e10s: cWLAn7xiRPO3FTvOdgjD4A
+ test-windows10-64-shippable/opt-raptor-tp6-28-firefox-cold-e10s: ejjmY00WRJ2q1L8AN3TMmQ
+ test-windows10-64-shippable/opt-raptor-tp6-29-firefox-cold-e10s: aaBFv-DDRFqlLBU2IYmJdg
+ test-windows10-64-shippable/opt-raptor-tp6-3-firefox-cold-e10s: CQdGqK_pT5-0KOcjs3xAXg
+ test-windows10-64-shippable/opt-raptor-tp6-3-firefox-e10s: BOp02Rj7S0O3M0nR1YQrLQ
+ test-windows10-64-shippable/opt-raptor-tp6-3-firefox-profiling-e10s: YneV4veoRaGa15Ok8-U07w
+ test-windows10-64-shippable/opt-raptor-tp6-30-firefox-cold-e10s: Y1mJMelESyWc31C5rnTAEA
+ test-windows10-64-shippable/opt-raptor-tp6-4-firefox-cold-e10s: YUCoNMQbRJucufggCXuyWA
+ test-windows10-64-shippable/opt-raptor-tp6-4-firefox-e10s: f680hxAWQP62Ah-zQ7ejzw
+ test-windows10-64-shippable/opt-raptor-tp6-4-firefox-profiling-e10s: DSF13-ssS0eUS4-PZeg7UA
+ test-windows10-64-shippable/opt-raptor-tp6-5-firefox-cold-e10s: N52RHHSsTy2IBVHWMDDc3A
+ test-windows10-64-shippable/opt-raptor-tp6-5-firefox-e10s: ZA4qlHykQ4Gh95DFNApyjg
+ test-windows10-64-shippable/opt-raptor-tp6-5-firefox-profiling-e10s: SgnFK8gaRYW1WwfzJ3_F6A
+ test-windows10-64-shippable/opt-raptor-tp6-6-firefox-cold-e10s: VH1c51peTPae9feWLB1x2A
+ test-windows10-64-shippable/opt-raptor-tp6-6-firefox-e10s: RePzEQzXRByQoLzggLhUgA
+ test-windows10-64-shippable/opt-raptor-tp6-6-firefox-profiling-e10s: ZPNmGyfyRt6_cfrthyKt3A
+ test-windows10-64-shippable/opt-raptor-tp6-7-firefox-cold-e10s: QPt1VvdGRfmSzhrrXTm1xQ
+ test-windows10-64-shippable/opt-raptor-tp6-7-firefox-e10s: Wzw-RmmvQKuxJhevB3iVHA
+ test-windows10-64-shippable/opt-raptor-tp6-7-firefox-profiling-e10s: CDeItvQ_QEKR_tE6tJKG0Q
+ test-windows10-64-shippable/opt-raptor-tp6-8-firefox-cold-e10s: NBtAKKdEQPmihcEqIdrDoQ
+ test-windows10-64-shippable/opt-raptor-tp6-8-firefox-e10s: ASngoNXQTnqcgD5H8aqvSw
+ test-windows10-64-shippable/opt-raptor-tp6-8-firefox-profiling-e10s: KgteMG3sTNGYBpBsytH7mg
+ test-windows10-64-shippable/opt-raptor-tp6-9-firefox-cold-e10s: fg5HkgfmSn-bIICG5moODA
+ test-windows10-64-shippable/opt-raptor-tp6-9-firefox-e10s: Vg5bQIirRq2TKS-FYFJCHQ
+ test-windows10-64-shippable/opt-raptor-tp6-9-firefox-profiling-e10s: CPwWXxFMRdWoTnsH_1z69w
+ test-windows10-64-shippable/opt-raptor-tp6-binast-1-firefox-e10s: KVyjNNveTb-9XutNizhhEw
+ test-windows10-64-shippable/opt-raptor-wasm-godot-firefox-e10s: KKLD-M22Qv6fHg_BcB5n0w
+ test-windows10-64-shippable/opt-raptor-wasm-godot-firefox-profiling-e10s: eLjL9LrDTBmfq00NM39o4w
+ test-windows10-64-shippable/opt-raptor-webaudio-firefox-e10s: TiYFD7tXTjWmjEJT0Yt_jw
+ test-windows10-64-shippable/opt-raptor-webaudio-firefox-profiling-e10s: XRPUfz5gTES2DkLTJEEGfA
+ test-windows10-64-shippable/opt-raptor-youtube-playback-firefox-e10s: OwuuZ5WoQRKTACl_KBQ-9g
+ test-windows10-64-shippable/opt-raptor-youtube-playback-firefox-profiling-e10s: W20FHgdHToiCftAC0J45Vw
+ test-windows10-64-shippable/opt-reftest-e10s-1: Wx51KDMITZqwRWwJekAvYQ
+ test-windows10-64-shippable/opt-reftest-e10s-2: VE7OrnqwSZyW1jPGVNJBqA
+ test-windows10-64-shippable/opt-talos-bcv-e10s: OrTd0EeXTeO2WU_RQMKUig
+ test-windows10-64-shippable/opt-talos-bcv-profiling-e10s: ZivknYOtR5S6csTEXn1aTQ
+ test-windows10-64-shippable/opt-talos-chrome-e10s: QxKMY3gsRs-f6PR2dwdglg
+ test-windows10-64-shippable/opt-talos-chrome-profiling-e10s: OnJSaIOgSSGR6swkosDh_g
+ test-windows10-64-shippable/opt-talos-damp-e10s: buYNG52WSgGaUPj76F-QSQ
+ test-windows10-64-shippable/opt-talos-dromaeojs-e10s: BYiJhT5XSYu_Yt0YrYREsw
+ test-windows10-64-shippable/opt-talos-dromaeojs-profiling-e10s: Vt18vdIeRqiO79zVpN60pQ
+ test-windows10-64-shippable/opt-talos-g1-e10s: JtPRdJW-RZmi2XIixu26MA
+ test-windows10-64-shippable/opt-talos-g1-profiling-e10s: Gy-wPmBkS2Sh-V4rZfPGRg
+ test-windows10-64-shippable/opt-talos-g3-profiling-e10s: bb22Y6SgTvqIajuuUfuDDw
+ test-windows10-64-shippable/opt-talos-g4-e10s: E45ovx9qRaSJC5j9YD8RdQ
+ test-windows10-64-shippable/opt-talos-g4-profiling-e10s: LgEAXtV2Rimewu7yMIM86Q
+ test-windows10-64-shippable/opt-talos-g5-e10s: bv3K9Cw4S_ivTbqpJQruUA
+ test-windows10-64-shippable/opt-talos-g5-profiling-e10s: TCTNFHPsTviaKkGNRZ9B0Q
+ test-windows10-64-shippable/opt-talos-motionmark-profiling-e10s: HsTypbkDRzmuCQ2crOvuHg
+ test-windows10-64-shippable/opt-talos-other-e10s: D7njtMfBQyeNtFh1T8QJ0w
+ test-windows10-64-shippable/opt-talos-other-profiling-e10s: BemUBpiUSdeW_Jwxnvf4lg
+ test-windows10-64-shippable/opt-talos-perf-reftest-e10s: OmbRANhQT_-Lo3S7akQHUA
+ test-windows10-64-shippable/opt-talos-perf-reftest-profiling-e10s: a0uMt-YAS8W5axDGbz5ksg
+ test-windows10-64-shippable/opt-talos-perf-reftest-singletons-e10s: eX3EhE-9TjiLen1FoNshvA
+ test-windows10-64-shippable/opt-talos-perf-reftest-singletons-profiling-e10s: NU4FgBWzRjKYjMpme0fwqw
+ test-windows10-64-shippable/opt-talos-realworld-webextensions-e10s: BtKkq9AoRvOSOzDLJKZEIA
+ test-windows10-64-shippable/opt-talos-realworld-webextensions-profiling-e10s: aNWTqkDiSpKpC6cR5vGt5Q
+ test-windows10-64-shippable/opt-talos-sessionrestore-many-windows-e10s: Kz8H9mnJQmWjRtdCMLbTMA
+ test-windows10-64-shippable/opt-talos-sessionrestore-many-windows-profiling-e10s: C9SOHQxAQ8ONqIoa0InckA
+ test-windows10-64-shippable/opt-talos-svgr-e10s: GUHLaRs_ToWH29RksN-2Mw
+ test-windows10-64-shippable/opt-talos-svgr-profiling-e10s: U4Fp-ugMR2yIuzZDV__xmQ
+ test-windows10-64-shippable/opt-talos-tabswitch-e10s: Ushtm2_MQVeZeSN9cg0jVg
+ test-windows10-64-shippable/opt-talos-tabswitch-profiling-e10s: Hdlg8B6uQLywt3kcAc9OBA
+ test-windows10-64-shippable/opt-talos-tp5o-e10s: Ua05MJ6CTXeLHavPzj9hYw
+ test-windows10-64-shippable/opt-talos-tp5o-profiling-e10s: EYIUP2EZRiSAY3i-OdYAHQ
+ test-windows10-64-shippable/opt-talos-webgl-e10s: ENjNIBC8SJSOqG80HGP01Q
+ test-windows10-64-shippable/opt-talos-xperf-e10s: TISVHvdFRNmW5bvCGn1VqA
+ test-windows10-64-shippable/opt-telemetry-tests-client-e10s: R0nLKptvQ2qju3v33cwLfQ
+ test-windows10-64-shippable/opt-web-platform-tests-crashtests-e10s: OZgXaBUBQmGZZeRO-hrLaQ
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-1: JU3HTR52S9SrjAluucag4A
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-10: UtNs8Vh4Rrm6nOBaIyNkGg
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-11: CJ_ibGY2TRGzUTaEe4yw4Q
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-12: Z5WkOXv8R4-9rfIq8YFPXw
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-2: QbZo3jf5QVuk_1onmhXAnw
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-3: FStgzGIzQ6S84BjXeJ5ixg
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-4: WCoXsgujSSOzIkz4rvioVg
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-5: cDY4uUzHTzKRm15mTXwb2Q
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-6: DLZsdMMoSM2Eud6i54GW7g
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-7: ep7G12YzQUCWMDfLudm0xw
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-8: Pfuek6XJTxSTU60G7fiv6A
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-9: PH8LYfkaQQ6oHT34bqDGnw
+ test-windows10-64-shippable/opt-web-platform-tests-reftests-e10s-1: G7ZvPALjS86usa-NP8TVqA
+ test-windows10-64-shippable/opt-web-platform-tests-reftests-e10s-2: XGpAHu2uTiG1-uOq06rnkw
+ test-windows10-64-shippable/opt-web-platform-tests-reftests-e10s-3: chtUZqEGRXWIojJ0wer7Fw
+ test-windows10-64-shippable/opt-web-platform-tests-reftests-e10s-4: AN6BAJdbS6myyol4Yd3Trg
+ test-windows10-64-shippable/opt-web-platform-tests-wdspec-e10s-1: KURck8xDRSq1FWGbpclFSw
+ test-windows10-64-shippable/opt-web-platform-tests-wdspec-e10s-2: Jl_LyLszS826bWoIzp_-Aw
+ test-windows10-64-shippable/opt-web-platform-tests-wdspec-e10s-3: IxmbM36HTGG1LfXLtzWT_Q
+ test-windows10-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: SGE3kcyjS4GdHtono2jTRg
+ test-windows10-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: S4KRSIMKSNiU2APAaURcWw
+ test-windows10-64-shippable/opt-xpcshell-e10s-1: IcOnFMDyQ4yQN-A2HZj8vw
+ test-windows10-64-shippable/opt-xpcshell-e10s-2: YXGJ6KaGR1mMu3CBsu0ycA
+ test-windows10-64/debug-cppunit-1proc: fNDS_poQRVaERQa1mAr3UQ
+ test-windows10-64/debug-crashtest-e10s: IR0c7Hl9TmuMcUSpxSQ3Jg
+ test-windows10-64/debug-firefox-ui-functional-local-e10s: A5MN1k_8QPiU96Tlk_S-Iw
+ test-windows10-64/debug-firefox-ui-functional-remote-e10s: NLJMdJRfSfOnCaZK8ayjsQ
+ test-windows10-64/debug-gtest-1proc: J0DbR21DRBCUdAHZr9jLrQ
+ test-windows10-64/debug-jsreftest-e10s-1: cSZEUn7MSaSrEIYbceOa6A
+ test-windows10-64/debug-jsreftest-e10s-2: eQUD5FDcSAGJF-IKpvoN0A
+ test-windows10-64/debug-jsreftest-e10s-3: HJEemd_uTdKaxjVjeQuv0g
+ test-windows10-64/debug-marionette-e10s: I6dL6UyPRw6HLFTCLrw-1w
+ test-windows10-64/debug-marionette-gpu-e10s: Wbcqia1MR_iK7SCFbsukAA
+ test-windows10-64/debug-mochitest-a11y-1proc: fJ421k-TRUmQVQ2cv-HuVg
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-1: Yy2P3cGYQ76tJPBnCn1QjQ
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-2: HDuaXuJ6R22ITVlDVrlZuA
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-3: NmnpSg5HTW2UjQsje2DK7A
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-4: OGf4P0i3T3mLBVxD6wimxA
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-5: BuCxybBdQEeowKQMdUyN8w
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-6: G3Sdu_PlRQeY_H_2YEqLeQ
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-7: CPFgUHwXRW6xVwCX1DXfxg
+ test-windows10-64/debug-mochitest-chrome-1proc-1: Ecc39hSvR1CavqPl2IC2rQ
+ test-windows10-64/debug-mochitest-chrome-1proc-2: flZvRm9-Tq2BxpYKCTIJpg
+ test-windows10-64/debug-mochitest-chrome-1proc-3: GImQJPm8QTqRWacRf0RSWA
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-1: RUI2XdgPTRSs0O6SKQtMXA
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-2: UkavNYGGRSiBvsYP9xWASA
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-3: aM6mrh4qS-yuwS9EKGZQgg
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-4: LMtmPeMZS5eUEHBKMZB8ig
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-5: NBw2imNMQySTNItaz3xZrQ
+ test-windows10-64/debug-mochitest-e10s-1: bB1x5dqST6yhRNJFaAlkMw
+ test-windows10-64/debug-mochitest-e10s-2: WjL77yxLQFO6MURDnwZKvQ
+ test-windows10-64/debug-mochitest-e10s-3: TPoltnVHQ4ip73ReMh-u0w
+ test-windows10-64/debug-mochitest-e10s-4: AdS81rcuR_CTg7j1OD9xUw
+ test-windows10-64/debug-mochitest-e10s-5: VXHtnxMPQCC3puZyQ5VfVQ
+ test-windows10-64/debug-mochitest-gpu-e10s: dtJNtrhoT7uMYs-h4LB9Eg
+ test-windows10-64/debug-mochitest-media-e10s: LO7olhztS6aLAFpS158YWw
+ test-windows10-64/debug-mochitest-media-spi-e10s: GjV2yGsLSLK0k-qbtkr7rQ
+ test-windows10-64/debug-mochitest-remote-e10s: eiUEiRqdRs-44pZeWGAXGg
+ test-windows10-64/debug-mochitest-webgl1-core-e10s: bp-mhP8dSJqhq0Bdqs07FA
+ test-windows10-64/debug-mochitest-webgl1-ext-e10s: L_mMHOdQQNaFtX0rcUTCdQ
+ test-windows10-64/debug-mochitest-webgl2-core-e10s: LF3W0xsCTk-f3qwEIPjPow
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-1: RLL8TV_ERNiRBLzAlR1-tA
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-2: W2Xok4ifQnm_9quVRaDGYw
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-3: MQBHrVCURCOTyfEgVa3jeg
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-4: QkOiKhZ7QJGNCIZrz0MJFg
+ test-windows10-64/debug-mochitest-webgpu-e10s: aP3uV12eR9K8Qxanp2nCUw
+ test-windows10-64/debug-reftest-e10s-1: VCUj3aU5TyujynaVRjskHw
+ test-windows10-64/debug-reftest-e10s-2: fB1HwP4XTE6rcOL-hP9qEA
+ test-windows10-64/debug-reftest-e10s-3: YWSwfgWyQ4izksOZokXICA
+ test-windows10-64/debug-reftest-e10s-4: G7wppz4zTQOQjM6SbERDhw
+ test-windows10-64/debug-telemetry-tests-client-e10s: cYwfGfIBTIWtDtGc-SjiqQ
+ test-windows10-64/debug-web-platform-tests-crashtests-e10s: GMTbaSwJTwqqK2v5SMyczA
+ test-windows10-64/debug-web-platform-tests-e10s-1: b3Y1Vvb0TO65C0UFUN7mSA
+ test-windows10-64/debug-web-platform-tests-e10s-10: HZcBnH3yQ9K5FmvRFyD3Bw
+ test-windows10-64/debug-web-platform-tests-e10s-11: R6Ny4nifSIO0tjelsGwzDQ
+ test-windows10-64/debug-web-platform-tests-e10s-12: dwf1xrS1RzuxrbZAoZk3Yw
+ test-windows10-64/debug-web-platform-tests-e10s-13: SujWz9KZRc-cOjtxq_1Wqw
+ test-windows10-64/debug-web-platform-tests-e10s-14: Gc1A_BLUTQ26bAX5pYkgxw
+ test-windows10-64/debug-web-platform-tests-e10s-15: eI6971Y7R22_m91uJ1WkAA
+ test-windows10-64/debug-web-platform-tests-e10s-16: cf1cwf0lQDSek6XOWzUPCA
+ test-windows10-64/debug-web-platform-tests-e10s-17: FqwayIBsQSm9Rz0ZGkJcUg
+ test-windows10-64/debug-web-platform-tests-e10s-18: Xaepwh4cT_Gvoc4gZE8QbA
+ test-windows10-64/debug-web-platform-tests-e10s-2: YiC42o0jQ-Cnk8FIri4pQA
+ test-windows10-64/debug-web-platform-tests-e10s-3: B6Iz1onDSJOh96rYrV762w
+ test-windows10-64/debug-web-platform-tests-e10s-4: Gs6sD0WvRTGD41R9K-Cm_Q
+ test-windows10-64/debug-web-platform-tests-e10s-5: E1Alm7mgSP-MfN5WZM4wlA
+ test-windows10-64/debug-web-platform-tests-e10s-6: Fw-9gGXpSbKvaUg9tm-ucQ
+ test-windows10-64/debug-web-platform-tests-e10s-7: DsgMYFtbRYm4NqkXlQrkfA
+ test-windows10-64/debug-web-platform-tests-e10s-8: F6mMRvCQSOisL6uE62cJDA
+ test-windows10-64/debug-web-platform-tests-e10s-9: QFDUzlpbS82XDxnCSdcy5g
+ test-windows10-64/debug-web-platform-tests-reftests-e10s-1: NMCg6Vm-ToCAT0m-QY1Phw
+ test-windows10-64/debug-web-platform-tests-reftests-e10s-2: R3C1_fjURbudDSLbLDK8dg
+ test-windows10-64/debug-web-platform-tests-reftests-e10s-3: NyS4QbhDR7iiUVGEz2ezHA
+ test-windows10-64/debug-web-platform-tests-reftests-e10s-4: Shq1j8D9QOuWq8T_zbyyfg
+ test-windows10-64/debug-web-platform-tests-reftests-e10s-5: PqV6gZ7WTvqc9BWm1wI8qA
+ test-windows10-64/debug-web-platform-tests-wdspec-e10s-1: Plyt2cQWSJWz9eLmHvBU8Q
+ test-windows10-64/debug-web-platform-tests-wdspec-e10s-2: Xf32g-XZRvmxcRFNZeRELw
+ test-windows10-64/debug-web-platform-tests-wdspec-e10s-3: an6S45xSQC-wu6enGORvvQ
+ test-windows10-64/debug-xpcshell-e10s-1: a6QTzqlFTxKgTyT02FxcJw
+ test-windows10-64/debug-xpcshell-e10s-2: MIWvVeW2QMqc54c3YdhGiw
+ test-windows10-64/opt-awsy-base-e10s: ApT8tvuXQoG9dXeeLOLhFA
+ test-windows10-64/opt-awsy-e10s: d94To1XgTXqw6B5hJmW77g
+ test-windows10-64/opt-awsy-tp6-e10s: UeDSQsv5R8665OfeEiJg0Q
+ test-windows10-64/opt-browser-screenshots-e10s: DmnU2Vv9Toe-X3gAkvxNrw
+ test-windows10-64/opt-cppunit-1proc: Iid9j5ZLQ9GEg097Jk85MQ
+ test-windows10-64/opt-crashtest-e10s: R2fXSFd_RpqBlAC7BUIEwg
+ test-windows10-64/opt-firefox-ui-functional-local-e10s: L-cHrnlbT7KknVoOlskxkw
+ test-windows10-64/opt-firefox-ui-functional-remote-e10s: LL3PzqLYQQaOusevEsHuKg
+ test-windows10-64/opt-gtest-1proc: BVxqFMxYS4ulGRPGj9G9HQ
+ test-windows10-64/opt-jsreftest-e10s-1: G4rIbxexR0W-C23cuKSXUQ
+ test-windows10-64/opt-jsreftest-e10s-2: BmMSDsTVTiOoBtNuBdpmvw
+ test-windows10-64/opt-marionette-e10s: K8Uk4I1XR6C7ekhQ2nTIoQ
+ test-windows10-64/opt-marionette-gpu-e10s: TeKk4wKiTGSqv3ZrnBAlrA
+ test-windows10-64/opt-mochitest-a11y-1proc: ZsIBgARMQlW26KSkNErURA
+ test-windows10-64/opt-mochitest-browser-chrome-e10s-1: ERyEKLKRS7qYA6AbecYYlw
+ test-windows10-64/opt-mochitest-browser-chrome-e10s-2: UDrYRHsOQFiph2gY0jNeow
+ test-windows10-64/opt-mochitest-browser-chrome-e10s-3: YaNBXZ4xRpmjmPPjCEaNGQ
+ test-windows10-64/opt-mochitest-browser-chrome-e10s-4: EqKDnZDgR8CQORlpwGnS6Q
+ test-windows10-64/opt-mochitest-browser-chrome-e10s-5: DrUqt8G7TC-W218SpqZ_AA
+ test-windows10-64/opt-mochitest-browser-chrome-e10s-6: Yrc4PeUsTTWVxRALPOYI6w
+ test-windows10-64/opt-mochitest-browser-chrome-e10s-7: AP4fI741Rv6gZt9M_tnzPQ
+ test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-1: DGJakN6dSbiwYxB21MQmNQ
+ test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-2: curV5-DFSv-_1L4gGQxpiQ
+ test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-3: OT2xMsjLRE6NtgpmIT70hg
+ test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-4: OW6Qps0RSUO55qLsuDmsdw
+ test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-5: P8UOquu0Tr-HO8L4eZDcWg
+ test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-6: SF6D8uruSLiQIybTRpCq2g
+ test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-7: LvA3X7sUQoyQPCwGu21DPg
+ test-windows10-64/opt-mochitest-chrome-1proc-1: JAZjusYUTey_S4MoB9nXZg
+ test-windows10-64/opt-mochitest-chrome-1proc-2: EU5UxqsvTnea-ncSEtJddQ
+ test-windows10-64/opt-mochitest-devtools-chrome-e10s-1: bd-gBL99TGeZjnZEqBl6Cg
+ test-windows10-64/opt-mochitest-devtools-chrome-e10s-2: BF-9kWObS8CjNKOKIAj8-w
+ test-windows10-64/opt-mochitest-devtools-chrome-e10s-3: D1enU6S-S5mn89QyCKm3EA
+ test-windows10-64/opt-mochitest-devtools-chrome-e10s-4: IF6LKdzMTrquAa4tOr6dAg
+ test-windows10-64/opt-mochitest-devtools-chrome-e10s-5: YeP7KgygTLelLNUMk23bkg
+ test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-1: LifxbeVDS7OACccmQnly0g
+ test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-2: fjmuMfMoRV6qUdetnl_czQ
+ test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-3: KtrVf6heS7umV_rCYrFoSg
+ test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-4: Ye1nnHm9STOEUW-c_Ju7Tg
+ test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-5: A8_LtU-GQ-evkPCSZ26DRQ
+ test-windows10-64/opt-mochitest-e10s-1: QRWebNnmTG-g4VmIdY_zwQ
+ test-windows10-64/opt-mochitest-e10s-2: T3_vdIg7THO0RVH6pA3mkQ
+ test-windows10-64/opt-mochitest-e10s-3: Og4r54FaQResUjjfq3Z4JA
+ test-windows10-64/opt-mochitest-e10s-4: S37KREXoRR6ZxTMXUrNVxw
+ test-windows10-64/opt-mochitest-e10s-5: fKAIlTU1TB2hS-6KO-ua8A
+ test-windows10-64/opt-mochitest-fis-e10s-1: MD4a023XRzOWYgBH8SkScw
+ test-windows10-64/opt-mochitest-fis-e10s-2: LzSE9Ik9SRaZNj5x4NH-9w
+ test-windows10-64/opt-mochitest-fis-e10s-3: SqfSVthKTpujGIi9Andh8A
+ test-windows10-64/opt-mochitest-fis-e10s-4: UHFwfwYRQPeB7DiiBgYMgA
+ test-windows10-64/opt-mochitest-fis-e10s-5: Dq8sB4g0R1GmqNLPungoaQ
+ test-windows10-64/opt-mochitest-gpu-e10s: HcufIS9yTXa9EXbBDby-Mg
+ test-windows10-64/opt-mochitest-media-e10s: HjBtqKZMQVy1zZHJUmsxow
+ test-windows10-64/opt-mochitest-media-fis-e10s: KOwkUKnJTYqZGfJyvMk9Ug
+ test-windows10-64/opt-mochitest-media-spi-e10s: BfeW1zYpQpil06MUGg-s7g
+ test-windows10-64/opt-mochitest-remote-e10s: b8HMoYsIT-muLaZ7cuMBfw
+ test-windows10-64/opt-mochitest-webgl1-core-e10s: VrwTa_dGTg6FbeRQlLD8kA
+ test-windows10-64/opt-mochitest-webgl1-core-fis-e10s: AHqjU2UIRzulh6y6vjLqYw
+ test-windows10-64/opt-mochitest-webgl1-ext-e10s: PVjXv3SIQbaX8MkNWiJhRg
+ test-windows10-64/opt-mochitest-webgl1-ext-fis-e10s: FSvgBAS_Sc-avhMfqY5Kdg
+ test-windows10-64/opt-mochitest-webgl2-core-e10s: VyKliIPmQcWdS4KpHszvHw
+ test-windows10-64/opt-mochitest-webgl2-core-fis-e10s: JgFK2mHKRLabMUlReGUkwA
+ test-windows10-64/opt-mochitest-webgl2-ext-e10s-1: bwEaLiupR1KoKcUVP_CHDw
+ test-windows10-64/opt-mochitest-webgl2-ext-e10s-2: cCcNR95zQqiAWQjfzPZIyw
+ test-windows10-64/opt-mochitest-webgl2-ext-e10s-3: SSBtF9pQTmS_-MpfDUwL3A
+ test-windows10-64/opt-mochitest-webgl2-ext-e10s-4: QPMewhV2T4GYUuy91XV_Qw
+ test-windows10-64/opt-mochitest-webgl2-ext-fis-e10s-1: IgTZOxxATcapM1jPWYnNKA
+ test-windows10-64/opt-mochitest-webgl2-ext-fis-e10s-2: Uaf6GhlOSSyFWbKgUjaQRA
+ test-windows10-64/opt-mochitest-webgl2-ext-fis-e10s-3: bNHYlM11R-CT_4tTz3Rurw
+ test-windows10-64/opt-mochitest-webgl2-ext-fis-e10s-4: agbsd---QlKMVPRtUrGPog
+ test-windows10-64/opt-mochitest-webgpu-e10s: W7luRffpSI-aA9rzuF3cIQ
+ test-windows10-64/opt-mochitest-webgpu-fis-e10s: BXoAh9FvQ229OQbJmbAnVQ
+ test-windows10-64/opt-raptor-ares6-firefox-e10s: LRb6M51oQAqczTmIIsT-Eg
+ test-windows10-64/opt-raptor-jetstream2-firefox-e10s: bP6J-bAiRQW5bHgpRcYbHg
+ test-windows10-64/opt-raptor-motionmark-animometer-firefox-e10s: GDIxdSeqQiWe9pEaFlxh3g
+ test-windows10-64/opt-raptor-motionmark-htmlsuite-firefox-e10s: JpWcd5udTGWvfP0eQZ_T2g
+ test-windows10-64/opt-raptor-speedometer-firefox-e10s: DVoTh0CkRwiVb9oxNC7oVw
+ test-windows10-64/opt-raptor-stylebench-firefox-e10s: SAcgZ0a7SmO4I03JrH82aQ
+ test-windows10-64/opt-raptor-sunspider-firefox-e10s: e2FKcwvqQvWgIv3b0sKVVw
+ test-windows10-64/opt-raptor-tp6-1-firefox-cold-e10s: Or3QEM4dRBuoySCxpG0K7A
+ test-windows10-64/opt-raptor-tp6-1-firefox-e10s: HJ5Ge8_oT5u--b-lGBZV6g
+ test-windows10-64/opt-raptor-tp6-10-firefox-cold-e10s: aonqBQiuTgyjHh_eBiWs3A
+ test-windows10-64/opt-raptor-tp6-10-firefox-e10s: bKTAtGrLTbyRCcpqOSlp-Q
+ test-windows10-64/opt-raptor-tp6-11-firefox-cold-e10s: a3e5wxVaQgy3g6zsD_8acQ
+ test-windows10-64/opt-raptor-tp6-12-firefox-cold-e10s: GAuI1MV1Tp-XO2WmZvpMiQ
+ test-windows10-64/opt-raptor-tp6-13-firefox-cold-e10s: D1QRqks1RJq9d9ReCZYtbg
+ test-windows10-64/opt-raptor-tp6-14-firefox-cold-e10s: WT4WKnklQR6M6OTOymKENQ
+ test-windows10-64/opt-raptor-tp6-15-firefox-cold-e10s: ahEQfXPiTS2ykyqnbh0G-w
+ test-windows10-64/opt-raptor-tp6-16-firefox-cold-e10s: BIkVpjRjSIib5NTVCry1Ig
+ test-windows10-64/opt-raptor-tp6-17-firefox-cold-e10s: bHz_6EanSjewsK0_JsJUlg
+ test-windows10-64/opt-raptor-tp6-18-firefox-cold-e10s: fX85Rq60Tfq9MLeeAYd1iA
+ test-windows10-64/opt-raptor-tp6-19-firefox-cold-e10s: TuhoWPk_QLmUt5-RY-VgvQ
+ test-windows10-64/opt-raptor-tp6-2-firefox-cold-e10s: O9hUgTwhQlKukTcpwCGvdw
+ test-windows10-64/opt-raptor-tp6-2-firefox-e10s: f1kPhf8iTRy63o0Nh8REMA
+ test-windows10-64/opt-raptor-tp6-20-firefox-cold-e10s: eIC9nXOtQjWUEhO-MAtUHg
+ test-windows10-64/opt-raptor-tp6-21-firefox-cold-e10s: C3zyuhUcStanxFHSFwlbDA
+ test-windows10-64/opt-raptor-tp6-22-firefox-cold-e10s: bsrybdwqR0Kr92J59QCzfQ
+ test-windows10-64/opt-raptor-tp6-23-firefox-cold-e10s: Q-P0vbOnT3moStRhkHhvmg
+ test-windows10-64/opt-raptor-tp6-24-firefox-cold-e10s: UcoM7G6nTJujxZFaI26BVQ
+ test-windows10-64/opt-raptor-tp6-25-firefox-cold-e10s: YLRzCGYVTuGvn8s99aoEqQ
+ test-windows10-64/opt-raptor-tp6-26-firefox-cold-e10s: UF_sEIV3Q8CwAi17FD7iFg
+ test-windows10-64/opt-raptor-tp6-27-firefox-cold-e10s: NhS8hcKmQ1yfk145fXTULg
+ test-windows10-64/opt-raptor-tp6-28-firefox-cold-e10s: e-xV8wtcTT2K06VVBsTxbA
+ test-windows10-64/opt-raptor-tp6-29-firefox-cold-e10s: GQ5k2GV4SW6ayVWgtyM0ZA
+ test-windows10-64/opt-raptor-tp6-3-firefox-cold-e10s: YGTUyjx7SfGvpP5t5CRSlA
+ test-windows10-64/opt-raptor-tp6-3-firefox-e10s: QSXi7txWSEiz04sBAody-A
+ test-windows10-64/opt-raptor-tp6-30-firefox-cold-e10s: I93aWq8zSWa7roipvVjFuQ
+ test-windows10-64/opt-raptor-tp6-4-firefox-cold-e10s: JrHsTnBrSBmYGU7S9_buyw
+ test-windows10-64/opt-raptor-tp6-4-firefox-e10s: KEOa7nVNQP65dbM5C43XjA
+ test-windows10-64/opt-raptor-tp6-5-firefox-cold-e10s: GA7qM_8aRnC1Lbylgxt0jQ
+ test-windows10-64/opt-raptor-tp6-5-firefox-e10s: WSEek3s0Quijah7vaDjUOA
+ test-windows10-64/opt-raptor-tp6-6-firefox-cold-e10s: fn5qvaiGSYmPQyXvbgxosg
+ test-windows10-64/opt-raptor-tp6-6-firefox-e10s: aoHvOX4zR6KMOQCD_vTA3A
+ test-windows10-64/opt-raptor-tp6-7-firefox-cold-e10s: Cx5_bYzqTsmzLSg4YhSawA
+ test-windows10-64/opt-raptor-tp6-7-firefox-e10s: DCl3ggKQRVixdEexmmru5g
+ test-windows10-64/opt-raptor-tp6-8-firefox-cold-e10s: dTE80IN7Qd-XEwcHLNsgxg
+ test-windows10-64/opt-raptor-tp6-8-firefox-e10s: ek8pyRhWTJGBc3VOdBaBEw
+ test-windows10-64/opt-raptor-tp6-9-firefox-cold-e10s: XIMk--uMSS2nvqLzCMFAig
+ test-windows10-64/opt-raptor-tp6-9-firefox-e10s: b-5wN8JKQSaWD2TpRqt7cA
+ test-windows10-64/opt-raptor-tp6-binast-1-firefox-e10s: LPe8t5F8Szem4_Sw9ZvVWA
+ test-windows10-64/opt-raptor-wasm-godot-firefox-e10s: PylX0vjuTuGNPCeMOVnIJQ
+ test-windows10-64/opt-raptor-webaudio-firefox-e10s: KO0XGSKDTI2zOfL1H0lCSg
+ test-windows10-64/opt-raptor-youtube-playback-firefox-e10s: ARIBF7uESjWfpYrl8VFWZw
+ test-windows10-64/opt-reftest-e10s-1: KOtGsuDSSeOM5I9mL1a-PA
+ test-windows10-64/opt-reftest-e10s-2: aM4I1eF0TB-7ouAhdKeJ3A
+ test-windows10-64/opt-talos-bcv-e10s: Bbuoa1c9RT-jD6ocA9kgUg
+ test-windows10-64/opt-talos-chrome-e10s: Tyn27KexQWqBi6q7adzKXA
+ test-windows10-64/opt-talos-damp-e10s: fOIaUVCfTX-jhJBwEOxr8Q
+ test-windows10-64/opt-talos-dromaeojs-e10s: RutaDDQcQAqnEo9qQbMdaw
+ test-windows10-64/opt-talos-g1-e10s: BUuAoOkzSsmF7NWk9WcBwA
+ test-windows10-64/opt-talos-g4-e10s: D7X6kN6JTIWsUJCGcVeW0A
+ test-windows10-64/opt-talos-g5-e10s: QcxD9sRBQ8qHgd1g2iSLtQ
+ test-windows10-64/opt-talos-other-e10s: M3JW2wW-RLCJ0jDhaWdNoA
+ test-windows10-64/opt-talos-perf-reftest-e10s: XZAvwi-tSqidRoLzifGbFg
+ test-windows10-64/opt-talos-perf-reftest-singletons-e10s: ApHKZfSlTxmHCGeDvUE3jw
+ test-windows10-64/opt-talos-realworld-webextensions-e10s: QXnfu8M8RjSocmcD8RvKLQ
+ test-windows10-64/opt-talos-sessionrestore-many-windows-e10s: O8O8Fp6SRW6tOr8ge3QhDw
+ test-windows10-64/opt-talos-svgr-e10s: fmNLUx4VR6KZ2VkFefYPjA
+ test-windows10-64/opt-talos-tabswitch-e10s: dbFsBydXSI-TXS94-pymyQ
+ test-windows10-64/opt-talos-tp5o-e10s: D0cNbpGxT-OxzIXbtw2SMw
+ test-windows10-64/opt-talos-webgl-e10s: B4Beu_IZSGqhzuOkhSQACA
+ test-windows10-64/opt-talos-xperf-e10s: WwFXbmlOQ2STIJjyl9pxUA
+ test-windows10-64/opt-telemetry-tests-client-e10s: G4VXSUWBQomu9MmKsoZ2Ww
+ test-windows10-64/opt-test-verify-e10s-1: L9D-HsPNSTqRqOGMWbQuBw
+ test-windows10-64/opt-test-verify-e10s-2: ReXPVx5cR4GxV_iJKh3F9w
+ test-windows10-64/opt-test-verify-gpu-e10s: S5es8rVOQBe8lDAAuZ6AiQ
+ test-windows10-64/opt-test-verify-wpt-e10s-1: Qvd913sTSaerqoHdqethwA
+ test-windows10-64/opt-test-verify-wpt-e10s-2: BQc56dqSTe2uSYKZ7az7SA
+ test-windows10-64/opt-test-verify-wpt-e10s-3: EkFRMl_2TOWD6jOWlcZxXA
+ test-windows10-64/opt-web-platform-tests-crashtests-e10s: NrY9tT3AS92bcWFI1rkLsA
+ test-windows10-64/opt-web-platform-tests-e10s-1: DQFKioOKQEelTxB-fe053Q
+ test-windows10-64/opt-web-platform-tests-e10s-10: T3LtVnwnTzmUI55vkGAjzw
+ test-windows10-64/opt-web-platform-tests-e10s-11: GYcKVhquT_CQGXgAYwckuw
+ test-windows10-64/opt-web-platform-tests-e10s-12: eB43KuQQQfyJyqcCf1vL0Q
+ test-windows10-64/opt-web-platform-tests-e10s-2: MGZhJAo9SMKSMr4YIXmjsg
+ test-windows10-64/opt-web-platform-tests-e10s-3: WNWD_6ZkRaCUhapArA-M1A
+ test-windows10-64/opt-web-platform-tests-e10s-4: Rfrr4TmmQiKNXmU5sro1rQ
+ test-windows10-64/opt-web-platform-tests-e10s-5: FFlgBgn2Ri-uho_YRXgvjg
+ test-windows10-64/opt-web-platform-tests-e10s-6: Mg7ODmlJTqihoaaDvBZwuQ
+ test-windows10-64/opt-web-platform-tests-e10s-7: RrZsqG4hSPmyLDqa7LUwgw
+ test-windows10-64/opt-web-platform-tests-e10s-8: Za5oqXdYSoGhs2FHKwVQkA
+ test-windows10-64/opt-web-platform-tests-e10s-9: LOmoXlHbQfanwB-evUQjJA
+ test-windows10-64/opt-web-platform-tests-reftests-e10s-1: A62ZHzOARxyGOSsVaOxH-w
+ test-windows10-64/opt-web-platform-tests-reftests-e10s-2: B78m4aAsQsiRumP3d5qbwA
+ test-windows10-64/opt-web-platform-tests-reftests-e10s-3: AoyDHzC-TcOuRQLJ7qm-ow
+ test-windows10-64/opt-web-platform-tests-reftests-e10s-4: Oa-btyNZSk6rdXxI_IRDmw
+ test-windows10-64/opt-web-platform-tests-wdspec-e10s-1: XY7kpyZtT52D4xKbjFaHyA
+ test-windows10-64/opt-web-platform-tests-wdspec-e10s-2: dNWH5fNvS--Vqsm_bJuSDw
+ test-windows10-64/opt-web-platform-tests-wdspec-e10s-3: JU6X7Cn0Q9e8bUwMoLO_kw
+ test-windows10-64/opt-xpcshell-e10s-1: dRnAl5LrQQeCntC_0QqTiQ
+ test-windows10-64/opt-xpcshell-e10s-2: KejAE36IQFC8_PasQgWWKg
+ test-windows10-aarch64/opt-crashtest-e10s: UuylGdsLQ5WMPrfR4kkckQ
+ test-windows10-aarch64/opt-mochitest-media-e10s: LON30i8wRRuOokq0qep_TQ
+ test-windows10-aarch64/opt-mochitest-media-spi-e10s: Xw_wKe0cRHaaDE1eOxTnJQ
+ test-windows10-aarch64/opt-mochitest-remote-e10s: BBcBcHQHTyyJ6zX-kO1zOw
+ test-windows10-aarch64/opt-raptor-youtube-playback-firefox-e10s: FDpaPM2cSVyANI2frvoMpw
+ test-windows10-aarch64/opt-reftest-e10s-1: bkNRVsg9S5W77322CGbmug
+ test-windows10-aarch64/opt-reftest-e10s-2: ZhSN_EGWQp63NjC4hqBg2Q
+ test-windows10-aarch64/opt-talos-sessionrestore-many-windows-e10s: SHp-2c2WT5edpmQfLZXF-g
+ test-windows10-aarch64/opt-web-platform-tests-crashtests-e10s: Ly5s7AO1SACv6gzF6TwhIA
+ test-windows10-aarch64/opt-web-platform-tests-e10s-1: bAXooGSOTTKKZvxp4zEkKg
+ test-windows10-aarch64/opt-web-platform-tests-e10s-10: ByvvuYIWTSSxue29YkvFdA
+ test-windows10-aarch64/opt-web-platform-tests-e10s-11: MmmR0x-5TZOFNTpZGAapoQ
+ test-windows10-aarch64/opt-web-platform-tests-e10s-12: XE7IeFw9R-KYYjJ9tQeeLA
+ test-windows10-aarch64/opt-web-platform-tests-e10s-13: RPC1m1mgQ0-imqvp3yp57w
+ test-windows10-aarch64/opt-web-platform-tests-e10s-14: HIR9Nq4QTaCP7PWJqtUIiA
+ test-windows10-aarch64/opt-web-platform-tests-e10s-15: PhK4pPyBTlqJndOKjlvh7w
+ test-windows10-aarch64/opt-web-platform-tests-e10s-16: CX7DbA74QOWk3ulJ1zuzWA
+ test-windows10-aarch64/opt-web-platform-tests-e10s-2: Nt0aeGwVTZWKUSv5l_6FAg
+ test-windows10-aarch64/opt-web-platform-tests-e10s-3: JGRRPeb8TWGPTF2XY9Pn_g
+ test-windows10-aarch64/opt-web-platform-tests-e10s-4: Fm8KGTVxSK28aJiMqigdGg
+ test-windows10-aarch64/opt-web-platform-tests-e10s-5: aaKGQiitQqqt1WUDHP1IbQ
+ test-windows10-aarch64/opt-web-platform-tests-e10s-6: JY_ZdZOOQUuBBJrAjca_ig
+ test-windows10-aarch64/opt-web-platform-tests-e10s-7: OKE80CLdTXya5wqa2TnWAA
+ test-windows10-aarch64/opt-web-platform-tests-e10s-8: PueB2qSWRq-bluuXJFF5CA
+ test-windows10-aarch64/opt-web-platform-tests-e10s-9: APjeC_CZTEWWPALSaIBaRw
+ test-windows10-aarch64/opt-web-platform-tests-reftests-e10s-1: ZQdhJMCvR7WWMEP5NGEnyQ
+ test-windows10-aarch64/opt-web-platform-tests-reftests-e10s-2: AFlvt-fuRgSdnwAiW4J7SA
+ test-windows10-aarch64/opt-web-platform-tests-reftests-e10s-3: DVcx_s5mS920mqt1zZvTUQ
+ test-windows10-aarch64/opt-web-platform-tests-reftests-e10s-4: Mo80i06_Sxi-Rx3rU6-fcw
+ test-windows7-32-mingwclang/debug-cppunit-1proc: YI9JkoxbT-20e1WsfXz9NA
+ test-windows7-32-mingwclang/debug-firefox-ui-functional-local-e10s: BmiydPVmQZyDjKtPnatyHw
+ test-windows7-32-mingwclang/debug-firefox-ui-functional-remote-e10s: fE77pDT6TGGcer0ywji5IA
+ test-windows7-32-mingwclang/debug-mochitest-a11y-1proc: RBmjdQs8S8igmFMtFR9hLQ
+ test-windows7-32-mingwclang/debug-mochitest-gpu-e10s: O2q79d6PRDSQgEZeirxIeQ
+ test-windows7-32-mingwclang/debug-mochitest-webgl1-core-e10s: bRg61oe9RgCFiukecAp3-g
+ test-windows7-32-mingwclang/debug-mochitest-webgl1-ext-e10s: DtETYNycRySoxOg-N5gNhg
+ test-windows7-32-mingwclang/debug-mochitest-webgl2-core-e10s: U0Vy2uwHT5OakERJNpKo7w
+ test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-1: XjOfU0hxT5q938OW9hknmg
+ test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-2: Wfc9kC50QCC2ybnNmlGStQ
+ test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-3: CqBbmg8QTNuMrYeu_DAihQ
+ test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-4: PIweDhzOSJiImz7DLz_unQ
+ test-windows7-32-mingwclang/debug-mochitest-webgpu-e10s: PrVc94C0T5WaMaeffLhO0A
+ test-windows7-32-mingwclang/debug-reftest-e10s-1: MrxYXbZhSwO6ruH5s0EBzA
+ test-windows7-32-mingwclang/debug-reftest-e10s-2: D_LHNDV3QKurnIlaNrQofw
+ test-windows7-32-mingwclang/debug-reftest-e10s-3: UkRtgw1kR5iAQyuQg7PbCg
+ test-windows7-32-mingwclang/debug-reftest-e10s-4: cc6jT4eBSEGcJhQybLrGSQ
+ test-windows7-32-mingwclang/debug-telemetry-tests-client-e10s: Q4SsvqO5SpOAl8RaDK6AKw
+ test-windows7-32-mingwclang/opt-cppunit-1proc: SNaQ0wXhRdmRVEq6qx0T7w
+ test-windows7-32-mingwclang/opt-mochitest-gpu-e10s: e-ajlJviSbabvglKAYnYQg
+ test-windows7-32-shippable/opt-awsy-base-e10s: FnvPiecsTxKTehZo4HD2gw
+ test-windows7-32-shippable/opt-awsy-e10s: C-HJL7DzQga6o8aWa8HJuQ
+ test-windows7-32-shippable/opt-awsy-tp6-e10s: eboInj41SYG692ND0HyDew
+ test-windows7-32-shippable/opt-browser-screenshots-e10s: WHK_PrdrS_SqlAYMJ34xPA
+ test-windows7-32-shippable/opt-browsertime-tp6-chrome-cold-amazon-e10s: INX4PGQFSEurTeFBJfjogA
+ test-windows7-32-shippable/opt-browsertime-tp6-firefox-amazon-e10s: En1RAnWUQgyLzHwr2Q6yZg
+ test-windows7-32-shippable/opt-browsertime-tp6-firefox-cold-amazon-e10s: VrIVbgiDSKeRS53tk5k-yw
+ test-windows7-32-shippable/opt-browsertime-tp6-profiling-firefox-amazon-e10s: ZJ8lixGzSR2hWRMqXGR0-Q
+ test-windows7-32-shippable/opt-browsertime-tp6-profiling-firefox-cold-amazon-e10s: cUBNVzSsQQGpm0BlYN69Mg
+ test-windows7-32-shippable/opt-cppunit-1proc: cQhaj_RlTrip03nXZKVROw
+ test-windows7-32-shippable/opt-crashtest-e10s: MkUSfz5OQfCfuPntxQxYsg
+ test-windows7-32-shippable/opt-firefox-ui-functional-local-e10s: ZwdidMuzQqq9Yf_gAwt9nQ
+ test-windows7-32-shippable/opt-firefox-ui-functional-remote-e10s: PwFfjkeMRMW61nu1WYUh1w
+ test-windows7-32-shippable/opt-jsreftest-e10s-1: SG1gxMGFR2ChYEQwg0QL6w
+ test-windows7-32-shippable/opt-jsreftest-e10s-2: TjENsTZcRkCREsjJvrLw1w
+ test-windows7-32-shippable/opt-marionette-e10s: VLvkvK30S2ylbrhnPnYIsg
+ test-windows7-32-shippable/opt-mochitest-a11y-1proc: K7Xw2Q5wQOOizquMFXkyOw
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-1: PIA1dUm2Q1C7vs0qlwbBzg
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-2: GXducepqQBKc_inQHTRZ6g
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-3: Qj-xEJpeRmSc6fwMNhCC1w
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-4: HpEK6fIxQc2_wLBF6fgKFA
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-5: dXYoIta3SBiCPSkc6epssg
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-6: d1ZSyGeUSt21-dQpUrHMdw
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-7: TCg-a6ROT1-M5l98HS-7qg
+ test-windows7-32-shippable/opt-mochitest-chrome-1proc-1: TEIa64QsQTCWyoN4tMxpRA
+ test-windows7-32-shippable/opt-mochitest-chrome-1proc-2: DizvBJ_4SaeGNP_O0pP7dw
+ test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-1: SVFqc5LRSz-a_TSoRG50uQ
+ test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-2: AOl6vEq8SwivJ_8idag6kg
+ test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-3: d153fU7YQ-G_t3wXDrlsyA
+ test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-4: EHGi4XiwQsmkRbSPPOZxYw
+ test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-5: GJqZBL_ERXiB4na0EQ9zJw
+ test-windows7-32-shippable/opt-mochitest-e10s-1: fsQTyp27RguNdkJysS4TbA
+ test-windows7-32-shippable/opt-mochitest-e10s-2: MDOib51qSvyumbgjz5AcBw
+ test-windows7-32-shippable/opt-mochitest-e10s-3: aH22Z1wzRAq941bHilfuzg
+ test-windows7-32-shippable/opt-mochitest-e10s-4: UnmOWzOISQe_6-vepSIJsQ
+ test-windows7-32-shippable/opt-mochitest-e10s-5: PN5NNAp5QHijy_lUMr3Kug
+ test-windows7-32-shippable/opt-mochitest-gpu-e10s: ZWsP4PX0SBiv6gl1T5GLag
+ test-windows7-32-shippable/opt-mochitest-media-e10s-1: TtCUr8RTRjuPU6HZW8EyKA
+ test-windows7-32-shippable/opt-mochitest-media-e10s-2: Yvz16HywSku9U2X6VKne-w
+ test-windows7-32-shippable/opt-mochitest-media-spi-e10s-1: bOFjyqoEQFOU3lHCgb8QaA
+ test-windows7-32-shippable/opt-mochitest-media-spi-e10s-2: NZlzv_lDQSqtOw6-VapzHA
+ test-windows7-32-shippable/opt-mochitest-remote-e10s: egD59BydSXCardEtu41bXQ
+ test-windows7-32-shippable/opt-mochitest-webgl1-core-e10s: Rn5WGrsdRQCwQs6a4H3l3A
+ test-windows7-32-shippable/opt-mochitest-webgl1-ext-e10s: W8jpBuMmTSu5TY9uBabosg
+ test-windows7-32-shippable/opt-mochitest-webgl2-core-e10s: PVAmUAmJRWy1tgVHHNjFrw
+ test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-1: eGOAzGz3TiCrjjglgK0zNA
+ test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-2: D15uBBE2QKqJzXLH6KFmuA
+ test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-3: AcG6qrQrSZqYtNYhfJP9nA
+ test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-4: NAk_3oefTLWivBDdJwxp2A
+ test-windows7-32-shippable/opt-mochitest-webgpu-e10s: HcCt45DRTQuzTcC1EgP-gA
+ test-windows7-32-shippable/opt-raptor-ares6-firefox-e10s: Zo0LDxWiQuCQe3vSzMCyxA
+ test-windows7-32-shippable/opt-raptor-jetstream2-firefox-e10s: MMnjv2UzRAadaqpMjXZ0uw
+ test-windows7-32-shippable/opt-raptor-motionmark-animometer-firefox-e10s: OXAnysNKS-mrjcl-wv67NQ
+ test-windows7-32-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: WEWyMr0JR5Os30dLHjCiEw
+ test-windows7-32-shippable/opt-raptor-speedometer-firefox-e10s: V5Uz6Qv0S7GqT7Xb0dRNKQ
+ test-windows7-32-shippable/opt-raptor-stylebench-firefox-e10s: bpK9Oqs4TreV3eswkP6xbA
+ test-windows7-32-shippable/opt-raptor-sunspider-firefox-e10s: ZNvDGqsCRUGuip_nSl1T4w
+ test-windows7-32-shippable/opt-raptor-tp6-1-firefox-cold-e10s: BOB6nxeHRmywE0bDeClJWQ
+ test-windows7-32-shippable/opt-raptor-tp6-1-firefox-e10s: ZLmUmvbQTra4SzXqqIxU3g
+ test-windows7-32-shippable/opt-raptor-tp6-10-firefox-cold-e10s: erqKm04-SXC2OqTYIGzd1g
+ test-windows7-32-shippable/opt-raptor-tp6-10-firefox-e10s: dLtj-m1IR6Gj46g2d4V_9A
+ test-windows7-32-shippable/opt-raptor-tp6-11-firefox-cold-e10s: UL6JV0IbTPSo0Hfi5a-8sw
+ test-windows7-32-shippable/opt-raptor-tp6-12-firefox-cold-e10s: ZrVYcYtgTAyiGU4rVBAAZw
+ test-windows7-32-shippable/opt-raptor-tp6-13-firefox-cold-e10s: RUrmkSl5R-67BgYfVxnxLA
+ test-windows7-32-shippable/opt-raptor-tp6-14-firefox-cold-e10s: AP8-AtxlSDixQs9H8XbldQ
+ test-windows7-32-shippable/opt-raptor-tp6-15-firefox-cold-e10s: W8kUnZeYSU28Par1lPQoZA
+ test-windows7-32-shippable/opt-raptor-tp6-16-firefox-cold-e10s: Z7TTL6JOTSGJ7kaxBOTROw
+ test-windows7-32-shippable/opt-raptor-tp6-17-firefox-cold-e10s: Gctdbe45TPmpa5TevNLMcg
+ test-windows7-32-shippable/opt-raptor-tp6-18-firefox-cold-e10s: N-udlZdwTZKDVEHfdZWfJg
+ test-windows7-32-shippable/opt-raptor-tp6-19-firefox-cold-e10s: UO4Ju6JwQ2K3qDZ150QgVQ
+ test-windows7-32-shippable/opt-raptor-tp6-2-firefox-cold-e10s: eg7w9_QgTyiehDJLvKKwiQ
+ test-windows7-32-shippable/opt-raptor-tp6-2-firefox-e10s: TyUlojE3SgO_nTJrNkhT4Q
+ test-windows7-32-shippable/opt-raptor-tp6-20-firefox-cold-e10s: LR1mf09LTuO7LLodM9VV_w
+ test-windows7-32-shippable/opt-raptor-tp6-21-firefox-cold-e10s: ZzHggAVaSBqBlEWibMUPIA
+ test-windows7-32-shippable/opt-raptor-tp6-22-firefox-cold-e10s: YVTzrqtJSWeLqgFr0MJoYw
+ test-windows7-32-shippable/opt-raptor-tp6-23-firefox-cold-e10s: JDLiquc7Tv62ugfBeeRvvw
+ test-windows7-32-shippable/opt-raptor-tp6-24-firefox-cold-e10s: KfznUFY0TjCjyYWLTbCGRQ
+ test-windows7-32-shippable/opt-raptor-tp6-25-firefox-cold-e10s: DmDyoF-jR7itamtrkNiAnQ
+ test-windows7-32-shippable/opt-raptor-tp6-26-firefox-cold-e10s: GiPERflFTf-0XH2af5EYIg
+ test-windows7-32-shippable/opt-raptor-tp6-27-firefox-cold-e10s: ROWXUsebTZKOY2FBkJCq3g
+ test-windows7-32-shippable/opt-raptor-tp6-28-firefox-cold-e10s: AWnEEXplQzaUC0WABaXQVA
+ test-windows7-32-shippable/opt-raptor-tp6-29-firefox-cold-e10s: EvWX3lw0Tu2XNul3KZFGtg
+ test-windows7-32-shippable/opt-raptor-tp6-3-firefox-cold-e10s: JjiQuVDVSDqj7uRes02g-g
+ test-windows7-32-shippable/opt-raptor-tp6-3-firefox-e10s: DoV46UokQDKdmENY2DPHFA
+ test-windows7-32-shippable/opt-raptor-tp6-30-firefox-cold-e10s: MOSl3GCiTHGd5C1VibB_Qg
+ test-windows7-32-shippable/opt-raptor-tp6-4-firefox-cold-e10s: VVlt-mPwSHy_xkVIz0ACqQ
+ test-windows7-32-shippable/opt-raptor-tp6-4-firefox-e10s: cJQ88Zz0TbCgi2LM3faQpg
+ test-windows7-32-shippable/opt-raptor-tp6-5-firefox-cold-e10s: OYLb-uvETtuPBWhAThoDxg
+ test-windows7-32-shippable/opt-raptor-tp6-5-firefox-e10s: F2Gp7qmdT8y_FP5TXoGSLQ
+ test-windows7-32-shippable/opt-raptor-tp6-6-firefox-cold-e10s: d7HfZzuQTXSt1Bv-nyMKzQ
+ test-windows7-32-shippable/opt-raptor-tp6-6-firefox-e10s: FwfQoECjTHmrkjhJGV6YQw
+ test-windows7-32-shippable/opt-raptor-tp6-7-firefox-cold-e10s: P7559O48RKGcdmLCNaPBzw
+ test-windows7-32-shippable/opt-raptor-tp6-7-firefox-e10s: awZv0bDUTxy09SdEpev2QA
+ test-windows7-32-shippable/opt-raptor-tp6-8-firefox-cold-e10s: UBujl4K-SqymoCDfLcCuEA
+ test-windows7-32-shippable/opt-raptor-tp6-8-firefox-e10s: IFMfa4E-RAi2aVJ1_vslMQ
+ test-windows7-32-shippable/opt-raptor-tp6-9-firefox-cold-e10s: dvZzkx6uSACJB_XWd0TOXQ
+ test-windows7-32-shippable/opt-raptor-tp6-9-firefox-e10s: Qpm0tDKTTb2G29ELRAF0BQ
+ test-windows7-32-shippable/opt-raptor-tp6-binast-1-firefox-e10s: L2ix5G0oRsaWik2nSJagRw
+ test-windows7-32-shippable/opt-raptor-wasm-godot-firefox-e10s: aITVgOxIQaGbzuwT0gsrxg
+ test-windows7-32-shippable/opt-raptor-webaudio-firefox-e10s: VzckDIgvSH2vA0w9MI1Zwg
+ test-windows7-32-shippable/opt-raptor-youtube-playback-firefox-e10s: U_kvDIC0SgOmPu1i2dtmqQ
+ test-windows7-32-shippable/opt-reftest-e10s-1: TjhsPgZIRIKlID9sNpwOCg
+ test-windows7-32-shippable/opt-reftest-e10s-2: EwpLAXbbTniAOOOKN8w5aw
+ test-windows7-32-shippable/opt-reftest-gpu-e10s-1: KhhvA1DwQHyDdMsq_YKXKw
+ test-windows7-32-shippable/opt-reftest-gpu-e10s-2: eMsHAIMqRMuOb4K84dZPDw
+ test-windows7-32-shippable/opt-reftest-no-accel-e10s-1: VeznKuKYQpiQn7mbsaIfYw
+ test-windows7-32-shippable/opt-reftest-no-accel-e10s-2: QMi6ZsW5Qr60ye0LWl-HaA
+ test-windows7-32-shippable/opt-reftest-no-accel-e10s-3: N8lBfPtWTK6zc35r-j9RVQ
+ test-windows7-32-shippable/opt-reftest-no-accel-e10s-4: VvxyOkVCRWOpIFD0K1bbWQ
+ test-windows7-32-shippable/opt-talos-bcv-e10s: dImmMpb6TM6DTlTSXoAqPQ
+ test-windows7-32-shippable/opt-talos-chrome-e10s: Xfji6tnkT5KB1RfppPVJ0g
+ test-windows7-32-shippable/opt-talos-dromaeojs-e10s: O1iXZy3NQPWfTJPQuYVstg
+ test-windows7-32-shippable/opt-talos-g1-e10s: b8kLCXBOTdi4hKWKV4Wgaw
+ test-windows7-32-shippable/opt-talos-g4-e10s: S9XZjNXJRtedRDSDKirpLw
+ test-windows7-32-shippable/opt-talos-g5-e10s: ZvdEVTNiR4uPHBaFxEvcXA
+ test-windows7-32-shippable/opt-talos-other-e10s: Ix6rfmBxSCGpBwlKPCZqQw
+ test-windows7-32-shippable/opt-talos-perf-reftest-e10s: T9Y8fhLgSHCSkqZCj36YYw
+ test-windows7-32-shippable/opt-talos-perf-reftest-singletons-e10s: DYDK6wWlSwyf-MwSFanS9A
+ test-windows7-32-shippable/opt-talos-realworld-webextensions-e10s: N9PhxTRESfysVIqAyljGFA
+ test-windows7-32-shippable/opt-talos-sessionrestore-many-windows-e10s: UDcRGZJlShacBXFP5hGwuw
+ test-windows7-32-shippable/opt-talos-svgr-e10s: b_vDCNTMTQetdmI2jPTNSw
+ test-windows7-32-shippable/opt-talos-tabswitch-e10s: V-i8-v27Tz6A4-7FgSUaig
+ test-windows7-32-shippable/opt-talos-tp5o-e10s: EUWfpfNORUuCJ_qweEzECQ
+ test-windows7-32-shippable/opt-talos-webgl-e10s: VTB_hFF3SLmc5Asq1T-9lQ
+ test-windows7-32-shippable/opt-talos-xperf-e10s: eqMYddMqQx2ug636Bw4GUg
+ test-windows7-32-shippable/opt-telemetry-tests-client-e10s: deA_fxgBQcOWPwZUT4JkEA
+ test-windows7-32-shippable/opt-web-platform-tests-crashtests-e10s: DORNaLZSSqS16TLPe_C31A
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-1: G6liVUXTRIS_5i2G27tCQg
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-10: VQv3nkCET8q2pngi99ztLg
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-11: YGh04Oj8Qxe2yVLQYo8RnA
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-12: C3dYxyq0Qk-f0Inf4uK0-g
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-2: P3aV1Fn0TAGOB_qXmk39xQ
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-3: V7PjBXowSf-Rq3TwlQPOtQ
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-4: R_AGBcaQTpu1Ch8X8gCFew
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-5: f8Xu8_IdQzSI53ug6XeWnQ
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-6: IR3ttYAeSzuW1Ib1PLdqdw
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-7: akKNuMNkQYqNMp6RTesQMA
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-8: HafmpD1dTkOj_xBKKpkM9w
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-9: AJG05JkdRFmhzohjDAtNHA
+ test-windows7-32-shippable/opt-web-platform-tests-reftests-e10s-1: JRE3DPLISyiliS1JYDWmsw
+ test-windows7-32-shippable/opt-web-platform-tests-reftests-e10s-2: f-JfHjLpTMepOm4qnbe3cg
+ test-windows7-32-shippable/opt-web-platform-tests-reftests-e10s-3: Ij5Z6w00RDCDxTVxv4tdhQ
+ test-windows7-32-shippable/opt-web-platform-tests-reftests-e10s-4: Up4328mBS5CC2KC8HpmU1g
+ test-windows7-32-shippable/opt-web-platform-tests-wdspec-e10s-1: U2l7xW98TaKg8ABfJWCFOQ
+ test-windows7-32-shippable/opt-web-platform-tests-wdspec-e10s-2: DTg9TQiHQ1uzV8ggCd6aXw
+ test-windows7-32-shippable/opt-web-platform-tests-wdspec-e10s-3: CZeNpoqYR26TirKoY_jUyQ
+ test-windows7-32-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: Rm-TIh3iRC2y6B76i4Z4Zw
+ test-windows7-32-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: DzeBpyaCTReyCYgqBKN2lQ
+ test-windows7-32-shippable/opt-xpcshell-e10s-1: Hqhc2taNSji650MyTr6xVg
+ test-windows7-32-shippable/opt-xpcshell-e10s-2: UbVEXFK0STWid53xG2a9IA
+ test-windows7-32/debug-cppunit-1proc: NfhdFilPRSC7gUqpjkod5A
+ test-windows7-32/debug-crashtest-e10s: I6YstPlVQbihORj5Bcy6pw
+ test-windows7-32/debug-firefox-ui-functional-local-e10s: eX4afg-SSKS-ruwg0XJRZQ
+ test-windows7-32/debug-firefox-ui-functional-remote-e10s: DNmbWGAeSOWKrWAwifasAQ
+ test-windows7-32/debug-gtest-1proc: XXjU7DzeS6qZMLD4bjwC7Q
+ test-windows7-32/debug-jsreftest-e10s-1: MYYwmR5rRZqUeS2xd2MrAQ
+ test-windows7-32/debug-jsreftest-e10s-2: OOaQLFL2QdafA0NwCYzOng
+ test-windows7-32/debug-jsreftest-e10s-3: SGKnETlhSAuRc6BZK4vjBA
+ test-windows7-32/debug-marionette-e10s: ZecvdCw4SPyprwWQq-JHMg
+ test-windows7-32/debug-mochitest-a11y-1proc: SRAskedKQ167E0Yk2V4DWg
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-1: QV9a2H6bSIKu6VF5wV8xDw
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-2: Wp5wWwzaQSKZW-u0iOWR5g
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-3: K3ESgNt7SOiNo1JNmz7MOw
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-4: OrS14ghNQrq3sUnMC7-s5A
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-5: XXVo9frmRLuc8DBVn2WjzQ
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-6: bYFkpSdORnKRwgiQkfv5Dw
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-7: fXIUawsUQkK6gAltlCHBeg
+ test-windows7-32/debug-mochitest-chrome-1proc-1: aid0dEJ8SSCFEGJaPwKFWw
+ test-windows7-32/debug-mochitest-chrome-1proc-2: WJ-f2DTiRs2uHT49AtE6vQ
+ test-windows7-32/debug-mochitest-chrome-1proc-3: dJvY-86PSMi-sQNl9YSpdg
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-1: cKapVQUVQE-kPDkQnR7udQ
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-2: fbESm4SuSYuEb9QMs_v04w
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-3: b1gIML2QRTusLG8tlsi_vA
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-4: V__dHArzRcKhJI3llFnvSw
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-5: RcrczjIkSl-U51OvrJztNw
+ test-windows7-32/debug-mochitest-e10s-1: R261Yq7gS-mM5By-CinOlQ
+ test-windows7-32/debug-mochitest-e10s-2: KJHygu_mTReXklh642xbhg
+ test-windows7-32/debug-mochitest-e10s-3: U1cH36USTouT8-21zAbhvw
+ test-windows7-32/debug-mochitest-e10s-4: MS2Fvg1HQueKfw-NVnfjiQ
+ test-windows7-32/debug-mochitest-e10s-5: MDcLwUH0TRiVWQxXDFYLmg
+ test-windows7-32/debug-mochitest-gpu-e10s: PZh_Z-U_SpizmjSv3rqmfA
+ test-windows7-32/debug-mochitest-media-e10s-1: HYrB9Q6sQ_ifzy4HzvzPTw
+ test-windows7-32/debug-mochitest-media-e10s-2: DDhPa3qQQdG_-Ys-NhcqPw
+ test-windows7-32/debug-mochitest-media-e10s-3: XqKfgO8kRY23DYT69MuhIw
+ test-windows7-32/debug-mochitest-media-spi-e10s-1: D7tBo5QfT82m_0OdbBfYgw
+ test-windows7-32/debug-mochitest-media-spi-e10s-2: QkTd7mzzSrqjr3SMr5NPmA
+ test-windows7-32/debug-mochitest-media-spi-e10s-3: bmkACJ0gSv-s1kfNsRS-RA
+ test-windows7-32/debug-mochitest-remote-e10s: KLDwfU0OS_yEeZeFH4LCWw
+ test-windows7-32/debug-mochitest-webgl1-core-e10s: CfH9_k9hSjCJixStGXaeSA
+ test-windows7-32/debug-mochitest-webgl1-ext-e10s: C339iGPvQf2O3VvlsM00Mg
+ test-windows7-32/debug-mochitest-webgl2-core-e10s: SILB9V8bSt63r2My7AVaSQ
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-1: F1llzFh0Q2SNUis_xd_bWA
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-2: M6W-H1tcQoeVWkaj54FBPQ
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-3: caaSWuS5S7a4KVgAwI8ZLg
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-4: Bp_j5APaS1eSPf8jHswvlw
+ test-windows7-32/debug-mochitest-webgpu-e10s: KoFU9dkIRImjnKK9kWC9lg
+ test-windows7-32/debug-reftest-e10s-1: JO-4B4gXQMKkZnP6XTMEgw
+ test-windows7-32/debug-reftest-e10s-2: Xp3vToiiQ_uU7pmfvRS2Tw
+ test-windows7-32/debug-reftest-e10s-3: AACiBsOhTLm6CPkElqDwwA
+ test-windows7-32/debug-reftest-e10s-4: cdhphwwlRbSEC1bR72xGvw
+ test-windows7-32/debug-reftest-gpu-e10s-1: S9TPnwmlRmq07-0U7oDTog
+ test-windows7-32/debug-reftest-gpu-e10s-2: EiPlw-0ITj-1UFSSyKoFIQ
+ test-windows7-32/debug-reftest-gpu-e10s-3: UeIfFbkASR6gt7YEvYAHUw
+ test-windows7-32/debug-reftest-gpu-e10s-4: Lda7jWngSFeRQzafsb2moQ
+ test-windows7-32/debug-reftest-no-accel-e10s-1: f_-9W2c_SxCW3uungWtwVw
+ test-windows7-32/debug-reftest-no-accel-e10s-2: GK4UM16PT0anm_el1U4ekw
+ test-windows7-32/debug-reftest-no-accel-e10s-3: EjV97zErTWqLLoPHKNYsIw
+ test-windows7-32/debug-reftest-no-accel-e10s-4: CoHPMWsDTJulwGFBWQPdPw
+ test-windows7-32/debug-telemetry-tests-client-e10s: azP0nA1_SQusD11mFTDIbA
+ test-windows7-32/debug-web-platform-tests-crashtests-e10s: CbXz_7acROyALHM_zXdB6Q
+ test-windows7-32/debug-web-platform-tests-e10s-1: FSv27To4TMu6pgHcn-HNwA
+ test-windows7-32/debug-web-platform-tests-e10s-10: KCI8fyQGRKWZPjfJL5dnvQ
+ test-windows7-32/debug-web-platform-tests-e10s-11: PP-onrUkR_qONH8pT1gtyA
+ test-windows7-32/debug-web-platform-tests-e10s-12: MeTnX6DbQ3qV7p63JRRwJg
+ test-windows7-32/debug-web-platform-tests-e10s-13: WKmF20zUT_ii39vLsGbV0w
+ test-windows7-32/debug-web-platform-tests-e10s-14: RARLQ5rTQsiTPTqJGVTZnA
+ test-windows7-32/debug-web-platform-tests-e10s-15: SQZxa2dqSeG_Ii5PV49RGw
+ test-windows7-32/debug-web-platform-tests-e10s-16: dwfEkwIKRoS2CJzd_MXcjw
+ test-windows7-32/debug-web-platform-tests-e10s-17: CKXGitANSq62tt4eS9_gLw
+ test-windows7-32/debug-web-platform-tests-e10s-18: f-GVAn-LRUWI0aAChSKFSA
+ test-windows7-32/debug-web-platform-tests-e10s-2: WTtDSpqWSJy4YFXWV4vgzw
+ test-windows7-32/debug-web-platform-tests-e10s-3: E38WHP60Qs2SwotvrTCYPA
+ test-windows7-32/debug-web-platform-tests-e10s-4: SGoS6sW1Qc67eeHJa01dRg
+ test-windows7-32/debug-web-platform-tests-e10s-5: DTpWW8TLT42BN3yqk28nqQ
+ test-windows7-32/debug-web-platform-tests-e10s-6: WfxsSjahS1uzq7YuI287tQ
+ test-windows7-32/debug-web-platform-tests-e10s-7: JwrVTyrGRbqX0TIDBqAa8g
+ test-windows7-32/debug-web-platform-tests-e10s-8: RpnUwOhzS-KacwV6xE_gOA
+ test-windows7-32/debug-web-platform-tests-e10s-9: X8vRpCbzQIOVHuN5KWLyIA
+ test-windows7-32/debug-web-platform-tests-reftests-e10s-1: aMl3PVa8QEen-oP7hmYvxQ
+ test-windows7-32/debug-web-platform-tests-reftests-e10s-2: RYepa2-lTZawmlGpbs3gNQ
+ test-windows7-32/debug-web-platform-tests-reftests-e10s-3: Oktuvyu1SFml3hxUD0FbYw
+ test-windows7-32/debug-web-platform-tests-reftests-e10s-4: YxrK8zxwRNGidlc57UtXTA
+ test-windows7-32/debug-web-platform-tests-reftests-e10s-5: E-e9HehtS0q-xKVskae-tg
+ test-windows7-32/debug-web-platform-tests-wdspec-e10s-1: fLF7P17eSkq7A41fPZP6IQ
+ test-windows7-32/debug-web-platform-tests-wdspec-e10s-2: GFQrKKsMTrueWigmH6tkUg
+ test-windows7-32/debug-web-platform-tests-wdspec-e10s-3: MXlL6hMgQpGS8-iaVxgp7w
+ test-windows7-32/debug-xpcshell-e10s-1: Nk5NGbN_Sk2oMMMgQhC0gg
+ test-windows7-32/debug-xpcshell-e10s-2: PcwQtJ-eTUW_990_tkQN1Q
+ test-windows7-32/opt-awsy-base-e10s: CpuY0yGqTDGA3ZhOHzZ1yw
+ test-windows7-32/opt-awsy-e10s: d9jCvp_vR2iVD9GjOdx-FA
+ test-windows7-32/opt-awsy-tp6-e10s: WCEoFXU1TZ-ug-dJHAYDbQ
+ test-windows7-32/opt-browser-screenshots-e10s: Zkr9wzCJQXuau4goK0oliA
+ test-windows7-32/opt-cppunit-1proc: Y5sS_dIqTTWg3px_2XmnLg
+ test-windows7-32/opt-crashtest-e10s: XKTwq8a7RZmpi4B0C80dHw
+ test-windows7-32/opt-firefox-ui-functional-local-e10s: eUVURVMESmSUoEvf7b8TZg
+ test-windows7-32/opt-firefox-ui-functional-remote-e10s: cYhwpif3QeGL03zKZ3ayrQ
+ test-windows7-32/opt-gtest-1proc: A00Lb24hSnKvczfbYvLPgQ
+ test-windows7-32/opt-jsreftest-e10s-1: c4RVF2QkT5KHVyWWmHJFKA
+ test-windows7-32/opt-jsreftest-e10s-2: dR_mK9q8T9i1St_HbN1IKQ
+ test-windows7-32/opt-marionette-e10s: aoMRqvwqRR6Xwknp40ywFw
+ test-windows7-32/opt-mochitest-a11y-1proc: bfjwWzEQQC6VhgPQUEtBNw
+ test-windows7-32/opt-mochitest-browser-chrome-e10s-1: DfdBMC64Sa-8P_K4JYImtw
+ test-windows7-32/opt-mochitest-browser-chrome-e10s-2: clj3WXz3R6yhD3Jnxwlehg
+ test-windows7-32/opt-mochitest-browser-chrome-e10s-3: Yx6Vh21hQU-w3DOZOjzYZQ
+ test-windows7-32/opt-mochitest-browser-chrome-e10s-4: D70w1io2S0uVSg6xIoX2_g
+ test-windows7-32/opt-mochitest-browser-chrome-e10s-5: Kgfv3xf9Q_eMURuTe0L-6g
+ test-windows7-32/opt-mochitest-browser-chrome-e10s-6: Q-GDGa4YQhmiuBcY1gnPCA
+ test-windows7-32/opt-mochitest-browser-chrome-e10s-7: YjDGOMgOQneF2lrgzZEWZg
+ test-windows7-32/opt-mochitest-chrome-1proc-1: IVSzzKVrRn-qqoXa5VoyOg
+ test-windows7-32/opt-mochitest-chrome-1proc-2: Y1KkuBh-Sy2M6RO0WliHqQ
+ test-windows7-32/opt-mochitest-devtools-chrome-e10s-1: Gi4UrdnNQVmudymLa9xMjw
+ test-windows7-32/opt-mochitest-devtools-chrome-e10s-2: Is8soNIHQ3a6EFyQnvjz2Q
+ test-windows7-32/opt-mochitest-devtools-chrome-e10s-3: cWHrdVAtT3WuHTQuWgpArw
+ test-windows7-32/opt-mochitest-devtools-chrome-e10s-4: fnQKfTg0Rqak01qHglYL_g
+ test-windows7-32/opt-mochitest-devtools-chrome-e10s-5: AFLN_rX2S_mYZWohLKcxLw
+ test-windows7-32/opt-mochitest-e10s-1: Misgoa7YTqCWzX0PfnvSMA
+ test-windows7-32/opt-mochitest-e10s-2: XyLI8aD0TLG5zZqrukeZag
+ test-windows7-32/opt-mochitest-e10s-3: XBQsdgOgRYipdK8n6RGHVQ
+ test-windows7-32/opt-mochitest-e10s-4: SS4WRr-jS-udELKWD3uRGg
+ test-windows7-32/opt-mochitest-e10s-5: LfitpCtWT0WTlXz3N3f_tA
+ test-windows7-32/opt-mochitest-gpu-e10s: aC0vrlu1SJivc_Ij-YTk1A
+ test-windows7-32/opt-mochitest-media-e10s-1: XKRaAbcURfmxhCxBYjPlhw
+ test-windows7-32/opt-mochitest-media-e10s-2: D14pVM3LTj6f5qo4Fd2HNw
+ test-windows7-32/opt-mochitest-media-e10s-3: N6tN9tJmQsKp58qt2oTRjg
+ test-windows7-32/opt-mochitest-media-spi-e10s-1: V6ubEBmWSY-7yEKJsJk_DA
+ test-windows7-32/opt-mochitest-media-spi-e10s-2: TXgcx59XT5Km4E3GThhaZA
+ test-windows7-32/opt-mochitest-media-spi-e10s-3: azMvGZqhSU2JrxcHOEmC4w
+ test-windows7-32/opt-mochitest-remote-e10s: UC7167JYRnOFbcR3cwqkYA
+ test-windows7-32/opt-mochitest-webgl1-core-e10s: N7oQMNXSTuuhASim_fAv5Q
+ test-windows7-32/opt-mochitest-webgl1-ext-e10s: HbP-OlKxQLu_uIBp2REAHA
+ test-windows7-32/opt-mochitest-webgl2-core-e10s: B4owYmKjS_2dXArCupzNuA
+ test-windows7-32/opt-mochitest-webgl2-ext-e10s-1: XkkJRKLfRZugu15nLnx31w
+ test-windows7-32/opt-mochitest-webgl2-ext-e10s-2: IpX6rKfgSXeHncL2B0mWWw
+ test-windows7-32/opt-mochitest-webgl2-ext-e10s-3: Hk-hzYPuRdO7qjuhvvT-yQ
+ test-windows7-32/opt-mochitest-webgl2-ext-e10s-4: AnNYguk1QR6PJ-YngImL-A
+ test-windows7-32/opt-mochitest-webgpu-e10s: XRLjtYyIQpmBVA8jdS_oaA
+ test-windows7-32/opt-raptor-ares6-firefox-e10s: NbYffUl9ToC_3q6RPa_-9A
+ test-windows7-32/opt-raptor-jetstream2-firefox-e10s: IScOubi6R8GSdloHiKDU5A
+ test-windows7-32/opt-raptor-motionmark-animometer-firefox-e10s: QuSqLdtEQfGygC5iaeyLsw
+ test-windows7-32/opt-raptor-motionmark-htmlsuite-firefox-e10s: RWR0CxqBRtSabj9qkpEg4g
+ test-windows7-32/opt-raptor-speedometer-firefox-e10s: Nes2ZUF1SG2g7or8LDOMWw
+ test-windows7-32/opt-raptor-stylebench-firefox-e10s: APjERCJJRtmvCPxw4wr2MA
+ test-windows7-32/opt-raptor-sunspider-firefox-e10s: fs0SP_y7TcGm8y05cGIXNA
+ test-windows7-32/opt-raptor-tp6-1-firefox-cold-e10s: QPaxI4L4SO-V5y1avH7t_Q
+ test-windows7-32/opt-raptor-tp6-1-firefox-e10s: EhSnrGi0RdyX8Pxwe0TuJg
+ test-windows7-32/opt-raptor-tp6-10-firefox-cold-e10s: IUnNi4IJQ2myrsxJdJ5u3Q
+ test-windows7-32/opt-raptor-tp6-10-firefox-e10s: ZA3oi16QSdeIq43j3QiD4A
+ test-windows7-32/opt-raptor-tp6-11-firefox-cold-e10s: ZO0yKrRVSkaoohHjebcZ8w
+ test-windows7-32/opt-raptor-tp6-12-firefox-cold-e10s: QdJtVldhTS2TM_l3_VaMwA
+ test-windows7-32/opt-raptor-tp6-13-firefox-cold-e10s: UN8uJttMQFmAYpesOF1xeA
+ test-windows7-32/opt-raptor-tp6-14-firefox-cold-e10s: X-UFrbAISge589AFS6zVzQ
+ test-windows7-32/opt-raptor-tp6-15-firefox-cold-e10s: JduXVHcUT-S-LZ8OAzlXow
+ test-windows7-32/opt-raptor-tp6-16-firefox-cold-e10s: CwGYYE91R-ySPzZlzIAGog
+ test-windows7-32/opt-raptor-tp6-17-firefox-cold-e10s: NZt_SqtPQ3iy9uqeZlwdiw
+ test-windows7-32/opt-raptor-tp6-18-firefox-cold-e10s: EJE9_avYRamex2wPjMkRiA
+ test-windows7-32/opt-raptor-tp6-19-firefox-cold-e10s: AFHw6lQ7R4yqkoxWXhbAXw
+ test-windows7-32/opt-raptor-tp6-2-firefox-cold-e10s: PP-0jwv0RkqaL97l953x7w
+ test-windows7-32/opt-raptor-tp6-2-firefox-e10s: RncgwVxdTLO_TbeOfN5OzA
+ test-windows7-32/opt-raptor-tp6-20-firefox-cold-e10s: cDllh5ilQXC0D5ZqrxB6Qg
+ test-windows7-32/opt-raptor-tp6-21-firefox-cold-e10s: BbKxUvavRyGm1BI7IQPFAA
+ test-windows7-32/opt-raptor-tp6-22-firefox-cold-e10s: fffMx4S4QaWVmdV3z16RNA
+ test-windows7-32/opt-raptor-tp6-23-firefox-cold-e10s: J5p7ap0ZSSq8UrZtxc3ZdQ
+ test-windows7-32/opt-raptor-tp6-24-firefox-cold-e10s: Xuw7xAYrSHGq7DBz2CJooQ
+ test-windows7-32/opt-raptor-tp6-25-firefox-cold-e10s: TUbMvX7nTcSEtJrVXyYnug
+ test-windows7-32/opt-raptor-tp6-26-firefox-cold-e10s: Pw1hvwMoQgG1qZGpq80zRA
+ test-windows7-32/opt-raptor-tp6-27-firefox-cold-e10s: ViHHdSk6SO2tkGPHKOnSlw
+ test-windows7-32/opt-raptor-tp6-28-firefox-cold-e10s: InIu0HxXTEWEnq3FL6c0yg
+ test-windows7-32/opt-raptor-tp6-29-firefox-cold-e10s: G9C2debgSHKqFCmf36E3_g
+ test-windows7-32/opt-raptor-tp6-3-firefox-cold-e10s: Adv-XfOuRty-mfAIE6lDtw
+ test-windows7-32/opt-raptor-tp6-3-firefox-e10s: Zil7uSuDQdyZeav33kH-Og
+ test-windows7-32/opt-raptor-tp6-30-firefox-cold-e10s: Og5_VNVtSAa3xnqRW8rCbA
+ test-windows7-32/opt-raptor-tp6-4-firefox-cold-e10s: L0GhhG1tTVisiRBNxydrwA
+ test-windows7-32/opt-raptor-tp6-4-firefox-e10s: LTsre7fcS-iydxnMkG-uWA
+ test-windows7-32/opt-raptor-tp6-5-firefox-cold-e10s: aBih6DUeQ7S35RG0Khxjbg
+ test-windows7-32/opt-raptor-tp6-5-firefox-e10s: f8GyuzcTQBarnZitIfIueQ
+ test-windows7-32/opt-raptor-tp6-6-firefox-cold-e10s: AekDXif7Q2C8tWXauFQqtw
+ test-windows7-32/opt-raptor-tp6-6-firefox-e10s: KuxX94voQpO8c-qkgQxcqw
+ test-windows7-32/opt-raptor-tp6-7-firefox-cold-e10s: CwKMeU2WSeGa8bkPhZoIvw
+ test-windows7-32/opt-raptor-tp6-7-firefox-e10s: Jpm_ec3bRzyzkk8yzCJS6Q
+ test-windows7-32/opt-raptor-tp6-8-firefox-cold-e10s: N8JiUXMaSCyTppUaqYWI1Q
+ test-windows7-32/opt-raptor-tp6-8-firefox-e10s: fNTckMTYTbeKyw4p7XvdZg
+ test-windows7-32/opt-raptor-tp6-9-firefox-cold-e10s: HjGVQz7bRBSU_cn0mbkWmA
+ test-windows7-32/opt-raptor-tp6-9-firefox-e10s: Bju_MGLIRDGSpiOvrwNV6w
+ test-windows7-32/opt-raptor-tp6-binast-1-firefox-e10s: f4xWb0ZwTdeqJj9gmEB2hw
+ test-windows7-32/opt-raptor-wasm-godot-firefox-e10s: Vpy12FmBQQCvVQr_jsPSZQ
+ test-windows7-32/opt-raptor-webaudio-firefox-e10s: ZJQcp17DSySk4ZuYJWeA3Q
+ test-windows7-32/opt-raptor-youtube-playback-firefox-e10s: KzdCA2g2TUCd434b9YIKoQ
+ test-windows7-32/opt-reftest-e10s-1: IN2kCQZuSReVf6gcWghpyQ
+ test-windows7-32/opt-reftest-e10s-2: IyyHcYwdS9qIZIV36miO6w
+ test-windows7-32/opt-reftest-gpu-e10s-1: DMT7hqpMSjmHup_Uv2bC5w
+ test-windows7-32/opt-reftest-gpu-e10s-2: V7r50kQHRpyBR2o0mpI4Iw
+ test-windows7-32/opt-reftest-no-accel-e10s-1: bymq34X0Q4yHVXZki_7jVA
+ test-windows7-32/opt-reftest-no-accel-e10s-2: GT6nAFCIT1SHmw-hmfz7EA
+ test-windows7-32/opt-reftest-no-accel-e10s-3: Bm4GezN4TV-oNIHplNHyfA
+ test-windows7-32/opt-reftest-no-accel-e10s-4: VrGRpsy8SzOjUxDD9B0KbA
+ test-windows7-32/opt-talos-bcv-e10s: Ci4eJMqdTGmgADqsuXsQoA
+ test-windows7-32/opt-talos-chrome-e10s: FmCDr9nESyCIR4Vn0MmvtA
+ test-windows7-32/opt-talos-dromaeojs-e10s: P3JaVsV4SHiRWbJ4Lj8wCg
+ test-windows7-32/opt-talos-g1-e10s: X-YuXrKRRQm8ztC3uKsoLQ
+ test-windows7-32/opt-talos-g4-e10s: RSjd9PtDTzGsBRHNtasd7Q
+ test-windows7-32/opt-talos-g5-e10s: axwRGGAxTAWNZdij641Jww
+ test-windows7-32/opt-talos-other-e10s: HxKubQK2T-uY3MfQD-qP1w
+ test-windows7-32/opt-talos-perf-reftest-e10s: B27zd6mhQ_Gb9t_8HIayWQ
+ test-windows7-32/opt-talos-perf-reftest-singletons-e10s: QkanabI0SWCzZyD_kxziiQ
+ test-windows7-32/opt-talos-realworld-webextensions-e10s: WeeY25D3RU2d2gl1WYWVQA
+ test-windows7-32/opt-talos-sessionrestore-many-windows-e10s: YO7ONzkPQB2WqDMh9hrklA
+ test-windows7-32/opt-talos-svgr-e10s: aIGZE-2zRt2-dmSrbgqeDA
+ test-windows7-32/opt-talos-tabswitch-e10s: K-nagvA4RtWKuy-8mN26RQ
+ test-windows7-32/opt-talos-tp5o-e10s: f8Cv6VLJR_K9qTPDsMDOkg
+ test-windows7-32/opt-talos-webgl-e10s: TOuPrxYRRfS6tcZd3NsG0A
+ test-windows7-32/opt-talos-xperf-e10s: Y6VmAbxsQrS4d4Vg_Gfxkg
+ test-windows7-32/opt-telemetry-tests-client-e10s: NYDcVVTASLaIEiehs1Y-cw
+ test-windows7-32/opt-test-verify-e10s-1: Srcbfg3xQw2Fzdmmuhz4Pg
+ test-windows7-32/opt-test-verify-e10s-2: ZIYt-mrpQHqSa1qG_G_EQg
+ test-windows7-32/opt-test-verify-gpu-e10s: LCdfCe6jQ7KRUuFSLt_gLA
+ test-windows7-32/opt-test-verify-wpt-e10s-1: Ze13LkGDSHWQ4vuHVBsHQw
+ test-windows7-32/opt-test-verify-wpt-e10s-2: TI71V7lESqiVq3c38PRCLw
+ test-windows7-32/opt-test-verify-wpt-e10s-3: bDfLorcdS9y9AbdOUcvEwQ
+ test-windows7-32/opt-web-platform-tests-crashtests-e10s: dvdmMtVGRdWdoT_G_-Q-QA
+ test-windows7-32/opt-web-platform-tests-e10s-1: Y2e2vrhlTu6alNJ-58HZEw
+ test-windows7-32/opt-web-platform-tests-e10s-10: DcegzA7qTWSconY9cfh5WQ
+ test-windows7-32/opt-web-platform-tests-e10s-11: Z4hqQOOKROCv23QXUL-3LA
+ test-windows7-32/opt-web-platform-tests-e10s-12: eolq4wXdQKKlIMjpnEiWVg
+ test-windows7-32/opt-web-platform-tests-e10s-2: P8fttagaTJKN_B_1b_nVbQ
+ test-windows7-32/opt-web-platform-tests-e10s-3: FrOH933JSNGuBhwxDIY0iw
+ test-windows7-32/opt-web-platform-tests-e10s-4: aLZoR38JReuZxYU467wU-Q
+ test-windows7-32/opt-web-platform-tests-e10s-5: F5qqOP3_QgWqGANmEXSH5g
+ test-windows7-32/opt-web-platform-tests-e10s-6: daZaDUvDSDyh1AreawW0BQ
+ test-windows7-32/opt-web-platform-tests-e10s-7: dvjB0VLHT8WS7--7q4LJ4A
+ test-windows7-32/opt-web-platform-tests-e10s-8: C06TIQa7QHiComUTry1tsA
+ test-windows7-32/opt-web-platform-tests-e10s-9: TIwFSxNaTNGmdW8-K8OhWA
+ test-windows7-32/opt-web-platform-tests-reftests-e10s-1: C145wvOgRVitIKaPQsEGbA
+ test-windows7-32/opt-web-platform-tests-reftests-e10s-2: aov4BHomRr-x8GNaLpbfWQ
+ test-windows7-32/opt-web-platform-tests-reftests-e10s-3: Dp6gZ3xtQO-DxcDkjamWyg
+ test-windows7-32/opt-web-platform-tests-reftests-e10s-4: BHY4qFknT2uoeX_EzX6e8A
+ test-windows7-32/opt-web-platform-tests-wdspec-e10s-1: ciFbhziETw-Q9NA6jJUZZg
+ test-windows7-32/opt-web-platform-tests-wdspec-e10s-2: C17eCyRmRnW2Bkq8aiPmCQ
+ test-windows7-32/opt-web-platform-tests-wdspec-e10s-3: exme7WBsSyeEaGbqzQWcNw
+ test-windows7-32/opt-xpcshell-e10s-1: FlyXk1kPSTGF9biSp468gQ
+ test-windows7-32/opt-xpcshell-e10s-2: ETdo44clTFWEZlauPRozKQ
+ toolchain-browsertime: XDyTs8lxRF-DqN5W--IS0w
+ toolchain-clang-dist-toolchain: RO2flChhTbyO63axthBonQ
+ toolchain-linux32-geckodriver: RS2TFJaeS3mbFL9FdPpA2w
+ toolchain-linux64-android-gradle-dependencies: Cz2uw8b2QmmTexdOIEYIZA
+ toolchain-linux64-android-ndk-linux-repack: Ug81Nk3HQYKG609vmDyXcA
+ toolchain-linux64-android-sdk-linux-repack: WKN-ZRPwRZCeNl0trNtBVA
+ toolchain-linux64-binutils: a0RoJGdRQ5C6UCY4obHsOg
+ toolchain-linux64-cbindgen: KVVfUO0CSmWVBcB93Vx1oA
+ toolchain-linux64-cctools-port: GragU-ulT1yyDsYCtSrGzQ
+ toolchain-linux64-clang-5.0: JL5TGaOjTVef-lPCt6zi6Q
+ toolchain-linux64-clang-7: bkKxTUf4SwKAk38fndSUOA
+ toolchain-linux64-clang-9: Yy680zNCRqGgY9DsDS81wg
+ toolchain-linux64-clang-9-aarch64-cross: NjPIKH5eTiaHyi_w6hu65A
+ toolchain-linux64-clang-9-android-cross: QDgZaovNR3aFMyL23ZKz4w
+ toolchain-linux64-clang-9-cross: UMh1t6HfRFafur2EVlvKaw
+ toolchain-linux64-clang-9-macosx-cross: ZivUE9amRZq53rC6EZyRUQ
+ toolchain-linux64-clang-9-mingw-x64: XjFoX1OfSEe5xjFKFhZvdw
+ toolchain-linux64-clang-9-mingw-x86: L9kfRoIySzW2Q23bHi2RWw
+ toolchain-linux64-clang-tidy: Z6dPnXc8Q4SfEipjyREOPg
+ toolchain-linux64-custom-v8: dulld0kqQfWmxPchNFt1qg
+ toolchain-linux64-fix-stacks: FcW-r1UHSTKFzR1OGv3QSQ
+ toolchain-linux64-gcc-7: UGKHvcwNQPitP8m2pQ97gQ
+ toolchain-linux64-gcc-8: KkIEAzmtSmi_B44JwIA5vw
+ toolchain-linux64-gcc-sixgill: bwj2gCRORDqN7ROznITwhA
+ toolchain-linux64-geckodriver: EahO8KUCQO6oH7XsvMXyxA
+ toolchain-linux64-gn: ar_0nTYFRg637SwhyBh6vQ
+ toolchain-linux64-grcov: Mxa40vAeTUa4ALMsQAZheQ
+ toolchain-linux64-hfsplus: UomYwi3wQdOUuGj_9i1QNw
+ toolchain-linux64-infer: WZp6hfxhRQmYzbHkTKR07A
+ toolchain-linux64-libdmg: ZvFzpfrnSx-zJhZLAGbRAA
+ toolchain-linux64-llvm-dsymutil: KyNhjMnCQX-Hh8cvydAXHA
+ toolchain-linux64-lucetc: PA7NnNWuTbSq2VJQ3o_kWA
+ toolchain-linux64-mar-tools: PPRDvkDCSUS485N1N6tAjw
+ toolchain-linux64-mingw-fxc2-x86: cmK0OYMHRUafXd9w_91H2w
+ toolchain-linux64-mingw32-gcc: ddRrECsBQ62KiortN9sgXA
+ toolchain-linux64-mingw32-nsis: CemW25_NQtaQDz9pBVmlAg
+ toolchain-linux64-minidump-stackwalk: JlY_SvzoSNOcwLvWe3PcAA
+ toolchain-linux64-nasm: b_U0p4u2T6WareVbLwkdpQ
+ toolchain-linux64-nasm-2.13.02: Y1uJKUGNTaK3UQtEOYcL2w
+ toolchain-linux64-node-10: MQcj05XLRQW0kWkMjNwbyQ
+ toolchain-linux64-rust-1.39: EMJmEtq3QYa8Z49REKJeZg
+ toolchain-linux64-rust-1.41: Ir6g-58qQqG_DGMKzArTOA
+ toolchain-linux64-rust-android-1.41: Ou03bt5pTpKU3ExiyCsfTw
+ toolchain-linux64-rust-cross-1.41: bEczX-VFRvCJBoREoqpTKg
+ toolchain-linux64-rust-macos-1.41: TB8YkM87RIKUxCmwMknHUA
+ toolchain-linux64-rust-nightly: Ropn2AHhRl2lgdzMxjDaHg
+ toolchain-linux64-rust-size: Cc_zhwc8R9CpBiKOYlr9Bw
+ toolchain-linux64-rust-windows-1.41: SYQMR7JqQ1Kl7CFdSX1MYA
+ toolchain-linux64-sccache: XrR_grO7SxqQlXG8mYvDgw
+ toolchain-linux64-tup: IE2UjFLHQJCd15OCgNPupw
+ toolchain-linux64-upx: Taf34uFoTwaTz6QHbtn_lw
+ toolchain-linux64-wine: DYy4EENmRy2zPlGtiLI6_g
+ toolchain-macosx64-cbindgen: dEncVur5SVa4mX0EPSRl0g
+ toolchain-macosx64-clang: TdyTwEK1To2ykPwn1Cg34g
+ toolchain-macosx64-clang-tidy: fdE6dAD2Rh2KheyxIEaSkg
+ toolchain-macosx64-fix-stacks: SCptnTvaQUWhdOpVdzEN1g
+ toolchain-macosx64-geckodriver: PX-OE57rR5esqOWG0-WuDA
+ toolchain-macosx64-gn: Ii7Bj6H7RjWEptf5FiAvfA
+ toolchain-macosx64-grcov: NKA252xCSy23yQJShZTXcg
+ toolchain-macosx64-minidump-stackwalk: JsbyJCuXTKKHSxbuLlIkEQ
+ toolchain-macosx64-node-10: VO937BuJSBecpn_Ucn47Bw
+ toolchain-macosx64-sccache: V3ck3vwBS1SOEbiRXNfh0g
+ toolchain-mingw32-rust-1.41: fllx_uoATM2rSQHknDbmTQ
+ toolchain-rustc-dist-toolchain: QWAggrxWTtCrgvU0uF4ilA
+ toolchain-wasi-sysroot: SaoYYehuQoGH48MjmuRc3g
+ toolchain-wgpu-deps: Ppb0qAfnSUWywP81o8tCLw
+ toolchain-win32-geckodriver: WUhp58AeSTyKf6-lQ2zs2g
+ toolchain-win32-gn: XsxSamjjQ_C813fSjeJJjg
+ toolchain-win32-minidump-stackwalk: bJyZkx0hRZ2ECsaYo-TlRA
+ toolchain-win32-node-10: FOsYejdhTJKL04WWPI5d3w
+ toolchain-win64-cbindgen: ENzNL1hSTvqElwsrYZCPRA
+ toolchain-win64-clang-cl: a2l60dKRRlmYMFKiaszrgw
+ toolchain-win64-clang-tidy: WUbmAwIATDWB8NTraFVYCA
+ toolchain-win64-dump-syms: Jd5v4Wf7TtSmMGvYgPZwiQ
+ toolchain-win64-fix-stacks: HY9uFXa1S2-KxwvAYRR2CQ
+ toolchain-win64-geckodriver: ekr5utRfSBSEn4d7CdTM5Q
+ toolchain-win64-grcov: Vq7gY9jlT92rDbVWQqiYAQ
+ toolchain-win64-nasm: b7ZOrpZMTxqYmusoAvUmDQ
+ toolchain-win64-node-10: SZJXEAmHSmKLxqcmm1e1tQ
+ toolchain-win64-rust-1.41: UaQ0orO5SZ2ILbha1CyuGA
+ toolchain-win64-rust-size: UMVAemi0Ryq1bENJXdoRlw
+ toolchain-win64-sccache: OXSH-f7iSaaiO7dNDbgXkQ
+ toolchain-wrench-deps: dfwuIJ7uTGOKfgUuqk9dHw
+ upload-generated-sources-linux-shippable/opt: JsFgahPqT22syzcBb7a31Q
+ upload-generated-sources-linux64-shippable/opt: fWtSqzbhSReVfXaDpJSxjQ
+ upload-generated-sources-macosx64-shippable/opt: PYyHHIIiRRy08w2uJVw6rA
+ upload-generated-sources-win32-shippable/opt: f53Q99hJR-i-Qu4Myyqfqw
+ upload-generated-sources-win64-aarch64-shippable/opt: UKXYiY34RniNE47SK-sCsw
+ upload-generated-sources-win64-shippable/opt: Jy0Ke0MHQSG7MZ9dNjRPtg
+ valgrind-linux64-valgrind/opt: IVDrHmEMTrOrXdXGafY33w
+ webrender-android-emulator-debug: L_fy2OtsTxWcuYU7wlFBKA
+ webrender-android-emulator-release: agQFQAOlT_uS8Mu2X0U4mw
+ webrender-android-hw-p2-debug: J2UNjaMXRGuLWr9cG7RGCA
+ webrender-android-hw-p2-opt: UfFIBnKtT2yh97c4YigpQw
+ webrender-cargotest-macos-build: KSGmyMIzT2yr7lLNz43jqg
+ webrender-lint-tidy: cEJAXiY3Qnyy4277SIGLEA
+ webrender-linux-debug: I70EWbeASBqeYezqCFKzEw
+ webrender-linux-release: I60Iz0e5Sji9hDUL4se3nQ
+ webrender-macos-debug: D8V1QjUTRCeSMQx0b8xloA
+ webrender-macos-release: WUmgg6P1Twmj6UZ0U1XVPg
+ webrender-windows: OTEwx1MtTnmi7bxuE9hYIw
+ webrender-wrench-android-debug: JfaZIjpWRGikHOpVKQkjEg
+ webrender-wrench-android-release: Sml65fd_QIaWJo-VOsc3EA
+ webrender-wrench-macos-build: INlHVhAcRKWjHf4xbz95Gg
+filters:
+ - target_tasks_method
+head_ref: 9e8d5431c4121a4bd70d440c98b50444aee60dd9
+head_repository: https://hg.mozilla.org/mozilla-central
+head_rev: 9e8d5431c4121a4bd70d440c98b50444aee60dd9
+hg_branch: default
+level: "3"
+message: ""
+moz_build_date: "20200227094956"
+next_version: null
+optimize_target_tasks: true
+owner: cron@noreply.mozilla.org
+phabricator_diff: null
+project: mozilla-central
+pushdate: 1582796996
+pushlog_id: "37162"
+release_enable_emefree: false
+release_enable_partners: false
+release_eta: ""
+release_history: {}
+release_partner_build_number: 1
+release_partner_config: {}
+release_partners: []
+release_product: null
+release_type: nightly
+required_signoffs: []
+signoff_urls: {}
+target_tasks_method: ship_geckoview
+tasks_for: cron
+try_mode: null
+try_options: null
+try_task_config: {}
+version: 75.0a1
diff --git a/taskcluster/test/params/me-promote-firefox.yml b/taskcluster/test/params/me-promote-firefox.yml
new file mode 100644
index 0000000000..b25b6e8aff
--- /dev/null
+++ b/taskcluster/test/params/me-promote-firefox.yml
@@ -0,0 +1,40 @@
+---
+app_version: 60.0.1
+base_repository: https://hg.mozilla.org/mozilla-unified
+build_date: 1526441057
+build_number: 1
+do_not_optimize: []
+existing_tasks: {}
+filters:
+ - target_tasks_method
+head_ref: efbcc205a0d3562691bf62bb0cb55bb7e891e8ff
+head_repository: https://hg.mozilla.org/releases/mozilla-esr60
+head_rev: efbcc205a0d3562691bf62bb0cb55bb7e891e8ff
+hg_branch: default
+level: "3"
+message: " "
+moz_build_date: "20180516032417"
+next_version: 60.0.2
+optimize_target_tasks: true
+owner: nthomas@mozilla.com
+project: mozilla-esr60
+pushdate: 1526441057
+pushlog_id: "35"
+release_enable_emefree: false
+release_enable_partners: false
+release_eta: "2018-05-16T13:00:00+00:00"
+release_history: {}
+release_partner_build_number: 1
+release_partner_config: {}
+release_partners: null
+release_product: firefox
+release_type: "esr60"
+target_tasks_method: promote_desktop
+try_mode: null
+try_options: null
+try_task_config: {}
+version: 60.0.1esr
+required_signoffs: []
+signoff_urls: {}
+phabricator_diff:
+tasks_for: action
diff --git a/taskcluster/test/params/me-push-firefox.yml b/taskcluster/test/params/me-push-firefox.yml
new file mode 100644
index 0000000000..b88012e274
--- /dev/null
+++ b/taskcluster/test/params/me-push-firefox.yml
@@ -0,0 +1,41 @@
+---
+app_version: 60.0.1
+base_repository: https://hg.mozilla.org/mozilla-unified
+build_date: 1526441057
+build_number: 1
+do_not_optimize: []
+existing_tasks: {}
+filters:
+ - target_tasks_method
+head_ref: efbcc205a0d3562691bf62bb0cb55bb7e891e8ff
+head_repository: https://hg.mozilla.org/releases/mozilla-esr60
+head_rev: efbcc205a0d3562691bf62bb0cb55bb7e891e8ff
+hg_branch: default
+level: "3"
+message: " "
+moz_build_date: "20180516032417"
+next_version: 60.0.2
+optimize_target_tasks: true
+owner: nthomas@mozilla.com
+project: mozilla-esr60
+pushdate: 1526441057
+pushlog_id: "35"
+release_enable_emefree: false
+release_enable_partners: false
+release_eta: "2018-05-16T13:00:00+00:00"
+release_history: {}
+release_partner_build_number: 1
+release_partner_config: {}
+release_partners: null
+release_product: firefox
+release_type: "esr60"
+target_tasks_method: push_desktop
+try_mode: null
+try_options: null
+try_task_config: {}
+version: 60.0.1esr
+required_signoffs: []
+signoff_urls: {}
+phabricator_diff:
+tasks_for: action
+test_manifest_loader: default
diff --git a/taskcluster/test/params/me-ship-firefox.yml b/taskcluster/test/params/me-ship-firefox.yml
new file mode 100644
index 0000000000..c891736340
--- /dev/null
+++ b/taskcluster/test/params/me-ship-firefox.yml
@@ -0,0 +1,40 @@
+---
+app_version: 60.0.1
+base_repository: https://hg.mozilla.org/mozilla-unified
+build_date: 1526441057
+build_number: 1
+do_not_optimize: []
+existing_tasks: {}
+filters:
+ - target_tasks_method
+head_ref: efbcc205a0d3562691bf62bb0cb55bb7e891e8ff
+head_repository: https://hg.mozilla.org/releases/mozilla-esr60
+head_rev: efbcc205a0d3562691bf62bb0cb55bb7e891e8ff
+hg_branch: default
+level: "3"
+message: " "
+moz_build_date: "20180516032417"
+next_version: 60.0.2
+optimize_target_tasks: true
+owner: nthomas@mozilla.com
+project: mozilla-esr60
+pushdate: 1526441057
+pushlog_id: "35"
+release_enable_emefree: false
+release_enable_partners: false
+release_eta: "2018-05-16T13:00:00+00:00"
+release_history: {}
+release_partner_build_number: 1
+release_partner_config: {}
+release_partners: null
+release_product: firefox
+release_type: "esr60"
+target_tasks_method: ship_desktop
+try_mode: null
+try_options: null
+try_task_config: {}
+version: 60.0.1esr
+required_signoffs: []
+signoff_urls: {}
+phabricator_diff:
+tasks_for: action
diff --git a/taskcluster/test/params/mr-onpush-geckoview.yml b/taskcluster/test/params/mr-onpush-geckoview.yml
new file mode 100644
index 0000000000..f7ae1913ba
--- /dev/null
+++ b/taskcluster/test/params/mr-onpush-geckoview.yml
@@ -0,0 +1,41 @@
+---
+app_version: 62.0.3
+base_repository: https://hg.mozilla.org/mozilla-unified
+build_date: 1539294145
+build_number: 1
+do_not_optimize: []
+existing_tasks: {}
+filters:
+ - target_tasks_method
+head_ref: d66bd740b59ffdcb800dc225cf29fc383d5e1a2b
+head_repository: https://hg.mozilla.org/releases/mozilla-release
+head_rev: d66bd740b59ffdcb800dc225cf29fc383d5e1a2b
+hg_branch: GECKOVIEW_62_RELBRANCH
+level: "3"
+message: " "
+moz_build_date: "20181011214225"
+next_version: null
+optimize_target_tasks: true
+owner: nchen@mozilla.com
+project: mozilla-release
+pushdate: 1539294145
+pushlog_id: "1814"
+release_enable_emefree: false
+release_enable_partners: false
+release_eta: ""
+release_history: {}
+release_partner_build_number: 1
+release_partner_config: {}
+release_partners: []
+release_product: null
+release_type: "release"
+target_tasks_method: mozilla_release_tasks
+try_mode: null
+try_options: null
+try_task_config: {}
+version: 62.0.3
+required_signoffs: []
+signoff_urls: {}
+phabricator_diff:
+tasks_for: action
+test_manifest_loader: default
diff --git a/taskcluster/test/params/mr-onpush.yml b/taskcluster/test/params/mr-onpush.yml
new file mode 100644
index 0000000000..69f5b55516
--- /dev/null
+++ b/taskcluster/test/params/mr-onpush.yml
@@ -0,0 +1,43 @@
+---
+base_repository: https://hg.mozilla.org/mozilla-central
+build_date: 1509164545
+build_number: 1
+app_version: "60.0"
+version: "60.0"
+next_version: null
+filters:
+ - target_tasks_method
+head_ref: 196059cada7070ab1e35db83a22b60389bd0c794
+head_repository: https://hg.mozilla.org/releases/mozilla-release
+head_rev: 196059cada7070ab1e35db83a22b60389bd0c794
+hg_branch: default
+level: "3"
+message: " "
+# morph_templates: {}
+moz_build_date: "20171028042225"
+optimize_target_tasks: false
+owner: xquan@mozilla.com
+project: mozilla-release
+pushdate: 1509164545
+pushlog_id: "8069"
+release_eta: ""
+release_history: {}
+release_enable_partners: false
+release_partners: []
+release_partner_build_number: 1
+release_partner_config: null
+release_enable_emefree: false
+# target_task_labels: []
+target_tasks_method: mozilla_release_tasks
+do_not_optimize: []
+try_mode: null
+try_task_config: {}
+existing_tasks: {}
+try_options:
+release_type: "release"
+release_product: null
+required_signoffs: []
+signoff_urls: {}
+phabricator_diff:
+tasks_for: hg-push
+test_manifest_loader: default
diff --git a/taskcluster/test/params/mr-promote-firefox-rc.yml b/taskcluster/test/params/mr-promote-firefox-rc.yml
new file mode 100644
index 0000000000..afa4a85f94
--- /dev/null
+++ b/taskcluster/test/params/mr-promote-firefox-rc.yml
@@ -0,0 +1,109 @@
+---
+base_repository: https://hg.mozilla.org/mozilla-central
+build_date: 1509164545
+build_number: 1
+app_version: "60.0"
+version: "60.0"
+next_version: null
+filters:
+ - target_tasks_method
+head_ref: 14d9cd421424a2f3e38b9c8489900c3bb769846
+head_repository: https://hg.mozilla.org/releases/mozilla-release
+head_rev: 14d9cd421424a2f3e38b9c8489900c3bb769846
+hg_branch: default
+level: "3"
+message: " "
+# morph_templates: {}
+moz_build_date: "20171028042225"
+optimize_target_tasks: true
+owner: xquan@mozilla.com
+project: mozilla-release
+pushdate: 1509164545
+pushlog_id: "8069"
+release_eta: "2018-01-31T00:30:00+00:00"
+release_history: {}
+release_enable_partners: true
+release_partners: null
+release_partner_build_number: 1
+release_partner_config:
+ {
+ "release-eme-free-repack":
+ {
+ "mozilla-EME-free":
+ {
+ "mozilla-EME-free":
+ {
+ "s3cfg": "/builds/release-s3cfg",
+ "dist_version": "1.0",
+ "bucket": "net-mozaws-prod-delivery-firefox",
+ "platforms":
+ [
+ "macosx64-shippable",
+ "win32-shippable",
+ "win64-shippable",
+ ],
+ "aus": "mozilla-EMEfree",
+ "output_dir": "%(platform)s-EME-free/%(locale)s",
+ "upload_to_candidates": "true",
+ "locales": ["de", "en-US"],
+ "dist_id": "mozilla-EMEfree",
+ },
+ },
+ },
+ "release-partner-repack":
+ {
+ "partner2":
+ {
+ "partner2":
+ {
+ "dist_version": "1.0",
+ "bucket": "net-mozaws-prod-delivery-firefox",
+ "platforms":
+ [
+ "macosx64-shippable",
+ "win32-shippable",
+ "win64-shippable",
+ ],
+ "aus": "partner2",
+ "output_dir": "%(platform)s-EME-free/%(locale)s",
+ "locales": ["en-US"],
+ "dist_id": "partner2",
+ },
+ },
+ "partner1":
+ {
+ "partner1":
+ {
+ "dist_version": "1.0",
+ "bucket": "net-mozaws-prod-delivery-firefox",
+ "platforms":
+ [
+ "linux-shippable",
+ "linux64-shippable",
+ "macosx64-shippable",
+ "win32-shippable",
+ "win64-shippable",
+ ],
+ "aus": "partner1",
+ "output_dir": "%(platform)s-EME-free/%(locale)s",
+ "upload_to_candidates": "true",
+ "locales": ["de", "en-US"],
+ "dist_id": "partner1",
+ },
+ },
+ },
+ }
+release_enable_emefree: true
+# target_task_labels: []
+target_tasks_method: promote_desktop
+do_not_optimize: []
+try_mode: null
+try_task_config: {}
+existing_tasks: {}
+try_options:
+release_type: "release-rc"
+release_product: firefox
+required_signoffs: []
+signoff_urls: {}
+phabricator_diff:
+tasks_for: action
diff --git a/taskcluster/test/params/mr-promote-firefox.yml b/taskcluster/test/params/mr-promote-firefox.yml
new file mode 100644
index 0000000000..f26ae56c0b
--- /dev/null
+++ b/taskcluster/test/params/mr-promote-firefox.yml
@@ -0,0 +1,109 @@
+---
+base_repository: https://hg.mozilla.org/mozilla-central
+build_date: 1509164545
+build_number: 1
+app_version: "60.0"
+version: "60.0"
+next_version: null
+filters:
+ - target_tasks_method
+head_ref: 14d9cd421424a2f3e38b9c8489900c3bb769846
+head_repository: https://hg.mozilla.org/releases/mozilla-release
+head_rev: 14d9cd421424a2f3e38b9c8489900c3bb769846
+hg_branch: default
+level: "3"
+message: " "
+# morph_templates: {}
+moz_build_date: "20171028042225"
+optimize_target_tasks: true
+owner: xquan@mozilla.com
+project: mozilla-release
+pushdate: 1509164545
+pushlog_id: "8069"
+release_eta: "2018-01-31T00:30:00+00:00"
+release_history: {}
+release_enable_partners: true
+release_partners: null
+release_partner_build_number: 1
+release_partner_config:
+ {
+ "release-eme-free-repack":
+ {
+ "mozilla-EME-free":
+ {
+ "mozilla-EME-free":
+ {
+ "s3cfg": "/builds/release-s3cfg",
+ "dist_version": "1.0",
+ "bucket": "net-mozaws-prod-delivery-firefox",
+ "platforms":
+ [
+ "macosx64-shippable",
+ "win32-shippable",
+ "win64-shippable",
+ ],
+ "aus": "mozilla-EMEfree",
+ "output_dir": "%(platform)s-EME-free/%(locale)s",
+ "upload_to_candidates": "true",
+ "locales": ["de", "en-US"],
+ "dist_id": "mozilla-EMEfree",
+ },
+ },
+ },
+ "release-partner-repack":
+ {
+ "partner2":
+ {
+ "partner2":
+ {
+ "dist_version": "1.0",
+ "bucket": "net-mozaws-prod-delivery-firefox",
+ "platforms":
+ [
+ "macosx64-shippable",
+ "win32-shippable",
+ "win64-shippable",
+ ],
+ "aus": "partner2",
+ "output_dir": "%(platform)s-EME-free/%(locale)s",
+ "locales": ["en-US"],
+ "dist_id": "partner2",
+ },
+ },
+ "partner1":
+ {
+ "partner1":
+ {
+ "dist_version": "1.0",
+ "bucket": "net-mozaws-prod-delivery-firefox",
+ "platforms":
+ [
+ "linux-shippable",
+ "linux64-shippable",
+ "macosx64-shippable",
+ "win32-shippable",
+ "win64-shippable",
+ ],
+ "aus": "partner1",
+ "output_dir": "%(platform)s-EME-free/%(locale)s",
+ "upload_to_candidates": "true",
+ "locales": ["de", "en-US"],
+ "dist_id": "partner1",
+ },
+ },
+ },
+ }
+release_enable_emefree: true
+# target_task_labels: []
+target_tasks_method: promote_desktop
+do_not_optimize: []
+try_mode: null
+try_task_config: {}
+existing_tasks: {}
+try_options:
+release_type: "release"
+release_product: firefox
+required_signoffs: []
+signoff_urls: {}
+phabricator_diff:
+tasks_for: action
diff --git a/taskcluster/test/params/mr-push-firefox.yml b/taskcluster/test/params/mr-push-firefox.yml
new file mode 100644
index 0000000000..7df2ac3f04
--- /dev/null
+++ b/taskcluster/test/params/mr-push-firefox.yml
@@ -0,0 +1,110 @@
+---
+base_repository: https://hg.mozilla.org/mozilla-central
+build_date: 1509164545
+build_number: 1
+app_version: "60.0"
+version: "60.0"
+next_version: 60.0.1
+filters:
+ - target_tasks_method
+head_ref: 14d9cd421424a2f3e38b9c8489900c3bb769846
+head_repository: https://hg.mozilla.org/releases/mozilla-release
+head_rev: 14d9cd421424a2f3e38b9c8489900c3bb769846
+hg_branch: default
+level: "3"
+message: " "
+# morph_templates: {}
+moz_build_date: "20171028042225"
+optimize_target_tasks: true
+owner: xquan@mozilla.com
+project: mozilla-release
+pushdate: 1509164545
+pushlog_id: "8069"
+release_eta: "2018-01-31T00:30:00+00:00"
+release_history: {}
+release_enable_partners: true
+release_partners: null
+release_partner_build_number: 1
+release_partner_config:
+ {
+ "release-eme-free-repack":
+ {
+ "mozilla-EME-free":
+ {
+ "mozilla-EME-free":
+ {
+ "s3cfg": "/builds/release-s3cfg",
+ "dist_version": "1.0",
+ "bucket": "net-mozaws-prod-delivery-firefox",
+ "platforms":
+ [
+ "macosx64-shippable",
+ "win32-shippable",
+ "win64-shippable",
+ ],
+ "aus": "mozilla-EMEfree",
+ "output_dir": "%(platform)s-EME-free/%(locale)s",
+ "upload_to_candidates": "true",
+ "locales": ["de", "en-US"],
+ "dist_id": "mozilla-EMEfree",
+ },
+ },
+ },
+ "release-partner-repack":
+ {
+ "partner2":
+ {
+ "partner2":
+ {
+ "dist_version": "1.0",
+ "bucket": "net-mozaws-prod-delivery-firefox",
+ "platforms":
+ [
+ "macosx64-shippable",
+ "win32-shippable",
+ "win64-shippable",
+ ],
+ "aus": "partner2",
+ "output_dir": "%(platform)s-EME-free/%(locale)s",
+ "locales": ["en-US"],
+ "dist_id": "partner2",
+ },
+ },
+ "partner1":
+ {
+ "partner1":
+ {
+ "dist_version": "1.0",
+ "bucket": "net-mozaws-prod-delivery-firefox",
+ "platforms":
+ [
+ "linux-shippable",
+ "linux64-shippable",
+ "macosx64-shippable",
+ "win32-shippable",
+ "win64-shippable",
+ ],
+ "aus": "partner1",
+ "output_dir": "%(platform)s-EME-free/%(locale)s",
+ "upload_to_candidates": "true",
+ "locales": ["de", "en-US"],
+ "dist_id": "partner1",
+ },
+ },
+ },
+ }
+release_enable_emefree: true
+# target_task_labels: []
+target_tasks_method: push_desktop
+do_not_optimize: []
+try_mode: null
+try_task_config: {}
+existing_tasks: {}
+try_options:
+release_type: "release"
+release_product: firefox
+required_signoffs: []
+signoff_urls: {}
+phabricator_diff:
+tasks_for: action
+test_manifest_loader: default
diff --git a/taskcluster/test/params/mr-ship-firefox-rc.yml b/taskcluster/test/params/mr-ship-firefox-rc.yml
new file mode 100644
index 0000000000..edf2a3b2a3
--- /dev/null
+++ b/taskcluster/test/params/mr-ship-firefox-rc.yml
@@ -0,0 +1,109 @@
+---
+base_repository: https://hg.mozilla.org/mozilla-central
+build_date: 1509164545
+build_number: 1
+app_version: "60.0"
+version: "60.0"
+next_version: 60.0.1
+filters:
+ - target_tasks_method
+head_ref: 14d9cd421424a2f3e38b9c8489900c3bb769846
+head_repository: https://hg.mozilla.org/releases/mozilla-release
+head_rev: 14d9cd421424a2f3e38b9c8489900c3bb769846
+hg_branch: default
+level: "3"
+message: " "
+# morph_templates: {}
+moz_build_date: "20171028042225"
+optimize_target_tasks: true
+owner: xquan@mozilla.com
+project: mozilla-release
+pushdate: 1509164545
+pushlog_id: "8069"
+release_eta: "2018-01-31T00:30:00+00:00"
+release_history: {}
+release_enable_partners: true
+release_partners: null
+release_partner_build_number: 1
+release_partner_config:
+ {
+ "release-eme-free-repack":
+ {
+ "mozilla-EME-free":
+ {
+ "mozilla-EME-free":
+ {
+ "s3cfg": "/builds/release-s3cfg",
+ "dist_version": "1.0",
+ "bucket": "net-mozaws-prod-delivery-firefox",
+ "platforms":
+ [
+ "macosx64-shippable",
+ "win32-shippable",
+ "win64-shippable",
+ ],
+ "aus": "mozilla-EMEfree",
+ "output_dir": "%(platform)s-EME-free/%(locale)s",
+ "upload_to_candidates": "true",
+ "locales": ["de", "en-US"],
+ "dist_id": "mozilla-EMEfree",
+ },
+ },
+ },
+ "release-partner-repack":
+ {
+ "partner2":
+ {
+ "partner2":
+ {
+ "dist_version": "1.0",
+ "bucket": "net-mozaws-prod-delivery-firefox",
+ "platforms":
+ [
+ "macosx64-shippable",
+ "win32-shippable",
+ "win64-shippable",
+ ],
+ "aus": "partner2",
+ "output_dir": "%(platform)s-EME-free/%(locale)s",
+ "locales": ["en-US"],
+ "dist_id": "partner2",
+ },
+ },
+ "partner1":
+ {
+ "partner1":
+ {
+ "dist_version": "1.0",
+ "bucket": "net-mozaws-prod-delivery-firefox",
+ "platforms":
+ [
+ "linux-shippable",
+ "linux64-shippable",
+ "macosx64-shippable",
+ "win32-shippable",
+ "win64-shippable",
+ ],
+ "aus": "partner1",
+ "output_dir": "%(platform)s-EME-free/%(locale)s",
+ "upload_to_candidates": "true",
+ "locales": ["de", "en-US"],
+ "dist_id": "partner1",
+ },
+ },
+ },
+ }
+release_enable_emefree: true
+# target_task_labels: []
+target_tasks_method: ship_desktop
+do_not_optimize: []
+try_mode: null
+try_task_config: {}
+existing_tasks: {}
+try_options:
+release_type: "release-rc"
+release_product: firefox
+required_signoffs: []
+signoff_urls: {}
+phabricator_diff:
+tasks_for: action
diff --git a/taskcluster/test/params/mr-ship-firefox.yml b/taskcluster/test/params/mr-ship-firefox.yml
new file mode 100644
index 0000000000..8614699f26
--- /dev/null
+++ b/taskcluster/test/params/mr-ship-firefox.yml
@@ -0,0 +1,109 @@
+---
+base_repository: https://hg.mozilla.org/mozilla-central
+build_date: 1509164545
+build_number: 1
+app_version: "60.0"
+version: "60.0"
+next_version: 60.0.1
+filters:
+ - target_tasks_method
+head_ref: 14d9cd421424a2f3e38b9c8489900c3bb769846
+head_repository: https://hg.mozilla.org/releases/mozilla-release
+head_rev: 14d9cd421424a2f3e38b9c8489900c3bb769846
+hg_branch: default
+level: "3"
+message: " "
+# morph_templates: {}
+moz_build_date: "20171028042225"
+optimize_target_tasks: true
+owner: xquan@mozilla.com
+project: mozilla-release
+pushdate: 1509164545
+pushlog_id: "8069"
+release_eta: "2018-01-31T00:30:00+00:00"
+release_history: {}
+release_enable_partners: true
+release_partners: null
+release_partner_build_number: 1
+release_partner_config:
+ {
+ "release-eme-free-repack":
+ {
+ "mozilla-EME-free":
+ {
+ "mozilla-EME-free":
+ {
+ "s3cfg": "/builds/release-s3cfg",
+ "dist_version": "1.0",
+ "bucket": "net-mozaws-prod-delivery-firefox",
+ "platforms":
+ [
+ "macosx64-shippable",
+ "win32-shippable",
+ "win64-shippable",
+ ],
+ "aus": "mozilla-EMEfree",
+ "output_dir": "%(platform)s-EME-free/%(locale)s",
+ "upload_to_candidates": "true",
+ "locales": ["de", "en-US"],
+ "dist_id": "mozilla-EMEfree",
+ },
+ },
+ },
+ "release-partner-repack":
+ {
+ "partner2":
+ {
+ "partner2":
+ {
+ "dist_version": "1.0",
+ "bucket": "net-mozaws-prod-delivery-firefox",
+ "platforms":
+ [
+ "macosx64-shippable",
+ "win32-shippable",
+ "win64-shippable",
+ ],
+ "aus": "partner2",
+ "output_dir": "%(platform)s-EME-free/%(locale)s",
+ "locales": ["en-US"],
+ "dist_id": "partner2",
+ },
+ },
+ "partner1":
+ {
+ "partner1":
+ {
+ "dist_version": "1.0",
+ "bucket": "net-mozaws-prod-delivery-firefox",
+ "platforms":
+ [
+ "linux-shippable",
+ "linux64-shippable",
+ "macosx64-shippable",
+ "win32-shippable",
+ "win64-shippable",
+ ],
+ "aus": "partner1",
+ "output_dir": "%(platform)s-EME-free/%(locale)s",
+ "upload_to_candidates": "true",
+ "locales": ["de", "en-US"],
+ "dist_id": "partner1",
+ },
+ },
+ },
+ }
+release_enable_emefree: true
+# target_task_labels: []
+target_tasks_method: ship_desktop
+do_not_optimize: []
+try_mode: null
+try_task_config: {}
+existing_tasks: {}
+try_options:
+release_type: "release"
+release_product: firefox
+required_signoffs: []
+signoff_urls: {}
+phabricator_diff:
+tasks_for: action
diff --git a/taskcluster/test/params/mr-ship-geckoview.yml b/taskcluster/test/params/mr-ship-geckoview.yml
new file mode 100644
index 0000000000..9b9a7c51b0
--- /dev/null
+++ b/taskcluster/test/params/mr-ship-geckoview.yml
@@ -0,0 +1,3822 @@
+---
+app_version: "75.0"
+base_repository: https://hg.mozilla.org/mozilla-unified
+build_date: 1582796996
+build_number: 1
+do_not_optimize: []
+existing_tasks:
+ artifact-build-linux64-artifact/opt: P_IsAyPITzuXsmZOvP2LIA
+ build-android-aarch64-gcp/debug: JZuEhLIpRuaxpQ81kPlEzA
+ build-android-aarch64-gcp/opt: BjSF-tEeSBmpjMMy8dlz5Q
+ build-android-aarch64/debug: AzCnLhS5TG63X1TtSLN8Zw
+ build-android-aarch64/opt: BZYCYLuqRk2Y9FuxDHcQQA
+ build-android-aarch64/pgo: OUxM9dVET12aawe7NEhzHw
+ build-android-api-16-gcp/debug: ZHbjdppbRbuRgRochX5MzA
+ build-android-api-16-gcp/opt: SSUvfaMFQVymV9pFHRqYWg
+ build-android-api-16/debug: JtWzTgdkRVy0uohQPkVdFg
+ build-android-api-16/opt: M5qSN82KTm--V3TrDJponw
+ build-android-api-16/pgo: Vh6K5kuHRDKgeOc8wnPGfg
+ build-android-geckoview-docs/opt: aBfbhXzYSxu4KNObzsBLKA
+ build-android-x86-fuzzing/debug: X9kImocJT2a4Ba0Z-gvgww
+ build-android-x86-gcp/opt: TLrDFhgnQYuTINyPnWGoJQ
+ build-android-x86/opt: EWr2P3LRSfOwPzs0cOCFxA
+ build-android-x86_64-asan-fuzzing/opt: P8w9ZQi8QzSf3tF9q8hy_Q
+ build-android-x86_64-gcp/debug: YRsJOHnORcKSk_DRCYdbLQ
+ build-android-x86_64-gcp/opt: b2T1JIZNRxK7kAzsPJsI3A
+ build-android-x86_64/debug: BUGo2DFDQ02j73GENoDxGQ
+ build-android-x86_64/opt: NAlj76XiRziaUXtf6xQ4DA
+ build-docker-image-android-build: ato_32n2RDOL14IW1fFQ_A
+ build-docker-image-condprof: d7hq_hacRnm6UmtFHi6_rA
+ build-docker-image-custom-v8: bPi-QafwRFqm_x_jyDqAHA
+ build-docker-image-debian10-amd64-build: Zc1-X6g4To2DasSgQcANMA
+ build-docker-image-debian10-arm64-build: VaNeOjDnSSG7Q8sL6eC7GQ
+ build-docker-image-debian10-base: EQUcZ-k3Rd-cRPjItvhNqQ
+ build-docker-image-debian10-packages: GWpsUMu5RI6gbqMHumOKJg
+ build-docker-image-debian10-raw: Qs5XdxsRTTeQGjKcVmi43A
+ build-docker-image-debian10-test: CyDMHR0DRc-ne3nI8Wgktg
+ build-docker-image-debian10-test-iris: dOE4SBCuQmGvu3B7IVdDhQ
+ build-docker-image-debian7-amd64-build: IIEnKGrFS36vh4xj9p_DqQ
+ build-docker-image-debian7-amd64-build-base: UBPBa4ZGRFus5dOPnKcu0g
+ build-docker-image-debian7-base: OAJPeInCT8y-LmUhmwZHLg
+ build-docker-image-debian7-i386-build: ATRybbY-QtCDtr62SRvp2A
+ build-docker-image-debian7-i386-packages: IuZ_5SRIQHSGdUadyX2FkQ
+ build-docker-image-debian7-i386-raw: f-6sR9nFSryzACrIJ0DarQ
+ build-docker-image-debian7-mozjs-rust-build: cLBUVx_mSbufJfO-9aqZXQ
+ build-docker-image-debian7-packages: KN1swzULR5C6XN8lNpAMGg
+ build-docker-image-debian7-raw: ULgNyhP4QOi89bdL2MRAbQ
+ build-docker-image-debian9-amd64-build: Kumob80mS1aanoQaihMaEg
+ build-docker-image-debian9-base: ALK_wnCMR3qob9mSxrgvgA
+ build-docker-image-debian9-packages: Axa1ka2BS4i0y67Btnsgiw
+ build-docker-image-debian9-raw: TGIcdv0tSHGQpGfY8DibgQ
+ build-docker-image-desktop1604-test: JflqYDdRRlGgFITaxf8SOw
+ build-docker-image-diffoscope: RBWk6AUZSMqw5TvWEjiiWQ
+ build-docker-image-fetch: G3KvjWkoS2ym-lrahCb-Zw
+ build-docker-image-firefox-snap: LQsRfQtMREW0kkDKBy-CNQ
+ build-docker-image-funsize-update-generator: VkcV9D-vRyuKDWhnzlA1Mw
+ build-docker-image-gdb-test: LEr2pG42RSK4el6nvpzCew
+ build-docker-image-github-sync: SOAFmzQOQtOXNEPLwSyaYg
+ build-docker-image-image_builder: Qc1jybi4TFC0VSCNvcRJ4g
+ build-docker-image-index-task: EE5E1m5ESReaNAxXOz8lNA
+ build-docker-image-lint: WnOYkBODRXmLjdEePfhI0g
+ build-docker-image-mingw32-build: NL6eklFCQNShDFYQQ6Sd5A
+ build-docker-image-mozapkpublisher: JOWIgQadRJimoAuFwI7Nkg
+ build-docker-image-partner-repack: Rcml9IrtT5iARRcC5VHDOg
+ build-docker-image-periodic-updates: YkONahVKT36Az2YEIOZKCQ
+ build-docker-image-pipfile-updates: H_A43Kk2QD-YgbZ_VDZp4g
+ build-docker-image-static-analysis-build: fkd53EKQTjaJmduIrYxxcw
+ build-docker-image-system-symbols-mac: B1pzNRyRTduh0nXgJ1tWgQ
+ build-docker-image-system-symbols-win: fKYdzvJgQ_KcWIeduXDvWA
+ build-docker-image-toolchain-arm64-build: VQIiuCuxSM-JbDoZ0kCFPA
+ build-docker-image-toolchain-build: Fq72uSJoT8mGHnIhNP-zKw
+ build-docker-image-ubuntu1804-test: eVDwdUKqRWunV0SXY10-5g
+ build-docker-image-update-verify: SZRoRsV3S4iVqLqNw8CIUA
+ build-docker-image-valgrind-build: Va8AbF5wR6GzH5UjvqrRRA
+ build-docker-image-visual-metrics: PAHWYQnLSpisQv6VwFWybA
+ build-docker-image-webrender: PzNqXj9LTj-XasP-LugElg
+ build-docker-image-wgpu: a0nDaR_jRtmTz99QALOWnw
+ build-fat-aar-android-geckoview-fat-aar/opt: HCJljo7FSpK3gT_LAeTWZA
+ build-linux-gcp/debug: cf-Y0SwyTcOFf--UHFOloQ
+ build-linux-gcp/opt: eavFZiUtTUOHKfLsGufe0w
+ build-linux-reproduced/opt: cMWm9b3LQ72xwxfasFA3PQ
+ build-linux-rusttests/debug: JaHvX37JSDuUB0ntxBU6lg
+ build-linux-rusttests/opt: fq0Z8Wj4Qom8ARevqADT7A
+ build-linux-shippable/opt: AXTjtDr0Tb-M_kAqPBFyKw
+ build-linux-shippable/opt-upload-symbols: XqgtKEvqTS-HFTix41nkFA
+ build-linux/debug: ZNiqISx1RDiLrF-a1hq-wA
+ build-linux/opt: BdawADUPSemriSIoDXxsog
+ build-linux64-aarch64/opt: Pcxw_8wlTyaWJDyZ5xrw-Q
+ build-linux64-asan-fuzzing-ccov/opt: HUYgNOZARJqmPQrtk4iqzg
+ build-linux64-asan-fuzzing/opt: bZFh_OUjRySkvj83LLamJg
+ build-linux64-asan/debug: FSlgd5H4T0iVYTUhvbDOWw
+ build-linux64-asan/opt: ZqqBHJNZTem3ZkHExb0mCQ
+ build-linux64-base-toolchains-clang/debug: Y8FE1eqHR66QDeZVDQ3Uyg
+ build-linux64-base-toolchains-clang/opt: SayzoS31SKuBwyHjpQETBQ
+ build-linux64-base-toolchains/debug: S-4cLzdIR96EgrLbkMnXhA
+ build-linux64-base-toolchains/opt: U5bh2PPDSDizcB0BFdIYYA
+ build-linux64-ccov/opt: S9pIOAraTOev-nwtxutsKg
+ build-linux64-fuzzing-ccov/opt: VpIxWb_6TleNgYixAfcl0A
+ build-linux64-fuzzing/debug: WeTsICwFTyeeZlTGV28Hqw
+ build-linux64-gcp/debug: Por1xntcQbiW-RDlJtSmLQ
+ build-linux64-gcp/opt: DX3_oUV2RwymjAbmUXCs9Q
+ build-linux64-noopt/debug: Y5ovxTjWTXuUSDPNnZ2u-g
+ build-linux64-plain/debug: Ebzemw49Qoqk94u9SYSmaQ
+ build-linux64-plain/opt: W4xC9FTlRlqUxEIh3tBlcg
+ build-linux64-rusttests/debug: awS20pyaRiSYzp28PMeljw
+ build-linux64-rusttests/opt: P8wMv0EGQqq4LOOxDEwZCA
+ build-linux64-shippable/opt: e09A6IgOSnOJNTcojWgaYg
+ build-linux64-shippable/opt-upload-symbols: Zos_PPr9Tsm73V5f0eY8ag
+ build-linux64-tsan-fuzzing/opt: IX6vbwr7QdGxcSXVA42yyA
+ build-linux64-tsan/opt: IunEJ8BdTEebbw4hvhCTiQ
+ build-linux64/debug: YyjeFTVeRrOuEX5oXGXLFQ
+ build-linux64/opt: CnU_i566R5K7uv3abLX7Lg
+ build-macosx64-asan-fuzzing/opt: Z_58dz9MRjyXb3MMlmty6w
+ build-macosx64-ccov/opt: CnX59bW2QNKwj5aR6T1Ieg
+ build-macosx64-fuzzing/debug: YLnlTIgCQlG9-DvMoj2Yzw
+ build-macosx64-gcp/debug: Lnyld42ISM6LZ-sUv6j63A
+ build-macosx64-gcp/opt: DnExfHB0QZmrSZvDY21KLA
+ build-macosx64-noopt/debug: D8zwO54iQiaPU6wnkKqZnw
+ build-macosx64-shippable/opt: UVIhzjB3SWSKUxihzm0MhQ
+ build-macosx64-shippable/opt-upload-symbols: EQ1LBdXsSNG_tSTNwuvffg
+ build-macosx64/debug: Q2ymr-hQRTaLFBtCgnpFVQ
+ build-macosx64/opt: cvDxNoAQSomchCCS8gkORA
+ build-notarization-part-1-macosx64-shippable/opt: JN2fiqdUQtKetdMWJndvcQ
+ build-notarization-poller-macosx64-shippable/opt: D69R3VcXTJSUL-6uTAM1fw
+ build-signing-linux-shippable/opt: EVTgz3EtSwyPpeRRb5w4OQ
+ build-signing-linux/opt: F60Gwm8LRcWmUfagfO6DQw
+ build-signing-linux64-shippable/opt: ayCiynMXT0u8GfVL56K0dg
+ build-signing-linux64/opt: JkGzlpG4SyWzu92UznCtdg
+ build-signing-macosx64-shippable/opt: Hc8VMjd_T9OED14HFBNm4w
+ build-signing-macosx64/opt: XxzDJsrQQFOab2_R9xN4uA
+ build-signing-win32-shippable/opt: ZZbgcTC3SeyHdGiZv3Uirg
+ build-signing-win32/debug: YmEvmWUlTNq337FkJ1JdxQ
+ build-signing-win32/opt: GOn2HGxfTCS1ULnURBPbnQ
+ build-signing-win64-aarch64-shippable/opt: OBcoF-rGSKm_hocIsWs7Iw
+ build-signing-win64-aarch64/opt: VrGN5Hc9RtKiVw-fG-urtA
+ build-signing-win64-ccov/opt: W-GuzPU5RKSNkriJkSM53Q
+ build-signing-win64-shippable/opt: NbcU6voHSm-T3TfaPFMJAw
+ build-signing-win64/debug: OQRac3KYTkKs1GOG5CLG5w
+ build-signing-win64/opt: WbTvEfltQgK3W6JH0_psgw
+ build-win32-mingwclang/debug: DRak_TsqTEGYzjeOBkVbAg
+ build-win32-mingwclang/opt: HvZmhSPeQjSSKlapdqtVeQ
+ build-win32-noopt/debug: En0TzIFVQmWDiEgYq_l3-A
+ build-win32-rusttests/debug: TLxHynHyRnqAl9Zl9aDZ8w
+ build-win32-rusttests/opt: binOIsipT42WqdegPgkM4A
+ build-win32-shippable/opt: QAgFASBKSxaQ-sn25r7a6w
+ build-win32-shippable/opt-upload-symbols: C6mIyE1QSW2pRO916YpyNQ
+ build-win32/debug: Bio2vS3rRzezBVNLjRFXXQ
+ build-win32/opt: bH1IItXnRei0TXIIwdSdYA
+ build-win64-aarch64-eme/opt: UObqkBExSNOLzmDFM9DSXw
+ build-win64-aarch64-shippable-no-eme/opt: LPNH62f-QcuabjX7WcGvWw
+ build-win64-aarch64-shippable/opt: UOmkcit7Taq9BWZbTWGLEQ
+ build-win64-aarch64-shippable/opt-upload-symbols: dcXwDStFSQi6QoSbhO9R5w
+ build-win64-aarch64/debug: IGCr0eOYRb61dLmPIRe6zg
+ build-win64-aarch64/opt: UGtGEjUkQzGDsoQ4W1rSKQ
+ build-win64-asan-fuzzing/opt: dEvSfxvgT8SvxWnYdfQ-ew
+ build-win64-asan/debug: CAwL-VROSDS6EhcsYCeH3Q
+ build-win64-asan/opt: L4fgslBuSpqoD0oFlqAUAw
+ build-win64-ccov/opt: Htmz08-GSvWwoPJsbx3D8Q
+ build-win64-fuzzing/debug: YaIMWSVsRzSe4ZT_-pY3mw
+ build-win64-mingwclang/debug: dOsT4wOwQ0CKJAsKlwz4XA
+ build-win64-mingwclang/opt: DYnIWBZaQea_zGsHZLpJJg
+ build-win64-noopt/debug: Ti5QdMjHSFK_8bsAGhYlBw
+ build-win64-plain/debug: UI5nG2oVQSamq-kGm42AAg
+ build-win64-plain/opt: EQF-mS5RRpa8yyRkM25_7w
+ build-win64-rusttests/debug: MsltZPJcQReOjEaVsP7ZiQ
+ build-win64-rusttests/opt: SBiqfZJnQKmDu9TwE1mRhg
+ build-win64-shippable/opt: SI0AfIdNSQOB5szDfQcNYA
+ build-win64-shippable/opt-upload-symbols: PHLPOmkJTKGkM8VPs07Aag
+ build-win64/debug: M6NAJyEbTdWnWikR0Bok8w
+ build-win64/opt: O1vuo0zzRRmEs6qAB8VluA
+ condprof-android-hw-g5-7-0-arm7-api-16-fenix: Nqml6-7NR3COhgrLUe69YQ
+ condprof-android-hw-g5-7-0-arm7-api-16-geckoview: XOCi5JSgTayrGs4pS9cHzg
+ condprof-android-hw-p2-8-0-aarch64-fenix: IbZATNyURg-8fseeRdo_bA
+ condprof-android-hw-p2-8-0-aarch64-fennec: dzvQZ107Qi2p1yJnj6ZNGw
+ condprof-android-hw-p2-8-0-android-aarch64-geckoview: Mr6r5ET6SROsPaTs20Ml8g
+ condprof-linux64-firefox: J18PTsE8S0iBIk8N39mg4Q
+ condprof-macosx64-firefox: IENCNOpnRr2eULPW08N-2A
+ condprof-windows2012-64-firefox: F-r0fOceSXOtQa7TjLJmJw
+ diff-artifact-win64-aarch64-eme-validation: OpYOdJN2R3CuewBKsMQDqg
+ diff-reproducible-linux32: aaHF2CzqQNGO_VK4X73PYQ
+ fetch-android-rs-glue: GQOBvwnWRviPk8Q00UNVJg
+ fetch-assorted-dom: HTqezXEKSomU4QLP-SW6EQ
+ fetch-binutils-2.27: ZuQ-OYWMR0SA4E0y3RAzxA
+ fetch-binutils-2.31.1: RFr-0cBRQbquyN4T2UM4_A
+ fetch-cbindgen-0.13.1: S_MQrrcqTUGEmtLaHOQfVQ
+ fetch-cctools-port: EpYZgzq0SiqNsUJh9Kz9ew
+ fetch-clang-5.0: Xl_wNA_wTZmYe20FIlCb-Q
+ fetch-clang-7: aICY-_TxQGOnACgyiwrpVQ
+ fetch-clang-9: aDYZ7PEMREWw_ETOW1wKHw
+ fetch-cmake: F5kmkERhSiCqvcUDtQCb6A
+ fetch-dump-syms: Jj4qN2inQECPAURoQhLoYg
+ fetch-fix-stacks: G606hoRUSxqohchf64oJBw
+ fetch-fxc2: L7O0CeNGQneMCVIIT1MGeg
+ fetch-gcc-6.4.0: V_zhaxj-S5eQbrwdnGHN_w
+ fetch-gcc-7.4.0: MHhBcXRLR4K3CRWMvtguOg
+ fetch-gcc-8.3.0: AjTMdAkuSwidURpNDjbt2A
+ fetch-gcc-9.1.0: bWTT-dWDSFqU5XY8gIiZWw
+ fetch-gmp-5.1.3: aWjmEFfJQaK7PB9-rZHFnQ
+ fetch-gmp-6.1.0: OgpH6_APQ2-95aUarAx2Qw
+ fetch-gn: VIGlZlbtSDu78Y4ZMXwGvg
+ fetch-grcov: A0MSx_QCTUGUJCZ-JZ4z5Q
+ fetch-hfsplus-tools: EEF3Zhk7QH6KkSHYiIl_ww
+ fetch-isl-0.15: ZSGQ7qLRSG-s_VDTjCY0PA
+ fetch-isl-0.16.1: d1MLHY1OQNGpwyFxeqN-Wg
+ fetch-jetstream2: TaHMxREfTgGsqL5NPPa3qA
+ fetch-libdmg-hfsplus: DJov6brKR02i2j_gKKGRcQ
+ fetch-libtapi: dqa6qRBYTnOGIVy3Qz0sOA
+ fetch-libunwind: Ue0dHXBiRM2jnMw3RBzuXA
+ fetch-linux64-chromedriver: MZGmTLK2SBOGAyrec1uesA
+ fetch-linux64-chromedriver-78: BKbR1uZwRmyqaiYEw-EmMQ
+ fetch-linux64-chromedriver-79: b1-w_JlOT9qBFCptaM6Hlw
+ fetch-linux64-chromedriver-80: E4BUkNnWQKe_LyTyICv4jA
+ fetch-linux64-ffmpeg-4.1.4: auvPfChsRXa3uP3p-LbTXA
+ fetch-llvm-for-dsymutil: e4DNytWuTYCK1kqLOI8nYw
+ fetch-llvm-mingw: RqRq2sRIR92y6nNPOXTjww
+ fetch-lucetc-source: N5lVeJmiT5Ss2FLCkgwMTA
+ fetch-mac64-chromedriver-78: MVRabu9ZTVW33h6mfjnX-w
+ fetch-mac64-chromedriver-79: eN7BwEa1TqyEtwWSXAkJew
+ fetch-mac64-chromedriver-80: HIRfb2xRR6ezVOlhpmkrog
+ fetch-mac64-ffmpeg-4.1.1: bcUVZhrXTXiiU6JwFzINBA
+ fetch-mingw-w64: Jc1iNViqR_2vmlXgcNDT6A
+ fetch-mpc-0.8.2: eNICetjsRNOBZb9E8HZnWA
+ fetch-mpc-1.0.3: IKo4nHFkQPKit_orPdjPfA
+ fetch-mpfr-3.1.4: LqALqMKURVi2iZbju0G08g
+ fetch-mpfr-3.1.5: OTlAFX-2S-22PaKrgJFDXQ
+ fetch-nasm-2.13.02: J-IJzsIxSRqh03mtIvPILA
+ fetch-nasm-2.14.02: FW7gAij7Q1ahgyAmLb4Y2A
+ fetch-ninja: cuJolDCYQ3uinL2CwlQviQ
+ fetch-nsis-3.01: CivGoPJcSxmu1xL2bqmBFA
+ fetch-octane: dLW609SGSAaOz15ShsFIpw
+ fetch-rust-size: ObCsLVPySBCo8LAJlkuSgw
+ fetch-sccache: PhgFFm0_SCC9r0BW_VE9OA
+ fetch-tup: dMdjMYuLQ5e-2r0piAVT9A
+ fetch-unity-webgl: LFeH0mDMSueAIa-bAEFtrg
+ fetch-visual-metrics: DR49t9eGQHu2qS0oKskeCg
+ fetch-wasi-sdk: IkAWBua6SzmoeHSv_vVP5w
+ fetch-wasm-misc: HgEQJSa7RfCcWtGlwxiL7Q
+ fetch-web-tooling-benchmark: OQF9hLdNRmODdgbZctLmLw
+ fetch-win32-chromedriver-78: a7edwUT3TKSi9fSTp9Hc7A
+ fetch-win32-chromedriver-79: CbtgzFtDTVS3GcYlNzn5ZA
+ fetch-win32-chromedriver-80: LK5PaW0MSmCVy5IQ1hN8rg
+ fetch-win64-ffmpeg-4.1.1: Z44OxJeHSceXgZrIhldV1Q
+ fetch-wine-3.0.3: bTuHuG3xSUGiAHzcdHEl1Q
+ fetch-wix-3.14.0: GPFpK3_lTEWzUPGOI__Ubw
+ fetch-zlib-1.2.11: S-kbYJJ0QE257ZYDW-ukKQ
+ generate-profile-android-api-16/pgo: UIqitLDJQZ-f1HJtOOkq8A
+ generate-profile-linux-shippable/opt: en6wO9MJRqybdLH7Bub1GA
+ generate-profile-linux64-shippable/opt: G1cgW30rRg-wxJ4tee-BuQ
+ generate-profile-macosx64-shippable/opt: dykU6mCBTnWigDXIC5YF5g
+ generate-profile-win32-shippable/opt: Ljn9uVQ1QxWnbyGxELkeWA
+ generate-profile-win64-shippable/opt: DbVpxpY8SWe0VKS9sxFaIg
+ github-sync-webrender: Z9vMh8YdRwezFx172iZ3lQ
+ hazard-linux64-haz/debug: foOBt6KTRy6jB73ei4zkqg
+ hazard-linux64-shell-haz/debug: c6x_0U1RRIKb5RMHaZr1AA
+ instrumented-build-android-api-16/pgo: L5BFVMbzS1C-CeaOTAB4LQ
+ instrumented-build-linux-shippable/opt: LB2xjMA_QuyQjYutdn8isg
+ instrumented-build-linux64-shippable/opt: ZjqC2SqtT-udLNoHlvUXGw
+ instrumented-build-macosx64-shippable/opt: Sum0lQYDQRCMj8lhMHMhgQ
+ instrumented-build-win32-shippable/opt: eEexJoDnTQ6pYQL4K9uiaw
+ instrumented-build-win64-shippable/opt: Mu4t_dyVTJ-xSDXOuXU5_g
+ l10n-linux-shippable/opt: I0uD3iB3QW6J5ytmmFFAvQ
+ l10n-linux64-shippable/opt: cRqcK1JIR3WE-1x5pwGtiw
+ l10n-macosx64-shippable/opt: c5ScCkbnQ5iZGm-fXcK93Q
+ l10n-win32-shippable/opt: blqZWeY9RpCErjbIjhBw2w
+ l10n-win64-shippable/opt: RU1v6nQNSgm2FMH5qIaogQ
+ packages-deb10-mercurial: B8z2oLEET5eEGAoLNaYFkg
+ packages-deb10-python-zstandard: RhTeb03MTR-kXu3z-l4ipQ
+ packages-deb7-32-atk: FJyyzgGuSvOkurKV9B4kZA
+ packages-deb7-32-gdk-pixbuf: eDR9O9TCSBWV45uKZK_RVw
+ packages-deb7-32-glib: PYqFdwUgTjGxIhiv3MeB-A
+ packages-deb7-32-gtk3: c-9j4QlNSvSfVzYs_smx5w
+ packages-deb7-32-harfbuzz: TQqZ6AfIQmOiHDylVhkRRA
+ packages-deb7-32-libxkbcommon: HL3k4JSNSAqyx_oeIm1NJg
+ packages-deb7-32-pango: byaFmfm-TP2KQCFm70KxSg
+ packages-deb7-32-pcre3: JZt_JGNYSuKrlLm-3sP9iQ
+ packages-deb7-32-wayland: eQGw3-D7T0O8jw-AQrq79Q
+ packages-deb7-32-xkeyboard-config: ZtgbFaOYRne6lGQxbs5reg
+ packages-deb7-apt: Ls1LTS4NSH2GPlVVxmnLrw
+ packages-deb7-atk: SHQacTunSMePv5M0Hbho9g
+ packages-deb7-automake-1.14: c_xA0dYPRw-hT2M-VVnsoQ
+ packages-deb7-cmake: QhoqEmMBQb2jIuN_mq2pAA
+ packages-deb7-devscripts-2.14: V0V94sOkRN2df3bR1P_FMQ
+ packages-deb7-dh-python: d_qeJ9KHTtqIIOWvaQlbhg
+ packages-deb7-dpkg-1.17: Nnz54AtmQaaGRg_M8EXgZA
+ packages-deb7-gdb: Hl9YLZzLRsqbHKjezc1oxw
+ packages-deb7-gdk-pixbuf: V0U8tROvS2q2094FaerQfw
+ packages-deb7-git: EE2WtGanS-Oiqiuln372lA
+ packages-deb7-glib: C1hT15J9QDKxiD3lawlWXg
+ packages-deb7-gtk3: UfJNlps3TDWPd4tI8Oi0SA
+ packages-deb7-harfbuzz: KBPtvAiaQAidFmt3FiU3dQ
+ packages-deb7-libxkbcommon: Ys4EbL7MSGy3bPTzekh-oQ
+ packages-deb7-make: e3LCwZaBS0SyoJ5-czN19A
+ packages-deb7-mercurial: aJz3xNkERzu2chgikmC_Pg
+ packages-deb7-ninja: XKI7wPC_RYOiUb3TkYxrrA
+ packages-deb7-pango: YiHs4EOAQN6BmKh_7HOYPw
+ packages-deb7-pcre3: OSE3gXiKR3uU1-5eziLNqQ
+ packages-deb7-python: ak0xUmrhTgyU5q5IhFYC5A
+ packages-deb7-python-defaults: C1K_xSZoQqG-f4AVgiPOIw
+ packages-deb7-python-zstandard: OFIYyWkVTL-g2DIeR1VJ7A
+ packages-deb7-python3-defaults: JStIdOfgSgScbXQU5ggCLA
+ packages-deb7-python3.5: bK37HfHYQJK3Lmv2-QDOAg
+ packages-deb7-sqlite3: UNDdpCqTQbuCX8sijPDLvA
+ packages-deb7-valgrind: GO4Qa8onS9agWelxB4Na5A
+ packages-deb7-wayland: KFVn9kckRqWu4zYNgFITiQ
+ packages-deb7-xz-utils: ZEa-J7WaQeucxdPM-48TjQ
+ packages-deb9-mercurial: Jp27EvsLQFObATxEOrsLlQ
+ packages-deb9-python-zstandard: YoAV-BgcSh-QCTd7-0H6Sg
+ repackage-linux-shippable/opt: BrJ8PYSnQU6psAsD0T-MJw
+ repackage-linux/opt: fbZvVyYXThy2xRlaRSZyUg
+ repackage-linux64-shippable/opt: Fy72M6YLRD6g6IxiAaL9mA
+ repackage-linux64/opt: JBjHCaL6TNWej-riozHffg
+ repackage-macosx64-shippable/opt: My4zbQ3aSKm52T-tCH78dA
+ repackage-macosx64/opt: f3HPuP70RcCSZFsodhOwjw
+ repackage-msi-win32-shippable/opt: bT7pmhc4TtmDL592tk2Jgg
+ repackage-msi-win64-shippable/opt: cy8gQkAYRXOYUrZ53r76Ig
+ repackage-signing-msi-win32-shippable/opt: W1KlA1TqQ22SkNZMUUPfhg
+ repackage-signing-msi-win64-shippable/opt: MzbZD7M_RDilIeecXikitg
+ repackage-signing-win32-shippable/opt: CHtjrzKkQbGy2-FKrQDbYg
+ repackage-signing-win64-aarch64-shippable/opt: LedVkfoNRmKcF98Q0Olpmw
+ repackage-signing-win64-shippable/opt: BYJMI96JRTm-wVeLh5Qp_w
+ repackage-win32-shippable/opt: Ii8pPVnPR4iDVateizkCPw
+ repackage-win32/opt: cGFA0orpTCibP6cwsr06lA
+ repackage-win64-aarch64-shippable/opt: RZt60XnmTEm8JBynQrWoGg
+ repackage-win64-shippable/opt: ayebXFy3TC6fCkEYxVGrYg
+ repackage-win64/opt: LdT9A0MbTg64R2GizaNr0w
+ source-test-coverity-coverity-full-analysis: F6T9MZkGS7OKKdejjNmpQA
+ source-test-cram-tryselect: OxKVA4tpSZ6-itHcxHj40g
+ source-test-doc-generate: atnQNEOCRrW9diFfjykfmw
+ source-test-doc-upload: aKAHwYouSKep7qp9YRaDNQ
+ source-test-file-metadata-bugzilla-components: UTGpaXvjSMuFZi7jnQEqIQ
+ source-test-file-metadata-test-info-all: BArGRxSrSYKBFUzos0hbgg
+ source-test-file-metadata-test-info-disabled-by-os: RMTDlfHMSjS5L7KwEAXz3g
+ source-test-file-metadata-test-info-fission: SfQ6cMvkQj2HgbSi6wnQow
+ source-test-jsshell-bench-ares6-sm: BBKzD9vwRuGLvyfP5KB3xA
+ source-test-jsshell-bench-ares6-v8: LRZKos7KR8Cl6E15Ti_p9g
+ source-test-jsshell-bench-octane-sm: U27xet1MQk-PEyQKIlo_mQ
+ source-test-jsshell-bench-octane-v8: HC4E-ZbVTj-mZ2p03QAC3Q
+ source-test-jsshell-bench-sixspeed-sm: BTM3NcgVRlmQWIMW_fL7-A
+ source-test-jsshell-bench-sixspeed-v8: HoQo2nyaRRCO-bpRcsd1TA
+ source-test-jsshell-bench-sunspider-sm: e9EqwNv_QvuXDToA9M5R8A
+ source-test-jsshell-bench-web-tooling-sm: U-XNlJiMSyaYMROuc2KMaQ
+ source-test-jsshell-bench-web-tooling-v8: BM5jay7hTy-vbh0UqRAqMQ
+ source-test-mozlint-android-lints: VD_PgkC1Q6qJeH1uPLAsjA
+ source-test-mozlint-clippy: aNh7FWCNRwS6pWXUHarX_g
+ source-test-mozlint-codespell: RU3VkeDaTSuwb6mxScgySQ
+ source-test-mozlint-eslint: RElFH_NuRIaPeAmiI51M5A
+ source-test-mozlint-file-perm: T-KF4y82TvSn3LGymzNKDQ
+ source-test-mozlint-file-whitespace: FLIKkIX0Te6fahJdLAx_Qg
+ source-test-mozlint-license: fXdgDPfDQzWZLrlZiwmq-g
+ source-test-mozlint-lintpref: fuX9H_LGQbePrFFAu3Pv0A
+ source-test-mozlint-mingw-cap: L8FXn3rsTaeZfw6LP_OJ1g
+ source-test-mozlint-perfdocs-verify: D2lP9-cRQLOrzHzicGEmIg
+ source-test-mozlint-py-compat: Mamsi9diRgyHxyQ4Np9v8g
+ source-test-mozlint-py-flake8: AL7WEvniS2yh4mLhQT7Azw
+ source-test-mozlint-rustfmt: Rw4ZYlHlTuC5cMCEcorUzw
+ source-test-mozlint-test-manifest: Efld3wxQSOidq7UShzQfow
+ source-test-mozlint-wptlint-gecko: V8HQgM6ZQc2DKTC5QLsETw
+ source-test-mozlint-yaml: Hn6CxtAJSfCcjS75yueJVA
+ source-test-node-devtools-tests: HvLbUJnZTheq97-hH8RGPQ
+ source-test-python-mochitest-harness-linux64-asan/opt: ahY1SxetSNS3DkggwS0cHA
+ source-test-python-mochitest-harness-linux64/debug: MrWCc_FbQaC-R7LW3X0bdQ
+ source-test-python-mochitest-harness-linux64/opt: cvQuj_RvRaeUauMFpVdixQ
+ source-test-python-mozbuild-linux64/opt-py2: Hq1cXhPwRm2LTDfB43aT9Q
+ source-test-python-mozbuild-linux64/opt-py3: XX5jZhcJSwC490WCuXAxuw
+ source-test-python-mozbuild-macosx1014-64/opt-py2: Av1ar9vASQ2PZJeiu6v8tw
+ source-test-python-mozbuild-macosx1014-64/opt-py3: ApJjnLOfQgyxwTmmhu4pzA
+ source-test-python-mozbuild-windows10-64/opt-py2: WQNgUo25TsaD5qo7Uyjsaw
+ source-test-python-mozbuild-windows10-64/opt-py3: J7vCspxJTKSQ-whahGSHMw
+ source-test-python-mozharness: YvX8Pz7kT12rkB-owoNedw
+ source-test-python-mozharness-py3: RbwIM8z0TrKGhrxiAy4c5g
+ source-test-python-tryselect-linux64/opt-py2: Wit8IVrsQOeKjGEC7L-4Qw
+ source-test-python-tryselect-windows10-64/opt-py2: dvT1hY3iRg6Gq02O2yVcDQ
+ source-test-wpt-manifest-upload: BxL6nGz5QIeDm6vQpLqERg
+ source-test-wpt-metadata-summary: Z4oqYgpcRieOejaVM-FsSA
+ spidermonkey-sm-arm-sim-linux32/debug: JdtJtrPURcu9SXZvceEjDw
+ spidermonkey-sm-arm64-sim-linux64/debug: DIY_zlUVQtaNUaINcGKohw
+ spidermonkey-sm-asan-linux64/opt: WlCN2XKPRM6t8PIxKLqzlQ
+ spidermonkey-sm-compacting-linux64/debug: FJ0h1j-6ROWbNrmTnxb0HA
+ spidermonkey-sm-compacting-win64/debug: L1CJvUj2T-KKrLCROh7r-w
+ spidermonkey-sm-fuzzing-linux64/opt: S_mtNKgFSESh2kHGOLIjMg
+ spidermonkey-sm-gdb-linux64/debug: TMJTPmamSQGavknheZWxUg
+ spidermonkey-sm-mozjs-sys-linux64/debug: PeD15fEIT_St8vhAQ0x1CQ
+ spidermonkey-sm-nojit-linux64/opt: JN8ObW2PRQq1CrSpphxLtQ
+ spidermonkey-sm-nonunified-linux64/debug: V3VuGnjcSnaHguJ2KHqPcw
+ spidermonkey-sm-package-linux64/opt: SUA390PASHWKAWr5X1WSRA
+ spidermonkey-sm-plain-linux64/debug: Skrot78GS6aDkRijRHWnJw
+ spidermonkey-sm-plain-linux64/opt: LdHV2xeSRiaPP5QJTo7RgA
+ spidermonkey-sm-plain-win32/debug: AyCEFzlaSFGYM8Q0ftd6qQ
+ spidermonkey-sm-plain-win32/opt: LPVfTrIASVeI6Y4KNiXeIA
+ spidermonkey-sm-plain-win64-aarch64/opt: G3dKgyRATdirzW_oYazWvw
+ spidermonkey-sm-plain-win64/debug: PuKfs3_MTr-5tR4wLlu_Eg
+ spidermonkey-sm-plain-win64/opt: KAyNK3iOTZqPpgAZoLD-NA
+ spidermonkey-sm-rootanalysis-linux64/debug: DkGEA_LrS26fNDCYEaTacQ
+ spidermonkey-sm-rust-bindings-linux64/debug: IIt8uU7OSP24i-FUQQbElw
+ spidermonkey-sm-tsan-linux64/opt: Pc8IhS1kR5G0m-m7OI-Udw
+ static-analysis-autotest-linux64-st-autotest/debug: FUsguAoLQ8O47iO3rw_cBA
+ static-analysis-autotest-win64-st-autotest/debug: ca7gNb6QTZCkl8kHz8agLQ
+ test-android-em-7.0-x86_64-qr/debug-geckoview-crashtest-e10s: PRqsCVZ4RMi7p57LvMl_KQ
+ test-android-em-7.0-x86_64-qr/debug-geckoview-reftest-e10s-1: ZeAOWJXQScqnr6Z-4tD9ZA
+ test-android-em-7.0-x86_64-qr/debug-geckoview-reftest-e10s-2: b346tX1gTKWzUs7ilRLqCg
+ test-android-em-7.0-x86_64-qr/opt-geckoview-crashtest-e10s: JQrqm2ZgQEKrAs81_IKnjA
+ test-android-em-7.0-x86_64-qr/opt-geckoview-reftest-e10s-1: NWpdcjXcRcGjWGZNeDeeKQ
+ test-android-em-7.0-x86_64-qr/opt-geckoview-reftest-e10s-2: UzlUYVHXTpaAPlGkztcIUw
+ test-android-em-7.0-x86_64/debug-geckoview-cppunit-1proc: f2OaOp2aT6amNhXwbzuyQw
+ test-android-em-7.0-x86_64/debug-geckoview-crashtest-e10s: CdazuBMtR-yJapNc23hsVQ
+ test-android-em-7.0-x86_64/debug-geckoview-gtest-1proc: XN2B_ztkRPKGcFQtg8I2_w
+ test-android-em-7.0-x86_64/debug-geckoview-junit-e10s: YAseKtBfSMmjmJTs6m-qAw
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-e10s-1: WsjOuVj1T8OB_Nr7jPzY9A
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-e10s-2: GtUAyORfROuBFFI0l2RXmA
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-e10s-3: TZ7BeAyDRi-WGFBB14kRgw
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-e10s-4: OjdfH5bDSmCzhfwkE8E5EQ
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-gpu-e10s: MFZ4PdmTRTWH7hw-hUou4A
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-media-e10s: UhWkISt6ReCT-yXXkKLnYA
+ test-android-em-7.0-x86_64/debug-geckoview-mochitest-media-spi-e10s: NNaqFHtpQPqSF26DT467ag
+ test-android-em-7.0-x86_64/debug-geckoview-reftest-e10s-1: TbcsakUuQXekWkmMp9b_zQ
+ test-android-em-7.0-x86_64/debug-geckoview-reftest-e10s-2: Qb3SPNoETHizxeKAeUcZKg
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-crashtests-e10s: cUkfpMjSSnarngHIzIACvA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-1: SNgvGpbZSIOtK6d_78jPKw
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-10: ObBJ6SbURZigjT1dgE7BNw
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-11: V-RtUARnQkSGOlj5wrdKPg
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-12: NGdcaybuRQ-nMruESfvUjA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-13: DFx7KHh9RyCmDkVlqpvt7A
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-14: L7VXleXOSi6PCVnRTZYyoQ
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-15: Dqq--lHvT8m1T7TRGiWB8g
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-16: W11gkJ-aS_ah-3arHvMHQA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-17: OB5AqqAUTJCcY-tZIBHfZQ
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-18: Vsn4-iDYQVW0HHYAmplhSA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-2: b5EqbE-3TwS572AKthV5dA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-3: GOqNO4sVQC-dP3OQOkD3-g
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-4: GlMkzRLXTlektYpwoWaHSg
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-5: SXCfF6nnR7eornt7tx6Mig
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-6: bdJ2OFJ3Q6OAs9k3T6ZkHA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-7: Lsq4PsvlT9CVydgdBYVzdQ
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-8: M--sBgRxQ9mcocA3A0m85w
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-e10s-9: bSc4qFwqRkSclDiZfTqqrA
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-1: AjEHidcnQmSwMGoaoMx17g
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-2: BfWfNOeATw-vXQSIPVuTLw
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-3: SFMuHTmEQvehf0ojrSYeXg
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-4: Y6ycUuyqT7eDcPg9SID47w
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-5: YQtPztyiTD29DPinet6PHg
+ test-android-em-7.0-x86_64/debug-geckoview-web-platform-tests-reftests-e10s-6: C7lFdJ_kRQ--DUvanSEY3w
+ test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-1: Uwqrv23tSOiIW4AXSXKL4w
+ test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-2: OEHuM-f3Sfu8aU8zrV7wrQ
+ test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-3: UjWc3f2IQFuuHcs8-HS5ww
+ test-android-em-7.0-x86_64/debug-geckoview-xpcshell-e10s-4: RnPA3Kw8Sk2jQFBKjjDR_w
+ test-android-em-7.0-x86_64/opt-geckoview-cppunit-1proc: Km3usYroQM2hLznxKnjYNw
+ test-android-em-7.0-x86_64/opt-geckoview-crashtest-e10s: Ybrif7FfQWKa19itYYtsMQ
+ test-android-em-7.0-x86_64/opt-geckoview-gtest-1proc: UtK4U92fRrezl5FvOcEFZQ
+ test-android-em-7.0-x86_64/opt-geckoview-junit-e10s: G73J253ISFmhx7I6fIzmnw
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-e10s-1: YVUgvN5uTtWoUasPGMuxPg
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-e10s-2: DVRjJaJoSrqc7mmu1mwXsQ
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-e10s-3: K_GcLmF5SIS7ghBPLAlgGQ
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-e10s-4: UjQak-P0QwakLTKzIsUQ0g
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-gpu-e10s: YY7EtS2nTkqQ1ngAIUlvtA
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-media-e10s: FipO3cb5Rp22Eb9jEXoLtg
+ test-android-em-7.0-x86_64/opt-geckoview-mochitest-media-spi-e10s: Nwdub7VgQ1W9xoqgtKuSoA
+ test-android-em-7.0-x86_64/opt-geckoview-reftest-e10s-1: IjjQBDLASTOIy7lOJyytsw
+ test-android-em-7.0-x86_64/opt-geckoview-reftest-e10s-2: cSRgGTnERpOTl_ccva2oJg
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-crashtests-e10s: drKuJkaXQV26rfce4KAr-g
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-1: c1JzbGUAQ8qvuYdO3vZm3A
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-10: PuGwqYnnTZe_GovQMRAmCg
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-11: L_brLgajTYKayTHBUGwuKA
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-12: brAEBswRR0msijswvQ57tw
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-13: M2omGi6MSga9M7KhURCB7g
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-14: IBqWqEFTT7GdY5DX-_0QzA
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-15: GreU5_kpTAmHftDAYAgwcA
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-16: GfiLNlPRTmmO9KAgMhRIxw
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-17: ZDi2gETrSxy9wfv0im7iVQ
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-18: O4FHhjs5RYmNXyntA2WAhw
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-2: CswlrZEITzCCVcH1hEl12w
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-3: FKXgIUQ1RyiCh0Jw1wL-SQ
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-4: UwHqlNgKQ6qyV0zPWaY-yg
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-5: Nh7zeIEhRUSQgWLiCwmKKw
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-6: fXyF2AJGSuipel14IBX7HA
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-7: RY5zvdFMTL-1XEBKyUvwPg
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-8: IhAkjg0UQg6LbChQ6jrwEg
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-e10s-9: Tle7s-23T-6vOQxM8X6yMQ
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-1: WmRAQgu2RUWIPpYEJcQk6A
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-2: eLOYCc4ZRKSvFGejnyGUaQ
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-3: Q2EYcZ3VRdGjPhMtzia7eQ
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-4: N1DsCzxkTpqVvIw6E15aeg
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-5: fkQrR7t_RiS_i3EA9ou0Tw
+ test-android-em-7.0-x86_64/opt-geckoview-web-platform-tests-reftests-e10s-6: ex_6ByxJT52vxW7V80v50Q
+ test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-1: EFn4QjtXTHafqSCrG0V4Cg
+ test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-2: GZI1aYUURLejlzW_unqOPg
+ test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-3: FabSoSwcTYagMm_R6wRkRQ
+ test-android-em-7.0-x86_64/opt-geckoview-xpcshell-e10s-4: ZBBHz0hSSkyXsq-OMIGjnA
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-1-geckoview-e10s: U603aKeBT3aUoHafqPCmbg
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-10-geckoview-e10s: ZdAtvKOuRT2cDeaScca_WQ
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-16-geckoview-cold-e10s: QGCPCdpNRHejUHNaQEV33Q
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-2-geckoview-e10s: DKMEBJfvTTSqnjaRFygfFw
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-3-geckoview-e10s: RheMjOdSTg6e7it99Sl76Q
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-4-geckoview-e10s: F8rGhnBARG2oVxCNTWV0MQ
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-5-geckoview-e10s: RRGD1kGpTHaPJFBIiiq7nA
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-6-geckoview-e10s: SMrUpbgQQiKdLVZLENKCdA
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-7-geckoview-e10s: dC-PJ0EHRCSzd4ju3iq2Yw
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-8-geckoview-e10s: L4613kBkTB-RjEe1cVHThQ
+ test-android-hw-g5-7-0-arm7-api-16/opt-raptor-tp6m-9-geckoview-e10s: G09bSMc9T0qiGgXzDtDiCA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-speedometer-geckoview-e10s: WUGuqnAxSBOqUqmrTN0vfQ
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-1-geckoview-cold-e10s: VfJFADtMSh6LG7WFwRZ1HQ
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-1-geckoview-e10s: J9e5CX6ySbOFHTT19h6ufw
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-10-geckoview-cold-e10s: LwFvFd_RSk-wDGsoYIwrvg
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-10-geckoview-e10s: bu7vZy8SSQGHt4J0kNQ0eg
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-11-geckoview-cold-e10s: Rigrg5XQQk6Om0ugnUo-ng
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-12-geckoview-cold-e10s: XDKUGISYRL2tJ_f5h1fjFw
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-13-geckoview-cold-e10s: BFXZh1J5SOalY_8JIyvGGQ
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-14-geckoview-cold-e10s: VhqkH38ET4CSnF3n6QXuCg
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-15-geckoview-cold-e10s: GlwC5AQvRZaelOvjGM8bgA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-16-geckoview-cold-e10s: aviL9sqiSra3bEw5hxuxWg
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-17-geckoview-cold-e10s: fgeYD-M-SryLsSrLgsKLHQ
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-18-geckoview-cold-e10s: F14UNjkjQwuxjtQHnXy__w
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-19-geckoview-cold-e10s: WoSLzhrXT-WOnCsXsH9qIQ
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-2-geckoview-cold-e10s: RfGaCzH8RbK9qOlAaWM-ZA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-2-geckoview-e10s: Z0zOBNuYRvKBwVViVsJkLA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-20-geckoview-cold-e10s: Qw21PewDR-i-794Dik5RLA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-21-geckoview-cold-e10s: J8wF46YuRLK1ElNZGKB5ag
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-22-geckoview-cold-e10s: AuglvZuLQk2yJcrwmnGlkg
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-23-geckoview-cold-e10s: WNjIo8ahSYWtP9XzXw74vA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-24-geckoview-cold-e10s: VAWRd7yVRY-95DX--jdVwA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-25-geckoview-cold-e10s: G-bHZGMrToyv_llJIKXAxQ
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-26-geckoview-cold-e10s: C-H-xKBFQGqRQupWy_DKfw
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-27-geckoview-cold-e10s: JWsCDB6VSRKfadTHAuDH0g
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-28-geckoview-cold-e10s: ClN4u5veSyuj3HZysl2HGg
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-3-geckoview-cold-e10s: ZpR61XiWSKSKyM0DyAwSAA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-3-geckoview-e10s: B-ij-ssTR-aUQKDxpaJgfg
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-4-geckoview-cold-e10s: QoGOMvb0RZuShI-9CBOq4g
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-4-geckoview-e10s: L1_lySLMRAKLNTa11XNfig
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-5-geckoview-cold-e10s: K2neHB1SSeebtybAA_xeoA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-5-geckoview-e10s: QiVO-u_BQd-FJvQ6PCB3sw
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-6-geckoview-cold-e10s: F15VSp4yR5aW4yd72UQ22Q
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-6-geckoview-e10s: T76xympeQJqIYyojQ98UeA
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-7-geckoview-cold-e10s: KOZAlMWaRO-Pf0ZaodJvUw
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-7-geckoview-e10s: RPouy2lSR66tw2QiD23K9Q
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-8-geckoview-cold-e10s: YBmPvzAjRmGrUqIkTPJBew
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-8-geckoview-e10s: JGjGknD-QCmDOffwstpnzw
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-9-geckoview-cold-e10s: OOtC7TgyRwmFKYMJOOMeQQ
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-tp6m-9-geckoview-e10s: YCcJfsEkSXS9PKIPvoz09A
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-unity-webgl-geckoview-e10s: Ymgj0MBLThuTBh_35GxMCg
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-youtube-playback-fennec68-1proc: eI_K8udeSBiLvbPBUnNTyw
+ test-android-hw-g5-7-0-arm7-api-16/pgo-raptor-youtube-playback-geckoview-e10s: Rp1uRQ2nQgGU4Y3pssUctw
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-1: Sl1A4JfATJW-ipJi_YaszA
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-10: Pr7fJdGyRdqeDFy3bmKc6Q
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-11: NRtmx4B7SNeUX14BduFusg
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-12: eiebRJqERt6FcG0ckELBLw
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-2: c29TECiXRUqbCoG0kdep8g
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-3: LtItV9r_TVuVv0MXx1vNiw
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-4: GMvh0ottQNeZXhYV-YiRlQ
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-5: RT39QdZ1R7SHBoa0mQRcEw
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-6: RgqSelI5RSKaaA7SQNP3EA
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-7: YzXWbcuVSmSrA9tG71DBZQ
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-8: BfaoRIcaTT-Kv0-guDYomw
+ test-linux1804-32-shippable/opt-web-platform-tests-e10s-9: B_t9tooYQUydDCsmq5euDg
+ test-linux1804-64-asan-qr/opt-crashtest-e10s: Ce-6gn6sQHKCEnv9cU_2Fg
+ test-linux1804-64-asan-qr/opt-reftest-e10s-1: cisiPaQARUWxAKR0pTko1A
+ test-linux1804-64-asan-qr/opt-reftest-e10s-2: eYhzfxuQSu2beBN4VqnKJw
+ test-linux1804-64-asan-qr/opt-reftest-e10s-3: XDW61SlMQuGbr70_WCZjvg
+ test-linux1804-64-asan-qr/opt-reftest-e10s-4: G64JQWq2QJi_xdBP1kB4kA
+ test-linux1804-64-asan-qr/opt-reftest-e10s-5: KrYb0ginTxeCQqQBntW-0A
+ test-linux1804-64-asan-qr/opt-reftest-e10s-6: YOoMURRaR9yPkOc1jpfMrw
+ test-linux1804-64-asan-qr/opt-reftest-e10s-7: BQiraUnmQR2_wgg3bUe86w
+ test-linux1804-64-asan-qr/opt-reftest-e10s-8: fb4yph05TQu4Ev-7qJ3CHw
+ test-linux1804-64-asan/opt-cppunit-1proc: HW5c5zLUR6axC3Wu2iRO2g
+ test-linux1804-64-asan/opt-crashtest-e10s: e6p7apxrTQSd_pGsMDXrbw
+ test-linux1804-64-asan/opt-firefox-ui-functional-local-e10s: PXVIc2KnSIWX9rxyQcj8AQ
+ test-linux1804-64-asan/opt-firefox-ui-functional-remote-e10s: TmkWGYsOQQegSEYi8x1k0Q
+ test-linux1804-64-asan/opt-gtest-1proc: LgNiwFAVQwKL9Pj9SrFlfw
+ test-linux1804-64-asan/opt-jsreftest-e10s-1: VNZmahDoTOaD_iPSiPg34g
+ test-linux1804-64-asan/opt-jsreftest-e10s-2: dYkYkmI4SKCNIKGO45HQCQ
+ test-linux1804-64-asan/opt-jsreftest-e10s-3: RiqSMLugQcmquUV9cOfDVg
+ test-linux1804-64-asan/opt-mochitest-a11y-1proc: AQ3er0y2TnG953LvC7PC2g
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-1: efis2ZP3S6KZdZ5sZV2FBw
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-10: TUjP5lK-Tfqn571U31DBfA
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-11: aHzAovfJT_iUf19f-bdwng
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-12: c4AOIytwT2KCi-LVkZjCmA
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-13: EyD0Te2ZRW-0Ooj9MZK3lg
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-14: PQ0mFhQ7RXifJePMlCAWIg
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-15: BvThGa7eRCqriKrV9X-6rA
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-16: WhESBzgkQHCywpkheO7mtw
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-2: W6_bgInPQa-cqNpOXXRvKA
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-3: DmxYdKkOTPGlIRcg_MMe4A
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-4: OyIJqpBSQ0WCNeSiULqDXw
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-5: dyU7N-q7Sr2wSFA6aHx5FQ
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-6: fLM0Y4QBQJyLVerHikNYFA
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-7: OxoTvOIxR6upA5RVckbNjg
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-8: SC8061CuRI2BGcuSyiSTwg
+ test-linux1804-64-asan/opt-mochitest-browser-chrome-e10s-9: RdvSqSXmSDOTrxG_Vt6DLg
+ test-linux1804-64-asan/opt-mochitest-chrome-1proc-1: H1L6-DqTTnmCIf4qVWIJCA
+ test-linux1804-64-asan/opt-mochitest-chrome-1proc-2: F_2FzheKR1e02r9-s_iviw
+ test-linux1804-64-asan/opt-mochitest-chrome-1proc-3: K24AT1LdTzC1tuIkDmwC7A
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-1: A8jcLtUYRkqFx0K52yzd6A
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-2: OfU7wUXKR-GgIZpM7OTpfg
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-3: BRSLGLw0R_OzMKYgIDuHYw
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-4: TFBUiSZ5TKuMW3mmOwqZDQ
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-5: ItaZCp_1R_e2EeKVpstejA
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-6: HDqI0iolQcuAOiI58PrFjw
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-7: N6Dg1IoPSKK5TwcLPhYLUg
+ test-linux1804-64-asan/opt-mochitest-devtools-chrome-e10s-8: PdB_nJijSRmGSVCmFq8s8w
+ test-linux1804-64-asan/opt-mochitest-e10s-1: HQsKvwjdR7OXSuE2MFrY6g
+ test-linux1804-64-asan/opt-mochitest-e10s-10: NU2brA5TQ7SLdRP9BY3f2g
+ test-linux1804-64-asan/opt-mochitest-e10s-2: ThTTo5HGQSW1puYR-JYGgQ
+ test-linux1804-64-asan/opt-mochitest-e10s-3: HxnZdwrcQHOXdma25yIRJQ
+ test-linux1804-64-asan/opt-mochitest-e10s-4: YPR-S6N4TQedjf5J29PGLw
+ test-linux1804-64-asan/opt-mochitest-e10s-5: TRi0BC1ERp6GcP3UtWA-3g
+ test-linux1804-64-asan/opt-mochitest-e10s-6: ROaEd8H7RdC4bqPSsOMpIg
+ test-linux1804-64-asan/opt-mochitest-e10s-7: VZntD6jxTPKnHx1iilQ0Cw
+ test-linux1804-64-asan/opt-mochitest-e10s-8: bKPKOu78ROukoFvIFec_0w
+ test-linux1804-64-asan/opt-mochitest-e10s-9: cRBozmVnQh-DmR_T_cIOFg
+ test-linux1804-64-asan/opt-mochitest-gpu-e10s: DyOh_rJdQUm0SYHza7zS8Q
+ test-linux1804-64-asan/opt-mochitest-media-e10s-1: KLoLNs5LQeGq_7e2mI90oA
+ test-linux1804-64-asan/opt-mochitest-media-e10s-2: H_ABSiejSESxgkSgEyLB3A
+ test-linux1804-64-asan/opt-mochitest-media-e10s-3: N9wIQagiTLWdLVI0qh_Oww
+ test-linux1804-64-asan/opt-mochitest-media-spi-e10s-1: US3GWzg4TbmSJsgDlMMFvQ
+ test-linux1804-64-asan/opt-mochitest-media-spi-e10s-2: dqqOiemgQYCVwxkNvRVQZw
+ test-linux1804-64-asan/opt-mochitest-media-spi-e10s-3: IIj4BuTXTpKJnoq9ZKZHuw
+ test-linux1804-64-asan/opt-mochitest-remote-e10s: SKjP939ESNuM6UtOlzChhw
+ test-linux1804-64-asan/opt-mochitest-webgl1-core-e10s: Ssg_DnQ4T5OO4560WS4RFg
+ test-linux1804-64-asan/opt-mochitest-webgl1-ext-e10s: e9s8NNyxTwqvbl8Kr0i8dw
+ test-linux1804-64-asan/opt-mochitest-webgl2-core-e10s: YkPKUpyHTViP1QK4O7nwPA
+ test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-1: QuzOj4CaQHKjNwXlOlA61w
+ test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-2: Gz5mgLHeQ8eZjwA17ktyog
+ test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-3: NvAJpGP4SMO4p_ag_BYm0A
+ test-linux1804-64-asan/opt-mochitest-webgl2-ext-e10s-4: ASwRCELyQ26yACJWKJtyxw
+ test-linux1804-64-asan/opt-mochitest-webgpu-e10s: LYeSSh90R0ikF0IONGse5Q
+ test-linux1804-64-asan/opt-reftest-e10s-1: Efj1026xSzy88ThkeAbwDg
+ test-linux1804-64-asan/opt-reftest-e10s-2: ellNgyjrQtyogiR597qFmQ
+ test-linux1804-64-asan/opt-reftest-e10s-3: TXtfudFIQ0aNkJr5DJD0Yw
+ test-linux1804-64-asan/opt-reftest-e10s-4: WIjhJBP_Qjuoh4tnH6o3eg
+ test-linux1804-64-asan/opt-reftest-e10s-5: Pheuh4swRSWq_ZHUQNdisg
+ test-linux1804-64-asan/opt-reftest-e10s-6: YFioMq_uTk2jWfQD_nS4Gw
+ test-linux1804-64-asan/opt-reftest-e10s-7: dALHgVQ_S-6OvQFIe6bvbg
+ test-linux1804-64-asan/opt-reftest-e10s-8: HB61pf9CT5GBoEUZy5aSOw
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-1: NlqNa31SSdmAeomPf7jE9A
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-2: FRLOdsOjTsSuUiSDYdEjcg
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-3: egWXLydKTfaZconAhH_IuQ
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-4: YDHmVGCiSzW2jtgue5JbKQ
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-5: DgcvDZCvRWmwaBCCBBFW3A
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-6: G8Ip_KQMR-Obhjv5uoStLg
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-7: OAIGZyTvStaP_xIOjxuvow
+ test-linux1804-64-asan/opt-reftest-no-accel-e10s-8: O1DxP0NkS8KyhRGUKmgHAA
+ test-linux1804-64-asan/opt-telemetry-tests-client-e10s: aIkBcn5STEu8PwYLApbTaA
+ test-linux1804-64-asan/opt-web-platform-tests-crashtests-e10s: e4aGt2gMSy-GTRsJzEhA7A
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-1: Koy30YqbQ6qY5zpVcnYldw
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-10: F5Qo2CcUQ5GehweqmRvBeg
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-11: fZKGpvvSS9mE_TS_117PVg
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-12: ZKS6EsfCQtuLqzwedMzlnA
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-13: BfVdI5sPQfKvKPcEZgM99A
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-14: VFl0Vw8BQXe8xZ4HCi2cpA
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-15: PGihLKaET26bNR6TCpGh0w
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-16: WAfH4WvPRPutQMRS3-KoEw
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-17: cUUbDNIRRGmOaKegS-4EaA
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-18: Mil-NQ3qRAK4juwYD75VHg
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-19: Y7I7wz-mQmSFBT3yqQLYSw
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-2: MgyJdO8sRyu6zDu0j0cc3w
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-20: TulGqJmHQPuifuos_TgbbA
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-21: JYtejlrSSA-eqZsC2Aw2-g
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-22: e26bt-6cQSe0cChD9h8oJQ
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-23: WrvVTCs-Ra6yUDH3K85Phw
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-24: AxaIqDzhRbqJgqswALaCmg
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-25: fefytvxCSLSwGtnfHavXpw
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-26: Yd5tiyfcRqeY8uXISjqepA
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-27: cQItZ1WOTbKOasKjx57h4w
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-28: HjBX3nnnTeuEDJuHJak3ow
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-3: cQ1amHNBR2mFsh0CkKB38w
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-4: UJDI4i1_T3-vUnJdzgCTfQ
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-5: JsdwIExlQqWCcr1-6gX9KA
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-6: aICNjnKCQ_iNfF95OELrVA
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-7: abq-xb4-QzS9nw9R9Apnjg
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-8: GZ9LRYTAREettF7zUpE93A
+ test-linux1804-64-asan/opt-web-platform-tests-e10s-9: SaoUL8gEQw2el_IAdlW9Dw
+ test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-1: Aul1p_8QQjyhK3cIoPDlVw
+ test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-2: JUtPvDwQTmaOwwuv17GQOw
+ test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-3: QrYsnM2kT7yWj5Ni8ZVV3A
+ test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-4: NPSuKiDBSwCLJf_vv20kbQ
+ test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-5: MGS3glpDRuiICVtpfe2Uow
+ test-linux1804-64-asan/opt-web-platform-tests-reftests-e10s-6: GJ_XYLqmT8Gd91mDoKS_Iw
+ test-linux1804-64-asan/opt-xpcshell-e10s-1: ap7joKo_S0u7aW7sJxeUgg
+ test-linux1804-64-asan/opt-xpcshell-e10s-2: fV3L5lzVTvKKdiSGNkphzg
+ test-linux1804-64-asan/opt-xpcshell-e10s-3: OZHo52DCTf6aIq2dxu5lzQ
+ test-linux1804-64-asan/opt-xpcshell-e10s-4: bzCsD7D3Sfibj8r7oVHdPw
+ test-linux1804-64-asan/opt-xpcshell-e10s-5: S23PJ6AzRFKp81fI0QN4mw
+ test-linux1804-64-ccov/opt-awsy-base-e10s: LXgpjQedQhONu8rZDcqIng
+ test-linux1804-64-ccov/opt-awsy-e10s: Cc2HZU68SYSxbBj6Eg17DA
+ test-linux1804-64-ccov/opt-cppunit-1proc: M1XEw8iYTACEgul0oDUKNA
+ test-linux1804-64-ccov/opt-crashtest-e10s: PA9sFRhIRnmOWt5M9P3CNw
+ test-linux1804-64-ccov/opt-firefox-ui-functional-local-e10s: S2iy4KcKQjOBiRg46TDARA
+ test-linux1804-64-ccov/opt-firefox-ui-functional-remote-e10s: dVxBJr3oRgWdh2ICcvCpog
+ test-linux1804-64-ccov/opt-gtest-1proc: OWBA7hLpSaqZi7mGUWkXMg
+ test-linux1804-64-ccov/opt-jittest-1proc-1: AtbUjBwwRd6SuOqZgk7Qaw
+ test-linux1804-64-ccov/opt-jittest-1proc-2: CHFymXjjRk6ZHofpLkE4hg
+ test-linux1804-64-ccov/opt-jittest-1proc-3: EBpspr8VRNa9lQKnPWeuew
+ test-linux1804-64-ccov/opt-jittest-1proc-4: emJ4-Fd9QaikUnurby9ekw
+ test-linux1804-64-ccov/opt-jittest-1proc-5: AdVKIUuLTK2V_4G1H6137Q
+ test-linux1804-64-ccov/opt-jittest-1proc-6: FiF0iUcxQIW48WkPizYeeg
+ test-linux1804-64-ccov/opt-jsreftest-e10s-1: Re0KuPgCQJSYZdywqoebwQ
+ test-linux1804-64-ccov/opt-jsreftest-e10s-2: TM4g8iTyQ6-8VltQlzCj3g
+ test-linux1804-64-ccov/opt-jsreftest-e10s-3: HsI_4zy2S7-Kmr8PgeTOyA
+ test-linux1804-64-ccov/opt-jsreftest-e10s-4: JIlbs2A9R8y2hKHrX4gbYQ
+ test-linux1804-64-ccov/opt-jsreftest-e10s-5: OX_sezrRTqePHHfpPwqaRg
+ test-linux1804-64-ccov/opt-mochitest-a11y-1proc: DB0gOo20TYaX4H9kt4mbQg
+ test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-1: Do2Xo6WlTdeqBu2jKqxG4Q
+ test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-2: HHwGKiGnTQGoH8v0LTmX_Q
+ test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-3: YpLU_h4YTaeImpXJ5feiyg
+ test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-4: Dj5d6q_1TpOix60RElXhOA
+ test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-5: PI8fnmXTT3mYEhE8nOPgbg
+ test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-6: XWs4C5weRGeBwYp95MWO4A
+ test-linux1804-64-ccov/opt-mochitest-browser-chrome-e10s-7: YUxv7R8uQhiUHUQ1L4lJTg
+ test-linux1804-64-ccov/opt-mochitest-chrome-1proc-1: RzFewwxjRgaTBGXAZtTBOg
+ test-linux1804-64-ccov/opt-mochitest-chrome-1proc-2: Zltn89AgSi6eaxgEDdtoyg
+ test-linux1804-64-ccov/opt-mochitest-chrome-1proc-3: A_RHWkn1Siu8VO2foVyTVQ
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-1: ZeQJjKZcRdCMhA7YkfTSLA
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-10: PtnXjxnTRZeYawB9jLZ96A
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-11: MMRBAvC6S7mrgN4lNhI4yQ
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-12: KpKP2p74QyW9D7UiGYbnrA
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-13: JSzB4ROmRGqZWcWW_2d-Nw
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-14: TbexdmXMRpiMFtyRrFKefg
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-15: ZRMYDxlxSNS0QD917Rqmew
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-16: fKp94kCCTE6e83A-WNHLLw
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-2: LSZUX6agTaipz6OKo6K1ow
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-3: GV_7_F7ZTJeLdQbzDAybMQ
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-4: cwYDlVqMRd-Im_qH_YoSPg
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-5: GApAr6RGQI6zPS6-tGyL_w
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-6: Wn9l9ZrXRVeaoo3NQ-u7nQ
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-7: IbhAxAMfSiO4y5qE1VSdEw
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-8: cqguuDbrQ6OOXJqzTBwfVQ
+ test-linux1804-64-ccov/opt-mochitest-devtools-chrome-e10s-9: e1S5EKpcTlSEK89pYKnsCg
+ test-linux1804-64-ccov/opt-mochitest-e10s-1: O0MrnnhwSvuHgZSMM-EMAQ
+ test-linux1804-64-ccov/opt-mochitest-e10s-10: I_ml7y32QYyz8c7GDAqbnw
+ test-linux1804-64-ccov/opt-mochitest-e10s-2: GA1CFcQpTwGfJFUMgnnR8Q
+ test-linux1804-64-ccov/opt-mochitest-e10s-3: PW3ft1bzRd6oBrXH5WyIeg
+ test-linux1804-64-ccov/opt-mochitest-e10s-4: Y6pq1_xITM-BidGE3lA1vA
+ test-linux1804-64-ccov/opt-mochitest-e10s-5: NXfbaqT5QoSZeK4quWRlAw
+ test-linux1804-64-ccov/opt-mochitest-e10s-6: EXLiWnl1SXOMxuvSQO06UA
+ test-linux1804-64-ccov/opt-mochitest-e10s-7: YnqqLEw8Qfe7frHTo7Rnog
+ test-linux1804-64-ccov/opt-mochitest-e10s-8: YsNyI70BT4SqLp553rVu4A
+ test-linux1804-64-ccov/opt-mochitest-e10s-9: VES6fDkRTgGRUCUMwwnvlA
+ test-linux1804-64-ccov/opt-mochitest-gpu-e10s: az35ZsawSgmVcRuzbi4kww
+ test-linux1804-64-ccov/opt-mochitest-media-e10s-1: SmIVJpg8R8qr5UiDY7ufIA
+ test-linux1804-64-ccov/opt-mochitest-media-e10s-2: HZYTBM4ZR3WjjIxzzHD43w
+ test-linux1804-64-ccov/opt-mochitest-media-e10s-3: SbRY9uBgSRiwJ2a3FoJDEA
+ test-linux1804-64-ccov/opt-mochitest-media-spi-e10s-1: dbcCEh1iTUmO8fSNU5_ORA
+ test-linux1804-64-ccov/opt-mochitest-media-spi-e10s-2: WZGvyp7pSVW0tlnyRc9R0Q
+ test-linux1804-64-ccov/opt-mochitest-media-spi-e10s-3: OY5Q9zxtQM2zqA0xeecBOw
+ test-linux1804-64-ccov/opt-mochitest-remote-e10s: NN2UZtWpRsOWs0kF-zcMxg
+ test-linux1804-64-ccov/opt-mochitest-webgl1-core-e10s: Zn5kozJTRz2IUYc3HlOVPw
+ test-linux1804-64-ccov/opt-mochitest-webgl1-ext-e10s: T2ulgqyNRHuJFlWf7OJqwg
+ test-linux1804-64-ccov/opt-mochitest-webgl2-core-e10s: QWN6Sc0NR129O_e4sNvzVQ
+ test-linux1804-64-ccov/opt-mochitest-webgl2-ext-e10s-1: agpet2ZWSOuvnr_qX98UXQ
+ test-linux1804-64-ccov/opt-mochitest-webgl2-ext-e10s-2: CH2MGoIfSMGL2zMfLZXZKQ
+ test-linux1804-64-ccov/opt-mochitest-webgl2-ext-e10s-3: fi85GNxoQCqGMrJCAWCrcw
+ test-linux1804-64-ccov/opt-mochitest-webgl2-ext-e10s-4: NZyTcpBhQwqj6IzA9Ypz0g
+ test-linux1804-64-ccov/opt-mochitest-webgpu-e10s: bLv9XNfFTu2HKMu9P5RHhQ
+ test-linux1804-64-ccov/opt-reftest-e10s-1: aQCUhADcSEuy9Z6wjbm_xQ
+ test-linux1804-64-ccov/opt-reftest-e10s-2: YfmDoH8sSAe1okcP9nLHYQ
+ test-linux1804-64-ccov/opt-reftest-e10s-3: XxAhIL9ITiGLs6I2wa5rLA
+ test-linux1804-64-ccov/opt-reftest-e10s-4: JNG5qABzReaC0mfxW6hmAw
+ test-linux1804-64-ccov/opt-reftest-e10s-5: ap-HErjQRxC4bDy1vzGKUQ
+ test-linux1804-64-ccov/opt-reftest-e10s-6: A4RB6d-STyGFe-tIst9WdQ
+ test-linux1804-64-ccov/opt-reftest-e10s-7: IDb796GET-y0VM2JihD42w
+ test-linux1804-64-ccov/opt-reftest-e10s-8: REB3HWtLTgu5fiYCAFM1Sw
+ test-linux1804-64-ccov/opt-reftest-no-accel-e10s-1: a1kb8pHzQfKXLOqj9uvafg
+ test-linux1804-64-ccov/opt-reftest-no-accel-e10s-2: Y7EGEEqOSyaiQtTA3xgiag
+ test-linux1804-64-ccov/opt-reftest-no-accel-e10s-3: AqTKMGmOQ4-Wxq0NghSUWQ
+ test-linux1804-64-ccov/opt-reftest-no-accel-e10s-4: e5JI3FVKRRuh6mbKVe2z0w
+ test-linux1804-64-ccov/opt-reftest-no-accel-e10s-5: awMpGCE1TpWqy8UbPqPMWw
+ test-linux1804-64-ccov/opt-reftest-no-accel-e10s-6: Zi5AJLF5Q4qvWA7C1zaI3Q
+ test-linux1804-64-ccov/opt-reftest-no-accel-e10s-7: HzK7yaRqSDCPeCwgyZyUqA
+ test-linux1804-64-ccov/opt-reftest-no-accel-e10s-8: MLUFwnjuRjmuirQkUybenA
+ test-linux1804-64-ccov/opt-telemetry-tests-client-e10s: TW2ZA6r4SnmrCOEnusMPLg
+ test-linux1804-64-ccov/opt-test-coverage-e10s: G4ThkMhsQ3ubBm_VhLP3jA
+ test-linux1804-64-ccov/opt-test-coverage-wpt-e10s-1: SCHo9_4zTXa49RfsfYQGJQ
+ test-linux1804-64-ccov/opt-test-coverage-wpt-e10s-2: IxReFbayTNSn3s3auovTeA
+ test-linux1804-64-ccov/opt-test-coverage-wpt-e10s-3: KfT2n5AtTrCIBkti6nfklA
+ test-linux1804-64-ccov/opt-web-platform-tests-crashtests-e10s: HJ0nRSMgRPWF2OflUumjXA
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-1: HA1FTo6oQrSUPpWTm6czjA
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-10: e012L22BRBi976kKupbu-w
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-11: VOHoFtDjSJeiHV6-yylayw
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-12: dDbRzJ4USMqasrfz4_Og6Q
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-13: OzldpbuCSRWdVGqlVcupMA
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-14: fr5_TNgDQr2zTvZLFlpptg
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-15: BYClL3LJRKe2CAZmUCknnA
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-16: BfAYbgPdRquAx0Mjl2vm2w
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-17: M2isCGzWSIaZ4jPBh1E8vg
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-18: JTWsvB9kQEyiWU2E9J6pEQ
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-19: aOcCwv-_QhmWim1WCXRoFQ
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-2: Oe7t8DduSXOiQeUblkObLA
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-20: VPJXGHzTS_G5aTLmFg0QbA
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-21: FRerQ3gLTEes3LhnTu2a_w
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-22: Hl7gGi46S66Vj2NU6L7Dng
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-23: D8NxOuBIRuWyaIP0EhJtbg
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-24: NrVhG2BNSG2B8DMcr1VVLQ
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-3: aDBLYoXcR-CQpffmg_gn-w
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-4: AF4Kc5T1TSWypOxPwnTmcw
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-5: eAm2lFDGTqa0xU9PhvVTSg
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-6: Ud8O9xRFQCahWr6wpJRd1g
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-7: Pr4cJssTSh6_q8UQPVx3PQ
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-8: XzF_9UIgRPu-JKiV3yo0TA
+ test-linux1804-64-ccov/opt-web-platform-tests-e10s-9: PveEaXFIR8umnGejRS_3pw
+ test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-1: TXzW5CEnSou8ivqoVgx7ZQ
+ test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-2: KaESz2ObQpaVJdpSADk_ZQ
+ test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-3: NL05iZ7_RG2ZlwkkuvKAAQ
+ test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-4: Ixg0gGF6TXGMCPyIW3hu4w
+ test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-5: biZr0D9lSw-cOSdHfjPVCw
+ test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-6: Kmte2p7VTQa5-2CAnKbNsw
+ test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-7: LZ1RL2yhSd2xBXPXjBxYHQ
+ test-linux1804-64-ccov/opt-web-platform-tests-reftests-e10s-8: bsOWUKw1RpyGd3hOFmxlaQ
+ test-linux1804-64-ccov/opt-xpcshell-e10s-1: UdzzVbs9RJCiWciiIaPURg
+ test-linux1804-64-ccov/opt-xpcshell-e10s-2: LIEL7mLOQZq6LkAtdXRO9g
+ test-linux1804-64-ccov/opt-xpcshell-e10s-3: BqRo4LuEQs6IzjEY4E-MjA
+ test-linux1804-64-ccov/opt-xpcshell-e10s-4: d0u1jo3VSPeRi53ekYla6A
+ test-linux1804-64-ccov/opt-xpcshell-e10s-5: XxDhE2kGSuWGk4LiZXohWQ
+ test-linux1804-64-ccov/opt-xpcshell-e10s-6: fitIMbdXQEmlQB7jtFPyMg
+ test-linux1804-64-qr/debug-cppunit-1proc: XPY99ioCQo-Rqo-u862QXQ
+ test-linux1804-64-qr/debug-crashtest-e10s: HvWjOKu8RNmq1OMFfTtYHQ
+ test-linux1804-64-qr/debug-gtest-1proc: QUdzo2DjSNaGkvHEK0TZxw
+ test-linux1804-64-qr/debug-jsreftest-e10s-1: Kee_HcUsSBu7g4CpfhU4Qg
+ test-linux1804-64-qr/debug-jsreftest-e10s-2: TJtvs85hTWOxdblFTT9WRA
+ test-linux1804-64-qr/debug-jsreftest-e10s-3: I8UgoqxtSdmQPWxv2RSkgg
+ test-linux1804-64-qr/debug-jsreftest-e10s-4: OQyaSzxFQ32qpdmyxrtBqA
+ test-linux1804-64-qr/debug-jsreftest-e10s-5: Yio1mQiuRkuo4qNgexC3uw
+ test-linux1804-64-qr/debug-mochitest-a11y-1proc: cnOE8DlaRqimh5P680wWYA
+ test-linux1804-64-qr/debug-mochitest-chrome-1proc-1: CnkJvLqASjiKY7-PgG4pEQ
+ test-linux1804-64-qr/debug-mochitest-chrome-1proc-2: DtCq9RxySiqatqxro_1GDw
+ test-linux1804-64-qr/debug-mochitest-chrome-1proc-3: HAKzhIlTTFmclKlOUTEEKA
+ test-linux1804-64-qr/debug-mochitest-e10s-1: CzTNeBXgTiGih2Ax-Mjlqg
+ test-linux1804-64-qr/debug-mochitest-e10s-10: aydJflAESqKwh-v7ifpufA
+ test-linux1804-64-qr/debug-mochitest-e10s-11: fwNGVzAcQZerlT_nP5qoYA
+ test-linux1804-64-qr/debug-mochitest-e10s-12: f_2r0hrtTK2Eq6IpYNTtEQ
+ test-linux1804-64-qr/debug-mochitest-e10s-13: epJoSQv2R0atP9wLfoDwSg
+ test-linux1804-64-qr/debug-mochitest-e10s-14: Nd8kW2BYRnGqG7gUn4PpmA
+ test-linux1804-64-qr/debug-mochitest-e10s-15: HDW3P_C4QlCzUaJkL-TSDw
+ test-linux1804-64-qr/debug-mochitest-e10s-16: c6QsJLq9QmypGM-9GsUHhw
+ test-linux1804-64-qr/debug-mochitest-e10s-2: Q90TxP-FT-qQNPe6-HwSNQ
+ test-linux1804-64-qr/debug-mochitest-e10s-3: PAAXwPWGRAi0qXp4yKcgYg
+ test-linux1804-64-qr/debug-mochitest-e10s-4: ARzcukg7QgyNYsrO6lvqTA
+ test-linux1804-64-qr/debug-mochitest-e10s-5: fCPKiLCxSse99R9V9aB8KQ
+ test-linux1804-64-qr/debug-mochitest-e10s-6: FTW5RjKtRpGLUlXRLoQEgQ
+ test-linux1804-64-qr/debug-mochitest-e10s-7: MWhuE8MASzipnb7dmRlfTg
+ test-linux1804-64-qr/debug-mochitest-e10s-8: biPFjmxTQ6ufSmQrhR-fRg
+ test-linux1804-64-qr/debug-mochitest-e10s-9: B99YrgzdRmOsQPLnXvpGUA
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-1: Bi808StJTrSW-ye4lYnGRw
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-10: ewssjKqBThyxWILUfb_OdQ
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-11: ArHpQZhbR-Sox1tR6n0lYg
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-12: UGQOdVfNRyK6XlxLT4SIiA
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-13: VmkZSXpRQ-SNayfWBJwoVw
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-14: JKSUAcctS_GMaYCAzybOqA
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-15: YMhS6vxWSdS0nIpb3i7e5A
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-16: XoGqPZI1S76MO4ETbnsbtw
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-2: S-wokoeRQy-cuWRZ6-bAmg
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-3: TreajlRmSW2B-mHy9gdT9g
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-4: B3jcekeRR5-0QRbjbwwN2g
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-5: BBfvkllRTUSIm94LZp0W6A
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-6: Ws3UDHm2SNGHsi-imDJaSA
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-7: DttpWinOSKeZToassa5nOw
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-8: H2_thqLSQUmu4NTEuTxqaQ
+ test-linux1804-64-qr/debug-mochitest-fis-e10s-9: KQet1y45TpuenoVqy8UeNg
+ test-linux1804-64-qr/debug-mochitest-gpu-e10s: YIo3hHY_S_uMpS8eZsVIcg
+ test-linux1804-64-qr/debug-mochitest-media-e10s-1: W5chS82hTkeuje5a3txwSg
+ test-linux1804-64-qr/debug-mochitest-media-e10s-2: a_Gmno9GTq-81BIZ2N5oLg
+ test-linux1804-64-qr/debug-mochitest-media-e10s-3: cBV4jO7VTYCU_nVj3mYALA
+ test-linux1804-64-qr/debug-mochitest-media-fis-e10s-1: f794ywj6Th6jmRKnlD05cA
+ test-linux1804-64-qr/debug-mochitest-media-fis-e10s-2: DlrBmDVGQqiRFXekVb8AgA
+ test-linux1804-64-qr/debug-mochitest-media-fis-e10s-3: FGV-rHVhQ026EtPWc3EDDA
+ test-linux1804-64-qr/debug-mochitest-media-spi-e10s-1: I4PCxskhSAOZoE4pvax61Q
+ test-linux1804-64-qr/debug-mochitest-media-spi-e10s-2: HTSJupdzTE-AbXeOOZNw2Q
+ test-linux1804-64-qr/debug-mochitest-media-spi-e10s-3: Qpd7J_AHQrqgbxpHfLGEVg
+ test-linux1804-64-qr/debug-mochitest-webgl1-core-e10s: JG7tvudFQFa5-BGbU5M95Q
+ test-linux1804-64-qr/debug-mochitest-webgl1-core-fis-e10s: VtaxJH6tQhevztxCnyY8SA
+ test-linux1804-64-qr/debug-mochitest-webgl1-ext-e10s: OXM8iIWZSqCZIXtSx4QggA
+ test-linux1804-64-qr/debug-mochitest-webgl1-ext-fis-e10s: CwggjUfgTSeqiEcv6f6k-A
+ test-linux1804-64-qr/debug-mochitest-webgl2-core-e10s: OzP_mEJ_Q1Kox4vxQwUm8Q
+ test-linux1804-64-qr/debug-mochitest-webgl2-core-fis-e10s: YsakEfzTTiKaJFpnKJTy-A
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-1: Ljjrd6fmT7m0cjXcKxqkhA
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-2: Gsua26MTTQmXgeRc6qo3_Q
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-3: L--0uOPPRGC98SrPkZNAww
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-e10s-4: e97B2xRBSpuBoMykwoousA
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-fis-e10s-1: D0c3nf10TuinP42t9s8euQ
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-fis-e10s-2: Ezr1oaPQQjCno11HSBzaxw
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-fis-e10s-3: VHZQ-L53Sj25olwxGX_xKQ
+ test-linux1804-64-qr/debug-mochitest-webgl2-ext-fis-e10s-4: IzkZVkSES3GVkYW6V2vksA
+ test-linux1804-64-qr/debug-mochitest-webgpu-e10s: Up21-ImGSQ2SsX-N97_WKQ
+ test-linux1804-64-qr/debug-mochitest-webgpu-fis-e10s: POQj5nCMRsOOVyAF0gLTEQ
+ test-linux1804-64-qr/debug-reftest-e10s-1: EnIbFVIZShiSsaik90RwOA
+ test-linux1804-64-qr/debug-reftest-e10s-2: K1d0nJouSCeIrGDnQcGdew
+ test-linux1804-64-qr/debug-reftest-e10s-3: VFe5U3JGQ_WWY6eSMER1kA
+ test-linux1804-64-qr/debug-reftest-e10s-4: G-kQkGwYQiKfvgF16x_JpA
+ test-linux1804-64-qr/debug-reftest-e10s-5: M-TMNvjZTx6s_2gnxGIgfA
+ test-linux1804-64-qr/debug-reftest-e10s-6: X7EBWdduQbqyeW9-TtXVDQ
+ test-linux1804-64-qr/debug-reftest-e10s-7: dRTjvXcyRvakmT_6uj12hg
+ test-linux1804-64-qr/debug-reftest-e10s-8: UBBHzeVuTMy--37CKwwKLg
+ test-linux1804-64-qr/debug-reftest-fis-e10s-1: Fk_X8-j-TlyPAJgIJ3LusA
+ test-linux1804-64-qr/debug-reftest-fis-e10s-2: LkKCKkF-TLaDmpNSJI_DIQ
+ test-linux1804-64-qr/debug-reftest-fis-e10s-3: YdG35ibxQuKLBUXaD9mQRw
+ test-linux1804-64-qr/debug-reftest-fis-e10s-4: WtmFGIVzRoKNal6zX9BosA
+ test-linux1804-64-qr/debug-reftest-fis-e10s-5: SNfDqSPaRDGQS6o1WOaBlQ
+ test-linux1804-64-qr/debug-reftest-fis-e10s-6: cPviqwquTlOEVXE7wWvNGQ
+ test-linux1804-64-qr/debug-reftest-fis-e10s-7: GT5yrsdlSqWTCRgYHLGXWA
+ test-linux1804-64-qr/debug-reftest-fis-e10s-8: Ylo-mSVcRqGAMZPk0z-PVA
+ test-linux1804-64-qr/debug-web-platform-tests-crashtests-e10s: Nbs3Qg2YQ2C8s23hVXwfgA
+ test-linux1804-64-qr/debug-web-platform-tests-crashtests-fis-e10s: BFJOdwkuSTOJCjpnR203QQ
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-1: cxO0matdSFqUKV-7hdMJCg
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-10: T67TU64MRqqLPvan_tVbkg
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-11: ER2W5osQQ-6wglEhGVUinw
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-12: ImXu1S-lRx-AmPn9Jbw1NQ
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-13: EWqkN0vXRDm3zph6SCQQTg
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-14: dur4jGTjTJuSSukOADwVGg
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-15: SBaYaCaPSbCJxahtAcaSXw
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-16: WNwQJBdrSYi2DuQaIjPYrg
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-17: bX5F4epLSfCkw5KyzE1oFw
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-18: Cq1uEwH2Rsuwy5sYLAACjA
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-2: AhitzSFmQfOoN8NgVKgkCA
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-3: deVDeLkqR_iWMWk3NWMLdQ
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-4: WUL-78nmTjqRWG0zk-vs_w
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-5: Pl_xL5wYSoOAhMOIMl1auQ
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-6: Fihaqce8T3OrPlS0lV8lqA
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-7: UET_zetjRnKpx2Bp55DTJg
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-8: WVU_xHLKQESz0wx36XLGLA
+ test-linux1804-64-qr/debug-web-platform-tests-e10s-9: JTIRHKzYQrOGIYb2TvvE7Q
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-1: MZM4-piAToeFYHK4974Y0w
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-10: BaJBymj-S76iY0deD4alLQ
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-11: NNSERAPSRliafkvZuZp6oQ
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-12: Nlcxm0NwSRKC58HQadh2jg
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-13: Sy88pWJ1S62qxIohyP5NiA
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-14: aL5KbJmCSByDzqoY1ARJZQ
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-15: ZQZDwNQjS6OqDEV3rhBwLw
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-16: cAv-bB2pQ36bJkFmTVdlUw
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-17: fhooz0TwTG-557jSnRG8Eg
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-18: YX5AsDPATXmNFT_VTN9efg
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-2: XsQ031OrQKe3T3bm_y6dJA
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-3: aXD7Fu79SAmj4Lr2aosKAg
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-4: EQPGTEuTTPGsF3qHtO45Cg
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-5: FnTs1TSpQdaHvzS9AP8DIw
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-6: eE-4giRISYqNhn4gb7HQHg
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-7: AhnUak4WSHCFKpydYiD8jA
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-8: NASGrD_BQMiExF0aehVLng
+ test-linux1804-64-qr/debug-web-platform-tests-fis-e10s-9: ZcMmcyReQeu3OL-03FmQ2g
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-1: HM-HSvEuSNC3e-Hw0UiFwQ
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-2: NgsAVplDRcKaDpJxTecrVQ
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-3: V4xjs1w8SoaeEht6X3amtw
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-4: BtitSKoySJSxZXC60QS-eg
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-5: KHLx5lmGSiSGljjNXqtRpg
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-e10s-6: Hbisan2DRTOFiMDre2eH1g
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-1: UZxh0QGURGS2lCV9-vjsfg
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-2: Z_UI2-yzS-qhWB4gZCwUYw
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-3: X3l5Uw26Ta6R-rOQEwxrLw
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-4: VSA-IGINT1iHIRIEY8koXA
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-5: DDvUa8jzRZWFyB83fcZrQg
+ test-linux1804-64-qr/debug-web-platform-tests-reftests-fis-e10s-6: AqIFjNioT6-C7j6TOQ-XSQ
+ test-linux1804-64-qr/debug-xpcshell-e10s-1: PvJCFiBiSE2W3_-Bu4EcXA
+ test-linux1804-64-qr/debug-xpcshell-e10s-2: LaHs-UVaRxupMWc45pX-aw
+ test-linux1804-64-qr/debug-xpcshell-e10s-3: ET9Y49TSRHykdDH63gN2Fw
+ test-linux1804-64-qr/debug-xpcshell-e10s-4: L6PT84pKSeW-FQxSDjJdJA
+ test-linux1804-64-qr/debug-xpcshell-e10s-5: LruLviP9SZuUAAcRsQJIkA
+ test-linux1804-64-qr/debug-xpcshell-e10s-6: Pg_SED8HQpePGERn9gEBbw
+ test-linux1804-64-qr/opt-awsy-base-e10s: O35o-TpYQfOwSMg77Lok6w
+ test-linux1804-64-qr/opt-awsy-e10s: Ik6QPZdhRI2Fk5gQQdEJOw
+ test-linux1804-64-qr/opt-awsy-tp6-e10s: aK5Gt3k8SK-1s1d9v4So1w
+ test-linux1804-64-qr/opt-cppunit-1proc: Z0Laa4x7TVatXjBPoN1xbg
+ test-linux1804-64-qr/opt-crashtest-e10s: cDf-Jb_2SXKVKk1JMWg1FQ
+ test-linux1804-64-qr/opt-gtest-1proc: QWisexNoTI6FD-dt6wMQdw
+ test-linux1804-64-qr/opt-jsreftest-e10s-1: b6Te2o8OTkmBwIG4jqqNiA
+ test-linux1804-64-qr/opt-jsreftest-e10s-2: FkhQ5KrDRzOmgNuksP_liw
+ test-linux1804-64-qr/opt-jsreftest-e10s-3: QeABtJioRJCnNVg6ZGahYA
+ test-linux1804-64-qr/opt-jsreftest-e10s-4: CXfWX1ylQxW5Fq3MoQTPcg
+ test-linux1804-64-qr/opt-mochitest-a11y-1proc: Ta-TtHi9QiaD11bYS5T95A
+ test-linux1804-64-qr/opt-mochitest-chrome-1proc-1: c9ypTXAvTe-YZLiLXbLoOQ
+ test-linux1804-64-qr/opt-mochitest-chrome-1proc-2: GrOeicEWRG2bpIXDlnwopg
+ test-linux1804-64-qr/opt-mochitest-chrome-1proc-3: Geng_yOsQ-OtHpZKh6MfUA
+ test-linux1804-64-qr/opt-mochitest-e10s-1: da08Kw8tTPGGFJysqcWRxQ
+ test-linux1804-64-qr/opt-mochitest-e10s-2: V_QmWt3eTROe9sp2YWJlqQ
+ test-linux1804-64-qr/opt-mochitest-e10s-3: I55bg7CmQC-c2tCA_nHv1w
+ test-linux1804-64-qr/opt-mochitest-e10s-4: YCW_IPKyQS-1FmH_CVRVWw
+ test-linux1804-64-qr/opt-mochitest-e10s-5: MzPC_Y1gTImywFdAQvUq7A
+ test-linux1804-64-qr/opt-mochitest-fis-e10s-1: OntNKQHcRrGsNEHhFGmBKA
+ test-linux1804-64-qr/opt-mochitest-fis-e10s-2: EWi7MyFpTUu2AyvjCV1v5Q
+ test-linux1804-64-qr/opt-mochitest-fis-e10s-3: VdC4O1dSTXOCeHcRa9LkUA
+ test-linux1804-64-qr/opt-mochitest-fis-e10s-4: bpLFEMJrQMe_wKj5L7uUpA
+ test-linux1804-64-qr/opt-mochitest-fis-e10s-5: RgWveB0lQxu3pvrU7lu_ow
+ test-linux1804-64-qr/opt-mochitest-gpu-e10s: UiAlbFUkREiZK3FkHmB5Eg
+ test-linux1804-64-qr/opt-mochitest-media-e10s-1: V10iaLm1T1a0wjPdkJvpNA
+ test-linux1804-64-qr/opt-mochitest-media-e10s-2: IsbonQ0tTiOXYjXdtl2_oQ
+ test-linux1804-64-qr/opt-mochitest-media-fis-e10s-1: FPqyN0NlTLWzde9hf4Vb5Q
+ test-linux1804-64-qr/opt-mochitest-media-fis-e10s-2: bRxZ1VANT2KKLH8BLVrCmw
+ test-linux1804-64-qr/opt-mochitest-media-spi-e10s-1: DLEkoS-wS7qU5TgupUbqNA
+ test-linux1804-64-qr/opt-mochitest-media-spi-e10s-2: HfwMbJ7YRYGhxsGIvqf94g
+ test-linux1804-64-qr/opt-mochitest-webgl1-core-e10s: eh5wbF4PRuixAcQ5KvnG2Q
+ test-linux1804-64-qr/opt-mochitest-webgl1-core-fis-e10s: a2IkNF2VTYO8fbt25VgyYw
+ test-linux1804-64-qr/opt-mochitest-webgl1-ext-e10s: LDmsv7pUT-eLSC1T-jHfGw
+ test-linux1804-64-qr/opt-mochitest-webgl1-ext-fis-e10s: APiiLPlrSwuSQGjmQwqrkw
+ test-linux1804-64-qr/opt-mochitest-webgl2-core-e10s: CDpFkEO7QF6vc3Jbqgk8HQ
+ test-linux1804-64-qr/opt-mochitest-webgl2-core-fis-e10s: KLwyDN0zRv2SuzfqBXej5w
+ test-linux1804-64-qr/opt-mochitest-webgl2-ext-e10s-1: b0dT068YTkqw3qOOHe2IiQ
+ test-linux1804-64-qr/opt-mochitest-webgl2-ext-e10s-2: DKl0qYcHT1uRtQtWvPoiXg
+ test-linux1804-64-qr/opt-mochitest-webgl2-ext-e10s-3: QUyVT0W0RhiTSfi0JJkViw
+ test-linux1804-64-qr/opt-mochitest-webgl2-ext-e10s-4: URvY_kxjRNiELgljMgZXjA
+ test-linux1804-64-qr/opt-mochitest-webgl2-ext-fis-e10s-1: MKgCG-VJTOGZxdMOfPvdBQ
+ test-linux1804-64-qr/opt-mochitest-webgl2-ext-fis-e10s-2: XNnClNbQQyyIPLa2CBiajg
+ test-linux1804-64-qr/opt-mochitest-webgl2-ext-fis-e10s-3: KM1V-yJRToakOoX_1v8HQQ
+ test-linux1804-64-qr/opt-mochitest-webgl2-ext-fis-e10s-4: cRdWLzNwTY2EK6DG79U4kQ
+ test-linux1804-64-qr/opt-mochitest-webgpu-e10s: ZSCGZGsSSr6Lppq0MjZoow
+ test-linux1804-64-qr/opt-mochitest-webgpu-fis-e10s: I25yO_-cSzecGdWPiwuouw
+ test-linux1804-64-qr/opt-reftest-e10s-1: HmY4MwqFR1GRYcuSFGIiGg
+ test-linux1804-64-qr/opt-reftest-e10s-2: QMnEDI2OQc-0sgqmGrIhdg
+ test-linux1804-64-qr/opt-reftest-e10s-3: TtCl33UuSxSy6qZaR8T_sA
+ test-linux1804-64-qr/opt-reftest-e10s-4: UJoTTRuGSNSQKNhVJLTfMg
+ test-linux1804-64-qr/opt-reftest-e10s-5: F_9F8-UqRpukXM5hfNqfng
+ test-linux1804-64-qr/opt-web-platform-tests-crashtests-e10s: GdfNRl2HTeKG9LNPLjyYMg
+ test-linux1804-64-qr/opt-web-platform-tests-crashtests-fis-e10s: emQq442_QE614tixC0Tniw
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-1: IRYaFR6-S1q5v9UMQvk0YA
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-10: CYWSg4TeSAeL0kMNK4_3Ig
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-11: JODcB_n-TDqRcGS4XR-zAw
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-12: Ku9vJfDYT1GftpNqoLRxnQ
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-2: cu1TaBM4R6aXcDWAvja83A
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-3: CphR7q78SpG3LsBHqmUOuw
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-4: TPl4nsP8Svq4nNgDL4M0Vw
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-5: dxUNy3RySLudgdJze4jpIg
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-6: Keh0-WXEQMSIDBsK9qqcRg
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-7: KU5tmcDBQzKU0ZmrV1AE_g
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-8: bBeIia30Q3CECzBCeHY4NQ
+ test-linux1804-64-qr/opt-web-platform-tests-e10s-9: FgpvVyIfTaSiPmOdiMtI_A
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-1: fTbio8GjS-WHaG5H7V66aQ
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-10: QYw-fEqMT_KJBqwy9wMjuQ
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-11: EfUXxSSwQo6DYQzbxBmEHA
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-12: ICett8PsQpWfEMUDuGlaog
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-2: anEfgzgcS6OkLZqbK54MJQ
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-3: AVhJHNibRfS7GcQExiJEZQ
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-4: OpY4oQH_QhKtge42fu87xw
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-5: P3uQ09t4ReGY1nKvaVBueg
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-6: ICMtcsu7SSygqwNZo3Dn-Q
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-7: HK354Sq7RTK0UkOA85P_yQ
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-8: PxNji8I1TUeuVacDQS5mqQ
+ test-linux1804-64-qr/opt-web-platform-tests-fis-e10s-9: Wr5hVgTrQUCetRD5u3SwGw
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-1: aDRuD4B-R3CE8NfOA6eFJA
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-2: Lj2j2JwBTN6HvHeIuzUj9A
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-3: Yrz4Jd0gQ5-5q2tC0cjWwA
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-4: NmZUy2AHT4ubyQR-eNCfCw
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-5: anNo0WvuQlO6L-_8Gh-oBA
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-e10s-6: dwxPVdlbSmO33PCGvw5-ag
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-1: H9fNc0yKS5eaXWw1vOlqBw
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-2: flBbmPbQQGeZc75ciVzcDw
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-3: c_5u0Mt3R-i1SvAs8-yhsQ
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-4: BGBP7S22SACRC41tnL8OKg
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-5: AyvZy7tGTyCvhRR0xfsxqQ
+ test-linux1804-64-qr/opt-web-platform-tests-reftests-fis-e10s-6: W01Q_HDQSV-8NOliN5CCBA
+ test-linux1804-64-qr/opt-xpcshell-e10s-1: fM4NF5UURsOofq-2noLMYA
+ test-linux1804-64-qr/opt-xpcshell-e10s-2: QmcRo2lYQJqX9qC7GHsP0g
+ test-linux1804-64-qr/opt-xpcshell-e10s-3: QbYfrWtOSpSnrwwmV_oEzg
+ test-linux1804-64-qr/opt-xpcshell-e10s-4: BkrjD58JTcezs3WlEuYsfQ
+ test-linux1804-64-qr/opt-xpcshell-e10s-5: Kd-LvKEZSVC1OEoeZ9Fzsw
+ test-linux1804-64-shippable-qr/opt-awsy-base-e10s: MO2mxSrRTi6xGL1xh9rvjA
+ test-linux1804-64-shippable-qr/opt-awsy-e10s: bCwNKyxDSfuZ2JA71WQL-Q
+ test-linux1804-64-shippable-qr/opt-awsy-tp6-e10s: cMZu7efjRZGloTQsatz8oQ
+ test-linux1804-64-shippable-qr/opt-awsy-tp6-fis-e10s: UGLBO6UORXaXc9-CaY3qUg
+ test-linux1804-64-shippable-qr/opt-cppunit-1proc: W_CWiZH3S1SsX_nSe8tnqA
+ test-linux1804-64-shippable-qr/opt-crashtest-e10s: JlyDmmcuR5ieoRrdUxeciA
+ test-linux1804-64-shippable-qr/opt-gtest-1proc: YOB9nrlYSPq39hR8uYLItw
+ test-linux1804-64-shippable-qr/opt-jsreftest-e10s-1: QdI5TBezRS-xXjRMVBlycA
+ test-linux1804-64-shippable-qr/opt-jsreftest-e10s-2: G7toeQ4SQPC9tBkx58PHig
+ test-linux1804-64-shippable-qr/opt-jsreftest-e10s-3: Pl_arsPBRYGjoMo5WzEiIQ
+ test-linux1804-64-shippable-qr/opt-mochitest-a11y-1proc: Jm8kc0z8RYqFAkQiJCOTSw
+ test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-1: K44x6KcdS56lon4A3S3eNQ
+ test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-2: XcrBZAL0TeKm5ekxfh_Uyg
+ test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-3: OW4iXuV_S86DYs9D4theIQ
+ test-linux1804-64-shippable-qr/opt-mochitest-e10s-1: DuogjobMSQGCpN9d9OjMCg
+ test-linux1804-64-shippable-qr/opt-mochitest-e10s-2: Ud5Sx5JGR6KybOtztccjrg
+ test-linux1804-64-shippable-qr/opt-mochitest-e10s-3: USsg4m8sQ-Gcw1WiNiZJ2Q
+ test-linux1804-64-shippable-qr/opt-mochitest-e10s-4: UKLBjpDGQEeES78HRojuTA
+ test-linux1804-64-shippable-qr/opt-mochitest-e10s-5: SgxxbwUTSxSbOaZeWjNaCg
+ test-linux1804-64-shippable-qr/opt-mochitest-gpu-e10s: UAQaHCDDRRqO38Bf91rsFA
+ test-linux1804-64-shippable-qr/opt-mochitest-media-e10s-1: Jraw3UFpTZS5BuPwpQo_vQ
+ test-linux1804-64-shippable-qr/opt-mochitest-media-e10s-2: Gncs2puSSIu6aVXVqDeDdA
+ test-linux1804-64-shippable-qr/opt-mochitest-media-spi-e10s-1: XIVQrs1zTQ-RA821HhWZFQ
+ test-linux1804-64-shippable-qr/opt-mochitest-media-spi-e10s-2: X9LSwVssSUGOIvsgpNfxmA
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl1-core-e10s: ZWBl3k5HSKidluYD4lNzsQ
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl1-ext-e10s: VcZkdknKTsebKixjP0PsdA
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl2-core-e10s: U-1qPD_BTwCylwtDGZPYnw
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-1: QTO5WAhXRf6_YFZFNOs1ZA
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-2: S9OuXpykQp-ESZDL5nUXoA
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-3: XxFNhlOOTaCovA7a-eq-ew
+ test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-e10s-4: BvKie7PsSoCYJbiJKuIUkA
+ test-linux1804-64-shippable-qr/opt-mochitest-webgpu-e10s: KaJF7guKRduz_lkXlSxp9g
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-1: f34KS3GpR_a8mEEmPj2XsQ
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-2: d5ycSBHgSpO3HzBYyOTPYg
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-3: Zbnde47qQDuFJ5GrgX36pw
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-4: IU9Wy9UNRTGY26aOxN9UDg
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-5: P7lJzV0TSHC1vgWZTbHW8Q
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-6: B9doxwwBQPGf6SWZm4TQqA
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-7: ZeBAUCCmSCCAYf64ptExFA
+ test-linux1804-64-shippable-qr/opt-reftest-e10s-8: AmcmU9JfTs6J6gM9lDMnUg
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-crashtests-e10s: YRZA9kjISj6Z5nXVK4_Q5Q
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-1: eA17uCYVQfeOtkBaN2BmWA
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-10: DVSFVjzmQCqndYM0T8pYKQ
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-11: PSiMtYZ6SA67Zx9YvGLdIQ
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-12: ScwohmtnQMerF0S3Rqjr9w
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-2: LAdxsCvTTWy9OykJz40qNA
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-3: EtzBVU3TRbOsGL7RPpi27Q
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-4: K-asbM9ITE-SQBlQ6rmoIg
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-5: fWu4EdpaSZ2TSfW36bFkDA
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-6: eLPHU1aiRBKDHP9Y8dkWng
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-7: SGpfmDRqTH6cs2Oo8z5VSw
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-8: DTcsfBkjQcGA-YPdTfOtPg
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-e10s-9: GyrjztqtQZ-GU9LvVCgjIQ
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-reftests-e10s-1: AVDQiwSIRLqjk38hxlYnXw
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-reftests-e10s-2: OcI8dYRgTgSnV5FrONkBxA
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-reftests-e10s-3: R6HdrwQDRAe1uvlaLdyE5w
+ test-linux1804-64-shippable-qr/opt-web-platform-tests-reftests-e10s-4: IbGVqL31SWWuOzDns0SuOw
+ test-linux1804-64-shippable-qr/opt-xpcshell-e10s-1: L8axt6LZT1qwl_P4oY3P7g
+ test-linux1804-64-shippable-qr/opt-xpcshell-e10s-2: G9hmjPGwT9yFd9KTVOaTtw
+ test-linux1804-64-shippable-qr/opt-xpcshell-e10s-3: XlqXk1wPStW3q6Lfh40-tA
+ test-linux1804-64-shippable-qr/opt-xpcshell-e10s-4: dEqtlhHSQVik-wEs9MesmQ
+ test-linux1804-64-shippable-qr/opt-xpcshell-e10s-5: aCPahsh8RTCIbFf2SVRaFA
+ test-linux1804-64-shippable/opt-awsy-base-e10s: KKFHdfu1T4ykq9oAn5t5yg
+ test-linux1804-64-shippable/opt-awsy-e10s: VyiROaKtTqaXMLW52LG62A
+ test-linux1804-64-shippable/opt-awsy-tp6-e10s: JzoI4dOKTxKNE5nobCGyjA
+ test-linux1804-64-shippable/opt-browser-screenshots-e10s: KiQPhBBEQe-vDSIWxg6UMw
+ test-linux1804-64-shippable/opt-cppunit-1proc: HONUeC7gR26OMBrjTn_0OA
+ test-linux1804-64-shippable/opt-crashtest-e10s: a9C-G9aeQReEfETasrTIvw
+ test-linux1804-64-shippable/opt-firefox-ui-functional-local-e10s: YmE4pJ5GSLukpjts3EsKwg
+ test-linux1804-64-shippable/opt-firefox-ui-functional-remote-e10s: HF9ZZpj9RUGnVx6ACyCT8w
+ test-linux1804-64-shippable/opt-gtest-1proc: Nm4jDqOWQpyncSy0gJ5NMA
+ test-linux1804-64-shippable/opt-jsreftest-e10s-1: IUJ9Z1p4SO262n56UDHt1A
+ test-linux1804-64-shippable/opt-jsreftest-e10s-2: Zuvw5k8hTL-eZiJinFlUBA
+ test-linux1804-64-shippable/opt-jsreftest-e10s-3: Ys1oMCbHSbuMka4Brf86NA
+ test-linux1804-64-shippable/opt-marionette-headless-e10s: Pm4_54ubQ2KOtcKF4A8HXA
+ test-linux1804-64-shippable/opt-mochitest-a11y-1proc: fBd8uCMySiKfozbZmiyavw
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-1: L7LS5Dc0TG2NM1PlZaY63g
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-2: AVroswzYRKqiUyGYD3AK9w
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-3: VAXO9w8bSZaEsibik32Gxg
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-4: dwOuA9D0QbyEab3uC3858w
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-5: EJK4naSUSku55YpXvzUWdg
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-6: VftGRdelTQGLWHrZ_kRuNA
+ test-linux1804-64-shippable/opt-mochitest-browser-chrome-e10s-7: HdJF12ugRGydKgIMiJNcNA
+ test-linux1804-64-shippable/opt-mochitest-chrome-1proc-1: cWS_UiOSRz2pAAzXIZd78g
+ test-linux1804-64-shippable/opt-mochitest-chrome-1proc-2: RWYLcq9sRiq3qbslvgZQvQ
+ test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-1: K7O4oTRfRPWdV8_fIdQlug
+ test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-2: RoTeLRoRSvOUA8guWvfUng
+ test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-3: Nb9xje6iTRG_NqkcG6yTGg
+ test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-4: G71dKBVpSzK8sV1OIi97CQ
+ test-linux1804-64-shippable/opt-mochitest-devtools-chrome-e10s-5: IMSqX7vWT4q8g57JijoOVA
+ test-linux1804-64-shippable/opt-mochitest-e10s-1: Q2A8stazTvWFI5GmYzamhg
+ test-linux1804-64-shippable/opt-mochitest-e10s-2: UC9OzJDWSCWQE5GyuJg-8w
+ test-linux1804-64-shippable/opt-mochitest-e10s-3: AtIcfD22T6iT5ytZAokMVQ
+ test-linux1804-64-shippable/opt-mochitest-e10s-4: ELdLq-tmS72TGCfh4NF0MA
+ test-linux1804-64-shippable/opt-mochitest-e10s-5: Nlvqtst2TqiZNS87cDm4zA
+ test-linux1804-64-shippable/opt-mochitest-gpu-e10s: eSKziGU0R76a9_pxrGUeRg
+ test-linux1804-64-shippable/opt-mochitest-media-e10s-1: NHsO8BqlRL-gg9Yj4-Z6zQ
+ test-linux1804-64-shippable/opt-mochitest-media-e10s-2: AQRlTncpT4KmMViIJijkwA
+ test-linux1804-64-shippable/opt-mochitest-media-spi-e10s-1: FfxYgVg5TzGW28iELKw6aQ
+ test-linux1804-64-shippable/opt-mochitest-media-spi-e10s-2: LchCeGWgQ_iSGDXYrDTTLQ
+ test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-1: Ae0rlTz7RCyH-fwVn6gb2Q
+ test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-2: AGd3eoF_Riu0FKAukwZ2qg
+ test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-3: HUcUqXKMRJybzkXNM1d_8Q
+ test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-4: G_2ydSYJQD-Yq7MUrwFz3w
+ test-linux1804-64-shippable/opt-mochitest-plain-headless-e10s-5: ROq7KPo1QgWLVChSCi6NKg
+ test-linux1804-64-shippable/opt-mochitest-remote-e10s: U6rz7Nz7TE20OG6OFhoFjQ
+ test-linux1804-64-shippable/opt-mochitest-webgl1-core-e10s: NscfiXbESAqpJwiExojAOg
+ test-linux1804-64-shippable/opt-mochitest-webgl1-ext-e10s: XsRvROeMSYi8C859DyqxjA
+ test-linux1804-64-shippable/opt-mochitest-webgl2-core-e10s: VaUMr5xfREueeyuqI04sbA
+ test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-1: Hc-91hxMRQ-5dWaQ1Z3ywg
+ test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-2: HAHhmla0RPKU1MtfFffFLA
+ test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-3: NKuCe-J4Rsuqzzl-gu3Vsg
+ test-linux1804-64-shippable/opt-mochitest-webgl2-ext-e10s-4: JbZpG87vQ4CF7RHArYjC4w
+ test-linux1804-64-shippable/opt-mochitest-webgpu-e10s: AbU4bp_sSbux1eK12e3dxA
+ test-linux1804-64-shippable/opt-reftest-e10s-1: TUAJZPLATSSJPIyfv0avAA
+ test-linux1804-64-shippable/opt-reftest-e10s-2: RFFwQO56Teq4fce3eSlkWg
+ test-linux1804-64-shippable/opt-reftest-e10s-3: Dtat459SQP68JRptYbipHQ
+ test-linux1804-64-shippable/opt-reftest-e10s-4: a96zZl9YRT2km7muXLA-Kw
+ test-linux1804-64-shippable/opt-reftest-e10s-5: ODzk_7bXTbOxi3l-7j5Zcw
+ test-linux1804-64-shippable/opt-reftest-no-accel-e10s-1: MpixNXDhSSSuuZBZ989-dw
+ test-linux1804-64-shippable/opt-reftest-no-accel-e10s-2: ZK97PVGETe2t1SJkiYh6oQ
+ test-linux1804-64-shippable/opt-reftest-no-accel-e10s-3: C8vLUc1dTtGp79UTZ9JriQ
+ test-linux1804-64-shippable/opt-reftest-no-accel-e10s-4: dSEGISb6SO6JcyaJoMYoMQ
+ test-linux1804-64-shippable/opt-telemetry-tests-client-e10s: QI9ll-WHSqW0zvIbVGvGgA
+ test-linux1804-64-shippable/opt-web-platform-tests-crashtests-e10s: J4noY1rBRXu88bIUyXDIUQ
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-1: EbNP2jICS-edgcglrRBp0w
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-10: aVFiILeOTlyDV_yBJ1yLzQ
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-11: YS5CReZqToeDgN9aenEvIg
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-12: drP1j263RHKOMRwihQHB7A
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-2: cO4wu0kpQ2eW8oIic5Y34A
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-3: ReVVIfqITayTkXvSq-wrxw
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-4: Sm-VSaILRECJJq46ODr3lw
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-5: FSwUPSCNRiO89MqOmORTPA
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-6: J0anqo6UQSyFYXLfjfUJsQ
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-7: KYR5NVjfR3qpjJ4lmiFlNw
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-8: E86qH3tLRsmFIQ-oJLg3Uw
+ test-linux1804-64-shippable/opt-web-platform-tests-e10s-9: NELEj4MdRzyStjRb-z7CmA
+ test-linux1804-64-shippable/opt-web-platform-tests-reftests-e10s-1: bU8wK9KGTCu7mcTP88g59Q
+ test-linux1804-64-shippable/opt-web-platform-tests-reftests-e10s-2: PGMvHW22T4KtZqQixydZ_Q
+ test-linux1804-64-shippable/opt-web-platform-tests-reftests-e10s-3: H0y1kaohQhuIB8T98Zhb_Q
+ test-linux1804-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: RSb_OKTlS1Gs5D1kziZ86A
+ test-linux1804-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: TieX5C8hTvi0qJKIxCx0YQ
+ test-linux1804-64-shippable/opt-xpcshell-e10s-1: AjNa8FlcRC63j2kpWFpdcw
+ test-linux1804-64-shippable/opt-xpcshell-e10s-2: PeARo95pQuinLk8vOhXjNQ
+ test-linux1804-64-shippable/opt-xpcshell-e10s-3: VfwpVu0XRUCosSbs-l8DMg
+ test-linux1804-64-shippable/opt-xpcshell-e10s-4: J4swqxWURhCRrakMTqM7dw
+ test-linux1804-64-shippable/opt-xpcshell-e10s-5: aE4L_J3dTdaCAJZmK5Wc0A
+ test-linux1804-64/debug-cppunit-1proc: IE5gzbNtQC-1G4RsBOvHMA
+ test-linux1804-64/debug-crashtest-e10s: CmTpoymARjOtAGXY0_rLDg
+ test-linux1804-64/debug-firefox-ui-functional-local-e10s: dIWrJerJTmaiOs3w9nL9xA
+ test-linux1804-64/debug-firefox-ui-functional-remote-e10s: IjmWrS5MRRmyrTHXVEu4Gw
+ test-linux1804-64/debug-gtest-1proc: IFUuFIP9SZiT3IlhU5v9Ww
+ test-linux1804-64/debug-jsreftest-e10s-1: UShJY17DQnudv1AMjfzZZA
+ test-linux1804-64/debug-jsreftest-e10s-2: FiNfSd3xRwWt_VuCExhWkQ
+ test-linux1804-64/debug-jsreftest-e10s-3: MukNnF3TTp-RxohCV7tNgQ
+ test-linux1804-64/debug-jsreftest-e10s-4: LiwZDskZRuKbiw4we8dPgg
+ test-linux1804-64/debug-jsreftest-e10s-5: cpvWlaWaS4WvGL-6_kuKtA
+ test-linux1804-64/debug-mochitest-a11y-1proc: G5tbENmLRPCMq2tt-KOwzA
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-1: TaGmBLL5Q1Szyet-_xBpHw
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-10: IxhHDq36RhyecGaLbIYO_Q
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-11: QnTHVNsjSIW342GBGSgAhQ
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-12: C6pI7LXPRnajRHEZviINOw
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-13: RrY-y9f7SoiEiVYEtVo4Bw
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-14: AybJVgDhQ0uKpgQ-ayeJ-Q
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-15: faMM-6zLQm-5Gsm117Zk5A
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-16: T13uP2MbSDKIKxL_g9boTQ
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-2: VsXSJ-4lSDKcPs4mN-eDJg
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-3: P5UCq_z8S86eYzlunlscXQ
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-4: NLYyNdtMSFCLLme8rbVfJg
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-5: athNIFI1TtuoLWz1kLwjEA
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-6: HKiWxxNyQdGzRtvukat2zA
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-7: eIJk5iGeQUChrt0tA7mMRQ
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-8: FQGOOM3DS2C4oUytHEfcGw
+ test-linux1804-64/debug-mochitest-browser-chrome-e10s-9: Iq6vu2EdRn28Ux7eAnWE0w
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-1: NNinuUe3So295YqfEr9B0A
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-10: AwebRFRxQ9u7uxcggEw4kA
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-11: RamHiQ6-TJqaa7bxGjTrPA
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-12: B6RB6N8XSp6unJyua2Snkw
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-13: VbQwgyZTTIul4dcuauORTg
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-14: ZHLRxNYYRC6YQQrox--_3Q
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-15: HP6AKLgBRmuPgs2XMKZINQ
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-16: HoEAOKCNQX6A07iNQGHvLg
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-2: WURxT_nBTYWzOWQdfaAtkA
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-3: LnvVLmrGSJuTYkNrklh7ig
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-4: Mh92b4r4R5G93_IMNfBgSg
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-5: SfVdJfFwToiTQx0OtC0nDg
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-6: aioHLNOtRgeAmXsvZSS75Q
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-7: NtcdFxPqS72dxpyiz_HMfw
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-8: Ix0TDZTtTqaJo4Gz6NwerA
+ test-linux1804-64/debug-mochitest-browser-chrome-fis-e10s-9: PUqjx7vaQMObEj9xqbSNSw
+ test-linux1804-64/debug-mochitest-chrome-1proc-1: DXx5x2q6Qe-hbT_mzBYqGg
+ test-linux1804-64/debug-mochitest-chrome-1proc-2: UM1UF6vwTRa_dA1HdMr-0A
+ test-linux1804-64/debug-mochitest-chrome-1proc-3: doHZbqb1QC61Xy9WJrrRoQ
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-1: E890A1tQQ3aU7RcVMdGUXg
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-10: aeDnF7H2QbC6Et2sSPcvXQ
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-11: GFsIJ2uVSamp8RQ2KjMf1w
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-12: VSa8RpdkQC-SbscIKrCFqQ
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-2: aGis8TVdR4GsW02RNb9f2g
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-3: E6G6pGXAT--AMj6w2UKE_g
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-4: au4_VQ2JQqyyVSFun6ksnw
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-5: B2u_xkAxRrqO_F0_C6TTXw
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-6: Q4xpS5CXT6CgfJrarzM83w
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-7: Rwgr_SnATEWHTH5RcHk-7g
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-8: Hz9uRFOpRxaAJNhmRuGd6A
+ test-linux1804-64/debug-mochitest-devtools-chrome-e10s-9: A_vmx7sTQ4uiE7ppc8L8Jw
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-1: S6s-JjpDRzq1C5QyRJApnA
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-10: UXioTnAETSW6Aigr_uOqQA
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-11: WkwZRWw4SyWAOBjop2wloA
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-12: V568Xv-vSwemMQJmmWV8zA
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-2: ELSaoo39T-eY8LSxAiVzeQ
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-3: fGVo8nlQQiG8RDS8TCfhBw
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-4: TH5TyG3cRbC2Tz03mVcjdg
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-5: IIlQEEHnSxCSv5U70-RtFg
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-6: fzYx5GR8SA6tEm4-VhWwBA
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-7: X4hUmTaLSp6XQc7zBTipXQ
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-8: H7CEDH_uTrWwgf7M2_61hg
+ test-linux1804-64/debug-mochitest-devtools-chrome-fis-e10s-9: NNnvgx-cTvWdTt_kwrUZRA
+ test-linux1804-64/debug-mochitest-e10s-1: DFoTLbHIQkGNL4iTGO_QxQ
+ test-linux1804-64/debug-mochitest-e10s-10: fAwX728YRj24uU4FTgTB5A
+ test-linux1804-64/debug-mochitest-e10s-11: fbNfauXKRIO-u9z6PCxGpA
+ test-linux1804-64/debug-mochitest-e10s-12: VzKbz3F4QB6U_IDaN4vtcg
+ test-linux1804-64/debug-mochitest-e10s-13: MsL0jyAGTQar8fM9U_nSDQ
+ test-linux1804-64/debug-mochitest-e10s-14: UcwCGW2aRX66E2Q-5YoTMQ
+ test-linux1804-64/debug-mochitest-e10s-15: MfQNzKBATS29TShdaplX0g
+ test-linux1804-64/debug-mochitest-e10s-16: aXpllI7IQIaGscWUzxoFpA
+ test-linux1804-64/debug-mochitest-e10s-2: RIXJ4v6NQOe2nQJ7BO45DA
+ test-linux1804-64/debug-mochitest-e10s-3: HxHn92NXSA-GfxEAzLFN7g
+ test-linux1804-64/debug-mochitest-e10s-4: SjyOb4LqRZWwVGVXPse8vA
+ test-linux1804-64/debug-mochitest-e10s-5: W7uG2UOOTpOMgQNGxLZsNA
+ test-linux1804-64/debug-mochitest-e10s-6: MjtDaZK7SMywZjyn0dxQQw
+ test-linux1804-64/debug-mochitest-e10s-7: PgTKjEetRcGZCVPXdPi1CA
+ test-linux1804-64/debug-mochitest-e10s-8: C1p0GhXsQRePg8y577aufA
+ test-linux1804-64/debug-mochitest-e10s-9: LQ9zhnwVSemNLg5UJbWZOA
+ test-linux1804-64/debug-mochitest-fis-e10s-1: Il8iKjSjRCC1kPnzxFEMkg
+ test-linux1804-64/debug-mochitest-fis-e10s-10: WZbhsViFR9ayw56hI5sxOA
+ test-linux1804-64/debug-mochitest-fis-e10s-11: SiylUc6ETcao_TLA7vizfg
+ test-linux1804-64/debug-mochitest-fis-e10s-12: UgfJylhtQ8evX1hHUTmrJw
+ test-linux1804-64/debug-mochitest-fis-e10s-13: NpvA-MhzTlKGs4Y9MiEwbA
+ test-linux1804-64/debug-mochitest-fis-e10s-14: ErLNhTRGTBSlbnrS5woMGQ
+ test-linux1804-64/debug-mochitest-fis-e10s-15: BwhwjZvpQEi9xM2UtVODzw
+ test-linux1804-64/debug-mochitest-fis-e10s-16: SFd-zqWuTZSA5oCk7-NaxQ
+ test-linux1804-64/debug-mochitest-fis-e10s-2: d0UFUCo0TraziaN-KDuZ4Q
+ test-linux1804-64/debug-mochitest-fis-e10s-3: JV8FD86gTMOIwjYnQhbIqA
+ test-linux1804-64/debug-mochitest-fis-e10s-4: ZFlqgTTfTl2Dow2Lj616Zw
+ test-linux1804-64/debug-mochitest-fis-e10s-5: L94I60NsRF-g7GtfcRAuEw
+ test-linux1804-64/debug-mochitest-fis-e10s-6: bZz8yOcDThyQ9Z2YEJA2fQ
+ test-linux1804-64/debug-mochitest-fis-e10s-7: cHtjKakMTB6-n634TjQNkA
+ test-linux1804-64/debug-mochitest-fis-e10s-8: YQxtURSGTHyjnEcZCeg9_g
+ test-linux1804-64/debug-mochitest-fis-e10s-9: fU1Du89-TY-ssnfEVc_Mkg
+ test-linux1804-64/debug-mochitest-gpu-e10s: bly4Z4tKSTeQsNIlChD9Tg
+ test-linux1804-64/debug-mochitest-media-e10s-1: Mbd_N9SbQce7gdnZGv6tfg
+ test-linux1804-64/debug-mochitest-media-e10s-2: ShkBs8CjT7WRxVNt0SJQeA
+ test-linux1804-64/debug-mochitest-media-e10s-3: cinoer-DR0Od5MQ7K6q_og
+ test-linux1804-64/debug-mochitest-media-fis-e10s-1: J4jRtAYbQ1GZbZlCm3MIeQ
+ test-linux1804-64/debug-mochitest-media-fis-e10s-2: a28Yg5VhQFa4pcZVBcLTJg
+ test-linux1804-64/debug-mochitest-media-fis-e10s-3: QwaD8kfpRUikKY1iqJpVOA
+ test-linux1804-64/debug-mochitest-media-spi-e10s-1: RJRx9XkjQWacZnrSeB-juA
+ test-linux1804-64/debug-mochitest-media-spi-e10s-2: AZPdOqm7SKe4Qc6W1M5tAw
+ test-linux1804-64/debug-mochitest-media-spi-e10s-3: VWH9F5lSSo-4QSpxzPxuNQ
+ test-linux1804-64/debug-mochitest-remote-e10s: QylEYESoSCmcUl3cgXrVCQ
+ test-linux1804-64/debug-mochitest-webgl1-core-e10s: KmgBf1kcS-ixwl2aRRunIw
+ test-linux1804-64/debug-mochitest-webgl1-core-fis-e10s: J2oXW6VES969qI1hDBNcbA
+ test-linux1804-64/debug-mochitest-webgl1-ext-e10s: Gd59svk_QburShEW5kpZHw
+ test-linux1804-64/debug-mochitest-webgl1-ext-fis-e10s: SxWKuaSYSbmJKHw7H5FGJA
+ test-linux1804-64/debug-mochitest-webgl2-core-e10s: YkvGpUfgTtmRxxyHLDQHUg
+ test-linux1804-64/debug-mochitest-webgl2-core-fis-e10s: JSUYOyERRtClYEZJnbrf_Q
+ test-linux1804-64/debug-mochitest-webgl2-ext-e10s-1: S67fWAa7QFGkLUdSWnHd7Q
+ test-linux1804-64/debug-mochitest-webgl2-ext-e10s-2: eFgKVMc2RiCKjajmmI7u0g
+ test-linux1804-64/debug-mochitest-webgl2-ext-e10s-3: INYDsRLTQx-fE3UzTuc8_g
+ test-linux1804-64/debug-mochitest-webgl2-ext-e10s-4: LkllFs3GR_2Th_3hAeLwSA
+ test-linux1804-64/debug-mochitest-webgl2-ext-fis-e10s-1: ELMAoTg7SDSTxh57Qqmitw
+ test-linux1804-64/debug-mochitest-webgl2-ext-fis-e10s-2: cI9ijdQjRfq5zc05aeNAPg
+ test-linux1804-64/debug-mochitest-webgl2-ext-fis-e10s-3: PG3l7dFoRpmdXJhsuNPP6g
+ test-linux1804-64/debug-mochitest-webgl2-ext-fis-e10s-4: cI3QWpxfRKie4afK30j1eQ
+ test-linux1804-64/debug-mochitest-webgpu-e10s: Jcx2Egu2Toaw-ToDWZsrnA
+ test-linux1804-64/debug-mochitest-webgpu-fis-e10s: Lm-CzHw-Rd-hPuLfLfaLIw
+ test-linux1804-64/debug-reftest-e10s-1: VBy1ROALQ_CdEQ2yrUTrvQ
+ test-linux1804-64/debug-reftest-e10s-2: aLUwzF55RqiGggSy_vAhbA
+ test-linux1804-64/debug-reftest-e10s-3: QWNPxgsbS3q6x6iKPeL_ZA
+ test-linux1804-64/debug-reftest-e10s-4: d65QYeysSWOLykY075PkwA
+ test-linux1804-64/debug-reftest-e10s-5: LoV1uBrhTm2yr2RcQdkB1Q
+ test-linux1804-64/debug-reftest-e10s-6: AOqng7G3RY-W_Jg2zC5mlg
+ test-linux1804-64/debug-reftest-e10s-7: OJMuErO5QIaiOKOfPZ4oAw
+ test-linux1804-64/debug-reftest-e10s-8: DUtKeWfnR1mZDq7DbDVY4Q
+ test-linux1804-64/debug-reftest-no-accel-e10s-1: KOPGKIjKRnarL7UCAgSaMA
+ test-linux1804-64/debug-reftest-no-accel-e10s-2: IVfHfXqARZeN3Yfn84aaZA
+ test-linux1804-64/debug-reftest-no-accel-e10s-3: GpV54vzRS3-fRkHTiwULaQ
+ test-linux1804-64/debug-reftest-no-accel-e10s-4: QZWh_k_vRfu9k3hkj5qtUA
+ test-linux1804-64/debug-reftest-no-accel-e10s-5: PZ99VRXcQK6g1Ck70uHn-g
+ test-linux1804-64/debug-reftest-no-accel-e10s-6: YisXE0p6QBikoJ1L-Op8CA
+ test-linux1804-64/debug-reftest-no-accel-e10s-7: CwDbqpRJSCio_htPQuB3Gg
+ test-linux1804-64/debug-reftest-no-accel-e10s-8: Znq6G1T6RhOlQwFd09g3xg
+ test-linux1804-64/debug-telemetry-tests-client-e10s: fwtwXykVQNeTw8vCntyUxQ
+ test-linux1804-64/debug-web-platform-tests-crashtests-e10s: GRMXj80dSgmVszDYPOUgsg
+ test-linux1804-64/debug-web-platform-tests-e10s-1: PL0xaZCPS4moSVbTksBG0Q
+ test-linux1804-64/debug-web-platform-tests-e10s-10: P2sPA_ypRcKzvVFGLY_jpA
+ test-linux1804-64/debug-web-platform-tests-e10s-11: Z9HsDEE5TAe2QdPK4UMvsQ
+ test-linux1804-64/debug-web-platform-tests-e10s-12: eRcbivODQe220vIS2WMccA
+ test-linux1804-64/debug-web-platform-tests-e10s-13: If4nL8skS-emIPcOar0ruQ
+ test-linux1804-64/debug-web-platform-tests-e10s-14: AQExuFIwQnCGx99rBCOoZQ
+ test-linux1804-64/debug-web-platform-tests-e10s-15: dV-6e1evSnaj7tFaeEUNHg
+ test-linux1804-64/debug-web-platform-tests-e10s-16: K77c3vdxRSSnR2Q76U7qNA
+ test-linux1804-64/debug-web-platform-tests-e10s-17: IXmNTm8oTjulMOOqg88F2g
+ test-linux1804-64/debug-web-platform-tests-e10s-18: dBe_X_cWRpWZnoazExHfNg
+ test-linux1804-64/debug-web-platform-tests-e10s-2: aDBAcrV7QtGcpH7a7EjkIA
+ test-linux1804-64/debug-web-platform-tests-e10s-3: RJoDWM3kSg-4QDJPy9e-lw
+ test-linux1804-64/debug-web-platform-tests-e10s-4: PRAzHDn5ROavk-oe6Ofozw
+ test-linux1804-64/debug-web-platform-tests-e10s-5: FHiQfjs9S96CUbJiK81o6g
+ test-linux1804-64/debug-web-platform-tests-e10s-6: dv1HU3jcSdSoNUhyY2ynEA
+ test-linux1804-64/debug-web-platform-tests-e10s-7: INDbq9l9Ro-1Vzge4hO8_Q
+ test-linux1804-64/debug-web-platform-tests-e10s-8: JSmbZK9zSgm8Wyoq5YJ-xw
+ test-linux1804-64/debug-web-platform-tests-e10s-9: XrACNUM-RoiPs8BcqoCoEg
+ test-linux1804-64/debug-web-platform-tests-reftests-e10s-1: UhcZh5c6TH2UrA3TIz0VHA
+ test-linux1804-64/debug-web-platform-tests-reftests-e10s-2: Eke7R4TFQ0WbSOJ0Pj7oDg
+ test-linux1804-64/debug-web-platform-tests-reftests-e10s-3: WTo1J3ZbRXCyGzuvlDzBpg
+ test-linux1804-64/debug-web-platform-tests-reftests-e10s-4: OUSgG4C0Rcu2D_sTR5mGhA
+ test-linux1804-64/debug-xpcshell-e10s-1: PE4uLVoDTVuCaYhAE0Kxhg
+ test-linux1804-64/debug-xpcshell-e10s-2: V07yFVvUQHij6wMDfdXymw
+ test-linux1804-64/debug-xpcshell-e10s-3: Kb-9MV5_SPiigWcZOyzXtw
+ test-linux1804-64/debug-xpcshell-e10s-4: BvMr2i6cRD2ZrtwhTWQZ_w
+ test-linux1804-64/debug-xpcshell-e10s-5: Eg_DrZ8xR1-_BJhvR-F44g
+ test-linux1804-64/debug-xpcshell-e10s-6: V3NjNt41SwGcqB1q4hAylQ
+ test-linux1804-64/opt-awsy-base-e10s: b2fXIXzZTM2sAMtjvzp1Rw
+ test-linux1804-64/opt-awsy-e10s: c39JKq5LQwGYayNkBVP9TQ
+ test-linux1804-64/opt-awsy-tp6-e10s: Hv0z5zYMRlSQNwEDrw4aCw
+ test-linux1804-64/opt-browser-screenshots-e10s: WSHIWq4-S8-GGBiSEzZAcw
+ test-linux1804-64/opt-cppunit-1proc: CD41JyX-TDSZVDbmLT6EvQ
+ test-linux1804-64/opt-crashtest-e10s: cX_XFnReRQ2OLJHxNd0wNA
+ test-linux1804-64/opt-firefox-ui-functional-local-e10s: Ki62tHbLS9aKFhYbzGOtmg
+ test-linux1804-64/opt-firefox-ui-functional-remote-e10s: KMon6iADTleGJ12a6DbRRw
+ test-linux1804-64/opt-gtest-1proc: I1KXCjCORjOIQ4jCzMMvCA
+ test-linux1804-64/opt-jsreftest-e10s-1: PXf_H2m_RjegtrtMyKlm4w
+ test-linux1804-64/opt-jsreftest-e10s-2: U-8xKFwlQfaCBVIBiVWTsg
+ test-linux1804-64/opt-jsreftest-e10s-3: BbeN76C9TC-J3NQnGVwFgw
+ test-linux1804-64/opt-mochitest-a11y-1proc: ZFV6nzWNQ1yN2grIn_4gmg
+ test-linux1804-64/opt-mochitest-browser-chrome-e10s-1: WdF5eZskRUywjCHacY806w
+ test-linux1804-64/opt-mochitest-browser-chrome-e10s-2: fCq7FTb7RG-Tm_Dr2umlIA
+ test-linux1804-64/opt-mochitest-browser-chrome-e10s-3: QmxBv38IQIKiKDBd_I8WSQ
+ test-linux1804-64/opt-mochitest-browser-chrome-e10s-4: PwInIkICSReL0DytziJPLA
+ test-linux1804-64/opt-mochitest-browser-chrome-e10s-5: IHkn1lBLRnKf2QOg6eFgSQ
+ test-linux1804-64/opt-mochitest-browser-chrome-e10s-6: dy4qnl0_SMKCk8PNTHGv0A
+ test-linux1804-64/opt-mochitest-browser-chrome-e10s-7: K3UT2YD2ShepxE5H8o6_LQ
+ test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-1: IlPl_4m4SJ6k_-Co6fUnzw
+ test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-2: PU0oKpCdTQ-azU9AUJl88A
+ test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-3: JoS_7RcUTgqNaX1UPcMobw
+ test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-4: BLTO7yngRTONr_u39nlHmw
+ test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-5: NjoJMsJ3QJebflNgfkXKcw
+ test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-6: avjSp4WCTbW76cXMt00Ttg
+ test-linux1804-64/opt-mochitest-browser-chrome-fis-e10s-7: S0XDul_ZQm2VHktyBXwnTw
+ test-linux1804-64/opt-mochitest-chrome-1proc-1: WLzltaUSR4CSTgf1dQNYFg
+ test-linux1804-64/opt-mochitest-chrome-1proc-2: Htuq3mZGS9WHaKJ_Zw1QNA
+ test-linux1804-64/opt-mochitest-devtools-chrome-e10s-1: MVisko2lSwyeAZ3XU_2uGA
+ test-linux1804-64/opt-mochitest-devtools-chrome-e10s-2: YsXn1bKxSJ6sPq-5hIOPhg
+ test-linux1804-64/opt-mochitest-devtools-chrome-e10s-3: PTHQGQEoRaS94sjZLP5QEg
+ test-linux1804-64/opt-mochitest-devtools-chrome-e10s-4: SnJI7ZWWRyGDor251oaDIg
+ test-linux1804-64/opt-mochitest-devtools-chrome-e10s-5: LjCnW2UZRQ2rxZDniwd-KQ
+ test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-1: TfxtW-VETfiPZPP2rd6X-A
+ test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-2: f_UW3MDpQx6c7xYRYb_TgA
+ test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-3: UCVemMKARbGClJFK7E069A
+ test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-4: B-3BpqavS2ur8WlFLhZeqw
+ test-linux1804-64/opt-mochitest-devtools-chrome-fis-e10s-5: H_xsmiJ5R1uDL000YzQ7Lw
+ test-linux1804-64/opt-mochitest-e10s-1: LVbsLRSzSsiK8DbG05etVA
+ test-linux1804-64/opt-mochitest-e10s-2: YYFQb8rgRPe6AUPRBJKczg
+ test-linux1804-64/opt-mochitest-e10s-3: RQ0xfn7YQbSv1Po5QNL_1A
+ test-linux1804-64/opt-mochitest-e10s-4: dFcAM7LvQw-eQlR-J5yoxA
+ test-linux1804-64/opt-mochitest-e10s-5: WG-lDu09QZGyGGqAMrR0TQ
+ test-linux1804-64/opt-mochitest-fis-e10s-1: FQ0cKxOqRK2FcNl9BRHxcg
+ test-linux1804-64/opt-mochitest-fis-e10s-2: CTzMKThQSGuBr7lHoYt_aQ
+ test-linux1804-64/opt-mochitest-fis-e10s-3: bG499YFjQqKP3Ipn5hFbjg
+ test-linux1804-64/opt-mochitest-fis-e10s-4: bZsa928oRaOY9-3QnU-RsA
+ test-linux1804-64/opt-mochitest-fis-e10s-5: b4ZU0LwTTr-uKQRaXU3PiQ
+ test-linux1804-64/opt-mochitest-gpu-e10s: bK8np4KmRW-2raCZn3eB0Q
+ test-linux1804-64/opt-mochitest-media-e10s-1: P4e3QJa8TByCeAei-Qi-7g
+ test-linux1804-64/opt-mochitest-media-e10s-2: c6LtkDhLR3u86gzTGrlOQA
+ test-linux1804-64/opt-mochitest-media-e10s-3: VtGwJvUQQb-IErKAtkKLDg
+ test-linux1804-64/opt-mochitest-media-fis-e10s-1: RWGXrD2zQFOO18DvT4skxA
+ test-linux1804-64/opt-mochitest-media-fis-e10s-2: TiYPed6ETYaXLj2t1Epabg
+ test-linux1804-64/opt-mochitest-media-fis-e10s-3: WQyIzyIISSqA_InoUan0XA
+ test-linux1804-64/opt-mochitest-media-spi-e10s-1: I3bAGuwzQuCiFO3eyPDHTA
+ test-linux1804-64/opt-mochitest-media-spi-e10s-2: MYe5qm5bRY2o6Jv3cGY90A
+ test-linux1804-64/opt-mochitest-media-spi-e10s-3: ZBICL2VMTjC1tRjcqCxciQ
+ test-linux1804-64/opt-mochitest-plain-headless-e10s-1: bknkspeISqyHM1Wj5KU2Eg
+ test-linux1804-64/opt-mochitest-plain-headless-e10s-2: QPZpxEvsSkSBUmdx_K_ptQ
+ test-linux1804-64/opt-mochitest-plain-headless-e10s-3: dn9miH-FQfKu1qW6ETlRpg
+ test-linux1804-64/opt-mochitest-plain-headless-e10s-4: YrY7eskHQhelgB9T32v9Hw
+ test-linux1804-64/opt-mochitest-plain-headless-e10s-5: dQ4_kIQnSnmWStpOeKg52Q
+ test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-1: bs3eKCE0T46gMS3CiHGDEQ
+ test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-2: WfqVWIppSSyGasQh9DDYyA
+ test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-3: LxYVdpO5TuW95_IH9hs3Zg
+ test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-4: fqn88jnJQWyFMi9ydxM1QA
+ test-linux1804-64/opt-mochitest-plain-headless-fis-e10s-5: EJnQYDF8S9OuqUEqy8sybg
+ test-linux1804-64/opt-mochitest-remote-e10s: baCWxsBwSbqvawluby1VIQ
+ test-linux1804-64/opt-mochitest-webgl1-core-e10s: R0bnbn7IQtCIS89GmZ4TfA
+ test-linux1804-64/opt-mochitest-webgl1-core-fis-e10s: R7UQjbb3Rrq7_zjK51ds_A
+ test-linux1804-64/opt-mochitest-webgl1-ext-e10s: IN0dhxlfQXqLLFjlP-dCcQ
+ test-linux1804-64/opt-mochitest-webgl1-ext-fis-e10s: FgA-HQ9iSv2GAo0vTt84mA
+ test-linux1804-64/opt-mochitest-webgl2-core-e10s: RWAM3TjQQFOUEMrzh2lOVw
+ test-linux1804-64/opt-mochitest-webgl2-core-fis-e10s: PF2Rx_iLRYeZdWc5zDUItw
+ test-linux1804-64/opt-mochitest-webgl2-ext-e10s-1: XRS8b3A9Re-L5vc2q8OfUA
+ test-linux1804-64/opt-mochitest-webgl2-ext-e10s-2: bbWkvfnuQu2X1hBcfezlig
+ test-linux1804-64/opt-mochitest-webgl2-ext-e10s-3: V1_FGlCPQq628g-DEDIVIQ
+ test-linux1804-64/opt-mochitest-webgl2-ext-e10s-4: bGIPraEzT-uUxc6HPdtjfQ
+ test-linux1804-64/opt-mochitest-webgl2-ext-fis-e10s-1: Fvi4L6jYSMSJYoMuWO7Dzw
+ test-linux1804-64/opt-mochitest-webgl2-ext-fis-e10s-2: DmUAQeSQRzqgj5_I11sBdQ
+ test-linux1804-64/opt-mochitest-webgl2-ext-fis-e10s-3: VFZHxV-DSLCDzzbu6oWrhg
+ test-linux1804-64/opt-mochitest-webgl2-ext-fis-e10s-4: flfepw9kT3OOIJpntglcTQ
+ test-linux1804-64/opt-mochitest-webgpu-e10s: cYIXiELrR8mP_iXljYYnYg
+ test-linux1804-64/opt-mochitest-webgpu-fis-e10s: WWf3usv9Q7euwILTGFN0KQ
+ test-linux1804-64/opt-reftest-e10s-1: Ine-Ou_qQ-y_-rYhyE-iZw
+ test-linux1804-64/opt-reftest-e10s-2: da_8AFekQrWRS1uzVQTXBw
+ test-linux1804-64/opt-reftest-e10s-3: fEZ5DjKURd6SZVZ_qdlEFg
+ test-linux1804-64/opt-reftest-e10s-4: dMsv5XwkQwGnO9hqvXk4KA
+ test-linux1804-64/opt-reftest-e10s-5: Q8MKiNitQKGSxmz7U4F3kg
+ test-linux1804-64/opt-reftest-no-accel-e10s-1: Uv_RoItqScaix8YqUSIMcQ
+ test-linux1804-64/opt-reftest-no-accel-e10s-2: NfwCJtwKSp6QskusnKpN1g
+ test-linux1804-64/opt-reftest-no-accel-e10s-3: WWJAmktgSXC8yD9FTxrOPg
+ test-linux1804-64/opt-reftest-no-accel-e10s-4: K6kStLXqQNCEuAwzQIYX6g
+ test-linux1804-64/opt-telemetry-tests-client-e10s: czVxbtP0Rr6-Ben-m_q1_w
+ test-linux1804-64/opt-test-verify-e10s-1: AcGxTjcfQxizCQ8Mgwew-w
+ test-linux1804-64/opt-test-verify-e10s-2: CM83ZmJ_SPGvphitUKvxYw
+ test-linux1804-64/opt-test-verify-gpu-e10s: SVapwTPYSmihWJJo8dFCzA
+ test-linux1804-64/opt-test-verify-wpt-e10s-1: TvLCaGd2RMumZqF5YcBzPg
+ test-linux1804-64/opt-test-verify-wpt-e10s-2: QerXbMxdQcG0b-5pNPa6dQ
+ test-linux1804-64/opt-test-verify-wpt-e10s-3: TAhpj2xlTSGkH355nlQP_w
+ test-linux1804-64/opt-web-platform-tests-crashtests-e10s: QnC9dCVITViXdSc93Tl0Cg
+ test-linux1804-64/opt-web-platform-tests-e10s-1: I6gDRS2rRC6yKSKADtD-yA
+ test-linux1804-64/opt-web-platform-tests-e10s-10: Bnn46WDSSHqd0Hy4HWPv4A
+ test-linux1804-64/opt-web-platform-tests-e10s-11: PypTvnGETr2FVcs1D2lE2Q
+ test-linux1804-64/opt-web-platform-tests-e10s-12: MthEkHdFTyGvB7T_HVrjRA
+ test-linux1804-64/opt-web-platform-tests-e10s-2: WV8K84sPTZuz-34cek5NEg
+ test-linux1804-64/opt-web-platform-tests-e10s-3: UE5x2jo0Tl6pB8e8_Dwq1Q
+ test-linux1804-64/opt-web-platform-tests-e10s-4: O1E7v7QmRrKNTi8yXmdsZQ
+ test-linux1804-64/opt-web-platform-tests-e10s-5: GDbm7txMSA-lYVnl5XgshQ
+ test-linux1804-64/opt-web-platform-tests-e10s-6: K1ncJOZZRvmeStS3qgi1ww
+ test-linux1804-64/opt-web-platform-tests-e10s-7: HvgWLGFtQtKLA2GokXu-IQ
+ test-linux1804-64/opt-web-platform-tests-e10s-8: N2c6SDWFS3yMtWo7AfeIwg
+ test-linux1804-64/opt-web-platform-tests-e10s-9: YX7TxWsRQTWGvi2LdIQkKQ
+ test-linux1804-64/opt-web-platform-tests-reftests-e10s-1: ADG8i3yfTFqgm3NGaZPTMw
+ test-linux1804-64/opt-web-platform-tests-reftests-e10s-2: JH8ZnGT0Skqnl8xhF2cLqQ
+ test-linux1804-64/opt-web-platform-tests-reftests-e10s-3: FIuWo_VzQsaz368CCfNWBA
+ test-linux1804-64/opt-xpcshell-e10s-1: PiZh2zZuQ4u0lgu1ZcPSrQ
+ test-linux1804-64/opt-xpcshell-e10s-2: f-PEhnCcT9KLsWAvKxj3yQ
+ test-linux1804-64/opt-xpcshell-e10s-3: SibVIiSmSzqf5E1EW13CbA
+ test-linux1804-64/opt-xpcshell-e10s-4: LwEms-g8SH6vhyubR8XZpA
+ test-linux1804-64/opt-xpcshell-e10s-5: ZkWbMFWIT0mSNZRpt4D1rA
+ test-linux64-asan/opt-marionette-e10s: d_Tefu_DTAeiFqIGAc293g
+ test-linux64-asan/opt-web-platform-tests-wdspec-e10s-1: JczcAHR1ScyEBbz4esp3Kw
+ test-linux64-asan/opt-web-platform-tests-wdspec-e10s-2: U16MpH7VSfGs7xSO55zN7w
+ test-linux64-asan/opt-web-platform-tests-wdspec-e10s-3: IRBqWOY3SWi4H-AVbskYHw
+ test-linux64-ccov/opt-marionette-e10s: YkmZ9uchSaOZMoxjBL6Zow
+ test-linux64-ccov/opt-web-platform-tests-wdspec-e10s-1: FjKKxPKkRlKiDEXMhhugww
+ test-linux64-ccov/opt-web-platform-tests-wdspec-e10s-2: SyU6hP1CRM2538CLHZmVJw
+ test-linux64-ccov/opt-web-platform-tests-wdspec-e10s-3: OlQVEPzzQQ-cLnN_wbRiyQ
+ test-linux64-ccov/opt-web-platform-tests-wdspec-e10s-4: FnuH_F4zQHm-F5ay8009ww
+ test-linux64-qr/debug-web-platform-tests-wdspec-e10s-1: GwGfH120TQqafP_Z7Dd4Fw
+ test-linux64-qr/debug-web-platform-tests-wdspec-e10s-2: F9Bn_vvZQFSw0jOgks-HKw
+ test-linux64-qr/debug-web-platform-tests-wdspec-e10s-3: PpZ4BdgmRMifnVz9vGkaTA
+ test-linux64-qr/debug-web-platform-tests-wdspec-fis-e10s-1: FyHR-c5hTr-JSbAu9lSk8w
+ test-linux64-qr/debug-web-platform-tests-wdspec-fis-e10s-2: NNbWKtz9S76OYiGwtA7rbA
+ test-linux64-qr/debug-web-platform-tests-wdspec-fis-e10s-3: JPQ3U_6BQIO6Yt6F0RHqYA
+ test-linux64-qr/opt-raptor-ares6-firefox-e10s: Lkd6xpPPSBiqCRUDwYLEew
+ test-linux64-qr/opt-raptor-assorted-dom-firefox-e10s: ALKw9cP9StSFpzrvBmRQog
+ test-linux64-qr/opt-raptor-jetstream2-firefox-e10s: OjiqXSqQT0yzeKlGfJROaw
+ test-linux64-qr/opt-raptor-motionmark-animometer-firefox-e10s: GB0bryw6Tm-AVUoq-_Pr2Q
+ test-linux64-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: STl_CeLcTPSZP7uNJijTHg
+ test-linux64-qr/opt-raptor-speedometer-firefox-e10s: X7eA0L6LQPuMyVX5IfrL8w
+ test-linux64-qr/opt-raptor-stylebench-firefox-e10s: AEXy9GywSX-tYmbfo_uNQg
+ test-linux64-qr/opt-raptor-sunspider-firefox-e10s: Va0LUVL9TGmwJm45rFhF1Q
+ test-linux64-qr/opt-raptor-tp6-1-firefox-cold-e10s: I5jOVXYBR_qLQRos7oOyMw
+ test-linux64-qr/opt-raptor-tp6-1-firefox-e10s: ElXBCnB6TC6QJ6xfJu2izQ
+ test-linux64-qr/opt-raptor-tp6-10-firefox-cold-e10s: cqFUG93ESH-6OhNUPjeqow
+ test-linux64-qr/opt-raptor-tp6-10-firefox-e10s: NrYby8jjTgKtRwPuoX_89w
+ test-linux64-qr/opt-raptor-tp6-11-firefox-cold-e10s: A5v1T6mATTO1DqlO5nZRXg
+ test-linux64-qr/opt-raptor-tp6-12-firefox-cold-e10s: F4YsuSRiRDGdyCksM8-W0w
+ test-linux64-qr/opt-raptor-tp6-13-firefox-cold-e10s: AZqAvm1sSgKPTuozrNnPIQ
+ test-linux64-qr/opt-raptor-tp6-14-firefox-cold-e10s: bxJ_2e5RSgKbw5BQsP2PpA
+ test-linux64-qr/opt-raptor-tp6-15-firefox-cold-e10s: Ix4itBJGTe-W187EhTPJHw
+ test-linux64-qr/opt-raptor-tp6-16-firefox-cold-e10s: cjfF5wRVTVS7nfqhXEKaGw
+ test-linux64-qr/opt-raptor-tp6-17-firefox-cold-e10s: Kyvx9YmWRoeEUvXUwDG3yQ
+ test-linux64-qr/opt-raptor-tp6-18-firefox-cold-e10s: QwSeO24RTY2E8ayglnezIw
+ test-linux64-qr/opt-raptor-tp6-19-firefox-cold-e10s: HnQIaM1IQPWOVKXgr1qSPA
+ test-linux64-qr/opt-raptor-tp6-2-firefox-cold-e10s: QDAnTaE7QYma_ZbGZY6cbQ
+ test-linux64-qr/opt-raptor-tp6-2-firefox-e10s: ZauV99ybS1eAW2YWVH6yAg
+ test-linux64-qr/opt-raptor-tp6-20-firefox-cold-e10s: eWo0DJzaR3uobgV8QY5jRw
+ test-linux64-qr/opt-raptor-tp6-21-firefox-cold-e10s: A8iJV3pZQVicJCBPSa8Jlg
+ test-linux64-qr/opt-raptor-tp6-22-firefox-cold-e10s: VwBf3jRATYCs_5Km9NPKaw
+ test-linux64-qr/opt-raptor-tp6-23-firefox-cold-e10s: AZaaKsm4QVC3dRRIDCn0gw
+ test-linux64-qr/opt-raptor-tp6-24-firefox-cold-e10s: d8HtGO9_Rg-uqGe-0EYdxg
+ test-linux64-qr/opt-raptor-tp6-25-firefox-cold-e10s: S0oQVHWaTB2UFuyHbxqU-w
+ test-linux64-qr/opt-raptor-tp6-26-firefox-cold-e10s: ekPZFBbhR--B59HqYKTXoQ
+ test-linux64-qr/opt-raptor-tp6-27-firefox-cold-e10s: Qn7YeMQUS2aNitVvniWnvw
+ test-linux64-qr/opt-raptor-tp6-28-firefox-cold-e10s: fDhzcmsNQimDydyHINJ5hg
+ test-linux64-qr/opt-raptor-tp6-29-firefox-cold-e10s: Xw4mS3ezRJCg3AQGkYiBsg
+ test-linux64-qr/opt-raptor-tp6-3-firefox-cold-e10s: VAuypSVPQlav-8FJxmEUEw
+ test-linux64-qr/opt-raptor-tp6-3-firefox-e10s: PJn7ACzySAigvBIlwHNu6w
+ test-linux64-qr/opt-raptor-tp6-30-firefox-cold-e10s: E9U1k8zQT9WmMV1unAHbqA
+ test-linux64-qr/opt-raptor-tp6-4-firefox-cold-e10s: CMoaSr6jSH2laojbZMUA7A
+ test-linux64-qr/opt-raptor-tp6-4-firefox-e10s: dew0AlCaTbG2i308VAWZjg
+ test-linux64-qr/opt-raptor-tp6-5-firefox-cold-e10s: B0kSdPH-Q1eupRN9woASOA
+ test-linux64-qr/opt-raptor-tp6-5-firefox-e10s: KcB-PjjnT-usIPTsa6hPog
+ test-linux64-qr/opt-raptor-tp6-6-firefox-cold-e10s: Zl73y4XRTeWWDuEU0zZTTg
+ test-linux64-qr/opt-raptor-tp6-6-firefox-e10s: JelyKVn3R4OlipUsPeULSw
+ test-linux64-qr/opt-raptor-tp6-7-firefox-cold-e10s: W8gtkEjzT-q69_A9d7yOYA
+ test-linux64-qr/opt-raptor-tp6-7-firefox-e10s: JVjGmK7qRgqJRGbaFyXySQ
+ test-linux64-qr/opt-raptor-tp6-8-firefox-cold-e10s: AFIt8OuITHuyUdGr9qsZaA
+ test-linux64-qr/opt-raptor-tp6-8-firefox-e10s: bsAxXZf0Sv2YQvLa3DYQNA
+ test-linux64-qr/opt-raptor-tp6-9-firefox-cold-e10s: GSV1ZxmBQziXLHjLJ_eGDw
+ test-linux64-qr/opt-raptor-tp6-9-firefox-e10s: ATtrbXXHRQavLcxqamQgEA
+ test-linux64-qr/opt-raptor-tp6-binast-1-firefox-e10s: AXg2jeqAREW4OW_HlTNv1Q
+ test-linux64-qr/opt-raptor-unity-webgl-firefox-e10s: Fd3KGOW9TyqV-E-CBfPnXw
+ test-linux64-qr/opt-raptor-wasm-godot-baseline-firefox-e10s: Auk_JWigStquuwLnQ5Su9Q
+ test-linux64-qr/opt-raptor-wasm-godot-cranelift-firefox-e10s: JW2PwagkT2anMPkqr4X7Lw
+ test-linux64-qr/opt-raptor-wasm-godot-firefox-e10s: BmUpDVvTQmqjC_jlgGZ-fQ
+ test-linux64-qr/opt-raptor-wasm-godot-ion-firefox-e10s: YPv6yq33TRyjihk7ll3R-g
+ test-linux64-qr/opt-raptor-wasm-misc-baseline-firefox-e10s: VlSyG8cJQPej1gTaWLVBuw
+ test-linux64-qr/opt-raptor-wasm-misc-cranelift-firefox-e10s: KxWa-r0vS_GFW-QvVH36cg
+ test-linux64-qr/opt-raptor-wasm-misc-firefox-e10s: QNyWGXh_R4GUA0DN06Khtw
+ test-linux64-qr/opt-raptor-wasm-misc-ion-firefox-e10s: YQXGZlToR-qqzZNb0sUnEw
+ test-linux64-qr/opt-raptor-webaudio-firefox-e10s: QUxQYzqLQDOjBod51Eq07A
+ test-linux64-qr/opt-raptor-youtube-playback-firefox-e10s: NC_aLJdPT3WwkJfmS8eSnA
+ test-linux64-qr/opt-talos-chrome-e10s: PWfl9-VJRkOovMmCcN6iBg
+ test-linux64-qr/opt-talos-damp-e10s: RPhFisqFSTOYvAJC5n3-hQ
+ test-linux64-qr/opt-talos-dromaeojs-e10s: Jm9Zj6DTSFWmOzVFLPo2Pg
+ test-linux64-qr/opt-talos-g1-e10s: Qfg96kHxQFi5O2DbddfLAg
+ test-linux64-qr/opt-talos-g3-e10s: Pg-RiDncQhuQg0faGKFFng
+ test-linux64-qr/opt-talos-g4-e10s: X8tLriY_SDKG370z2cbpgg
+ test-linux64-qr/opt-talos-g5-e10s: GLb0Ew1CQQ-SDjOdRk9ZpA
+ test-linux64-qr/opt-talos-other-e10s: ShOhhPpCSa6c0QzttN9RYg
+ test-linux64-qr/opt-talos-perf-reftest-e10s: fi2KGd1QQqqC8uMnh7VEZQ
+ test-linux64-qr/opt-talos-perf-reftest-singletons-e10s: AOqVhmqNT2aaStxi1W99Ug
+ test-linux64-qr/opt-talos-realworld-webextensions-e10s: F3A-3VAVT2yjilfrpWhLOg
+ test-linux64-qr/opt-talos-sessionrestore-many-windows-e10s: GXCzjEyUTH-REPWkFaE4DA
+ test-linux64-qr/opt-talos-svgr-e10s: G5mk3T34Rpe9sOSaTJihSg
+ test-linux64-qr/opt-talos-tabswitch-e10s: JkNFsnc2RLOtIxxWXIFu7g
+ test-linux64-qr/opt-talos-tp5o-e10s: G0WJ5_10QMOb2LKnlUrDuA
+ test-linux64-qr/opt-talos-webgl-e10s: Qwp0DLg3R2C1D3Lh-DnIjg
+ test-linux64-qr/opt-web-platform-tests-wdspec-e10s-1: UEZq8jSfR0qFEissTW5JDQ
+ test-linux64-qr/opt-web-platform-tests-wdspec-e10s-2: GTozRhAbS6WP2JI12IOv9g
+ test-linux64-qr/opt-web-platform-tests-wdspec-e10s-3: EmXQwxKXQHK7bLyH14qqAA
+ test-linux64-qr/opt-web-platform-tests-wdspec-fis-e10s-1: EnuW8MkBTgmLWUqZWU9GXg
+ test-linux64-qr/opt-web-platform-tests-wdspec-fis-e10s-2: cfgfo27dSqmpSsSq3ItdYQ
+ test-linux64-qr/opt-web-platform-tests-wdspec-fis-e10s-3: WfS4Z6z9SWatP-meIGx26w
+ test-linux64-shippable-qr/opt-raptor-ares6-firefox-e10s: UwVbOkPxRwuXg0rscdveMg
+ test-linux64-shippable-qr/opt-raptor-ares6-firefox-fis-e10s: NPpFkeGzScyNKxNHyPTONQ
+ test-linux64-shippable-qr/opt-raptor-assorted-dom-firefox-e10s: XVY_uiatR1aClhhQuQDiAA
+ test-linux64-shippable-qr/opt-raptor-assorted-dom-firefox-fis-e10s: VYVitYTWQJe1uk0VCRs3Wg
+ test-linux64-shippable-qr/opt-raptor-jetstream2-firefox-e10s: PLEgarGJSOmxggIw5u-3SA
+ test-linux64-shippable-qr/opt-raptor-jetstream2-firefox-fis-e10s: SkEGfYc4TZSyLpqvp4H2fg
+ test-linux64-shippable-qr/opt-raptor-motionmark-animometer-firefox-e10s: EYkSSpOnTfCbaANY9NQn_w
+ test-linux64-shippable-qr/opt-raptor-motionmark-animometer-firefox-fis-e10s: FX2nwTbXRgqPDjpT4UI09A
+ test-linux64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: NWqnIlV1SkWH0KFgHq4s_Q
+ test-linux64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-fis-e10s: QJ1Ya2CkQsC_YhWdaVwF2g
+ test-linux64-shippable-qr/opt-raptor-speedometer-firefox-e10s: YwmjJKbiQg2JhFHhaC9MSw
+ test-linux64-shippable-qr/opt-raptor-speedometer-firefox-fis-e10s: bNvBZ_11SiCWZdWr-jEGIg
+ test-linux64-shippable-qr/opt-raptor-stylebench-firefox-e10s: dP32C9SHRv67mBvIB9yoog
+ test-linux64-shippable-qr/opt-raptor-stylebench-firefox-fis-e10s: Gp8MZqiBRt6VzU1JJ8stuA
+ test-linux64-shippable-qr/opt-raptor-sunspider-firefox-e10s: aBl4hwhKQEyWUA8H1sJLSA
+ test-linux64-shippable-qr/opt-raptor-sunspider-firefox-fis-e10s: LUk22pzqQ2-0slX_hlptfw
+ test-linux64-shippable-qr/opt-raptor-tp6-1-firefox-cold-e10s: T380PgJUSwqG-8YpeH49Zg
+ test-linux64-shippable-qr/opt-raptor-tp6-1-firefox-e10s: TUkAAo8PTF-Runs1GhlRyA
+ test-linux64-shippable-qr/opt-raptor-tp6-1-firefox-fis-e10s: Y-HpuQhbQ5SVlfXvHdgJ-w
+ test-linux64-shippable-qr/opt-raptor-tp6-10-firefox-cold-e10s: JKcIlPdiQgSMb13uML_pqg
+ test-linux64-shippable-qr/opt-raptor-tp6-10-firefox-e10s: Xg8nM-3zQSeEtrpL6cfOew
+ test-linux64-shippable-qr/opt-raptor-tp6-10-firefox-fis-e10s: ReycFVInTAOgX_GdXGiCTA
+ test-linux64-shippable-qr/opt-raptor-tp6-11-firefox-cold-e10s: aTC7FICZRZylOU_U_X1A6A
+ test-linux64-shippable-qr/opt-raptor-tp6-12-firefox-cold-e10s: LAS3vA5VSHWn0312wZZHQQ
+ test-linux64-shippable-qr/opt-raptor-tp6-13-firefox-cold-e10s: exNoqv1rRk2EY1Jr9tC3yg
+ test-linux64-shippable-qr/opt-raptor-tp6-14-firefox-cold-e10s: egBsuRXhQNipqeJMnzWEBg
+ test-linux64-shippable-qr/opt-raptor-tp6-15-firefox-cold-e10s: EnSlT-ZwTu6hqXaxIRgjJQ
+ test-linux64-shippable-qr/opt-raptor-tp6-16-firefox-cold-e10s: K8EQOeNvTRCPJMITybRNVA
+ test-linux64-shippable-qr/opt-raptor-tp6-17-firefox-cold-e10s: SQDX9CxmR56jbbL5GPJTFQ
+ test-linux64-shippable-qr/opt-raptor-tp6-18-firefox-cold-e10s: fRDhJwpRS-ifeNwf8ReWzA
+ test-linux64-shippable-qr/opt-raptor-tp6-19-firefox-cold-e10s: Zffx61hjSK2AfQHP-ClvcQ
+ test-linux64-shippable-qr/opt-raptor-tp6-2-firefox-cold-e10s: A_r5Mjh1Q0yvB7ZZaOzQmg
+ test-linux64-shippable-qr/opt-raptor-tp6-2-firefox-e10s: DnFkTownRkOeuGK6OmJC6g
+ test-linux64-shippable-qr/opt-raptor-tp6-2-firefox-fis-e10s: A3YSD7nyQX6udUnTEYV3Ew
+ test-linux64-shippable-qr/opt-raptor-tp6-20-firefox-cold-e10s: bksHnzXcTP6DlFjdDfuBnA
+ test-linux64-shippable-qr/opt-raptor-tp6-21-firefox-cold-e10s: JcEINl-dQMiyjyVJmjxBxA
+ test-linux64-shippable-qr/opt-raptor-tp6-22-firefox-cold-e10s: VmBP-IWUSf6wNrlUyB3y-Q
+ test-linux64-shippable-qr/opt-raptor-tp6-23-firefox-cold-e10s: Cp7Pg_Z7Qim2E5RfrI7gHQ
+ test-linux64-shippable-qr/opt-raptor-tp6-24-firefox-cold-e10s: C6nwBWGASj6NZjY703LViw
+ test-linux64-shippable-qr/opt-raptor-tp6-25-firefox-cold-e10s: bmfBLy9aTAaEy5to83beKQ
+ test-linux64-shippable-qr/opt-raptor-tp6-26-firefox-cold-e10s: dWDfqFSdRoCWlq2pzq-6eA
+ test-linux64-shippable-qr/opt-raptor-tp6-27-firefox-cold-e10s: HCIjB-9ETcagnk-zKGnFCA
+ test-linux64-shippable-qr/opt-raptor-tp6-28-firefox-cold-e10s: bs3WoWIbQnCoiIy-qMYlZQ
+ test-linux64-shippable-qr/opt-raptor-tp6-29-firefox-cold-e10s: ZX9fa_j2RRmfGs6F7mH57w
+ test-linux64-shippable-qr/opt-raptor-tp6-3-firefox-cold-e10s: NGjgA3ujRiG8m4m3VyUZKg
+ test-linux64-shippable-qr/opt-raptor-tp6-3-firefox-e10s: WrG_qkE1RvyCx1C5GPuB9Q
+ test-linux64-shippable-qr/opt-raptor-tp6-3-firefox-fis-e10s: NdmtUdhCSMaRqhrK202v4A
+ test-linux64-shippable-qr/opt-raptor-tp6-30-firefox-cold-e10s: S8dax8MgQ6Kg4B3lARvrgQ
+ test-linux64-shippable-qr/opt-raptor-tp6-4-firefox-cold-e10s: aX0wBq8_RqSRBmD7PCjg7A
+ test-linux64-shippable-qr/opt-raptor-tp6-4-firefox-e10s: UfsigmdFRDiBfD15BURCGw
+ test-linux64-shippable-qr/opt-raptor-tp6-4-firefox-fis-e10s: QzlwTl7aQ8SyLn69NeV4nA
+ test-linux64-shippable-qr/opt-raptor-tp6-5-firefox-cold-e10s: J1AljdLOSY2lJ3NTDga1uQ
+ test-linux64-shippable-qr/opt-raptor-tp6-5-firefox-e10s: KcBjXNA3TTKcDvkFZf_oyQ
+ test-linux64-shippable-qr/opt-raptor-tp6-5-firefox-fis-e10s: ZLByg8zXTwWKPPIO-00m6A
+ test-linux64-shippable-qr/opt-raptor-tp6-6-firefox-cold-e10s: dV-8tRkbRgW6XDm2MtsHbw
+ test-linux64-shippable-qr/opt-raptor-tp6-6-firefox-e10s: aALnqnXnSHWEqmNu0-L7fQ
+ test-linux64-shippable-qr/opt-raptor-tp6-6-firefox-fis-e10s: dSYCuKrwRTirzwf1XYQeDQ
+ test-linux64-shippable-qr/opt-raptor-tp6-7-firefox-cold-e10s: aH_HJTlLTwymBfZfIcbg9g
+ test-linux64-shippable-qr/opt-raptor-tp6-7-firefox-e10s: KuklwL5LQ5qzGAUjixIslA
+ test-linux64-shippable-qr/opt-raptor-tp6-7-firefox-fis-e10s: YudYgwZHRlmHnBXjeJt11w
+ test-linux64-shippable-qr/opt-raptor-tp6-8-firefox-cold-e10s: CIdGwyWNQWO514BfJ3tS0g
+ test-linux64-shippable-qr/opt-raptor-tp6-8-firefox-e10s: MQtMyOYVS4GYSlymEulSyw
+ test-linux64-shippable-qr/opt-raptor-tp6-8-firefox-fis-e10s: YPAcoihETBiG361nacHe4g
+ test-linux64-shippable-qr/opt-raptor-tp6-9-firefox-cold-e10s: b_mXYhTDSoWKkineAewsxA
+ test-linux64-shippable-qr/opt-raptor-tp6-9-firefox-e10s: U9pPIq1aR7CsXWeGkxZVqA
+ test-linux64-shippable-qr/opt-raptor-tp6-9-firefox-fis-e10s: P6GAsYXMQbqa9WNx1M_g_Q
+ test-linux64-shippable-qr/opt-raptor-tp6-binast-1-firefox-e10s: O-m1oJkQTIq5RSjjO5KTLg
+ test-linux64-shippable-qr/opt-raptor-tp6-binast-1-firefox-fis-e10s: dyW4tWmzSNatLSuYo6CpFg
+ test-linux64-shippable-qr/opt-raptor-unity-webgl-firefox-e10s: c0lNAvrjSYOIZkWiLGMvCA
+ test-linux64-shippable-qr/opt-raptor-unity-webgl-firefox-fis-e10s: SxAKuoU9QUGWgxsHRB2shA
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-baseline-firefox-e10s: HBowrK19SByU-d58eEaQGw
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-baseline-firefox-fis-e10s: IvXYmX3mQR2toV6DeFTjKw
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-cranelift-firefox-e10s: FNsgROQ4Qo6GddMTL4cr5Q
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-cranelift-firefox-fis-e10s: XlKjbvnURWGAGBqRJJ7DiA
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-firefox-e10s: dM1FW6lET0um-XwlX9Dp-Q
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-firefox-fis-e10s: U0rGobDES6WPOd27UnMy7Q
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-ion-firefox-e10s: a625rjkaSWexGWturUJFSA
+ test-linux64-shippable-qr/opt-raptor-wasm-godot-ion-firefox-fis-e10s: V7i3Ir-1RxaK5jyAnul_3A
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-baseline-firefox-e10s: ENLPP6r9RbqpDFuA9kEl5g
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-baseline-firefox-fis-e10s: Az8vB-Y3QbKVshLTsPb2zg
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-cranelift-firefox-e10s: O5725izARJWKiWaJjgO1hg
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-cranelift-firefox-fis-e10s: KrY0awcoRyaj8xEvTy0UPQ
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-firefox-e10s: T4xQQXuBRxehNfv46c6dog
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-firefox-fis-e10s: VF5RNPyyTzGsQDO_oyGGuA
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-ion-firefox-e10s: cVFN8e67SRauU3n1xlzNCQ
+ test-linux64-shippable-qr/opt-raptor-wasm-misc-ion-firefox-fis-e10s: FjtZJDVXTWy2MXwlHlIbdg
+ test-linux64-shippable-qr/opt-raptor-webaudio-firefox-e10s: L59FcY9TQu-kHnKzNDeBHg
+ test-linux64-shippable-qr/opt-raptor-webaudio-firefox-fis-e10s: f1DCx9xuRnikeQsqRvRYRg
+ test-linux64-shippable-qr/opt-raptor-youtube-playback-firefox-e10s: KPb76s-LQvyufjwIKUvUBA
+ test-linux64-shippable-qr/opt-raptor-youtube-playback-firefox-fis-e10s: F6-QAgK7SmyeTIIQDAwFpw
+ test-linux64-shippable-qr/opt-talos-chrome-e10s: O_rD6Os1S_iGfMDv5B0U8w
+ test-linux64-shippable-qr/opt-talos-chrome-fis-e10s: esrk3CzxTVuecYAX71hISg
+ test-linux64-shippable-qr/opt-talos-damp-e10s: RrUPu9d9S8CNLDqLWhNlLA
+ test-linux64-shippable-qr/opt-talos-damp-fis-e10s: TXgVK7r5QICRHYxEvPxwpQ
+ test-linux64-shippable-qr/opt-talos-dromaeojs-e10s: QHPrxmE0QV6KcNqjY5scig
+ test-linux64-shippable-qr/opt-talos-dromaeojs-fis-e10s: EWRYqBF6Ti6nylPyGPdXTg
+ test-linux64-shippable-qr/opt-talos-g1-e10s: UW7Qf4ceTxewaJlghef5YA
+ test-linux64-shippable-qr/opt-talos-g1-fis-e10s: XtpHHg5VQeayORkvHBH-3g
+ test-linux64-shippable-qr/opt-talos-g3-e10s: Nc7T5hZLSjeBuJx5zt49LQ
+ test-linux64-shippable-qr/opt-talos-g3-fis-e10s: ImDBnFkqQR2Aykk6BdG9NQ
+ test-linux64-shippable-qr/opt-talos-g4-e10s: cLKtyuG0Q1u39iJMntSTag
+ test-linux64-shippable-qr/opt-talos-g4-fis-e10s: M3vCdK4IRXKXuyx4ZJqZxA
+ test-linux64-shippable-qr/opt-talos-g5-e10s: XDS0PbCCS3idiGC1ndLn-w
+ test-linux64-shippable-qr/opt-talos-g5-fis-e10s: ARWdyfKbTBqfnAW9QShBkA
+ test-linux64-shippable-qr/opt-talos-other-e10s: VU4K6tisSF-XNweZFM6Esg
+ test-linux64-shippable-qr/opt-talos-other-fis-e10s: MRw5EmQLTPKIc0uTY_QIzQ
+ test-linux64-shippable-qr/opt-talos-perf-reftest-e10s: CikiN2czSUu5Q4SVLN29mA
+ test-linux64-shippable-qr/opt-talos-perf-reftest-fis-e10s: eceogPpcRwa_aAul6K1vnw
+ test-linux64-shippable-qr/opt-talos-perf-reftest-singletons-e10s: T1c4AhrARsSA42XY8eFkGw
+ test-linux64-shippable-qr/opt-talos-perf-reftest-singletons-fis-e10s: U92Br9n_ST-5wKPjpTQQPA
+ test-linux64-shippable-qr/opt-talos-realworld-webextensions-e10s: Wg11Sz6uQgOWd_0KDFf-Cw
+ test-linux64-shippable-qr/opt-talos-realworld-webextensions-fis-e10s: ZGyUW9-lR7SRcEEuRv5c-Q
+ test-linux64-shippable-qr/opt-talos-sessionrestore-many-windows-e10s: U_DFmkf9TIqgi1eIgH1GhQ
+ test-linux64-shippable-qr/opt-talos-sessionrestore-many-windows-fis-e10s: ayMfpP_fRZu-6aRlVpCFfw
+ test-linux64-shippable-qr/opt-talos-svgr-e10s: SBOswgdUQHW2zVoWEbTMXw
+ test-linux64-shippable-qr/opt-talos-svgr-fis-e10s: W2lWpfyTQJSuBkzCO90OAw
+ test-linux64-shippable-qr/opt-talos-tabswitch-e10s: ZvwcU-oIQM2xDZCGeMK5lg
+ test-linux64-shippable-qr/opt-talos-tabswitch-fis-e10s: O2HrKmJTQsWbabiiNMl8XQ
+ test-linux64-shippable-qr/opt-talos-tp5o-e10s: FvmPaxlMR52Q6TTK5i4-Eg
+ test-linux64-shippable-qr/opt-talos-tp5o-fis-e10s: b1NfnvTsSkauyOLYUUi20w
+ test-linux64-shippable-qr/opt-talos-webgl-e10s: Hkbeg58LTre6dDLhFN-pWQ
+ test-linux64-shippable-qr/opt-talos-webgl-fis-e10s: exsGgwP-TkC6fwdSUEVjDg
+ test-linux64-shippable-qr/opt-web-platform-tests-wdspec-e10s-1: L77vVfc2QB2RSRM74kpaiA
+ test-linux64-shippable-qr/opt-web-platform-tests-wdspec-e10s-2: c2c_ri3ZQfqlnkMN0YhvxQ
+ test-linux64-shippable-qr/opt-web-platform-tests-wdspec-e10s-3: AnXLQgMXTYS_iNSG8pSdEg
+ test-linux64-shippable/opt-browsertime-tp6-chrome-cold-amazon-e10s: Jn78r1IARyKR35zF-pPKHA
+ test-linux64-shippable/opt-browsertime-tp6-firefox-amazon-e10s: Z9_Pq1ZOSWyWxc_0Y1LHLg
+ test-linux64-shippable/opt-browsertime-tp6-firefox-cold-amazon-e10s: MqeQ_SLrT6ejaXDJ35DGyQ
+ test-linux64-shippable/opt-browsertime-tp6-profiling-firefox-amazon-e10s: FHT8hVKNSBaxYNaSQ2xGZA
+ test-linux64-shippable/opt-browsertime-tp6-profiling-firefox-cold-amazon-e10s: SI1CehCuTpiB1aYI6SL6kw
+ test-linux64-shippable/opt-marionette-e10s: Cmc-rSb0S6G1P3KpqN3_iw
+ test-linux64-shippable/opt-raptor-ares6-firefox-e10s: VJ1LQ85XQha3iZKMZiMZhg
+ test-linux64-shippable/opt-raptor-ares6-firefox-profiling-e10s: fxzQA_gDToaHyToKju-6dg
+ test-linux64-shippable/opt-raptor-assorted-dom-firefox-e10s: X8-cj0lIQYiI0aKPO72PNw
+ test-linux64-shippable/opt-raptor-assorted-dom-firefox-profiling-e10s: Zm5FPl9OQyCceZlCgbLv-w
+ test-linux64-shippable/opt-raptor-jetstream2-firefox-e10s: XRotk7-JS2KDjBRbaTJBug
+ test-linux64-shippable/opt-raptor-jetstream2-firefox-profiling-e10s: O-8RF_w4SDWOgwA00X59Hw
+ test-linux64-shippable/opt-raptor-motionmark-animometer-firefox-e10s: QvU40WshSTW25kTlaj5GlA
+ test-linux64-shippable/opt-raptor-motionmark-animometer-firefox-profiling-e10s: RT1oOj7hRbSzeU6SJ4QQKg
+ test-linux64-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: Y5zQY_NKQcCkoGrMfNOC0g
+ test-linux64-shippable/opt-raptor-motionmark-htmlsuite-firefox-profiling-e10s: e6YvCwNHQoK86pbPoNLcEQ
+ test-linux64-shippable/opt-raptor-speedometer-firefox-e10s: OvT5xruGRhS1zZYPObVHJQ
+ test-linux64-shippable/opt-raptor-speedometer-firefox-profiling-e10s: T3I5Q1JjQVSrEQ4KsDwFRw
+ test-linux64-shippable/opt-raptor-stylebench-firefox-e10s: VGRFJ1GLQb2GFPKtMj1h-A
+ test-linux64-shippable/opt-raptor-stylebench-firefox-profiling-e10s: B42AwCjrQyi33Ht2GgNR3g
+ test-linux64-shippable/opt-raptor-sunspider-firefox-e10s: KbmHks2_RQOJUPad2rZgmg
+ test-linux64-shippable/opt-raptor-sunspider-firefox-profiling-e10s: f1elsQ2TSBCSNzBjnBCRlw
+ test-linux64-shippable/opt-raptor-tp6-1-firefox-cold-e10s: QzPL0X_zRZijgG_KSAQDrQ
+ test-linux64-shippable/opt-raptor-tp6-1-firefox-e10s: Ki13O8lkSneklZm_P5qB4A
+ test-linux64-shippable/opt-raptor-tp6-1-firefox-profiling-e10s: Q09OINsfRL-1C4-Oqd440A
+ test-linux64-shippable/opt-raptor-tp6-10-firefox-cold-e10s: CCsXFKI1TKiFAEgroQEmEw
+ test-linux64-shippable/opt-raptor-tp6-10-firefox-e10s: BwOJPP1CQOSmMjRTweP_eA
+ test-linux64-shippable/opt-raptor-tp6-10-firefox-profiling-e10s: PEQxDN7kQFenoK77w0e3HQ
+ test-linux64-shippable/opt-raptor-tp6-11-firefox-cold-e10s: eN5uTeP_Q0KH2IcQ2ZdG0A
+ test-linux64-shippable/opt-raptor-tp6-12-firefox-cold-e10s: EZM1hg5FTrCP2UN7cVoxpw
+ test-linux64-shippable/opt-raptor-tp6-13-firefox-cold-e10s: TfSSTYKRRhmaagMuawTd2Q
+ test-linux64-shippable/opt-raptor-tp6-14-firefox-cold-e10s: ahuFY5-sSRiqyAX1qXOgcg
+ test-linux64-shippable/opt-raptor-tp6-15-firefox-cold-e10s: Mo1Qb9nIQYSyrSfayqRJ6A
+ test-linux64-shippable/opt-raptor-tp6-16-firefox-cold-e10s: H1gFU5waQVu3QXshxvEx7g
+ test-linux64-shippable/opt-raptor-tp6-17-firefox-cold-e10s: F6VLytETQjSND6lV24l6AA
+ test-linux64-shippable/opt-raptor-tp6-18-firefox-cold-e10s: PsOUAP6JSSmIQkM1iTQ21w
+ test-linux64-shippable/opt-raptor-tp6-19-firefox-cold-e10s: HxfKdkIbQNe0dAYIO_OfVA
+ test-linux64-shippable/opt-raptor-tp6-2-firefox-cold-e10s: cUMUkUytTWGQKgTzf8L22g
+ test-linux64-shippable/opt-raptor-tp6-2-firefox-e10s: TM09ORmIRRCRsvW1Pw4qGQ
+ test-linux64-shippable/opt-raptor-tp6-2-firefox-profiling-e10s: GHko2ntQRNWU96HJdCk5fA
+ test-linux64-shippable/opt-raptor-tp6-20-firefox-cold-e10s: Sm4RyjPGQjintYSaa1ZIGA
+ test-linux64-shippable/opt-raptor-tp6-21-firefox-cold-e10s: U-bLNTLiRfSZ-aY8CySH8w
+ test-linux64-shippable/opt-raptor-tp6-22-firefox-cold-e10s: c2-3j2OfSNabw4E-eO3_-w
+ test-linux64-shippable/opt-raptor-tp6-23-firefox-cold-e10s: SulDXv5xTVG3cLI0dKP3Fg
+ test-linux64-shippable/opt-raptor-tp6-24-firefox-cold-e10s: GYLDaWBJRuSRx7INsx5Oyg
+ test-linux64-shippable/opt-raptor-tp6-25-firefox-cold-e10s: Eq4-u5OYQPiL_CzgpgPgIg
+ test-linux64-shippable/opt-raptor-tp6-26-firefox-cold-e10s: Nx29iyNERPebo5cuh0xPkw
+ test-linux64-shippable/opt-raptor-tp6-27-firefox-cold-e10s: N-Agboq3Q2GibluUXE0zQA
+ test-linux64-shippable/opt-raptor-tp6-28-firefox-cold-e10s: DabIlzoQSTi_i0fPgfGxuA
+ test-linux64-shippable/opt-raptor-tp6-29-firefox-cold-e10s: SXW-RzL0RXe_wYyg6GBV_g
+ test-linux64-shippable/opt-raptor-tp6-3-firefox-cold-e10s: XTICN29iShSt-pNWRHFJ_Q
+ test-linux64-shippable/opt-raptor-tp6-3-firefox-e10s: IAjRnrODQTGQs23jwckinw
+ test-linux64-shippable/opt-raptor-tp6-3-firefox-profiling-e10s: R5nDTUKlRuOjxN-AQBt4Og
+ test-linux64-shippable/opt-raptor-tp6-30-firefox-cold-e10s: dnYNWOi0QZ6YXkJCQX3jKg
+ test-linux64-shippable/opt-raptor-tp6-4-firefox-cold-e10s: TtS_b_0wQ6mAoqFf_Jgeuw
+ test-linux64-shippable/opt-raptor-tp6-4-firefox-e10s: UNtGqtmoQhyfYvnHFW5vxA
+ test-linux64-shippable/opt-raptor-tp6-4-firefox-profiling-e10s: WkJ1eQ4GRY-BP3ckkfuyog
+ test-linux64-shippable/opt-raptor-tp6-5-firefox-cold-e10s: OhPZWZlGRHq03Sf1IePgvw
+ test-linux64-shippable/opt-raptor-tp6-5-firefox-e10s: Po_L_miKT42nkgp3fxHWKA
+ test-linux64-shippable/opt-raptor-tp6-5-firefox-profiling-e10s: Vg19eyIOSTyjl3lQFXSeag
+ test-linux64-shippable/opt-raptor-tp6-6-firefox-cold-e10s: TZ4MAoPjRUiyfeRRYQctAg
+ test-linux64-shippable/opt-raptor-tp6-6-firefox-e10s: dLg0qHJPS_a8wHixqDnjog
+ test-linux64-shippable/opt-raptor-tp6-6-firefox-profiling-e10s: f83wNfXoTaSoLO2bqMmnHA
+ test-linux64-shippable/opt-raptor-tp6-7-firefox-cold-e10s: ds4ZAxsbRxiQ27ISwy83-g
+ test-linux64-shippable/opt-raptor-tp6-7-firefox-e10s: e5nOJ43eSHesDJy-vhn89g
+ test-linux64-shippable/opt-raptor-tp6-7-firefox-profiling-e10s: bSHIBENgRpuz9queQBOtdQ
+ test-linux64-shippable/opt-raptor-tp6-8-firefox-cold-e10s: aI2Swap4SACSYZK4bEzwiw
+ test-linux64-shippable/opt-raptor-tp6-8-firefox-e10s: CnGv7qRIS1OfSZxiDCZwmw
+ test-linux64-shippable/opt-raptor-tp6-8-firefox-profiling-e10s: UrOXwfPMQ569athYvd6FGg
+ test-linux64-shippable/opt-raptor-tp6-9-firefox-cold-e10s: LH5xawgJTTGDSjcN4fdbSA
+ test-linux64-shippable/opt-raptor-tp6-9-firefox-e10s: Amnq7jMFQoqhPrIby3eFIg
+ test-linux64-shippable/opt-raptor-tp6-9-firefox-profiling-e10s: er0ea9XYRa23sdvVfSceWQ
+ test-linux64-shippable/opt-raptor-tp6-binast-1-firefox-e10s: Scuoy1zPQPKl1Auj6XL4SQ
+ test-linux64-shippable/opt-raptor-unity-webgl-firefox-e10s: UH9aSPAMRhqScC883PNHkw
+ test-linux64-shippable/opt-raptor-unity-webgl-firefox-profiling-e10s: dIErITDnR2eGDh5qlfYhMg
+ test-linux64-shippable/opt-raptor-wasm-godot-baseline-firefox-e10s: dnlZHfdyQVec-HFoJQt-Ng
+ test-linux64-shippable/opt-raptor-wasm-godot-baseline-firefox-profiling-e10s: YFR5RuvBSSyhDLqz9YqC1w
+ test-linux64-shippable/opt-raptor-wasm-godot-cranelift-firefox-e10s: SOeFVMULR82etHugmz2ulA
+ test-linux64-shippable/opt-raptor-wasm-godot-cranelift-firefox-profiling-e10s: c_fJeFLKRHOgL5mJ0__lgA
+ test-linux64-shippable/opt-raptor-wasm-godot-firefox-e10s: b-asIQkoQpSPs_0RdlJ0JA
+ test-linux64-shippable/opt-raptor-wasm-godot-firefox-profiling-e10s: DuonX8PRQcattS5DYEutpQ
+ test-linux64-shippable/opt-raptor-wasm-godot-ion-firefox-e10s: bMHfgEIDRk6nHJEG7V07tw
+ test-linux64-shippable/opt-raptor-wasm-godot-ion-firefox-profiling-e10s: cQ0TnwDEQMe9whWpajncpA
+ test-linux64-shippable/opt-raptor-wasm-misc-baseline-firefox-e10s: UxV7GPISSCeLeK8MjfxwUw
+ test-linux64-shippable/opt-raptor-wasm-misc-baseline-firefox-profiling-e10s: PWcVxJJ2Tnm46X-MpSSSjA
+ test-linux64-shippable/opt-raptor-wasm-misc-cranelift-firefox-e10s: XDbFSmLkSrCwgcVJVgLSLA
+ test-linux64-shippable/opt-raptor-wasm-misc-firefox-e10s: BBYmEYTqTJO9WIma4yG2EQ
+ test-linux64-shippable/opt-raptor-wasm-misc-firefox-profiling-e10s: FKORX-o5Sbis1ylACblxxA
+ test-linux64-shippable/opt-raptor-wasm-misc-ion-firefox-e10s: Ni-au9LSRi-xGhGttVClDQ
+ test-linux64-shippable/opt-raptor-wasm-misc-ion-firefox-profiling-e10s: cEGIzPUUQLipb4o9pHTNEw
+ test-linux64-shippable/opt-raptor-webaudio-firefox-e10s: fXD185buSliTUug5-VbonA
+ test-linux64-shippable/opt-raptor-webaudio-firefox-profiling-e10s: IUPFVnRgQeqv7t_0zMd2lQ
+ test-linux64-shippable/opt-raptor-youtube-playback-firefox-e10s: OaVR8q_YSH2b43BzYw0ELQ
+ test-linux64-shippable/opt-raptor-youtube-playback-firefox-profiling-e10s: VvvBIsoRRUaElgFpzxvueQ
+ test-linux64-shippable/opt-talos-bcv-e10s: EkEnJe_ZQrOVTD_THmn6Pw
+ test-linux64-shippable/opt-talos-bcv-profiling-e10s: bjLSzbm4R9Kf5LKYhfr2gg
+ test-linux64-shippable/opt-talos-chrome-e10s: fkJDiBP2SOyQ2l57HVzYUw
+ test-linux64-shippable/opt-talos-chrome-profiling-e10s: cPGQjThWSGmrI7CLHwP8_g
+ test-linux64-shippable/opt-talos-damp-e10s: JPZMIeOMSLGQpAMJFWQ_QQ
+ test-linux64-shippable/opt-talos-dromaeojs-e10s: X77YW5XZTvK_OT2Uhgck6A
+ test-linux64-shippable/opt-talos-dromaeojs-profiling-e10s: E0t7Tdz-QUGkaYXWq0itLg
+ test-linux64-shippable/opt-talos-g1-e10s: Z8FpaR0yR-aMKJ6C3rSA8Q
+ test-linux64-shippable/opt-talos-g1-profiling-e10s: eAU0Fq_QRUWJMPQdkWZD5g
+ test-linux64-shippable/opt-talos-g3-e10s: GfBf46_7TUmLzQKlb782Qw
+ test-linux64-shippable/opt-talos-g3-profiling-e10s: GcQ9Pa87RkufjoRzX9tjBw
+ test-linux64-shippable/opt-talos-g4-e10s: GztmJ_HWRXaasFILAjzirQ
+ test-linux64-shippable/opt-talos-g4-profiling-e10s: C7K01fmZQ_mgYAxWpOOOfw
+ test-linux64-shippable/opt-talos-g5-e10s: RjxJkykwTtyDiKzzpftbdw
+ test-linux64-shippable/opt-talos-g5-profiling-e10s: YHIXhi8nRa2Csb4AEH3alw
+ test-linux64-shippable/opt-talos-motionmark-profiling-e10s: DSLHDAjNT7KX_PNtBZCMTA
+ test-linux64-shippable/opt-talos-other-e10s: MLmuQdj5T9mdONNXfsHWag
+ test-linux64-shippable/opt-talos-other-profiling-e10s: fPZrGfytQIO9P3cXEUU_pg
+ test-linux64-shippable/opt-talos-perf-reftest-e10s: SoD2mGdhRrGjFYWY2SOZxg
+ test-linux64-shippable/opt-talos-perf-reftest-profiling-e10s: DCYIajR8QdimIl1E8GDV4Q
+ test-linux64-shippable/opt-talos-perf-reftest-singletons-e10s: XbWX3XXASneY4R_Xm4OCEg
+ test-linux64-shippable/opt-talos-perf-reftest-singletons-profiling-e10s: PE-VlDF3SKqKJEd1RDRfVw
+ test-linux64-shippable/opt-talos-realworld-webextensions-e10s: EHenMLZ2T0yY5G2SnKCXIw
+ test-linux64-shippable/opt-talos-realworld-webextensions-profiling-e10s: OerJ7qpjS4uTG-AXNWKjRA
+ test-linux64-shippable/opt-talos-sessionrestore-many-windows-e10s: eTTit4OPRH-ooBk2oiZ_xw
+ test-linux64-shippable/opt-talos-sessionrestore-many-windows-profiling-e10s: DmcreMX5SWeyZizayIcU6A
+ test-linux64-shippable/opt-talos-svgr-e10s: b-qshpBeRe2cfx-9nYX4Cw
+ test-linux64-shippable/opt-talos-svgr-profiling-e10s: MCyOJyKMSPSCTpMARX8sWA
+ test-linux64-shippable/opt-talos-tabswitch-e10s: baC3x-uWTvmUh9gLOIkL8w
+ test-linux64-shippable/opt-talos-tabswitch-profiling-e10s: LnEfmO3XRX2SFKwvdJiNZQ
+ test-linux64-shippable/opt-talos-tp5o-e10s: SSwpl4UQRyir7Rkh38PBHw
+ test-linux64-shippable/opt-talos-tp5o-profiling-e10s: AYpay9M3RWyfT96OUbh-7w
+ test-linux64-shippable/opt-talos-webgl-e10s: ZSsreUztQLOLY4Mt-pw4OA
+ test-linux64-shippable/opt-web-platform-tests-wdspec-e10s-1: TGVXnkNmQY21H5tgr2FVgA
+ test-linux64-shippable/opt-web-platform-tests-wdspec-e10s-2: ZGOTYSmhQ5uTcUcCuwDRLQ
+ test-linux64-shippable/opt-web-platform-tests-wdspec-e10s-3: RsCtn0EGQWSazuZzRVDsMw
+ test-linux64-tsan/opt-mochitest-e10s-1: NswlJaTnRrKnc24cxoqb0A
+ test-linux64-tsan/opt-mochitest-e10s-10: Sh0o4uKaTNaitbkwauNrPw
+ test-linux64-tsan/opt-mochitest-e10s-11: dJYpQohYRzmbcr7i3GqVew
+ test-linux64-tsan/opt-mochitest-e10s-12: cy1l0t2RRDOZY9mHpuwuwg
+ test-linux64-tsan/opt-mochitest-e10s-13: E98hBl86RCyXwq9pjzE-iw
+ test-linux64-tsan/opt-mochitest-e10s-14: MNgt3SINSrGCXNTP300DFw
+ test-linux64-tsan/opt-mochitest-e10s-15: C6MG48SHQui3Ff9AVnIm0Q
+ test-linux64-tsan/opt-mochitest-e10s-16: dGxQwibHT4G3itHWmrn_Wg
+ test-linux64-tsan/opt-mochitest-e10s-17: DrQjFj9ITp6qAkZp-HlWXA
+ test-linux64-tsan/opt-mochitest-e10s-18: Zrw7MkrySgmDVuIAw9GITA
+ test-linux64-tsan/opt-mochitest-e10s-19: cT_6iiScTNCnEowUw28tNQ
+ test-linux64-tsan/opt-mochitest-e10s-2: WeVZeEchQXC0iuJGhIaEVw
+ test-linux64-tsan/opt-mochitest-e10s-20: fxQ8_upETFqByMImrWQHTA
+ test-linux64-tsan/opt-mochitest-e10s-3: LvqmkJ2fTGWAzy-6LkMdRQ
+ test-linux64-tsan/opt-mochitest-e10s-4: HpfK47N6QiiW0M7nLgNzhQ
+ test-linux64-tsan/opt-mochitest-e10s-5: VFHf5QycRViKLXqNOk-Rzw
+ test-linux64-tsan/opt-mochitest-e10s-6: P_RddXsQQaWxslUfsNam5g
+ test-linux64-tsan/opt-mochitest-e10s-7: JrdP_sR_RYabEZiMScFUAA
+ test-linux64-tsan/opt-mochitest-e10s-8: FasBFJp5TbOXbanpszrW0A
+ test-linux64-tsan/opt-mochitest-e10s-9: fk6-MZYXSBODw-Ozvfg_1A
+ test-linux64-tsan/opt-xpcshell-e10s-1: LY7VZ_R4S3aa8HMU3tYNIA
+ test-linux64-tsan/opt-xpcshell-e10s-2: fVIjNap0SoSt0LSDAOjaZA
+ test-linux64-tsan/opt-xpcshell-e10s-3: LwKL4CdaR8uhfJIs_yUC2Q
+ test-linux64-tsan/opt-xpcshell-e10s-4: BStjpRqKTDaxCrXG2_BUtw
+ test-linux64-tsan/opt-xpcshell-e10s-5: EqXEaR_3RwiJlxjedpWUVw
+ test-linux64-tsan/opt-xpcshell-e10s-6: MGAdFxrWQ_GWoIbQJKe_aA
+ test-linux64-tsan/opt-xpcshell-e10s-7: C_nG8UA6RI6-nCkxcvHqQw
+ test-linux64-tsan/opt-xpcshell-e10s-8: HNpzT6tbSYm4fquPRVOXbQ
+ test-linux64/debug-marionette-e10s: BsfYhAJRTNKQpjfHkL6H9w
+ test-linux64/debug-web-platform-tests-wdspec-e10s-1: UEmuQTogQ-qk-Dy8v5VoMQ
+ test-linux64/debug-web-platform-tests-wdspec-e10s-2: PMFqv6TUSWKGOrOh9fJxfg
+ test-linux64/debug-web-platform-tests-wdspec-e10s-3: dIfU8U6MTYqRKsFD7k8qiQ
+ test-linux64/opt-marionette-e10s: IiPwXuQ6RMmVcJ_NSeWu9w
+ test-linux64/opt-raptor-ares6-firefox-e10s: QLZo03KaRDyVaSywo14Vfg
+ test-linux64/opt-raptor-assorted-dom-firefox-e10s: Y3eV2BGGQFC-Ix_TkpqBFw
+ test-linux64/opt-raptor-jetstream2-firefox-e10s: XKM92pFETVKkkH2yDoDb8g
+ test-linux64/opt-raptor-motionmark-animometer-firefox-e10s: WZO_R-6jR_mG1iaNsN5vFg
+ test-linux64/opt-raptor-motionmark-htmlsuite-firefox-e10s: Sv0NnM0aSPy5n8tuSjz1Jw
+ test-linux64/opt-raptor-speedometer-firefox-e10s: AFWltKXETlG8s5Lo_PWM-w
+ test-linux64/opt-raptor-stylebench-firefox-e10s: Gf28RtlTQSqLh_DSa0lEzA
+ test-linux64/opt-raptor-sunspider-firefox-e10s: YtXjyrrCRS27KdWO1ArhgQ
+ test-linux64/opt-raptor-tp6-1-firefox-cold-e10s: GxKS6c-mQzWDptU5mR4asA
+ test-linux64/opt-raptor-tp6-1-firefox-e10s: ApLAGCnsSJOESU_zWtaMiw
+ test-linux64/opt-raptor-tp6-10-firefox-cold-e10s: B11czWKwSKuxXNtXb0cPrQ
+ test-linux64/opt-raptor-tp6-10-firefox-e10s: c_Vcv4G9RiKO5sLcLzdqGA
+ test-linux64/opt-raptor-tp6-11-firefox-cold-e10s: ZFC8-NSUT0WAHXyARPeHkw
+ test-linux64/opt-raptor-tp6-12-firefox-cold-e10s: SGTw0EytRAWi3giUejY7JA
+ test-linux64/opt-raptor-tp6-13-firefox-cold-e10s: Iyuss-76QkGMSJEszIc8Rg
+ test-linux64/opt-raptor-tp6-14-firefox-cold-e10s: BQKRxBytSUydeyIs7B3nGQ
+ test-linux64/opt-raptor-tp6-15-firefox-cold-e10s: C1AjkrEOTFqQK16ppPpQ5Q
+ test-linux64/opt-raptor-tp6-16-firefox-cold-e10s: Rrg75-4qQK6cDKDXieGINA
+ test-linux64/opt-raptor-tp6-17-firefox-cold-e10s: JAjrAtUQRPa4TE0d7Q_VTw
+ test-linux64/opt-raptor-tp6-18-firefox-cold-e10s: JXvDlTSQTx6IWsd_15cukA
+ test-linux64/opt-raptor-tp6-19-firefox-cold-e10s: RdCvUN9wSGKTCcSt8OPOuw
+ test-linux64/opt-raptor-tp6-2-firefox-cold-e10s: JmGutBUhS0-B-x71gr2bAA
+ test-linux64/opt-raptor-tp6-2-firefox-e10s: C0dUiXxyQ-Kj7JqMXsRmjQ
+ test-linux64/opt-raptor-tp6-20-firefox-cold-e10s: PW5TZkeKQSatPcJJ8DuYwg
+ test-linux64/opt-raptor-tp6-21-firefox-cold-e10s: YA0RewM9Q6aQZiRhECoaKg
+ test-linux64/opt-raptor-tp6-22-firefox-cold-e10s: Fo1v-gq2T86gybH40FaC_A
+ test-linux64/opt-raptor-tp6-23-firefox-cold-e10s: UWSduq70R4KHkFKICw7_tg
+ test-linux64/opt-raptor-tp6-24-firefox-cold-e10s: Lm7RuEIFT0OFFtuL_oWyLw
+ test-linux64/opt-raptor-tp6-25-firefox-cold-e10s: GvJbhEYJSfGR2L_TjTTbvA
+ test-linux64/opt-raptor-tp6-26-firefox-cold-e10s: MXr_P2voRFaNWYWMu4GWwQ
+ test-linux64/opt-raptor-tp6-27-firefox-cold-e10s: Zb-KFdfcSuOqZbXcZPD1mg
+ test-linux64/opt-raptor-tp6-28-firefox-cold-e10s: epXJwh6dTP2JQ812S6fThw
+ test-linux64/opt-raptor-tp6-29-firefox-cold-e10s: EaI1575ZRNSw6NJciFK5Jg
+ test-linux64/opt-raptor-tp6-3-firefox-cold-e10s: Si1Ge_bnSpi0UYImefNueg
+ test-linux64/opt-raptor-tp6-3-firefox-e10s: T84cP3eGSN6PklZ6_PTrNw
+ test-linux64/opt-raptor-tp6-30-firefox-cold-e10s: d-AQG9mMQ-CeHSAWBFI6VA
+ test-linux64/opt-raptor-tp6-4-firefox-cold-e10s: FaUU-MRbQiqXRXBnT1IUEw
+ test-linux64/opt-raptor-tp6-4-firefox-e10s: PHwHE-asQ_qiHAH6VJ3LLg
+ test-linux64/opt-raptor-tp6-5-firefox-cold-e10s: Y3yvn3z8SSiWjo8-Ok4I2Q
+ test-linux64/opt-raptor-tp6-5-firefox-e10s: MGAX-w3ARNGv_jz0Q0lptQ
+ test-linux64/opt-raptor-tp6-6-firefox-cold-e10s: JCNEcMcjTziPEUiWDJKJRA
+ test-linux64/opt-raptor-tp6-6-firefox-e10s: IXt5klkYTMecL9oxcEiuYQ
+ test-linux64/opt-raptor-tp6-7-firefox-cold-e10s: C2mN_IlHQRKT63gTAyxK6g
+ test-linux64/opt-raptor-tp6-7-firefox-e10s: WNpGllm4QVeZ4eigVDm_Lg
+ test-linux64/opt-raptor-tp6-8-firefox-cold-e10s: f8PEESldTk65FRdfG0WeeA
+ test-linux64/opt-raptor-tp6-8-firefox-e10s: O2oRd832RGCksCAbsGAm1w
+ test-linux64/opt-raptor-tp6-9-firefox-cold-e10s: BLnH8-1ZRGqneHNKXB07tw
+ test-linux64/opt-raptor-tp6-9-firefox-e10s: f_CVBA-AQYu7uC7DPjae3w
+ test-linux64/opt-raptor-tp6-binast-1-firefox-e10s: Tmk_KdNSSey9jvcDKuN2iQ
+ test-linux64/opt-raptor-unity-webgl-firefox-e10s: QH0km9tRR9ehHNnPYPhKIQ
+ test-linux64/opt-raptor-wasm-godot-baseline-firefox-e10s: V6sUoQNLTh-Wq9808oc1pA
+ test-linux64/opt-raptor-wasm-godot-cranelift-firefox-e10s: AqsFshRcSoaFbc_0LqKOuQ
+ test-linux64/opt-raptor-wasm-godot-firefox-e10s: eCZ2DJbVQYaCo-wtv6IQ8w
+ test-linux64/opt-raptor-wasm-godot-ion-firefox-e10s: J4raHJ1sQN-3LYlUBndcWw
+ test-linux64/opt-raptor-wasm-misc-baseline-firefox-e10s: W1RWXGuwRVaU6zoAStfL-A
+ test-linux64/opt-raptor-wasm-misc-cranelift-firefox-e10s: bkI0lJK_SIGgxE79JVWPBg
+ test-linux64/opt-raptor-wasm-misc-firefox-e10s: BICrs0dYT3mZr9K4sI9l0Q
+ test-linux64/opt-raptor-wasm-misc-ion-firefox-e10s: fawYpVtaSiGxsK41E6T2Iw
+ test-linux64/opt-raptor-webaudio-firefox-e10s: PXrw4cObTVm08ykDx50mZw
+ test-linux64/opt-raptor-youtube-playback-firefox-e10s: VlfyjS6JRmG09yeBY0PSIw
+ test-linux64/opt-talos-bcv-e10s: Ay8yMMyERe-zFgCKvdEKVg
+ test-linux64/opt-talos-chrome-e10s: TPpI4NUZTX2KISiNTECneQ
+ test-linux64/opt-talos-damp-e10s: MdorZUfxSvKm3BCIEIg4lQ
+ test-linux64/opt-talos-dromaeojs-e10s: WEvrUccjRFapOxKmuJCoWw
+ test-linux64/opt-talos-g1-e10s: Wh16qsINQTSL1J3fv4Xm7g
+ test-linux64/opt-talos-g3-e10s: AbJj_8xSSvibIvitur0C_A
+ test-linux64/opt-talos-g4-e10s: FDD0cBQ3Q6KLwTEVgvrgHw
+ test-linux64/opt-talos-g5-e10s: ImuBk0QtTFqmkL9PmcYigQ
+ test-linux64/opt-talos-other-e10s: eWVflALpTEaFitWIUwp2ug
+ test-linux64/opt-talos-perf-reftest-e10s: Q8WWDqhnRROv4PPNj0LMXw
+ test-linux64/opt-talos-perf-reftest-singletons-e10s: V2cOMHWpQWGDUMdWHjVHGw
+ test-linux64/opt-talos-realworld-webextensions-e10s: cYtkvnpNQuO6Q4UwYLO0Qg
+ test-linux64/opt-talos-sessionrestore-many-windows-e10s: KngWSkFmQAyIWcO9jurlmw
+ test-linux64/opt-talos-svgr-e10s: S2UV5jC1Ty2nq9mfcPOcHg
+ test-linux64/opt-talos-tabswitch-e10s: eL6246JYSrC-7Imom9EfIw
+ test-linux64/opt-talos-tp5o-e10s: dlZ0olWwTZ2Pg4bZLW5_qA
+ test-linux64/opt-talos-webgl-e10s: ESesw8aZRzyAfB6B1mmNkA
+ test-linux64/opt-web-platform-tests-wdspec-e10s-1: GCer21pWRiOXWEiEyl1_mw
+ test-linux64/opt-web-platform-tests-wdspec-e10s-2: c3zGl7-VTza3LQl-WiTwog
+ test-linux64/opt-web-platform-tests-wdspec-e10s-3: NAs0uIkfQXOjbmP3OzYY5A
+ test-macosx1014-64-qr/debug-crashtest-e10s: F5Lc_zXEQPiGRonaC99fQg
+ test-macosx1014-64-qr/debug-reftest-e10s-1: ZBb1BAjSSRa7-PkejtlxcA
+ test-macosx1014-64-qr/debug-reftest-e10s-2: WMc-SSbZT6egmcsbR9vOfQ
+ test-macosx1014-64-qr/debug-reftest-e10s-3: a0amb-ImR1WILJ3Kbnj8CQ
+ test-macosx1014-64-qr/debug-reftest-e10s-4: XNAyEocLRxSX92ZuSn02rg
+ test-macosx1014-64-qr/debug-reftest-e10s-5: PPLuFPfOR8ykuvMVcZ-Maw
+ test-macosx1014-64-qr/debug-reftest-e10s-6: IoEF9i8PTm6kZQBeaGKBtA
+ test-macosx1014-64-shippable-qr/opt-crashtest-e10s: NpgRV8YlTQmql8Zfl_huUQ
+ test-macosx1014-64-shippable-qr/opt-reftest-e10s-1: DJy-tZuLSKC0GhqqFKwsUA
+ test-macosx1014-64-shippable-qr/opt-reftest-e10s-2: FvXmQptbQCycstJ470IX5w
+ test-macosx1014-64-shippable-qr/opt-reftest-e10s-3: aFjCogMTSWCsGgmHqqacuA
+ test-macosx1014-64-shippable/opt-awsy-base-e10s: Tvi-6RlfSyuYmaOCw1DsWQ
+ test-macosx1014-64-shippable/opt-awsy-e10s: Jczkn7IBRziqIMrCgzvTRQ
+ test-macosx1014-64-shippable/opt-awsy-tp6-e10s: JyLWWC24RMitT9SyjKobrQ
+ test-macosx1014-64-shippable/opt-browser-screenshots-e10s: QIWDBfe9TUK6IuiWSA72Ig
+ test-macosx1014-64-shippable/opt-browsertime-tp6-chrome-cold-amazon-e10s: cWhVC_hST_Ch8HY7Z7suew
+ test-macosx1014-64-shippable/opt-browsertime-tp6-firefox-amazon-e10s: C2CwZD9sTGymW5hZICNwhw
+ test-macosx1014-64-shippable/opt-browsertime-tp6-firefox-cold-amazon-e10s: NiyYtLYyTdiuUXHXchy-dA
+ test-macosx1014-64-shippable/opt-browsertime-tp6-profiling-firefox-amazon-e10s: KQX78xfjSHC2ksF3fu-JFA
+ test-macosx1014-64-shippable/opt-browsertime-tp6-profiling-firefox-cold-amazon-e10s: FhxldskQSPS8SjiZT4spkg
+ test-macosx1014-64-shippable/opt-cppunit-1proc: CvPGCUD8TP6vR2W1nEBo0A
+ test-macosx1014-64-shippable/opt-crashtest-e10s: RYeaaUNOQNmpVmDCRBeOmg
+ test-macosx1014-64-shippable/opt-firefox-ui-functional-local-e10s: DLgY5p8fQR6pVFTYeYPNkw
+ test-macosx1014-64-shippable/opt-firefox-ui-functional-remote-e10s: ddn3of0ySOG67zucCGmLNA
+ test-macosx1014-64-shippable/opt-gtest-1proc: TtYcGYLtR0eBZ1rjNYVrfA
+ test-macosx1014-64-shippable/opt-jittest-1proc: PaXly2kuQ9uoz7ktPq5i0A
+ test-macosx1014-64-shippable/opt-jsreftest-e10s-1: ICXfqlFXQEmH7Mft9dNv7w
+ test-macosx1014-64-shippable/opt-jsreftest-e10s-2: GzGE-Ev6QiuS4abeNNnwCA
+ test-macosx1014-64-shippable/opt-marionette-e10s: VZUyUmxHS1CzkneQHMCjwg
+ test-macosx1014-64-shippable/opt-mochitest-a11y-1proc: TNLORvTIRqCUs0Ld2-jWHg
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-1: IED2fOc7RT6AO5AQka0Rog
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-2: YtxRKWnkQuSv6GdBXAQZ1g
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-3: MpNY_56pTaqvo1GVkh_SiA
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-4: MXtVB2LcTTiLhVVQmUe-bA
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-5: DAr9XS0CRC2B79GHNSlEoA
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-6: R1SfIqbkQ3inQs6utsyF4Q
+ test-macosx1014-64-shippable/opt-mochitest-browser-chrome-e10s-7: UI1f9ohZQgi38RAZSyNAYQ
+ test-macosx1014-64-shippable/opt-mochitest-chrome-1proc-1: Fn_bCykqRq-_qH-eg26JJw
+ test-macosx1014-64-shippable/opt-mochitest-chrome-1proc-2: I-C7di2ZSdCcjD8stGIhfA
+ test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-1: SCveg2V_Tm-idCIjl8uIzQ
+ test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-2: IdOvjWnjR52rgptopkG6zQ
+ test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-3: O9lNdM76Q-S3MIYCo62ufg
+ test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-4: WTX2mtOiTN2C9R6PlrGx6Q
+ test-macosx1014-64-shippable/opt-mochitest-devtools-chrome-e10s-5: M1-FlXSyTqSojQGpG0J5lw
+ test-macosx1014-64-shippable/opt-mochitest-e10s-1: fz9REd7WT2GVJUAUidlAIA
+ test-macosx1014-64-shippable/opt-mochitest-e10s-2: HBUVoCARS3i6DbalG2BXoA
+ test-macosx1014-64-shippable/opt-mochitest-e10s-3: BUq9cUykSa2-l25IGScUKQ
+ test-macosx1014-64-shippable/opt-mochitest-e10s-4: E87jE9PmRCmFh9UfkQ_Nlw
+ test-macosx1014-64-shippable/opt-mochitest-e10s-5: JIDVXFaATN-QqboP_1airw
+ test-macosx1014-64-shippable/opt-mochitest-gpu-e10s: SGGqREKxTXSmCmAeVawn_w
+ test-macosx1014-64-shippable/opt-mochitest-media-e10s-1: La_VT_uBTF2GmSCXm51A5g
+ test-macosx1014-64-shippable/opt-mochitest-media-e10s-2: L_72ka1_TT-nPEs07u4JDQ
+ test-macosx1014-64-shippable/opt-mochitest-media-spi-e10s-1: AgfN3ncHQ767WN5AkG420w
+ test-macosx1014-64-shippable/opt-mochitest-media-spi-e10s-2: KCSG_jZhScyCUawUA2zTKg
+ test-macosx1014-64-shippable/opt-mochitest-remote-e10s: GzcaTjfVSpeXLVurKpu2JQ
+ test-macosx1014-64-shippable/opt-mochitest-webgl1-core-e10s: UMelHyEpTuK3TcSK6aTsMg
+ test-macosx1014-64-shippable/opt-mochitest-webgl1-ext-e10s: COf-sIlNRjKlHRUXp2XxWg
+ test-macosx1014-64-shippable/opt-mochitest-webgl2-core-e10s: TKFnKdRVQ7-H2dsFuA4fDQ
+ test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-1: SbKkXyF6SCa_X0i6n5OhWA
+ test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-2: GJiV1UvzQimGbnxTIIBWOQ
+ test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-3: YXkQeRslTS62estDUjZWQg
+ test-macosx1014-64-shippable/opt-mochitest-webgl2-ext-e10s-4: T0AcKcGoRnOTXiki70HLrw
+ test-macosx1014-64-shippable/opt-mochitest-webgpu-e10s: EuRiCjFdSby0Ybg-DzWlTw
+ test-macosx1014-64-shippable/opt-raptor-ares6-firefox-e10s: bRmbT-FPTE-yeqgpRZvU2w
+ test-macosx1014-64-shippable/opt-raptor-ares6-firefox-profiling-e10s: UMOEwximQGC74TeQ89fzUQ
+ test-macosx1014-64-shippable/opt-raptor-jetstream2-firefox-e10s: CC1Yy_bAT8-NtSKFF7QDfg
+ test-macosx1014-64-shippable/opt-raptor-jetstream2-firefox-profiling-e10s: JOBUV7t8SRGemKiKrbbulg
+ test-macosx1014-64-shippable/opt-raptor-motionmark-animometer-firefox-e10s: Frj-sQc8R-m7uBXX9ym9uw
+ test-macosx1014-64-shippable/opt-raptor-motionmark-animometer-firefox-profiling-e10s: SzG91SiHSwWGJkimAsspKA
+ test-macosx1014-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: dxivJGzzQsieSWNIHIdA0g
+ test-macosx1014-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-profiling-e10s: XKiR-Hf1REuq1-q4DbLPfg
+ test-macosx1014-64-shippable/opt-raptor-speedometer-firefox-e10s: DlLiI71hSa2F8bxOrC7YtA
+ test-macosx1014-64-shippable/opt-raptor-speedometer-firefox-profiling-e10s: TzTlnt9aTPCw7JwhM1nFMw
+ test-macosx1014-64-shippable/opt-raptor-stylebench-firefox-e10s: Mwr2gxyYSHSQB7Fs1gX81Q
+ test-macosx1014-64-shippable/opt-raptor-stylebench-firefox-profiling-e10s: JfJxPOjiStCFKu3gb_jLuA
+ test-macosx1014-64-shippable/opt-raptor-sunspider-firefox-e10s: FWA2X2nEToWBjBe057mdDw
+ test-macosx1014-64-shippable/opt-raptor-sunspider-firefox-profiling-e10s: GhV3XjY3Toa8-u3-g4CZBg
+ test-macosx1014-64-shippable/opt-raptor-tp6-1-firefox-cold-e10s: MFEL74SaRJq8Wwxi25sSxQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-1-firefox-e10s: CY3blSLMSseA-Q5mhBlOeg
+ test-macosx1014-64-shippable/opt-raptor-tp6-1-firefox-profiling-e10s: WIaguARSQ9ukXBzYQT5LCw
+ test-macosx1014-64-shippable/opt-raptor-tp6-10-firefox-cold-e10s: crBJ3EDZQnGtKBQfO7Kk7g
+ test-macosx1014-64-shippable/opt-raptor-tp6-10-firefox-e10s: DmjvO_20ReCxWBRNZIpEXA
+ test-macosx1014-64-shippable/opt-raptor-tp6-10-firefox-profiling-e10s: L0SRbg02STin3ZzDccR79Q
+ test-macosx1014-64-shippable/opt-raptor-tp6-11-firefox-cold-e10s: Jwq3refCRkuYab6IFLw-lw
+ test-macosx1014-64-shippable/opt-raptor-tp6-12-firefox-cold-e10s: PT25cnVjR3GoY7GVRxMeEA
+ test-macosx1014-64-shippable/opt-raptor-tp6-13-firefox-cold-e10s: UFp3khqfTqOps49Hi-p5jQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-14-firefox-cold-e10s: IxnlZc7PTYqAsymyrqp-fg
+ test-macosx1014-64-shippable/opt-raptor-tp6-15-firefox-cold-e10s: a27AruXUSL-WMbXHZQ9o4w
+ test-macosx1014-64-shippable/opt-raptor-tp6-16-firefox-cold-e10s: IbQFa6HITGGrWkK7hSRi-w
+ test-macosx1014-64-shippable/opt-raptor-tp6-17-firefox-cold-e10s: AAUafYPNTvulSKxwvwKAvg
+ test-macosx1014-64-shippable/opt-raptor-tp6-18-firefox-cold-e10s: cfn4KyIyQpG045J_W47Wgw
+ test-macosx1014-64-shippable/opt-raptor-tp6-19-firefox-cold-e10s: amPGFNbhSgGh65_jjR4fdg
+ test-macosx1014-64-shippable/opt-raptor-tp6-2-firefox-cold-e10s: G-Lv1Z8DToaDLlh80KFDhQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-2-firefox-e10s: alyvItLeSBawP8tcfA45lw
+ test-macosx1014-64-shippable/opt-raptor-tp6-2-firefox-profiling-e10s: OA11CGe3SWiAm7giY8rtJA
+ test-macosx1014-64-shippable/opt-raptor-tp6-20-firefox-cold-e10s: Wca6_7CKQGOu09TJ5y3HqA
+ test-macosx1014-64-shippable/opt-raptor-tp6-21-firefox-cold-e10s: epMwnoufQS-KP2-n80pDNw
+ test-macosx1014-64-shippable/opt-raptor-tp6-22-firefox-cold-e10s: LgzAdYObR7iWJNLCL2C1sg
+ test-macosx1014-64-shippable/opt-raptor-tp6-23-firefox-cold-e10s: XUsRtVuAQvmfnRzaTnZl5g
+ test-macosx1014-64-shippable/opt-raptor-tp6-24-firefox-cold-e10s: PP16oz2iR4m0cAQEqrGbzQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-25-firefox-cold-e10s: dqXhEh15RYWX9t7RZap46g
+ test-macosx1014-64-shippable/opt-raptor-tp6-26-firefox-cold-e10s: TwC3M6c2Q3KxRgswNhcJFQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-27-firefox-cold-e10s: blhJ0NhhRla_7wMWC1lOWQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-28-firefox-cold-e10s: VMZvknO4Sg-uWC3tdsfU1g
+ test-macosx1014-64-shippable/opt-raptor-tp6-29-firefox-cold-e10s: D77kKSBjQB6aUTwshF9SQg
+ test-macosx1014-64-shippable/opt-raptor-tp6-3-firefox-cold-e10s: aOkwxS8DQ36kdnJ27xDtjg
+ test-macosx1014-64-shippable/opt-raptor-tp6-3-firefox-e10s: PNqbPVz7RS6C0Wya0CXPQA
+ test-macosx1014-64-shippable/opt-raptor-tp6-3-firefox-profiling-e10s: TxbGLHryQxmMEPSclHOqgQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-30-firefox-cold-e10s: dMV2EfHxQ9yIkk5v1rAupQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-4-firefox-cold-e10s: cHpROPdwS--FC3iLEVsSYw
+ test-macosx1014-64-shippable/opt-raptor-tp6-4-firefox-e10s: Q090CM49R2GVlUScDR53Sg
+ test-macosx1014-64-shippable/opt-raptor-tp6-4-firefox-profiling-e10s: JlCw0r3SSJi4X1KFJ0gDKg
+ test-macosx1014-64-shippable/opt-raptor-tp6-5-firefox-cold-e10s: c-FeSwqzRO-dcuBxb86lrw
+ test-macosx1014-64-shippable/opt-raptor-tp6-5-firefox-e10s: atjY2bFfQkeKTo9X6yd07g
+ test-macosx1014-64-shippable/opt-raptor-tp6-5-firefox-profiling-e10s: JXsi-V2QRFK46YZoLg4NvA
+ test-macosx1014-64-shippable/opt-raptor-tp6-6-firefox-cold-e10s: AzRsbFbmQW2RTVC_16mx8Q
+ test-macosx1014-64-shippable/opt-raptor-tp6-6-firefox-e10s: G5w0X9LLRQCyQ8Rd_GtaFQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-6-firefox-profiling-e10s: CJUdGUCeRD27F46zv99GVw
+ test-macosx1014-64-shippable/opt-raptor-tp6-7-firefox-cold-e10s: RegwYDjgS9G99q6pQ6JiYw
+ test-macosx1014-64-shippable/opt-raptor-tp6-7-firefox-e10s: XZcwJPTVQ2uT7mx2rWiUGw
+ test-macosx1014-64-shippable/opt-raptor-tp6-7-firefox-profiling-e10s: QomXCa7uQoST_qKSU9YthA
+ test-macosx1014-64-shippable/opt-raptor-tp6-8-firefox-cold-e10s: OIzLKHDCRHWhX79ftGUArg
+ test-macosx1014-64-shippable/opt-raptor-tp6-8-firefox-e10s: d_teIiq8QIOqJo89M5u6nQ
+ test-macosx1014-64-shippable/opt-raptor-tp6-8-firefox-profiling-e10s: JXActjOfTg6LRPfU0lBBrw
+ test-macosx1014-64-shippable/opt-raptor-tp6-9-firefox-cold-e10s: eotDh4IdTlSLWErJrPOR0w
+ test-macosx1014-64-shippable/opt-raptor-tp6-9-firefox-e10s: NadjezonTp6oFtIJ-ZBj2w
+ test-macosx1014-64-shippable/opt-raptor-tp6-9-firefox-profiling-e10s: OMdsPVaPTp2Y96a5lGfuKw
+ test-macosx1014-64-shippable/opt-raptor-tp6-binast-1-firefox-e10s: WNm5Z0SFQ9SlG4UbIY2r4A
+ test-macosx1014-64-shippable/opt-raptor-wasm-godot-firefox-e10s: C_tAXbqBSvWWtA3Hnd4VBw
+ test-macosx1014-64-shippable/opt-raptor-wasm-godot-firefox-profiling-e10s: IurJGZyGQCucPSZc-woE8Q
+ test-macosx1014-64-shippable/opt-raptor-webaudio-firefox-e10s: RgmEC6VHTDu1gpxxRIRPWg
+ test-macosx1014-64-shippable/opt-raptor-webaudio-firefox-profiling-e10s: fh4_XeDtTgqfaFjG4gfQlw
+ test-macosx1014-64-shippable/opt-raptor-youtube-playback-firefox-e10s: RDJ7l75KS_280ykuKa4DKw
+ test-macosx1014-64-shippable/opt-raptor-youtube-playback-firefox-profiling-e10s: QwwVsU_TTQ2rOhdXCWy9vA
+ test-macosx1014-64-shippable/opt-raptor-youtube-playback-h264-power-firefox-e10s: fwDE4teqSiysiJFK04EFJw
+ test-macosx1014-64-shippable/opt-raptor-youtube-playback-v9-power-firefox-e10s: ROAsg9ZfQAiS7dB-3H8Ezw
+ test-macosx1014-64-shippable/opt-reftest-e10s-1: ICScLa_qTQ--RMULihSizA
+ test-macosx1014-64-shippable/opt-reftest-e10s-2: UeAl_WiIQUatZfXnSDiUeg
+ test-macosx1014-64-shippable/opt-reftest-e10s-3: S-Q4ydYCSPGxyefADCYufA
+ test-macosx1014-64-shippable/opt-talos-bcv-e10s: EAghZ9FyTmmPmVqd8pnEKA
+ test-macosx1014-64-shippable/opt-talos-bcv-profiling-e10s: Z5tS7ADyReuS-l-O5MuX8Q
+ test-macosx1014-64-shippable/opt-talos-chrome-e10s: KtLLE_uXSWi6sQ262Jo9Zw
+ test-macosx1014-64-shippable/opt-talos-chrome-profiling-e10s: PigKpjS1RXeVyjfKYd2sqg
+ test-macosx1014-64-shippable/opt-talos-damp-e10s: OYM-b7o2R7-xEt2kIkoJtg
+ test-macosx1014-64-shippable/opt-talos-dromaeojs-e10s: ETkHQ7nSTAKXKg1mZ7lcmw
+ test-macosx1014-64-shippable/opt-talos-dromaeojs-profiling-e10s: H1r0-6oeQAuBWzFbGt81pg
+ test-macosx1014-64-shippable/opt-talos-g1-e10s: WiwSjTTdSGuIt_WYxXOEOA
+ test-macosx1014-64-shippable/opt-talos-g1-profiling-e10s: KgBlZ_TQQ8-A_hlJssnpCw
+ test-macosx1014-64-shippable/opt-talos-g3-profiling-e10s: JjRHfQr-Qra7ffsfXnvs2w
+ test-macosx1014-64-shippable/opt-talos-g4-e10s: MNz3PGARQo-bz3N6JWTQ3A
+ test-macosx1014-64-shippable/opt-talos-g4-profiling-e10s: LsRD0GMlTC-T5Y4qZ-IHEg
+ test-macosx1014-64-shippable/opt-talos-g5-e10s: PkcWQ-w5RGGQfSNNhdkbcQ
+ test-macosx1014-64-shippable/opt-talos-g5-profiling-e10s: XT9GIwV5TDSDTNUky3X_SQ
+ test-macosx1014-64-shippable/opt-talos-motionmark-profiling-e10s: cOUfMCl6RSuDLVfcHF-Kgg
+ test-macosx1014-64-shippable/opt-talos-other-e10s: aE86uo2gTWC6ZaqvAEAaLw
+ test-macosx1014-64-shippable/opt-talos-other-profiling-e10s: bbKXy5l1Slq-tpziAFo15Q
+ test-macosx1014-64-shippable/opt-talos-perf-reftest-e10s: I1gQMhEGTAmzftG_piKt4g
+ test-macosx1014-64-shippable/opt-talos-perf-reftest-profiling-e10s: eTwsKQp9T5qzBd2S8H9MZg
+ test-macosx1014-64-shippable/opt-talos-perf-reftest-singletons-e10s: RDuWbxm9S2ysBeEWAoLhVA
+ test-macosx1014-64-shippable/opt-talos-perf-reftest-singletons-profiling-e10s: N85Ai3DvQyaC7tmzarIfIg
+ test-macosx1014-64-shippable/opt-talos-realworld-webextensions-e10s: b57QTTSDQNG934Ltz2LwSA
+ test-macosx1014-64-shippable/opt-talos-realworld-webextensions-profiling-e10s: OBH-DqTWR4qPqBvVh_uC3w
+ test-macosx1014-64-shippable/opt-talos-sessionrestore-many-windows-e10s: HaVcjapUTBiZGNE2FbERAw
+ test-macosx1014-64-shippable/opt-talos-sessionrestore-many-windows-profiling-e10s: Pe6gYDSfSk-OUBhv46z3Fw
+ test-macosx1014-64-shippable/opt-talos-svgr-e10s: VwGGwRVzR664rzlOvkPGJQ
+ test-macosx1014-64-shippable/opt-talos-svgr-profiling-e10s: ACZGHcCkSom8fOlzLD6Qhg
+ test-macosx1014-64-shippable/opt-talos-tabswitch-profiling-e10s: YcLS4iiUSi6sSL5IsmE7Qg
+ test-macosx1014-64-shippable/opt-talos-tp5o-e10s: PTMSjO2fTGaF56YmvBuXzA
+ test-macosx1014-64-shippable/opt-talos-tp5o-profiling-e10s: ah9iCmw6QVyBK0yGnaMI7Q
+ test-macosx1014-64-shippable/opt-talos-webgl-e10s: T8WR_yAsSo-oiEdlJPU69w
+ test-macosx1014-64-shippable/opt-telemetry-tests-client-e10s: RgGDJdZhTbqnlowKyv2_eQ
+ test-macosx1014-64-shippable/opt-web-platform-tests-crashtests-e10s: RQvFvhQrS8unXmgKaI2r7w
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-1: c0v-tXMoQSygEozUBqxfqQ
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-10: BtIPRtFKRHOM-DkFjU62NA
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-11: faokeeJsQLyQtH6S0MLmDg
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-12: PQEWv8fyR1e1Ej7S7nemUA
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-2: FAYBJTM2Ru6bZagy2DcrYA
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-3: JKkmC-YLQJWyiPliEMS44g
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-4: UuSlwZk9RGOFVmE7LsMEhg
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-5: UBJ_7HFIQcyEtiX6tAH4Og
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-6: edXqGhnZSr60qyNmyDlJ-A
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-7: eKk-C4uxSXqipcyA09_4xQ
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-8: cm-G0eDHT_CEh84elaxFMw
+ test-macosx1014-64-shippable/opt-web-platform-tests-e10s-9: eHKbCNPAQKqaNB0j05Sm7Q
+ test-macosx1014-64-shippable/opt-web-platform-tests-reftests-e10s-1: TPGpTKprRJa42LJ-sAmRxw
+ test-macosx1014-64-shippable/opt-web-platform-tests-reftests-e10s-2: YCMHeYl3R86sqYkE8cJrbQ
+ test-macosx1014-64-shippable/opt-web-platform-tests-reftests-e10s-3: fJqrFJLvRKq07jhyaurVow
+ test-macosx1014-64-shippable/opt-web-platform-tests-reftests-e10s-4: N8aYOcZOT0Wtm4xityZ2Ig
+ test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-e10s-1: Fdvelf_MT_itXzPN1jjOLA
+ test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-e10s-2: d-w6p-pjRie_5EwapkitQg
+ test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-e10s-3: ZZ9mctfTRvWPjTms-s7gKA
+ test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: RL3Q0ojfS_WJfRDbubVAGw
+ test-macosx1014-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: TNgOdBetSWeUxDaJk2a8qA
+ test-macosx1014-64-shippable/opt-xpcshell-e10s-1: LskvOy6bR2W0GlcfXraEvQ
+ test-macosx1014-64-shippable/opt-xpcshell-e10s-2: C17wM9-gQXqqZcDOExV3Qg
+ test-macosx1014-64/debug-cppunit-1proc: WyHzdcEiRLWiJfOPNQbIrw
+ test-macosx1014-64/debug-crashtest-e10s: fqdVTYvpQ6WvVvYcl6jwBA
+ test-macosx1014-64/debug-firefox-ui-functional-local-e10s: CllJWuWnTC6EvIEJrq2AlA
+ test-macosx1014-64/debug-firefox-ui-functional-remote-e10s: TyVgpXgqTM62k06SMvRdyg
+ test-macosx1014-64/debug-gtest-1proc: Diowb7-SRp6eqiKB2GS3vA
+ test-macosx1014-64/debug-jittest-1proc-1: ST1Fqh5aRCuzZue8HpJdRA
+ test-macosx1014-64/debug-jittest-1proc-2: Y2adDgdhTLeUEEyF3VWgPA
+ test-macosx1014-64/debug-jittest-1proc-3: No8mM6esQJCuf16HMByB2A
+ test-macosx1014-64/debug-jsreftest-e10s-1: MpHZwjJjTf6JZ02fYw3dBg
+ test-macosx1014-64/debug-jsreftest-e10s-2: J5yv1W1_RjKcb9w0fK2T3g
+ test-macosx1014-64/debug-jsreftest-e10s-3: brbzAx1JTvCoZQh739K-VQ
+ test-macosx1014-64/debug-marionette-e10s: fnBi1dt3SZqwTF8rcsYPng
+ test-macosx1014-64/debug-mochitest-a11y-1proc: XSNLQpfgQIe_BjaUIr3Nhw
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-1: YyZPZER9Ssmokq1i5RhyGw
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-10: aBSbQ2CoS3S6h2uG7xEFKw
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-11: fDTAZnTpSaiPFee4evUpiA
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-12: AMWiNNqjRTCOErr7LvdIfQ
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-13: IpAe72WYTSaMoTyA_rDYBQ
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-14: J_tFfsx2SxCkiAMKSuUyig
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-15: A8G-gqRRTr6M7qSQ0fNrTg
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-16: NvSK29UCRj-iwvfzOQfpmA
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-2: c-Po84E_STa6FLzsno4YBg
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-3: SrtmQMVrSoejqrkZhIkcZg
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-4: ALDXCdriTsmxNLKT5mBlgA
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-5: GAQIGcERS2mgOQLNbZCgag
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-6: dImpreZSTrKEzAkEmiFmPA
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-7: GhhwlhYYQ1uU2PZpFKWT_A
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-8: QN78iv54TlOrCdm7bvrLiw
+ test-macosx1014-64/debug-mochitest-browser-chrome-e10s-9: IrRQHdd4TRuv1Ba81oIdag
+ test-macosx1014-64/debug-mochitest-chrome-1proc-1: UX4FzhusQZy9vAbwcQw-iQ
+ test-macosx1014-64/debug-mochitest-chrome-1proc-2: S3QlLIGVQbKVvLVDXxNcMA
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-1: Cl3Y0KbTTPuNI44uRUSVeg
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-2: VO3oA7hNTuyc3Pmw6-sKmQ
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-3: DL1AUk7aSZiHOMTWsRKBfg
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-4: BDgR1G0jSBCa11Dyax7GRg
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-5: GieIfWQ3QSqJYHu-sykpog
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-6: AX2tXyoGRAmYwH0Uxi4KLQ
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-7: PA_rY4bbQHKdZUDv7GhH_g
+ test-macosx1014-64/debug-mochitest-devtools-chrome-e10s-8: AX8VvtMtS9CU4NGnmbyjMg
+ test-macosx1014-64/debug-mochitest-e10s-1: PgwNPb32TbWRP2msBM20uw
+ test-macosx1014-64/debug-mochitest-e10s-2: THYR_hGiRy6I51wwUN71Jg
+ test-macosx1014-64/debug-mochitest-e10s-3: J84Y4PKtT7uZxPGloD6MTA
+ test-macosx1014-64/debug-mochitest-e10s-4: HIfg6xMrQPWM8tW9-qEbHw
+ test-macosx1014-64/debug-mochitest-e10s-5: HQd3g2DXTs2l8reIjWrNnw
+ test-macosx1014-64/debug-mochitest-gpu-e10s: Zv-iIZsQTAik2EqHQvs9mg
+ test-macosx1014-64/debug-mochitest-media-e10s-1: Hag6_WdgQW2T1X_8xIH7eg
+ test-macosx1014-64/debug-mochitest-media-e10s-2: UmyWsxpLSf6vwLNxFlp2Bw
+ test-macosx1014-64/debug-mochitest-media-spi-e10s-1: V4VbammQQN--BQW2E1rQ6w
+ test-macosx1014-64/debug-mochitest-media-spi-e10s-2: LQW9MOrrTr2vjkuNV1TT7Q
+ test-macosx1014-64/debug-mochitest-remote-e10s: TksoLT2MQWyJGrC9PKBBeA
+ test-macosx1014-64/debug-mochitest-webgl1-core-e10s: PmeI2Nk_QPqveTm8CJa7Gg
+ test-macosx1014-64/debug-mochitest-webgl1-ext-e10s: aVatpCOsQXW2pztYflBJDA
+ test-macosx1014-64/debug-mochitest-webgl2-core-e10s: YY1SldiJQhOpmpMy7gAAbQ
+ test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-1: beSrmw0oTTSc4lZa1IDz-Q
+ test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-2: bACGmgBpSauqs7Ziq1YS3w
+ test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-3: cBhGk0BlS_SzmfgeXltZvw
+ test-macosx1014-64/debug-mochitest-webgl2-ext-e10s-4: fpU404bpTeqtfRg1hewJxA
+ test-macosx1014-64/debug-mochitest-webgpu-e10s: EwIvdOhNQgqlUGGs74W0SA
+ test-macosx1014-64/debug-reftest-e10s-1: Hru1MNwQToqC9qVxjmdGKg
+ test-macosx1014-64/debug-reftest-e10s-2: cw4bqoOaT1uigMVMEWMTHw
+ test-macosx1014-64/debug-reftest-e10s-3: dV0u0siwRgOiiwa1aM6_0Q
+ test-macosx1014-64/debug-reftest-e10s-4: G6i9Es1AS8m8pmPepAZFQw
+ test-macosx1014-64/debug-telemetry-tests-client-e10s: MtZh44RoQZukLMzpRi_big
+ test-macosx1014-64/debug-web-platform-tests-crashtests-e10s: UrWHtu5MS6SHxktM3R04FQ
+ test-macosx1014-64/debug-web-platform-tests-e10s-1: MX1evKkGQIqpHDvr94IuoQ
+ test-macosx1014-64/debug-web-platform-tests-e10s-10: Box0VsSDTlWUPKaAGllqyA
+ test-macosx1014-64/debug-web-platform-tests-e10s-11: ezla5QXaSC2ga93BJKrm4w
+ test-macosx1014-64/debug-web-platform-tests-e10s-12: eZCEEUpuTrqOcEMcQpGDvA
+ test-macosx1014-64/debug-web-platform-tests-e10s-13: W1nzDRbhQh2h5gBbta9MEA
+ test-macosx1014-64/debug-web-platform-tests-e10s-14: Fo7uiCyXRIqFochI3rEgxQ
+ test-macosx1014-64/debug-web-platform-tests-e10s-15: T3Qre-1aQvSx6ps1JSYwwQ
+ test-macosx1014-64/debug-web-platform-tests-e10s-16: TdxcPtlJQoWTIP3e4cfhdA
+ test-macosx1014-64/debug-web-platform-tests-e10s-17: fwVbd1ssQjiJK9BNlfmyBw
+ test-macosx1014-64/debug-web-platform-tests-e10s-18: RU03PQfeS8yxLNa2HXFBUw
+ test-macosx1014-64/debug-web-platform-tests-e10s-19: fki8nxodTqKjlhaDZNJp2A
+ test-macosx1014-64/debug-web-platform-tests-e10s-2: Y6YIDq96Qh-ksL7ehjfFNg
+ test-macosx1014-64/debug-web-platform-tests-e10s-20: dRIFqpcrS06nXCXdIIY8sg
+ test-macosx1014-64/debug-web-platform-tests-e10s-3: Msi84u_YSx-InU4vdCkOOg
+ test-macosx1014-64/debug-web-platform-tests-e10s-4: dryLRBhIQFGblmPPA7-kSg
+ test-macosx1014-64/debug-web-platform-tests-e10s-5: CEWoLzw0QQWEkPuGvW1-Rg
+ test-macosx1014-64/debug-web-platform-tests-e10s-6: TH6FB6oLSgKfwaT0E_jP8w
+ test-macosx1014-64/debug-web-platform-tests-e10s-7: f2iYNcSpQv25MDdP1K-ZrA
+ test-macosx1014-64/debug-web-platform-tests-e10s-8: IVC22Y6vQ1-whYnE7bej6w
+ test-macosx1014-64/debug-web-platform-tests-e10s-9: RF0vmFjnRQiZBo8NUaqdWw
+ test-macosx1014-64/debug-web-platform-tests-reftests-e10s-1: cmp2EXGrQUaV8wCCLoKsfQ
+ test-macosx1014-64/debug-web-platform-tests-reftests-e10s-2: ZdgRbPv1RxWSdR2_4RDMGQ
+ test-macosx1014-64/debug-web-platform-tests-reftests-e10s-3: Mt6pW-2XTQyRLHd_uLkgqw
+ test-macosx1014-64/debug-web-platform-tests-reftests-e10s-4: O-R9t_s-RFCivsSJSO3stg
+ test-macosx1014-64/debug-web-platform-tests-reftests-e10s-5: anx6X4F_T22cn1hjYAvU6Q
+ test-macosx1014-64/debug-web-platform-tests-reftests-e10s-6: OjNRU4fxSAmbyv-9tA0dmA
+ test-macosx1014-64/debug-web-platform-tests-wdspec-e10s-1: KbjkuMJZSna_4dYqSpSvtw
+ test-macosx1014-64/debug-web-platform-tests-wdspec-e10s-2: Gk6r4C12QrK9CrRui_mL3w
+ test-macosx1014-64/debug-web-platform-tests-wdspec-e10s-3: AZLwLg4zS_CXpWccADRbVA
+ test-macosx1014-64/debug-xpcshell-e10s-1: KV8LXmaaStuejUYSXqJfIQ
+ test-macosx1014-64/debug-xpcshell-e10s-2: ECdB5IMUSlyLMnu9oC7VNw
+ test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-fenix-amazon: QuS5139jTnWnbE5yVSLPxw
+ test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-fenix-cold-amazon: HKsNkJsFQHaM9dmOCydAWw
+ test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-fenix-cold-youtube: alDVmbPfRwiPZyOsE-3eWA
+ test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-fenix-youtube: I8-ba2AuSkyPrnaU0nQk9w
+ test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-geckoview-cold-amazon: KkSAFB5mTTuM2_gtiME9Vg
+ test-vismet-android-hw-p2-8-0-android-aarch64/pgo-browsertime-tp6m-geckoview-cold-youtube: byeZACS8TY6N3gnpKjuBtw
+ test-vismet-linux64-shippable/opt-browsertime-tp6-firefox-amazon: XtSBo42GRkOtKtN9mRFLZA
+ test-vismet-linux64-shippable/opt-browsertime-tp6-firefox-cold-amazon: EsURMZyRR4-5IzyK1SbYew
+ test-vismet-macosx1014-64-shippable/opt-browsertime-tp6-firefox-amazon: S2Cgwd1dSE-aF608QrozQQ
+ test-vismet-macosx1014-64-shippable/opt-browsertime-tp6-firefox-cold-amazon: CjLXqvcZQQm5KVzxXl_-Pg
+ test-vismet-windows10-64-shippable/opt-browsertime-tp6-firefox-amazon: CssYgB5eTKCsrSRNC2RvUA
+ test-vismet-windows10-64-shippable/opt-browsertime-tp6-firefox-cold-amazon: OnYA77lvTvSfxIzh2dyCzw
+ test-vismet-windows7-32-shippable/opt-browsertime-tp6-firefox-amazon: FRHkJeJ2QUGBLCvXFoNn8Q
+ test-vismet-windows7-32-shippable/opt-browsertime-tp6-firefox-cold-amazon: d_JtccWVSn2UtdXJY3TJhQ
+ test-windows10-64-asan/opt-cppunit-1proc: edrtfN2jTEWsSJqOLIcArA
+ test-windows10-64-asan/opt-crashtest-e10s: NY6lFbzcS5eZS0EgSj_HnA
+ test-windows10-64-asan/opt-firefox-ui-functional-local-e10s: HcrrKUE0TKGYVccJ52Va0Q
+ test-windows10-64-asan/opt-firefox-ui-functional-remote-e10s: EdmSu-w5TMyKuv7asTb2Ig
+ test-windows10-64-asan/opt-gtest-1proc: Jpnj7JGgTmSfoJVqURwfMA
+ test-windows10-64-asan/opt-jsreftest-e10s-1: GFlsv67ZR_OJOwvhf_pSwA
+ test-windows10-64-asan/opt-jsreftest-e10s-2: Fm9fl6PjQvaNjFXPolBNtw
+ test-windows10-64-asan/opt-jsreftest-e10s-3: cxestYDwRpOoo92AXdyFsA
+ test-windows10-64-asan/opt-marionette-e10s: ELN4TC--RmGaMLS1Jd6jiA
+ test-windows10-64-asan/opt-mochitest-a11y-1proc: EHATVLVSRyut-7BsrntCkg
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-1: X9onROmSQzezb-vMuuzNBw
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-2: GM1ds_E3RvWuS8f_Mq70gA
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-3: UpS1ITuuRqa6nEoaPOsBYg
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-4: awntaKfhQ3eUimfBATK8QQ
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-5: TmJoUIMyQkqI7hBUkIg7_A
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-6: dLExVqRaSVm9R63s5rMCLw
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-7: eeiZoERgTb2kV0byZa0tVA
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-8: T3FBNkscSp-nq3Elqe9SMA
+ test-windows10-64-asan/opt-mochitest-browser-chrome-e10s-9: eh4-293MQgq5VzDYPvQEMA
+ test-windows10-64-asan/opt-mochitest-chrome-1proc-1: OnGBCsk4Tvu3h4LG7TIv6A
+ test-windows10-64-asan/opt-mochitest-chrome-1proc-2: BFWfNYxURbOs2r8k-TUuhw
+ test-windows10-64-asan/opt-mochitest-chrome-1proc-3: Iw9SNfSKT4C0qTjAvLGItA
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-1: Xo-VOgRcRJStIyumw45Vgg
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-2: dPeqPZEHQqW0DfqopW-Xuw
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-3: RR-oqZupR0ih8wkxZ5FWoA
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-4: LPbz8EnaSgiL_04YX6yUqQ
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-5: Zph9tHYPRTiHllBZb6ggag
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-6: LRH3becWRVmM4O4kLVU08g
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-7: H8QRWGMnQaGnIJFZHBkWiw
+ test-windows10-64-asan/opt-mochitest-devtools-chrome-e10s-8: BxglYab4TlOXjW7UZdLQ2g
+ test-windows10-64-asan/opt-mochitest-e10s-1: WfxQOJg-TtOmKHiS7FydKQ
+ test-windows10-64-asan/opt-mochitest-e10s-2: Ip7Dg2ISSHq3AI4GhbzHXw
+ test-windows10-64-asan/opt-mochitest-e10s-3: Pe7jsSQdTmC-fV8vcYc6mg
+ test-windows10-64-asan/opt-mochitest-e10s-4: Gt2-FXlJQAe4OUCxS7wcTw
+ test-windows10-64-asan/opt-mochitest-e10s-5: XcnSxAkHTRK70hkGYYPIjg
+ test-windows10-64-asan/opt-mochitest-gpu-e10s: NsdgGdINSyKbCz0JJzyjtA
+ test-windows10-64-asan/opt-mochitest-media-e10s: a_BL1MTNR6yZxqHM0BOy_A
+ test-windows10-64-asan/opt-mochitest-media-spi-e10s: I-ZYfUKPQP6KNF8AUZB19A
+ test-windows10-64-asan/opt-mochitest-remote-e10s: a4cuSMz9SJGVlQD2pHmLpA
+ test-windows10-64-asan/opt-mochitest-webgl1-core-e10s: Hk8tp_esQCKV9dAZ30xkuA
+ test-windows10-64-asan/opt-mochitest-webgl1-ext-e10s: TCdAFCTiSQOcwqEvhLsy5A
+ test-windows10-64-asan/opt-mochitest-webgl2-core-e10s: H6Am9JenQ6CscJj4FdkXAQ
+ test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-1: UaMYJixAT9OrwP27ohoY0Q
+ test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-2: Nt4umXPwSU66DUVAIFtXSQ
+ test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-3: EnLMl8cvT821iZ-nLzyPuA
+ test-windows10-64-asan/opt-mochitest-webgl2-ext-e10s-4: NSRhEkbmSQSNRj4f0p_z3g
+ test-windows10-64-asan/opt-mochitest-webgpu-e10s: UlQiQQlbQpObr4MyF66qhQ
+ test-windows10-64-asan/opt-reftest-e10s-1: Tq01tHQ2RD-XO3BUgAS1fw
+ test-windows10-64-asan/opt-reftest-e10s-2: WMEPT_xETJ6BbR8xk3jhDA
+ test-windows10-64-asan/opt-reftest-e10s-3: B6kwVbDvTsG6JoVLB8VMFQ
+ test-windows10-64-asan/opt-telemetry-tests-client-e10s: DMmtDudUQd6Wl_0DhUpeKg
+ test-windows10-64-ccov/opt-awsy-base-e10s: HbAnTrp3QeC-HooyRPpdZQ
+ test-windows10-64-ccov/opt-awsy-e10s: GPDOuaFWTaK-8OTJ34StYQ
+ test-windows10-64-ccov/opt-cppunit-1proc: Aq1_Hr3aR9KWFB99A191YQ
+ test-windows10-64-ccov/opt-crashtest-e10s: DEx81EuLRbuvsHrsQaZ7Yg
+ test-windows10-64-ccov/opt-firefox-ui-functional-local-e10s: AoJ3_jsNRTW3mVrcJpzq6A
+ test-windows10-64-ccov/opt-firefox-ui-functional-remote-e10s: Tx4WZIjuTla7tPuMc56ijA
+ test-windows10-64-ccov/opt-gtest-1proc: eDiEioDRRqStnmx2RPfsSw
+ test-windows10-64-ccov/opt-jittest-1proc-1: eRrPP9GUSuCoSdIbNO9P7A
+ test-windows10-64-ccov/opt-jittest-1proc-2: Hfpx1XMtQkiC_MJqcKx1pw
+ test-windows10-64-ccov/opt-jittest-1proc-3: InAc3hfDTBqsqJGfW6LCow
+ test-windows10-64-ccov/opt-jittest-1proc-4: INcz-cKiTDatN-iEocYxLg
+ test-windows10-64-ccov/opt-jittest-1proc-5: Ac3f-KzzSjiUtM3mS2Q5Uw
+ test-windows10-64-ccov/opt-jittest-1proc-6: elfmcJBIT2aOhfuzAFMM6A
+ test-windows10-64-ccov/opt-jsreftest-e10s-1: dh2MfR5ERXeEXdhx7z86Ng
+ test-windows10-64-ccov/opt-jsreftest-e10s-2: Vq5JkshlSwK40xuyAdPlCw
+ test-windows10-64-ccov/opt-jsreftest-e10s-3: UKk0Ro8zSNm4onf93AA3SQ
+ test-windows10-64-ccov/opt-jsreftest-e10s-4: WSQyTbBkTwCX7Hdbn8Ew-w
+ test-windows10-64-ccov/opt-jsreftest-e10s-5: U04EpkibR6Oruzs5M2-19A
+ test-windows10-64-ccov/opt-marionette-e10s: Nm918BTzSDGPRyLBZMo5wQ
+ test-windows10-64-ccov/opt-marionette-gpu-e10s: L53MmL-_TBa_N1OW8K0QhA
+ test-windows10-64-ccov/opt-mochitest-a11y-1proc: Nrwqc7BsTSuCbAcag8U8Kw
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-1: bobK8Jg4RySFc02v4AknNQ
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-10: e3riGJskS3OoZlk3BfLHnQ
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-11: C5uJezpfQMe07b-F3modFA
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-12: HpN6PDvXRM2W0iT2BRf2AA
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-13: cZfrTdUnSHK67gRpFxiECQ
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-14: VMO-LOYaRt2QGKVJhDah8g
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-2: LjO6c2shTCOry0y2JoDnDA
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-3: UnAnvcwbR1S7EQIgg7rGCA
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-4: RLwzj_5XSbyBLlk1JwiAfA
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-5: JVmLIblFRv27H-nZDL6f2g
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-6: IJgzQKd3QuaQNR4G69EPBg
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-7: ChKNUV3pTIGFzFsSd03nvA
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-8: PVmPp-VxTeC2AOKId59Xfg
+ test-windows10-64-ccov/opt-mochitest-browser-chrome-e10s-9: NDS1qot3STKGkF_vl-qEAA
+ test-windows10-64-ccov/opt-mochitest-chrome-1proc-1: LQkf1pAVTISBygHsJFrqLg
+ test-windows10-64-ccov/opt-mochitest-chrome-1proc-2: EqqDLXDjRD28Gcr2BcnCnw
+ test-windows10-64-ccov/opt-mochitest-chrome-1proc-3: CEO6x2_6Q0CY7YIEWKskkg
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-1: cxfVpvZvTuW-mA2bPKoLeQ
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-10: ZEryV1WvSXOBv2WilTbMDw
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-11: TyAq486QROS-ZzkLa_iIQQ
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-12: ZdJGC8JSRRmTMNyn9YM50A
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-13: IjOOo2h8QNCntwC7D5TIPw
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-14: TSF4llS8SkSwbSQtKfhnVg
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-15: Y1M49SioT5aESnSzalPsHQ
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-16: DkkPzeQmSdCPb6oJgMI9tg
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-2: bEUu3F11TPSasK3_ZrkgsA
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-3: VegmqXWqRMmRwOXbcEERxg
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-4: GvTjBy5IRuCdAHgC9-u5OA
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-5: FtEYsDECTzGpGQDmMbzasA
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-6: IyX5wssBROGqkbxYdXTxVQ
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-7: II1XCFzVRBW8YyqFn3UgbQ
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-8: Bf2NOF8PTzGBtZbQDWpOpw
+ test-windows10-64-ccov/opt-mochitest-devtools-chrome-e10s-9: e8ca8DLJQTGrLMkvbIEoWg
+ test-windows10-64-ccov/opt-mochitest-e10s-1: VADAKqiqRfieBIWsVVf7_g
+ test-windows10-64-ccov/opt-mochitest-e10s-10: b7M31EwlRGGsf540T6lHDw
+ test-windows10-64-ccov/opt-mochitest-e10s-2: bqYRI84YQge5NAJFNUfF9A
+ test-windows10-64-ccov/opt-mochitest-e10s-3: YSkhBVgXSlGK79Y39K3p2w
+ test-windows10-64-ccov/opt-mochitest-e10s-4: RZtvV0GPTN-B4ZQybv5oww
+ test-windows10-64-ccov/opt-mochitest-e10s-5: TOVW3YA0TG6ufIH_jleWFQ
+ test-windows10-64-ccov/opt-mochitest-e10s-6: Zl96eaCbTMe1wqE352CZVA
+ test-windows10-64-ccov/opt-mochitest-e10s-7: b9_9QiRHTtyi-g_2G24H0Q
+ test-windows10-64-ccov/opt-mochitest-e10s-8: CPmoCQiqQ96qxKyf6GhpAg
+ test-windows10-64-ccov/opt-mochitest-e10s-9: JogBFc9pShC6AEiLXQEZ5w
+ test-windows10-64-ccov/opt-mochitest-gpu-e10s: ZZjtdhilTLe8Itbu5iGLvQ
+ test-windows10-64-ccov/opt-mochitest-media-e10s: I0suGPeQTjeRN6nL49CV1Q
+ test-windows10-64-ccov/opt-mochitest-media-spi-e10s: LG3U4bn6SmaXyNNhuIGOIQ
+ test-windows10-64-ccov/opt-mochitest-remote-e10s: Fsez0RE6R3Wf-n36x5JVew
+ test-windows10-64-ccov/opt-mochitest-webgl1-core-e10s: ditvn0l7RTS1TRSaKsMLUQ
+ test-windows10-64-ccov/opt-mochitest-webgl1-ext-e10s: TsYH1edBQxyRrn1TorsKhA
+ test-windows10-64-ccov/opt-mochitest-webgl2-core-e10s: KykMz-7HQpG9mi2qQDiUCg
+ test-windows10-64-ccov/opt-mochitest-webgl2-ext-e10s-1: fqgEgX0KT7W0Azi9H3tPlA
+ test-windows10-64-ccov/opt-mochitest-webgl2-ext-e10s-2: B8_aM4zPRe2UgGxH2_mN5A
+ test-windows10-64-ccov/opt-mochitest-webgl2-ext-e10s-3: TQUycpDtSk-0m09Luvey7w
+ test-windows10-64-ccov/opt-mochitest-webgl2-ext-e10s-4: PDZHlFuDTVCizteO2Y0A5w
+ test-windows10-64-ccov/opt-mochitest-webgpu-e10s: C1FxQ85RS0GujF1aPkFBbA
+ test-windows10-64-ccov/opt-reftest-e10s-1: VjPkGfqyQJ27BZ-39I3Wug
+ test-windows10-64-ccov/opt-reftest-e10s-2: TGGOo5PMSE6sDt3BYRtcFg
+ test-windows10-64-ccov/opt-reftest-e10s-3: R4tKin0kQAWY3aV9UaQg8Q
+ test-windows10-64-ccov/opt-reftest-e10s-4: S9QsYTjsStuv7hYAZjxk0A
+ test-windows10-64-ccov/opt-reftest-e10s-5: ebsT3_sQQkyDo8pbw5l-Hw
+ test-windows10-64-ccov/opt-reftest-e10s-6: JTcCT1KwTHqowLHtXq78EA
+ test-windows10-64-ccov/opt-reftest-e10s-7: SaD1tPCsQGa1stZFoglG1w
+ test-windows10-64-ccov/opt-reftest-e10s-8: FPH1ZHYPRKiogtaywuoUsw
+ test-windows10-64-ccov/opt-reftest-e10s-9: SCrykmIXSZOqmSNCrBLp7Q
+ test-windows10-64-ccov/opt-telemetry-tests-client-e10s: fJ9xTmrRQGaiV_iMvADikQ
+ test-windows10-64-ccov/opt-test-coverage-e10s: PieLJke-TAe_sWg7FJb5Hw
+ test-windows10-64-ccov/opt-test-coverage-wpt-e10s-1: P_C1j2RNS5aVWBTZVH1epw
+ test-windows10-64-ccov/opt-test-coverage-wpt-e10s-2: dv0iRtb9QKyzR-pRtqWJiA
+ test-windows10-64-ccov/opt-test-coverage-wpt-e10s-3: a0k8hNInSlawH4ElLvjZEw
+ test-windows10-64-ccov/opt-web-platform-tests-crashtests-e10s: RKUMQ3-RS4WEP-U-HQIRYQ
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-1: O8vm_uunQUOqticf9u4_uA
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-10: QCaI1TuNQfi_HfORuvTn1Q
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-11: P6khWErtQGuvKx39JnR78w
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-12: fVOQDt39Ra6cw7jiHCbNLw
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-13: T9-YYv4JRxCgKXAcyRJ--w
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-14: LoMsTmAaS4m0Cj1o1kl_cw
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-15: ClfxqsMeQgipES2HwpUuaQ
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-16: G4DNLJ3rT5q6Vfaq_n9WZg
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-17: ba1s_m-qQ5yFKLDq6uNMkw
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-18: FEGlrL3eRXCED1CeU5Dq1g
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-2: ej-RicfBRKC0IRLEd0GYxQ
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-3: fIT3hjc3TsG4vDWZrdXHOQ
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-4: RcnrCaCvSgyV_fOgJqZd4w
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-5: bEnkrvsxTwGGISw6He-6Rw
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-6: Eo4-hE7iQK-ZJ3LxZ6cy8w
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-7: eaZdfJutQh2UpF6CKmgAVg
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-8: UANaYL-TSaeyuqvAY-fV-A
+ test-windows10-64-ccov/opt-web-platform-tests-e10s-9: eDJM2IOaRWGlsBdK6kcAQg
+ test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-1: Qki6KhQjTh2Nh6FMh2718Q
+ test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-2: UzW55Cd7RFGqynfptAQDNA
+ test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-3: dA1Z7zkDRMunBq_rlmgIIg
+ test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-4: S2NCTx16REGZB1DpKUmr-g
+ test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-5: aeckxui7QIS9zG_nt-shOw
+ test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-6: PZBpkqbuQdWJvKM1xm650w
+ test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-7: EBo4pywuTMKKrvCo1Lw1MA
+ test-windows10-64-ccov/opt-web-platform-tests-reftests-e10s-8: DXEtTpZFRFmo3D_74ZqAng
+ test-windows10-64-ccov/opt-web-platform-tests-wdspec-e10s-1: Xip1n9UESq2u4rcGsqr4Fw
+ test-windows10-64-ccov/opt-web-platform-tests-wdspec-e10s-2: eDnDpFYURuyvC8I71poIgg
+ test-windows10-64-ccov/opt-web-platform-tests-wdspec-e10s-3: Vtn8oFXrRsK3QkN6ohrKJQ
+ test-windows10-64-ccov/opt-web-platform-tests-wdspec-e10s-4: GepFaP1YTDWXUzE9j13tFA
+ test-windows10-64-ccov/opt-xpcshell-e10s-1: WGyRpOaHQ_OrKzGvEKmJSw
+ test-windows10-64-ccov/opt-xpcshell-e10s-2: aJ9AGP5gRseKYBcnfodrvA
+ test-windows10-64-ccov/opt-xpcshell-e10s-3: IN_urmsPRh2j3dXlqZXj1g
+ test-windows10-64-ccov/opt-xpcshell-e10s-4: HI0wfVaaShuM8ZvReUPvgw
+ test-windows10-64-ccov/opt-xpcshell-e10s-5: CS245xVeSK-pfkYCECry4Q
+ test-windows10-64-ccov/opt-xpcshell-e10s-6: GoSyXXEEQaaFWn-O1nC5iw
+ test-windows10-64-mingwclang/debug-cppunit-1proc: YTVDC5X-SXi0cj8D86HPeQ
+ test-windows10-64-mingwclang/debug-firefox-ui-functional-local-e10s: DNPG8sFoTfa0UZJI0cZWZQ
+ test-windows10-64-mingwclang/debug-firefox-ui-functional-remote-e10s: NegZXqOzRvOTa5krGjlnWQ
+ test-windows10-64-mingwclang/debug-mochitest-a11y-1proc: NK6dfWPoTHqubw6gTvtpaA
+ test-windows10-64-mingwclang/debug-mochitest-gpu-e10s: SBUQ1DHxTaSi09ZebNYq0Q
+ test-windows10-64-mingwclang/debug-mochitest-webgl1-core-e10s: Fs--8o4AShuBkozlDJKH3g
+ test-windows10-64-mingwclang/debug-mochitest-webgl1-ext-e10s: QjCQwPc1Sj6TQMspdKv4XA
+ test-windows10-64-mingwclang/debug-mochitest-webgl2-core-e10s: UfasHslvQCqgZWPpz1pibA
+ test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-1: GaL6G18FQbCsykdlmwNUKg
+ test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-2: fWVBLTCQRJ6LGqpuu8Z2RA
+ test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-3: FFThUfWFTYKzhoxp06QdPw
+ test-windows10-64-mingwclang/debug-mochitest-webgl2-ext-e10s-4: VWFInMFnSUyseRP3neSk5Q
+ test-windows10-64-mingwclang/debug-mochitest-webgpu-e10s: XdqZu3fSTBmMTPIST4ErzA
+ test-windows10-64-mingwclang/debug-reftest-e10s-1: aFqQGnIdTHiNVmIJQSQw5w
+ test-windows10-64-mingwclang/debug-reftest-e10s-2: CkrFOVi9Qeyck8Avl2yPyA
+ test-windows10-64-mingwclang/debug-reftest-e10s-3: TS6JidUcQqe49r7Cr5YRPA
+ test-windows10-64-mingwclang/debug-reftest-e10s-4: OwDMHmjcRO2i0EluQYgDpg
+ test-windows10-64-mingwclang/debug-telemetry-tests-client-e10s: B3ojEoT8QoKTSvse-MUHgA
+ test-windows10-64-mingwclang/opt-cppunit-1proc: E6v3Z02oRvmOay6FC8xlrQ
+ test-windows10-64-mingwclang/opt-mochitest-gpu-e10s: KyumjBohTpSDhynaycV_zA
+ test-windows10-64-qr/debug-crashtest-e10s: WsijRfuQRyqwlTWfvMJK-w
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-1: Ore6MSsySROTuPFPeyQ5EQ
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-2: Kd2RAJyqQKq8IAtr9xTOiA
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-3: JQJUOMZHRMexgRjLsWgepQ
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-4: RsJ1GZGnTACWPPx2VERU8w
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-5: Z-9HOQTmTUKfZaVsNDRVeg
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-6: MfmNH9tiT7a0-MYKaQrelg
+ test-windows10-64-qr/debug-mochitest-browser-chrome-e10s-7: dFXdEfrASO-6woRAHhLNKQ
+ test-windows10-64-qr/debug-mochitest-e10s-1: UR1B0uEGRcySd9Xv0K374A
+ test-windows10-64-qr/debug-mochitest-e10s-2: X0rbAUObTyy0vbKhXVGFKg
+ test-windows10-64-qr/debug-mochitest-e10s-3: UwMkBJVKSMOnBAaTQHG0BQ
+ test-windows10-64-qr/debug-mochitest-e10s-4: HQFNQqHZS0SqsqGndQYaqA
+ test-windows10-64-qr/debug-mochitest-e10s-5: A-VLbddaRjieHwd8EYvnKQ
+ test-windows10-64-qr/debug-mochitest-gpu-e10s: AH7_3ZtmQU-gdZFEoawZvw
+ test-windows10-64-qr/debug-mochitest-media-e10s: CapS9-Q6Qx-7sHXVLTRwFw
+ test-windows10-64-qr/debug-mochitest-media-spi-e10s: TUuWViXdRgykpWo7sym5iA
+ test-windows10-64-qr/debug-mochitest-webgl1-core-e10s: abRBq7TlRS2oXy60CieLJQ
+ test-windows10-64-qr/debug-mochitest-webgl2-core-e10s: SgyFus68RyiYbeFSJbJwbg
+ test-windows10-64-qr/debug-mochitest-webgpu-e10s: JjVJ6g6tSOmrMQ-IYTX2eg
+ test-windows10-64-qr/debug-reftest-e10s-1: U7SldFgcT7apF8XspinzKg
+ test-windows10-64-qr/debug-reftest-e10s-2: D1vaE3aeR66K11_6sy0BZw
+ test-windows10-64-qr/debug-reftest-e10s-3: apAFVMbzShe4Uxpp605WrA
+ test-windows10-64-qr/debug-reftest-e10s-4: EbxKx5-AR6yza9flFVE0Ug
+ test-windows10-64-qr/debug-web-platform-tests-crashtests-e10s: Pa1Jf2jQTiSturo95eqvuQ
+ test-windows10-64-qr/debug-web-platform-tests-e10s-1: IQp6UQyXSwmimhLqfbK_ug
+ test-windows10-64-qr/debug-web-platform-tests-e10s-10: S89wh8vHR8m1Na7_fxW-bA
+ test-windows10-64-qr/debug-web-platform-tests-e10s-11: Gzqlk8E3RP2KVxg1yAOYlA
+ test-windows10-64-qr/debug-web-platform-tests-e10s-12: IF7ee6yAQQq2_Vq9fG43xw
+ test-windows10-64-qr/debug-web-platform-tests-e10s-13: EYqmktAsSvWm4uVuQMmx3w
+ test-windows10-64-qr/debug-web-platform-tests-e10s-14: HQr8mmPmR-yRF3SAcGyllQ
+ test-windows10-64-qr/debug-web-platform-tests-e10s-15: eS_BroCJR6-n6O9Hd1iq_Q
+ test-windows10-64-qr/debug-web-platform-tests-e10s-16: bgldeSQVQZOf9AznHFoi5A
+ test-windows10-64-qr/debug-web-platform-tests-e10s-17: Ul__9u1HS8yQVOpgVQCY6w
+ test-windows10-64-qr/debug-web-platform-tests-e10s-18: dwl3uJ_NQ8iwREx1ekkMug
+ test-windows10-64-qr/debug-web-platform-tests-e10s-2: PENSTttTQqSG6_KBENlGog
+ test-windows10-64-qr/debug-web-platform-tests-e10s-3: EmCpYmKYSaC_xQqArTplZw
+ test-windows10-64-qr/debug-web-platform-tests-e10s-4: PE5qf9xmR-6Vxd-KGZYRsw
+ test-windows10-64-qr/debug-web-platform-tests-e10s-5: JbI1_niSQEWmVAiR3-iesA
+ test-windows10-64-qr/debug-web-platform-tests-e10s-6: G0qQGKriQDKuZ57FCfmDJQ
+ test-windows10-64-qr/debug-web-platform-tests-e10s-7: L77jmbZPQvWqvslkuND1bA
+ test-windows10-64-qr/debug-web-platform-tests-e10s-8: ff0VlMR2Tm-UNixEbkp6Bw
+ test-windows10-64-qr/debug-web-platform-tests-e10s-9: foAl0wumQZi3issnC7ugzQ
+ test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-1: BcgIsrqVRlerj0UBG5f_kg
+ test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-2: I2DKh9OETou6qVw8PAQJjA
+ test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-3: Vc-bZ4qNS0CAb0UeqjFkfw
+ test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-4: Nj3XhTzpTs-Gik1SJTJpsw
+ test-windows10-64-qr/debug-web-platform-tests-reftests-e10s-5: KK0MqiHOSoiAbU4DWyHogA
+ test-windows10-64-qr/debug-web-platform-tests-wdspec-e10s-1: DJ6nXfcZQQm_ZpGGPHtRdA
+ test-windows10-64-qr/debug-web-platform-tests-wdspec-e10s-2: SOX0B5fqQ1yx3_tKI5U2JA
+ test-windows10-64-qr/debug-web-platform-tests-wdspec-e10s-3: K-pK738nSdqG8AsGruWupg
+ test-windows10-64-qr/opt-awsy-base-e10s: Q8u1gAR_TI6dOUMeQYhKew
+ test-windows10-64-qr/opt-awsy-e10s: W6UGGk7eSzCUDRYElAXrww
+ test-windows10-64-qr/opt-awsy-tp6-e10s: ZwsAyj3rT76DmgTxRoYRyw
+ test-windows10-64-qr/opt-crashtest-e10s: eebKyBmYS0moeJRExQJc2Q
+ test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-1: B5fAf6WhRy6FtgwBuFREmQ
+ test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-2: ODJ_-EHhRQCVmBtxQzY_-g
+ test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-3: QhYOtwImRnuo6SAH8nYnHg
+ test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-4: U9tdbW0vTECKgXsT72qX-g
+ test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-5: DLiIoWjISMe02iuELQqobQ
+ test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-6: IsOuT-7USmm35jBN88M5_A
+ test-windows10-64-qr/opt-mochitest-browser-chrome-e10s-7: ebkUvx9-TbiZvrFFih5kWg
+ test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-1: TkNUotyHQnC5d5fZUzBVJg
+ test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-2: RdVES-IsQjGU79bYwa-Xvw
+ test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-3: NwQDhuw9QKeWKWGfc_krOw
+ test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-4: aS_iArxARsO8Eb-JinHwIg
+ test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-5: TJvrP9B6SyypbTQZHt1faw
+ test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-6: N1PlM2ASTYGHP1qNyjeNuQ
+ test-windows10-64-qr/opt-mochitest-browser-chrome-fis-e10s-7: Ddm-UBrzRfeeDRV8Pr8pqw
+ test-windows10-64-qr/opt-mochitest-e10s-1: GNyMSfZUTUebXJ1QsVrciQ
+ test-windows10-64-qr/opt-mochitest-e10s-2: VwBhQPWoTuyy1LDVcEzTAg
+ test-windows10-64-qr/opt-mochitest-e10s-3: fyp8D267QpKW2ErN0lnZKA
+ test-windows10-64-qr/opt-mochitest-e10s-4: TPp5KoWJQTWGqps2jP5T3w
+ test-windows10-64-qr/opt-mochitest-e10s-5: fjos7WLBTXa7tRQewXeHfQ
+ test-windows10-64-qr/opt-mochitest-fis-e10s-1: Q1sqjBAHS5qRiIZxlEu0OQ
+ test-windows10-64-qr/opt-mochitest-fis-e10s-2: TLX1oj4_QCGcVkDtFsQfCQ
+ test-windows10-64-qr/opt-mochitest-fis-e10s-3: THki-Mp7Q0aB08It3fIlbw
+ test-windows10-64-qr/opt-mochitest-fis-e10s-4: Kz83hsndR2Wen3BuaFbQsw
+ test-windows10-64-qr/opt-mochitest-fis-e10s-5: TPQu6NqvRi6ArO5SCl0zbg
+ test-windows10-64-qr/opt-mochitest-gpu-e10s: GPLXqKr4QoaHpQ5HIC0MJg
+ test-windows10-64-qr/opt-mochitest-media-e10s: O72Bw5jdTY--tTgIkDhOEw
+ test-windows10-64-qr/opt-mochitest-media-fis-e10s: H4ZyAxd6Q0WDvbBP0LFMbQ
+ test-windows10-64-qr/opt-mochitest-media-spi-e10s: cCcR8EgMTziOTR7W07PYTA
+ test-windows10-64-qr/opt-mochitest-webgl1-core-e10s: c62YMxAtTGi8svZN5tbt_A
+ test-windows10-64-qr/opt-mochitest-webgl1-core-fis-e10s: dZmmDEVSRM6jFCnxkBlS9Q
+ test-windows10-64-qr/opt-mochitest-webgl2-core-e10s: fKnncdACTRqFbkQDDa6Eng
+ test-windows10-64-qr/opt-mochitest-webgl2-core-fis-e10s: Pe3EZzHATUO19_BJ9qLmQA
+ test-windows10-64-qr/opt-mochitest-webgpu-e10s: JTE7TMqTTDySlL-WqXxf_w
+ test-windows10-64-qr/opt-mochitest-webgpu-fis-e10s: OiWDNMfnQZ6USMgxrijARw
+ test-windows10-64-qr/opt-raptor-ares6-firefox-e10s: TFL2Kz0LThK_WWD7jETOFg
+ test-windows10-64-qr/opt-raptor-jetstream2-firefox-e10s: GJOc5SYYRImQhvor-rzFYQ
+ test-windows10-64-qr/opt-raptor-motionmark-animometer-firefox-e10s: UPIMrDeIR8mjoppXSgXSPQ
+ test-windows10-64-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: YeXC8HphSeeiqrkZNL4pOw
+ test-windows10-64-qr/opt-raptor-speedometer-firefox-e10s: NUTteFr2SqGJzWcvVl7fTA
+ test-windows10-64-qr/opt-raptor-stylebench-firefox-e10s: JTif2t2YRmy8cUIUbQkXGA
+ test-windows10-64-qr/opt-raptor-sunspider-firefox-e10s: PMqotSYvQ0K5tin4ELqNmQ
+ test-windows10-64-qr/opt-raptor-tp6-1-firefox-cold-e10s: FblKoKMnQmWsJX_U58X7ww
+ test-windows10-64-qr/opt-raptor-tp6-1-firefox-e10s: KQUgM4XhRiaPS6edmOBXIA
+ test-windows10-64-qr/opt-raptor-tp6-10-firefox-cold-e10s: dBO9fh0JQzKKI6iSZRfLyg
+ test-windows10-64-qr/opt-raptor-tp6-10-firefox-e10s: Q6311BJWRHWXIyUf4HC82w
+ test-windows10-64-qr/opt-raptor-tp6-11-firefox-cold-e10s: Mu8aAHCPS6iUKRVVuImLdA
+ test-windows10-64-qr/opt-raptor-tp6-12-firefox-cold-e10s: LPT4IsKQSWiaG0t0_vb9aQ
+ test-windows10-64-qr/opt-raptor-tp6-13-firefox-cold-e10s: Wz_9GcDvQyq5Dy-eKfaLaQ
+ test-windows10-64-qr/opt-raptor-tp6-14-firefox-cold-e10s: NDdoru8wQWKZ4pRUiPpDhg
+ test-windows10-64-qr/opt-raptor-tp6-15-firefox-cold-e10s: FQx5IBdMR6WI1OLJjQRBNg
+ test-windows10-64-qr/opt-raptor-tp6-16-firefox-cold-e10s: JlB4zSpFSgGINU5h_NypSw
+ test-windows10-64-qr/opt-raptor-tp6-17-firefox-cold-e10s: M10WuOIWTvOiwY3B_jjzXw
+ test-windows10-64-qr/opt-raptor-tp6-18-firefox-cold-e10s: e_tx8VGNSL6L2re-tUbbOw
+ test-windows10-64-qr/opt-raptor-tp6-19-firefox-cold-e10s: W5wlKC4YQfqZQ-9MyqNpUg
+ test-windows10-64-qr/opt-raptor-tp6-2-firefox-cold-e10s: a2WGMOzuQdiEMozff6x4Cw
+ test-windows10-64-qr/opt-raptor-tp6-2-firefox-e10s: f48IZ9vpS9-zieFz_qDIOA
+ test-windows10-64-qr/opt-raptor-tp6-20-firefox-cold-e10s: avzFPOKeSy6fvXVdObA-Iw
+ test-windows10-64-qr/opt-raptor-tp6-21-firefox-cold-e10s: KgFHGlHAQeKOxSUT_xgt_w
+ test-windows10-64-qr/opt-raptor-tp6-22-firefox-cold-e10s: ZZuJxuswReCrLEKEYeysVw
+ test-windows10-64-qr/opt-raptor-tp6-23-firefox-cold-e10s: BZwjdbMnQ_So1LLdWNV6Gw
+ test-windows10-64-qr/opt-raptor-tp6-24-firefox-cold-e10s: HMi_XZknRgCQHigMEvnDuA
+ test-windows10-64-qr/opt-raptor-tp6-25-firefox-cold-e10s: IH37dLcCSIq55TRwm1Z46w
+ test-windows10-64-qr/opt-raptor-tp6-26-firefox-cold-e10s: MsMWPC1ESjqLVeQlZNSQuw
+ test-windows10-64-qr/opt-raptor-tp6-27-firefox-cold-e10s: f6kM00s5SW67Ux2mGl2uTA
+ test-windows10-64-qr/opt-raptor-tp6-28-firefox-cold-e10s: bAuiQ_OaQIKioQwqez7aWA
+ test-windows10-64-qr/opt-raptor-tp6-29-firefox-cold-e10s: FPIaL7g6SZO5YJWNDf79ew
+ test-windows10-64-qr/opt-raptor-tp6-3-firefox-cold-e10s: Efn8imedTzmNbrJnqn7NCw
+ test-windows10-64-qr/opt-raptor-tp6-3-firefox-e10s: Ki4OzoszSCy0LD_WmJSvOw
+ test-windows10-64-qr/opt-raptor-tp6-30-firefox-cold-e10s: NxBCqNA-SGi1R5YtkobkAg
+ test-windows10-64-qr/opt-raptor-tp6-4-firefox-cold-e10s: VmR8t0wiS_mLMK72TyQb6A
+ test-windows10-64-qr/opt-raptor-tp6-4-firefox-e10s: Ss4HFcxhTfi8mi9uuKU7qw
+ test-windows10-64-qr/opt-raptor-tp6-5-firefox-cold-e10s: NRBRSGXLRnOykG3gn1vzaw
+ test-windows10-64-qr/opt-raptor-tp6-5-firefox-e10s: AMJ2p7emQP6ww6FHzG8K8g
+ test-windows10-64-qr/opt-raptor-tp6-6-firefox-cold-e10s: Ay7JCKr-RFymSEJkM_P73g
+ test-windows10-64-qr/opt-raptor-tp6-6-firefox-e10s: NBfmsNwMRA2CCGLvQaZRNw
+ test-windows10-64-qr/opt-raptor-tp6-7-firefox-cold-e10s: EVKjO5SOSOSzxCZfzdUJ8A
+ test-windows10-64-qr/opt-raptor-tp6-7-firefox-e10s: OeOM-XBOTza00CxM-nabhA
+ test-windows10-64-qr/opt-raptor-tp6-8-firefox-cold-e10s: U5lZ_xgWSUWCGaBV0fgNSA
+ test-windows10-64-qr/opt-raptor-tp6-8-firefox-e10s: B_yG3sQmTGyimUqEpsm0GQ
+ test-windows10-64-qr/opt-raptor-tp6-9-firefox-cold-e10s: Bq2ZM6lwQzqDTGqP70AFjw
+ test-windows10-64-qr/opt-raptor-tp6-9-firefox-e10s: T03-V0YUQaiKPxzJG3zGYw
+ test-windows10-64-qr/opt-raptor-tp6-binast-1-firefox-e10s: MQ8vOUHgRiOuGiRtXJZMqA
+ test-windows10-64-qr/opt-raptor-wasm-godot-firefox-e10s: aE2cKCskQxe21n_Wda4WUg
+ test-windows10-64-qr/opt-raptor-webaudio-firefox-e10s: dL2t2mR8SuuypDK4x6JCig
+ test-windows10-64-qr/opt-raptor-youtube-playback-firefox-e10s: O4aMzwqcSP2r-q3kcDBagA
+ test-windows10-64-qr/opt-reftest-e10s-1: C44GHeblRb-UA75B-txvRQ
+ test-windows10-64-qr/opt-reftest-e10s-2: H4E0HYggQJ-wiiBvMLmGlg
+ test-windows10-64-qr/opt-talos-chrome-e10s: CCBIFq1ASR-Mmr48W4hJYg
+ test-windows10-64-qr/opt-talos-damp-e10s: WWeYKnMLR-mzlOwcqkENgA
+ test-windows10-64-qr/opt-talos-dromaeojs-e10s: IwX91EMoR9mgnW5hS-SWQQ
+ test-windows10-64-qr/opt-talos-g1-e10s: SIraFvnJQESH-5vYdOpm9g
+ test-windows10-64-qr/opt-talos-g4-e10s: M_ZPHvlgS4mvzTlptqjkHQ
+ test-windows10-64-qr/opt-talos-g5-e10s: QHyqb18PSs-IOX9cuPLTlQ
+ test-windows10-64-qr/opt-talos-other-e10s: dDmHKvrzTZ6PnPTqov5UgA
+ test-windows10-64-qr/opt-talos-perf-reftest-e10s: GGkkCA-3Sj-pT4XWwxAlTQ
+ test-windows10-64-qr/opt-talos-perf-reftest-singletons-e10s: ACdz0eVkR0qz8Q2IKIgOXw
+ test-windows10-64-qr/opt-talos-realworld-webextensions-e10s: KeiIkvCIS0WwHi1u6-GPGg
+ test-windows10-64-qr/opt-talos-sessionrestore-many-windows-e10s: K19Z5NwlTye9TO6EiUfKqQ
+ test-windows10-64-qr/opt-talos-svgr-e10s: PdcBnwtoSGis6dGtQty7LQ
+ test-windows10-64-qr/opt-talos-tabswitch-e10s: Gk5RfwiXSd-zbEMpAyW-GA
+ test-windows10-64-qr/opt-talos-tp5o-e10s: REfgcVgfRhekJi0c-MZBAg
+ test-windows10-64-qr/opt-talos-webgl-e10s: Q1t0yzOjSO-DsaOGvccQtQ
+ test-windows10-64-qr/opt-talos-xperf-e10s: Ca9m5JH4TC67p9Ts-hXdyQ
+ test-windows10-64-qr/opt-web-platform-tests-crashtests-e10s: V9SQBqjiS92bGBAxwiZLmA
+ test-windows10-64-qr/opt-web-platform-tests-crashtests-fis-e10s: FbWtdQ8uSkKhWav4eNrscw
+ test-windows10-64-qr/opt-web-platform-tests-e10s-1: RClCXqSxSiis8sdj-XCeHA
+ test-windows10-64-qr/opt-web-platform-tests-e10s-10: UCB3ZBEoQMu441wSQjd4lw
+ test-windows10-64-qr/opt-web-platform-tests-e10s-11: X90PhlUmTaKUH2vq7YUqbA
+ test-windows10-64-qr/opt-web-platform-tests-e10s-12: MSmuYrI9RDKJgG6roWu4qA
+ test-windows10-64-qr/opt-web-platform-tests-e10s-2: edSgrMClRiG6cmfUPmF7Mg
+ test-windows10-64-qr/opt-web-platform-tests-e10s-3: Aalzs-ubSqGWl87BwqtMKA
+ test-windows10-64-qr/opt-web-platform-tests-e10s-4: dtYqPF-bS-uAjKOA-4regw
+ test-windows10-64-qr/opt-web-platform-tests-e10s-5: DeUxLTu3RDCpQX6wk2fnUw
+ test-windows10-64-qr/opt-web-platform-tests-e10s-6: CG1agFhwQY2d3XU_r78YPA
+ test-windows10-64-qr/opt-web-platform-tests-e10s-7: YGXerLH3Qp68NA3AHB_TGQ
+ test-windows10-64-qr/opt-web-platform-tests-e10s-8: XKRvxPF0Q3KYwwv4bdR77w
+ test-windows10-64-qr/opt-web-platform-tests-e10s-9: fq1NnzEIQ_CD5ZbRG2kCJg
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-1: WwXk4YzjR5CJnGMmEEIq4A
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-10: Gq47KJdHS5CUa4WTprCvcA
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-11: Zo3QoxnRQRif7BMLDkmsbg
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-12: ZmtN54x2SHuyhudvJUsufg
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-2: bZU4HjJlS3qZ9YtFdGymVw
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-3: L5mdb4dCQv2kjnncPUrtTA
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-4: L7fr0rtDSuOFaMVOBHUKMA
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-5: c8m7kKweRW6-AuxdN8u53Q
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-6: anXkJByKQCaQCkwUY5ESeA
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-7: cqFsyRKNQsqqYcIJ-8MLxQ
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-8: MkC29HPCRiyuF-wpj6LLuA
+ test-windows10-64-qr/opt-web-platform-tests-fis-e10s-9: ZZuVBUiaTuCGV4vNjhIckQ
+ test-windows10-64-qr/opt-web-platform-tests-reftests-e10s-1: ZPBdO56pR8qys4k_-r0jmg
+ test-windows10-64-qr/opt-web-platform-tests-reftests-e10s-2: eIrkwHnmSaKUPGMCsSEkow
+ test-windows10-64-qr/opt-web-platform-tests-reftests-e10s-3: DSSjDgESRKOhM9pfumQWKA
+ test-windows10-64-qr/opt-web-platform-tests-reftests-e10s-4: SM8vgm9hRiGoYYqibiGJuQ
+ test-windows10-64-qr/opt-web-platform-tests-reftests-fis-e10s-1: ICDfNf6SRG-ySHF17IfF2g
+ test-windows10-64-qr/opt-web-platform-tests-reftests-fis-e10s-2: NJqrIUYNSq6_PVHZvPmW7w
+ test-windows10-64-qr/opt-web-platform-tests-reftests-fis-e10s-3: c5zE0yMkR3Gf-T5fr9b6Pg
+ test-windows10-64-qr/opt-web-platform-tests-reftests-fis-e10s-4: CK6d7ri-Rd2wWlpv_0p0AA
+ test-windows10-64-qr/opt-web-platform-tests-wdspec-e10s-1: QTNsZOiiQjKL95vnhiTp3A
+ test-windows10-64-qr/opt-web-platform-tests-wdspec-e10s-2: R1tTTIYrRdqhW95_btJeHg
+ test-windows10-64-qr/opt-web-platform-tests-wdspec-e10s-3: QDj-RsxCQkGiHLofYVzyFg
+ test-windows10-64-qr/opt-web-platform-tests-wdspec-fis-e10s-1: NHoSANs4TIewNeC2vNn9Rg
+ test-windows10-64-qr/opt-web-platform-tests-wdspec-fis-e10s-2: YSJlBe7uQSWm3tmFNu9gBg
+ test-windows10-64-qr/opt-web-platform-tests-wdspec-fis-e10s-3: NO_-5n-4S4iahhzC0Wud_g
+ test-windows10-64-ref-hw-2017/opt-raptor-jetstream2-firefox-e10s: EsQXigsWQOatCmgq4LMx5g
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-1-firefox-e10s: NTxAqL92QSmaq_JFVJpKXA
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-10-firefox-e10s: QP-FH6K0TI259Vi0TgFt-w
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-2-firefox-e10s: LX4_c9mUR1-tw5OpsfhE9g
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-3-firefox-e10s: f-l2iaPNTwuGZRnOvtF_Kg
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-4-firefox-e10s: Bmn7omy2QlaqNhNTbIesMQ
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-5-firefox-e10s: aXwnewmPSMWsi84NM494tQ
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-6-firefox-e10s: CHKzD_lySMGoit3GNGqtgQ
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-7-firefox-e10s: E6zrIWwrR4-6dzRMEaw_hg
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-8-firefox-e10s: JsmoRLnsQimQYI9exL5NmQ
+ test-windows10-64-ref-hw-2017/opt-raptor-tp6-9-firefox-e10s: bn2eMLTWTE6S00Cl2kxa6A
+ test-windows10-64-ref-hw-2017/opt-raptor-youtube-playback-firefox-e10s: UZ4wvnZUTZez3DpOhJHW1w
+ test-windows10-64-ref-hw-2017/opt-talos-g4-e10s: dLaUMAiiQFWQvAraevSEjQ
+ test-windows10-64-ref-hw-2017/opt-talos-webgl-e10s: bYxJ-4p-Tuu5ptmQHMK4DQ
+ test-windows10-64-shippable-qr/opt-awsy-base-e10s: RFY7uZhJSxOnDIgNb5137w
+ test-windows10-64-shippable-qr/opt-awsy-e10s: YPvoa-FqSx-IY-fFVx1FEg
+ test-windows10-64-shippable-qr/opt-awsy-tp6-e10s: UjioAPY5QcmU6vu9N5Qwew
+ test-windows10-64-shippable-qr/opt-awsy-tp6-fis-e10s: LoZEdcXeTt-vIRWLfcZmrg
+ test-windows10-64-shippable-qr/opt-crashtest-e10s: BI3ef4DAQAaapOFcXLfD8Q
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-1: cPmZGS0_SbKX9jhzlt1c_Q
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-2: AC-CMYbtTCOqbKy76cY2KQ
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-3: ApWqkS6lQNm8_R9u1fv_tA
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-4: acGdQEJ5SiuNPcO5vPP_Wg
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-5: fQvu8aD8Sg2zPnA3pnrGLA
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-6: XGKIF4XEQsO5vgbn8nhhvQ
+ test-windows10-64-shippable-qr/opt-mochitest-browser-chrome-e10s-7: FfU4LPs6QoWz4HqJPAwUMg
+ test-windows10-64-shippable-qr/opt-mochitest-e10s-1: N8UNne8XSKSqxIrQJnSNiQ
+ test-windows10-64-shippable-qr/opt-mochitest-e10s-2: I-FNbHIETLerEBOOUVeekw
+ test-windows10-64-shippable-qr/opt-mochitest-e10s-3: F67WVUVASjKKLsdDfRLhAQ
+ test-windows10-64-shippable-qr/opt-mochitest-e10s-4: Abw-wivOS0iRO1_omLoOOQ
+ test-windows10-64-shippable-qr/opt-mochitest-e10s-5: DxKmSGikRIGcugsZmIwBFA
+ test-windows10-64-shippable-qr/opt-mochitest-gpu-e10s: AtKVYMkfR7qL1dk8c7S-VA
+ test-windows10-64-shippable-qr/opt-mochitest-media-e10s: c6rgYmwGSjKHYxhmlEZOvg
+ test-windows10-64-shippable-qr/opt-mochitest-media-spi-e10s: Xe47G_frTW6gIgFkofHDKw
+ test-windows10-64-shippable-qr/opt-mochitest-webgl1-core-e10s: JAGG46nMQee9iczRooUwXw
+ test-windows10-64-shippable-qr/opt-mochitest-webgl2-core-e10s: AxxNdEHySNW9Fhyw7OnwdA
+ test-windows10-64-shippable-qr/opt-mochitest-webgpu-e10s: KciG9DSUQqysMu5Qh_z5oA
+ test-windows10-64-shippable-qr/opt-raptor-ares6-firefox-e10s: FhEVRKtJRn6HUTftcKtnYQ
+ test-windows10-64-shippable-qr/opt-raptor-ares6-firefox-fis-e10s: W2BfphnnSiiBVDKftgoqUw
+ test-windows10-64-shippable-qr/opt-raptor-jetstream2-firefox-e10s: fiX1iDxYQxGUcWj7EaMOeg
+ test-windows10-64-shippable-qr/opt-raptor-jetstream2-firefox-fis-e10s: UylXNLj5QnWs7AP-e7yGUA
+ test-windows10-64-shippable-qr/opt-raptor-motionmark-animometer-firefox-e10s: ElOuReuzQiWEZJRUziHlIA
+ test-windows10-64-shippable-qr/opt-raptor-motionmark-animometer-firefox-fis-e10s: ZNMuu1q2QlmL_i4lHoTHxA
+ test-windows10-64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-e10s: MqwcmYVNTtyncq_OaLMVKg
+ test-windows10-64-shippable-qr/opt-raptor-motionmark-htmlsuite-firefox-fis-e10s: U8Qd7KpkT4Kl07LKOSQR2w
+ test-windows10-64-shippable-qr/opt-raptor-speedometer-firefox-e10s: XtUxArMcQOmfCvZ283MVVQ
+ test-windows10-64-shippable-qr/opt-raptor-speedometer-firefox-fis-e10s: IyaA8RZLRWyIqYjcr_V-Yg
+ test-windows10-64-shippable-qr/opt-raptor-stylebench-firefox-e10s: dhG9swrPRoqu51NckXWrwA
+ test-windows10-64-shippable-qr/opt-raptor-stylebench-firefox-fis-e10s: CyxgkIiwQVWY0SX7CK3fpw
+ test-windows10-64-shippable-qr/opt-raptor-sunspider-firefox-e10s: C8u00Gs8RZ270qjdtGoqfg
+ test-windows10-64-shippable-qr/opt-raptor-sunspider-firefox-fis-e10s: PWGyijwTTf26Ik8owdI39A
+ test-windows10-64-shippable-qr/opt-raptor-tp6-1-firefox-cold-e10s: aYSYH360Q7O2noNP0hMCkw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-1-firefox-e10s: HqwYD8tXT8iF4P98RFjbaA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-1-firefox-fis-e10s: JutPcnKHSDSyUZhWiEllQw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-10-firefox-cold-e10s: TlfJmr8vSTieSMxJetMCiA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-10-firefox-e10s: LOhve9i7QkeeSS4nIdD2dA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-10-firefox-fis-e10s: VI9QM1c7TIyMVqOmNWkqNQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-11-firefox-cold-e10s: VMFEWU6FQPm4b-IldtNmmw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-12-firefox-cold-e10s: JuTtAyrkR4-aLKQ-3OSquA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-13-firefox-cold-e10s: Ww4ltjDPQzWP5rsNPoHpfA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-14-firefox-cold-e10s: dxr_Lts9RAaozXtEx2tetw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-15-firefox-cold-e10s: LuyCOEugT1KpphWpWyly6g
+ test-windows10-64-shippable-qr/opt-raptor-tp6-16-firefox-cold-e10s: Cr_qBQjsSuKix3kT19kbTw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-17-firefox-cold-e10s: SzOGfGAbQiemUGpsDDkwqw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-18-firefox-cold-e10s: LA6BOTRIQx2ALs8WEHHu3w
+ test-windows10-64-shippable-qr/opt-raptor-tp6-19-firefox-cold-e10s: NZpT4U1gSMOj5xJW8rn_Dg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-2-firefox-cold-e10s: YFJnbygCShGiYfqOkUsMAw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-2-firefox-e10s: H01WN6RGQlSN4uGknzMWIA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-2-firefox-fis-e10s: acWpqZS8QOC_QSue2cVgYw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-20-firefox-cold-e10s: JRB5KA-uSkyBBhMW-GCWAg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-21-firefox-cold-e10s: ed3tfQq0TzCWmWdY-nQD5g
+ test-windows10-64-shippable-qr/opt-raptor-tp6-22-firefox-cold-e10s: KKqpNs3ISRqgpue5eionMQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-23-firefox-cold-e10s: CwZS_maXRCSVuMZMqilS3Q
+ test-windows10-64-shippable-qr/opt-raptor-tp6-24-firefox-cold-e10s: M59SkayzSKqSru5Oix2-DQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-25-firefox-cold-e10s: EoqK_WxWRumnN_OOR3cjjA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-26-firefox-cold-e10s: Sw0sp141R7ewGZgDg0sg3w
+ test-windows10-64-shippable-qr/opt-raptor-tp6-27-firefox-cold-e10s: VkTuGmhlSr-84-LPXosTFg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-28-firefox-cold-e10s: Rxs-1pPKTF2zg7Sfl8q1AA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-29-firefox-cold-e10s: MSzOviDPSDaIPLsrdGuIUg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-3-firefox-cold-e10s: MHsFhOwBTFqPPt6b__pFMA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-3-firefox-e10s: Lo0fbK0yTT2-IXfW2nNeUQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-3-firefox-fis-e10s: DZ1SMtVmQPS1NFn8VN1MVA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-30-firefox-cold-e10s: V2iLcbDMQf6gtxBRR2_Nuw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-4-firefox-cold-e10s: QE6S6C2ZR0u-FxA2NabZJQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-4-firefox-e10s: WIHdwTr3ThGyK30WAiTKlw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-4-firefox-fis-e10s: FiFwZ8o_RvOnyAzLIifb-Q
+ test-windows10-64-shippable-qr/opt-raptor-tp6-5-firefox-cold-e10s: XVhTIO9hS2S3HfCBB1gWPQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-5-firefox-e10s: LG586QSBRK6LGHVLOOrvPg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-5-firefox-fis-e10s: cWRn0M2gQby5qL5wSNEqMA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-6-firefox-cold-e10s: DmPvm9u0RNqds3GWw2qpCA
+ test-windows10-64-shippable-qr/opt-raptor-tp6-6-firefox-e10s: V0lAJzmjSJGfLsD9vp5P8w
+ test-windows10-64-shippable-qr/opt-raptor-tp6-6-firefox-fis-e10s: DQo03XwgSW6Rhe2VF18Qog
+ test-windows10-64-shippable-qr/opt-raptor-tp6-7-firefox-cold-e10s: HjsSath_Q9m8FfbWUC0-YQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-7-firefox-e10s: CCqNkujUTSaGw-eQVGqu6Q
+ test-windows10-64-shippable-qr/opt-raptor-tp6-7-firefox-fis-e10s: eHEbwreBSsG4hIaZRWNFcw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-8-firefox-cold-e10s: Lp_1sbo4REi2E_32LgOdjQ
+ test-windows10-64-shippable-qr/opt-raptor-tp6-8-firefox-e10s: D_y1-0aOSoqn3lbAJ2LUqw
+ test-windows10-64-shippable-qr/opt-raptor-tp6-8-firefox-fis-e10s: ZWazVekXS76MSEITE0emCg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-9-firefox-cold-e10s: f-txtiGPRxSjR7NUEHubpg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-9-firefox-e10s: CrEvRGvQSxWv5SwqYj_2ag
+ test-windows10-64-shippable-qr/opt-raptor-tp6-9-firefox-fis-e10s: GTzbCDenSL-wumUeEvKVGg
+ test-windows10-64-shippable-qr/opt-raptor-tp6-binast-1-firefox-e10s: UkervXjzRMa08L25Q3GP7Q
+ test-windows10-64-shippable-qr/opt-raptor-tp6-binast-1-firefox-fis-e10s: cMka0hRoQ5WPVltss68l9w
+ test-windows10-64-shippable-qr/opt-raptor-wasm-godot-firefox-e10s: IJSNtoxRSQKpMsaHwfV4dw
+ test-windows10-64-shippable-qr/opt-raptor-wasm-godot-firefox-fis-e10s: fMgNom5SQ_qF2e1ES2t-Qw
+ test-windows10-64-shippable-qr/opt-raptor-webaudio-firefox-e10s: SbX3dQH-TAuH7rYB_Ur4Ng
+ test-windows10-64-shippable-qr/opt-raptor-webaudio-firefox-fis-e10s: SyyjNoWIRB-vCEcqHxpZVQ
+ test-windows10-64-shippable-qr/opt-raptor-youtube-playback-firefox-e10s: eZMnDGhqQYmx4_1KZTaNTQ
+ test-windows10-64-shippable-qr/opt-raptor-youtube-playback-firefox-fis-e10s: JSZ5BYtSSgqwmV9AUj6CfA
+ test-windows10-64-shippable-qr/opt-reftest-e10s-1: fUcMn3EyRraVQ0aOTKztgA
+ test-windows10-64-shippable-qr/opt-reftest-e10s-2: QqpwsyZrQ3q_YJ7mOeyjBQ
+ test-windows10-64-shippable-qr/opt-talos-chrome-e10s: cAdYd1QxTsuGa1y_LJN2sQ
+ test-windows10-64-shippable-qr/opt-talos-chrome-fis-e10s: UGYFQxG5TJWQUb3xQKamng
+ test-windows10-64-shippable-qr/opt-talos-damp-e10s: UlRSW0L0QaCi_iK2iabfmA
+ test-windows10-64-shippable-qr/opt-talos-damp-fis-e10s: Q8HAmjHfQKuhioj6piqkeA
+ test-windows10-64-shippable-qr/opt-talos-dromaeojs-e10s: eb0JK8VISY-g2tkGqnOkfQ
+ test-windows10-64-shippable-qr/opt-talos-dromaeojs-fis-e10s: RJxnV0i8SwC2O48Ra0KEPg
+ test-windows10-64-shippable-qr/opt-talos-g1-e10s: XUO2gNawT0OsuuYkNiJokQ
+ test-windows10-64-shippable-qr/opt-talos-g1-fis-e10s: TA9IYK8JSy2mWCt_E9eXiw
+ test-windows10-64-shippable-qr/opt-talos-g4-e10s: G7p-7IEyS2aY6C6DfT3zpg
+ test-windows10-64-shippable-qr/opt-talos-g4-fis-e10s: Uaa0lFOnQB6EKCaD9t3MIg
+ test-windows10-64-shippable-qr/opt-talos-g5-e10s: YSLi59w0QyaPkEGdFpkJOw
+ test-windows10-64-shippable-qr/opt-talos-g5-fis-e10s: JY-wWC63QqS_5e86VzDEwg
+ test-windows10-64-shippable-qr/opt-talos-other-e10s: JNBl4Q53RVq2J6XbPNf18Q
+ test-windows10-64-shippable-qr/opt-talos-other-fis-e10s: aGEPjdN8TX6RIsdM-8_G6Q
+ test-windows10-64-shippable-qr/opt-talos-perf-reftest-e10s: LHOCf9b6S-GDhNMDQx2yCQ
+ test-windows10-64-shippable-qr/opt-talos-perf-reftest-fis-e10s: fMh64pF3Q8uiZ_Z18SmoYQ
+ test-windows10-64-shippable-qr/opt-talos-perf-reftest-singletons-e10s: B-nFwpZbRWu3RBNG7-eS-A
+ test-windows10-64-shippable-qr/opt-talos-perf-reftest-singletons-fis-e10s: cqURoT9_Qf-WWt0ofBhY5A
+ test-windows10-64-shippable-qr/opt-talos-realworld-webextensions-e10s: O-31G44aTDGDonu6pJfXnA
+ test-windows10-64-shippable-qr/opt-talos-realworld-webextensions-fis-e10s: encsyee8RAu6LsOzSlNmkw
+ test-windows10-64-shippable-qr/opt-talos-sessionrestore-many-windows-e10s: KWcOXeWtQt6s8f_LooQtBg
+ test-windows10-64-shippable-qr/opt-talos-sessionrestore-many-windows-fis-e10s: c3qKmFhTQciFYo9S7jV69Q
+ test-windows10-64-shippable-qr/opt-talos-svgr-e10s: NzMD09sFSQOvJM3qz1cnhA
+ test-windows10-64-shippable-qr/opt-talos-svgr-fis-e10s: W8KPC5V9RCiON-KZQT_rVA
+ test-windows10-64-shippable-qr/opt-talos-tabswitch-e10s: XZO_INu6SFWriOU9eIzN-Q
+ test-windows10-64-shippable-qr/opt-talos-tabswitch-fis-e10s: Ovsq5znURx2lN-kpILfcrg
+ test-windows10-64-shippable-qr/opt-talos-tp5o-e10s: U_SsFO51R4qX8CZRd1SubA
+ test-windows10-64-shippable-qr/opt-talos-tp5o-fis-e10s: F0-igK4dSgavazSdTagUnQ
+ test-windows10-64-shippable-qr/opt-talos-webgl-e10s: K7y54qFSTSKNPidJH7IbAg
+ test-windows10-64-shippable-qr/opt-talos-webgl-fis-e10s: DzjlKq0BQo2gp7OTn29uBQ
+ test-windows10-64-shippable-qr/opt-talos-xperf-e10s: crX0PGryRQ2upZ7ui9k3gQ
+ test-windows10-64-shippable-qr/opt-talos-xperf-fis-e10s: OtBF7HpFR3yTUVYsbL69OQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-crashtests-e10s: IikhI7FWTeSWE0Fu7U9MQw
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-1: RgZCZF4QRPCJy-NX23mAUg
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-10: F3FTs0qeTvSHNEAc0N8ajQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-11: dHOaPOwLQx-pitmJ68UDhQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-12: Bb8l1yu-TJa21hxQWk3SRQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-2: Meqv_Zf1QdCUg3wIh3miqA
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-3: LxwZuG2FRdSakD30DP5Wcw
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-4: fIOvsSjYTdGjbsG7DQ4Lgw
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-5: HbiWstn6R9KVZsrEKMfTcQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-6: WlFEaNFyTpeCkm61lr31vw
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-7: Pdz3m1siTHeVgO3zhtvoSw
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-8: B18EwLBQR9-wDgORGREx-Q
+ test-windows10-64-shippable-qr/opt-web-platform-tests-e10s-9: D3pSMF9cR9K-5j9KpihGCw
+ test-windows10-64-shippable-qr/opt-web-platform-tests-reftests-e10s-1: NpWOzOXaRpqv8cIOlhCGVA
+ test-windows10-64-shippable-qr/opt-web-platform-tests-reftests-e10s-2: GRbs_QfHQAODa7J3Y5iAUQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-reftests-e10s-3: WJl8ts0tT1C1Lf6eE3HnPQ
+ test-windows10-64-shippable-qr/opt-web-platform-tests-reftests-e10s-4: MxswqwzaQ--kJx3GifIcqA
+ test-windows10-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-1: L4KPBr3WSyioSLplO4CL7Q
+ test-windows10-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-2: DOE6WZxrTbqXZnqW-zixjg
+ test-windows10-64-shippable-qr/opt-web-platform-tests-wdspec-e10s-3: ZgPE5O1rSIGVCKcsOkmveA
+ test-windows10-64-shippable/opt-awsy-base-e10s: NpxI_tmWSFWc8AxxlZoZjw
+ test-windows10-64-shippable/opt-awsy-e10s: S8Di8aw-Q0uBWl9fwABbDg
+ test-windows10-64-shippable/opt-awsy-tp6-e10s: A9paOOf9QOmgjQux4iWoXA
+ test-windows10-64-shippable/opt-browser-screenshots-e10s: e1AATKSBRSaCZydjnsti-A
+ test-windows10-64-shippable/opt-browsertime-tp6-chrome-cold-amazon-e10s: CgSHBVG-SYiQ8ZH0KZQSNg
+ test-windows10-64-shippable/opt-browsertime-tp6-firefox-amazon-e10s: UySNl6a5SESOk4mPAyFdcg
+ test-windows10-64-shippable/opt-browsertime-tp6-firefox-cold-amazon-e10s: IwNvH3Y1RH2NAn7L2SBX3w
+ test-windows10-64-shippable/opt-browsertime-tp6-profiling-firefox-amazon-e10s: DJSkLMY-R1CELtio516ERA
+ test-windows10-64-shippable/opt-browsertime-tp6-profiling-firefox-cold-amazon-e10s: OHnsKmRPQCKLBPlRgITgjA
+ test-windows10-64-shippable/opt-cppunit-1proc: M1FE9jUHTCaQZlluQvggdw
+ test-windows10-64-shippable/opt-crashtest-e10s: TUMwnVJDRai-V-NpIXrMaw
+ test-windows10-64-shippable/opt-firefox-ui-functional-local-e10s: Agx9OAhISOS2NnXB7cB0qQ
+ test-windows10-64-shippable/opt-firefox-ui-functional-remote-e10s: D8YOjqZqTW2SiIT-mhzPrw
+ test-windows10-64-shippable/opt-jsreftest-e10s-1: f0-w5-sLRPS5503NtXec9A
+ test-windows10-64-shippable/opt-jsreftest-e10s-2: CPHbjcukTR2JwLTgzlZE9w
+ test-windows10-64-shippable/opt-marionette-e10s: UprRhY_FTX6Hr4Gkrs3XRA
+ test-windows10-64-shippable/opt-marionette-gpu-e10s: ZMvsUaKDRaio7PdRblrPOQ
+ test-windows10-64-shippable/opt-mochitest-a11y-1proc: aPYyoyAXQieTPHBq3qZf2A
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-1: O2A38rPiR_G95cvc8Lw7Kg
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-2: eRhZtEGlR0yKZc04ot-x6w
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-3: H9jcPn4cQKucGgWdWUgvuQ
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-4: EbNT2FlMS22gYwOWNVCZfA
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-5: EYG_J9tMTLqAk1PBU58R6w
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-6: HBMnYhkoS42LBvho7fmFIg
+ test-windows10-64-shippable/opt-mochitest-browser-chrome-e10s-7: dtIcWhfbTy2VFZee_AKuoQ
+ test-windows10-64-shippable/opt-mochitest-chrome-1proc-1: CKctHr2hQcKhmVcvl8XenQ
+ test-windows10-64-shippable/opt-mochitest-chrome-1proc-2: GrLRzoSVT5O4NpyLsks9Ag
+ test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-1: V5s1vCBMQGy9dxF7Au45Ug
+ test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-2: CouvmGJ-QiOHcmIRHAet9A
+ test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-3: W43QTlx7SZ6i-i-1kgGD_g
+ test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-4: YTtu7shbQva3Ghc85laHTw
+ test-windows10-64-shippable/opt-mochitest-devtools-chrome-e10s-5: ftinPnx8Qc6WxMO33tZSLw
+ test-windows10-64-shippable/opt-mochitest-e10s-1: fdkcremFT8iIgG08J_5PKQ
+ test-windows10-64-shippable/opt-mochitest-e10s-2: f92s-LgeRUG3uGeXANv-LA
+ test-windows10-64-shippable/opt-mochitest-e10s-3: er8Hx7A8QEqbcUXk0Wawng
+ test-windows10-64-shippable/opt-mochitest-e10s-4: DTC0_K3uRMmMccfknmZMJQ
+ test-windows10-64-shippable/opt-mochitest-e10s-5: RDie41GRSsSP-6F2_N_v7Q
+ test-windows10-64-shippable/opt-mochitest-gpu-e10s: ckZloQttTOGpWw37mPqbNg
+ test-windows10-64-shippable/opt-mochitest-media-e10s: Qs9GrtoFR9ub64Hf0GrJdw
+ test-windows10-64-shippable/opt-mochitest-media-spi-e10s: JoLV_XiFTHe4PaCkXq6wAQ
+ test-windows10-64-shippable/opt-mochitest-remote-e10s: eJS4m5r2RjGRfLUFMnxqSw
+ test-windows10-64-shippable/opt-mochitest-webgl1-core-e10s: Jlkl0MR_Qc2Ca_Okl2_D3g
+ test-windows10-64-shippable/opt-mochitest-webgl1-ext-e10s: P-RN5_EuTC6K5Lpww6thNQ
+ test-windows10-64-shippable/opt-mochitest-webgl2-core-e10s: KK6YttDnTIOkH7OVXLrdiw
+ test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-1: cSTPDXIbSmaItzK8BILkRQ
+ test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-2: Uby6fdwwQJCebrQBraSBNg
+ test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-3: DoiJAsaKQQm1iPwcHPM9dw
+ test-windows10-64-shippable/opt-mochitest-webgl2-ext-e10s-4: Qmajp6vHTrm3g3KHklIwiA
+ test-windows10-64-shippable/opt-mochitest-webgpu-e10s: P9wBrASdSQOGKDpuag1YqQ
+ test-windows10-64-shippable/opt-raptor-ares6-firefox-e10s: L70O2h86TmeZD4G30rfw_Q
+ test-windows10-64-shippable/opt-raptor-ares6-firefox-profiling-e10s: NvOS5pZLQSSal4x-efcP5A
+ test-windows10-64-shippable/opt-raptor-jetstream2-firefox-e10s: cpf-22pWQqCmW0WRoJerlg
+ test-windows10-64-shippable/opt-raptor-jetstream2-firefox-profiling-e10s: fSegP60aQWeQXUlSyTpSWA
+ test-windows10-64-shippable/opt-raptor-motionmark-animometer-firefox-e10s: RiOVOq9bSNSAGnkKD63_4A
+ test-windows10-64-shippable/opt-raptor-motionmark-animometer-firefox-profiling-e10s: YNEb7ykVST-0sdGteo58Ig
+ test-windows10-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: A2K3enRkS1etFUodGUkJ3Q
+ test-windows10-64-shippable/opt-raptor-motionmark-htmlsuite-firefox-profiling-e10s: C_Bt__ezSgCP8TBtRhZ0nA
+ test-windows10-64-shippable/opt-raptor-speedometer-firefox-e10s: F2lVcHktTDCcq-f3QV9Neg
+ test-windows10-64-shippable/opt-raptor-speedometer-firefox-profiling-e10s: aaHST-ggTO6_fuRftw9GCw
+ test-windows10-64-shippable/opt-raptor-stylebench-firefox-e10s: RItx6xnDR9a2RUdYodCmsg
+ test-windows10-64-shippable/opt-raptor-stylebench-firefox-profiling-e10s: YAp1Yj7CTzK2KuXZqBeplQ
+ test-windows10-64-shippable/opt-raptor-sunspider-firefox-e10s: TLv8NyaJSmSzGCj-11RnHQ
+ test-windows10-64-shippable/opt-raptor-sunspider-firefox-profiling-e10s: PZTlWx8TSyaAPn5QBF0PWg
+ test-windows10-64-shippable/opt-raptor-tp6-1-firefox-cold-e10s: Vj3Dp2B2TGSk58img_8_Hw
+ test-windows10-64-shippable/opt-raptor-tp6-1-firefox-e10s: Es8_u4WmQPmrqF06Pq9oEQ
+ test-windows10-64-shippable/opt-raptor-tp6-1-firefox-profiling-e10s: aL6Hwrz6S5iMOYMemPcfrQ
+ test-windows10-64-shippable/opt-raptor-tp6-10-firefox-cold-e10s: Lb63H9quRSOeOwZaxBpJmw
+ test-windows10-64-shippable/opt-raptor-tp6-10-firefox-e10s: AkrcMgosTWeqPv4Iy73AHg
+ test-windows10-64-shippable/opt-raptor-tp6-10-firefox-profiling-e10s: aqmgJoqNRZm6PPQD694FfA
+ test-windows10-64-shippable/opt-raptor-tp6-11-firefox-cold-e10s: Y6Q-Rqm9TPyZKoZcoKQ3pw
+ test-windows10-64-shippable/opt-raptor-tp6-12-firefox-cold-e10s: MiDXlKAbQc-4KVMJuNdKhw
+ test-windows10-64-shippable/opt-raptor-tp6-13-firefox-cold-e10s: E7o9-ejoTxeXWuh0Wwz9RQ
+ test-windows10-64-shippable/opt-raptor-tp6-14-firefox-cold-e10s: Q49ALU2ASFe-YfES0dJXJw
+ test-windows10-64-shippable/opt-raptor-tp6-15-firefox-cold-e10s: PI6hc0GCS0ymqWeOZUerxQ
+ test-windows10-64-shippable/opt-raptor-tp6-16-firefox-cold-e10s: MhiNg4hzT423ZiHjrKWJpw
+ test-windows10-64-shippable/opt-raptor-tp6-17-firefox-cold-e10s: RAL-e-H6Smue-U-4vXZpxw
+ test-windows10-64-shippable/opt-raptor-tp6-18-firefox-cold-e10s: EGdFwwQGRsSMsSANpymMgg
+ test-windows10-64-shippable/opt-raptor-tp6-19-firefox-cold-e10s: IVTnj3rbQqWcGMF0vx6UNA
+ test-windows10-64-shippable/opt-raptor-tp6-2-firefox-cold-e10s: JsmwV_GWSg27enm85HgVDg
+ test-windows10-64-shippable/opt-raptor-tp6-2-firefox-e10s: K3cq1zaIQ2S7Yrdvm6toQg
+ test-windows10-64-shippable/opt-raptor-tp6-2-firefox-profiling-e10s: HURBH6rmR76V9c7ztGjbLw
+ test-windows10-64-shippable/opt-raptor-tp6-20-firefox-cold-e10s: LmseXB8MQ-iDXUZRGTbNQw
+ test-windows10-64-shippable/opt-raptor-tp6-21-firefox-cold-e10s: L5mZo9WeTCydhMCibnNkvg
+ test-windows10-64-shippable/opt-raptor-tp6-22-firefox-cold-e10s: HrbnpZjxSfSXJTLXDo8Y0Q
+ test-windows10-64-shippable/opt-raptor-tp6-23-firefox-cold-e10s: YDqnNthoQyeQy6wAZL_YeA
+ test-windows10-64-shippable/opt-raptor-tp6-24-firefox-cold-e10s: aaMBIZH7QpuZSh9UU21R1g
+ test-windows10-64-shippable/opt-raptor-tp6-25-firefox-cold-e10s: ZvODqIkCT5SRjtSKBZdp2g
+ test-windows10-64-shippable/opt-raptor-tp6-26-firefox-cold-e10s: OVrflOipSKWesuVzGUQ97w
+ test-windows10-64-shippable/opt-raptor-tp6-27-firefox-cold-e10s: cWLAn7xiRPO3FTvOdgjD4A
+ test-windows10-64-shippable/opt-raptor-tp6-28-firefox-cold-e10s: ejjmY00WRJ2q1L8AN3TMmQ
+ test-windows10-64-shippable/opt-raptor-tp6-29-firefox-cold-e10s: aaBFv-DDRFqlLBU2IYmJdg
+ test-windows10-64-shippable/opt-raptor-tp6-3-firefox-cold-e10s: CQdGqK_pT5-0KOcjs3xAXg
+ test-windows10-64-shippable/opt-raptor-tp6-3-firefox-e10s: BOp02Rj7S0O3M0nR1YQrLQ
+ test-windows10-64-shippable/opt-raptor-tp6-3-firefox-profiling-e10s: YneV4veoRaGa15Ok8-U07w
+ test-windows10-64-shippable/opt-raptor-tp6-30-firefox-cold-e10s: Y1mJMelESyWc31C5rnTAEA
+ test-windows10-64-shippable/opt-raptor-tp6-4-firefox-cold-e10s: YUCoNMQbRJucufggCXuyWA
+ test-windows10-64-shippable/opt-raptor-tp6-4-firefox-e10s: f680hxAWQP62Ah-zQ7ejzw
+ test-windows10-64-shippable/opt-raptor-tp6-4-firefox-profiling-e10s: DSF13-ssS0eUS4-PZeg7UA
+ test-windows10-64-shippable/opt-raptor-tp6-5-firefox-cold-e10s: N52RHHSsTy2IBVHWMDDc3A
+ test-windows10-64-shippable/opt-raptor-tp6-5-firefox-e10s: ZA4qlHykQ4Gh95DFNApyjg
+ test-windows10-64-shippable/opt-raptor-tp6-5-firefox-profiling-e10s: SgnFK8gaRYW1WwfzJ3_F6A
+ test-windows10-64-shippable/opt-raptor-tp6-6-firefox-cold-e10s: VH1c51peTPae9feWLB1x2A
+ test-windows10-64-shippable/opt-raptor-tp6-6-firefox-e10s: RePzEQzXRByQoLzggLhUgA
+ test-windows10-64-shippable/opt-raptor-tp6-6-firefox-profiling-e10s: ZPNmGyfyRt6_cfrthyKt3A
+ test-windows10-64-shippable/opt-raptor-tp6-7-firefox-cold-e10s: QPt1VvdGRfmSzhrrXTm1xQ
+ test-windows10-64-shippable/opt-raptor-tp6-7-firefox-e10s: Wzw-RmmvQKuxJhevB3iVHA
+ test-windows10-64-shippable/opt-raptor-tp6-7-firefox-profiling-e10s: CDeItvQ_QEKR_tE6tJKG0Q
+ test-windows10-64-shippable/opt-raptor-tp6-8-firefox-cold-e10s: NBtAKKdEQPmihcEqIdrDoQ
+ test-windows10-64-shippable/opt-raptor-tp6-8-firefox-e10s: ASngoNXQTnqcgD5H8aqvSw
+ test-windows10-64-shippable/opt-raptor-tp6-8-firefox-profiling-e10s: KgteMG3sTNGYBpBsytH7mg
+ test-windows10-64-shippable/opt-raptor-tp6-9-firefox-cold-e10s: fg5HkgfmSn-bIICG5moODA
+ test-windows10-64-shippable/opt-raptor-tp6-9-firefox-e10s: Vg5bQIirRq2TKS-FYFJCHQ
+ test-windows10-64-shippable/opt-raptor-tp6-9-firefox-profiling-e10s: CPwWXxFMRdWoTnsH_1z69w
+ test-windows10-64-shippable/opt-raptor-tp6-binast-1-firefox-e10s: KVyjNNveTb-9XutNizhhEw
+ test-windows10-64-shippable/opt-raptor-wasm-godot-firefox-e10s: KKLD-M22Qv6fHg_BcB5n0w
+ test-windows10-64-shippable/opt-raptor-wasm-godot-firefox-profiling-e10s: eLjL9LrDTBmfq00NM39o4w
+ test-windows10-64-shippable/opt-raptor-webaudio-firefox-e10s: TiYFD7tXTjWmjEJT0Yt_jw
+ test-windows10-64-shippable/opt-raptor-webaudio-firefox-profiling-e10s: XRPUfz5gTES2DkLTJEEGfA
+ test-windows10-64-shippable/opt-raptor-youtube-playback-firefox-e10s: OwuuZ5WoQRKTACl_KBQ-9g
+ test-windows10-64-shippable/opt-raptor-youtube-playback-firefox-profiling-e10s: W20FHgdHToiCftAC0J45Vw
+ test-windows10-64-shippable/opt-reftest-e10s-1: Wx51KDMITZqwRWwJekAvYQ
+ test-windows10-64-shippable/opt-reftest-e10s-2: VE7OrnqwSZyW1jPGVNJBqA
+ test-windows10-64-shippable/opt-talos-bcv-e10s: OrTd0EeXTeO2WU_RQMKUig
+ test-windows10-64-shippable/opt-talos-bcv-profiling-e10s: ZivknYOtR5S6csTEXn1aTQ
+ test-windows10-64-shippable/opt-talos-chrome-e10s: QxKMY3gsRs-f6PR2dwdglg
+ test-windows10-64-shippable/opt-talos-chrome-profiling-e10s: OnJSaIOgSSGR6swkosDh_g
+ test-windows10-64-shippable/opt-talos-damp-e10s: buYNG52WSgGaUPj76F-QSQ
+ test-windows10-64-shippable/opt-talos-dromaeojs-e10s: BYiJhT5XSYu_Yt0YrYREsw
+ test-windows10-64-shippable/opt-talos-dromaeojs-profiling-e10s: Vt18vdIeRqiO79zVpN60pQ
+ test-windows10-64-shippable/opt-talos-g1-e10s: JtPRdJW-RZmi2XIixu26MA
+ test-windows10-64-shippable/opt-talos-g1-profiling-e10s: Gy-wPmBkS2Sh-V4rZfPGRg
+ test-windows10-64-shippable/opt-talos-g3-profiling-e10s: bb22Y6SgTvqIajuuUfuDDw
+ test-windows10-64-shippable/opt-talos-g4-e10s: E45ovx9qRaSJC5j9YD8RdQ
+ test-windows10-64-shippable/opt-talos-g4-profiling-e10s: LgEAXtV2Rimewu7yMIM86Q
+ test-windows10-64-shippable/opt-talos-g5-e10s: bv3K9Cw4S_ivTbqpJQruUA
+ test-windows10-64-shippable/opt-talos-g5-profiling-e10s: TCTNFHPsTviaKkGNRZ9B0Q
+ test-windows10-64-shippable/opt-talos-motionmark-profiling-e10s: HsTypbkDRzmuCQ2crOvuHg
+ test-windows10-64-shippable/opt-talos-other-e10s: D7njtMfBQyeNtFh1T8QJ0w
+ test-windows10-64-shippable/opt-talos-other-profiling-e10s: BemUBpiUSdeW_Jwxnvf4lg
+ test-windows10-64-shippable/opt-talos-perf-reftest-e10s: OmbRANhQT_-Lo3S7akQHUA
+ test-windows10-64-shippable/opt-talos-perf-reftest-profiling-e10s: a0uMt-YAS8W5axDGbz5ksg
+ test-windows10-64-shippable/opt-talos-perf-reftest-singletons-e10s: eX3EhE-9TjiLen1FoNshvA
+ test-windows10-64-shippable/opt-talos-perf-reftest-singletons-profiling-e10s: NU4FgBWzRjKYjMpme0fwqw
+ test-windows10-64-shippable/opt-talos-realworld-webextensions-e10s: BtKkq9AoRvOSOzDLJKZEIA
+ test-windows10-64-shippable/opt-talos-realworld-webextensions-profiling-e10s: aNWTqkDiSpKpC6cR5vGt5Q
+ test-windows10-64-shippable/opt-talos-sessionrestore-many-windows-e10s: Kz8H9mnJQmWjRtdCMLbTMA
+ test-windows10-64-shippable/opt-talos-sessionrestore-many-windows-profiling-e10s: C9SOHQxAQ8ONqIoa0InckA
+ test-windows10-64-shippable/opt-talos-svgr-e10s: GUHLaRs_ToWH29RksN-2Mw
+ test-windows10-64-shippable/opt-talos-svgr-profiling-e10s: U4Fp-ugMR2yIuzZDV__xmQ
+ test-windows10-64-shippable/opt-talos-tabswitch-e10s: Ushtm2_MQVeZeSN9cg0jVg
+ test-windows10-64-shippable/opt-talos-tabswitch-profiling-e10s: Hdlg8B6uQLywt3kcAc9OBA
+ test-windows10-64-shippable/opt-talos-tp5o-e10s: Ua05MJ6CTXeLHavPzj9hYw
+ test-windows10-64-shippable/opt-talos-tp5o-profiling-e10s: EYIUP2EZRiSAY3i-OdYAHQ
+ test-windows10-64-shippable/opt-talos-webgl-e10s: ENjNIBC8SJSOqG80HGP01Q
+ test-windows10-64-shippable/opt-talos-xperf-e10s: TISVHvdFRNmW5bvCGn1VqA
+ test-windows10-64-shippable/opt-telemetry-tests-client-e10s: R0nLKptvQ2qju3v33cwLfQ
+ test-windows10-64-shippable/opt-web-platform-tests-crashtests-e10s: OZgXaBUBQmGZZeRO-hrLaQ
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-1: JU3HTR52S9SrjAluucag4A
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-10: UtNs8Vh4Rrm6nOBaIyNkGg
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-11: CJ_ibGY2TRGzUTaEe4yw4Q
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-12: Z5WkOXv8R4-9rfIq8YFPXw
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-2: QbZo3jf5QVuk_1onmhXAnw
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-3: FStgzGIzQ6S84BjXeJ5ixg
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-4: WCoXsgujSSOzIkz4rvioVg
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-5: cDY4uUzHTzKRm15mTXwb2Q
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-6: DLZsdMMoSM2Eud6i54GW7g
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-7: ep7G12YzQUCWMDfLudm0xw
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-8: Pfuek6XJTxSTU60G7fiv6A
+ test-windows10-64-shippable/opt-web-platform-tests-e10s-9: PH8LYfkaQQ6oHT34bqDGnw
+ test-windows10-64-shippable/opt-web-platform-tests-reftests-e10s-1: G7ZvPALjS86usa-NP8TVqA
+ test-windows10-64-shippable/opt-web-platform-tests-reftests-e10s-2: XGpAHu2uTiG1-uOq06rnkw
+ test-windows10-64-shippable/opt-web-platform-tests-reftests-e10s-3: chtUZqEGRXWIojJ0wer7Fw
+ test-windows10-64-shippable/opt-web-platform-tests-reftests-e10s-4: AN6BAJdbS6myyol4Yd3Trg
+ test-windows10-64-shippable/opt-web-platform-tests-wdspec-e10s-1: KURck8xDRSq1FWGbpclFSw
+ test-windows10-64-shippable/opt-web-platform-tests-wdspec-e10s-2: Jl_LyLszS826bWoIzp_-Aw
+ test-windows10-64-shippable/opt-web-platform-tests-wdspec-e10s-3: IxmbM36HTGG1LfXLtzWT_Q
+ test-windows10-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: SGE3kcyjS4GdHtono2jTRg
+ test-windows10-64-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: S4KRSIMKSNiU2APAaURcWw
+ test-windows10-64-shippable/opt-xpcshell-e10s-1: IcOnFMDyQ4yQN-A2HZj8vw
+ test-windows10-64-shippable/opt-xpcshell-e10s-2: YXGJ6KaGR1mMu3CBsu0ycA
+ test-windows10-64/debug-cppunit-1proc: fNDS_poQRVaERQa1mAr3UQ
+ test-windows10-64/debug-crashtest-e10s: IR0c7Hl9TmuMcUSpxSQ3Jg
+ test-windows10-64/debug-firefox-ui-functional-local-e10s: A5MN1k_8QPiU96Tlk_S-Iw
+ test-windows10-64/debug-firefox-ui-functional-remote-e10s: NLJMdJRfSfOnCaZK8ayjsQ
+ test-windows10-64/debug-gtest-1proc: J0DbR21DRBCUdAHZr9jLrQ
+ test-windows10-64/debug-jsreftest-e10s-1: cSZEUn7MSaSrEIYbceOa6A
+ test-windows10-64/debug-jsreftest-e10s-2: eQUD5FDcSAGJF-IKpvoN0A
+ test-windows10-64/debug-jsreftest-e10s-3: HJEemd_uTdKaxjVjeQuv0g
+ test-windows10-64/debug-marionette-e10s: I6dL6UyPRw6HLFTCLrw-1w
+ test-windows10-64/debug-marionette-gpu-e10s: Wbcqia1MR_iK7SCFbsukAA
+ test-windows10-64/debug-mochitest-a11y-1proc: fJ421k-TRUmQVQ2cv-HuVg
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-1: Yy2P3cGYQ76tJPBnCn1QjQ
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-2: HDuaXuJ6R22ITVlDVrlZuA
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-3: NmnpSg5HTW2UjQsje2DK7A
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-4: OGf4P0i3T3mLBVxD6wimxA
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-5: BuCxybBdQEeowKQMdUyN8w
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-6: G3Sdu_PlRQeY_H_2YEqLeQ
+ test-windows10-64/debug-mochitest-browser-chrome-e10s-7: CPFgUHwXRW6xVwCX1DXfxg
+ test-windows10-64/debug-mochitest-chrome-1proc-1: Ecc39hSvR1CavqPl2IC2rQ
+ test-windows10-64/debug-mochitest-chrome-1proc-2: flZvRm9-Tq2BxpYKCTIJpg
+ test-windows10-64/debug-mochitest-chrome-1proc-3: GImQJPm8QTqRWacRf0RSWA
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-1: RUI2XdgPTRSs0O6SKQtMXA
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-2: UkavNYGGRSiBvsYP9xWASA
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-3: aM6mrh4qS-yuwS9EKGZQgg
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-4: LMtmPeMZS5eUEHBKMZB8ig
+ test-windows10-64/debug-mochitest-devtools-chrome-e10s-5: NBw2imNMQySTNItaz3xZrQ
+ test-windows10-64/debug-mochitest-e10s-1: bB1x5dqST6yhRNJFaAlkMw
+ test-windows10-64/debug-mochitest-e10s-2: WjL77yxLQFO6MURDnwZKvQ
+ test-windows10-64/debug-mochitest-e10s-3: TPoltnVHQ4ip73ReMh-u0w
+ test-windows10-64/debug-mochitest-e10s-4: AdS81rcuR_CTg7j1OD9xUw
+ test-windows10-64/debug-mochitest-e10s-5: VXHtnxMPQCC3puZyQ5VfVQ
+ test-windows10-64/debug-mochitest-gpu-e10s: dtJNtrhoT7uMYs-h4LB9Eg
+ test-windows10-64/debug-mochitest-media-e10s: LO7olhztS6aLAFpS158YWw
+ test-windows10-64/debug-mochitest-media-spi-e10s: GjV2yGsLSLK0k-qbtkr7rQ
+ test-windows10-64/debug-mochitest-remote-e10s: eiUEiRqdRs-44pZeWGAXGg
+ test-windows10-64/debug-mochitest-webgl1-core-e10s: bp-mhP8dSJqhq0Bdqs07FA
+ test-windows10-64/debug-mochitest-webgl1-ext-e10s: L_mMHOdQQNaFtX0rcUTCdQ
+ test-windows10-64/debug-mochitest-webgl2-core-e10s: LF3W0xsCTk-f3qwEIPjPow
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-1: RLL8TV_ERNiRBLzAlR1-tA
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-2: W2Xok4ifQnm_9quVRaDGYw
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-3: MQBHrVCURCOTyfEgVa3jeg
+ test-windows10-64/debug-mochitest-webgl2-ext-e10s-4: QkOiKhZ7QJGNCIZrz0MJFg
+ test-windows10-64/debug-mochitest-webgpu-e10s: aP3uV12eR9K8Qxanp2nCUw
+ test-windows10-64/debug-reftest-e10s-1: VCUj3aU5TyujynaVRjskHw
+ test-windows10-64/debug-reftest-e10s-2: fB1HwP4XTE6rcOL-hP9qEA
+ test-windows10-64/debug-reftest-e10s-3: YWSwfgWyQ4izksOZokXICA
+ test-windows10-64/debug-reftest-e10s-4: G7wppz4zTQOQjM6SbERDhw
+ test-windows10-64/debug-telemetry-tests-client-e10s: cYwfGfIBTIWtDtGc-SjiqQ
+ test-windows10-64/debug-web-platform-tests-crashtests-e10s: GMTbaSwJTwqqK2v5SMyczA
+ test-windows10-64/debug-web-platform-tests-e10s-1: b3Y1Vvb0TO65C0UFUN7mSA
+ test-windows10-64/debug-web-platform-tests-e10s-10: HZcBnH3yQ9K5FmvRFyD3Bw
+ test-windows10-64/debug-web-platform-tests-e10s-11: R6Ny4nifSIO0tjelsGwzDQ
+ test-windows10-64/debug-web-platform-tests-e10s-12: dwf1xrS1RzuxrbZAoZk3Yw
+ test-windows10-64/debug-web-platform-tests-e10s-13: SujWz9KZRc-cOjtxq_1Wqw
+ test-windows10-64/debug-web-platform-tests-e10s-14: Gc1A_BLUTQ26bAX5pYkgxw
+ test-windows10-64/debug-web-platform-tests-e10s-15: eI6971Y7R22_m91uJ1WkAA
+ test-windows10-64/debug-web-platform-tests-e10s-16: cf1cwf0lQDSek6XOWzUPCA
+ test-windows10-64/debug-web-platform-tests-e10s-17: FqwayIBsQSm9Rz0ZGkJcUg
+ test-windows10-64/debug-web-platform-tests-e10s-18: Xaepwh4cT_Gvoc4gZE8QbA
+ test-windows10-64/debug-web-platform-tests-e10s-2: YiC42o0jQ-Cnk8FIri4pQA
+ test-windows10-64/debug-web-platform-tests-e10s-3: B6Iz1onDSJOh96rYrV762w
+ test-windows10-64/debug-web-platform-tests-e10s-4: Gs6sD0WvRTGD41R9K-Cm_Q
+ test-windows10-64/debug-web-platform-tests-e10s-5: E1Alm7mgSP-MfN5WZM4wlA
+ test-windows10-64/debug-web-platform-tests-e10s-6: Fw-9gGXpSbKvaUg9tm-ucQ
+ test-windows10-64/debug-web-platform-tests-e10s-7: DsgMYFtbRYm4NqkXlQrkfA
+ test-windows10-64/debug-web-platform-tests-e10s-8: F6mMRvCQSOisL6uE62cJDA
+ test-windows10-64/debug-web-platform-tests-e10s-9: QFDUzlpbS82XDxnCSdcy5g
+ test-windows10-64/debug-web-platform-tests-reftests-e10s-1: NMCg6Vm-ToCAT0m-QY1Phw
+ test-windows10-64/debug-web-platform-tests-reftests-e10s-2: R3C1_fjURbudDSLbLDK8dg
+ test-windows10-64/debug-web-platform-tests-reftests-e10s-3: NyS4QbhDR7iiUVGEz2ezHA
+ test-windows10-64/debug-web-platform-tests-reftests-e10s-4: Shq1j8D9QOuWq8T_zbyyfg
+ test-windows10-64/debug-web-platform-tests-reftests-e10s-5: PqV6gZ7WTvqc9BWm1wI8qA
+ test-windows10-64/debug-web-platform-tests-wdspec-e10s-1: Plyt2cQWSJWz9eLmHvBU8Q
+ test-windows10-64/debug-web-platform-tests-wdspec-e10s-2: Xf32g-XZRvmxcRFNZeRELw
+ test-windows10-64/debug-web-platform-tests-wdspec-e10s-3: an6S45xSQC-wu6enGORvvQ
+ test-windows10-64/debug-xpcshell-e10s-1: a6QTzqlFTxKgTyT02FxcJw
+ test-windows10-64/debug-xpcshell-e10s-2: MIWvVeW2QMqc54c3YdhGiw
+ test-windows10-64/opt-awsy-base-e10s: ApT8tvuXQoG9dXeeLOLhFA
+ test-windows10-64/opt-awsy-e10s: d94To1XgTXqw6B5hJmW77g
+ test-windows10-64/opt-awsy-tp6-e10s: UeDSQsv5R8665OfeEiJg0Q
+ test-windows10-64/opt-browser-screenshots-e10s: DmnU2Vv9Toe-X3gAkvxNrw
+ test-windows10-64/opt-cppunit-1proc: Iid9j5ZLQ9GEg097Jk85MQ
+ test-windows10-64/opt-crashtest-e10s: R2fXSFd_RpqBlAC7BUIEwg
+ test-windows10-64/opt-firefox-ui-functional-local-e10s: L-cHrnlbT7KknVoOlskxkw
+ test-windows10-64/opt-firefox-ui-functional-remote-e10s: LL3PzqLYQQaOusevEsHuKg
+ test-windows10-64/opt-gtest-1proc: BVxqFMxYS4ulGRPGj9G9HQ
+ test-windows10-64/opt-jsreftest-e10s-1: G4rIbxexR0W-C23cuKSXUQ
+ test-windows10-64/opt-jsreftest-e10s-2: BmMSDsTVTiOoBtNuBdpmvw
+ test-windows10-64/opt-marionette-e10s: K8Uk4I1XR6C7ekhQ2nTIoQ
+ test-windows10-64/opt-marionette-gpu-e10s: TeKk4wKiTGSqv3ZrnBAlrA
+ test-windows10-64/opt-mochitest-a11y-1proc: ZsIBgARMQlW26KSkNErURA
+ test-windows10-64/opt-mochitest-browser-chrome-e10s-1: ERyEKLKRS7qYA6AbecYYlw
+ test-windows10-64/opt-mochitest-browser-chrome-e10s-2: UDrYRHsOQFiph2gY0jNeow
+ test-windows10-64/opt-mochitest-browser-chrome-e10s-3: YaNBXZ4xRpmjmPPjCEaNGQ
+ test-windows10-64/opt-mochitest-browser-chrome-e10s-4: EqKDnZDgR8CQORlpwGnS6Q
+ test-windows10-64/opt-mochitest-browser-chrome-e10s-5: DrUqt8G7TC-W218SpqZ_AA
+ test-windows10-64/opt-mochitest-browser-chrome-e10s-6: Yrc4PeUsTTWVxRALPOYI6w
+ test-windows10-64/opt-mochitest-browser-chrome-e10s-7: AP4fI741Rv6gZt9M_tnzPQ
+ test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-1: DGJakN6dSbiwYxB21MQmNQ
+ test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-2: curV5-DFSv-_1L4gGQxpiQ
+ test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-3: OT2xMsjLRE6NtgpmIT70hg
+ test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-4: OW6Qps0RSUO55qLsuDmsdw
+ test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-5: P8UOquu0Tr-HO8L4eZDcWg
+ test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-6: SF6D8uruSLiQIybTRpCq2g
+ test-windows10-64/opt-mochitest-browser-chrome-fis-e10s-7: LvA3X7sUQoyQPCwGu21DPg
+ test-windows10-64/opt-mochitest-chrome-1proc-1: JAZjusYUTey_S4MoB9nXZg
+ test-windows10-64/opt-mochitest-chrome-1proc-2: EU5UxqsvTnea-ncSEtJddQ
+ test-windows10-64/opt-mochitest-devtools-chrome-e10s-1: bd-gBL99TGeZjnZEqBl6Cg
+ test-windows10-64/opt-mochitest-devtools-chrome-e10s-2: BF-9kWObS8CjNKOKIAj8-w
+ test-windows10-64/opt-mochitest-devtools-chrome-e10s-3: D1enU6S-S5mn89QyCKm3EA
+ test-windows10-64/opt-mochitest-devtools-chrome-e10s-4: IF6LKdzMTrquAa4tOr6dAg
+ test-windows10-64/opt-mochitest-devtools-chrome-e10s-5: YeP7KgygTLelLNUMk23bkg
+ test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-1: LifxbeVDS7OACccmQnly0g
+ test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-2: fjmuMfMoRV6qUdetnl_czQ
+ test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-3: KtrVf6heS7umV_rCYrFoSg
+ test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-4: Ye1nnHm9STOEUW-c_Ju7Tg
+ test-windows10-64/opt-mochitest-devtools-chrome-fis-e10s-5: A8_LtU-GQ-evkPCSZ26DRQ
+ test-windows10-64/opt-mochitest-e10s-1: QRWebNnmTG-g4VmIdY_zwQ
+ test-windows10-64/opt-mochitest-e10s-2: T3_vdIg7THO0RVH6pA3mkQ
+ test-windows10-64/opt-mochitest-e10s-3: Og4r54FaQResUjjfq3Z4JA
+ test-windows10-64/opt-mochitest-e10s-4: S37KREXoRR6ZxTMXUrNVxw
+ test-windows10-64/opt-mochitest-e10s-5: fKAIlTU1TB2hS-6KO-ua8A
+ test-windows10-64/opt-mochitest-fis-e10s-1: MD4a023XRzOWYgBH8SkScw
+ test-windows10-64/opt-mochitest-fis-e10s-2: LzSE9Ik9SRaZNj5x4NH-9w
+ test-windows10-64/opt-mochitest-fis-e10s-3: SqfSVthKTpujGIi9Andh8A
+ test-windows10-64/opt-mochitest-fis-e10s-4: UHFwfwYRQPeB7DiiBgYMgA
+ test-windows10-64/opt-mochitest-fis-e10s-5: Dq8sB4g0R1GmqNLPungoaQ
+ test-windows10-64/opt-mochitest-gpu-e10s: HcufIS9yTXa9EXbBDby-Mg
+ test-windows10-64/opt-mochitest-media-e10s: HjBtqKZMQVy1zZHJUmsxow
+ test-windows10-64/opt-mochitest-media-fis-e10s: KOwkUKnJTYqZGfJyvMk9Ug
+ test-windows10-64/opt-mochitest-media-spi-e10s: BfeW1zYpQpil06MUGg-s7g
+ test-windows10-64/opt-mochitest-remote-e10s: b8HMoYsIT-muLaZ7cuMBfw
+ test-windows10-64/opt-mochitest-webgl1-core-e10s: VrwTa_dGTg6FbeRQlLD8kA
+ test-windows10-64/opt-mochitest-webgl1-core-fis-e10s: AHqjU2UIRzulh6y6vjLqYw
+ test-windows10-64/opt-mochitest-webgl1-ext-e10s: PVjXv3SIQbaX8MkNWiJhRg
+ test-windows10-64/opt-mochitest-webgl1-ext-fis-e10s: FSvgBAS_Sc-avhMfqY5Kdg
+ test-windows10-64/opt-mochitest-webgl2-core-e10s: VyKliIPmQcWdS4KpHszvHw
+ test-windows10-64/opt-mochitest-webgl2-core-fis-e10s: JgFK2mHKRLabMUlReGUkwA
+ test-windows10-64/opt-mochitest-webgl2-ext-e10s-1: bwEaLiupR1KoKcUVP_CHDw
+ test-windows10-64/opt-mochitest-webgl2-ext-e10s-2: cCcNR95zQqiAWQjfzPZIyw
+ test-windows10-64/opt-mochitest-webgl2-ext-e10s-3: SSBtF9pQTmS_-MpfDUwL3A
+ test-windows10-64/opt-mochitest-webgl2-ext-e10s-4: QPMewhV2T4GYUuy91XV_Qw
+ test-windows10-64/opt-mochitest-webgl2-ext-fis-e10s-1: IgTZOxxATcapM1jPWYnNKA
+ test-windows10-64/opt-mochitest-webgl2-ext-fis-e10s-2: Uaf6GhlOSSyFWbKgUjaQRA
+ test-windows10-64/opt-mochitest-webgl2-ext-fis-e10s-3: bNHYlM11R-CT_4tTz3Rurw
+ test-windows10-64/opt-mochitest-webgl2-ext-fis-e10s-4: agbsd---QlKMVPRtUrGPog
+ test-windows10-64/opt-mochitest-webgpu-e10s: W7luRffpSI-aA9rzuF3cIQ
+ test-windows10-64/opt-mochitest-webgpu-fis-e10s: BXoAh9FvQ229OQbJmbAnVQ
+ test-windows10-64/opt-raptor-ares6-firefox-e10s: LRb6M51oQAqczTmIIsT-Eg
+ test-windows10-64/opt-raptor-jetstream2-firefox-e10s: bP6J-bAiRQW5bHgpRcYbHg
+ test-windows10-64/opt-raptor-motionmark-animometer-firefox-e10s: GDIxdSeqQiWe9pEaFlxh3g
+ test-windows10-64/opt-raptor-motionmark-htmlsuite-firefox-e10s: JpWcd5udTGWvfP0eQZ_T2g
+ test-windows10-64/opt-raptor-speedometer-firefox-e10s: DVoTh0CkRwiVb9oxNC7oVw
+ test-windows10-64/opt-raptor-stylebench-firefox-e10s: SAcgZ0a7SmO4I03JrH82aQ
+ test-windows10-64/opt-raptor-sunspider-firefox-e10s: e2FKcwvqQvWgIv3b0sKVVw
+ test-windows10-64/opt-raptor-tp6-1-firefox-cold-e10s: Or3QEM4dRBuoySCxpG0K7A
+ test-windows10-64/opt-raptor-tp6-1-firefox-e10s: HJ5Ge8_oT5u--b-lGBZV6g
+ test-windows10-64/opt-raptor-tp6-10-firefox-cold-e10s: aonqBQiuTgyjHh_eBiWs3A
+ test-windows10-64/opt-raptor-tp6-10-firefox-e10s: bKTAtGrLTbyRCcpqOSlp-Q
+ test-windows10-64/opt-raptor-tp6-11-firefox-cold-e10s: a3e5wxVaQgy3g6zsD_8acQ
+ test-windows10-64/opt-raptor-tp6-12-firefox-cold-e10s: GAuI1MV1Tp-XO2WmZvpMiQ
+ test-windows10-64/opt-raptor-tp6-13-firefox-cold-e10s: D1QRqks1RJq9d9ReCZYtbg
+ test-windows10-64/opt-raptor-tp6-14-firefox-cold-e10s: WT4WKnklQR6M6OTOymKENQ
+ test-windows10-64/opt-raptor-tp6-15-firefox-cold-e10s: ahEQfXPiTS2ykyqnbh0G-w
+ test-windows10-64/opt-raptor-tp6-16-firefox-cold-e10s: BIkVpjRjSIib5NTVCry1Ig
+ test-windows10-64/opt-raptor-tp6-17-firefox-cold-e10s: bHz_6EanSjewsK0_JsJUlg
+ test-windows10-64/opt-raptor-tp6-18-firefox-cold-e10s: fX85Rq60Tfq9MLeeAYd1iA
+ test-windows10-64/opt-raptor-tp6-19-firefox-cold-e10s: TuhoWPk_QLmUt5-RY-VgvQ
+ test-windows10-64/opt-raptor-tp6-2-firefox-cold-e10s: O9hUgTwhQlKukTcpwCGvdw
+ test-windows10-64/opt-raptor-tp6-2-firefox-e10s: f1kPhf8iTRy63o0Nh8REMA
+ test-windows10-64/opt-raptor-tp6-20-firefox-cold-e10s: eIC9nXOtQjWUEhO-MAtUHg
+ test-windows10-64/opt-raptor-tp6-21-firefox-cold-e10s: C3zyuhUcStanxFHSFwlbDA
+ test-windows10-64/opt-raptor-tp6-22-firefox-cold-e10s: bsrybdwqR0Kr92J59QCzfQ
+ test-windows10-64/opt-raptor-tp6-23-firefox-cold-e10s: Q-P0vbOnT3moStRhkHhvmg
+ test-windows10-64/opt-raptor-tp6-24-firefox-cold-e10s: UcoM7G6nTJujxZFaI26BVQ
+ test-windows10-64/opt-raptor-tp6-25-firefox-cold-e10s: YLRzCGYVTuGvn8s99aoEqQ
+ test-windows10-64/opt-raptor-tp6-26-firefox-cold-e10s: UF_sEIV3Q8CwAi17FD7iFg
+ test-windows10-64/opt-raptor-tp6-27-firefox-cold-e10s: NhS8hcKmQ1yfk145fXTULg
+ test-windows10-64/opt-raptor-tp6-28-firefox-cold-e10s: e-xV8wtcTT2K06VVBsTxbA
+ test-windows10-64/opt-raptor-tp6-29-firefox-cold-e10s: GQ5k2GV4SW6ayVWgtyM0ZA
+ test-windows10-64/opt-raptor-tp6-3-firefox-cold-e10s: YGTUyjx7SfGvpP5t5CRSlA
+ test-windows10-64/opt-raptor-tp6-3-firefox-e10s: QSXi7txWSEiz04sBAody-A
+ test-windows10-64/opt-raptor-tp6-30-firefox-cold-e10s: I93aWq8zSWa7roipvVjFuQ
+ test-windows10-64/opt-raptor-tp6-4-firefox-cold-e10s: JrHsTnBrSBmYGU7S9_buyw
+ test-windows10-64/opt-raptor-tp6-4-firefox-e10s: KEOa7nVNQP65dbM5C43XjA
+ test-windows10-64/opt-raptor-tp6-5-firefox-cold-e10s: GA7qM_8aRnC1Lbylgxt0jQ
+ test-windows10-64/opt-raptor-tp6-5-firefox-e10s: WSEek3s0Quijah7vaDjUOA
+ test-windows10-64/opt-raptor-tp6-6-firefox-cold-e10s: fn5qvaiGSYmPQyXvbgxosg
+ test-windows10-64/opt-raptor-tp6-6-firefox-e10s: aoHvOX4zR6KMOQCD_vTA3A
+ test-windows10-64/opt-raptor-tp6-7-firefox-cold-e10s: Cx5_bYzqTsmzLSg4YhSawA
+ test-windows10-64/opt-raptor-tp6-7-firefox-e10s: DCl3ggKQRVixdEexmmru5g
+ test-windows10-64/opt-raptor-tp6-8-firefox-cold-e10s: dTE80IN7Qd-XEwcHLNsgxg
+ test-windows10-64/opt-raptor-tp6-8-firefox-e10s: ek8pyRhWTJGBc3VOdBaBEw
+ test-windows10-64/opt-raptor-tp6-9-firefox-cold-e10s: XIMk--uMSS2nvqLzCMFAig
+ test-windows10-64/opt-raptor-tp6-9-firefox-e10s: b-5wN8JKQSaWD2TpRqt7cA
+ test-windows10-64/opt-raptor-tp6-binast-1-firefox-e10s: LPe8t5F8Szem4_Sw9ZvVWA
+ test-windows10-64/opt-raptor-wasm-godot-firefox-e10s: PylX0vjuTuGNPCeMOVnIJQ
+ test-windows10-64/opt-raptor-webaudio-firefox-e10s: KO0XGSKDTI2zOfL1H0lCSg
+ test-windows10-64/opt-raptor-youtube-playback-firefox-e10s: ARIBF7uESjWfpYrl8VFWZw
+ test-windows10-64/opt-reftest-e10s-1: KOtGsuDSSeOM5I9mL1a-PA
+ test-windows10-64/opt-reftest-e10s-2: aM4I1eF0TB-7ouAhdKeJ3A
+ test-windows10-64/opt-talos-bcv-e10s: Bbuoa1c9RT-jD6ocA9kgUg
+ test-windows10-64/opt-talos-chrome-e10s: Tyn27KexQWqBi6q7adzKXA
+ test-windows10-64/opt-talos-damp-e10s: fOIaUVCfTX-jhJBwEOxr8Q
+ test-windows10-64/opt-talos-dromaeojs-e10s: RutaDDQcQAqnEo9qQbMdaw
+ test-windows10-64/opt-talos-g1-e10s: BUuAoOkzSsmF7NWk9WcBwA
+ test-windows10-64/opt-talos-g4-e10s: D7X6kN6JTIWsUJCGcVeW0A
+ test-windows10-64/opt-talos-g5-e10s: QcxD9sRBQ8qHgd1g2iSLtQ
+ test-windows10-64/opt-talos-other-e10s: M3JW2wW-RLCJ0jDhaWdNoA
+ test-windows10-64/opt-talos-perf-reftest-e10s: XZAvwi-tSqidRoLzifGbFg
+ test-windows10-64/opt-talos-perf-reftest-singletons-e10s: ApHKZfSlTxmHCGeDvUE3jw
+ test-windows10-64/opt-talos-realworld-webextensions-e10s: QXnfu8M8RjSocmcD8RvKLQ
+ test-windows10-64/opt-talos-sessionrestore-many-windows-e10s: O8O8Fp6SRW6tOr8ge3QhDw
+ test-windows10-64/opt-talos-svgr-e10s: fmNLUx4VR6KZ2VkFefYPjA
+ test-windows10-64/opt-talos-tabswitch-e10s: dbFsBydXSI-TXS94-pymyQ
+ test-windows10-64/opt-talos-tp5o-e10s: D0cNbpGxT-OxzIXbtw2SMw
+ test-windows10-64/opt-talos-webgl-e10s: B4Beu_IZSGqhzuOkhSQACA
+ test-windows10-64/opt-talos-xperf-e10s: WwFXbmlOQ2STIJjyl9pxUA
+ test-windows10-64/opt-telemetry-tests-client-e10s: G4VXSUWBQomu9MmKsoZ2Ww
+ test-windows10-64/opt-test-verify-e10s-1: L9D-HsPNSTqRqOGMWbQuBw
+ test-windows10-64/opt-test-verify-e10s-2: ReXPVx5cR4GxV_iJKh3F9w
+ test-windows10-64/opt-test-verify-gpu-e10s: S5es8rVOQBe8lDAAuZ6AiQ
+ test-windows10-64/opt-test-verify-wpt-e10s-1: Qvd913sTSaerqoHdqethwA
+ test-windows10-64/opt-test-verify-wpt-e10s-2: BQc56dqSTe2uSYKZ7az7SA
+ test-windows10-64/opt-test-verify-wpt-e10s-3: EkFRMl_2TOWD6jOWlcZxXA
+ test-windows10-64/opt-web-platform-tests-crashtests-e10s: NrY9tT3AS92bcWFI1rkLsA
+ test-windows10-64/opt-web-platform-tests-e10s-1: DQFKioOKQEelTxB-fe053Q
+ test-windows10-64/opt-web-platform-tests-e10s-10: T3LtVnwnTzmUI55vkGAjzw
+ test-windows10-64/opt-web-platform-tests-e10s-11: GYcKVhquT_CQGXgAYwckuw
+ test-windows10-64/opt-web-platform-tests-e10s-12: eB43KuQQQfyJyqcCf1vL0Q
+ test-windows10-64/opt-web-platform-tests-e10s-2: MGZhJAo9SMKSMr4YIXmjsg
+ test-windows10-64/opt-web-platform-tests-e10s-3: WNWD_6ZkRaCUhapArA-M1A
+ test-windows10-64/opt-web-platform-tests-e10s-4: Rfrr4TmmQiKNXmU5sro1rQ
+ test-windows10-64/opt-web-platform-tests-e10s-5: FFlgBgn2Ri-uho_YRXgvjg
+ test-windows10-64/opt-web-platform-tests-e10s-6: Mg7ODmlJTqihoaaDvBZwuQ
+ test-windows10-64/opt-web-platform-tests-e10s-7: RrZsqG4hSPmyLDqa7LUwgw
+ test-windows10-64/opt-web-platform-tests-e10s-8: Za5oqXdYSoGhs2FHKwVQkA
+ test-windows10-64/opt-web-platform-tests-e10s-9: LOmoXlHbQfanwB-evUQjJA
+ test-windows10-64/opt-web-platform-tests-reftests-e10s-1: A62ZHzOARxyGOSsVaOxH-w
+ test-windows10-64/opt-web-platform-tests-reftests-e10s-2: B78m4aAsQsiRumP3d5qbwA
+ test-windows10-64/opt-web-platform-tests-reftests-e10s-3: AoyDHzC-TcOuRQLJ7qm-ow
+ test-windows10-64/opt-web-platform-tests-reftests-e10s-4: Oa-btyNZSk6rdXxI_IRDmw
+ test-windows10-64/opt-web-platform-tests-wdspec-e10s-1: XY7kpyZtT52D4xKbjFaHyA
+ test-windows10-64/opt-web-platform-tests-wdspec-e10s-2: dNWH5fNvS--Vqsm_bJuSDw
+ test-windows10-64/opt-web-platform-tests-wdspec-e10s-3: JU6X7Cn0Q9e8bUwMoLO_kw
+ test-windows10-64/opt-xpcshell-e10s-1: dRnAl5LrQQeCntC_0QqTiQ
+ test-windows10-64/opt-xpcshell-e10s-2: KejAE36IQFC8_PasQgWWKg
+ test-windows10-aarch64/opt-crashtest-e10s: UuylGdsLQ5WMPrfR4kkckQ
+ test-windows10-aarch64/opt-mochitest-media-e10s: LON30i8wRRuOokq0qep_TQ
+ test-windows10-aarch64/opt-mochitest-media-spi-e10s: Xw_wKe0cRHaaDE1eOxTnJQ
+ test-windows10-aarch64/opt-mochitest-remote-e10s: BBcBcHQHTyyJ6zX-kO1zOw
+ test-windows10-aarch64/opt-raptor-youtube-playback-firefox-e10s: FDpaPM2cSVyANI2frvoMpw
+ test-windows10-aarch64/opt-reftest-e10s-1: bkNRVsg9S5W77322CGbmug
+ test-windows10-aarch64/opt-reftest-e10s-2: ZhSN_EGWQp63NjC4hqBg2Q
+ test-windows10-aarch64/opt-talos-sessionrestore-many-windows-e10s: SHp-2c2WT5edpmQfLZXF-g
+ test-windows10-aarch64/opt-web-platform-tests-crashtests-e10s: Ly5s7AO1SACv6gzF6TwhIA
+ test-windows10-aarch64/opt-web-platform-tests-e10s-1: bAXooGSOTTKKZvxp4zEkKg
+ test-windows10-aarch64/opt-web-platform-tests-e10s-10: ByvvuYIWTSSxue29YkvFdA
+ test-windows10-aarch64/opt-web-platform-tests-e10s-11: MmmR0x-5TZOFNTpZGAapoQ
+ test-windows10-aarch64/opt-web-platform-tests-e10s-12: XE7IeFw9R-KYYjJ9tQeeLA
+ test-windows10-aarch64/opt-web-platform-tests-e10s-13: RPC1m1mgQ0-imqvp3yp57w
+ test-windows10-aarch64/opt-web-platform-tests-e10s-14: HIR9Nq4QTaCP7PWJqtUIiA
+ test-windows10-aarch64/opt-web-platform-tests-e10s-15: PhK4pPyBTlqJndOKjlvh7w
+ test-windows10-aarch64/opt-web-platform-tests-e10s-16: CX7DbA74QOWk3ulJ1zuzWA
+ test-windows10-aarch64/opt-web-platform-tests-e10s-2: Nt0aeGwVTZWKUSv5l_6FAg
+ test-windows10-aarch64/opt-web-platform-tests-e10s-3: JGRRPeb8TWGPTF2XY9Pn_g
+ test-windows10-aarch64/opt-web-platform-tests-e10s-4: Fm8KGTVxSK28aJiMqigdGg
+ test-windows10-aarch64/opt-web-platform-tests-e10s-5: aaKGQiitQqqt1WUDHP1IbQ
+ test-windows10-aarch64/opt-web-platform-tests-e10s-6: JY_ZdZOOQUuBBJrAjca_ig
+ test-windows10-aarch64/opt-web-platform-tests-e10s-7: OKE80CLdTXya5wqa2TnWAA
+ test-windows10-aarch64/opt-web-platform-tests-e10s-8: PueB2qSWRq-bluuXJFF5CA
+ test-windows10-aarch64/opt-web-platform-tests-e10s-9: APjeC_CZTEWWPALSaIBaRw
+ test-windows10-aarch64/opt-web-platform-tests-reftests-e10s-1: ZQdhJMCvR7WWMEP5NGEnyQ
+ test-windows10-aarch64/opt-web-platform-tests-reftests-e10s-2: AFlvt-fuRgSdnwAiW4J7SA
+ test-windows10-aarch64/opt-web-platform-tests-reftests-e10s-3: DVcx_s5mS920mqt1zZvTUQ
+ test-windows10-aarch64/opt-web-platform-tests-reftests-e10s-4: Mo80i06_Sxi-Rx3rU6-fcw
+ test-windows7-32-mingwclang/debug-cppunit-1proc: YI9JkoxbT-20e1WsfXz9NA
+ test-windows7-32-mingwclang/debug-firefox-ui-functional-local-e10s: BmiydPVmQZyDjKtPnatyHw
+ test-windows7-32-mingwclang/debug-firefox-ui-functional-remote-e10s: fE77pDT6TGGcer0ywji5IA
+ test-windows7-32-mingwclang/debug-mochitest-a11y-1proc: RBmjdQs8S8igmFMtFR9hLQ
+ test-windows7-32-mingwclang/debug-mochitest-gpu-e10s: O2q79d6PRDSQgEZeirxIeQ
+ test-windows7-32-mingwclang/debug-mochitest-webgl1-core-e10s: bRg61oe9RgCFiukecAp3-g
+ test-windows7-32-mingwclang/debug-mochitest-webgl1-ext-e10s: DtETYNycRySoxOg-N5gNhg
+ test-windows7-32-mingwclang/debug-mochitest-webgl2-core-e10s: U0Vy2uwHT5OakERJNpKo7w
+ test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-1: XjOfU0hxT5q938OW9hknmg
+ test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-2: Wfc9kC50QCC2ybnNmlGStQ
+ test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-3: CqBbmg8QTNuMrYeu_DAihQ
+ test-windows7-32-mingwclang/debug-mochitest-webgl2-ext-e10s-4: PIweDhzOSJiImz7DLz_unQ
+ test-windows7-32-mingwclang/debug-mochitest-webgpu-e10s: PrVc94C0T5WaMaeffLhO0A
+ test-windows7-32-mingwclang/debug-reftest-e10s-1: MrxYXbZhSwO6ruH5s0EBzA
+ test-windows7-32-mingwclang/debug-reftest-e10s-2: D_LHNDV3QKurnIlaNrQofw
+ test-windows7-32-mingwclang/debug-reftest-e10s-3: UkRtgw1kR5iAQyuQg7PbCg
+ test-windows7-32-mingwclang/debug-reftest-e10s-4: cc6jT4eBSEGcJhQybLrGSQ
+ test-windows7-32-mingwclang/debug-telemetry-tests-client-e10s: Q4SsvqO5SpOAl8RaDK6AKw
+ test-windows7-32-mingwclang/opt-cppunit-1proc: SNaQ0wXhRdmRVEq6qx0T7w
+ test-windows7-32-mingwclang/opt-mochitest-gpu-e10s: e-ajlJviSbabvglKAYnYQg
+ test-windows7-32-shippable/opt-awsy-base-e10s: FnvPiecsTxKTehZo4HD2gw
+ test-windows7-32-shippable/opt-awsy-e10s: C-HJL7DzQga6o8aWa8HJuQ
+ test-windows7-32-shippable/opt-awsy-tp6-e10s: eboInj41SYG692ND0HyDew
+ test-windows7-32-shippable/opt-browser-screenshots-e10s: WHK_PrdrS_SqlAYMJ34xPA
+ test-windows7-32-shippable/opt-browsertime-tp6-chrome-cold-amazon-e10s: INX4PGQFSEurTeFBJfjogA
+ test-windows7-32-shippable/opt-browsertime-tp6-firefox-amazon-e10s: En1RAnWUQgyLzHwr2Q6yZg
+ test-windows7-32-shippable/opt-browsertime-tp6-firefox-cold-amazon-e10s: VrIVbgiDSKeRS53tk5k-yw
+ test-windows7-32-shippable/opt-browsertime-tp6-profiling-firefox-amazon-e10s: ZJ8lixGzSR2hWRMqXGR0-Q
+ test-windows7-32-shippable/opt-browsertime-tp6-profiling-firefox-cold-amazon-e10s: cUBNVzSsQQGpm0BlYN69Mg
+ test-windows7-32-shippable/opt-cppunit-1proc: cQhaj_RlTrip03nXZKVROw
+ test-windows7-32-shippable/opt-crashtest-e10s: MkUSfz5OQfCfuPntxQxYsg
+ test-windows7-32-shippable/opt-firefox-ui-functional-local-e10s: ZwdidMuzQqq9Yf_gAwt9nQ
+ test-windows7-32-shippable/opt-firefox-ui-functional-remote-e10s: PwFfjkeMRMW61nu1WYUh1w
+ test-windows7-32-shippable/opt-jsreftest-e10s-1: SG1gxMGFR2ChYEQwg0QL6w
+ test-windows7-32-shippable/opt-jsreftest-e10s-2: TjENsTZcRkCREsjJvrLw1w
+ test-windows7-32-shippable/opt-marionette-e10s: VLvkvK30S2ylbrhnPnYIsg
+ test-windows7-32-shippable/opt-mochitest-a11y-1proc: K7Xw2Q5wQOOizquMFXkyOw
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-1: PIA1dUm2Q1C7vs0qlwbBzg
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-2: GXducepqQBKc_inQHTRZ6g
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-3: Qj-xEJpeRmSc6fwMNhCC1w
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-4: HpEK6fIxQc2_wLBF6fgKFA
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-5: dXYoIta3SBiCPSkc6epssg
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-6: d1ZSyGeUSt21-dQpUrHMdw
+ test-windows7-32-shippable/opt-mochitest-browser-chrome-e10s-7: TCg-a6ROT1-M5l98HS-7qg
+ test-windows7-32-shippable/opt-mochitest-chrome-1proc-1: TEIa64QsQTCWyoN4tMxpRA
+ test-windows7-32-shippable/opt-mochitest-chrome-1proc-2: DizvBJ_4SaeGNP_O0pP7dw
+ test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-1: SVFqc5LRSz-a_TSoRG50uQ
+ test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-2: AOl6vEq8SwivJ_8idag6kg
+ test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-3: d153fU7YQ-G_t3wXDrlsyA
+ test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-4: EHGi4XiwQsmkRbSPPOZxYw
+ test-windows7-32-shippable/opt-mochitest-devtools-chrome-e10s-5: GJqZBL_ERXiB4na0EQ9zJw
+ test-windows7-32-shippable/opt-mochitest-e10s-1: fsQTyp27RguNdkJysS4TbA
+ test-windows7-32-shippable/opt-mochitest-e10s-2: MDOib51qSvyumbgjz5AcBw
+ test-windows7-32-shippable/opt-mochitest-e10s-3: aH22Z1wzRAq941bHilfuzg
+ test-windows7-32-shippable/opt-mochitest-e10s-4: UnmOWzOISQe_6-vepSIJsQ
+ test-windows7-32-shippable/opt-mochitest-e10s-5: PN5NNAp5QHijy_lUMr3Kug
+ test-windows7-32-shippable/opt-mochitest-gpu-e10s: ZWsP4PX0SBiv6gl1T5GLag
+ test-windows7-32-shippable/opt-mochitest-media-e10s-1: TtCUr8RTRjuPU6HZW8EyKA
+ test-windows7-32-shippable/opt-mochitest-media-e10s-2: Yvz16HywSku9U2X6VKne-w
+ test-windows7-32-shippable/opt-mochitest-media-spi-e10s-1: bOFjyqoEQFOU3lHCgb8QaA
+ test-windows7-32-shippable/opt-mochitest-media-spi-e10s-2: NZlzv_lDQSqtOw6-VapzHA
+ test-windows7-32-shippable/opt-mochitest-remote-e10s: egD59BydSXCardEtu41bXQ
+ test-windows7-32-shippable/opt-mochitest-webgl1-core-e10s: Rn5WGrsdRQCwQs6a4H3l3A
+ test-windows7-32-shippable/opt-mochitest-webgl1-ext-e10s: W8jpBuMmTSu5TY9uBabosg
+ test-windows7-32-shippable/opt-mochitest-webgl2-core-e10s: PVAmUAmJRWy1tgVHHNjFrw
+ test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-1: eGOAzGz3TiCrjjglgK0zNA
+ test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-2: D15uBBE2QKqJzXLH6KFmuA
+ test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-3: AcG6qrQrSZqYtNYhfJP9nA
+ test-windows7-32-shippable/opt-mochitest-webgl2-ext-e10s-4: NAk_3oefTLWivBDdJwxp2A
+ test-windows7-32-shippable/opt-mochitest-webgpu-e10s: HcCt45DRTQuzTcC1EgP-gA
+ test-windows7-32-shippable/opt-raptor-ares6-firefox-e10s: Zo0LDxWiQuCQe3vSzMCyxA
+ test-windows7-32-shippable/opt-raptor-jetstream2-firefox-e10s: MMnjv2UzRAadaqpMjXZ0uw
+ test-windows7-32-shippable/opt-raptor-motionmark-animometer-firefox-e10s: OXAnysNKS-mrjcl-wv67NQ
+ test-windows7-32-shippable/opt-raptor-motionmark-htmlsuite-firefox-e10s: WEWyMr0JR5Os30dLHjCiEw
+ test-windows7-32-shippable/opt-raptor-speedometer-firefox-e10s: V5Uz6Qv0S7GqT7Xb0dRNKQ
+ test-windows7-32-shippable/opt-raptor-stylebench-firefox-e10s: bpK9Oqs4TreV3eswkP6xbA
+ test-windows7-32-shippable/opt-raptor-sunspider-firefox-e10s: ZNvDGqsCRUGuip_nSl1T4w
+ test-windows7-32-shippable/opt-raptor-tp6-1-firefox-cold-e10s: BOB6nxeHRmywE0bDeClJWQ
+ test-windows7-32-shippable/opt-raptor-tp6-1-firefox-e10s: ZLmUmvbQTra4SzXqqIxU3g
+ test-windows7-32-shippable/opt-raptor-tp6-10-firefox-cold-e10s: erqKm04-SXC2OqTYIGzd1g
+ test-windows7-32-shippable/opt-raptor-tp6-10-firefox-e10s: dLtj-m1IR6Gj46g2d4V_9A
+ test-windows7-32-shippable/opt-raptor-tp6-11-firefox-cold-e10s: UL6JV0IbTPSo0Hfi5a-8sw
+ test-windows7-32-shippable/opt-raptor-tp6-12-firefox-cold-e10s: ZrVYcYtgTAyiGU4rVBAAZw
+ test-windows7-32-shippable/opt-raptor-tp6-13-firefox-cold-e10s: RUrmkSl5R-67BgYfVxnxLA
+ test-windows7-32-shippable/opt-raptor-tp6-14-firefox-cold-e10s: AP8-AtxlSDixQs9H8XbldQ
+ test-windows7-32-shippable/opt-raptor-tp6-15-firefox-cold-e10s: W8kUnZeYSU28Par1lPQoZA
+ test-windows7-32-shippable/opt-raptor-tp6-16-firefox-cold-e10s: Z7TTL6JOTSGJ7kaxBOTROw
+ test-windows7-32-shippable/opt-raptor-tp6-17-firefox-cold-e10s: Gctdbe45TPmpa5TevNLMcg
+ test-windows7-32-shippable/opt-raptor-tp6-18-firefox-cold-e10s: N-udlZdwTZKDVEHfdZWfJg
+ test-windows7-32-shippable/opt-raptor-tp6-19-firefox-cold-e10s: UO4Ju6JwQ2K3qDZ150QgVQ
+ test-windows7-32-shippable/opt-raptor-tp6-2-firefox-cold-e10s: eg7w9_QgTyiehDJLvKKwiQ
+ test-windows7-32-shippable/opt-raptor-tp6-2-firefox-e10s: TyUlojE3SgO_nTJrNkhT4Q
+ test-windows7-32-shippable/opt-raptor-tp6-20-firefox-cold-e10s: LR1mf09LTuO7LLodM9VV_w
+ test-windows7-32-shippable/opt-raptor-tp6-21-firefox-cold-e10s: ZzHggAVaSBqBlEWibMUPIA
+ test-windows7-32-shippable/opt-raptor-tp6-22-firefox-cold-e10s: YVTzrqtJSWeLqgFr0MJoYw
+ test-windows7-32-shippable/opt-raptor-tp6-23-firefox-cold-e10s: JDLiquc7Tv62ugfBeeRvvw
+ test-windows7-32-shippable/opt-raptor-tp6-24-firefox-cold-e10s: KfznUFY0TjCjyYWLTbCGRQ
+ test-windows7-32-shippable/opt-raptor-tp6-25-firefox-cold-e10s: DmDyoF-jR7itamtrkNiAnQ
+ test-windows7-32-shippable/opt-raptor-tp6-26-firefox-cold-e10s: GiPERflFTf-0XH2af5EYIg
+ test-windows7-32-shippable/opt-raptor-tp6-27-firefox-cold-e10s: ROWXUsebTZKOY2FBkJCq3g
+ test-windows7-32-shippable/opt-raptor-tp6-28-firefox-cold-e10s: AWnEEXplQzaUC0WABaXQVA
+ test-windows7-32-shippable/opt-raptor-tp6-29-firefox-cold-e10s: EvWX3lw0Tu2XNul3KZFGtg
+ test-windows7-32-shippable/opt-raptor-tp6-3-firefox-cold-e10s: JjiQuVDVSDqj7uRes02g-g
+ test-windows7-32-shippable/opt-raptor-tp6-3-firefox-e10s: DoV46UokQDKdmENY2DPHFA
+ test-windows7-32-shippable/opt-raptor-tp6-30-firefox-cold-e10s: MOSl3GCiTHGd5C1VibB_Qg
+ test-windows7-32-shippable/opt-raptor-tp6-4-firefox-cold-e10s: VVlt-mPwSHy_xkVIz0ACqQ
+ test-windows7-32-shippable/opt-raptor-tp6-4-firefox-e10s: cJQ88Zz0TbCgi2LM3faQpg
+ test-windows7-32-shippable/opt-raptor-tp6-5-firefox-cold-e10s: OYLb-uvETtuPBWhAThoDxg
+ test-windows7-32-shippable/opt-raptor-tp6-5-firefox-e10s: F2Gp7qmdT8y_FP5TXoGSLQ
+ test-windows7-32-shippable/opt-raptor-tp6-6-firefox-cold-e10s: d7HfZzuQTXSt1Bv-nyMKzQ
+ test-windows7-32-shippable/opt-raptor-tp6-6-firefox-e10s: FwfQoECjTHmrkjhJGV6YQw
+ test-windows7-32-shippable/opt-raptor-tp6-7-firefox-cold-e10s: P7559O48RKGcdmLCNaPBzw
+ test-windows7-32-shippable/opt-raptor-tp6-7-firefox-e10s: awZv0bDUTxy09SdEpev2QA
+ test-windows7-32-shippable/opt-raptor-tp6-8-firefox-cold-e10s: UBujl4K-SqymoCDfLcCuEA
+ test-windows7-32-shippable/opt-raptor-tp6-8-firefox-e10s: IFMfa4E-RAi2aVJ1_vslMQ
+ test-windows7-32-shippable/opt-raptor-tp6-9-firefox-cold-e10s: dvZzkx6uSACJB_XWd0TOXQ
+ test-windows7-32-shippable/opt-raptor-tp6-9-firefox-e10s: Qpm0tDKTTb2G29ELRAF0BQ
+ test-windows7-32-shippable/opt-raptor-tp6-binast-1-firefox-e10s: L2ix5G0oRsaWik2nSJagRw
+ test-windows7-32-shippable/opt-raptor-wasm-godot-firefox-e10s: aITVgOxIQaGbzuwT0gsrxg
+ test-windows7-32-shippable/opt-raptor-webaudio-firefox-e10s: VzckDIgvSH2vA0w9MI1Zwg
+ test-windows7-32-shippable/opt-raptor-youtube-playback-firefox-e10s: U_kvDIC0SgOmPu1i2dtmqQ
+ test-windows7-32-shippable/opt-reftest-e10s-1: TjhsPgZIRIKlID9sNpwOCg
+ test-windows7-32-shippable/opt-reftest-e10s-2: EwpLAXbbTniAOOOKN8w5aw
+ test-windows7-32-shippable/opt-reftest-gpu-e10s-1: KhhvA1DwQHyDdMsq_YKXKw
+ test-windows7-32-shippable/opt-reftest-gpu-e10s-2: eMsHAIMqRMuOb4K84dZPDw
+ test-windows7-32-shippable/opt-reftest-no-accel-e10s-1: VeznKuKYQpiQn7mbsaIfYw
+ test-windows7-32-shippable/opt-reftest-no-accel-e10s-2: QMi6ZsW5Qr60ye0LWl-HaA
+ test-windows7-32-shippable/opt-reftest-no-accel-e10s-3: N8lBfPtWTK6zc35r-j9RVQ
+ test-windows7-32-shippable/opt-reftest-no-accel-e10s-4: VvxyOkVCRWOpIFD0K1bbWQ
+ test-windows7-32-shippable/opt-talos-bcv-e10s: dImmMpb6TM6DTlTSXoAqPQ
+ test-windows7-32-shippable/opt-talos-chrome-e10s: Xfji6tnkT5KB1RfppPVJ0g
+ test-windows7-32-shippable/opt-talos-dromaeojs-e10s: O1iXZy3NQPWfTJPQuYVstg
+ test-windows7-32-shippable/opt-talos-g1-e10s: b8kLCXBOTdi4hKWKV4Wgaw
+ test-windows7-32-shippable/opt-talos-g4-e10s: S9XZjNXJRtedRDSDKirpLw
+ test-windows7-32-shippable/opt-talos-g5-e10s: ZvdEVTNiR4uPHBaFxEvcXA
+ test-windows7-32-shippable/opt-talos-other-e10s: Ix6rfmBxSCGpBwlKPCZqQw
+ test-windows7-32-shippable/opt-talos-perf-reftest-e10s: T9Y8fhLgSHCSkqZCj36YYw
+ test-windows7-32-shippable/opt-talos-perf-reftest-singletons-e10s: DYDK6wWlSwyf-MwSFanS9A
+ test-windows7-32-shippable/opt-talos-realworld-webextensions-e10s: N9PhxTRESfysVIqAyljGFA
+ test-windows7-32-shippable/opt-talos-sessionrestore-many-windows-e10s: UDcRGZJlShacBXFP5hGwuw
+ test-windows7-32-shippable/opt-talos-svgr-e10s: b_vDCNTMTQetdmI2jPTNSw
+ test-windows7-32-shippable/opt-talos-tabswitch-e10s: V-i8-v27Tz6A4-7FgSUaig
+ test-windows7-32-shippable/opt-talos-tp5o-e10s: EUWfpfNORUuCJ_qweEzECQ
+ test-windows7-32-shippable/opt-talos-webgl-e10s: VTB_hFF3SLmc5Asq1T-9lQ
+ test-windows7-32-shippable/opt-talos-xperf-e10s: eqMYddMqQx2ug636Bw4GUg
+ test-windows7-32-shippable/opt-telemetry-tests-client-e10s: deA_fxgBQcOWPwZUT4JkEA
+ test-windows7-32-shippable/opt-web-platform-tests-crashtests-e10s: DORNaLZSSqS16TLPe_C31A
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-1: G6liVUXTRIS_5i2G27tCQg
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-10: VQv3nkCET8q2pngi99ztLg
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-11: YGh04Oj8Qxe2yVLQYo8RnA
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-12: C3dYxyq0Qk-f0Inf4uK0-g
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-2: P3aV1Fn0TAGOB_qXmk39xQ
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-3: V7PjBXowSf-Rq3TwlQPOtQ
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-4: R_AGBcaQTpu1Ch8X8gCFew
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-5: f8Xu8_IdQzSI53ug6XeWnQ
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-6: IR3ttYAeSzuW1Ib1PLdqdw
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-7: akKNuMNkQYqNMp6RTesQMA
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-8: HafmpD1dTkOj_xBKKpkM9w
+ test-windows7-32-shippable/opt-web-platform-tests-e10s-9: AJG05JkdRFmhzohjDAtNHA
+ test-windows7-32-shippable/opt-web-platform-tests-reftests-e10s-1: JRE3DPLISyiliS1JYDWmsw
+ test-windows7-32-shippable/opt-web-platform-tests-reftests-e10s-2: f-JfHjLpTMepOm4qnbe3cg
+ test-windows7-32-shippable/opt-web-platform-tests-reftests-e10s-3: Ij5Z6w00RDCDxTVxv4tdhQ
+ test-windows7-32-shippable/opt-web-platform-tests-reftests-e10s-4: Up4328mBS5CC2KC8HpmU1g
+ test-windows7-32-shippable/opt-web-platform-tests-wdspec-e10s-1: U2l7xW98TaKg8ABfJWCFOQ
+ test-windows7-32-shippable/opt-web-platform-tests-wdspec-e10s-2: DTg9TQiHQ1uzV8ggCd6aXw
+ test-windows7-32-shippable/opt-web-platform-tests-wdspec-e10s-3: CZeNpoqYR26TirKoY_jUyQ
+ test-windows7-32-shippable/opt-web-platform-tests-wdspec-headless-e10s-1: Rm-TIh3iRC2y6B76i4Z4Zw
+ test-windows7-32-shippable/opt-web-platform-tests-wdspec-headless-e10s-2: DzeBpyaCTReyCYgqBKN2lQ
+ test-windows7-32-shippable/opt-xpcshell-e10s-1: Hqhc2taNSji650MyTr6xVg
+ test-windows7-32-shippable/opt-xpcshell-e10s-2: UbVEXFK0STWid53xG2a9IA
+ test-windows7-32/debug-cppunit-1proc: NfhdFilPRSC7gUqpjkod5A
+ test-windows7-32/debug-crashtest-e10s: I6YstPlVQbihORj5Bcy6pw
+ test-windows7-32/debug-firefox-ui-functional-local-e10s: eX4afg-SSKS-ruwg0XJRZQ
+ test-windows7-32/debug-firefox-ui-functional-remote-e10s: DNmbWGAeSOWKrWAwifasAQ
+ test-windows7-32/debug-gtest-1proc: XXjU7DzeS6qZMLD4bjwC7Q
+ test-windows7-32/debug-jsreftest-e10s-1: MYYwmR5rRZqUeS2xd2MrAQ
+ test-windows7-32/debug-jsreftest-e10s-2: OOaQLFL2QdafA0NwCYzOng
+ test-windows7-32/debug-jsreftest-e10s-3: SGKnETlhSAuRc6BZK4vjBA
+ test-windows7-32/debug-marionette-e10s: ZecvdCw4SPyprwWQq-JHMg
+ test-windows7-32/debug-mochitest-a11y-1proc: SRAskedKQ167E0Yk2V4DWg
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-1: QV9a2H6bSIKu6VF5wV8xDw
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-2: Wp5wWwzaQSKZW-u0iOWR5g
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-3: K3ESgNt7SOiNo1JNmz7MOw
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-4: OrS14ghNQrq3sUnMC7-s5A
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-5: XXVo9frmRLuc8DBVn2WjzQ
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-6: bYFkpSdORnKRwgiQkfv5Dw
+ test-windows7-32/debug-mochitest-browser-chrome-e10s-7: fXIUawsUQkK6gAltlCHBeg
+ test-windows7-32/debug-mochitest-chrome-1proc-1: aid0dEJ8SSCFEGJaPwKFWw
+ test-windows7-32/debug-mochitest-chrome-1proc-2: WJ-f2DTiRs2uHT49AtE6vQ
+ test-windows7-32/debug-mochitest-chrome-1proc-3: dJvY-86PSMi-sQNl9YSpdg
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-1: cKapVQUVQE-kPDkQnR7udQ
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-2: fbESm4SuSYuEb9QMs_v04w
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-3: b1gIML2QRTusLG8tlsi_vA
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-4: V__dHArzRcKhJI3llFnvSw
+ test-windows7-32/debug-mochitest-devtools-chrome-e10s-5: RcrczjIkSl-U51OvrJztNw
+ test-windows7-32/debug-mochitest-e10s-1: R261Yq7gS-mM5By-CinOlQ
+ test-windows7-32/debug-mochitest-e10s-2: KJHygu_mTReXklh642xbhg
+ test-windows7-32/debug-mochitest-e10s-3: U1cH36USTouT8-21zAbhvw
+ test-windows7-32/debug-mochitest-e10s-4: MS2Fvg1HQueKfw-NVnfjiQ
+ test-windows7-32/debug-mochitest-e10s-5: MDcLwUH0TRiVWQxXDFYLmg
+ test-windows7-32/debug-mochitest-gpu-e10s: PZh_Z-U_SpizmjSv3rqmfA
+ test-windows7-32/debug-mochitest-media-e10s-1: HYrB9Q6sQ_ifzy4HzvzPTw
+ test-windows7-32/debug-mochitest-media-e10s-2: DDhPa3qQQdG_-Ys-NhcqPw
+ test-windows7-32/debug-mochitest-media-e10s-3: XqKfgO8kRY23DYT69MuhIw
+ test-windows7-32/debug-mochitest-media-spi-e10s-1: D7tBo5QfT82m_0OdbBfYgw
+ test-windows7-32/debug-mochitest-media-spi-e10s-2: QkTd7mzzSrqjr3SMr5NPmA
+ test-windows7-32/debug-mochitest-media-spi-e10s-3: bmkACJ0gSv-s1kfNsRS-RA
+ test-windows7-32/debug-mochitest-remote-e10s: KLDwfU0OS_yEeZeFH4LCWw
+ test-windows7-32/debug-mochitest-webgl1-core-e10s: CfH9_k9hSjCJixStGXaeSA
+ test-windows7-32/debug-mochitest-webgl1-ext-e10s: C339iGPvQf2O3VvlsM00Mg
+ test-windows7-32/debug-mochitest-webgl2-core-e10s: SILB9V8bSt63r2My7AVaSQ
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-1: F1llzFh0Q2SNUis_xd_bWA
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-2: M6W-H1tcQoeVWkaj54FBPQ
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-3: caaSWuS5S7a4KVgAwI8ZLg
+ test-windows7-32/debug-mochitest-webgl2-ext-e10s-4: Bp_j5APaS1eSPf8jHswvlw
+ test-windows7-32/debug-mochitest-webgpu-e10s: KoFU9dkIRImjnKK9kWC9lg
+ test-windows7-32/debug-reftest-e10s-1: JO-4B4gXQMKkZnP6XTMEgw
+ test-windows7-32/debug-reftest-e10s-2: Xp3vToiiQ_uU7pmfvRS2Tw
+ test-windows7-32/debug-reftest-e10s-3: AACiBsOhTLm6CPkElqDwwA
+ test-windows7-32/debug-reftest-e10s-4: cdhphwwlRbSEC1bR72xGvw
+ test-windows7-32/debug-reftest-gpu-e10s-1: S9TPnwmlRmq07-0U7oDTog
+ test-windows7-32/debug-reftest-gpu-e10s-2: EiPlw-0ITj-1UFSSyKoFIQ
+ test-windows7-32/debug-reftest-gpu-e10s-3: UeIfFbkASR6gt7YEvYAHUw
+ test-windows7-32/debug-reftest-gpu-e10s-4: Lda7jWngSFeRQzafsb2moQ
+ test-windows7-32/debug-reftest-no-accel-e10s-1: f_-9W2c_SxCW3uungWtwVw
+ test-windows7-32/debug-reftest-no-accel-e10s-2: GK4UM16PT0anm_el1U4ekw
+ test-windows7-32/debug-reftest-no-accel-e10s-3: EjV97zErTWqLLoPHKNYsIw
+ test-windows7-32/debug-reftest-no-accel-e10s-4: CoHPMWsDTJulwGFBWQPdPw
+ test-windows7-32/debug-telemetry-tests-client-e10s: azP0nA1_SQusD11mFTDIbA
+ test-windows7-32/debug-web-platform-tests-crashtests-e10s: CbXz_7acROyALHM_zXdB6Q
+ test-windows7-32/debug-web-platform-tests-e10s-1: FSv27To4TMu6pgHcn-HNwA
+ test-windows7-32/debug-web-platform-tests-e10s-10: KCI8fyQGRKWZPjfJL5dnvQ
+ test-windows7-32/debug-web-platform-tests-e10s-11: PP-onrUkR_qONH8pT1gtyA
+ test-windows7-32/debug-web-platform-tests-e10s-12: MeTnX6DbQ3qV7p63JRRwJg
+ test-windows7-32/debug-web-platform-tests-e10s-13: WKmF20zUT_ii39vLsGbV0w
+ test-windows7-32/debug-web-platform-tests-e10s-14: RARLQ5rTQsiTPTqJGVTZnA
+ test-windows7-32/debug-web-platform-tests-e10s-15: SQZxa2dqSeG_Ii5PV49RGw
+ test-windows7-32/debug-web-platform-tests-e10s-16: dwfEkwIKRoS2CJzd_MXcjw
+ test-windows7-32/debug-web-platform-tests-e10s-17: CKXGitANSq62tt4eS9_gLw
+ test-windows7-32/debug-web-platform-tests-e10s-18: f-GVAn-LRUWI0aAChSKFSA
+ test-windows7-32/debug-web-platform-tests-e10s-2: WTtDSpqWSJy4YFXWV4vgzw
+ test-windows7-32/debug-web-platform-tests-e10s-3: E38WHP60Qs2SwotvrTCYPA
+ test-windows7-32/debug-web-platform-tests-e10s-4: SGoS6sW1Qc67eeHJa01dRg
+ test-windows7-32/debug-web-platform-tests-e10s-5: DTpWW8TLT42BN3yqk28nqQ
+ test-windows7-32/debug-web-platform-tests-e10s-6: WfxsSjahS1uzq7YuI287tQ
+ test-windows7-32/debug-web-platform-tests-e10s-7: JwrVTyrGRbqX0TIDBqAa8g
+ test-windows7-32/debug-web-platform-tests-e10s-8: RpnUwOhzS-KacwV6xE_gOA
+ test-windows7-32/debug-web-platform-tests-e10s-9: X8vRpCbzQIOVHuN5KWLyIA
+ test-windows7-32/debug-web-platform-tests-reftests-e10s-1: aMl3PVa8QEen-oP7hmYvxQ
+ test-windows7-32/debug-web-platform-tests-reftests-e10s-2: RYepa2-lTZawmlGpbs3gNQ
+ test-windows7-32/debug-web-platform-tests-reftests-e10s-3: Oktuvyu1SFml3hxUD0FbYw
+ test-windows7-32/debug-web-platform-tests-reftests-e10s-4: YxrK8zxwRNGidlc57UtXTA
+ test-windows7-32/debug-web-platform-tests-reftests-e10s-5: E-e9HehtS0q-xKVskae-tg
+ test-windows7-32/debug-web-platform-tests-wdspec-e10s-1: fLF7P17eSkq7A41fPZP6IQ
+ test-windows7-32/debug-web-platform-tests-wdspec-e10s-2: GFQrKKsMTrueWigmH6tkUg
+ test-windows7-32/debug-web-platform-tests-wdspec-e10s-3: MXlL6hMgQpGS8-iaVxgp7w
+ test-windows7-32/debug-xpcshell-e10s-1: Nk5NGbN_Sk2oMMMgQhC0gg
+ test-windows7-32/debug-xpcshell-e10s-2: PcwQtJ-eTUW_990_tkQN1Q
+ test-windows7-32/opt-awsy-base-e10s: CpuY0yGqTDGA3ZhOHzZ1yw
+ test-windows7-32/opt-awsy-e10s: d9jCvp_vR2iVD9GjOdx-FA
+ test-windows7-32/opt-awsy-tp6-e10s: WCEoFXU1TZ-ug-dJHAYDbQ
+ test-windows7-32/opt-browser-screenshots-e10s: Zkr9wzCJQXuau4goK0oliA
+ test-windows7-32/opt-cppunit-1proc: Y5sS_dIqTTWg3px_2XmnLg
+ test-windows7-32/opt-crashtest-e10s: XKTwq8a7RZmpi4B0C80dHw
+ test-windows7-32/opt-firefox-ui-functional-local-e10s: eUVURVMESmSUoEvf7b8TZg
+ test-windows7-32/opt-firefox-ui-functional-remote-e10s: cYhwpif3QeGL03zKZ3ayrQ
+ test-windows7-32/opt-gtest-1proc: A00Lb24hSnKvczfbYvLPgQ
+ test-windows7-32/opt-jsreftest-e10s-1: c4RVF2QkT5KHVyWWmHJFKA
+ test-windows7-32/opt-jsreftest-e10s-2: dR_mK9q8T9i1St_HbN1IKQ
+ test-windows7-32/opt-marionette-e10s: aoMRqvwqRR6Xwknp40ywFw
+ test-windows7-32/opt-mochitest-a11y-1proc: bfjwWzEQQC6VhgPQUEtBNw
+ test-windows7-32/opt-mochitest-browser-chrome-e10s-1: DfdBMC64Sa-8P_K4JYImtw
+ test-windows7-32/opt-mochitest-browser-chrome-e10s-2: clj3WXz3R6yhD3Jnxwlehg
+ test-windows7-32/opt-mochitest-browser-chrome-e10s-3: Yx6Vh21hQU-w3DOZOjzYZQ
+ test-windows7-32/opt-mochitest-browser-chrome-e10s-4: D70w1io2S0uVSg6xIoX2_g
+ test-windows7-32/opt-mochitest-browser-chrome-e10s-5: Kgfv3xf9Q_eMURuTe0L-6g
+ test-windows7-32/opt-mochitest-browser-chrome-e10s-6: Q-GDGa4YQhmiuBcY1gnPCA
+ test-windows7-32/opt-mochitest-browser-chrome-e10s-7: YjDGOMgOQneF2lrgzZEWZg
+ test-windows7-32/opt-mochitest-chrome-1proc-1: IVSzzKVrRn-qqoXa5VoyOg
+ test-windows7-32/opt-mochitest-chrome-1proc-2: Y1KkuBh-Sy2M6RO0WliHqQ
+ test-windows7-32/opt-mochitest-devtools-chrome-e10s-1: Gi4UrdnNQVmudymLa9xMjw
+ test-windows7-32/opt-mochitest-devtools-chrome-e10s-2: Is8soNIHQ3a6EFyQnvjz2Q
+ test-windows7-32/opt-mochitest-devtools-chrome-e10s-3: cWHrdVAtT3WuHTQuWgpArw
+ test-windows7-32/opt-mochitest-devtools-chrome-e10s-4: fnQKfTg0Rqak01qHglYL_g
+ test-windows7-32/opt-mochitest-devtools-chrome-e10s-5: AFLN_rX2S_mYZWohLKcxLw
+ test-windows7-32/opt-mochitest-e10s-1: Misgoa7YTqCWzX0PfnvSMA
+ test-windows7-32/opt-mochitest-e10s-2: XyLI8aD0TLG5zZqrukeZag
+ test-windows7-32/opt-mochitest-e10s-3: XBQsdgOgRYipdK8n6RGHVQ
+ test-windows7-32/opt-mochitest-e10s-4: SS4WRr-jS-udELKWD3uRGg
+ test-windows7-32/opt-mochitest-e10s-5: LfitpCtWT0WTlXz3N3f_tA
+ test-windows7-32/opt-mochitest-gpu-e10s: aC0vrlu1SJivc_Ij-YTk1A
+ test-windows7-32/opt-mochitest-media-e10s-1: XKRaAbcURfmxhCxBYjPlhw
+ test-windows7-32/opt-mochitest-media-e10s-2: D14pVM3LTj6f5qo4Fd2HNw
+ test-windows7-32/opt-mochitest-media-e10s-3: N6tN9tJmQsKp58qt2oTRjg
+ test-windows7-32/opt-mochitest-media-spi-e10s-1: V6ubEBmWSY-7yEKJsJk_DA
+ test-windows7-32/opt-mochitest-media-spi-e10s-2: TXgcx59XT5Km4E3GThhaZA
+ test-windows7-32/opt-mochitest-media-spi-e10s-3: azMvGZqhSU2JrxcHOEmC4w
+ test-windows7-32/opt-mochitest-remote-e10s: UC7167JYRnOFbcR3cwqkYA
+ test-windows7-32/opt-mochitest-webgl1-core-e10s: N7oQMNXSTuuhASim_fAv5Q
+ test-windows7-32/opt-mochitest-webgl1-ext-e10s: HbP-OlKxQLu_uIBp2REAHA
+ test-windows7-32/opt-mochitest-webgl2-core-e10s: B4owYmKjS_2dXArCupzNuA
+ test-windows7-32/opt-mochitest-webgl2-ext-e10s-1: XkkJRKLfRZugu15nLnx31w
+ test-windows7-32/opt-mochitest-webgl2-ext-e10s-2: IpX6rKfgSXeHncL2B0mWWw
+ test-windows7-32/opt-mochitest-webgl2-ext-e10s-3: Hk-hzYPuRdO7qjuhvvT-yQ
+ test-windows7-32/opt-mochitest-webgl2-ext-e10s-4: AnNYguk1QR6PJ-YngImL-A
+ test-windows7-32/opt-mochitest-webgpu-e10s: XRLjtYyIQpmBVA8jdS_oaA
+ test-windows7-32/opt-raptor-ares6-firefox-e10s: NbYffUl9ToC_3q6RPa_-9A
+ test-windows7-32/opt-raptor-jetstream2-firefox-e10s: IScOubi6R8GSdloHiKDU5A
+ test-windows7-32/opt-raptor-motionmark-animometer-firefox-e10s: QuSqLdtEQfGygC5iaeyLsw
+ test-windows7-32/opt-raptor-motionmark-htmlsuite-firefox-e10s: RWR0CxqBRtSabj9qkpEg4g
+ test-windows7-32/opt-raptor-speedometer-firefox-e10s: Nes2ZUF1SG2g7or8LDOMWw
+ test-windows7-32/opt-raptor-stylebench-firefox-e10s: APjERCJJRtmvCPxw4wr2MA
+ test-windows7-32/opt-raptor-sunspider-firefox-e10s: fs0SP_y7TcGm8y05cGIXNA
+ test-windows7-32/opt-raptor-tp6-1-firefox-cold-e10s: QPaxI4L4SO-V5y1avH7t_Q
+ test-windows7-32/opt-raptor-tp6-1-firefox-e10s: EhSnrGi0RdyX8Pxwe0TuJg
+ test-windows7-32/opt-raptor-tp6-10-firefox-cold-e10s: IUnNi4IJQ2myrsxJdJ5u3Q
+ test-windows7-32/opt-raptor-tp6-10-firefox-e10s: ZA3oi16QSdeIq43j3QiD4A
+ test-windows7-32/opt-raptor-tp6-11-firefox-cold-e10s: ZO0yKrRVSkaoohHjebcZ8w
+ test-windows7-32/opt-raptor-tp6-12-firefox-cold-e10s: QdJtVldhTS2TM_l3_VaMwA
+ test-windows7-32/opt-raptor-tp6-13-firefox-cold-e10s: UN8uJttMQFmAYpesOF1xeA
+ test-windows7-32/opt-raptor-tp6-14-firefox-cold-e10s: X-UFrbAISge589AFS6zVzQ
+ test-windows7-32/opt-raptor-tp6-15-firefox-cold-e10s: JduXVHcUT-S-LZ8OAzlXow
+ test-windows7-32/opt-raptor-tp6-16-firefox-cold-e10s: CwGYYE91R-ySPzZlzIAGog
+ test-windows7-32/opt-raptor-tp6-17-firefox-cold-e10s: NZt_SqtPQ3iy9uqeZlwdiw
+ test-windows7-32/opt-raptor-tp6-18-firefox-cold-e10s: EJE9_avYRamex2wPjMkRiA
+ test-windows7-32/opt-raptor-tp6-19-firefox-cold-e10s: AFHw6lQ7R4yqkoxWXhbAXw
+ test-windows7-32/opt-raptor-tp6-2-firefox-cold-e10s: PP-0jwv0RkqaL97l953x7w
+ test-windows7-32/opt-raptor-tp6-2-firefox-e10s: RncgwVxdTLO_TbeOfN5OzA
+ test-windows7-32/opt-raptor-tp6-20-firefox-cold-e10s: cDllh5ilQXC0D5ZqrxB6Qg
+ test-windows7-32/opt-raptor-tp6-21-firefox-cold-e10s: BbKxUvavRyGm1BI7IQPFAA
+ test-windows7-32/opt-raptor-tp6-22-firefox-cold-e10s: fffMx4S4QaWVmdV3z16RNA
+ test-windows7-32/opt-raptor-tp6-23-firefox-cold-e10s: J5p7ap0ZSSq8UrZtxc3ZdQ
+ test-windows7-32/opt-raptor-tp6-24-firefox-cold-e10s: Xuw7xAYrSHGq7DBz2CJooQ
+ test-windows7-32/opt-raptor-tp6-25-firefox-cold-e10s: TUbMvX7nTcSEtJrVXyYnug
+ test-windows7-32/opt-raptor-tp6-26-firefox-cold-e10s: Pw1hvwMoQgG1qZGpq80zRA
+ test-windows7-32/opt-raptor-tp6-27-firefox-cold-e10s: ViHHdSk6SO2tkGPHKOnSlw
+ test-windows7-32/opt-raptor-tp6-28-firefox-cold-e10s: InIu0HxXTEWEnq3FL6c0yg
+ test-windows7-32/opt-raptor-tp6-29-firefox-cold-e10s: G9C2debgSHKqFCmf36E3_g
+ test-windows7-32/opt-raptor-tp6-3-firefox-cold-e10s: Adv-XfOuRty-mfAIE6lDtw
+ test-windows7-32/opt-raptor-tp6-3-firefox-e10s: Zil7uSuDQdyZeav33kH-Og
+ test-windows7-32/opt-raptor-tp6-30-firefox-cold-e10s: Og5_VNVtSAa3xnqRW8rCbA
+ test-windows7-32/opt-raptor-tp6-4-firefox-cold-e10s: L0GhhG1tTVisiRBNxydrwA
+ test-windows7-32/opt-raptor-tp6-4-firefox-e10s: LTsre7fcS-iydxnMkG-uWA
+ test-windows7-32/opt-raptor-tp6-5-firefox-cold-e10s: aBih6DUeQ7S35RG0Khxjbg
+ test-windows7-32/opt-raptor-tp6-5-firefox-e10s: f8GyuzcTQBarnZitIfIueQ
+ test-windows7-32/opt-raptor-tp6-6-firefox-cold-e10s: AekDXif7Q2C8tWXauFQqtw
+ test-windows7-32/opt-raptor-tp6-6-firefox-e10s: KuxX94voQpO8c-qkgQxcqw
+ test-windows7-32/opt-raptor-tp6-7-firefox-cold-e10s: CwKMeU2WSeGa8bkPhZoIvw
+ test-windows7-32/opt-raptor-tp6-7-firefox-e10s: Jpm_ec3bRzyzkk8yzCJS6Q
+ test-windows7-32/opt-raptor-tp6-8-firefox-cold-e10s: N8JiUXMaSCyTppUaqYWI1Q
+ test-windows7-32/opt-raptor-tp6-8-firefox-e10s: fNTckMTYTbeKyw4p7XvdZg
+ test-windows7-32/opt-raptor-tp6-9-firefox-cold-e10s: HjGVQz7bRBSU_cn0mbkWmA
+ test-windows7-32/opt-raptor-tp6-9-firefox-e10s: Bju_MGLIRDGSpiOvrwNV6w
+ test-windows7-32/opt-raptor-tp6-binast-1-firefox-e10s: f4xWb0ZwTdeqJj9gmEB2hw
+ test-windows7-32/opt-raptor-wasm-godot-firefox-e10s: Vpy12FmBQQCvVQr_jsPSZQ
+ test-windows7-32/opt-raptor-webaudio-firefox-e10s: ZJQcp17DSySk4ZuYJWeA3Q
+ test-windows7-32/opt-raptor-youtube-playback-firefox-e10s: KzdCA2g2TUCd434b9YIKoQ
+ test-windows7-32/opt-reftest-e10s-1: IN2kCQZuSReVf6gcWghpyQ
+ test-windows7-32/opt-reftest-e10s-2: IyyHcYwdS9qIZIV36miO6w
+ test-windows7-32/opt-reftest-gpu-e10s-1: DMT7hqpMSjmHup_Uv2bC5w
+ test-windows7-32/opt-reftest-gpu-e10s-2: V7r50kQHRpyBR2o0mpI4Iw
+ test-windows7-32/opt-reftest-no-accel-e10s-1: bymq34X0Q4yHVXZki_7jVA
+ test-windows7-32/opt-reftest-no-accel-e10s-2: GT6nAFCIT1SHmw-hmfz7EA
+ test-windows7-32/opt-reftest-no-accel-e10s-3: Bm4GezN4TV-oNIHplNHyfA
+ test-windows7-32/opt-reftest-no-accel-e10s-4: VrGRpsy8SzOjUxDD9B0KbA
+ test-windows7-32/opt-talos-bcv-e10s: Ci4eJMqdTGmgADqsuXsQoA
+ test-windows7-32/opt-talos-chrome-e10s: FmCDr9nESyCIR4Vn0MmvtA
+ test-windows7-32/opt-talos-dromaeojs-e10s: P3JaVsV4SHiRWbJ4Lj8wCg
+ test-windows7-32/opt-talos-g1-e10s: X-YuXrKRRQm8ztC3uKsoLQ
+ test-windows7-32/opt-talos-g4-e10s: RSjd9PtDTzGsBRHNtasd7Q
+ test-windows7-32/opt-talos-g5-e10s: axwRGGAxTAWNZdij641Jww
+ test-windows7-32/opt-talos-other-e10s: HxKubQK2T-uY3MfQD-qP1w
+ test-windows7-32/opt-talos-perf-reftest-e10s: B27zd6mhQ_Gb9t_8HIayWQ
+ test-windows7-32/opt-talos-perf-reftest-singletons-e10s: QkanabI0SWCzZyD_kxziiQ
+ test-windows7-32/opt-talos-realworld-webextensions-e10s: WeeY25D3RU2d2gl1WYWVQA
+ test-windows7-32/opt-talos-sessionrestore-many-windows-e10s: YO7ONzkPQB2WqDMh9hrklA
+ test-windows7-32/opt-talos-svgr-e10s: aIGZE-2zRt2-dmSrbgqeDA
+ test-windows7-32/opt-talos-tabswitch-e10s: K-nagvA4RtWKuy-8mN26RQ
+ test-windows7-32/opt-talos-tp5o-e10s: f8Cv6VLJR_K9qTPDsMDOkg
+ test-windows7-32/opt-talos-webgl-e10s: TOuPrxYRRfS6tcZd3NsG0A
+ test-windows7-32/opt-talos-xperf-e10s: Y6VmAbxsQrS4d4Vg_Gfxkg
+ test-windows7-32/opt-telemetry-tests-client-e10s: NYDcVVTASLaIEiehs1Y-cw
+ test-windows7-32/opt-test-verify-e10s-1: Srcbfg3xQw2Fzdmmuhz4Pg
+ test-windows7-32/opt-test-verify-e10s-2: ZIYt-mrpQHqSa1qG_G_EQg
+ test-windows7-32/opt-test-verify-gpu-e10s: LCdfCe6jQ7KRUuFSLt_gLA
+ test-windows7-32/opt-test-verify-wpt-e10s-1: Ze13LkGDSHWQ4vuHVBsHQw
+ test-windows7-32/opt-test-verify-wpt-e10s-2: TI71V7lESqiVq3c38PRCLw
+ test-windows7-32/opt-test-verify-wpt-e10s-3: bDfLorcdS9y9AbdOUcvEwQ
+ test-windows7-32/opt-web-platform-tests-crashtests-e10s: dvdmMtVGRdWdoT_G_-Q-QA
+ test-windows7-32/opt-web-platform-tests-e10s-1: Y2e2vrhlTu6alNJ-58HZEw
+ test-windows7-32/opt-web-platform-tests-e10s-10: DcegzA7qTWSconY9cfh5WQ
+ test-windows7-32/opt-web-platform-tests-e10s-11: Z4hqQOOKROCv23QXUL-3LA
+ test-windows7-32/opt-web-platform-tests-e10s-12: eolq4wXdQKKlIMjpnEiWVg
+ test-windows7-32/opt-web-platform-tests-e10s-2: P8fttagaTJKN_B_1b_nVbQ
+ test-windows7-32/opt-web-platform-tests-e10s-3: FrOH933JSNGuBhwxDIY0iw
+ test-windows7-32/opt-web-platform-tests-e10s-4: aLZoR38JReuZxYU467wU-Q
+ test-windows7-32/opt-web-platform-tests-e10s-5: F5qqOP3_QgWqGANmEXSH5g
+ test-windows7-32/opt-web-platform-tests-e10s-6: daZaDUvDSDyh1AreawW0BQ
+ test-windows7-32/opt-web-platform-tests-e10s-7: dvjB0VLHT8WS7--7q4LJ4A
+ test-windows7-32/opt-web-platform-tests-e10s-8: C06TIQa7QHiComUTry1tsA
+ test-windows7-32/opt-web-platform-tests-e10s-9: TIwFSxNaTNGmdW8-K8OhWA
+ test-windows7-32/opt-web-platform-tests-reftests-e10s-1: C145wvOgRVitIKaPQsEGbA
+ test-windows7-32/opt-web-platform-tests-reftests-e10s-2: aov4BHomRr-x8GNaLpbfWQ
+ test-windows7-32/opt-web-platform-tests-reftests-e10s-3: Dp6gZ3xtQO-DxcDkjamWyg
+ test-windows7-32/opt-web-platform-tests-reftests-e10s-4: BHY4qFknT2uoeX_EzX6e8A
+ test-windows7-32/opt-web-platform-tests-wdspec-e10s-1: ciFbhziETw-Q9NA6jJUZZg
+ test-windows7-32/opt-web-platform-tests-wdspec-e10s-2: C17eCyRmRnW2Bkq8aiPmCQ
+ test-windows7-32/opt-web-platform-tests-wdspec-e10s-3: exme7WBsSyeEaGbqzQWcNw
+ test-windows7-32/opt-xpcshell-e10s-1: FlyXk1kPSTGF9biSp468gQ
+ test-windows7-32/opt-xpcshell-e10s-2: ETdo44clTFWEZlauPRozKQ
+ toolchain-browsertime: XDyTs8lxRF-DqN5W--IS0w
+ toolchain-clang-dist-toolchain: RO2flChhTbyO63axthBonQ
+ toolchain-linux32-geckodriver: RS2TFJaeS3mbFL9FdPpA2w
+ toolchain-linux64-android-gradle-dependencies: Cz2uw8b2QmmTexdOIEYIZA
+ toolchain-linux64-android-ndk-linux-repack: Ug81Nk3HQYKG609vmDyXcA
+ toolchain-linux64-android-sdk-linux-repack: WKN-ZRPwRZCeNl0trNtBVA
+ toolchain-linux64-binutils: a0RoJGdRQ5C6UCY4obHsOg
+ toolchain-linux64-cbindgen: KVVfUO0CSmWVBcB93Vx1oA
+ toolchain-linux64-cctools-port: GragU-ulT1yyDsYCtSrGzQ
+ toolchain-linux64-clang-5.0: JL5TGaOjTVef-lPCt6zi6Q
+ toolchain-linux64-clang-7: bkKxTUf4SwKAk38fndSUOA
+ toolchain-linux64-clang-9: Yy680zNCRqGgY9DsDS81wg
+ toolchain-linux64-clang-9-aarch64-cross: NjPIKH5eTiaHyi_w6hu65A
+ toolchain-linux64-clang-9-android-cross: QDgZaovNR3aFMyL23ZKz4w
+ toolchain-linux64-clang-9-cross: UMh1t6HfRFafur2EVlvKaw
+ toolchain-linux64-clang-9-macosx-cross: ZivUE9amRZq53rC6EZyRUQ
+ toolchain-linux64-clang-9-mingw-x64: XjFoX1OfSEe5xjFKFhZvdw
+ toolchain-linux64-clang-9-mingw-x86: L9kfRoIySzW2Q23bHi2RWw
+ toolchain-linux64-clang-tidy: Z6dPnXc8Q4SfEipjyREOPg
+ toolchain-linux64-custom-v8: dulld0kqQfWmxPchNFt1qg
+ toolchain-linux64-fix-stacks: FcW-r1UHSTKFzR1OGv3QSQ
+ toolchain-linux64-gcc-7: UGKHvcwNQPitP8m2pQ97gQ
+ toolchain-linux64-gcc-8: KkIEAzmtSmi_B44JwIA5vw
+ toolchain-linux64-gcc-sixgill: bwj2gCRORDqN7ROznITwhA
+ toolchain-linux64-geckodriver: EahO8KUCQO6oH7XsvMXyxA
+ toolchain-linux64-gn: ar_0nTYFRg637SwhyBh6vQ
+ toolchain-linux64-grcov: Mxa40vAeTUa4ALMsQAZheQ
+ toolchain-linux64-hfsplus: UomYwi3wQdOUuGj_9i1QNw
+ toolchain-linux64-infer: WZp6hfxhRQmYzbHkTKR07A
+ toolchain-linux64-libdmg: ZvFzpfrnSx-zJhZLAGbRAA
+ toolchain-linux64-llvm-dsymutil: KyNhjMnCQX-Hh8cvydAXHA
+ toolchain-linux64-lucetc: PA7NnNWuTbSq2VJQ3o_kWA
+ toolchain-linux64-mar-tools: PPRDvkDCSUS485N1N6tAjw
+ toolchain-linux64-mingw-fxc2-x86: cmK0OYMHRUafXd9w_91H2w
+ toolchain-linux64-mingw32-gcc: ddRrECsBQ62KiortN9sgXA
+ toolchain-linux64-mingw32-nsis: CemW25_NQtaQDz9pBVmlAg
+ toolchain-linux64-minidump-stackwalk: JlY_SvzoSNOcwLvWe3PcAA
+ toolchain-linux64-nasm: b_U0p4u2T6WareVbLwkdpQ
+ toolchain-linux64-nasm-2.13.02: Y1uJKUGNTaK3UQtEOYcL2w
+ toolchain-linux64-node-10: MQcj05XLRQW0kWkMjNwbyQ
+ toolchain-linux64-rust-1.39: EMJmEtq3QYa8Z49REKJeZg
+ toolchain-linux64-rust-1.41: Ir6g-58qQqG_DGMKzArTOA
+ toolchain-linux64-rust-android-1.41: Ou03bt5pTpKU3ExiyCsfTw
+ toolchain-linux64-rust-cross-1.41: bEczX-VFRvCJBoREoqpTKg
+ toolchain-linux64-rust-macos-1.41: TB8YkM87RIKUxCmwMknHUA
+ toolchain-linux64-rust-nightly: Ropn2AHhRl2lgdzMxjDaHg
+ toolchain-linux64-rust-size: Cc_zhwc8R9CpBiKOYlr9Bw
+ toolchain-linux64-rust-windows-1.41: SYQMR7JqQ1Kl7CFdSX1MYA
+ toolchain-linux64-sccache: XrR_grO7SxqQlXG8mYvDgw
+ toolchain-linux64-tup: IE2UjFLHQJCd15OCgNPupw
+ toolchain-linux64-upx: Taf34uFoTwaTz6QHbtn_lw
+ toolchain-linux64-wine: DYy4EENmRy2zPlGtiLI6_g
+ toolchain-macosx64-cbindgen: dEncVur5SVa4mX0EPSRl0g
+ toolchain-macosx64-clang: TdyTwEK1To2ykPwn1Cg34g
+ toolchain-macosx64-clang-tidy: fdE6dAD2Rh2KheyxIEaSkg
+ toolchain-macosx64-fix-stacks: SCptnTvaQUWhdOpVdzEN1g
+ toolchain-macosx64-geckodriver: PX-OE57rR5esqOWG0-WuDA
+ toolchain-macosx64-gn: Ii7Bj6H7RjWEptf5FiAvfA
+ toolchain-macosx64-grcov: NKA252xCSy23yQJShZTXcg
+ toolchain-macosx64-minidump-stackwalk: JsbyJCuXTKKHSxbuLlIkEQ
+ toolchain-macosx64-node-10: VO937BuJSBecpn_Ucn47Bw
+ toolchain-macosx64-sccache: V3ck3vwBS1SOEbiRXNfh0g
+ toolchain-mingw32-rust-1.41: fllx_uoATM2rSQHknDbmTQ
+ toolchain-rustc-dist-toolchain: QWAggrxWTtCrgvU0uF4ilA
+ toolchain-wasi-sysroot: SaoYYehuQoGH48MjmuRc3g
+ toolchain-wgpu-deps: Ppb0qAfnSUWywP81o8tCLw
+ toolchain-win32-geckodriver: WUhp58AeSTyKf6-lQ2zs2g
+ toolchain-win32-gn: XsxSamjjQ_C813fSjeJJjg
+ toolchain-win32-minidump-stackwalk: bJyZkx0hRZ2ECsaYo-TlRA
+ toolchain-win32-node-10: FOsYejdhTJKL04WWPI5d3w
+ toolchain-win64-cbindgen: ENzNL1hSTvqElwsrYZCPRA
+ toolchain-win64-clang-cl: a2l60dKRRlmYMFKiaszrgw
+ toolchain-win64-clang-tidy: WUbmAwIATDWB8NTraFVYCA
+ toolchain-win64-dump-syms: Jd5v4Wf7TtSmMGvYgPZwiQ
+ toolchain-win64-fix-stacks: HY9uFXa1S2-KxwvAYRR2CQ
+ toolchain-win64-geckodriver: ekr5utRfSBSEn4d7CdTM5Q
+ toolchain-win64-grcov: Vq7gY9jlT92rDbVWQqiYAQ
+ toolchain-win64-nasm: b7ZOrpZMTxqYmusoAvUmDQ
+ toolchain-win64-node-10: SZJXEAmHSmKLxqcmm1e1tQ
+ toolchain-win64-rust-1.41: UaQ0orO5SZ2ILbha1CyuGA
+ toolchain-win64-rust-size: UMVAemi0Ryq1bENJXdoRlw
+ toolchain-win64-sccache: OXSH-f7iSaaiO7dNDbgXkQ
+ toolchain-wrench-deps: dfwuIJ7uTGOKfgUuqk9dHw
+ upload-generated-sources-linux-shippable/opt: JsFgahPqT22syzcBb7a31Q
+ upload-generated-sources-linux64-shippable/opt: fWtSqzbhSReVfXaDpJSxjQ
+ upload-generated-sources-macosx64-shippable/opt: PYyHHIIiRRy08w2uJVw6rA
+ upload-generated-sources-win32-shippable/opt: f53Q99hJR-i-Qu4Myyqfqw
+ upload-generated-sources-win64-aarch64-shippable/opt: UKXYiY34RniNE47SK-sCsw
+ upload-generated-sources-win64-shippable/opt: Jy0Ke0MHQSG7MZ9dNjRPtg
+ valgrind-linux64-valgrind/opt: IVDrHmEMTrOrXdXGafY33w
+ webrender-android-emulator-debug: L_fy2OtsTxWcuYU7wlFBKA
+ webrender-android-emulator-release: agQFQAOlT_uS8Mu2X0U4mw
+ webrender-android-hw-p2-debug: J2UNjaMXRGuLWr9cG7RGCA
+ webrender-android-hw-p2-opt: UfFIBnKtT2yh97c4YigpQw
+ webrender-cargotest-macos-build: KSGmyMIzT2yr7lLNz43jqg
+ webrender-lint-tidy: cEJAXiY3Qnyy4277SIGLEA
+ webrender-linux-debug: I70EWbeASBqeYezqCFKzEw
+ webrender-linux-release: I60Iz0e5Sji9hDUL4se3nQ
+ webrender-macos-debug: D8V1QjUTRCeSMQx0b8xloA
+ webrender-macos-release: WUmgg6P1Twmj6UZ0U1XVPg
+ webrender-windows: OTEwx1MtTnmi7bxuE9hYIw
+ webrender-wrench-android-debug: JfaZIjpWRGikHOpVKQkjEg
+ webrender-wrench-android-release: Sml65fd_QIaWJo-VOsc3EA
+ webrender-wrench-macos-build: INlHVhAcRKWjHf4xbz95Gg
+filters:
+ - target_tasks_method
+head_ref: 14d9cd421424a2f3e38b9c8489900c3bb769846
+head_repository: https://hg.mozilla.org/releases/mozilla-release
+head_rev: 14d9cd421424a2f3e38b9c8489900c3bb769846
+hg_branch: default
+level: "3"
+message: ""
+moz_build_date: "20200227094956"
+next_version: null
+optimize_target_tasks: true
+owner: cron@noreply.mozilla.org
+phabricator_diff: null
+project: mozilla-release
+pushdate: 1582796996
+pushlog_id: "37162"
+release_enable_emefree: false
+release_enable_partners: false
+release_eta: ""
+release_history: {}
+release_partner_build_number: 1
+release_partner_config: {}
+release_partners: []
+release_product: null
+release_type: release
+required_signoffs: []
+signoff_urls: {}
+target_tasks_method: ship_geckoview
+tasks_for: cron
+try_mode: null
+try_options: null
+try_task_config: {}
+version: "75.0"
diff --git a/taskcluster/test/params/try.yml b/taskcluster/test/params/try.yml
new file mode 100644
index 0000000000..7fddf517f3
--- /dev/null
+++ b/taskcluster/test/params/try.yml
@@ -0,0 +1,59 @@
+---
+base_repository: https://hg.mozilla.org/mozilla-central
+build_date: 1509479809
+build_number: 1
+app_version: 60.0a1
+version: 60.0a1
+next_version: null
+do_not_optimize: []
+enable_always_target: true
+existing_tasks: {}
+filters:
+ - target_tasks_method
+head_ref: 482ccd66d49e0e4a0d260ca872f770df4983ccea
+head_repository: https://hg.mozilla.org/try
+head_rev: 482ccd66d49e0e4a0d260ca872f770df4983ccea
+hg_branch: default
+level: "1"
+message: "try: -b do -p linux64 -u none"
+moz_build_date: "20171031195649"
+optimize_target_tasks: false
+owner: sfink@mozilla.com
+project: try
+pushdate: 1509479809
+pushlog_id: "232079"
+release_history: {}
+release_eta: ""
+release_enable_partners: false
+release_partners: []
+release_partner_build_number: 1
+release_partner_config: null
+release_enable_emefree: false
+target_tasks_method: try_tasks
+try_mode: try_option_syntax
+try_options:
+ artifact: false
+ build_types: do
+ env: null
+ include_nightly: false
+ interactive: false
+ jobs: null
+ raptor: null
+ raptor_trigger_tests: null
+ no_retry: false
+ notifications: null
+ platforms: linux64
+ profile: false
+ tag: null
+ talos: none
+ talos_trigger_tests: 1
+ taskcluster_worker: false
+ trigger_tests: 1
+ unittests: none
+try_task_config: {}
+release_type: "nightly"
+release_product: null
+required_signoffs: []
+signoff_urls: {}
+phabricator_diff:
+tasks_for: hg-push
diff --git a/taskcluster/test/python.ini b/taskcluster/test/python.ini
new file mode 100644
index 0000000000..637f250af2
--- /dev/null
+++ b/taskcluster/test/python.ini
@@ -0,0 +1,8 @@
+[DEFAULT]
+subsuite = ci
+
+[test_autoland.py]
+[test_autoland_backstop.py]
+[test_generate_params.py]
+[test_mach_try_auto.py]
+[test_mozilla_central.py]
diff --git a/taskcluster/test/test_autoland.py b/taskcluster/test/test_autoland.py
new file mode 100644
index 0000000000..05d181620a
--- /dev/null
+++ b/taskcluster/test/test_autoland.py
@@ -0,0 +1,48 @@
+# Any copyright is dedicated to the public domain.
+# http://creativecommons.org/publicdomain/zero/1.0/
+
+import pytest
+from mozunit import main
+
+pytestmark = pytest.mark.slow
+PARAMS = {
+ "head_repository": "https://hg.mozilla.org/integration/autoland",
+ "project": "autoland",
+ # These ensure this isn't considered a backstop. The pushdate must
+ # be slightly higher than the one in data/pushes.json, and
+ # pushlog_id must not be a multiple of 10.
+ "pushdate": 1593029536,
+ "pushlog_id": "2",
+}
+
+
+def test_generate_graph(optimized_task_graph):
+ """Simply tests that generating the graph does not fail."""
+ assert len(optimized_task_graph.tasks) > 0
+
+
+@pytest.mark.parametrize(
+ "func",
+ (
+ pytest.param(
+ lambda t: t.kind == "build" and "fuzzing" in t.attributes["build_platform"],
+ id="no fuzzing builds",
+ ),
+ pytest.param(
+ lambda t: t.kind == "build" and "ccov" in t.attributes["build_platform"],
+ id="no ccov builds",
+ ),
+ ),
+)
+def test_tasks_are_not_scheduled(
+ optimized_task_graph, filter_tasks, print_dependents, func
+):
+ """Ensure the specified tasks are not scheduled on autoland."""
+ tasks = [t.label for t in filter_tasks(optimized_task_graph, func)]
+ for t in tasks:
+ print_dependents(optimized_task_graph, t)
+ assert tasks == []
+
+
+if __name__ == "__main__":
+ main()
diff --git a/taskcluster/test/test_autoland_backstop.py b/taskcluster/test/test_autoland_backstop.py
new file mode 100644
index 0000000000..55ea11ca4d
--- /dev/null
+++ b/taskcluster/test/test_autoland_backstop.py
@@ -0,0 +1,56 @@
+# Any copyright is dedicated to the public domain.
+# http://creativecommons.org/publicdomain/zero/1.0/
+
+import pytest
+from mozunit import main
+
+pytestmark = pytest.mark.slow
+PARAMS = {
+ "backstop": True,
+ "head_repository": "https://hg.mozilla.org/integration/autoland",
+ "project": "autoland",
+}
+
+
+def test_generate_graph(optimized_task_graph):
+ """Simply tests that generating the graph does not fail."""
+ assert len(optimized_task_graph.tasks) > 0
+
+
+@pytest.mark.parametrize(
+ "func,min_expected",
+ (
+ pytest.param(
+ lambda t: t.kind == "build" and "fuzzing" in t.attributes["build_platform"],
+ 5,
+ id="fuzzing builds",
+ ),
+ ),
+)
+def test_tasks_are_scheduled(optimized_task_graph, filter_tasks, func, min_expected):
+ """Ensure the specified tasks are scheduled on mozilla-central."""
+ tasks = [t.label for t in filter_tasks(optimized_task_graph, func)]
+ assert len(tasks) >= min_expected
+
+
+@pytest.mark.parametrize(
+ "func",
+ (
+ pytest.param(
+ lambda t: t.kind == "build" and "ccov" in t.attributes["build_platform"],
+ id="no ccov builds",
+ ),
+ ),
+)
+def test_tasks_are_not_scheduled(
+ optimized_task_graph, filter_tasks, print_dependents, func
+):
+ """Ensure the specified tasks are not scheduled on autoland."""
+ tasks = [t.label for t in filter_tasks(optimized_task_graph, func)]
+ for t in tasks:
+ print_dependents(optimized_task_graph, t)
+ assert tasks == []
+
+
+if __name__ == "__main__":
+ main()
diff --git a/taskcluster/test/test_generate_params.py b/taskcluster/test/test_generate_params.py
new file mode 100644
index 0000000000..87f1fe341c
--- /dev/null
+++ b/taskcluster/test/test_generate_params.py
@@ -0,0 +1,57 @@
+import json
+import os
+import subprocess
+
+import pytest
+from gecko_taskgraph import GECKO
+from mozunit import main
+from taskgraph.taskgraph import TaskGraph
+
+pytestmark = pytest.mark.slow
+PARAMS_DIR = os.path.join(GECKO, "taskcluster", "test", "params")
+
+
+@pytest.fixture(scope="module")
+def get_graph_from_spec(tmpdir_factory):
+ outdir = tmpdir_factory.mktemp("graphs")
+
+ # Use a mach subprocess to leverage the auto parallelization of
+ # parameters when specifying a directory.
+ cmd = [
+ "./mach",
+ "taskgraph",
+ "morphed",
+ "--json",
+ f"--parameters={PARAMS_DIR}",
+ f"--output-file={outdir}/graph.json",
+ ]
+ subprocess.run(cmd, cwd=GECKO)
+ assert len(outdir.listdir()) > 0
+
+ def inner(param_spec):
+ outfile = f"{outdir}/graph_{param_spec}.json"
+ with open(outfile) as fh:
+ output = fh.read()
+ try:
+ return TaskGraph.from_json(json.loads(output))[1]
+ except ValueError:
+ return output
+
+ return inner
+
+
+@pytest.mark.parametrize(
+ "param_spec", [os.path.splitext(p)[0] for p in os.listdir(PARAMS_DIR)]
+)
+def test_generate_graphs(get_graph_from_spec, param_spec):
+ ret = get_graph_from_spec(param_spec)
+ if isinstance(ret, str):
+ print(ret)
+ pytest.fail("An exception was raised during graph generation!")
+
+ assert isinstance(ret, TaskGraph)
+ assert len(ret.tasks) > 0
+
+
+if __name__ == "__main__":
+ main()
diff --git a/taskcluster/test/test_mach_try_auto.py b/taskcluster/test/test_mach_try_auto.py
new file mode 100644
index 0000000000..f26110b57f
--- /dev/null
+++ b/taskcluster/test/test_mach_try_auto.py
@@ -0,0 +1,113 @@
+# Any copyright is dedicated to the public domain.
+# http://creativecommons.org/publicdomain/zero/1.0/
+
+import pytest
+from gecko_taskgraph.util.bugbug import push_schedules
+from gecko_taskgraph.util.chunking import BugbugLoader
+from mozunit import main
+from tryselect.selectors.auto import TRY_AUTO_PARAMETERS
+
+pytestmark = pytest.mark.slow
+PARAMS = TRY_AUTO_PARAMETERS.copy()
+PARAMS.update(
+ {
+ "head_repository": "https://hg.mozilla.org/try",
+ "project": "try",
+ "target_kind": "test",
+ # These ensure this isn't considered a backstop. The pushdate must
+ # be slightly higher than the one in data/pushes.json, and
+ # pushlog_id must not be a multiple of 10.
+ "pushdate": 1593029536,
+ "pushlog_id": "2",
+ }
+)
+
+
+def test_generate_graph(optimized_task_graph):
+ """Simply tests that generating the graph does not fail."""
+ assert len(optimized_task_graph.tasks) > 0
+
+
+def test_only_important_manifests(params, full_task_graph, filter_tasks):
+ data = push_schedules(params["project"], params["head_rev"])
+ important_manifests = {
+ m
+ for m, c in data.get("groups", {}).items()
+ if c >= BugbugLoader.CONFIDENCE_THRESHOLD
+ }
+
+ # Ensure we don't schedule unimportant manifests.
+ for task in filter_tasks(full_task_graph, lambda t: t.kind == "test"):
+ attr = task.attributes.get
+
+ if "test_manifests" in task.attributes:
+ unimportant = [
+ t for t in attr("test_manifests") if t not in important_manifests
+ ]
+
+ # Manifest scheduling is disabled for mochitest-ally.
+ if attr("unittest_suite") == "mochitest-a11y":
+ assert len(unimportant) > 0
+ else:
+ assert unimportant == []
+
+
+@pytest.mark.parametrize(
+ "func,min_expected",
+ (
+ pytest.param(
+ lambda t: (
+ t.kind == "test"
+ and t.attributes["unittest_suite"] == "mochitest-browser-chrome"
+ ),
+ 5,
+ id="mochitest-browser-chrome",
+ ),
+ ),
+)
+def test_tasks_are_scheduled(optimized_task_graph, filter_tasks, func, min_expected):
+ """Ensure the specified tasks are scheduled on mozilla-central."""
+ tasks = [t.label for t in filter_tasks(optimized_task_graph, func)]
+ assert len(tasks) >= min_expected
+
+
+@pytest.mark.parametrize(
+ "func",
+ (
+ pytest.param(
+ lambda t: t.kind == "build"
+ and "shippable" in t.attributes["build_platform"],
+ id="no shippable builds",
+ ),
+ pytest.param(
+ lambda t: t.kind == "build" and "fuzzing" in t.attributes["build_platform"],
+ id="no fuzzing builds",
+ ),
+ pytest.param(
+ lambda t: t.kind == "build" and "ccov" in t.attributes["build_platform"],
+ id="no ccov builds",
+ ),
+ # We should only assert that we have no signed builds on platforms that don't run
+ # xpcshell tests.
+ pytest.param(
+ lambda t: t.kind == "build-signing",
+ id="no build-signing",
+ marks=pytest.mark.xfail(reason="some xpcshell tests require signed builds"),
+ ),
+ pytest.param(
+ lambda t: t.kind == "upload-symbols",
+ id="no upload-symbols",
+ ),
+ ),
+)
+def test_tasks_are_not_scheduled(
+ optimized_task_graph, filter_tasks, print_dependents, func
+):
+ tasks = [t.label for t in filter_tasks(optimized_task_graph, func)]
+ for t in tasks:
+ print_dependents(optimized_task_graph, t)
+ assert tasks == []
+
+
+if __name__ == "__main__":
+ main()
diff --git a/taskcluster/test/test_mozilla_central.py b/taskcluster/test/test_mozilla_central.py
new file mode 100644
index 0000000000..696a108db6
--- /dev/null
+++ b/taskcluster/test/test_mozilla_central.py
@@ -0,0 +1,69 @@
+# Any copyright is dedicated to the public domain.
+# http://creativecommons.org/publicdomain/zero/1.0/
+
+import pytest
+from mozunit import main
+
+pytestmark = pytest.mark.slow
+PARAMS = {
+ "head_repository": "https://hg.mozilla.org/mozilla-central",
+ "project": "central",
+}
+
+
+def test_generate_graph(optimized_task_graph):
+ """Simply tests that generating the graph does not fail."""
+ assert len(optimized_task_graph.tasks) > 0
+
+
+@pytest.mark.parametrize(
+ "func,min_expected",
+ (
+ pytest.param(
+ lambda t: t.kind == "build" and "fuzzing" in t.attributes["build_platform"],
+ 5,
+ id="fuzzing builds",
+ ),
+ ),
+)
+def test_tasks_are_scheduled(optimized_task_graph, filter_tasks, func, min_expected):
+ """Ensure the specified tasks are scheduled on mozilla-central."""
+ tasks = [t.label for t in filter_tasks(optimized_task_graph, func)]
+ print(tasks)
+ assert len(tasks) >= min_expected
+
+
+def test_test_setting(full_task_graph, filter_tasks):
+ """Verify that all test tasks' ``test-setting`` object conforms to the schema."""
+ from gecko_taskgraph.transforms.test.other import test_setting_description_schema
+ from taskgraph.util.schema import validate_schema
+
+ tasks = filter_tasks(full_task_graph, lambda t: t.kind == "test")
+
+ failures = []
+ for task in tasks:
+ try:
+ validate_schema(
+ test_setting_description_schema,
+ dict(task.task["extra"]["test-setting"]),
+ task.label,
+ )
+ except Exception as e:
+ failures.append(e)
+
+ if failures:
+ more = None
+ # Only display a few failures at once.
+ if len(failures) > 10:
+ more = len(failures) - 10
+ failures = failures[:10]
+
+ failstr = "\n\n" + "\n\n".join(str(e) for e in failures)
+ if more:
+ failstr += "\n\n" + f"... and {more} more"
+
+ pytest.fail(f"Task validation errors:{failstr}")
+
+
+if __name__ == "__main__":
+ main()